My friend and coworker Justin turned me on to this interesting article about why Agile might be failing and how in many cases it has become a “cargo cult“. I wasn’t familiar with cargo cults; they are a fascinating artifact of what comes from insufficient situational awareness and understanding.
It’s interesting to me that before agile; many people believed that if they just followed the Rational Unified Process and did use cases, UML static state diagrams and activity diagrams for the whole system, the result would be that magically, high quality scalable and maintainable software would descend from the heavens, and it would meet all the requirements they hadn’t thought of yet.
Unfortunately it’s not quite that easy.
My friend Joe Russack has started a really nice blog dealing with architecture, building design and implementation and furniture types of things: it’s at http://www.nothingugly.com. LOL – When was the last time you “implemented” a building :). Joe is working on a building put together with shipping containers.
It didn’t take very long at all to develop an initial version of my rails app – in fact – I’ve found rails to be immensely productive. Using yum and gem to install components also seems to be a big win. The whole development process was so ludicrously fast, in fact, that it caused me to be suspicious of what exactly I was giving up. It took me quite a while to figure it out; and in the end it came in the deployment stage.
It turns out that Rails is not thread safe. I was quite surprised to learn this, especially since ruby does in fact support threading; it’s just that Rails … doesn’t. This is a bit of a scalability issue, but it turns out that it’s not really a huge problem: I save SO much time in development, and what I was really trying to do was to throw an idea out and see if it sticks, which I am able to do. If it does stick and I need to scale it, I will gladly either hire some engineers to re-implement in Java, or buy some more servers, or probably both.
As for deployment, that isn’t fully sorted out in the same kind of way that it looks like it might be. My original thought was to go to FastCGI and plug it into Apache. Way back when (1997-1998 vintage) I worked with some large perl applications that used FastCGI, and it was always a nightmare with a bunch of processes spun up and some of them dying, turning into zombies and consuming large amounts of CPU. This experience still seems to be the state of the art, and the main reason why FastCGI is a bad idea. James Duncan Davidson has an excellent discussion on this topic on his blog. Further trips through the blog-o-sphere reveal yet more information, including the “pack-of-mongrels” approach which is detailed on Coda Hale’s blog. Thanks to both of these guys for very succinctly laying out solutions and issues on rails deployment.
The summary of this is that I have a cluster of mongrel servers running on my box, and I can deploy the application in an automated way (“cap deploy”) from my user account and have my latest code rolled out from development to production. The front-end server is apache, which seems to have grown load-balancing abilities in the form of mod_proxy_balancer. This is reasonably slick, and better than I would have had setup for a java app. Having said that – I would have been able to deploy my java app in tomcat, which is capable of handling a lot more traffic than my pair of mongrels. Of course, I don’t actually have any traffic, so much of this is mute anyway. All of this probably took about 4 hours of work or so (including some other minor deployment issues I ran into). Not bad at all.
I’ve struggled for a while on the topic of what to do with my website. Some time ago I switched the site over to the WordPress blog software and made a half-hearted attempt to blog mixed thoughts and opinions on a semi regular basis. I don’t believe this has been particularly successful since I haven’t actually started writing more content, and I don’t think the site is any more interesting to people.
It’s become obvious that since I’m not writing on a regular basis, and the site is a confused mix of various things I should move the goalposts a little bit. I decided to split my interests up into different blogs so that they can be more freestanding.
- I am a software developer, and I’m working on software related innovations all the time. I think it’s useful to focus the main website on that, and work on being more diligent about documenting my discoveries and innovations for others to share. I think the increased purpose and usefulness of the content will hopefully drive the site to being more useful for more people, which may lead to a revenue stream.
- Since not many people are reading the site, and most of those people are probably family and friends, it’s probably not much use me having so much political whining on there, so I should focus the personal section of the site on more personal news that friends and family may be more interested in reading.
The drive for a more businesslike section of the website is somewhat driven by some posts I’ve been reading on Steve Pavlina on his personal development blog. He has talked a great deal about the value of passive income streams, and has been so successful with his own blog that it is his primary revenue stream. Personally, I’m mostly interested in being more effective at sharing information and knowledge, and that is the main driver for this change.
I had until recently thought that all this hoopla about blogging, pod-casting, RSS, news aggregators et al was all hype and not particularly useful. Having spent a little more time looking at the kinds of tools that are available, I have to say I am pretty impressed.
I have been using PHP-nuke to manage my website. It’s becoming obvious that it’s not working particularly well since the comments section get spammed. I find this really annoying. Also – nuke has a lot of features that I just wasn’t using, and the complexity of it kept me from addition additional content.
I started messing around with NewsFire a little while ago, and found that aggregating news together in one place is really useful… now I am able to get some of my friend’s blogs, and slashdot and some other news in one places, and I get notified when it updates. Very civilized. I have since switched to NetNewsWire, which is better still IMHO since it has a built-in minibrowser with a tab interface, and it is friends with MarsEdit (you can register them together for reduced $$$).
MarsEdit is nice because it’s a desktop app – which makes it easier to put a larger posting together and post it up on the site. So now I have a better and easier workflow, and I think the site looks better. So that would be good. Hopefully this will enable me to post more as well :).