I use split windows, both horizontally and vertically, in Vim all the time.
I’ve always wanted to be able to split the window and then start a command line
shell within that window but up until now that has just been a dream.
AMO has had an on-again off-again relationship with unit tests. A little
over a year ago we had a thousand unit tests that sort of, mostly, ran.
The problem is, PHP unit testing just isn’t as good as it should be. CakePHP
relies on SimpleTest, one of the main PHP test suites. It worked
relatively well for a small number of tests, but as our suite grew, so did our
troubles.
It's time to hail another milestone for AMO in our epic push for improvements in 2010. This time I'm happy to announce our Hudson continuous integration server which has been humming along for a few months.
Hudson Integration Screenshot. Click to enlarge.
AMO is the first Mozilla Webdev site to use continuous integration, and it's been a long time coming. With the way it's currently configured we've got code coverage trending, unit test trending, code quality trending, as well as detailed reports for all the above for every single check in.
If anything fails or oversteps a threshold our IRC bot complains and we can get it fixed up quickly. It's a boon to productivity to know that all the code being checked in is being tested automatically, plus it gives everyone a stable state to compare to.
Thanks to everyone that helped get Hudson going, from the people that write it, to the IT team that keeps it alive, to the webdev team that helped work out the kinks.
The first front end cache we used on AMO was the Citrix NetScaler. I've complained about it's API before but apparently never announced the library I wrote to purge items from the cache. So, a little late, but I have some reusable PHP code that will talk to your NetScaler and let you expire objects.
We hit some limitations with the NetScaler that we weren't happy with. Cost aside, it ignored some pretty standard stuff like the HTTP Vary Header. After working around that for years we switched to the horizontally scalable Zeus Traffic Manager (at that time, referred to as ZXTM). We've been pleased with our choice and six months ago I wrote a similar PHP library that allows you to connect to Zeus's API. Time and priorities being what they are, we never implemented it in production.
Finally, the real point to this post, last night I wrote a python library that will expire content from Zeus. We'll roll this into our migration and waiting on content to expire from Zeus should be a thing of the past.
As always, if you can use the libraries, feel free. They all have READMEs with examples.