<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Coffee|Code : Dan Scott - PHP</title>
    <link>http://coffeecode.net/</link>
    <description>Caffeinated Librarian Geek</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.1 - http://www.s9y.org/</generator>
    
    

<item>
    <title>Seven things</title>
    <link>http://coffeecode.net/archives/185-Seven-things.html</link>
            <category>Personal</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/185-Seven-things.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=185</wfw:comment>

    <slash:comments>5</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=185</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;I was tagged by &lt;a href=&quot;http://pooteeweet.org/blog/1402&quot;&gt;Lukas&lt;/a&gt; for the &quot;7 things&quot; meme, and meant to do something about it, but I&#039;ve been kind of preoccupied with the new baby and the sprinting toddler and work. Anyway, it seems like a heck of a lot more reasonable than the evil Facebook&#039;s &quot;25 things&quot; meme, so I&#039;m going to take a few minutes to try to play along.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;I was an early riser until I was around 15 or 16 years old and discovered the surrealists. At that point, I began experimenting with sleep deprivation as a means of stimulating my prose and poetry. This is also when I began drinking coffee. After about a month, I was no longer capable of being an early riser--and the fruit of writing experiments was, uh, not too impressive.&lt;/li&gt;
&lt;li&gt;Rather than going directly to university after high school, I elected to take what is now termed a &lt;em&gt;gap year&lt;/em&gt;. No trips to Europe for me, though; the goal was to refine my bass-playing and music-reading skills and head to a post-secondary music program. I recorded a few prog-rock tracks in a studio with a fantastic couple of guys (hey Pete and Mike!), but ultimately didn&#039;t put enough effort into my bass to carry out the plan. Let me assure you that a year of working night shifts at a convenience store in the entertainment district of a small city is &lt;u&gt;not&lt;/u&gt; a waste of time; I can&#039;t count the number of experiences that I&#039;m thankful for having had during that time.&lt;/li&gt;
&lt;li&gt;Although I roast and grind my own coffee, I&#039;m not a coffee snob. In fact, I possess almost no sense of smell and I suspect that my sense of taste is limited in comparison to most people, and I&#039;m quite happy to drink diner coffee. I cannot stand the taste of Starbucks coffee, however.&lt;/li&gt;
&lt;li&gt;The first time I was able to run a full kilometre without walking was when I was eighteen. Since then I&#039;ve run a couple of 5K races and and a &lt;a href=&quot;http://www.coffeecode.net/archives/79-Im-not-as-sore-as-I-thought-I-would-be.html&quot;&gt;sprint duathlon&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;I&#039;m pretty sure I was destined to become a systems librarian. When I was 10, I used to hang out at the local college&#039;s computer room until the students would log me onto a completely restricted Gandalf mainframe account so I could pretend to be Matthew Broderick in WarGames. My first real job, when I was 14, was as a &quot;computer page&quot; at the Barrie Public Library Children&#039;s Annex. It was my responsibility to oversee the use of the bank of Commodore 64s that the library made available to children, luring them in with games but requiring them to complete their allotment of educational software first. Oh the power.&lt;/li&gt;
&lt;li&gt;I occasionally wrote reviews for random CDs that came into the campus newspaper office. Nobody else wanted to review this orange CD called &lt;em&gt;Tragic Kingdom&lt;/em&gt; by some West-coast band, so I took it on. I gave it a savage review; I wasn&#039;t impressed with faux-ska and couldn&#039;t stand the lead singer&#039;s voice. Six months later No Doubt&#039;s &quot;SpiderWebs&quot; was in high rotation on every radio station in North America (look, folks, that song is repetitive enough without being played twice an hour!). I&#039;m sure that my negative review still gnaws at Gwen Stefani today as she weeps bitterly in her platinum mansion.&lt;/li&gt;
&lt;li&gt;In grade one, my report card read &lt;em&gt;Dan is too critical of his classmates.&lt;/em&gt; In my defence, if they weren&#039;t so stupid--come on, sound it out buddy--I wouldn&#039;t have been critical. Okay, not much of a defence.&lt;/li&gt;
&lt;li&gt;I am not a very demanding friend. I (almost) never call, (almost) never write, and (almost) never visit. Okay, scratch that: I&#039;m a crappy friend. Most of my close friends found out that we were expecting a second child only through Lynn&#039;s Facebook account. I called one couple shortly after Arik was born and his quasi-namesake (one of the Eric&#039;s in our life who bring honour to the noble name) asked me after a few minutes: &quot;So, uhh... did we &lt;em&gt;know&lt;/em&gt; that you were expecting a baby?&quot;. No, no you didn&#039;t, and that&#039;s not your fault. Man I suck.&lt;/li&gt;
&lt;li&gt;I&#039;m really good at arithmetic.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Link your original tagger(s), and list these rules on your blog.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Share seven facts about yourself in the post — some random, some weird.&lt;/li&gt;
&lt;li&gt;Tag seven people at the end of your post by leaving their names and the links to their blogs.&lt;/li&gt;
&lt;li&gt;Let them know they’ve been tagged by leaving a comment on their blogs and/or Twitter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wow, that was fun. Lemme see, I&#039;m going to break the rules and just tag two people: &lt;a href=&quot;http://blog.evermeet.cx&quot;&gt;Helmut&lt;/a&gt;, because he&#039;s one of the only other people who worked on the ibm_db2 PHP driver out of passion rather than as a job assignment. And &lt;a href=&quot;http://rc98.net&quot;&gt;Gabriel&lt;/a&gt; because I like his style.&lt;/p&gt;
 
    </content:encoded>

    <pubDate>Mon, 09 Feb 2009 00:56:35 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/185-guid.html</guid>
    
</item>
<item>
    <title>Oooh... looks like I've got (even more) work cut out for me</title>
    <link>http://coffeecode.net/archives/148-Oooh...-looks-like-Ive-got-even-more-work-cut-out-for-me.html</link>
            <category>Coding</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/148-Oooh...-looks-like-Ive-got-even-more-work-cut-out-for-me.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=148</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=148</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
PHP is getting a &lt;a href=&quot;http://www.colder.ch/news/01-16-2008/30/new-datastructures-in-spl.html&quot;&gt;native doubly-linked list structure&lt;/a&gt;. This is fabulous news; when I wrote the &lt;a href=&quot;http://pear.php.net/File_MARC&quot;&gt;File_MARC&lt;/a&gt; PEAR package, I ended up having to implement a &lt;a href=&quot;http://pear.php.net/Structures_LinkedList&quot;&gt;linked list class&lt;/a&gt; in PEAR to support it. File_MARC does its job today (even though I haven&#039;t taken it out of alpha yet), but due to its reliance on userspace data structures it&#039;s an order of magnitude slower than packages like &lt;a href=&quot;http://marc4j.tigris.org&quot;&gt;marc4j&lt;/a&gt; so it&#039;s not the best choice for processing hundreds of thousands of MARC records... today. It hurts a little that the &lt;a href=&quot;http://vufind.org&quot;&gt;VuFind&lt;/a&gt; project has to use a non-PHP solution for populating its Solr indices - although I&#039;m delighted that they have started using File_MARC for some on-demand processing.
&lt;/p&gt;
&lt;p&gt;
Now, when I get a chance (insert raucous mocking laughter here), I hope to be able to make File_MARC use splDoublyLinkedList  and see how it fares with 500K records. Should be good fun! After that, it just needs to be taught how to convert MARC8 to UTF-8, and we&#039;ll have ourselves a fully featured standard MARC package for PHP.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 16 Jan 2008 22:30:14 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/148-guid.html</guid>
    
</item>
<item>
    <title>Lightning talk: File_MARC for PHP</title>
    <link>http://coffeecode.net/archives/118-Lightning-talk-File_MARC-for-PHP.html</link>
            <category>Coding</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/118-Lightning-talk-File_MARC-for-PHP.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=118</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=118</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;I gave a lightning talk at the &lt;a href=&quot;http://code4lib.org/2007&quot;&gt;code4lib conference&lt;/a&gt; today on &lt;q&gt;File_MARC for PHP&lt;/q&gt; introducing the &lt;a href=&quot;http://pear.php.net/File_MARC&quot;&gt;File_MARC&lt;/a&gt; library to anybody who hasn&#039;t already heard about it. I crammed nine slides of information into five minutes, which was hopefully enough to convince people to start using it and provide feedback on what could be improved or smoothed out... I&#039;m looking forward to chatting with more people about it over the remaining days of the conference. I&#039;ve already introduced a few people to PHP&#039;s simple tests for test-driven development, so even if nobody ends up using File_MARC, at least people are learning about some of the hidden gems in PHP.&lt;/p&gt;
&lt;p&gt;The funny thing is that I had originally pitched a full session talk on this subject for the conference, and it didn&#039;t make the cut of the ruthless democracy that is code4lib. In retrospect, even a twenty-minute thunder talk probably would have been too much information for anybody but the most die-hard PHP and MARC coder out there; the lightning talk was a perfect format for the talk. I hope to let the documentation do most of the talking in the future.&lt;/p&gt;
&lt;p&gt;Here are the slides from the talk in &lt;a href=&quot;http://coffeecode.net/uploads/talks/2007/File_MARC-lightning.odp&quot;&gt;OpenOffice.org&lt;/a&gt; and &lt;a href=&quot;http://coffeecode.net/uploads/talks/2007/File_MARC-lightning.pdf&quot;&gt;PDF&lt;/a&gt; format. Enjoy!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;/me notes that UnAPI would be useful here... Gotta try and submit a patch to the s9y repository...&lt;/em&gt;&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 28 Feb 2007 18:48:56 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/118-guid.html</guid>
    
</item>
<item>
    <title>Reflections at the start of 2007</title>
    <link>http://coffeecode.net/archives/112-Reflections-at-the-start-of-2007.html</link>
            <category>Coding</category>
            <category>Personal</category>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/112-Reflections-at-the-start-of-2007.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=112</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=112</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;2006 was a year full of change - wonderful, exhausting change. Here&#039;s a month-by-month summary of the highlights of 2006:&lt;/p&gt;
&lt;dl&gt;
&lt;dt&gt;January&lt;/dt&gt;&lt;dd&gt;I did a whole lot of work on the PECL &lt;a href=&quot;http://pecl.php.net/ibm_db2&quot;&gt;ibm_db2 extension&lt;/a&gt;, reviewed a &lt;a href=&quot;http://www.coffeecode.net/archives/32-Review-No-Nonsense-XML-Web-Development-With-PHP-by-Thomas-Myer.html&quot;&gt;good book on XML and PHP&lt;/a&gt;, and finally &lt;a href=&quot;http://www.coffeecode.net/archives/31-CoffeeCode-tweaks.html&quot;&gt;fixed up my blog a little bit&lt;/a&gt;. I&#039;ve got a few more book reviews in the works for 2007, and hope I can spruce up good old Coffee|Code a little more.&lt;/dd&gt;

&lt;dt&gt;February&lt;/dt&gt;&lt;dd&gt;I &lt;a href=&quot;http://www.coffeecode.net/archives/36-Live-blogging-the-WWdN-Sabboth-Invitational.html&quot;&gt;live&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/42-Live-blogging-WWdN15-KentAllard-Invitational.html&quot;&gt;blogged&lt;/a&gt;   a few &lt;a href=&quot;http://www.coffeecode.net/archives/45-Live-blogging-WWdN-16-Robbie-Robb-Invitational.html&quot;&gt;WWdN invitational&lt;/a&gt; poker tourneys, wrote about Larry Menard&#039;s work on &lt;a href=&quot;http://www.coffeecode.net/archives/37-ADOdb-getting-good-support-for-IBM-DB2,-Cloudscape,-and-Apache-Derby.html&quot;&gt;building an ADOdb driver for DB2 based on the ibm_db2 extension&lt;/a&gt; (which is now &lt;a href=&quot;http://phplens.com/lens/adodb/docs-adodb.htm#drivers&quot;&gt;officially supported&lt;/a&gt;), documented my &lt;a href=&quot;http://www.coffeecode.net/archives/41-Simple-wonder.html&quot;&gt;installation of a bird feeder&lt;/a&gt; (update: Spook was happy because a few chickadees visited, but Amber hasn&#039;t really noticed yet), &lt;a href=&quot;http://www.coffeecode.net/archives/43-ibm_db2-close.html&quot;&gt;announced that I was leaving IBM&lt;/a&gt;, and apologized for having to &lt;a href=&quot;http://www.coffeecode.net/archives/44-Some-apologies,-some-reassurances.html&quot;&gt;back out of some engagements&lt;/a&gt; due to the change in jobs. I also promised to write up some fixes to PDO_ODBC and spread out my documentation efforts for PHP, neither of which really happened in 2006 (8 commits to phpdoc ain&#039;t all that) -- but I recently made use of the &lt;a href=&quot;http://php.net/xmlwriter&quot;&gt;xmlwriter&lt;/a&gt; extension in implementing MARCXML support for &lt;a href=&quot;http://pear.php.net/File_MARC&quot;&gt;File_MARC&lt;/a&gt; and noticed that xmlwriter badly needs a tech writer. So maybe I can pull it together in 2007.&lt;/dd&gt;

&lt;dt&gt;March&lt;/dt&gt;&lt;dd&gt;&lt;a href=&quot;http://www.coffeecode.net/archives/46-Live-blogging-WWdN-17-Fishy-McDonk-Invitational.html&quot;&gt;More&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/47-Stop-me-if-youve-heard-this-one-before.html&quot;&gt;live&lt;/a&gt;  &lt;a href=&quot;http://www.coffeecode.net/archives/49-Live-blogging-WWdN-something,-pink-floyd-in-the-house.html&quot;&gt;blogging&lt;/a&gt;  of &lt;a href=&quot;http://www.coffeecode.net/archives/51-Semi-live-blogging-WWdN-21,-jg-2323-invitational.html&quot;&gt;WWdN tournaments&lt;/a&gt;. How did I manage to have this much time in the first month of my new job? Amazing.  I also &lt;a href=&quot;http://www.coffeecode.net/archives/48-No-Hot-Coffee,-please,-Im-Canadian.html&quot;&gt;helped horny teenagers&lt;/a&gt; find relief with &lt;em&gt;GTA: San Andreas&lt;/em&gt;. But, in the middle of all that completely trivial stuff, our friends Mike and Kelly threw an &lt;a href=&quot;http://www.coffeecode.net/archives/50-Baby-shower-from-Jamies-point-of-view.html&quot;&gt;incredible baby shower&lt;/a&gt; for us. It was amazing to be surrounded by so many friends who were actually &lt;strong&gt;happy&lt;/strong&gt; that we were procreating! I do wish that we could visit more often, but based on last weekend&#039;s shenanigans this travel thing is starting to take more of a toll on Amber and her parents.&lt;/dd&gt;

&lt;dt&gt;April&lt;/dt&gt;&lt;dd&gt;Lynn and I attended an &lt;a href=&quot;http://www.coffeecode.net/archives/52-Theatre-of-the-macabre.html&quot;&gt;vaudeville-style horror show&lt;/a&gt;. Who says Sudbury doesn&#039;t have culture? I took my readers on &lt;a href=&quot;http://www.coffeecode.net/archives/53-Walk-to-work-with-me.html&quot;&gt;my walk to work&lt;/a&gt;, and I should note that within a couple of months of taking on the new job I had lost a bunch of weight. Activity is good! I &lt;a href=&quot;http://www.coffeecode.net/archives/54-Live-blogging-WWdN,-presdlee-invitational.html&quot;&gt;live-blogged&lt;/a&gt; a couple more &lt;a href=&quot;http://www.coffeecode.net/archives/56-Live-blogging-WWdN-Change100-Invitational.html&quot;&gt;WWdN invitationals&lt;/a&gt;, and Lynn and I &lt;a href=&quot;http://www.coffeecode.net/archives/57-No-baby-yet.html&quot;&gt;waited&lt;/a&gt; and &lt;a href=&quot;http://www.coffeecode.net/archives/58-Not-today,-either....html&quot;&gt;waited&lt;/a&gt; for the baby to arrive, including such fine events as attending Earth Day and the inaugural Nickel City Triathlon Team barbecue.&lt;/dd&gt;

&lt;dt&gt;May&lt;/dt&gt;&lt;dd&gt;We continued to &lt;a href=&quot;http://www.coffeecode.net/archives/59-Until-tomorrow,-Ill-just-keep-movin-on.html&quot;&gt;wait&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/62-We-prefer-our-baby-well-done,-thanks.html&quot;&gt;for&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/63-No-baby-tonight-in-my-coffee,-no-baby-tonight-in-my-tea.html&quot;&gt;Amber&lt;/a&gt; to arrive, and managed to fit in a viewing of &lt;em&gt;V for Vendetta&lt;/em&gt; during pre-labor. Eventually Amber did decide to join us in the outer world (saving me from having to run a 10K--yay!), and I &lt;a href=&quot;http://www.coffeecode.net/archives/64-Emergency-cabbage-Amber-Colleen-has-arrived.html&quot;&gt;posted&lt;/a&gt; the &lt;a href=&quot;http://www.coffeecode.net/archives/66-More-Amber-photo-goodness.html&quot;&gt;pictorial evidence&lt;/a&gt;. Oh, and I &lt;a href=&quot;http://www.coffeecode.net/archives/61-Live-blogging-WWdN-IlliniFan-Invitational.html&quot;&gt;live-blogged&lt;/a&gt; some more &lt;a href=&quot;http://www.coffeecode.net/archives/65-Live-blogging-WWdN-godard-invitational.html&quot;&gt;WWdN tourneys&lt;/a&gt;.&lt;/dd&gt;

&lt;dt&gt;June&lt;/dt&gt;&lt;dd&gt;I &lt;a href=&quot;http://www.coffeecode.net/archives/69-Tour-de-Sudbury.html&quot;&gt;rode around Sudbury&lt;/a&gt;, posted some &lt;a href=&quot;http://www.coffeecode.net/archives/70-High-traffic-zone.html&quot;&gt;more Amber pics&lt;/a&gt; while putting my antisocial tendencies on display, and rather shockingly &lt;a href=&quot;http://www.coffeecode.net/archives/71-Walking-away-from-online-poker,-towards-the-fambly.html&quot;&gt;announced my departure from online poker&lt;/a&gt;. Shortly thereafter, the withdrawal symptoms kicked in and I unleashed in my first library-oriented post &lt;a href=&quot;http://www.coffeecode.net/archives/72-My-answer-to-I-would-recommend-Vendor-X-to-other-libraries..html&quot;&gt;about our library system vendor&lt;/a&gt;. Looking back, I can&#039;t believe it took me almost four months to publicly snap at our vendor.&lt;/dd&gt;

&lt;dt&gt;July&lt;/dt&gt;&lt;dd&gt;I started my parental leave, and oddly enough wrote two blog entries in all of July. I guess I was actually spending significant quality time with Amber -- cool! On Canada Day, I ran &lt;a href=&quot;http://www.coffeecode.net/archives/74-The-rough-beast-slouches-towards-Lively.html&quot;&gt;my first 5K race&lt;/a&gt; in about five years. Unfortunately, the other entry dealt with the loss of my co-worker, Alain Letourneau. I found out later that some of his friends from library school only found out about his death through my &lt;a href=&quot;http://www.coffeecode.net/archives/73-Passing,-brighter-than-ever-before.html&quot;&gt;brief memorial to Alain&lt;/a&gt;, which is a bittersweet result I suppose. Tomorrow, a new librarian who was hired to fill Alain&#039;s position is joining the library; we won&#039;t forget Alain, but in a way it will be nice to have someone new moving around that office so that I don&#039;t have to walk past that empty room and locked door anymore.&lt;/dd&gt;

&lt;dt&gt;August&lt;/dt&gt;&lt;dd&gt;During the second month of my parental leave, I focused a bit more on communicating to the outside world and posted some &lt;a href=&quot;http://www.coffeecode.net/archives/75-Admirers-of-the-little-one.html&quot;&gt;more pictures of Amber&lt;/a&gt; (although I still have to install that baby gate correctly) and pictures of the &lt;a href=&quot;http://www.coffeecode.net/archives/76-Northern-Ontario-scenery.html&quot;&gt;French River bridge and Bell Park dragon boat races&lt;/a&gt;. I kicked off my efforts to build a &lt;a href=&quot;http://www.coffeecode.net/archives/78-Super-alpha-MARC-package-for-PHP-comments-requested.html&quot;&gt;MARC package for PHP&lt;/a&gt;, which ultimately spawned &lt;a href=&quot;http://www.coffeecode.net/archives/81-File_MARC-and-Structure_Linked_List-new-alpha-releases.html&quot;&gt;another package to implement a basic linked list structure&lt;/a&gt;. Lynn, Amber, and I made it to &lt;a href=&quot;http://www.coffeecode.net/archives/80-Cultural-influences-young-childs-fragile-eggshell-mind.html&quot;&gt;a couple of bad movies&lt;/a&gt;, and I finished &lt;a href=&quot;http://www.coffeecode.net/archives/79-Im-not-as-sore-as-I-thought-I-would-be.html&quot;&gt;my first sprint duathlon&lt;/a&gt;. Lynn gets the top kudos, though, for running in a Try-a-Triathlon just three months after bringing Amber into the world. This year I&#039;m hoping to do an Olympic distance triathlon, although I understand that some swimming skill is required for that...&lt;/dd&gt;

&lt;dt&gt;September&lt;/dt&gt;&lt;dd&gt;I started out the month a little bit bitter after &lt;a href=&quot;http://www.coffeecode.net/archives/82-AfterMARC-Morphing,-murdering,-or-massaging-the-MARC-format.html&quot;&gt;responding&lt;/a&gt; to &lt;a href=&quot;http://kcoyle.blogspot.com/2006/09/marc-we-can-do-it.html&quot;&gt;a call for a wiki&lt;/a&gt; on the MARC listserv, only to be told later &quot;thanks but no thanks, we&#039;re working on something ourselves&quot;. Eventually it ended up &lt;a href=&quot;http://futurelib.pbwiki.com/&quot;&gt;getting hosted on pbwiki&lt;/a&gt; where everybody shares a single user account (&lt;em&gt;shrug&lt;/em&gt;). Lynn, Amber, and I ran &lt;a href=&quot;http://www.coffeecode.net/archives/83-Another-day,-another-5K.html&quot;&gt;another 5K&lt;/a&gt; in our neighbourhood. I wrote about some recent examples of how &lt;a href=&quot;http://www.coffeecode.net/archives/84-Why-open-source-works....html&quot;&gt;open source works&lt;/a&gt; based on the PEAR proposal process and PHP ext/filter API discussions, and noted &lt;a href=&quot;http://www.coffeecode.net/archives/85-Why-quasi-open-source-doesnt-work.html&quot;&gt;how pseudo-open-source doesn&#039;t work&lt;/a&gt; after I found that IBM developerWorks had completely pulled the Mapuccino project. Come to think of it, I never did find a good open-source Web site visualization tool. Late in the month, I reflected on the role I&#039;m fulfilling as a &lt;a href=&quot;http://www.coffeecode.net/archives/86-Laundry-list-systems-librarians.html&quot;&gt;laundry list system librarian&lt;/a&gt;. That kind of role satisfies my generalist nature, even though it&#039;s a bit overwhelming at times.&lt;/dd&gt;

&lt;dt&gt;October&lt;/dt&gt;&lt;dd&gt;I attended Access 2006 and felt like I had finally met other members of my own species in the flesh (although I had previously met many of the same people on &lt;tt&gt;#code4lib&lt;/tt&gt;, it was nice to put names to faces and share thoughts over food). After &lt;a href=&quot;http://www.coffeecode.net/archives/90-Backlog-of-Access-2006-notes.html&quot;&gt;taking&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/99-Belated-Access-2006-notes-Saturday,-Oct.-14th.html&quot;&gt;a&lt;/a&gt; &lt;a href=&quot;http://www.coffeecode.net/archives/95-Access-2006-notes-October-12.html&quot;&gt;ton&lt;/a&gt; of &lt;a href=&quot;http://www.coffeecode.net/archives/97-Getting-the-Goods-Libraries-and-the-Last-Mile.html&quot;&gt;notes&lt;/a&gt;, I &lt;a href=&quot;http://www.coffeecode.net/archives/89-Calling-for-access-to-all-future-Access-presentations.html&quot;  title=&quot;null&quot;&gt;called for all future Access conferences to require presenters&lt;/a&gt; to make their presentations available. I took a trip immediately after Access 2006 to Huntsville, Alabama for a week of training by our library systems vendor, and noted &lt;a href=&quot;http://www.coffeecode.net/archives/91-Feeling-sorry-for-our-vendor.html&quot;&gt;how horrible&lt;/a&gt; their customer experience was for sales and training pitches. Maybe their new owner will take a gander at some of their customer surveys... My &lt;a href=&quot;http://www.coffeecode.net/archives/92-Double-barreled-PHP-releases.html&quot;&gt;PEAR proposal&lt;/a&gt; became an &lt;a href=&quot;http://pear.php.net/Structures_LinkedList&quot;&gt;official PEAR package&lt;/a&gt;, and I revised File_MARC based on the results of the Access 2006 Hackfest (where I learned that loading a 500 Mb file into memory and then parsing it doesn&#039;t work too well with most systems).&lt;/dd&gt;

&lt;dt&gt;November&lt;/dt&gt;&lt;dd&gt;Amber &lt;a href=&quot;http://www.coffeecode.net/archives/100-Its-Halloween,-baby!.html&quot;&gt;dressed up for Hallowe&#039;en&lt;/a&gt;, and &lt;a href=&quot;http://www.coffeecode.net/archives/101-PEAR-File_MARC-0.1.0-alpha-officially-released.html&quot;&gt;File_MARC became an official PEAR package&lt;/a&gt;. I discovered that &lt;a href=&quot;http://www.coffeecode.net/archives/102-Neat-o-Archimede-uses-Apache-Derby.html&quot;&gt;Archimedes&lt;/a&gt; uses Apache Derby as its database of choice, but was disappointed with the &quot;guessing game&quot; user interface that broke all known usability rules. I took a bus/train journey down to Windsor for the &lt;a href=&quot;http://www.coffeecode.net/archives/103-Future-of-the-ILS-Symposium-building-our-community-and-a-business-case.html&quot;&gt;Future of the ILS Symposium&lt;/a&gt;, got a &lt;a href=&quot;http://www.coffeecode.net/archives/104-BiblioCommons-wireframe-walk-through.html&quot;&gt;sneak preview&lt;/a&gt; of what BiblioCommons is up to, and pressed Mike Rylander for details on &lt;a href=&quot;http://www.coffeecode.net/archives/105-Evergreen-internationalization-chat.html&quot;&gt;how Evergreen / Open-ILS supports internationalization&lt;/a&gt;. I began trying in earnest to build a VMWare image running Evergreen, &lt;a href=&quot;http://open-ils.org/dokuwiki/doku.php?id=installing_prerequisites_on_ubuntu&quot;&gt;first with Ubuntu&lt;/a&gt; and &lt;a href=&quot;http://open-ils.org/dokuwiki/doku.php?id=installing_prerequisites_on_gentoo&quot;&gt;then with Gentoo&lt;/a&gt;, before stalling out somewhere in early December. This is one ball I intend to pick up again in early 2007 -- we badly need a backup OPAC. Somehow I failed to mention the week that Lynn, Amber, and I spent in Cuba for my sister-in-law&#039;s wedding.&lt;/dd&gt;
&lt;dt&gt;December&lt;/dt&gt;&lt;dd&gt;In December I was fairly quiet, as I was highly focused at work on finishing a number of projects that I had artificially set year-end deadlines for myself. To be honest, I just didn&#039;t want to spend my Christmas break thinking about them... I noticed that SirsiDynix made an odd press release on December 22nd, and &lt;a href=&quot;http://www.coffeecode.net/archives/108-Musing-about-SirsiDynixs-new-investment-partner.html&quot;&gt;indulged in wild speculation&lt;/a&gt; over what that meant. Library Journal picked up my blog post and quoted my creative conjecture, spawning several other posts on the topic, and I resolved to take the power of the blog a bit more seriously in the future. On December 21st I started responding to an LWN article that I felt &lt;a href=&quot;http://www.coffeecode.net/archives/110-The-state-of-PHP-security-LWN-article.html&quot;&gt;misrepresented the state of PHP security&lt;/a&gt;; although I wondered at times if the holiday egg nog had me tilting at windmills, the author of the article &lt;a href=&quot;http://lwn.net/Articles/215123/#Comments&quot;&gt;ultimately agreed with me&lt;/a&gt;. On Christmas eve I gave the present of &lt;a href=&quot;http://www.coffeecode.net/archives/109-We-want-Amber!-We-want-Amber!.html&quot;&gt;more Amber photos&lt;/a&gt;.&lt;/dd&gt;
&lt;/dl&gt;
&lt;p&gt;So, all in all, it was a pretty full year of geekdom, some regular exercise, a bit too much poker, a ton of travel, and a whole lot of change. There wasn&#039;t nearly enough Amber (of course there can never be enough), even though I have her all to myself a couple of mornings each week. But I&#039;m living with the people that I love, doing fulfilling work, and that&#039;s all I can really ask for.
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Tue, 02 Jan 2007 20:42:14 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/112-guid.html</guid>
    
</item>
<item>
    <title>The state of PHP security (LWN article)</title>
    <link>http://coffeecode.net/archives/110-The-state-of-PHP-security-LWN-article.html</link>
            <category>PHP</category>
    
    <comments>http://coffeecode.net/archives/110-The-state-of-PHP-security-LWN-article.html#comments</comments>
    <wfw:comment>http://coffeecode.net/wfwcomment.php?cid=110</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://coffeecode.net/rss.php?version=2.0&amp;type=comments&amp;cid=110</wfw:commentRss>
    

    <author>dan@coffeecode.net (Dan Scott)</author>
    <content:encoded>
    &lt;p&gt;
One of my favourite online publications, the Linux Weekly News, recently published an article called &lt;a href=&quot;http://lwn.net/Articles/215123&quot;&gt;The state of PHP security&lt;/a&gt;. Given Stefan&#039;s departure, the great taint debate, the addition of &lt;tt&gt;ext/filter&lt;/tt&gt; in 5.2.0 and all of the associated security changes in both the 5.2.x and the 6 branches, I settled down to enjoy a nice pre-Christmas read. I was hoping for some provocative thoughts about the direction that PHP has been taking for the last six months or so in the arena of security.
&lt;/p&gt;
&lt;p&gt;
Unfortunately, I was greatly disappointed. Beyond using Stefan&#039;s departure as a kicking-off point for the article, the author didn&#039;t even mention any of these issues. Instead, he simply rehashed the history of PHP design missteps (&lt;tt&gt;magic_quotes&lt;/tt&gt;, &lt;tt&gt;register_globals&lt;/tt&gt;, allowing URLs in &lt;tt&gt;include&lt;/tt&gt;) and noted that many PHP tutorials rely on dangerous practices.
&lt;/p&gt;
&lt;p&gt;
What bothered me the most, however, was the author&#039;s decision to paraphrase a quote Rasmus gave in an interview from 2002 without explicitly noting that the quote was from 2002. The sentence in the article, talking about &lt;tt&gt;register_globals&lt;/tt&gt;, is:
&lt;/p&gt;
&lt;blockquote&gt;
It is an extremely dubious feature, but one that PHP creator, Rasmus Lerdorf, seems to think should have been &lt;a href=&quot;http://www.sitepoint.com/article/phps-creator-rasmus-lerdorf/3&quot;&gt;left on&lt;/a&gt; by default.
&lt;/blockquote&gt;
&lt;p&gt;
Would it have been too much for the author to have actually asked Rasmus if he might have changed his mind in the past five years? Or perhaps the author could have done a little more research and dug up the &lt;a href=&quot;http://www.php.net/~derick/meeting-notes.html&quot;&gt;PHP 6 planning meeting minutes&lt;/a&gt; that state that &lt;tt&gt;register_globals&lt;/tt&gt; and &lt;tt&gt;magic_quotes&lt;/tt&gt; were going to be removed entirely from the language. Instead, the author concludes with the following statement:
&lt;/p&gt;
&lt;blockquote&gt;Security seems to fall somewhere below simplicity in the minds of the PHP language developers; that makes it more difficult to have secure PHP applications. Security is a hard problem and any attempt to &#039;dumb down&#039; a language is likely to run into security issues.  Encouraging amateur programmers to write web applications is unlikely to produce secure code in any language, but by providing tutorials and examples that have glaring security issues and by not concentrating on teaching secure coding, PHP makes it that much worse. A great deal of useful code has been written on the PHP platform; it would be nice to find a way to keep that code coming while simultaneously making it more secure.&lt;/blockquote&gt;
&lt;p&gt;
The first sentence in that statement is the most damning of PHP developers, but it entirely ignores the evidence exhibited in the changes we&#039;ve seen in &lt;a href=&quot;http://www.php.net/releases/5_2_0.php&quot;&gt;PHP 5.2.0&lt;/a&gt; and that are in the works for PHP 6. The third sentence, oddly enough, attributes the existence of &quot;tutorials and examples that have glaring security issues&quot; to PHP itself, as though the language itself or the core developers of the language have the ability to prevent insecure tutorials from being published.
&lt;/p&gt;
&lt;p&gt;
So I launched into the fray and attempted to right those injustices, perhaps a bit too passionately -- but so be it. I&#039;ve been pretty quiet in the PHP world for the past while, outside of my little PEAR projects, but I still care about the language.
&lt;/p&gt;
&lt;p&gt;
If I can glean anything from this article, it suggests that it might be a good idea to revamp the php.net landing page and documentation a bit to try to highlight tutorials that teach developers how to write secure PHP applications. Right now the landing page is largely a bulletin board for events. It might benefit, say, from a prominent and permanent link to the &lt;a href=&quot;http://phpsec.org/&quot;&gt;PHP Security Consortium&lt;/a&gt; (if that project is actually still alive--the last posted article dates back to March 2005). We may also want to improve the visibility of the security chapter of the manual (although briefly revisiting the section on SQL injection suggests that we need to revise it to encourage the use of PDO and placeholders).
&lt;/p&gt; 
    </content:encoded>

    <pubDate>Wed, 27 Dec 2006 23:52:13 -0500</pubDate>
    <guid isPermaLink="false">http://coffeecode.net/archives/110-guid.html</guid>
    
</item>

</channel>
</rss>