<?xml version="1.0"?>
<rss version="2.0">
  <channel>
    <title>Advogato blog for robocoder</title>
    <link>http://www.advogato.org/person/robocoder/</link>
    <description>Advogato blog for robocoder</description>
    <language>en-us</language>
    <generator>mod_virgule</generator>
    <pubDate>Sun, 19 May 2013 18:26:07 GMT</pubDate>
    <item>
      <pubDate>Sun, 11 Sep 2011 20:56:37 GMT</pubDate>
      <title>11 Sep 2011</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=331</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=331</guid>
      <description>My open source contributions have dropped off dramatically since I started working at Toronto web development firm, &lt;a href="http://instaclick.com" &gt;Instaclick&lt;/a&gt;.  But it's not my work hours to blame ... it's my crazy commute.  (BTW we are  hiring.  Check out the career opportunities page.)&lt;br/&gt;
&lt;br/&gt;
This week, I'll be tinkering with JavaScriptMVC while on the train.  (I really liked the look of the KnockoutJS site, and the interactive tutorial was pure "wow", so I may experiment with that later.)</description>
    </item>
    <item>
      <pubDate>Fri, 31 Dec 2010 07:40:50 GMT</pubDate>
      <title>31 Dec 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=330</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=330</guid>
      <description>My new year's resolution for 2011 will be to NOT maintain a&#xD;
daily blog.  ;)&#xD;
&#xD;
&lt;p&gt; I did, however, fulfill my 2010 resolution.  I wrote the&#xD;
certification exam for Zend Certified Engineer for&#xD;
PHP 5.3 -- so I'm officially a ZCE now.&#xD;
</description>
    </item>
    <item>
      <pubDate>Mon, 21 Jun 2010 07:31:51 GMT</pubDate>
      <title>21 Jun 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=329</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=329</guid>
      <description>I've been sidetracked from &lt;a href="http://piwik.org" &gt;Piwik&lt;/a&gt; core to &#xD;
work on replacing the continuous integration (on a server hosted by &#xD;
OpenX) to our own server.  This was a welcome diversion from PHP... for &#xD;
awhile... but it now looks like I'll have to dive deeper into HtmlUnit (and &#xD;
coding in Java) to isolate some HtmlUnit bugs when using jQuery 1.4.2.&#xD;
&#xD;
&#xD;
</description>
    </item>
    <item>
      <pubDate>Mon, 5 Apr 2010 09:03:37 GMT</pubDate>
      <title>5 Apr 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=328</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=328</guid>
      <description>Just popped in to read the blog roll.  Advogato's recentlog&#xD;
is downright spammy looking...&#xD;
&#xD;
&lt;p&gt; &lt;a href="http://piwik.org/" &gt;Piwik&lt;/a&gt; 0.5.5 was released a&#xD;
couple of weeks ago.  One critical bug fix, some index&#xD;
improvements, and an IP anonymizer were the big highlights.&#xD;
&#xD;
&lt;p&gt; While Matt leads the big feature development in 0.6, I've&#xD;
been contributing small patches and improving our Trac&#xD;
reports.  (This was a good opportunity to brush up on SQL&#xD;
JOINS.)  Generating the graphs for the project's &#xD;
&lt;a href="http://dev.piwik.org/trac/wiki/SoftwareDevelopmentMetrics" &gt;metrics&lt;/a&gt;&#xD;
will hopefully be easy to automate.   (I hope to revisit the&#xD;
BMI and Fix Responsiveness graphs at a later date.)&#xD;
&#xD;
&lt;p&gt; Ok...back to work...&#xD;
</description>
    </item>
    <item>
      <pubDate>Thu, 21 Jan 2010 19:00:35 GMT</pubDate>
      <title>21 Jan 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=327</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=327</guid>
      <description>&lt;b&gt;PowerUp!&lt;/b&gt;&#xD;
&#xD;
&lt;p&gt; Working on a new plugin for Piwik (and ActiveAnalytics) to provide in-app &#xD;
download/install of plugins.  I've prototyped the client and mocked up the &#xD;
&lt;a href="http://activeanalytics.net" &gt;digital download store&lt;/a&gt; (not pretty).    &#xD;
Building our own hosted extension repository (ala Wordpress &amp;amp; Typo3) -- &#xD;
for third-party developers -- may be next on the horizon... (being &#xD;
discussed).</description>
    </item>
    <item>
      <pubDate>Sun, 17 Jan 2010 19:22:44 GMT</pubDate>
      <title>17 Jan 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=326</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=326</guid>
      <description>&lt;b&gt;PHP mbstring.func_overload is evil.&lt;/b&gt; &#xD;
&#xD;
&lt;p&gt; There's no mb_substr_replace() function, so you can't pass a value from &#xD;
mb_strpos() -- ie overloaded strpos() -- and expect it to work.  Also, if you &#xD;
use substr() on binary data -- precisely because it's binary safe -- then you &#xD;
really don't want/expect to use mb_substr().  And there's no way to disable &#xD;
this at runtime via ini_set().&#xD;
&#xD;
&lt;p&gt; I just borrowed a snippet from ZendFramework and applied it to Smarty' s &#xD;
outputfilter.trimwhitespace.&#xD;
&#xD;
&lt;p&gt; Detecting this and coming up with workarounds is fugly.&#xD;
&#xD;
&#xD;
</description>
    </item>
    <item>
      <pubDate>Sat, 16 Jan 2010 06:11:24 GMT</pubDate>
      <title>16 Jan 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=325</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=325</guid>
      <description>&lt;b&gt;Re-inventing the wheel.&lt;/b&gt;  Sure, I could have used the&#xD;
ip2c library from FireStats, or the geoip code from MaxMind,&#xD;
but the former doesn't support shared memory and the latter&#xD;
is just fugly looking code.&#xD;
&#xD;
&lt;p&gt; So, I just coded/tested/benchmarked a new&#xD;
IP-to-country plugin for &lt;a href="http://activeanalytics.com/" &gt;Active Analytics&lt;/a&gt; --&#xD;
it'll be an optional, third-party plugin for Piwik.  It can&#xD;
search the database in either a flat file or shared&#xD;
memory.  (The difference is in the 10ths of a millisecond&#xD;
per query on my antiquated test box.)&#xD;
&#xD;
&lt;p&gt; In hindsight, I wasted a lot of time over-3ngin33ring the&#xD;
solution.  I thought it would be safer to sign and check the&#xD;
integrity of the shared memory segment for users in a shared&#xD;
web hosting environment.  I later realized this was a&#xD;
non-problem because shared web hosting&#xD;
doesn't offer access to shared memory (due to security and&#xD;
resource concerns).  This came as a relief because signing&#xD;
and verifying killed the performance benefit of using shared&#xD;
memory.&#xD;
&#xD;
&lt;p&gt; &lt;div style="font-size:small;"&gt;&lt;i&gt;[ed. "engineer" is a&#xD;
protected title here in Ontario.]&lt;/i&gt;&lt;/div&gt;</description>
    </item>
    <item>
      <pubDate>Mon, 11 Jan 2010 16:49:41 GMT</pubDate>
      <title>11 Jan 2010</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=324</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=324</guid>
      <description>&lt;a href="http://activeanalytics.com/" &gt;Active Analytics&lt;/a&gt; is&#xD;
bloatware, and it's intentional.  Based on Piwik, the&#xD;
package will be further padded to include new plugins&#xD;
and complementary self-hosted solutions.&#xD;
&#xD;
&lt;p&gt; So far, I've commited my workspace to Sourceforge  as a new&#xD;
project ("&lt;a href="http://activeanalytics.org/" &gt;Active&#xD;
Analytics&lt;/a&gt;").  The differences are few at the moment:&#xD;
&lt;ul&gt;&lt;li&gt;the directory layout reflects my installation&#xD;
preferences (i.e., public, private, and user folders).&#xD;
&lt;li&gt;non-core plugins (that I developed or coded by other devs)&#xD;
are revision controlled so that I can sanity test them when&#xD;
there are upstream changes (read: compat busters).&#xD;
&lt;li&gt;a couple of rejected patches are included for stability ...&#xD;
at least until the root cause defect is found&#xD;
&lt;/ul&gt;&#xD;
</description>
    </item>
    <item>
      <pubDate>Sun, 18 Oct 2009 07:59:20 GMT</pubDate>
      <title>18 Oct 2009</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=323</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=323</guid>
      <description>We're nearing the release of &lt;a href="http://www.advogato.org/proj/Piwik/" &gt;Piwik&lt;/a&gt; 0.5,&#xD;
and I noticed we'd made the 1500&lt;sup&gt;th&lt;/sup&gt; check-in to&#xD;
our svn repository in additon to reaching 1000 tickets&#xD;
created in Trac.  So,&#xD;
to reflect on our development journey, I whipped up some&#xD;
pretty charts of the project's &lt;a href="http://dev.piwik.org/trac/wiki/SoftwareDevelopmentMetrics" &gt;software&#xD;
development metrics&lt;/a&gt; (using a handful of Perl scripts,&#xD;
MySQL, OpenOffice, and Gimp).&#xD;
</description>
    </item>
    <item>
      <pubDate>Fri, 17 Jul 2009 04:41:36 GMT</pubDate>
      <title>17 Jul 2009</title>
      <link>http://www.advogato.org/person/robocoder/diary.html?start=322</link>
      <guid>http://www.advogato.org/person/robocoder/diary.html?start=322</guid>
      <description>Granted this is "PHP 5.2.6-3ubuntu4.1 with Suhosin-Patch&#xD;
0.9.6.2 (cli)", but my fondness for PHP is nonetheless waning...&#xD;
&lt;blockquote&gt;&lt;code&gt;&#xD;
&amp;lt;?php&lt;br&gt;&#xD;
print memory_get_usage()."\n";&#xD;
&lt;/code&gt;&lt;/blockquote&gt;&#xD;
Simple enough.  But sporadically, I get:&#xD;
&lt;blockquote&gt;&lt;code&gt;&#xD;
apang@olympus:/tmp$ php test.php&lt;br&gt;&#xD;
51568&lt;br&gt;&#xD;
Segmentation fault&#xD;
&lt;/code&gt;&lt;/blockquote&gt;&#xD;
That doesn't instill a lot of confidence when you're trying&#xD;
to figure out where your long running PHP script is leaking&#xD;
memory like a sieve...&#xD;
&#xD;
&lt;p&gt; Wait there's more.&#xD;
&lt;blockquote&gt;&lt;code&gt;&#xD;
&amp;lt;?php&lt;br&gt;&#xD;
print memory_get_usage()."\n";&lt;br&gt;&#xD;
print memory_get_usage()."\n";&#xD;
&lt;/code&gt;&lt;/blockquote&gt;&#xD;
You'll have to dig into the Zend Engine internals to figure&#xD;
this out:&#xD;
&lt;blockquote&gt;&lt;code&gt;&#xD;
apang@olympus:/tmp$ php test.php&lt;br&gt;&#xD;
51944&lt;br&gt;&#xD;
52248&#xD;
&lt;/code&gt;&lt;/blockquote&gt;&#xD;
I'm presuming there's some voodoo Zend Engine optimization&#xD;
going on under the hood (as opposed to some observer effect).</description>
    </item>
  </channel>
</rss>
