Continuous integration on a zc.buildout-managed project with pyzmq

Sometimes things are simple

So we’ve got that awesome Hudson server, checking out our projects at each commit, running all the tests and reporting on the outcome. That way we always know when something broke, what, and which committer just fell out of his Ballmer peak.

On that server we install as little stuff as possible and any non-Python dependency required for compiling python packages at install time is handled by buildout. That way we can keep our Hudson environment as clean as possible, preventing version conflicts and cruft accumulation.

For instance, the buildout … Continue Reading

Share

Django localeurl and reverse()

If you use django-localeurl, you might run into the issue that on some machines, django.core.urlresolvers.reverse() works just fine and returns a URL with the locale prepended, while on other machines, it does not.

The reason is that, when localeurl is installed, it monkey-patches django.core.urlresolvers.reverse to change its behavior and have it prepend a locale to whatever URL is to be returned. And what happens is that the load order of the different files Django needs can change from one machine to another, thus makes the monkey-patching occur at a different timing, and you end up … Continue Reading

Share

Ajah web site is live

Tonight at Ajah we reached our first public milestone. Our web site is live!

Woohoo!! :-)

We will hold a private beta very soon now, so a good web site with a proper landing page was in order.

So that’s it. Shortest post ever. Off to the beer now :-D

Share

Next Montreal article on Ajah

Our startup Ajah just got featured on Next Montreal.

This is so cool!

What’s more, it is a nicely written article which makes a pretty good job explaining what we’re up to, and how the day-to-day life is like in our office. Which by the way really is pretty awesome.

You can check it out here.

Share

Opendata in Montreal

Just came out of the first Montreal Ouvert open meeting.

I was pleasantly surprised to see so many interested people showing up, and from so many different backgrounds. Developers, entrepreneurs, municipal employees, students, journalists, and more that I forgot about of course.

In the end they were all just citizens, enthusiastic about the possibilities of open data, ready to put in some grey matter and some work to help make it a reality. For some the work began some time ago, as much as a few years back.

And the possibilities of open data are many: availability of fresh, constantly updated data leads … Continue Reading

Share

On taking action

So what happened in all that time since my last substantial blog post?

No, I wasn’t busy counting red cars passing on the street, or marveling at the cat’s anatomy as my kids do.

After mulling over the possibility for a while, I finally decided to quit my job and go solo, and that turned out to be one of the greatest, most satisfying choices I have ever made!

But it wasn’t an easy one. Continue Reading

Share

jQuery.getJSON() callback not firing with IE

Just a reminder to myself, so I won’t waste as much time if it happens again.

When a jQuery.getJSON() callback is called by Firefox but not by Internet Explorer, check if the JSON data returned really is squeaky-clean.

An extra comma at the end of an object declaration was doing okay with the more forgiving Firefox JSON parser, but tripped IE’s, with no error message, and no callback ever called.

I found the error by using jQuery.load() instead and eval()-ing the AJAX responseText in the callback, which threw a JavaScript error this time.

Share

On taking responsibility

And so I was asking myself today, after realizing that maybe, my current situation at work might not support in a sufficient way my personal and professional growth anymore, what would it take to reach out to the next level?

What is it that would be needed in order to break out of the protective shell that is a regular job, with its predictable income stream and limited responsibility?

Being employed as a programmer is, up to a point, pretty comfortable. You don’t have to worry all that much about getting new customers, and about accounting, office space, and a whole lot … Continue Reading

Share

Web hosting adventures

While A2Hosting has a pretty darn good bang for the buck, I recently had to look for a web host with even more advanced features. For instance, I needed to be able to compile a more recent version of the git DVCS, and use it on my account of course.

So I looked around some more and settled on WebFaction. I had wanted to try them out for a while now based on all the good reviews you can find on the Internet on them, and now … Continue Reading

Share

JavaScript date parsing woes

I just corrected an interesting bug in a web application’s client-side JavaScript code.

How come, most of the time, the string ’2009-02-01′ gets parsed into a Date object with the correct February 1st, 2009 value, but sometimes results in March 1st, 2009?

This particular piece of code builds a financial periods menu by extracting dates out of some HTML returned by an AJAX request. Here’s what the function looks like – it may not be the best way to construct a date from a string in the form yyyy-mm-dd, but it works:
function makeDateFromIsoString(isoString)
{
if (isoString == null)
Continue Reading

Share