After lunch - Boris Popov is giving a Seaside Experience Report. Boris is using Seaside on VW, and is giving a shout out to Michel Bany, who maintains the Seaside port for VisualWorks. Boris works for DeepCove Labs - 4 Smalltalk developers (they are a part of a much larger company). I did a podcast on their applications with Joerg Beekman recently.
They build a payment processing platform (Raven) - multiple currencies/countries, multiple types of transactions. They do nearly everything in Smalltalk, they do use C libraries where they need to (external device connectivity, databases, etc). They are on VW 7.4.1, and are getting ready to move to VW 7.5. They have their own homebrew (simple) O/R mapping to their SQL Server database.
The Seaside app is a portion of their web portal - payment initiation and reporting. The project started a year ago, after the StS 2006 Seaside/Ajax presentation given by Avi Bryant. This was Boris' first real exposure to Seaside, and he built a simple prototype while he was flying back home - three hours of work.
Why did he care? They were using WebDAV before this, and it was kind of awkward. They wanted a web front end sooner rather than later. They wanted to avoid Servlets and SSP - looked harder than necessary, and they only had a few in-house resources. Boris showed his prototype off when he got back to the office - it was "cheesy" (his description :) ), but he got management buy-in to go forward. They had an actual mockup done in eight days.
Visual Design Matters: make it look slick as early as possible. A professional appearance helps out a lot. The layout affects functionality in that way. Key take away: don't let the developers do the designer's job. Find the right person and let them help you. When working with the designer, express what you want, not how it should be done. If you can agree on a working model, future updates are mostly a matter of CSS file updates.
They really wanted two factor authentication - they went with RSA. RSA has a strong presence in the financial sector. Verisign wouldn't even return their calls ("too small").
HTML Generation: It's not magic - you have to get down and do it. It's not templated - you send messages to objects - which is what makes it more like standard UI creation. You end up reusing and refactoring, not copy/pasting. Callbacks (blocks) make actions work a lot like they do in a UI framework.
They use some Ajax, but take a "don't use it unless you need it" approach". Using Seaside, you can go a long way in Smalltalk, as Lukas Renggli has wrapped the scrit.aculo.us library quite heavily. You can jump in and add custom Seaside if you care.
Boris' message: Don't worry, you won't get it right the first time - but you can iterate to the right answer quickly. What about Deployment? They started with Apache+SSL and a headful Seaside image. They allowed all static resources served from Seaside initially. They ended up shifting all static resources over to Apache. They then added load balancing across multiple images (session affinity).
They finally shifted the static resources out to S3 (Amazon), which lightened their load quite a bit. They pay Amazon about 24 cents a month right now.
Builds: They have an automated build process once all the tests pass.
- Upload all resources to S3
- Trim all sample/config apps
- Configure the app for deployment (set various Seaside/HTTP parameters)
- Save a headless image
The rest of the time was a short demo.