Skip to content

{ Tag Archives } code

CLI Split Windows in Vim

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. My friend sent me a link to conque this morning which I’m [...]

Also tagged , ,

addons.mozilla.org ♥s unit tests. Again.

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 [...]

Also tagged , , , , ,

Continuous Integration comes to AMO

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 [...]

Also tagged , , ,

Libraries to connect to a Citrix NetScaler or Zeus Traffic Manager

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. [...]

Also tagged , , , ,

Maintaining localization between Python and PHP (it’s not fun)

I reached my hand into the barrel of problems our migration to Python is going to cause and came up with Localization. It figures. First out of the chute was the .po files. It turns out the actual formatting is different between the two languages. PHP uses %1$s for its substitutions, but python uses either [...]

Also tagged , , , ,

Automating “Thinking of you”

I had an idea a few weeks ago. I’ve got a bunch of great photos on my computer that no one ever sees unless we meet in person. Sure, we’ve got flickr and social networking sites, but I’m talking about an old photo that someone only saw once in passing, or a favorite shot from [...]

Also tagged ,

Committing to SVN securely from a web application

Verbatim is the second project I’ve been the lead on recently where the requirements included people committing to SVN as themselves via the application. At first glance this means storing the authentication tokens of the user in plain text since we’ll need to pass them along to SVN whenever they commit. I wasn’t happy with [...]

Also tagged , , ,

Planning your API is important

I’m upgrading some code I wrote to talk to a new version of the Citrix NetScaler‘s API. The NetScaler’s manuals (that’s right, plural) weigh in at a combined 1114 pages so documentation isn’t a problem and their implementation is a breeze using WSDL over SOAP. However, some of the core changes left me scratching my [...]

Also tagged , ,

CakePHP makes upgrading easy

Laura attended CakeFest a couple months ago and got to meet some core Cake developers in person. In doing so she let slip that AMO was running on a pretty old version (1.1.12 – Released in December of 2006). Apparently 1.1.15 had some major performance boosts and since we melted the cluster a few times [...]

Also tagged , ,

When is a TINYINT(1) not a TINYINT(1)?

When you’re using CakePHP! Turns out CakePHP considers a TINYINT(1) to be a Boolean. Judging from all the support tickets that have been filed, I’m not the first person to get taken off guard by this behavior. When I asked about it on IRC, the response was that since MySQL considers a TINYINT(1) to be [...]

Also tagged , ,