#Dev

  • Pushing Kobayashi

    Some quiet holiday time has finally given me the chance to polish up the code I wrote earlier this year and finally release my blog engine.

    Kobayashi is finally out in the world in at least a first release form with a few tests, a basic theme and working code.

    I wrote more extensively about why I’d write a blog engine here .

    Kobayashi’s built to handle large blogs and still be damn fast and cache and act as if the entire site was static so (hopefully) hold up under high loads with highly optimized caching using memcache and etag http caching. The whole thing runs on heroku with a simple push.

  • The Tundramonkey Cometh

    One of my goals this year was to up my foundation dev skills and a (sort of) semi-SMART goal of getting up four progressively more difficult apps I’d be scheming about releasing over the course of the year.

    Kobayashi, which powers my re-christened blog Tundramonkey, was one of those apps. Yeah, I know… blog software? Can’t you do that in, like… 15 minutes? I mean, there’s a Rails screencast and everything… Well, actually… no. What I found once I got going was that it ended up being quite the little project and while the basic coding behind getting core functionality up was quite easy, the vast collection of details that goes into migrating over eight years of posts and the functionality you’ve actually used means quite a bit of detail sweating.

  • Why You Need to Check Backups

    Sure, they make it cutesy, but you have no idea how often this actually happens. Disaster recovery in most orgs is not given anywhere near the attention it deserves. If it can happen to Pixar, it can happen to you.

    So, um… do your backups kids. And make sure you have offsite backups as well! I use Crashplan myself (which works on Win, Mac and Linux) though was using Haystack’s Arq on my Mac until very recently as well. Seriously, the minimal cost is nothing compared to losing photos or critical docs. Believe me.

  • Sinatra, SimpleNavigation and Bootstrap

    After getting a handle on it, I was really surprised that Twitter’s excellent Bootstrap UI framework didn’t have functionality to cover tabs on other pages of the site. Much like the slick ScrollSpy, where various menu items are highlighted when you scroll to their div id on the page, I was expecting a “PageSpy” type functionality to do the same with navigation tabs, and set a tab to active if the target url matched the URL the browser was on (especially since bootstrap does the more difficult in-page tab functionality. In fact, I was so surprised, I actually asked around and took a look at the js source code as I thought I was missing something obvious.

  • Anatomy of a Virus

    Besides the fact this is an utterly fantastic animation, you should be scared of the first code weapon that’s successfully struck a blow, destroying centrifuges at Iran’s nuclear facilities. Who’s responsible? Who knows?… but the fact it’s now available for just about anyone to dissect and redesign is something that should be of concern to everyone. Check out the video.

    via Flowing Data

  • Surviving the Amazocalypse

    So, I got the call every techie dreads: 4.30am “OMG, we’re down!”

    It was from Canada and I’m in Oz, so you know it was bad. As most people know now, Amazon’s US East Region was out and had taken down heroku where we host the main LeadNow site . We’re in the middle of spruiking democracy for the Canadian federal election and have been a central pivot for vote mobs and voter socials, so getting back up was really important ahead of the weekend.

  • The switch (back) to vim

    While I have to thank TextMate for being the editor that was my gateway drug into Rails (and back into programming), I kept having loads of issues with it (while I still think it’s hands down better than any of the new editors I’ve seen and much prefer it to a host of IDEs): It crashed pretty regularly, I found it slow and had to wait for it quite often, I was constantly switching between it and the command line and project searches beachballed all. the. time. I also have to admit to having had more than a little bit of guilt that I’d added yet another Mac-only title to my list of software. Somewhere in the back of my head I still keep trying to convince myself I’ll move back to Linux… someday cough. (Note that my purpose here isn’t to wail on Textmate. It is a great piece of software and I do owe it a debt. I just decided I needed to move past some of the limitations I’d been experiencing.).

  • Installing a Hudson CI Server on Amazon EC2 with Cucumber and Capybara and Github integration

    Continuous integration is key to good development practices if you’re a team any larger than, well… one. But spinning up a CI server is still an exercise fraught with peril.

    Add in getting one up for Rails that can deal with Cucumber and capybara testing (needing a browser for js testing) and rspec and if you don’t have someone with solid sysadmin skills, most teams throw up their hands. Also, if you’re doing this for short duration projects (yeah, I’m looking at you RailsRumble and Hack weekends), you really want something that you can spin up or down at will and not have serious iron dedicated to doing this. We chose to put ours on Amazon’s EC2. We chose Hudson, a rather excellent java CI server despite my personal feelings about java (and also the excellent hudson ruby gem that makes running it locally no effort at all).

  • Rails for Zombies

    You know, one of the things I love best about the Rails community is its sense of fun and how damn helpful everyone is in helping you learn in novel (and yet, really useful) ways. Cause, seriously? Programming shouldn’t be as hard as your first year comp sci class made it out to be.

    Enter Rails for Zombies . Check it out, sign up and get learnin'.

    Brrraaaaiiinnnnnzzzz…

  • No, really... Why aren't you using git flow?

    Fact is, managing code is difficult, even with git and github .

    The fact git makes branching and merging so cheap and easy creates a new problem. Go away and work on something else for a while, leave a project and come back or even get distracted with prioritizing another feature or an urgent production hotfix and suddenly, you’ve got a problem. Add in a team environment and you’d better have something agreed.