Older blog entries for robocoder (starting at number 322)

17 Jul 2009 (updated 17 Jul 2009 at 05:15 UTC) »

Granted this is "PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch 0.9.6.2 (cli)", but my fondness for PHP is nonetheless waning...

<?php
print memory_get_usage()."\n";
Simple enough. But sporadically, I get:
apang@olympus:/tmp$ php test.php
51568
Segmentation fault
That doesn't instill a lot of confidence when you're trying to figure out where your long running PHP script is leaking memory like a sieve...

Wait there's more.

<?php
print memory_get_usage()."\n";
print memory_get_usage()."\n";
You'll have to dig into the Zend Engine internals to figure this out:
apang@olympus:/tmp$ php test.php
51944
52248
I'm presuming there's some voodoo Zend Engine optimization going on under the hood (as opposed to some observer effect).

My absence says it all. Coding/blogging isn't really practical when there's a newborn cradled in one arm. ;)

Still, I've been a busy bee on Piwik, especially now that I have commit privileges. ;) We pushed 0.4.1 out the door primarily to address issues raised by PHP 5.2.10, but there are a lot of other fixes as well, in addition to now being able to manually (programmatically) trigger a goal from the browser.

You can't believe everything you read on Twitter. There were tweets purporting that the Ontario Ombudsman's office had adopted Piwik for its web site, but I just checked and they're currently using GA. =P

25 Feb 2009 (updated 13 Mar 2009 at 13:34 UTC) »
Don't force your infinite wisdom on me.

I'm not the first to notice this, and I probably won't be the last, but it deserves repeating, "don't use Prototype."

Here's one reason: the Prototype JavaScript framework doesn't play nice with others; it breaks "for..in" globally, intentionally. What's ironic is their workaround for json.js.

21 Feb 2009 (updated 22 Feb 2009 at 00:14 UTC) »

+1 to Ta0kira for his flurry of non-syndicated posts. My nitpick would be that sometimes the syndicated posts are OT.

+1 to Apenwarr. Yeah baby, long live hand rolled lexers and parsers! (That brought back fond memories of my university days taking Compiler Design.)

-1 but self::patOnTheBack() for fixing the language and country detection bugs in Piwik. Boo-hiss-scratch for whoever was responsible for using the proposed ISO 3166-1 alpha-2 country code "sp" instead of waiting for the officially assigned "rs" for Serbia. A hex on you and your bloodline that I have to detect "sr-sp" in every visitor's browser's Accepted-Language and fix your mistake.

18 Feb 2009 (updated 19 Feb 2009 at 04:45 UTC) »

No. No. NO! Who's bright idea was it to construct this malformed Accept-Language?

  • en-US,en;q=0.7,chrome://global/locale/intl.properties;q=0.3
"chrome://..." is neither a language tag (per RFC 3282) nor CFWS (per RFC 2822) *grumble*

And where does this originate from?

  • en-securid
It isn't registered in IANA's language subtag registry. The owner should use either x-en-securid or en-x-securid. *grumble*

Currently debating the merits of inferring the country when the language tag is composed of a primary subtag only (e.g., no region subtag). Reading: RFC 4646, RFC 4647

Ran across an interesting blog post on MozSpeak.

I noticed Drupal now has a Piwik module. Some of the items on the TODO would probably be of interest to Piwik users in general (for example, a user tracking example is a frequently requested feature).

Before the new year, I moved all our web sites to Hostgator. Our former web server is now a glorified reverse proxy to our internal servers. Maybe it can host a public git or svn repository...

Other than the Dashboard, I think I prefer the left column navigation in this Flex-based Piwik client to the sticky superfish menu in Piwik. Something to think about, seeing as I wasn't able to migrate all the jquery UI plugins in my recent Piwik patch, and now that jQuery 1.3 is out (and a jquery UI release around the corner).

Better late than never... I've been busy in my spare time submitting patches to piwik. The jquery update to 1.2.6 looks to be done finally -- yes, I know 1.3 came out this past week -- I'll wait for the plugins to catch up before I go through this exercise again.

As a side effect of UI regression testing, I uncovered a handful of bugs which weren't regressions. ;)

I'm glad to see piwik's roadmap has been updated and reorganized. I think the dates are still too aggressive given that matt is the lone developer, while patches trickle in from contributors. =P. Wait and see...

8 Jan 2009 (updated 8 Jan 2009 at 21:40 UTC) »

For reference, I put together a matrix of open source iPhone web app development kits. Sometime in the near future, I'll add my evaluation and constructive criticism/comments.

Oh, I just won a new laptop from Staples/Business Depot -- a Toshiba A300-05U. Unless circumstances change, it'll be used for browser compatibility testing on Windows.

Random thoughts for the day

One of the nice things about open source software is the high reuse factor, especially for libraries. Leveraging 3rd party code can pay off -- invest a little time to integrate, and save yourself the effort of building similar functionality from scratch. Of course there's a tradeoff: higher maintenance, whether it be re-integrating when an API changes, tracking down & fixing a bug that isn't fixed upstream, or simply regression testing the latest "stable" release (or bleeding edge from the trunk, as the case may be).

So, I'm updating jQuery and its various plugins on Piwik (an open source analytics platform, the successor to phpMyVisites), and I've settled on the following kitchen rules:

  • GATHER ESSENTIAL INGREDIENTS: set-up a test environment where you can run the trunk (or latest release) and this branch, side by side; use the latest browsers; for Firefox, get the Web Developer add-on
  • READ THE RECIPE: read the Changelog or CHANGES ... otherwise, fallback to the source
  • SEASON TO TASTE: forward port any local customizations that you know of (assuming you kept track of version numbers or copies of the original code)
  • MIX AND BAKE: plug it in and see what breaks (learn from this and add more automated tests)
  • DECORATE: patch as necessary with liberal sprinkling of diff or meld

Arguably, it's only necessary to develop and test with the latest browsers. If someone opens a ticket wrt an older browser and it isn't reproduceable with the latest browser, you can:

  • Let it languish in the bug tracker until either someone else fixes it or no one really cares about supporting that browser anymore.
  • Close it as WONTFIX and instruct the reporter to update their browser.
  • Or actually fix it, hoping someone else has already run into this problem and blogged about it. ;)

It's also debateable whether a project should sync up 3rd party libraries. Some reasons not to:

  • plan to replace that library
  • too many local customizations (either didn't make it upstream or were rejected) to warrant continuous reintegration
  • further development/maintenace on the library appears to have stalled
  • the latest and greatest (notably, frameworks) is increasingly bloated, and you only depend on an ever smaller, tiny fraction of the code

On the topic of browsers, I'm debating whether or not to add Chrome to my list of browsers for UI testing. I have no plans to add SeaMonkey. I've already dropped Konqueror 3.5.x and 4.1.x from my desktop, in anticipation of 4.2 in a few weeks.

The iPhone's interface may be too intuitive. My 2 y.o. picked up my phone, pressed the home button, slid her finger (i.e., passlocked), and pressed the "keys". I'm glad I don't have the "erase after 10 failed attempts" ... in the meantime, my iPhone is disabled for the next hour ... =P

313 older entries...

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!