This post originated from an RSS feed registered with Agile Buzz
by James Robertson.
Original Post: The most complex thing that could possibly work...
Feed Title: Cincom Smalltalk Blog - Smalltalk with Rants
Feed URL: http://www.cincomsmalltalk.com/rssBlog/rssBlogView.xml
Feed Description: James Robertson comments on Cincom Smalltalk, the Smalltalk development community, and IT trends and issues in general.
Reading this post made me think of complexity and development. Based on the direction taken by the Roller author, it looks to me like he started out complex and simplified over time - I'm familiar with that pattern - developers often over-engineer solutions at first:
In the beginning, I implemented Roller using EJB. Every Roller business object was an Entity Bean and every Roller business tier interface was a Session Bean. I learned a lot about EJBs and XDoclet and everything was just fine, but Roller, or Homeport as I used to call it, took 20 seconds to render a weblog page. I studied the various EJB patterns and realized that returning a collection of Entity Beans from the business tier was not a good idea. I learned about the Data Access Object and Value Object patterns. I discovered that XDoclet could generate Value Objects (which Sun now calls Data Transfer Objects) for me, and I changed the business tier interfaces to return the light-weight data objects rather than Entity Beans. Much better!
That's pretty much the opposite of what I did with this blog. I started out dead simple - no database, blog entries stored on disk as serialized objects, and rendered into html on demand when the page is requested. The whole site is dynamic. I had some concerns over whether it would scale, but I figured I'd find out as I went. So far, it's been fine - I have yet to move to a database.
Now admittedly, I'm the only one using this code on this server, and it's not a multi-user server. Still, if I had to add multi-blog capability to the server it wouldn't be that hard. The whole experience of building this sitte and BottomFeeder have taught me to implement simple solutions first, and see how they work.