Tonight at NCLUG, we had several “Lightning Talks”. These are short presentations about things that interest the speaker. The theory being that it's easier to find 4 speakers to talk for 15 minutes each, than one speaker who will talk for 1 hour. I spoke about JOTWeb2 and how I leveraged Open Source Software to create a dynamic web publishing system fast.
The background is that I'm not a web developer, but I frequently run into tools where I need a web interface. Often, it needs to be dynamic at some level, and sometimes it's got to be very dynamic. Like this journal you're reading, my personal journal site, or the recent tool I created to remind us to follow up on certain tasks.
I spent a shocking amount of time over 2 years (or longer, it's fair to say) trying to find a tool that would work for me. I wanted it to be Zope, but Zope just didn't work for me. I finally, after another failed attempt to get a web publishing system I was comfortable with, spent some time thinking about what the perfect system would look like to me. I came up with a simple design that I realized I could implement quickly if I leveraged existing tools.
That is what JOTWeb is. It's now over a year old, stable, in it's second major release, and I'm totally happy with it.
My talk tonight was a quick introduction to it, and a lot about how I used other Open Source tools to allow me to gain traction fast on my own system.
For comparison… Zope developed it's own web server, it's own template languages and implementations, it's own database, it's own caching, revision control, and the list goes on. It's almost surprising that they didn't invent their own programming language to write it in. ;-)
By contrast, for JOTWeb2 I used the templating language from Zope (which I liked), PostgreSQL for the database (though that's not coupled to JOTWeb at all), Apache and mod_python for the web server, CVS or similar for revision control of the website content, and (most recently) memcached for caching of rendered pages.
I actually implemented the memcached portion of it today, in about 45 minutes before the NCLUG meeting. memcached is a great memory-based, distributed cache system with a client API for Python. It involved about 20 lines of code, and along the way I got the ability to have per-server persistent data across requests. That'll be important if I implement database pooling, but I think the memcached will eliminate the benefits of database pooling.
That this required less than 45 minutes add to JOTWeb2 is because I was leveraging another tool designed to do this. In fact, the base JOTWeb2 code, not counting the form processing library, is only around 400 lines (including comments and white space) of Python.
Being able to make use of all these other great tools is what allows me to build a stable tool so quickly. In fact, I was able to build my first web application in JOTWeb after only 4 hours of development. That's powerful.comments powered by Disqus