Working on a new plugin for Piwik (and ActiveAnalytics) to provide in-app
download/install of plugins. I've prototyped the client and mocked up the
digital download store (not pretty).
Building our own hosted extension repository (ala Wordpress & Typo3) --
for third-party developers -- may be next on the horizon... (being
discussed).

There's no mb_substr_replace() function, so you can't pass a value from
mb_strpos() -- ie overloaded strpos() -- and expect it to work. Also, if you
use substr() on binary data -- precisely because it's binary safe -- then you
really don't want/expect to use mb_substr(). And there's no way to disable
this at runtime via ini_set().

I just borrowed a snippet from ZendFramework and applied it to Smarty' s
outputfilter.trimwhitespace.

Re-inventing the wheel. Sure, I could have used the
ip2c library from FireStats, or the geoip code from MaxMind,
but the former doesn't support shared memory and the latter
is just fugly looking code.

So, I just coded/tested/benchmarked a new
IP-to-country plugin for Active Analytics --
it'll be an optional, third-party plugin for Piwik. It can
search the database in either a flat file or shared
memory. (The difference is in the 10ths of a millisecond
per query on my antiquated test box.)

In hindsight, I wasted a lot of time over-3ngin33ring the
solution. I thought it would be safer to sign and check the
integrity of the shared memory segment for users in a shared
web hosting environment. I later realized this was a
non-problem because shared web hosting
doesn't offer access to shared memory (due to security and
resource concerns). This came as a relief because signing
and verifying killed the performance benefit of using shared
memory.

We're nearing the release of Piwik 0.5,
and I noticed we'd made the 1500th check-in to
our svn repository in additon to reaching 1000 tickets
created in Trac. So,
to reflect on our development journey, I whipped up some
pretty charts of the project's software
development metrics (using a handful of Perl scripts,
MySQL, OpenOffice, and Gimp).

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

+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.