Grig Gheorghiu's blog on Python, testing, and deploying infrastructure, including Amazon EC2, load balancing, and running databases.
HN links it for practical deployment write-ups, including EC2 experiences and push versus pull deployment systems.
> I never understood why some people are scared of branching.
Well this is branching (in the same way that if..else is branching), just not in the VCS. What's the advantage? This methodology can allow code to go to production for some or all users, either as dark launches ( http://agiletesting.blogspot.com/2009/07/dark-launching-and-other-lessons-from.html ) or as production code. VCS branching gives you none of that, and sometimes you need to roll things out sloooowly, either for quality control or for capacity monitoring.
> It seems to work pretty well for Linux development.
Well for example, if you're following the linux development model for webops, you're almost certainly doing it wrong. I'm sure your website doesn't have release candidates and LTS versions all at different URLs.
> As long as you merge continuously from upstream, you're golden.
This is not really true either. It's fine if you're the only one on a team following that model, but if everyone on your team follows that model, you're delaying collaboration and causing merge debt. Upstream ends up like a ghost town until someone like you dumps a week worth of work on it just before you're about to dump your week's worth too.
> I _do_ have some reservations against #ifdef-sprinkled code.
This is definitely a downside! You have to use a lot of discipline to keep this minimal and well-organized.
"This address is restricted
This address uses a network port which is normally used for purposes other than Web browsing. Firefox has canceled the request for your protection.
"
This 'port banning' is described in http://www-archive.mozilla.org/projects/netlib/PortBanning.html, and the page at http://agiletesting.blogspot.com/2008/09/getting-around-firefox-port-blocking.html describes how you can use about:config to disable the blocking:
"1) go to about:config in the Firefox address bar
2) right click, choose new->string
3) enter the name network.security.ports.banned.override and the value '1-65535' (without the quotes)
"
I tried it, and it worked: http://open.zorinaq.com:25/