Archive

Archive for the ‘VisualWorks’ Category

A-Teams = 12 people

September 4, 2009 Leave a comment

Via 37 Signals,

The small team size comes with a bunch of advantages: They’re self-contained, can work swiftly and quietly, don’t have the presence of conventional military troops, and are able to operate without a big infrastructure.

Big can be powerful. But even the Army realizes small can be a great way to get things done too.

Yup, sounds about right.

Categories: Smalltalk, VisualWorks

Job Opportunity (Smalltalk and Seaside)

November 23, 2007 5 comments

DeepCove

I’m pleased to announce that we are looking for another full-time developer to join our agile team of long time Smalltalk fans. Here at DeepCove Labs our primary focus is evolving and maintaining a mature industry leading international payment processing platform that we have built from the ground up over the past 6 years.

Ideal candidate is someone who has experience with Smalltalk, SQL and last, but definitely not least, Seaside. They must be enthusiastic, motivated and as excited about using cutting edge technology to solve business problems as we are. I should point out that good self task management and time management skills are a big plus as we work as equal peers and share roles every day of the week. We are not XP fanatics, but some things are second nature to us,

  • keeping things simple
  • plenty of unit tests
  • no code ownership
  • frequent integration
  • lots of refactoring
  • frequent releases
  • no overtime
  • our customer shares the same address

Our primary requirements are as follows:

  • at least five years general software development experience
  • several years experience developing with dynamic languages (Smalltalk, Ruby, Python, Lisp)
  • one year recent Smalltalk experience
  • experience developing applications of at least moderate complexity
  • demonstrated experience working directly with users

Experience with any of the following would be a major plus:

  • agile test driven development
  • financial services
  • SQL, specifically Microsoft SQL Server
  • web application development, specifically with Seaside and moderate amounts of JavaScript
  • deployment of large scale applications in managed services environment

Our office is located in the heart of Downtown Vancouver, steps away from Pacific ocean, beautiful parks, shopping and entertainment district and all major transit connections. All employees receive excellent health/dental benefits package and few other perks. We like to think we are an open, flexible and friendly place to work, so please drop me an email with your resume if you are interested.

Update (Nov 26): Few folks had pinged me to ask if telecommuting is an option and the simple answer is that for this particular position we would like someone who would be willing to relocate to Vancouver and work from our office together with the rest of the team.

Word of caution when enabling Unicode ODBC

November 8, 2007 Leave a comment

One feature we’ve been anxiously awaiting when VisualWorks 7.5 was in development is support for Unicode ODBC.

(self connection getSession)
unicodeEncoding: #’UCS-2′;
unicode: true;
yourself.

Naturally as soon as it became available my inclination was to turn it on and over time migrate our database schema from varchar() to nvarchar() and from char() to nchar() etcetera. Sounds reasonable? I thought so myself, but it took about a month of running this small change in production to prove me wrong. Take a look at the server CPU graph below (Hint: Unicode was enabled late August and disabled late October),

Database

Looking back, it all kind of makes sense. I suspect ODBC layer is encoding everything on the way out, so running a query against a plain old varchar() column with a Unicode parameter SQL ended up having to encode all row values on the fly, essentially resulting in endless table scans and lots of CPU wastage for most basic scenarios. Turning off Unicode or changing the offending column to n*char() fixes the problem.

What this means, however, is that you can’t conceivably go the Unicode route without converting all *char() columns to n*char() columns at the same time. You can certainly afford to have a small performance impacting window to ensure availability, but it would most certainly be unreasonable to stretch this transition period. So much for piecemeal approach, sigh.

Categories: ODBC, SQL, VisualWorks

Moving from 2.7 to 2.8

July 6, 2007 5 comments

I did a quick run-through today to see what it would take to move our application from the most recent version of Seaside 2.7 to the brand-spanking-new 2.8 snapshot Michel published this morning. Here are some notes about the changes I had to make and a few rewrite snippets to give you a starting point if you run into the same issues (you may not though).

1. WACanvasTableReport has been renamed to WATableReport, you will need to fix any subclasses you may have added

2. There’s currently no way to subclass WAApplication in 2.8 in a configurable way, it was previously possible via #applicationClass and was used to implement custom #expiryPathFor: behavior; I’ll see about integrating my changes with the main branch for good as I think generalized behavior in that area would benefit many

3. Preference called #useSessionCookie is no longer there, so the following will fail miserably,

(self registerAsApplication: ‘cooler’)
preferenceAt: #useSessionCookie put: false;
yourself

instead, WACookieSession has been added as a subclass of WASession, so you’ll need to do,

(self registerAsApplication: ‘cooler’)
preferenceAt: #sessionClass put: WACookieSession;
yourself

or, if you already have your custom subclass of WASession and would like to have it use cookies for tracking, just move it and subclass off of WACookieSession instead.

4. #linkToScript: has been replaced with a much cleaner canvas-like API, previously it was used inside #updateRoot: to link to external JavaScript files (please note my use of #resourceUrl: instead of standard #url:, that is because I have a custom resource URL installed in #resourceBaseUrl preference and would like attached scripts to respect the prefix),

updateRoot: root
super updateRoot: root.
root linkToScript: ‘/other/charts/charts.js’.

instead you will need to use,

updateRoot: root
super updateRoot: root.
root javascript resourceUrl: ‘/other/charts/charts.js’.

and here’s a rewrite pattern to help you change your code in one go,

Search for:

“@root linkToScript: “@url

Replace with:

“@root javascript resourceUrl: “@url

5. Same goes for #linkToStyle: although I’ve been using a more complicated variant #linkToStyle:titled:media:, but rewrites come to the rescue once again,

Search for:

“@root linkToStyle: “@url titled: “@title media: ’screen’.

Replace with:

“@root stylesheet url: “@url; addScreen

Search for:

“@root linkToStyle: “@url titled: “@title media: ‘print’.

Replace with:

“@root stylesheet url: “@url; addPrint

6. You can’t use awkward #heading:level: utility method to do,

html heading: ‘Need some help?’ level: 2.

instead use the full expanded API,

(html heading)
level: 2;
with: ‘Need some help?’.

or this simple rewrite (you can tell I’m fan, eh?),

Search for:

“@html heading: “@text level: “@level

Replace with:

“@html heading level: “@level; with: “@text

That’s about it for now, but I’m not all the way there yet as I now need to track down a nasty memory emergency that comes up when I try to submit a form, but I suspect it may be partly something in my code since I can’t reproduce it in the stock image, although it worked just fine for the longest time in 2.6 and 2.7, so I’m not fully convinced its my fault yet… More to follow.

Update 1: Okay, I found infinite recursion in Seaside’s codebase, seems to be the difference between Squeak and VisualWorks, but pretty easy to fix

Update 2: With a couple more fixes in place, we have liftoff. Exciting times and less painful than I was preparing for.

Running on 2.8  Running on 2.8b

Seaside 2.8 on VisualWorks

July 6, 2007 2 comments

Michel Bany has just published another port of Seaside for VisualWorks in the Public Repository, go check it out, but read his disclaimer first.

As requested on this list I published Seaside 2.8 on the public Store repository.

SeasideForWebToolkit(2.8a1.390.0,mbany)
SeasideForSwazoo(2.8a1.390.0,mbany)

both are based on Squeak version Seaside2.8a1-lr.390, July 4, 2007.

I also published Scriptaculous based on its most current Squeak version.

SeasideScriptaculous(2.8a1.205.0,mbany)

based on Squeak version Scriptaculous-mb.205, July 6, 2007.

The version number for Scriptaculous in the public Store repository (2.8a1.xxx) is meant to indicate that it will not work with Seaside 2.6 and Seaside 2.7.

Although I did not check, I expect most of the Seaside add-ons to fail with Seaside 2.8 (SeasideAsync, SeasideTesting, WebDesignerTool, SeaChart, ShoreComponents,etc.).

I’ll be trying it out first thing (once all the important work stuff is done, of course, wink).

Slides from STS 2007

May 4, 2007 2 comments

Unfortunately, I don’t have much time to get into my own take on Smalltalk Solutions 2007 right now, other than to say I’m very impressed with the turnout and appreciate everyone’s feedback, hopefully this will do some good for someone out there.

As promised, here are the slides from the presentation in a variety of formats for you (incidentally hosted on S3, which is something I’d talked about briefly as well),

Enjoy, and comment if you have any questions!

Cairo + VisualWorks = ?

March 13, 2007 Leave a comment

Looks like the answer may very well be “<3″ as Travis is still hard at work getting Cairo/VisualWorks integration up to speed. Let’s just say I’m glad my Smalltalk Solutions session does not conflict with his, cause I’m afraid I’d have to cancel mine if it did. Here’s a preliminary schedule if anyone’s interested (and you should be!).

Seaside/VisualWorks updated

October 4, 2006 2 comments

Michel Bany has been busy as always even without my constant asking him for updated ports. Here’s a list of changes for latest published versions of Seaside and SeasideScriptaculous in the Cincom Public Repository.

Seaside 2.6b1.84.0

  • Made WABatchedList use it’s own accessors rather than direct instance var references so subclassing and overriding things works properly
  • For better XHTML compliance
    • Canvas api to always supply alt= on img elements
    • In WAToolFrame replace the break with a space in a div
  • HTML supplies 6 possible heading levels. Seaside should too
  • Categorize WASelection
  • Bugfix: exagerated values for process time in the tool bar
  • Added fragment to WAUrl, allow to scroll to a named anchor
  • Limited minute in timeinput to 59, changed the assignment operator
  • Added #document:mimeType:fileName: to WAAnchorTag to provide equivalent functionality as in the classic API
  • Added a Canvas upload test
  • Refactoring allowing easier subclassing of WAHtmlDocument
  • Image map support added to the canvas api
  • More XHTML compliance
  • CSS support for image map
  • Categorized methods of WAInspector
  • Added WATableTag >> #border
  • Changed WATableTag >> #layout to use self sends
  • Fixed WAMiniCalendar to use #datesDo:
  • Opera fixes
  • Cean up and reformatting
  • Full ruby support (with tests)
  • Categorized some methods
  • Push up #title: to WATagBrush (it’s a core attribute anyway)
  • Refactored sceenshot, no longer so ugly
  • Added some more options for links to style sheets to WAHtmlRoot
  • Added some more options for links to style sheets to WARenderedHtmlRoot
  • WAHtmlRoot categorization and clean-up
  • Fixed a regression in ByteArray rendering (shows up in VW only)
  • More categorization (WACookie, WAFile, WAStreamResponse)
  • Clean-up WAFile>>contents and corresponding tests

SeasideScriptaculous 2.6b1.137.0

  • script.aculo.us 1.6.4, which marks the inclusion of the new release candidate of Prototype 1.5, is out now.
  • Added PeriodicalExecuter decorator
  • Added #activate, #enable, #disable, and #clear to SUFormElement
  • Added #autoSelect: to auto-completer
  • Added #delay: to Draggables and Sortables
  • Fixed events/effects for Draggables

Seaside Meeting Reminder

August 14, 2006 2 comments

Just a reminder that we’re getting a bunch of Smalltalkers together this Friday in Vancouver, here’s the reminder along with the info for ya:

What: Informal Seaside/Squeak/VisualWorks/Smalltalk Meet Up

When: This Friday, August 18, 2006 @ 6:00PM PST

Where: Stamp’s Landing Neighborhood Pub – 610 Stamps Landing, Vancouver, BC – Google Map

Who: Everyone with interests in Seaside, Squeak, VisualWorks and anything else to do with Smalltalk is welcomed to join us for a beer (coffee, milk, coke, juice, water) or two and informal chat about state of things in the Seaside world and whatever else people choose to catch up on. There is no agenda, simply because putting a bunch of passionate Smalltalkers in the same room seems to turn into a good thing on its own, so why ruin it? ;)

So far we have: myself, Joerg and Gordon from DeepCove, folks from Smallthought, Steve Messamore, John Maxwell, Chad Nantais, Glenn and Shiro confirmed in attendance, please comment or email if you are planning on coming, or simply drop by the pub if you wish to stay anonymous. More people, the merrier, so pass this message on please.

Update: By the way, its perfectly fine if you wish to bring somebody along who is not a Smalltalker per se. Please let your better half, colleague, friend know that they’re more than welcome to join us at the pub if they wish to come as well.

Seaside/VisualWorks updated

August 9, 2006 2 comments

Michel Bany has just published updated versions of Seaside and SeasideScriptaculous to the Cincom Public Repository.

Seaside 2.6b1.70.0

  • Added the possibility to link documents from an iframe
  • Improved the iframe tests
  • Categorized a few methods
  • Added a few accessors
  • Modified linkToScript: to prevent duplicates when child controls add references to dependent scripts
  • Added #renderOn: to MessageSend to be able to use them polymorphic to blocks in rendering code
  • Categorized some methods in WAComponent
  • Removed obsolete instvar
  • Categorized 2 methods
  • Call super in release
  • Categorized a lot of methods
  • Use Canvas API for WABatchTest and WADateSelectorTest
  • Categorize a lot of methods
  • Convert to new Canvas API: WAPath, WAToolFrame, WAVersionUploader
  • Cleaned up WACanvasTableReport a bit
  • Removed unneeded #with:
  • Removed direct access to attributes
  • Lots of method categorization
  • WA(Simple)Navigator use new Canvas API
  • Experimental WAKomEncoded for 3.9. Should not break existing, working code in any Squeak.
  • Categorize VNCController methods
  • Fixed various senders of dnu-messages to attributes causing unnecessary slowdown of rendering tough the DNU handler
  • Fixed some occurences of the depricated squeak-arrow assignement

SeasideScriptaculous 2.6b1.127.0

  • Added SUElement>>#render: to simplify rendering the contents of an element within a script
  • Made use of the new function #render: in SUAccordion and SUTabPanel
  • Improved SUInPlaceEditor to latest version of script.aculo.us (more options)
  • Changed the slider (not sure if this fixes the reported bug)
  • Reorganized categories
  • Fixed bugs in the component collection
  • The in place editor is back with a test (sorry, it got somehow lost in the process)
  • A couple of obvious bug fixes
  • Properly convert instances of Character to Javascript