<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>sirhc.us maxim.us &#187; OSCON</title>
	<atom:link href="http://sirhc.us/tag/oscon/feed/" rel="self" type="application/rss+xml" />
	<link>http://sirhc.us</link>
	<description>the pathological prattle of a primal perl programmer</description>
	<lastBuildDate>Fri, 06 Jan 2012 05:04:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OSCON 2011: Friday</title>
		<link>http://sirhc.us/oscon-2011-friday/</link>
		<comments>http://sirhc.us/oscon-2011-friday/#comments</comments>
		<pubDate>Fri, 19 Aug 2011 00:46:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Burgerville]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[grid]]></category>
		<category><![CDATA[milkshake]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2011]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[shipwright]]></category>
		<category><![CDATA[sockgate]]></category>
		<category><![CDATA[Stargate]]></category>

		<guid isPermaLink="false">http://sirhc.us/?p=783</guid>
		<description><![CDATA[Friday marked the last day of the O&#8217;Reilly Open Source Convention (OSCON), and my last day in Portland, Oregon. Unlike previous trips, I traveled home on Friday night instead of Saturday morning. In the past, I&#8217;ve sat around my hotel &#8230; <a href="http://sirhc.us/oscon-2011-friday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Friday marked the last day of the <a href="http://www.oscon.com/oscon2011/">O&#8217;Reilly Open Source Convention</a> (OSCON), and my last day in Portland, Oregon.  Unlike previous trips, I traveled home on Friday night instead of Saturday morning.  In the past, I&#8217;ve sat around my hotel on Friday night with nothing to do except finish posts about OSCON.  There is one drawback, though.  I&#8217;m finally finishing this post 20 days later, which means it probably won&#8217;t be as fleshed out as my posts about Wednesday and Thursday.</p>
<p>After my near complete lack of interest in the keynotes I saw on Wednesday and Thursday mornings, I paid little attention to those on Friday.  I thought the message Karen Sandler had about <a href="http://www.oscon.com/oscon2011/public/schedule/detail/21426">open health</a> was good, but that&#8217;s about all I can say about them.</p>
<p>By far I was the most pleased by the sessions I attended on Friday.  First, Kevin Falcone&#8217;s <a href="http://www.oscon.com/oscon2011/public/schedule/detail/19126">Shipwright: Application Distribution Simplified</a>.  Kevin works for Best Practical, a company with the <a href="http://www.flickr.com/photos/andyarmstrong/2402300165/">best shirts</a>.  I plan on doing some evangelizing of Shipwright at work, as it would help a lot of people, including me, to better develop and deploy their applications.</p>
<p>I wasn&#8217;t planning on attending OSCON this year.  I was perfectly happy skipping it and staying home during the last week of July.  Then I happened to be looking over the list of Perl sessions and saw, at the very end of the list, <a href="http://www.oscon.com/oscon2011/public/schedule/detail/18392">Easy Distributed Computing with Perl and Grid::Request</a>.  It seems that Victor Felix has released a module that does exactly the same thing as some of the modules I&#8217;ve maintained at work, only the design is much better.  However, it doesn&#8217;t support the batch system we use.  I emailed Victor to discuss some collaboration and registered for OSCON so I could meet him.  So yeah, I attended OSCON for one session.  But it was worth it.  The module looks great and Victor seems happy that I have an interest to contribute.  It will be much better use of my time to contribute to a module on the CPAN than to continue pouring effort into what we have today.</p>
<p>Since, after chatting for a bit with Victor, I was already standing outside the room well into the next time slot, I popped into <a href="http://www.oscon.com/oscon2011/public/schedule/detail/18768">Git for Ages 4 &amp; Up</a>.  Michael Schwern and Ricardo Signes demonstrated the Git commands everyone should know to get started with the version control system.  As an added bonus, they used <a href="http://en.wikipedia.org/wiki/Tinkertoy">tinkertoys</a> to help the audience visualize what Git&#8217;s internal representation of the repository looked like after each command.  It was definitely a different and entertaining talk.</p>
<p>Prior to the closing keynote, Piers Cawley was invited to sing his library song, which I mentioned in <a href="http://sirhc.us/oscon-2011-thursday/">Thursday&#8217;s post</a>, again for the benefit of all OSCON attendees.</p>
<p>Paul Fenwick delivered the closing keynote.  If you haven&#8217;t seen one of his talks, shame on you.  Here, to help you fix that, I&#8217;ll refer you to his keynote, <a href="http://www.youtube.com/watch?v=OnX5v0uwNjc&#038;list=PL93FC98105B19725C&#038;index=39">All Your Brains Suck&mdash;Known Bugs and Exploits in Wetware</a>.</p>
<p>After three days in Portland, I finally ate at <a href="http://burgerville.com/">Burgerville</a>.  Eating at this regional chain is something I look forward to every time I&#8217;m in the area.  Though, I suppose my <a href="http://sirhc.us/before-after-why-i-care-about-my-health/">change in diet</a> may have suppressed my eagerness and led me to put it off until Friday.  In any case, I ordered a cheeseburger with grilled onions (ditching the bun) and a large raspberry shake.  While I prefer their blackberry shakes when available, the meal was delicious.</p>
<p>The high point of the conference happened, oddly enough, after it had ended.  For whatever reason, I happened to wander into a different area of the convention center, in which a sock knitting conference was taking place.  Outside of their expo hall was the Sockgate, a cardboard replica of a <a href="http://stargate.wikia.com/wiki/Stargate">Stargate</a>.  As we were waiting to take pictures with it, Paul Fenwick happened by and offered to take some photos.  He&#8217;s a really nice guy and I enjoyed finally getting the chance to meet him.  After the photo op, he headed into the knitting expo hall.  In retrospect, I should have done the same.  It would have been interesting to see what it was like.</p>
<div class="wp-caption aligncenter" style="width: 410px"><img alt="Sockgate" src="https://lh5.googleusercontent.com/-yvtw-Izpfy8/Tk2pgc36rYI/AAAAAAAABoc/KQfY0iF_zl0/s400/286278_264778273538030_236078669741324_1274545_6827680_o.jpg" title="Traversing the Sockgate" width="400" height="267" /><p class="wp-caption-text">Photo Credit: Paul Fenwick</p></div>
<p>Finally, I learned that when I attend OSCON, I really do need to go for the entire week.  Apparently, it takes me about two days to acclimate myself to the environment and really start interacting with people.  Of course, by arriving Tuesday night, I was ready to interact on Friday, just as everyone was heading home.  It didn&#8217;t help that I was staying in a hotel way out by the airport, with MAX service ending before 11:00 PM.  With a new baby at home, I certainly don&#8217;t regret my choice to be away for a shorter period of time, but if I go next year, I&#8217;ll probably go for the entire week.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2011-friday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2011: Thursday</title>
		<link>http://sirhc.us/oscon-2011-thursday/</link>
		<comments>http://sirhc.us/oscon-2011-thursday/#comments</comments>
		<pubDate>Thu, 18 Aug 2011 23:30:48 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[libraries]]></category>
		<category><![CDATA[Lightning Talks]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2011]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/?p=773</guid>
		<description><![CDATA[Thursday was the second day of sessions at the O&#8217;Reilly Open Source Convention (OSCON) and my third day in Portland, Oregon. Overall, the sessions I attended were arguably more relevant to my work than those I attended on Wednesday. Still, &#8230; <a href="http://sirhc.us/oscon-2011-thursday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thursday was the second day of sessions at the <a href="http://www.oscon.com/oscon2011/">O&#8217;Reilly Open Source Convention</a> (OSCON) and my third day in Portland, Oregon.  Overall, the sessions I attended were arguably more relevant to my work than those I attended on Wednesday.  Still, the day left me feeling unsatisfied.  At past OSCONs, I ended each day with my mind brimming with new ideas, scarcely able to wait until I could put some of them into practice.  So far, this year&#8217;s conference hasn&#8217;t had the same effect on me.</p>
<p>In any case, the Thursday morning keynotes were far better than those foisted upon us on Wednesday morning.  Gabe Zichermann&#8217;s talk, in particular, caught my attention.  In <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/20826">Game theory applied to user engagement in Open Source</a></strong> he talked about using so-called gamification techniques to draw people into using Open Source software.  Many of his examples had to do with using game theory to alter real life behavior, such as a <a href="http://theage.drive.com.au/roads-and-traffic/speed-camera-rewards-drivers-20101129-18d3i.html">lottery to reward good drivers in Sweden</a> or the use of consumption graphs in hybrid vehicles.  On a separate note, I tend to grow annoyed at the latter, having been stuck behind too many <a href="http://en.wikipedia.org/wiki/Hypermiling">hypermiling</a> drivers.</p>
<p>Getting into the sessions, I favored those more in line with the work I do as a Perl programming system administrator.  Also, it didn&#8217;t hurt that <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18581">The Conway Channel 2011</a></strong> happened to take place during the first time slot of the day.  I&#8217;m a bit sorry I passed up <a href="http://www.oscon.com/oscon2011/public/schedule/detail/19247">DIY Clinical Trials (Or: How to Guinea Pig Your Way to Scientific Truth and Better Health)</a>, if only for the reason that it would have been completely different from anything I normally do.  But, I attended those types of sessions on Wednesday, so it was back to business, so to speak.  Damian Conway was in his usual top form, as entertaining as he is educational.  I won&#8217;t go into too much detail, only to note that he demonstrated four of his modules, using a theme I&#8217;m sure most will recognize.  First, something old, updates to the <a href="https://metacpan.org/module/Regexp::Grammars">Regexp::Grammars</a> module.  He then introduced something new, the <a href="https://metacpan.org/module/IO::Prompter">IO::Prompter</a> module, which supersedes his older IO::Prompt.  There was something borrowed, the <a href="https://metacpan.org/module/Data::Show">Data::Show</a> module, which serves as a convenience wrapper around the <a href="https://metacpan.org/module/Data::Dump">Data::Dump</a> module.  And finally, something blue, the <a href="https://metacpan.org/module/Acme::Crap">Acme::Crap</a> module, which seems oddly cathartic.</p>
<p>I like to think I&#8217;m a halfway decent Perl programmer, but that doesn&#8217;t mean I think I can ignore things like Jacinta Richardson&#8217;s <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18870">Perl Programming Best Practices 2011</a></strong>.  The talk was a round-up of the tools and modules that are generally considered to be the best practices by the Perl community today.  Yes, generally.  People will have their differences of opinion, and I don&#8217;t always agree with the advertised best practices.  However, if followed, the practices will lead to better code, and if violating a practice, I like to be able to back that up with a well thought out reason (it doesn&#8217;t necessarily have to be a good reason).  The first of two, possibly pithy, examples of this is the <a href="https://metacpan.org/module/local::lib">local::lib</a> and it&#8217;s default use of <tt>~/perl5</tt> as its include path.  I prefer to use <tt>~/local/lib/perl5</tt> and, sure, the module allows me to do that easily enough, but it&#8217;s an extra, non-standard step.  Second, the <a href="https://metacpan.org/module/App::cpanminus">cpanm</a> has been touted as the best way to install modules from CPAN.  As a control freak with a highly customized CPAN configuration, I&#8217;ve never liked the way cpanm seems to do things its way.  Admittedly, it may be customizable, but I&#8217;ve never had the need to look into it.</p>
<p>There&#8217;s been some noise around the office about testing Amazon&#8217;s EC2 offering.  To that end, I thought James Loope&#8217;s <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18988">Utility and Automation: Low Overhead Operations with Amazon &amp; Puppet</a></strong> would be educational, possibly giving me some ideas about how to managing our own potential EC2 environment.  Unfortunately, it didn&#8217;t work out that way for me.  The talk was heavily focused on the way the web application was designed and pieces of Amazon&#8217;s infrastructure were used.  We&#8217;re not creating or running web applications, so none of it was beneficial to me.  There was nothing about Puppet aside from explaining that using it (or another configuration management tool) is vital for keeping everything running.</p>
<p>At this point, I was turned off from any cloud talks at OSCON.  There seems to be, with probably good reason, an inextricable tangling of cloud and web applications.  Because of this, I decided to pass on <a href="http://www.oscon.com/oscon2011/public/schedule/detail/18726">Achieving Hybrid Cloud Mobility with OpenStack and XCP</a> and instead attended Piers Cawley&#8217;s <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18577">Polymorphic Dispatch&mdash;It&#8217;s Not Just a Good Idea, It&#8217;s the Law</a></strong>.  I&#8217;m glad I did, because there were definitely some very useful ideas presented.  The idea, taken from Smalltalk, of passing messages to objects has a lot of merit.  Combining this with polymorphism, sending a message and allowing different objects to act on it differently, vastly simplifies code.  Simple code, of course, is easier to test and easier to debug when things go horribly wrong (and actually is less likely to go horribly wrong in the first place).  Of particular interest to me were the <a href="http://en.wikipedia.org/wiki/Null_Object_pattern">Null Object pattern</a> and what Piers referred to as the key tenant of object-oriented programming: tell, don&#8217;t ask.  That is to say, if I understood correctly, instead of querying an object for information and using it to determine which action to perform, give the information to the object and have it perform the action.  Finally, <a href="http://amzn.to/14ouCY"><em>Smalltalk Best Practice Patterns</em></a> was recommended as the best book on good coding practices out there.  According to Piers, it &#8220;will change the way you think about programming.&#8221;</p>
<p>I was in way over my head in Tom Christiansen&#8217;s <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19543">Unicode in Perl Regexes</a></strong>.  The only thing I managed to learn is that I don&#8217;t know nearly enough about Unicode to actually understand using it.  I&#8217;ll leave it at that.  It was a very information-dense session and it&#8217;s possible that Tom knows more about Unicode than those who designed it.  Other choices during this time slot, which may have been better for me, were <a href="http://www.oscon.com/oscon2011/public/schedule/detail/19548">Connecting iOS to the Real World with Arduino</a>, presented by my friend <a href="http://www.dailyack.com/">Alasdair Allan</a>, or, venturing again into the realm of health geekery, <a href="http://www.oscon.com/oscon2011/public/schedule/detail/18488">Open Source Preventive Medicine: Citizen Science Genomics</a></p>
<p>The last session I attended on Thursday had so much potential, but, for me, it fell flat.  I expected <a href="http://blog.qtau.com/">A. Sinan Unur</a>&#8216;s <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19211">Visualizing Economic Data Using Perl and HTML5&#8242;s Canvas</a></strong> to focus far more on visualization than it did.  Instead, the majority of the presentation was about the difficulty of parsing public data published by the United States government.  For this, Sinan uses <a href="https://metacpan.org/module/Spreadsheet::ParseExcel">Spreadsheet::ParseExcel</a> and explained a few of the techniques he uses to extract data from tables designed primarily for visual consumption.  Unfortunately, very little time was spent showing how Canvas was used.  We were given one static example and an explanation that there is no method available for determining the height of text in a Canvas element.  I had hoped to return to work with some ideas for using Canvas to visualize data from our batch scheduling system, but ultimately left disappointed.</p>
<p>After the last session, I met up with a coworker, an old friend, and a new friend to have dinner at Chipotle.  Normally, I like to avoid chain restaurants&mdash;national chains in particular&mdash;when traveling, preferring to sample the local cuisine.  But, we wanted a quick dinner and it was nearby.  My opinion was requested, on the relative healthfulness of pinto versus black beans.  I simply stated that I would be ordering my carnitas bowl without any beans.</p>
<p>After dinner, we returned to the convention center for the <a href="http://www.oscon.com/oscon2011/public/schedule/detail/21120">Perl Lightning Talks and the State of the Onion</a>.  As always, the talks were quite entertaining.  Of note was a juggling demonstration, illustrating various programming languages and databases.  Near the end, Ricardo Signes recounted a conversation he had with a couple of women from the knitting conference sharing the convention center with us.  Its presence provided a wonderful juxtaposition.  While OSCON is male-dominated and many don&#8217;t know how to act when women brave their way into our midst, the knitting convention is completely opposite.  Ricardo&#8217;s message to us was, take the time to look up from our laptops and chat with those around us.  We might just have a better time and make new friends.</p>
<p>Finally, Piers Cawley favored us, as he does every year, with a song.  This year, however, he did not bear a tale of levity, but a message of deadly seriousness.  The United Kingdom is closing libraries in an attempt to reduce public spending.  As a protest, Piers wrote a song, <a href="http://soundcloud.com/pdcawley/child-of-the-library">&#8220;Child of the Library&#8221;</a>.  There doesn&#8217;t appear to be any video (yet) of Piers performing at OSCON, but I&#8217;ve gone ahead and embedded one that I found.  It&#8217;s catchy, I had it stuck in my head for a couple of days after the conference.</p>
<p><iframe width="560" height="349" src="http://www.youtube.com/embed/VwZk8DMWTOA" frameborder="0" allowfullscreen></iframe></p>
<p>We could easily see the same thing happen in the United States&mdash;and in fact I have already seen it <a href="http://www.nbcsandiego.com/news/politics/Now-They-Might-Close-Libraries-104040374.html">proposed in San Diego</a>.  I&#8217;ll first admit that I have not set foot inside a library since college, over a decade ago (high school, if only counting public libraries).  Do libraries still matter, or is the concern over their closing merely the knee-jerk nostalgia of those of us who came of age in a world that didn&#8217;t yet know the Internet?  I can&#8217;t, and won&#8217;t, take a side on this issue until I&#8217;ve taken the time to visit my local library.  If I can recognize it as something I saw in my childhood, perhaps it should be closed.  If it has adapted to the so-called Information Age, maybe it&#8217;s worth funding.</p>
<p>As a final, humorous note, I almost didn&#8217;t make it back to my hotel.  At least, not without finding an alternate method of transportation.  At 10:22 PM, excusing myself and apologizing for staying so far away from the conference, I left Media Temple party at the Jupiter Hotel, arriving at the convention center MAX station at 10:32 PM.  The schedule at the station listed 10:42 PM as the last red line train to the airport, with Google Maps concurring that a train was 10 minutes away.  About two minutes later an unmarked blue line train arrived at the station, traveling east.  At this point, Google Maps had decided it would rather show me its trip planner instead of the previous screen which showed the impending arrival of the red line.  Forced to make a split-second decision, I hopped on the train.  I knew that I could take it at least as far as the Gateway station, where I could transfer to the red line if it was still behind me.  Around 11:00 PM I arrived at Gateway, after spending the ride thinking about how much a cab would cost.  This station had a real-time display with train arrival times.  The last red line of the day was only three minutes out.  Whew.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2011-thursday/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2011: Wednesday</title>
		<link>http://sirhc.us/oscon-2011-wednesday/</link>
		<comments>http://sirhc.us/oscon-2011-wednesday/#comments</comments>
		<pubDate>Thu, 28 Jul 2011 15:49:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2011]]></category>
		<category><![CDATA[Portland]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://sirhc.us/?p=769</guid>
		<description><![CDATA[Today marks my first day of the O&#8217;Reilly Open Source Convention, since I chose to only attend the sessions this year. I will also depart with my tradition of writing a post for every session I attend. I enjoyed it &#8230; <a href="http://sirhc.us/oscon-2011-wednesday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Today marks my first day of the <a href="http://www.oscon.com/oscon2011/">O&#8217;Reilly Open Source Convention</a>, since I chose to only attend the sessions this year.  I will also depart with my tradition of writing a post for every session I attend.  I enjoyed it in the past, but it adds more stress and distraction than I&#8217;d like this year.  Instead, I plan to relax and enjoy each session I attend.  I&#8217;ll still take a few notes, but I&#8217;ll limit myself to recapping an entire day in a single post.</p>
<p>I had breakfast in my hotel&#8217;s restaurant this morning, a mistake I won&#8217;t make again &mdash;over half the plate was composed of potatoes and toast, leaving little room for the eggs and sausage&mdash;.  It was an easy walk to the Cascades MAX station, until I saw the train arriving before me.  I likely could have made it onto the train had I sprinted, but I also had to buy a ticket, so I let it go.  Fortunately, it was the beginning of the morning commute, so another train was not far behind.</p>
<p>This morning&#8217;s keynotes were dry.  At least, I didn&#8217;t find them at all interesting.  Well, except for one.  I enjoyed Ariel Waldman&#8217;s brief talk about <a href="http://www.oscon.com/oscon2011/public/schedule/detail/20185">Hacking Space Exploration</a>.  It reminded me that I don&#8217;t spend nearly enough time on <a href="http://www.galaxyzoo.org/">Galaxy Zoo</a>.</p>
<p>The final keynote was a so-called surprise announcement.  We were first treated to a video in which a bunch of big names in technology&mdash;Bill Joy, Tim O&#8217;Reilly, and Al Gore to name a few&mdash;gushed over the possibilities of commodity cloud computing.  All that build up ended up being nothing more then a lead-in to an overblown advertisement for something called <a href="http://www.reuters.com/article/2011/07/27/idUS107761099320110727">Nebula</a>.  While the idea of open and commodity elastic compute is cool, I have difficulty taking something seriously when it&#8217;s surrounded by as much hype as I saw during the keynote.  Maybe I&#8217;m alone in this, but OSCON doesn&#8217;t really seem like the right venue to go heavy on marketing and light on technical detail.  Maybe those of us sitting in the ballroom weren&#8217;t the real audience for the announcement.  Perhaps they were just using the large and popular conference as a way of getting media attention.</p>
<p>So, what sessions did I attend?</p>
<p>About half way through OSCON last year, I realized that attending Perl sessions was mostly a waste of my time.  They tended to fall into two categories: stuff I already knew and web development (which I don&#8217;t do).  Where do I end up for the first session of this conference?  In <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18568">Perl 5.14 for Pragmatists</a></strong>, presented by Ricardo Signes.  For anyone who has read the Perl release notes (<tt>perl*delta</tt>), very little of what was presented will be novel.  However, it was very useful to see the relative emphasis placed on different features by someone as familiar with Perl as Ricardo.  In particular, fully half of the session was dedicated to Perl&#8217;s improved Unicode support.  As Ricardo stated, Unicode isn&#8217;t going away, so we need to get better at working with it.</p>
<p>After attending a session of some relevance to my profession, I wanted to take advantage of a series of back-to-back sessions of a more personal interest.  My passions of late have leaned towards health, fitness, and, in particular, a more so-called <a href="http://www.marksdailyapple.com/">primal lifestyle</a>.  So I was excited to see the session <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19182">Geeking in a Cabin in the Woods</a></strong>, presented by Ryo Chijiiwa on the schedule.  Previously employed as a software engineer at Yahoo! and then Google, Ryo took us through the history and motivation behind quitting his job, buying 60 acres of barren land in northern California, and simplifying his life by living on it.  It was a fascinating tale of overcoming challenges.  Part of me would love to do exactly what he did.  Ryo has a <a href="http://laptopandarifle.com/">blog</a> (with a really cool domain name) where he writes about his experiences.</p>
<p>Following in the same basic genre, I next attended Sarah Sharp&#8217;s talk on <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18369">Growing Food with Open Source</a></strong>.  Sarah is a Linux kernel hacker who also enjoys gardening.  Being a lazy hacker (I can relate), she wants to automate all of the mundane, tedious work that comes with a hobby like gardening.  She&#8217;s written code to manage planting calendars, hoping to eventually integrate it with a service like Remember the Milk, and an Android app to alert her of impending weather conditions that could affect her garden.  The most impressive piece was the work she&#8217;s done to create an automatic watering system, using home-made moisture sensors and Arduinos.  More information can be found on a site I will soon be spending a lot of time on, <a href="http://www.gardengeek.org/">Garden Geek</a>.</p>
<p>My earliest computer-related memory is playing text adventures on our Apple Macintosh, circa 1984.  For that reason, I was excited to attend Ben Collins-Sussman&#8217;s talk on <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19193">The Unexpected Resurgence of Interactive Fiction</a></strong>.  So excited, in fact, that I passed up a session <a href="http://r0ml.net/blog/">r0ml</a> was presenting.  Ben took us through a brief history of interactive fiction, from Adventure to present day.  He talked about both the science and the art of the genre as both have evolved over the years.  He focused primarily on the <a href="http://www.inform-fiction.org/">Inform</a> language and the <a href="http://eblong.com/zarf/glulx/">Glulx</a> virtual machine (not to mention current efforts to produce a web browser-based player), which leads me to think that there isn&#8217;t much point in putting any more effort into playing with <a href="http://www.tads.org/">TADS</a>.  He also mentioned the annual <a href="http://www.ifcomp.org/">Interactive Fiction Competition</a>, which I love and have participated as a judge in for the last several years.  This session has gotten me excited about interactive fiction again, after mostly ignoring it as a hobby for the last few years.  I have a couple of ideas for games that I&#8217;d like to enter into the competition, which I should finally get started on.</p>
<p>For the final two sessions of the day, I decided to return to my core competency, and arguably the whole reason I&#8217;m here, and sat down in the Perl room.  Damian Conway talked about <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/18582">(Re)Developing in Perl 6</a></strong>.  I&#8217;ve previously attended his six hour class on this topic, but it was a nice refresher, since I don&#8217;t use Perl 6 regularly.  He guided us through porting a handful of his modules&mdash;<tt>Acme::Don't</tt>, <tt>IO::Insitu</tt>, <tt><a href="https://github.com/colomon/io-prompter/">IO::Prompter</a></tt>, and <tt>Smart::Comments</tt>&mdash;from Perl 5 to Perl 6.  Each of these modules was selected as a representative of a given method used to port the code.  In the simplest case, a basic transliteration can be used.  For some modules, new features of Perl 6 can be used to replace long pieces of code; argument lists are a great example.  Finally, the ability to extend the grammar removes the need for source filters and allows the programmer to seamlessly add language features.</p>
<p>I ended my day with a session on improving code performance: <strong><a href="http://www.oscon.com/oscon2011/public/schedule/detail/19249">Sooner, Cheaper, Better &#8212; Optimization on a Budget</a></strong>, presented by Eric Wilhelm.  I didn&#8217;t find it very well organized or delivered, which is a shame, because I&#8217;ve seen him present before and he was rather good.  After introducing us to the <a href="http://c2.com/cgi/wiki?RulesOfOptimizationClub">Rules of Optimization Club</a>, Eric took us through a number of real world examples in which optimization might prove to be a waste of time.  Old hat for a lot of people, I know.  In fact, many people just wait for computers to get faster.  However, he then switched gears into a more interesting problem.  With today&#8217;s advances coming in the form of more cores rather than more speed, optimization was replaced with parallelization.  The same rules apply and it&#8217;s good to remember that.</p>
<p>Following the last session of the day, a booth crawl was held in the expo hall.  This involved setting up food and drink tables at the booths of various vendors, the idea being to bribe attendees to approach them.  There was beer, possibly wine, and the food leaned heavily towards cookies and grain-wrapped items.  I wandered around, played a Mario Kart-like Pac-Man multi-player racing game on an Android tablet at the <a href="http://www.qualcomm.com/quicinc/">QuIC</a> booth, ate a bunch of cheese, and left at 7:00 PM &hellip;</p>
<p>To attend the <tt>.vimrc</tt> birds of a feather (BOF) session.  A <tt>.vimrc</tt>, oft pronounced vim-wreck, is the name of the configuration file <a href="http://www.vim.org/">Vim</a> uses.  It&#8217;s more than a configuration file, though; it&#8217;s a full scripting engine, which provides quite a bit of potential for customization of one&#8217;s editor.  <a href="http://en.wikipedia.org/wiki/Damian_Conway">Damian Conway</a>, famed teacher of Vim, Perl, and myriad other topics, was in attendance.  As expected, the entirety of the session was spent learning about some of the neat, as yet unreleased, scripts Damian has been working on for Vim.</p>
<p>I didn&#8217;t have it in me to attend any of the evening events.  I was aware of two parties, but I neither wanted to drink nor stay out late.  Unlike years past, I haven&#8217;t been very social this year, either.  Instead, I made the relatively long trip back to my hotel, where I wrote this post (well, just the first draft; I finished it on Thursday morning over the lousy coffee provided by the Oregon Convention Center) and turned in early.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2011-wednesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2011: Tuesday</title>
		<link>http://sirhc.us/oscon-2011-tuesday/</link>
		<comments>http://sirhc.us/oscon-2011-tuesday/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 15:28:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[blackberries]]></category>
		<category><![CDATA[Food]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2011]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/?p=762</guid>
		<description><![CDATA[This marks the fourth time in five years I&#8217;ve attended the O&#8217;Reilly Open Source Convention (OSCON). I skipped it in 2009, when it took place in San Jose. This year the convention is back in Portland, Oregon, as it was &#8230; <a href="http://sirhc.us/oscon-2011-tuesday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This marks the fourth time in five years I&#8217;ve attended the <a href="http://www.oscon.com/oscon2011">O&#8217;Reilly Open Source Convention</a> (OSCON).  I skipped it in 2009, when it took place in San Jose.  This year the convention is back in Portland, Oregon, as it was last year.  So I&#8217;m here, too.</p>
<p>Unlike in previous years, I didn&#8217;t show up on Sunday to explore Portland and attend the Monday tutorials.  I didn&#8217;t want to spend an entire week away from home, but at the same time, nothing I saw on the tutorial schedule interested me.  So I flew up Tuesday afternoon and plan to return on Friday night.</p>
<p>Most of the hotels near the <a href="http://www.oregoncc.org/">Oregon Convention Center</a> (OCC) were booked up, and I left my itinerary planning to someone else (who is unfamiliar with Portland), so I&#8217;m staying at the Courtyard Marriott by the airport.  This wouldn&#8217;t be so bad, but, according to Google Maps, it&#8217;s a 1.2 mile walk to the Cascades MAX station.</p>
<p>Anyway, after getting settled in my hotel room, I headed to the OCC to meet up with my friend, Jonathan.  I made it in time to register, pick up my swag, and grab some cheese and beer on the expo floor.  I wandered over to the <a href="http://www.qualcomm.com/quicinc/">QuIC</a> booth to chat and saw a nice demo of Android and HTML 5 applications running on Qualcomm demonstration hardware.  It really showed off the power of the platform.</p>
<p>We decided not to stick around for the so-called OSCON Carnival, so hopped across the river on the MAX and looked around for dinner.  In our wanderings, we dropped into <a href="http://baileystaproom.com/">Bailey&#8217;s Taproom</a> to use the bathroom and have a beer.  The bartender recommended the <a href="http://www.davisstreettavern.com/">Davis Street Tavern</a> for a good burger paired with a good tap list.  I ended up having seared scallops, which were quite good.  After dinner, we wandered over to the <a href="http://www.puppetlabs.com/">Puppet Labs</a> party, where I got a souvenir <a href="http://osuosl.org/">Open Source Lab</a> beer mug.</p>
<p>Bailing fairly early on the party, I caught the MAX red line back over the river and on to the Cascades station.  The hotel&#8217;s shuttle driver had warned me against the walk, pointing out that there are no sidewalks.  However, Google directed me away from the main road and through a business park.  I don&#8217;t know why people are so averse to walking more than a couple of blocks.  I found the walk to be quite pleasant, and there are blackberry brambles growing wild along the streets, providing snacking opportunities.  It takes me back to childhood trips to the Pacific Northwest, when I would pick wild blackberries with my grandfather.</p>
<p>Back at the hotel, I grimaced at what they call a fitness center, swam a bit in the poor excuse for a pool, and soaked in the hot tub.  Then it was off to bed, because, unlike the lucky folks staying near the OCC, I have to wake up in time for a 20 minute walk followed by a 25 minute MAX ride.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2011-tuesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Tuesday</title>
		<link>http://sirhc.us/oscon-2010-tuesday/</link>
		<comments>http://sirhc.us/oscon-2010-tuesday/#comments</comments>
		<pubDate>Sun, 15 Aug 2010 23:20:03 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Travel]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[fivefingers]]></category>
		<category><![CDATA[ignite]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Portland]]></category>
		<category><![CDATA[rei]]></category>
		<category><![CDATA[vibram]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=471</guid>
		<description><![CDATA[I returned from the O&#8217;Reilly Open Source Convention three weeks ago, and I&#8217;ve had drafts for my Tuesday through Friday travel posts sitting around since then. I&#8217;ve finally found a moment on a lazy Sunday afternoon to enjoy a pint &#8230; <a href="http://sirhc.us/oscon-2010-tuesday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I returned from the <a href="http://www.oscon.com/oscon2010/">O&#8217;Reilly Open Source Convention</a> three weeks ago, and I&#8217;ve had drafts for my Tuesday through Friday travel posts sitting around since then.  I&#8217;ve finally found a moment on a lazy Sunday afternoon to enjoy a pint of ale while writing.  Although, it is a beautiful day, which I&#8217;d be spending outdoors if my family weren&#8217;t sick (and I&#8217;m not convinced I&#8217;m altogether healthy).</p>
<p>Tuesday was the second and final day of the tutorial sessions.  In the morning I attended a tutorial on <a href="http://sirhc.us/journal/2010/07/21/oscon-2010-postgresql-reloaded/">PostgreSQL&#8217;s new hot stand-by and streaming replication features</a>; and, in the afternoon I attended part of a tutorial on <a href="http://sirhc.us/journal/2010/07/22/oscon-2010-hands-on-cassandra/">Cassandra</a>.  Why only part?  I&#8217;ll get to that.</p>
<p>I didn&#8217;t feel like going across the river to the food trucks for lunch, so I joined Debbie for lunch at <a href="http://burgerville.com/">Burgerville</a>.  Aside from the delicious food made from local ingredients, there are two things that struck me about Burgerville.  The first I noticed when I walked in the door: for the first time, disposing of my trash would require me to read instructions.  Burgerville uses three bins for trash: one for recyclable materials, one for compost, and finally one for trash that can neither be recycled nor composted.  I thought this was neat, though I did get a kick out of the soft drink cup.  It&#8217;s from the Coca-Cola company and advertises itself as something that can be composted; with the footnote that this was only possible in a large facility capable of composting such cups.  Not something one can throw into their garden compost pile, I guess.  The second thing I noticed caused me immediate regret: the receipt lists the calorie count of the foods ordered, along with carbohydrate and fiber content.  Looking over the details of the burger, onion rings, and raspberry milkshake I ordered, I decided that it would not be a very paleo day for me.  Oh well, the milkshake was very good.</p>
<p>While enjoying our carb-loaded, calorie-filled lunch, Debbie noticed someone wearing a pair of Vibram FiveFingers that we hadn&#8217;t seen before.  From a distance, they looked almost like normal shoes and appeared to be made with a dark brown suede.  With both of us deciding that a post-lunch, calorie-burning walk was called for, and sharing a desire to buy a new pair of FiveFingers, we set out for <a href="http://www.rei.com/stores/13">Portland&#8217;s REI</a> store.  A trip on the MAX, a walk, a few blocks on the trolley, and another walk brought us to the store.</p>
<p>The shoes turned out to be the <a href="http://www.vibramfivefingers.com/products/products_kso_trek_m.cfm">KSO Trek</a>.  They&#8217;re very nice and I&#8217;m considering purchasing a pair for hiking.  Unfortunately, I struck out on the trip.  REI has been having a hard time keeping FiveFingers in stock, so I wasn&#8217;t able to find or buy a pair of the Classic version.  Fortunately, I&#8217;m still satisfied with my KSOs, which I was wearing at the time.</p>
<p>Our impromptu quest for footwear took us well beyond the alloted time for lunch.  Fortunately, this time was not wasted.  While walking, we had received a call from our coworker back in the expo hall, who needed help setting up the <a href="http://www.quicinc.com/">QuIC</a> booth.  For some reason, it was fun being allowed into the expo hall while booths were still being constructed.  Not sure why, other than that I enjoy seeing things taken apart and (sometimes) being put back together.  After getting the booth set up, I made it to the second half of the Cassandra tutorial.  I&#8217;m told by those who attended the first half that I didn&#8217;t miss much.</p>
<p>We had some time to kill between the end of the day&#8217;s sessions and the evening&#8217;s Ignite talks.  So we walked a few blocks to a place called <a href="http://www.rontoms.net/">rontoms</a>.  Had I not been looking for the specific address, I would have walked right past, not noticing that this was either a restaurant or a bar.  The cavernous interior was devoid of anyone save the bartender and a waitress, who would disappear as quickly as she appeared.  The photographs on the wall, ost of which featured a man in an animal costume, ranged from strange to disturbing.  After a moment&#8217;s hesitation, we ventured out back to find a patio crowded with patrons enjoying food, beer, and spirits.  With what appeared to be only a single waitress working and not having particularly strong appetites, we went back inside, obtained pints directly from the bartender, and found a comfortable area to sit and chat.  Twice we encountered people entering the restaurant, looking for people they didn&#8217;t know by sight.  Both times my colleagues convinced them that we were those people; one girl even sat down with us for a few minutes before we let her in on the joke.  After a while, I received a page from Jonathan that there was beer, salami, and cheese being served outside the ballroom at the convention center.  This sounded like an excellent and delicious dinner to me, so I made my way back.</p>
<p>I hadn&#8217;t been to an <a href="http://www.oscon.com/oscon2010/public/schedule/detail/14332">Ignite</a> session before, so I was looking forward to this one.  Right off the bat we were warned that we would likely enjoy some talks and dislike others.  Fortunately, each talk would only last five minutes, so we were free to use the time to retrieve another beer.  By the time we returned, the talk would be over.  I don&#8217;t believe I took advantage of this, instead waiting for the break, during which some awards were being presented.</p>
<p>Two talks stand out in my memory.  The first, perhaps appropriately, was the first in the lineup: Paul Fenwick talking about <a href="http://www.oscon.com/oscon2010/public/schedule/detail/15650">Maximum XP: Optimising life for adventure</a> (which he gave again, at a much better pace, at the <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13183">Perl Lightning Talks</a>).  Presented in song, Paul&#8217;s message seemed to be to enjoy travel and to take advantage of opportunities to meet people and have fun.  Based on what I&#8217;ve read on his <a href="http://twitter.com/pjf">Twitter stream</a>, I&#8217;d say he&#8217;s been successful.</p>
<p>The other talk, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/15513">Your Infinite Do-Loop Exercises Bores Me</a>, struck a chord with me.  John Scott and Jim Stogdill paired up for this talk, one would perform exercises while the other would speak, switching places at the halfway mark.  Not only was it refreshing to see a talk about fitness at a convention populated by a class of people not known for their physical exertion, but it was about a method of fitness I&#8217;ve recently become interested in.  While I don&#8217;t practice <a href="http://crossfit.com/">CrossFit</a> myself, I frequently look at the exercises on the site and prefer it to the typical, repetitive gym workout.  They also mentioned the <a href="http://paleodiet.com/">paleo diet</a>, which, along with the <a href="http://www.marksdailyapple.com/primal-blueprint-101/">primal lifestyle</a>, I&#8217;ve become a big fan of.</p>
<p>My coworkers all turned in early, so I hopped back on the MAX and headed downtown to have drinks with <a href="http://kevin.scaldeferri.com/blog/">Kevin</a> at <a href="http://www.baileystaproom.com/">Bailey&#8217;s Tap Room</a>.  I had a wonderful sour beer, which I no longer remember the name or origin of, and had the pleasure of meeting Steve, Jeff, and <a href="http://use.perl.org/~schwern/journal/">Michael Schwern</a>.  Jeff and Schwern were discussing the use of the <a href="http://search.cpan.org/dist/Log-Log4perl/">Log4perl</a> module in the latter&#8217;s <a href="http://github.com/gitpan">gitpan project</a>.</p>
<p>After last call at Bailey&#8217;s, I caught the last yellow line across the river and turned in myself.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-tuesday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: License to Fail</title>
		<link>http://sirhc.us/oscon-2010-license-to-fail/</link>
		<comments>http://sirhc.us/oscon-2010-license-to-fail/#comments</comments>
		<pubDate>Sat, 31 Jul 2010 04:27:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[copyright]]></category>
		<category><![CDATA[humor]]></category>
		<category><![CDATA[law]]></category>
		<category><![CDATA[licensing]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[r0ml]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[warranty]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=513</guid>
		<description><![CDATA[Robert &#8220;r0ml&#8221; Lefkowitz This session is a companion to the session on competition r0ml presented on Wednesday. For those of us who, for whatever reason, were unable to attend the previous session, he provided us with five second summaries: Wednesday: &#8230; <a href="http://sirhc.us/oscon-2010-license-to-fail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6635"><em>Robert &#8220;r0ml&#8221; Lefkowitz</em></a></p>
<p>This session is a companion to the session on competition r0ml presented on Wednesday.  For those of us who, for whatever reason, were unable to attend the previous session, he provided us with five second summaries:</p>
<ul>
<li>Wednesday: Competition is bad, don&#8217;t do it.</li>
<li>Thursday: Licensing is bad, don&#8217;t do it.</li>
</ul>
<p>And with that, the session is over.</p>
<p>I&#8217;m kidding, of course.  The best part of any of r0ml&#8217;s talks is the logic he uses to get from his observation to his conclusion.  As he noted at the outset, the path typically takes us through the Middle Ages.</p>
<p>I don&#8217;t deal with lawyers very much in my day job, since I work in a support role for our engineering departments.  However, I know several people in our Open Source group, and have attempted to release some of the Perl modules I&#8217;ve written while on the job.  Doing so is decidedly non-trivial and, after two years I still haven&#8217;t been allowed to release my code.  To say I&#8217;m disappointed is an understatement.</p>
<p>My experience with lawyers has been that they are extremely cautious.  While frustrating, I understand that it&#8217;s their job to play it safe and to protect the company.  They are scared, almost beyond reason, that an Open Source license will find its way into a piece of intellectual property that they&#8217;d rather not release.  It can&#8217;t be easy trying to bridge the gap between the closed and open ways of doing business.</p>
<p>The topic was introduced with a question: What is the difference between copyright and plagiarism?  Plagiarism is forever.  I didn&#8217;t quite catch what r0ml meant by this, but I suspect it means that copyright (eventually) expires, granting the work in question to the public domain.  Plagiarism, if one can get away with it, creates an attribution that lasts forever.</p>
<p>That, if one is an Open Source geek, leads one to think about licenses.  Let&#8217;s take the attribution clause of the BSD, which contains two sub-clauses, for example.  It&#8217;s redundant.  It effectively means that the recipient of the source code can not claim credit for the author&#8217;s work.  Under copyright law, this is already the case, so why the redundancy.</p>
<p>In the name of efficiency and refactoring, r0ml mused whether it would be possible to reduce the number of license clauses to one.  He found this in the <a href="http://sam.zoy.org/wtfpl/">Do What The Fuck You Want To Public License</a>.</p>
<p>Through inductive reasoning, if we can reduce the number of clauses from two to one, we should be able to similarly reduce the number of clauses from one to zero.  After all, if we begin with the earlier premise that licenses are bad, this should be the goal, right?</p>
<p>First, briefly, why are licenses bad?  There are many reasons and many arguments; too many of each for this post, but to summarize a few important ones, as of this writing, the Open Source Initiative lists <a href="http://www.opensource.org/licenses/alphabetical">73 approved licenses</a>.  Choosing between them can be a daunting task.  Neither do all of these licenses play well with each other, further complicating the selection task if one is attempting to integrate differently-licensed source code.  Finally, it&#8217;s rare that anyone knows all that they are agreeing to in the license.</p>
<p>The Medieval sensibility was that all knowledge came either from God or from the Ancients.  As such, no one could claim credit for a work, because, without exception, it would be plagiarism.  For this reason, the majority of works produced during the Middle Ages were compilations, a representation of existing information.</p>
<p>We have a modern equivalent of this Medieval concept of copyright, called the Compilation Copyright.  A compilation of files in the public domain is assembled with copyright only on the compilation.  Further, no one may claim credit on the same collection of files.  Instead, a new compilation, or derivative work, must be created.</p>
<p>How bad has copyright gotten?  Well, thanks to the Apple development kit, there is a short piece of code, included in every project, that is separately copyrighted by everyone who has used the development kit.  This is getting out of hand, to say the least.</p>
<p>So r0ml wrote <tt>unlicense.rb</tt>, which will scan a directory recursively, removing any licenses it finds.  This, of course, is perfectly acceptable under the terms of the licenses being removed, so long as the files aren&#8217;t redistributed.  It does have the effect of pleasing the obsessive-compulsive user.</p>
<p>Under the laws of many countries, a copyright notice isn&#8217;t actually required to have a copyright.  This is particularly true in the United States and the European Union.  In fact, in the latter one cannot even waive the protections of copyright.  This creates the default case: without a license, nobody other than the author has the right to do anything with the code.  The default is <b>all rights reserved</b>.</p>
<p>Richard Stallman, founder of the GNU project and the Free Software Foundation, was not trying to protect the author of code from people downloading the code; rather, he created the GNU General Public License to protect the users of the code.  He felt that users have an inherent right to have access to the code running on their computer.  Thus, the primary reason for the creation of Open Source licenses was to protect the user.</p>
<p>Many companies claim that they have an Open Source business model.  Typically what this means is that they offer their software, or some subset of their software for free, under an Open Source license.  Then they offer support contracts, for usually high prices.  These aren&#8217;t really Open Source business models.  The <a href="http://sqlite.org/">SQLite</a> project has the only known true Open Source business model.  The software itself is released into the public domain.  This is a scary place for lawyers, especially those employed by large companies.  To assuage their concerns, the company that employs the author of SQLite will be more than happy to <a href="http://www.hwaci.com/cgi-bin/license-step1">sell them an Open Source license</a> for the code.</p>
<p>Next, r0ml talked about warranties.  In some jurisdictions, the default case under the law is that there is an implied warranty, unless stated otherwise.  Most of us have seen the disclaimer of warranty, included to protect the author, attached to the license in code we have downloaded (or added it to code we&#8217;ve released), usually in all capital letters.  While not a strict requirement to be in capital letters, it is a requirement that the disclaimer be made to stand out.  Often, licenses are in plain text files, so using a bold face type isn&#8217;t possible.  Hence, capital letters.  The simplest case of a disclaimer is such:</p>
<p><code>/* This program comes without any warranty, to the extent permitted by law. */</code></p>
<p>As we recall, the default case under the law is an implied warranty so including the phrase &#8220;to the extent permitted by law&#8221; is redundant.  Also, it should be noted that copyright law, in the United States, is codified at the Federal level, in <a href="http://www.law.cornell.edu/uscode/17/usc_sup_01_17.html">Title 17</a> of the United States Code, while warranty law is codified by the states.  This leads to many more jurisdictions, and far more potential confusion, for warranty law.</p>
<p>So finally, here is r0ml&#8217;s part serious, part humorous take away: don&#8217;t include either a copyright <b>or</b> a warranty with your code.  If a user sues you for damages under the implied warranty in a state court, counter-sue them in US federal court for copyright infringement.  After all, under the law they were not given permission to copy the code anyway.</p>
<hr />
<p>A question came at the end of the session, from someone who appeared mildly upset and defensive.  He pointed out that Stallman created the GNU General Public License for a good reason, which wasn&#8217;t mentioned by r0ml during his talk.  Someone had taken the code Stallman was freely distributing and sold it.  After which, they went back to Stallman to inform him that he could no longer distribute his own code, because he hadn&#8217;t licensed it.  The questioner appeared to be offended by the whole point of the session, apparently feeling that all the work Stallman has done for Free Software was being ridiculed and that, without these licenses, &#8220;capitalists&#8221; will simply steal the code for their own nefarious purposes.</p>
<p>To this, r0ml did have a response.  Copyright law has changed since Stallman faced the problem that led to his creation of Free Software.  It has become more strict and the requirement for registration has been dropped.  The point was made that the questioner is actually referring to the concept of provenance, not copyright.  However, this concept was not further explored as, unfortunately, time had run out.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-license-to-fail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Friday Morning Plenary Sessions</title>
		<link>http://sirhc.us/oscon-2010-friday-morning-plenary-sessions/</link>
		<comments>http://sirhc.us/oscon-2010-friday-morning-plenary-sessions/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 16:57:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[friday]]></category>
		<category><![CDATA[keynotes]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=531</guid>
		<description><![CDATA[I&#8217;m tired this morning after a long week at OSCON, so my ability to understand and summarize the Friday plenary sessions is diminished. As such, what follows won&#8217;t be terribly useful to anyone. Your Work in Open Source, 3 years &#8230; <a href="http://sirhc.us/oscon-2010-friday-morning-plenary-sessions/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m tired this morning after a long week at OSCON, so my ability to understand and summarize the Friday plenary sessions is diminished.  As such, what follows won&#8217;t be terribly useful to anyone.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/13166">Your Work in Open Source, 3 years of Incremental Change</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6501">Chris DiBona</a> (Google, Inc.)</em></p>
<p>Google crawled 40 million files in <a href="http://code.google.com/">Google Code</a> to generate statistics on what&#8217;s in there.  Lines of code and numbers of commits are not the most useful of metrics but that&#8217;s what they have to use.</p>
<p>The Gnu General Public License is the most used license, at over 50%.  Of those, more than half have moved to GPL version 3.  Perl has declined a bit, but C has the most use, at about 40%.</p>
<p>Many companies are committing code, too.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15005">Mayor Sam Adams</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/85585">Sam Adams</a> (City of Portland, Oregon)</em></p>
<p>Last September, Portland adopted one of the first Open Source policies in the nation.  They&#8217;ve committed themselves to open software, open data, and Open Source in the procurement process for software.</p>
<p>It&#8217;s pretty cool when a politician gets it.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/14836">Situation Normal, Everything Must Change</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6219">Simon Wardley</a> (Leading Edge Forum (CSC))</em></p>
<p>Simon started with a recap of the talk he gave last year, which showed correlations between the ubiquity and certainty.  All technologies follow the same curve, from having both low ubiquity and certainty up to having both high ubiquity and certainty.  The stages tend to be the innovation of a technology, the productization, and finally the comoditization.</p>
<p>The basic idea was that the cloud, as it is known, is still in its infancy.  As it matures, we will see innovations built on it at an accelerated rate.  If we don&#8217;t pay attention to it, we&#8217;ll be left behind.</p>
<p>Well defined processes stifle innovation.</p>
<p>Projects or teams can be organized by lifecycle: innovation, leverage, and commoditize.  This circles back on itself.  When one thing is commoditized, a new innovation can be built on top of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-friday-morning-plenary-sessions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: State of the Onion</title>
		<link>http://sirhc.us/oscon-2010-state-of-the-onion/</link>
		<comments>http://sirhc.us/oscon-2010-state-of-the-onion/#comments</comments>
		<pubDate>Fri, 23 Jul 2010 02:07:27 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Larry Wall]]></category>
		<category><![CDATA[live demo]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl 6]]></category>
		<category><![CDATA[Rakudo Star]]></category>
		<category><![CDATA[State of the Onion]]></category>
		<category><![CDATA[uncertainty]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=523</guid>
		<description><![CDATA[The Thursday sessions are over, but before I head out to the parties, I&#8217;m attending the 14th State of the Onion address. This is the always well-attended update on the universe of Perl. I immediately noticed that Larry is surrounded &#8230; <a href="http://sirhc.us/oscon-2010-state-of-the-onion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The Thursday sessions are over, but before I head out to the parties, I&#8217;m attending the 14th <a href="http://www.oscon.com/oscon2010/public/schedule/detail/14339">State of the Onion</a> address.  This is the always well-attended update on the universe of Perl.  I immediately noticed that Larry is surrounded by his wife and his son, the former dressed as an angel, the latter as a devil.</p>
<p>Larry claims that so rarely does he talk about Perl in the States of the Onion addresses that he has brought his conscience with him today to prod him in the right direction (the aforementioned angel and devil).</p>
<p>The current state of the onion is segmented into left, central, and right sections.  It can be labeled, say, 5 and 6.  They can also be labeled 0 and 1, for false and true.  Larry then asked a series of boolean questions, asking the audience to weigh in on the veracity.</p>
<p><strong>Do you think Perl 5 and Perl 6 are really the same language?</strong></p>
<p><strong>Do you think Perl 5 and Perl 6 are really different languages?</strong></p>
<p>As the angel and the devil argued, Larry pointed out that an important skill for a language designer is to be able to stay on the fence long enough until he can determine which side the grass is greener on.  Sometimes you discover that you&#8217;re sitting on the wrong fence and the voices in your head start to argue about which side has the greener grass.</p>
<blockquote><p>When the voices in your head start arguing if the purple cow eats greener grass than the brown fence, it&#8217;s time to see a doctor.  Or find a better drug dealer.</p>
<p>&mdash; Larry Wall</p></blockquote>
<p>This is, of course, a metaphor for being a language designer.  Sometimes you sit on the fence for language features, without ever knowing which direction is the better one.</p>
<p>Next up is a live demo of Perl 6; or, more specifically, of <a href="http://www.perlfoundation.org/perl6/index.cgi?rakudo_star">Rakudo Star</a>, which is scheduled to be released next week.  Some of the demos, without comment:</p>
<pre>.say if 6 %% $_ for 1..^6</pre>
<pre>[+] gather { take $_ if 6 %% $_ for 1..^6 }</pre>
<pre>[+] grep { 6 %% $_ }, 1..^6</pre>
<pre>~[+] grep 6 %% *, 1..^6</pre>
<pre>-> $n { $n == [+] grep $n %% *,  ..^ $n }</pre>
<pre>-> $n { $n == [+] grep $n %% *,  ..^ $n }(6)</pre>
<p>At this point, the examples scrolled off the screen due to a &#8220;whatever&#8221; example being run.  That&#8217;s good news, though.  It means Rakudo Star supports lazy lists and, as such, we finally have those infinite lists we&#8217;ve been promised:</p>
<pre>0, 1, ... *</pre>
<p>The whatever star can, in addition to being used as in an infinite series, can be used to curry a function:</p>
<pre>(1, 1, *+* ... *)[^20]    # Fibbonacci</pre>
<pre>(0, !* ... *)[^20]        # 0 1 0 1 0 1 ...</pre>
<p>In a recent video interview, Larry was asked, if he were hit by a bus, has he designated anyone to be his successor as the leader of the Perl 6 project?  His response was that he trusts the Perl community to choose the right person.</p>
<p>Onions can make you cry, so can disruptive technologies or innovations.  Almost everyone has labeled their technology as disruptive.  As such, the phrase has lost most of its meaning.</p>
<p>A disruptive technology simultaneously does something worse and does something better than its competitors.  In a time of the Unix philosophy of &#8220;do one thing and do it well,&#8221; Perl came along and attempted to do everything, but didn&#8217;t necessarily do any of it well.  The Unix philosophy was broken by its own utilities.  No one knew what a &#8220;thing&#8221; was, and no utility of the time did it well.  By the time Perl 4 turned into Perl 5, it demonstrated that a tool that was itself an entire tool shed could run circles around shell scripts.</p>
<p>In California, we once had many, many colonies of ants.  Now, most of California is populated by a <a href="http://en.wikipedia.org/wiki/Argentine_ant#Global_.22mega-colony.22">single colony of Argentine ants</a>.  This is because the colonies have forgotten how to fight with each other.  Perl 6 has benefited from multiple teams creating multiple implementations, in the end working together to create a better product, even if that product takes longer to complete.</p>
<blockquote><p>If you don&#8217;t like <a href="http://svn.pugscode.org/pugs/misc/camelia.txt">Camelia</a>, you can just fork off.</p>
<p>&mdash; Larry Wall</p></blockquote>
<p>The takeaway, I think: It is up to all of us to determine what Perl 6 will be.  What kind of disruptive technology will it be?</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-state-of-the-onion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Awesome Things You&#8217;ve Missed in Perl</title>
		<link>http://sirhc.us/oscon-2010-awesome-things-youve-missed-in-perl/</link>
		<comments>http://sirhc.us/oscon-2010-awesome-things-youve-missed-in-perl/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 22:18:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[awesome]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[pjf]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=520</guid>
		<description><![CDATA[Paul Fenwick (Perl Training Australia) Ever since I saw An Illustrated History of Failure two years ago, I&#8217;ve made it a point to see @pjf&#8216;s talks. That&#8217;s how I find myself in his mid-afternoon session, Awesome Things You&#8217;ve Missed in &#8230; <a href="http://sirhc.us/oscon-2010-awesome-things-youve-missed-in-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6631">Paul Fenwick</a> (Perl Training Australia)</em></p>
<p>Ever since I saw <a href="http://www.oscon.com/oscon2008/public/schedule/detail/3072">An Illustrated History of Failure</a> two years ago, I&#8217;ve made it a point to see <a href="http://twitter.com/pjf">@pjf</a>&#8216;s talks.  That&#8217;s how I find myself in his mid-afternoon session, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/15764">Awesome Things You&#8217;ve Missed in Perl</a>.  Judging by the size of the crowd, I&#8217;m not the only one.  However, I won&#8217;t attempt to pass along his humour in this post.  I&#8217;d never do it justice.</p>
<p>In his introduction, Piers Cawley asked that we go wild when Paul took the stage, so the folks in the Google Wave session next door would be taken aback, and realize that Perl is not, in fact, dead.</p>
<p>People are still out there writing Perl as if still in the dark ages of 2008.  Paul doesn&#8217;t want us to write old Perl, but only new and shiny Perl.  This talk only covers practices that have come about since <em><a href="http://oreilly.com/catalog/9780596001735">Perl Best Practices</a></em> was released.</p>
<p>Object-oriented Perl is not awesome.  Not even close.  If you look at the old ways of doing it, all of them are either wrong, stupid, or both.  The rest are too hard.  There&#8217;s a simple way to fix this: use <tt><a href="http://search.cpan.org/dist/Moose/">Moose</a></tt>.  This module does so much of the infrastructure work of composing classes, it makes object-oriented programming enjoyable again.</p>
<p>Paul spent a lot of time giving a humorous, high-level overview of the features available in <tt>Moose</tt>.</p>
<p>The <tt>Moose</tt> module contains a huge number of extension modules in the <tt><a href="http://search.cpan.org/search?query=MooseX">MooseX</a></tt> namespace.</p>
<blockquote><p>When I have a problem, I go down to the pub with other Perl mongers and bitch.</p></blockquote>
<p>One of the limitations of Perl, that is exposed to <tt>Moose</tt>, is that not everything is an object.  This means methods like <tt>push()</tt> or <tt>isa()</tt> can&#8217;t be called on everything.  And checking types defeats the purpose of polymorphism.  Enter the <tt><a href="http://search.cpan.org/dist/autobox/">autobox</a></tt> module, which turns everything into an object.  As a bonus, it operates in lexical scope.  Moose exposes <tt>autobox</tt> through the <tt><a href="http://search.cpan.org/dist/Moose-Autobox/">Moose::Autobox</a></tt> module.</p>
<p>A module that Paul wrote, <tt><a href="http://search.cpan.org/dist/autodie">autodie</a></tt>, which is now included in core.  This lexically scoped module removes all of the boilerplate code that goes along with trapping errors from subroutines.</p>
<p>Not only is Perl 5.10 awesome, but Perl 5.10 regular expressions are awesome.  In particular, the introduction of named captures (via <tt>%+</tt>) made regular expressions extremely awesome.</p>
<p>Perl 5.10 also provides grammars in the regular expression engine.  This is the basis for Damian Conway&#8217;s <tt><a href="http://search.cpan.org/dist/Regexp-Gramars/">Regexp::Grammars</a></tt> module.</p>
<p>Referring to an article on <a href="http://sweeperbot.org/">SweeperBot</a> in <em><a href="http://www.theperlreview.com/">The Perl Review</a></em>.  However, there&#8217;s the problem of distributing a program that uses half of CPAN to users of inferior operating systems, such as Microsoft Windows.  That&#8217;s where the <a href="http://search.cpan.org/dist/PAR/"><tt>PAR</tt></a> module comes in.  It will pack up all of the modules used by the program, including the Perl interpreter itself if necessary, so a single, self-reliant file can be distributed to users who need it.</p>
<p>Remember to never optimize code.  Programmer time is far more valuable than CPU time.  However, when you must optimize code, profile first.  The <a href="http://search.cpan.org/dist/Devel-NYTProf/"><tt>Devel::NYTProf</tt></a> makes profiling awesome.</p>
<p>Code reviews are important, but Perl programmers are lazy.  Fortunately, the <a href="http://search.cpan.org/dist/Perl-Critic/"><tt>Perl::Critic</tt></a> module has read <em>Perl Best Practices</em> for you and will complain about where your code violates the practices in the book.  At my day job, it does about half the work of code reviews for me, loudly announcing violations of the coding standards that I enforce with an iron fist.</p>
<p>If you find an awesome module, buy the author a beer if you have the opportunity.  There&#8217;s also <a href="http://cpanratings.perl.org/">CPAN Ratings</a> to leave feedback or <a href="http://search.cpan.org/perldoc?perlthanks"><tt>perlthanks</tt></a> in recent versions of Perl.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-awesome-things-youve-missed-in-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: 21st Century Systems Perl</title>
		<link>http://sirhc.us/oscon-2010-21st-century-systems-perl/</link>
		<comments>http://sirhc.us/oscon-2010-21st-century-systems-perl/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 21:22:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[administration]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl is not dying]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[sysadmin]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=516</guid>
		<description><![CDATA[Matt Trout (Shadowcat Systems Limited) The full title of this session is, 21st Century Systems Perl &#8211; the New Perl Enlightment for sysadmins Introduction While Perl isn&#8217;t dying, &#8220;PERL&#8221; most certainly is dying. This is a good thing, because it &#8230; <a href="http://sirhc.us/oscon-2010-21st-century-systems-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6644"><em>Matt Trout (Shadowcat Systems Limited)</em></a></p>
<p>The full title of this session is, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/14095">21st Century Systems Perl &#8211; the New Perl Enlightment for sysadmins</a></p>
<p><b>Introduction</b></p>
<p>While Perl isn&#8217;t dying, &#8220;PERL&#8221; most certainly is dying.  This is a good thing, because it includes all the really crappy stuff, such as <a href="http://www.scriptarchive.com/">Matt&#8217;s Script Archive</a>.  Thank goodness for that.  To be fair, this code would have been horrible written in any language.  Remember, blame the artist, not the tool.</p>
<p>We have a very mature community, which means we also have very mature practices.  We are also converging on a standard platform, even if there are more than one ways to do something.</p>
<p><b>Part 1: Minimising Developer Fatalities</b></p>
<p>As a developer, we should do what we can to make our sysadmins&#8217; lives easier.</p>
<p>Right off the bat, we should use the <a href="http://search.cpan.org/dist/local-lib/"><tt>local::lib</tt></a> module, which allows an application to use custom library areas without polluting the system installation areas.  It can even work with <tt>/etc/skel</tt>.  Matt is a big fan of using a local library path, included with the application, so it can be maintained separately from both the operating system vendor&#8217;s modules and even other applications.</p>
<p>Improve module installation using <a href="http://search.cpan.org/dist/Module-Install/"><tt>Module::Install</tt></a>.</p>
<p>Package modules for your distribution of choice using <a href="http://search.cpan.org/perldoc?cpan2dist"><tt>cpan2dist</tt></a>.</p>
<p>Improve the CPAN experience using <a href="http://search.cpan.org/dist/App-cpanminus/"><tt>App::cpanminus</tt></a>, which is amazing easy to bootstrap:</p>
<pre>&gt; wget cpanmin.us
&gt; ./cpanm</pre>
<p>Start using all of the modules associated with best practices by installing <a href="http://search.cpan.org/dist/Task-Kensho/"><tt>Task::Kensho</tt></a>.</p>
<p>Vendors are getting better at distributing Perl and keeping up with module releases.  The Debian Perl team is the strongest, with Fedora lagging quite a bit far behind.  Fedora is finally getting better, now that members of the Perl community have a say in the packaging of Perl and the modules.</p>
<p>After many debug sessions, Matt has come to the conclusion that <tt>mod_$lang</tt> is evil.  Jamming languages into the web server is a bad, bad idea.  However, actually hooking into the different handlers can be useful.  Matt&#8217;s preference now is now <tt>FastCGI</tt>.</p>
<p><b>Part 2: Maximising Automation Banality</b></p>
<p>&#8220;In the systems world, shiny and exciting is not good.&#8221;</p>
<p>Use the <a href="http://search.cpan.org/dist/autodie/"><tt>autodie</tt></a> (in core as of 5.10) and the <a href="http://search.cpan.org/dist/IPC-System-Simple/"><tt>IPC::System::Simple</tt></a> modules to reduce the repetitiveness and the common errors of systems programming.</p>
<p>Use <a href="http://search.cpan.org/dist/IO-All/"><tt>IO::All</tt></a> to fix the syntax and semantics of I/O operations.</p>
<p>Systems script shouldn&#8217;t need to be deployed.  It should be possible to just drop the script onto a host and it will Just Work.  That&#8217;s where <a href="http://search.cpan.org/dist/PAR-Packer/"><tt>PAR::Packer</tt></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-21st-century-systems-perl/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Dist::Zilla</title>
		<link>http://sirhc.us/oscon-2010-distzilla/</link>
		<comments>http://sirhc.us/oscon-2010-distzilla/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 19:11:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[cpan]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Dist::Zilla]]></category>
		<category><![CDATA[distribution]]></category>
		<category><![CDATA[framework]]></category>
		<category><![CDATA[laziness]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=511</guid>
		<description><![CDATA[Ricardo Signes (Pobox.com) The full title of this talk is, Dist::Zilla &#8211; Maximum Overkill for CPAN Distributions. Every CPAN distribution contains a significant amount of crap. It&#8217;s infrastructure used for the distribution tools. ExtUtils::MakeMaker has been the traditional way to &#8230; <a href="http://sirhc.us/oscon-2010-distzilla/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/3189"><em>Ricardo Signes (Pobox.com)</em></a></p>
<p>The full title of this talk is, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13632">Dist::Zilla &#8211; Maximum Overkill for CPAN Distributions</a>.</p>
<p>Every CPAN distribution contains a significant amount of crap.  It&#8217;s infrastructure used for the distribution tools.</p>
<p><a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>ExtUtils::MakeMaker</tt></a> has been the traditional way to work on the infrastructure code.  By necessity, it contains a lot of legacy, which can be cumbersome to maintain.  Enter <a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>Module::Install</tt></a>, which can look in the expected places for the necessary information, such as the author name.  But, the author still must write all the boilerplate.  <a href="http://search.cpan.org/dist/ExtUtils-MakeMaker/"><tt>Module::Starter</tt></a> was written to address this, composing all the boilerplate on behalf of the author.  There is so much boilerplate that, by default, Module::Starter also provides a boilerplate test to detect it.</p>
<p>Why are we doing all of this?  How much repetitive work are we doing?</p>
<p>What can <a href="http://search.cpan.org/dist/Dist-Zilla/"><tt>Dist::Zilla</tt></a> do for us?  For starters, we can remove some files:</p>
<ul>
<li><tt>LICENSE</tt></li>
<li><tt>MANIFEST.SKIP</tt></li>
<li><tt>Makefile.PL</tt></li>
<li><tt>README</tt></li>
<li><tt>t/pod.t</tt></li>
<li><tt>t/pod-coverage.t</tt></li>
</ul>
<p>Leaving us with only our <tt>Changes</tt> file, our code, and our tests.  The non-infrastructure parts.  On top of that, <tt>Dist::Zilla</tt> does all of the boring distribution bits for us.  It only handles the <tt>make dist</tt> command.  It does not handle the <tt>make install</tt> command, which means the users who install the module don&#8217;t need all of the dependencies.</p>
<p><tt>Dist::Zilla</tt> puts all of its functionality into plugins, which will be the meat of the rest of this session.  It also uses a very simple INI-style configuration file.</p>
<p>The main command provided by the module is <tt>dzil build</tt>.  This bundles the distribution, which will contain all of the infrastructure necessary for users to install the module.  When building, it follows a simple work flow:</p>
<ol>
<li>Gather files</li>
<li>Munge files</li>
<li>Collect metadata</li>
<li>Write out</li>
</ol>
<p>There is no default configuration, but there is a <a href="http://search.cpan.org/perldoc?Dist::Zilla::PluginBundle::Basic">Basic plugin bundle</a> that will include all of the most common plugins.</p>
<p>What followed were examples of what the plugins can do.  Of course, all of them are designed to reduce cruft&mdash;the non-code, non-documentation bits that we&#8217;re forced to maintain.  The philosophy is the same one I advocate to anyone who will listen: computers are good at doing boring, repetitive tasks with derived data; why don&#8217;t we let them do more of that stuff?</p>
<p>I&#8217;ve followed <a href="http://twitter.com/rjbs">@rjbs</a> on Twitter for a while, and I&#8217;ve seen him talk about <tt>Dist::Zilla</tt>.  I&#8217;ve wanted to try it out for a while, to simplify my distributions&mdash;both for CPAN and for my day job&mdash;but I didn&#8217;t realize until this session just how awesome the tool is.  It&#8217;s a complete framework for managing Perl module distributions.  <tt>Dist::Zilla</tt> will give my <a href="http://c2.com/cgi/wiki?LazinessImpatienceHubris">Laziness</a> score a huge bump.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-distzilla/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Thursday Plenary Session</title>
		<link>http://sirhc.us/oscon-2010-thursday-plenary-session/</link>
		<comments>http://sirhc.us/oscon-2010-thursday-plenary-session/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 17:10:58 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[keynotes]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[thursday]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=504</guid>
		<description><![CDATA[This morning&#8217;s plenary session, based on the scheduled speakers, is focused on the nebulous cloud. The cloud is what everyone in technology talks about, but everyone defines differently. It&#8217;s the section of the flow chart where magic happens. Somehow, we &#8230; <a href="http://sirhc.us/oscon-2010-thursday-plenary-session/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This morning&#8217;s plenary session, based on the scheduled speakers, is focused on the nebulous cloud.  The cloud is what everyone in technology talks about, but everyone defines differently.  It&#8217;s the section of the flow chart where magic happens.  Somehow, we will send our data into the cloud and all our wishes will be fulfilled.</p>
<p>To be fair, this vagueness and my pessimism are precisely why these speakers have been invited to the <a href="http://www.oscon.com/">O&#8217;Reilly Open Source Convention</a>.  Tim O&#8217;Reilly has a grand vision for the cloud, for ubiquitous computing, and the use of technology to help solve the world&#8217;s problems.  I commend him for that.  I hope this morning&#8217;s speakers do justice to his vision and that, if there are valuable lessons to be learned, that we learn them.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/14645">Today&#8217;s LAMP Stack</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/2442">David Recordon</a> (Facebook)</em></p>
<p>Over the last decade, the LAMP stack hasn&#8217;t been fundamentally updated.  A cache, such as memcached has been added.  Different languages (Perl, Python, Ruby) have been used in place of the original PHP.  Even different web servers have been used in place of Apache.</p>
<p>Facebook created HipHop for PHP, which compiles PHP into C++.  Creating native executables in this way reduces CPU use by a large factor (a number I didn&#8217;t catch).</p>
<p>There are alternatives for the database component in the stack, too.  MySQL is ubiquitous at this point.  Facebook doesn&#8217;t really use the relational bits of MySQL very much.  So they have been using databases from the NoSQL family&mdash;Hadoop, according to the presentation.</p>
<p>David made a point I think a lot of people miss.  When evaluating databases, or any other software, first look at what problem needs solving, then find a product that solves it in the correct way.  Too often I see people advocating their preferred solution without even looking at the problem.</p>
<p>Data is the lifeblood of Facebook (and we all have our own opinions about that).  They are able to use a plethora of Open Source tools to store the data, scale the data, and analyze the data.</p>
<p>This talk wasn&#8217;t very focused on the cloud, aside from Facebook being a nebulous site where people store their data without really knowing where it goes or how it&#8217;s used.  I expect this was more for public relations, given all the bad press they&#8217;ve had.  Not that anyone stops using Facebook.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/13425">Open SETIQuest &#8211; It Will Be What You Make It!</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/76484">Jill Tarter</a> (SETI Institute)</em></p>
<p>Jill started her talk by explaining what SETI is and why it exists, which I won&#8217;t go into here, since it&#8217;s just a Google search away.  I used to run <a href="http://setiathome.ssl.berkeley.edu/">SETI@home</a> a bit over a decade ago when I was in college and felt like using my computer as a space heater.</p>
<p>Jill is here, representing SETI, because she wants to involve the world in their search.  SETI has classroom materials covered, but they are lacking in the social networking world.  Jill wants people to first identify themselves as Earthlings, recognizing our place in the Universe.</p>
<p>SETI, with the development of the <a href="http://setiquest.org/">setiQuest</a> community, hopes to use the vast resources available in the Open Source world to improve the project.  These include physical resources, such as cloud storage and compute cycles, to human resources, such as programmers and analysts.</p>
<p>Cloudant has created a SETI stack on the Amazon AWS infrastructure.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15643">Open Cloud, Open Data</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/98034">Jean Paoli</a> (Microsoft)</em></p>
<p>I&#8217;m always a little concerned when I see a speaker from Microsoft at OSCON.  While I can imagine that there are employees at the company who genuinely embrace Open Source&mdash;and, presumably from this talk, open data&mdash;I can&#8217;t lay aside my suspicion.  Microsoft does not have a benevolent history with competition, so when a representative shows up to talk about an open cloud with open data, I instinctively look for the company&#8217;s angle.  What is their nefarious plan?</p>
<p>Jean talked about open standards and open data.  Data portability, standards, easy migration and deployment, and developer choice.  For some reason, when he talks about the &#8220;open cloud,&#8221; I have thoughts about Microsoft&#8217;s OpenDocument move a few years ago.  Sure, parts of it were open, but the format as a whole was useless for non-Microsoft tools.</p>
<p>He claimed that Microsoft Windows Azure is an open and interoperable platform.  I have a hard time swallowing that.  The <tt>#oscon</tt> IRC channel was not kind in its commentary.  A selection from the channel logs:</p>
<pre>&lt;b3gl&gt; "Microsoft totally agrees..." as long as you pay your Windows, Azure and MSSQL license fees

&lt;alapapa&gt; standards are great…as long as they're ours

&lt;dbrewer&gt; wow, thanks Microsoft.  You think I should be able to use any language I want, I appreciate your permissions.

&lt;b3gl&gt; dbrewer: Notice he didn't say "We believe if you want to use Linux ...."</pre>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/13423">Public Static Void</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/76527">Rob Pike</a> (Google, Inc.)</em></p>
<p>Programming languages used to be relatively simple, but still fairly powerful.  They&#8217;ve gotten considerably more complex and confusing.  The C++ language was used as an easy target during the talk.  Rob went on to bash various (in most cases deservedly) programming languages as a way to lead into what he called the renaissance of language design.</p>
<p>Many of the emerging languages are dynamic and interpreted, and there&#8217;s a false dichotomy that they are considered good while the static and compiled languages are considered bad.  Part of the problem is that the latter class of languages are old, designed in a different age of computing.</p>
<p>Obviously, the end goal of this talk was to talk about the <a href="http://golang.org/">Go language</a>, which tries to bridge the gap between the dynamic interpreted languages and the static compiled languages.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15684">Toward an Open Cloud</a></h3>
<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/49895">Lew Moorman</a> (Rackspace.com)</em></p>
<p>Lew&#8217;s talk was to introduce <a href="http://openstack.org/">OpenStack</a>.  Rackspace took the internal software that powers their cloud and donated it to OpenStack.  I wonder if this is something we can use at my day job to build an internal cloud.  The stack is licensed under the Apache 2 license and they don&#8217;t use a dual licensing model, which sounds nice.</p>
<hr />
<p>I was wrong, the talks weren&#8217;t really about demonstrating the wonder of ubiquitous computing and how we can move in that direction so much as a showcase of organizations in the cloud or using the cloud.  It was really just one long commercial.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-thursday-plenary-session/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Hands-on Cassandra</title>
		<link>http://sirhc.us/oscon-2010-hands-on-cassandra/</link>
		<comments>http://sirhc.us/oscon-2010-hands-on-cassandra/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 07:59:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[cassandra]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[distributed]]></category>
		<category><![CDATA[expo]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=469</guid>
		<description><![CDATA[The second tutorial I attended on Tuesday, and the last one of the conference, was Hands-on Cassandra. Actually, I missed the first half of this tutorial, for reasons which I explain in my Tuesday recap post. I&#8217;ve been told by &#8230; <a href="http://sirhc.us/oscon-2010-hands-on-cassandra/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The second tutorial I attended on Tuesday, and the last one of the conference, was <a href="http://www.oscon.com/oscon2010/public/schedule/detail/14283">Hands-on Cassandra</a>.  Actually, I missed the first half of this tutorial, for reasons which I explain in my Tuesday recap post.</p>
<p>I&#8217;ve been told by those that attended the full tutorial that the first half wasn&#8217;t really worth attending.  In fact, when I arrived at the beginning of the second half, I caught the tail end of the presenter demonstrating how he recreated Twitter using Cassandra, something he dubbed Twissandra.  This seems to be the exercise of choice for any distributed system.  In a way, that&#8217;s smart.  Take a highly distributed system everyone is familiar with, explain the challenges faced by such a system, then demonstrate the effectiveness with which the software in question can solve the problem.</p>
<p>In any case, the second half of the tutorial was mostly dedicated to an explanation of how Cassandra distributes its data.  The details and, frankly, the delivery weren&#8217;t that interesting for me, so I didn&#8217;t follow the discussion.  It was too high level to keep my interest.</p>
<p>I still think that Cassandra is deserving of some investigation.  I have a project in mind that it may be perfect for.  At my day job, we have what is essentially a distributed, key-based data store.  We&#8217;ve had to implement all of the data replication functionality.  If Cassandra can alleviate the need to design and implement our own data replication and integrity systems, we can put more effort into the final delivery of the data, instead of its transmission.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-hands-on-cassandra/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Environmental Monitoring with Arduino</title>
		<link>http://sirhc.us/oscon-2010-environmental-monitoring-with-arduino/</link>
		<comments>http://sirhc.us/oscon-2010-environmental-monitoring-with-arduino/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 00:51:32 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Environment]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[hobbies]]></category>
		<category><![CDATA[monitoring]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=494</guid>
		<description><![CDATA[Russell Nelson (Open Source Initiative) For my final session of the day, I&#8217;m in Environmental Monitoring with Arduino and Compatibles. Since I attended the Arduino tutorial on Monday, I thought it would be fun to attend a session on using &#8230; <a href="http://sirhc.us/oscon-2010-environmental-monitoring-with-arduino/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/30375"><em>Russell Nelson (Open Source Initiative)</em></a></p>
<p>For my final session of the day, I&#8217;m in <a href="http://www.oscon.com/oscon2010/public/schedule/detail/12620">Environmental Monitoring with Arduino and Compatibles</a>.  Since I attended the <a href="http://sirhc.us/journal/2010/07/20/oscon-2010-get-started-with-the-arduino/">Arduino tutorial</a> on Monday, I thought it would be fun to attend a session on using them.</p>
<p>The take-away points, presented up front for our convenience:</p>
<ul>
<li>Environmental monitoring is important</li>
<li>Arduino is cheap and easy</li>
<li>Small computers are fun</li>
</ul>
<p>The Arduino is not just the chip and board, but the IDE used to program the board.  It also, as I learned on Monday, has a very shallow learning curve.</p>
<p>Russell works for a company doing water monitoring of the Hudson River.  He&#8217;s using his domain knowledge from his job to explain how one would do something similar on a smaller scale.  The values he describes detecting, and the circuits used to take the measurements, are,</p>
<ul>
<li>Temperature</li>
<li>Turbidity</li>
<li>Salinity &#8211; can&#8217;t measure this directly, but salinity conducts and we can measure resistance</li>
</ul>
<p>Now I just need to figure out what I want to monitor at home.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-environmental-monitoring-with-arduino/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Smalltalk-style Traits</title>
		<link>http://sirhc.us/oscon-2010-smalltalk-style-traits/</link>
		<comments>http://sirhc.us/oscon-2010-smalltalk-style-traits/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 00:07:07 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[inheritance]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[roles]]></category>
		<category><![CDATA[smalltalk]]></category>
		<category><![CDATA[traits]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=492</guid>
		<description><![CDATA[Curtis &#8220;Ovid&#8221; Poe (BBC) After a long break, an apple, a cup of coffee, and a beer, I&#8217;m back in the Perl track. The full title of this session is, Scratching the 40-Year Itch of Inheritance with Smalltalk-style Traits. This &#8230; <a href="http://sirhc.us/oscon-2010-smalltalk-style-traits/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6639">Curtis &#8220;Ovid&#8221; Poe (BBC)</a></em></p>
<p>After a long break, an apple, a cup of coffee, and a beer, I&#8217;m back in the Perl track.</p>
<p>The full title of this session is, <a href="http://www.oscon.com/oscon2010/public/schedule/detail/12529">Scratching the 40-Year Itch of Inheritance with Smalltalk-style Traits</a>.</p>
<p>This is not a tutorial.  How to use <a href="http://en.wikipedia.org/wiki/Trait_(computer_science)">traits</a> is easy, but why to use them is a more complex discussion.</p>
<p>Inheritance is a very complex problem and an easy one to get wrong.  Then people start doing things with <a href="http://en.wikipedia.org/wiki/Multiple_inheritance">multiple inheritance</a> and, even if they&#8217;re not doing something deliberately stupid, they end up with <a href="http://en.wikipedia.org/wiki/Diamond_problem">diamond inheritance</a>.  Not only is this a problem, but it&#8217;s been a problem for a very long time&mdash;40 years, in fact.</p>
<p>Complex systems can lead to deep class hierarchies.  When hierarchies are deep, in particular with a dynamic language like Perl, it becomes difficult to determine where a method came from.  Even when its known where a method comes from, undesired behavior may be inherited.  This becomes worse when multiple inheritance is used.</p>
<p>As systems grow, the problem becomes two-fold:</p>
<ol>
<li>Class responsibility &#8211; larger classes are desired</li>
<li>Class reuse &#8211; smaller classes are desired</li>
</ol>
<p>Inheritance, by itself, cannot solve this problem.  So the solution is to<br />
decouple the sub-problems.</p>
<p>Several solutions have been tried:</p>
<ul>
<li>Interfaces</li>
<li>Delegation</li>
<li>Mixins &#8211; incredibly popular</li>
</ul>
<p>As expected by the name of this session, traits (or roles in the nomenclature of Moose) solve the problem far better than any of the above solutions.  Much of the session involved showing real-world application of roles to clean up code at the BBC.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-smalltalk-style-traits/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Building Applications with the Simple Cloud API</title>
		<link>http://sirhc.us/oscon-2010-building-applications-with-the-simple-cloud-api/</link>
		<comments>http://sirhc.us/oscon-2010-building-applications-with-the-simple-cloud-api/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 22:07:44 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[abstraction]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[libcloud]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[session]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=487</guid>
		<description><![CDATA[Doug Tidwell (IBM) http://www.oscon.com/oscon2010/public/schedule/detail/13976 I finally left the Perl track. I attended Tim Bunce&#8217;s presentation on Devel::NYTProf at OSCON two years ago and, while there have been many enhancements made to module since that time, I expect this year&#8217;s talk &#8230; <a href="http://sirhc.us/oscon-2010-building-applications-with-the-simple-cloud-api/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em><a href="http://www.oscon.com/oscon2010/public/schedule/speaker/2900">Doug Tidwell</a> (IBM)</em></p>
<p><a href="http://www.oscon.com/oscon2010/public/schedule/detail/13976">http://www.oscon.com/oscon2010/public/schedule/detail/13976</a></p>
<p>I finally left the Perl track.  I attended Tim Bunce&#8217;s presentation on <a href="http://www.oscon.com/oscon2010/public/schedule/detail/12641"><tt>Devel::NYTProf</tt></a> at OSCON two years ago and, while there have been many enhancements made to module since that time, I expect this year&#8217;s talk won&#8217;t differ much from the previous one.</p>
<p>This session on <a href="http://simplecloud.org/">Simple Cloud</a> is being presented by IBM&#8217;s Cloud Computing Evangelist.  The drivers behind this product (is it a product?) are the development and promotion of a standard cloud API.  There is some relevancy with my day job, not only because of the possibility of using cloud services, but as a way of getting ideas for the API I develop for our engineers to interact with the batch compute system.</p>
<p>There are several levels of where we can work.  The levels start at the wire, where we have to generate and parse data ourselves.  From there, we have vendor-specific APIs, service-specific APIs, and finally service-neutral APIs.  This last level is where we want to be.</p>
<p>The Simple Cloud API covers three areas: file storage, document storage, and simple queues.  Once thought of in these simplified concepts, there really isn&#8217;t any reason the interface used by a program can&#8217;t be standardized.  A program should no more need to concern itself with the implementation details of an individual cloud provider than it does the details of the file system of the computer on which it runs.</p>
<p>The API uses the Factory and Adapter design patterns, with a configuration file used by the Factory object to determine which Adapter should be created.  These patterns are exactly what I&#8217;ve been looking at for the API I work on at my day job.</p>
<p>A demo of the Simple Cloud API followed.  There wasn&#8217;t much to these demos.  The first showed listing data stored at two different providers.  The second showed queue manipulation.</p>
<p>After the demo, the Apache <a href="http://incubator.apache.org/libcloud/">libcloud</a>, which is getting a good deal of vendor support.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-building-applications-with-the-simple-cloud-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: PostgreSQL Reloaded</title>
		<link>http://sirhc.us/oscon-2010-postgresql-reloaded/</link>
		<comments>http://sirhc.us/oscon-2010-postgresql-reloaded/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 22:05:04 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[failover]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[postgresql]]></category>
		<category><![CDATA[replication]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=467</guid>
		<description><![CDATA[The full title of this session is PostgreSQL Reloaded &#8211; Hot Standby, Streaming Replication &#38; More! It was presented by Chander Ganesan, who, even before the tutorial started, demonstrated his skill as a presenter. Reading his biography, I noted that &#8230; <a href="http://sirhc.us/oscon-2010-postgresql-reloaded/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The full title of this session is <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13347">PostgreSQL Reloaded &#8211; Hot Standby, Streaming Replication &amp; More!</a>  It was presented by <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/45874">Chander Ganesan</a>, who, even before the tutorial started, demonstrated his skill as a presenter.  Reading his biography, I noted that he appears to be a professional trainer, which is a nice sign.  He started out by waiting for a whiteboard to be delivered.  Good!  That means pictures will be drawn and audience interaction may take place.  I really appreciate his dynamic personality and presenting style.  Having gotten little sleep the night before, he was able to keep me awake and focused.</p>
<p>Unlike Monday, I chose tutorials on Tuesday that held some relevance to the work I&#8217;m doing.  At my day job, we have a MySQL database backing a critical production system.  We have spent years fighting with it and dealing with its failures and instability.  I have a bias towards <a href="http://www.postgresql.org/">PostgreSQL</a>, having used it in the past, and finding it a superior database to MySQL.  That, however, is beside the point.  What is pertinent is that I have been considering a complete redesign of the system, using PostgreSQL as the data source, and a tutorial on the built-in standby and replication capabilities coming with the release of PostgreSQL 9.0 is timely.</p>
<p>The slides for this tutorial were distributed to us when we registered.  They are intended to stand on their own, serving as documentation if we later work on implementing the concepts presented here.  That said, the information density of the slides didn&#8217;t at all detract from the presentation.  As a hands-on demonstration, Chander didn&#8217;t project the slides very often and, when he did, only referenced them as he spent time explaining the material.</p>
<p>In order to better understand how PostgreSQL implements hot standby and replication, Chander first gave us an overview of how PostgreSQL manages the data a database.  I&#8217;ll be brief, so this is probably not entirely correct.  For efficiency, data is manipulated in 8 kilobyte pages stored in memory, in what is called the shared buffer pool.  These pages remain in memory until the pool is exhausted, at which point one or ore infrequently used pages will have any changes written to disk and purged from the pool.  This means that while the updates are stored in the pool, there is a (potentially long) window of time in which a crash will cause data loss.  To prevent data loss, all update operations are first written to the write-ahead log (WAL) files.  During a recovery operation, these WAL files can be used to play back any transactions that were lost in the crash.</p>
<p>Having these WAL files means that, from a given point in time, the database can be reconstructed.  It&#8217;s not a stretch to shift the playback of these WAL files into real time on a secondary system.  This automatically creates the possibility of a live replicated database, which can be queried in place of the primary database.</p>
<p>The rest of the tutorial was devoted to demonstrating how to set up and use warm standby databases, hot standby databases, and streaming replication.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-postgresql-reloaded/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Cool Perl 6 Today</title>
		<link>http://sirhc.us/oscon-2010-cool-perl-6-today/</link>
		<comments>http://sirhc.us/oscon-2010-cool-perl-6-today/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 21:18:41 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[perl 6]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=484</guid>
		<description><![CDATA[Patrick Michaud (pmichaud.com) I&#8217;m just back from lunch at Burgerville with Juan and Jonathan. On the way back into the convention center, I ran into Alasdair, who has been attending the hardware hacking sessions. That made me think that I &#8230; <a href="http://sirhc.us/oscon-2010-cool-perl-6-today/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Patrick Michaud (pmichaud.com)</em></p>
<p>I&#8217;m just back from lunch at <a href="http://burgerville.com/">Burgerville</a> with Juan and Jonathan.  On the way back into the convention center, I ran into <a href="http://www.dailyack.com/">Alasdair</a>, who has been attending the hardware hacking sessions.  That made me think that I may want to try to find non-Perl sessions to attend.  After all, I tend to keep up with Perl news, so the sessions are of marginal usefulness.  Unfortunately, nothing on the schedule looked very interesting to me.  I was curious about the session on <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13949">Open Source Tool Chains for Cloud Computing</a> until I read the description.  While it looked cool, it wouldn&#8217;t be useful for me in my work.  The session would go through provisioning, setup, and maintenance of hosts, all of which we already have well-entrenched solutions for in my day job.  So, I ended up back in the Perl track.  My friends in the <a href="http://sandiego.pm.org/">San Diego Perl Mongers</a> group will appreciate that, I think.</p>
<p>Anyway, on to the session.</p>
<p>The name <a href="http://perl6.org/">Perl 6</a> is a language specification, rather than any particular implementation.  All of the references and links off-handedly mentioned in this post are available from the Perl 6 website.</p>
<p>Patrick is the lead developer of Rakudo Perl, which is the most feature complete and up-to-date.</p>
<p>Perl 6 has a language specification and a test suite.  There are still many places in Perl 6 that are not being tested yet.</p>
<p>Rakudo * (Star) is scheduled to be released a week from tomorrow, targeted at being a useful, usable, early adopter distribution.</p>
<p>At this point, Patrick began to enumerate the new language features and how they work in Perl 6, such as variables, loops, interpolation, and so on.  I won&#8217;t go into these here, since there are numerous places on the Web where this has been documented.</p>
<p>About half way through this session, I realized that <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/6635">&#8220;r0ml&#8221;</a> was presenting in another room.  If I&#8217;d noticed that before, I would have attended <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13891">that session</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-cool-perl-6-today/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Perl 5.12</title>
		<link>http://sirhc.us/oscon-2010-perl-5-12/</link>
		<comments>http://sirhc.us/oscon-2010-perl-5-12/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 19:09:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[pumpking]]></category>
		<category><![CDATA[release management]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=481</guid>
		<description><![CDATA[Jesse Vincent (Best Practical) This talk could be titled something along the lines of &#8220;Lessons Learned from Project Management.&#8221; Jesse Vincent is the current Perl 5 pumpking, which for the moment can be thought of as the project janitor. People &#8230; <a href="http://sirhc.us/oscon-2010-perl-5-12/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Jesse Vincent (Best Practical)</em></p>
<p>This talk could be titled something along the lines of &#8220;Lessons Learned from Project Management.&#8221;</p>
<p>Jesse Vincent is the current Perl 5 <a href="http://www.socialtext.net/perl5/index.cgi?pumpking">pumpking</a>, which for the moment can be thought of as the project janitor.</p>
<p>People who say &#8220;Perl is dead&#8221; or that Perl hackers are &#8220;desperate&#8221; are behind the times.</p>
<p>There are a lot of exiting things happening that are not in the Perl core.  Audrey Tang has said that &#8220;CPAN is the language, Perl is the syntax.&#8221;  Like Piers in the <a href="http://sirhc.us/journal/2010/07/21/oscon-2010-new-beginnings-in-perl-5/">previous session</a>, Jesse enumerated a handful of things that make Perl awesome:</p>
<ul>
<li><a href="http://search.cpan.org/dist/Moose/"><tt>Moose</tt></a></li>
<li><a href="http://search.cpan.org/dist/Plack/"><tt>Plack</tt></a></li>
<li><a href="http://search.cpan.org/dist/App-cpanminus/"><tt>cpanm</tt></a> &#8211; makes installing CPAN modules Just Work</li>
<li><a href="http://search.cpan.org/dist/Devel-Declare/"><tt>Devel::Declare</tt></a></li>
<li><a href="http://search.cpan.org/dist/Devel-NYTProf/"><tt>Devel::NYTProf</tt></a></li>
</ul>
<p>While some of the coolest new things happening in the CPAN world, it merely scratches the surface of what is available.</p>
<p>About three months ago, Jesse uploaded <a href="http://search.cpan.org/~jesse/perl-5.12.0/">Perl 5.12</a>.  Amazingly, no one has reported any critical regressions.</p>
<p>Jesse has been assured that <a href="http://www.perlfoundation.org/perl6/index.cgi?rakudo_star">Rakudo *</a> will be out next week, on 29 July.  However, Perl 6 will not replace Perl 5, which has paid Jesse&#8217;s mortgage for many, many years.  Also, thanks to Perl 5.12, Perl 5.10 is no longer &#8220;too new to use.&#8221;</p>
<p>Perl 5.12 marks the latest release in the process of cleaning up the inernals and adding much desired features.  Some of the highlights:</p>
<ul>
<li>Deprecations warn by default</li>
<li><tt>suidperl</tt> is dead</li>
<li><tt>package Foo::Bar 1.0;</tt> &#8211; better version import syntax</li>
<li>Y2038 compliant &#8211; thanks to Schwern</li>
<li>Unicode improvements; upgrade to 5.2</li>
<li>Pluggable keywords</li>
<li>Overridable function lookup</li>
<li>Dtrace support</li>
<li>Deprecated modules &#8211; <tt>Class::ISA</tt>, <tt>Pod::Plainer</tt>, <tt>Shell</tt>, <tt>Switch</tt> (but still on CPAN)</li>
<li>Yadda, yadda, yadda operator</li>
</ul>
<p>Jesse believes the best new thing in Perl 5.12 is the release process, including him as the pumpking.  Twenty years ago, Perl didn&#8217;t use version control.  He recommends learning from this mistake.</p>
<p>It took five years to release Perl 5.10, after burning through two pumpkings.</p>
<p>Before 5.12, maintenance releases contained all sorts of bug fixes and updates, but could not break binary compatibility.  Doing so was a huge task, was very difficult, and, contrary to its name, is unmaintainable.  Even without all this work, the pumpking&#8217;s job is a lot of work.  Jesse really doesn&#8217;t want to burn out after a release of Perl.</p>
<p>Traditionally, the process of turning someone with the necessary skills to be the pumpking involves preventing them from using those skills and replacing them with management skills.  It&#8217;s a shame.</p>
<p>The system is broken and Perl 5 isn&#8217;t going anywhere, so how can it be fixed?  We can reinvent it, but that&#8217;s already being done by Perl 6.  Alternatively, we can refactor it.  There is no reason many of the skills and duties required of the pumpking can&#8217;t be delegated out to people with those skills.  In effect, the most important skill and duty for the pumpking is project management.</p>
<p>The 5.9 releases, leading up to 5.10, were haphazard.  The 5.11 releases, leading up to 5.12, have settled into a new release every month on the twentieth, with a couple of exceptions.  The 5.13 series has followed suit.  One of the reasons this was possible was documenting the entire release process.</p>
<p>Releases in the 5.12 series are on a fixed schedule, every three months.  A release schedule has been created for 5.14, too.</p>
<p>One of the things I&#8217;ve learned working in an enterprise and my observations of the Fedora Project is that good project management is vital.  Jesse Vincent is exactly what Perl needed and he continues to demonstrate that, with regular, high quality releases of Perl.  What&#8217;s more, he is a good spokesman for the project, being able to come to OSCON and give a session on all of this detail in a cojent and interesting format.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-perl-5-12/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: New Beginnings in Perl 5</title>
		<link>http://sirhc.us/oscon-2010-new-beginnings-in-perl-5/</link>
		<comments>http://sirhc.us/oscon-2010-new-beginnings-in-perl-5/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 18:12:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[frustration]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[session]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=477</guid>
		<description><![CDATA[Piers Cawley (BBC) After reviewing today&#8217;s session schedule, I quickly came to the conclusion that I will spend my entire day sitting in the room &#8220;Portland 256.&#8221; This is, apparently, where the Perl track is located. Paul Fenwick introduced Piers &#8230; <a href="http://sirhc.us/oscon-2010-new-beginnings-in-perl-5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><em>Piers Cawley (BBC)</em></p>
<p>After reviewing today&#8217;s session schedule, I quickly came to the conclusion that I will spend my entire day sitting in the room &#8220;Portland 256.&#8221;  This is, apparently, where the Perl track is located.</p>
<p><a href="http://www.twitter.com/pjf">Paul Fenwick</a> introduced Piers in song, to the tune of <em>Gilligan&#8217;s Island</em>.</p>
<p>Piers switched from Perl to Ruby a while back and swore that he wouldn&#8217;t return to Perl until 6.  Facetiously, the reason he switched to Ruby was the handsome community associated with it and he reason he switched back to Perl was the amazingly supportive community associted with it.  He began with a point about programming style.  We think of code as describing <em>what</em> we are doing, but in reality the majority of our code actually describes <em>how</em> we are doing it.  This infrastructure code is noise.</p>
<p>More seriously, he absolutely hated unrolling the <tt>@_</tt> variable in every function.  In such a high level language like Perl, why must we pop arguments off the stack in the same manner we would in an assembly language?  This leads to long subroutines, every single one containing anti-patterns designed to implement the language infrastructure, instead of the language doing the work for us.</p>
<p><a href="http://search.cpan.org/dist/Moose/"><tt>Moose</tt></a> does a lot to improve writing classes, using a more declarative syntax.  However, even within Moose methods we need to write the infrastructure code.  The <a href="http://search.cpan.org/dist/MooseX-Declare/"><tt>MooseX::Declare</tt></a> module solves this problem, giving method syntax a more declarative style.  By moving the infrastructure code out of sight, we can better focus on <em>what</em> we are trying to do, rather than <em>how</em> we are doing it.</p>
<p>Piers proceeded to list the modules that &#8220;rock&#8221; and brought him back to Perl:</p>
<ul>
<li><a href="http://search.cpan.org/dist/Plack/"><tt>Plack</tt></a></li>
<li><a href="http://search.cpan.org/dist/Devel-NYTProf/"><tt>Devel::NYTProf</tt></a></li>
<li><a href="http://search.cpan.org/dist/Moose/"><tt>Moose</tt></a></li>
</ul>
<p>Perl&#8217;s object-orientation absolutely &#8220;sucks.&#8221;  However, this turns out to be a good thing.  It allows very clever people to create modules that extend the semantics of the language.  In a language like Ruby, which has a good object-orientation built-in, it&#8217;s essentially stuck.  If, in the future better ideas of object-orientation are developed, they can be implemented in Perl far more easily than in Ruby.  An interesting point: sometimes when the tool sucks, things are better.  People develop layers of tools that enhance and extend the original.</p>
<p>It also helps that the Perl release schedule has accelerated.</p>
<p>Piers continued with a high-level, hand-waving explanation of how <tt>MooseX::Declare</tt> works.  While not informative, it was entertaining.  Including a video of Matt Trout attempting to hypnotize the room.</p>
<p>Piers ended by thanking the Perl community and expressing how good it feels to be back into it and developing in Perl again.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-new-beginnings-in-perl-5/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Wednesday Morning Keynotes</title>
		<link>http://sirhc.us/oscon-2010-wednesday-morning-keynotes/</link>
		<comments>http://sirhc.us/oscon-2010-wednesday-morning-keynotes/#comments</comments>
		<pubDate>Wed, 21 Jul 2010 17:09:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[government]]></category>
		<category><![CDATA[keynotes]]></category>
		<category><![CDATA[meego]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=473</guid>
		<description><![CDATA[I haven&#8217;t had a chance to compose my Tuesday blog posts.  Hopefully, I&#8217;ll find time throughout the day to work on them.  All that really means is that my posts will be chronologically out of order. It&#8217;s Wednesday morning at &#8230; <a href="http://sirhc.us/oscon-2010-wednesday-morning-keynotes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t had a chance to compose my Tuesday blog posts.  Hopefully, I&#8217;ll find time throughout the day to work on them.  All that really means is that my posts will be chronologically out of order.</p>
<p>It&#8217;s Wednesday morning at the <a href="http://www.oscon.com/">O&#8217;Reilly Open Source Convention</a>, which means it&#8217;s time for the introductory keynotes.  The first thing I&#8217;ve noticed this morning is how crowded it is.  Certainly more so than when I was last here in 2008.  I don&#8217;t know if that&#8217;s just because we aren&#8217;t being given breakfast in the expo hall this year, so everyone is crowded into the area outside the ballroom.  Another thing I&#8217;ve noticed is the gender makeup of the attendees.  While still overwhelmingly male, I have noticed more women in attendance this year.  Diversity is good.</p>
<p>Without any further ado, we&#8217;re getting started.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/14614">Welcome</a></h3>
<p><em>Allison Randal, Edd Dumbill (O&#8217;Reilly Media Inc.)</em></p>
<p>This year&#8217;s co-chairs welcomed us and talked a bit about OSCON this year.  Obviously, there wasn&#8217;t a lot of content, but they did mention the Android Hands-on event being sponsored by Google tonight.  I did register for that, since it sounds like it will be fun.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/14647">Keynote</a></h3>
<p><em>Tim O&#8217;Reilly (O&#8217;Reilly Media Inc.)</em></p>
<p>First up is the namesake of the convention.  Every year he presents his vision, not just for the conference, but for the future he wants to see.  He has been steering his company away from being just a book publisher or a content producer, but a company trying to make the world a better place.  He urges the Open Source community to think about the cloud.  Don&#8217;t just think about Linux, or whatever project, but about the bigger picture and where we&#8217;re going as a society.</p>
<p>He is fascinated by the ability of technology to reinvent government, a concept he&#8217;s dubbed &#8220;Gov 2.0.&#8221;  We fall into the cycle of thinking of government as a vending machine, something we simply get things out of, and get frustrated when we don&#8217;t.  Over the last few years, he has been talking about government as a platform.</p>
<p>We shouldn&#8217;t think just about selling to the enterprise, but about building a better world.  We all benefit when that happens.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15615">Coding the Next Generation of American History</a></h3>
<p><em>Jennifer Pahlka (Code for America)</em></p>
<p>The government doesn&#8217;t have to be this obscure, opaque thing we get stuff from.  It can be a platform for us to work together.  Currently, the majority of the municipal workforce is over 40, and a significant percentage will retire soon.  This creates a huge age gap, which leads to a technology gap.</p>
<p>In Oakland, California, the city workers can&#8217;t search city council meeting notes online.  The method of entering the data in the computer is to scan the written notes, which are impossible for them to index.</p>
<p><a href="http://codeforamerica.org/">Code for America</a> was created to encourage younger, technologically-savvy individuals to apply their talents to government.  It&#8217;s designed to create technology to open up government, to make it more accessible to the citizens.  It&#8217;s a little like the iPhone or Android ecosystems.  Government provides the platform, essentially the data.  We, the citizens, build the apps.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15655">Keynote</a></h3>
<p><em>Bryan Sivak (Government of the District of Columbia</em></p>
<p>Those in the government of DC are big fans of Open Source, running Linux among other projects.  They&#8217;ve long talked about being committed to Open Source, partly to save the taxpayers&#8217; money.  Unfortunately, much of this commitment is all talk.</p>
<p>For any project used in DC, forms are required to be filled out, justifying the choice and the expense.  On this form is the question, &#8220;What Open Source projects were considered?&#8221;  This is often left blank and still slips through without comment.</p>
<p>Proprietary solutions tend to come with copious documentation and an implementation plan.  Open Source projects are more open-ended, which requires people within the government to have that vision and that creativity.  This goes back to the age and technology gaps mentioned previously.</p>
<p>It&#8217;s good that these challenges have been identified and are being addressed.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/15553">Got MeeGo?</a></h3>
<p><em>Dirk Hohndel (Intel Corporation)</em></p>
<p><a href="http://en.wikipedia.org/wiki/MeeGo">MeeGo</a> is the result of the unification of <a href="http://en.wikipedia.org/wiki/Moblin">Moblin</a> and <a href="http://en.wikipedia.org/wiki/Maemo">Maemo</a>.  It targets netbooks, handset, tablets, and just about anything designed to be more mobile than a traditional notebook.  It offers a full client Linux Open Source stack, from the kernel all the way up to the user interface, including the flexibility to support proprietary devices.</p>
<p>Dirk went over the primary goals and philosophy of the project (to be completely open), then went on to describe the organization of MeeGo at a high level.  This included both the technical building blocks and the relationship with upstream projects.</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/13426">Is Your Data Free?</a></h3>
<p><em>Stormy Peters (GNOME Foundation)</em></p>
<p>Many of us use completely Free software on our computers, some even insist on it.  However, when it comes to online services, we&#8217;ve gotten lazy.</p>
<p>Free software was driven by two types of people.  There were those who advocated that all software should be Free, that it should be available to all people, regardless of their means.  There were others who used and advocated Free software because they wanted something that didn&#8217;t crash.  It&#8217;s this latter It Just Works motivation that Stormy believes has caused us to get lazy about demanding Freedom from our Web services.</p>
<p>She asks how many of us control our own email or have alternative ways to access it if something should happen to the primary service.  What if Twitter or Facebook decides to delete your account?  What happens to your data?  She then went through a few examples of alternative services that have open data policies, such as <a href="http://identi.ca/">Identica</a> and <a href="http://live.gnome.org/Snowy">Tomboy Online</a> (it&#8217;s funny, I don&#8217;t use Tomboy because I won&#8217;t use Mono).</p>
<p>How many of us have read the agreements when signing up for Web services?  Do we know who owns our data?  Can we back it up ourselves?  Who owns it, both while we&#8217;re using the service and if or when we decide to delete our data?</p>
<h3><a href="http://www.oscon.com/oscon2010/public/schedule/detail/14894">Keynote</a></h3>
<p><em>Marten Mickos (Eucalyptus Systems)</em></p>
<p>The shift to the cloud is causing computing to scale, both up and out, far faster and far larger than any of the previous trends (mainframes, minicomputers, or client/server).</p>
<p>Many of the Open Source licenses were designed in an environment where everyone runs software on their own computers, software that requires distribution to be useful.  Today we&#8217;re seeing more services being offered by companies running software within their own grids.  Users never run the software themselves but rather send data in and get data out.</p>
<p><a href="http://en.wikipedia.org/wiki/Eucalyptus_(computing)">Eucalyptus</a> is designed to be a highly scalable platform for on-premise use.  As someone who supports many thousands of hosts in many data centers, this product has intrigued me for a while.  Unfortunately, I&#8217;ve never taken the time to investigate it.  It&#8217;s nice to see that those behind the company are committed to Open Source, using the split model.  Users are free to download and use the software, while the company sells a supported version to enterprise.</p>
<hr />
<p>The keynote sessions at OSCON tend to drag on for a while, making it difficult to pay attention the whole time.  But they are finally over for now.  We have a break before the first session of the day.  I&#8217;m going to try to get some work done on yesterday&#8217;s posts before starting on my long day of Perl sessions.</p>
<p>I&#8217;m really impressed with the wireless network today.  It had its problems during the tutorials on Monday and Tuesday.  Traditionally, the network becomes almost unusable on Wednesday morning.  This year, however, I have been able to connect to the Internet and write this blog post without any frustration.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-wednesday-morning-keynotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Monday</title>
		<link>http://sirhc.us/oscon-2010-monday/</link>
		<comments>http://sirhc.us/oscon-2010-monday/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 08:57:34 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[monday]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Portland]]></category>
		<category><![CDATA[Rogue]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=460</guid>
		<description><![CDATA[I awoke early on this first day of theO&#8217;Reilly Open Source Convention so I could have breakfast with Juan at his hotel. At first I thought fresh-made omelettes, bacon, and sausage were simply a better choice than the fruit and &#8230; <a href="http://sirhc.us/oscon-2010-monday/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="float: left;"><a title="Beer Samples at Rogue by cdgrau, on Flickr" href="http://www.flickr.com/photos/cdgrau/4813736770/"><img style="padding-right: 1em;" src="http://farm5.static.flickr.com/4121/4813736770_c943a105ca_m.jpg" alt="Beer Samples at Rogue" width="240" height="179" /></a></span> I awoke early on this first day of the<a href="http://www.oscon.com/">O&#8217;Reilly Open Source Convention</a> so I could have breakfast with Juan at his hotel.  At first I thought fresh-made omelettes, bacon, and sausage were simply a better choice than the fruit and pastries offered at the <a href="http://www.oregoncc.org/">Oregon Convention Center</a>.  As it turns out, no breakfast was offered at all.  After breakfast, a short ride on the <a href="http://trimet.org/max/">MAX</a> delivered us to OSCON.  I&#8217;ve already written about the tutorials, so I won&#8217;t mention them here.</p>
<p>For lunch, I met up with some coworkers and some friends to head across the river for lunch at <a href="http://www.oldtownpizza.com/">Old Town Pizza</a>.  I had a small sausage and mushroom pizza, and washed that down with a pale ale.</p>
<p>After the Arduino tutorial, having sat down for much of the day, I grew restless.  I really wanted to take a walk.  More importantly, I really wanted to make my way over to <a href="http://www.rogue.com/">Rogue Ales Public House</a> for some beer.  So I called Jonathan and we made our way over there.  We each started with a four beer sampler.</p>
<p>I started with the <a href="http://beeradvocate.com/beer/profile/132/59192">Chatoe Oregasmic</a>, finding it to be a pleasant, light pale ale with moderate hoppiness.  Upon tasting it, one of my coworkers commented that it was what he expected the pale ale, which he had ordered to be.</p>
<p>Second in line was the <a href="http://beeradvocate.com/beer/profile/132/56447">Double Mocha Porter</a>.  It had a faint mocha aroma, but very little of this made its way to my pallette.  I could detect a hint of smokiness, if I concentrated on it.  For something advertised as a double mocha, I was disappointed.</p>
<p>Having enjoyed Rogue&#8217;s Dead Guy Ale in the past, I chose for my third beer the <a href="http://beeradvocate.com/beer/profile/132/41043">Double Dead Guy Ale</a>.  I don&#8217;t think I was fair to this beer.  The name made me think of Stone&#8217;s Double Bastard and the Double Dead Guy Ale is nothing like that.  Even so, I found it smooth with a pleasant maltiness and light hop flavors.</p>
<p>Saving what I expected to be the best for last, I finished with the <a href="http://beeradvocate.com/beer/profile/132/57522">Brutal IPA</a> While nicely hopped, I was left disappointed after building my expectations on what I consider to be its undeserved moniker.  Once I got over that, I still found it to be a perfectly enjoyabl beer.  It had mild malty notes and, like the other Rogue ales I sampled, it too was smooth.  I found it to be an all around decent IPA.  Since Juan wasn&#8217;t able to join us for dinner, I bought a bottle of the Brutal IPA to share with him later.</p>
<p>After I had finished my samples, it was the decision of those in my party that I was criminally without beer and that, to pay penance, I was to order the <a href="http://beeradvocate.com/beer/profile/132/34556">Issaquah Menage A Frog</a>.  When the bartender told me it was only available in a 12 ounce glass, I suspected that an imperial style ale.  The aroma and taste soon confirmed this.  Coming in at 9% ABV, it was not as strong as some of the ales I occasionally drink back home in San Diego, but it went very well with the beer and cheese stew I had for dinner.</p>
<p>And now it&#8217;s late, just a few minutes until two o&#8217;clock in the morning.  I should have closed my computer and gone to bed hours ago, but I refused to do so knowing that my first day of OSCON blog entries were unfinished.  Hopefully, I will have more food and beer to write about tomorrow.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-monday/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Get Started with the Arduino</title>
		<link>http://sirhc.us/oscon-2010-get-started-with-the-arduino/</link>
		<comments>http://sirhc.us/oscon-2010-get-started-with-the-arduino/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 08:09:56 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[afternoon]]></category>
		<category><![CDATA[arduino]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[monday]]></category>
		<category><![CDATA[open]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=445</guid>
		<description><![CDATA[The second tutorial I attended at OSCON on Monday was one I had regrettably skipped when I was last here in 2008: Get Started with the Arduino.  After purchasing my Getting Started with Arduino Kit for $69.95, I tore it &#8230; <a href="http://sirhc.us/oscon-2010-get-started-with-the-arduino/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><span style="float: left;"><a title="Arduino and Breadboard by cdgrau, on Flickr" href="http://www.flickr.com/photos/cdgrau/4811109629/"><img style="padding-right: 1em;" src="http://farm5.static.flickr.com/4095/4811109629_a5efed6c86_m.jpg" alt="Arduino and Breadboard" width="240" height="179" /></a></span>The second tutorial I attended at OSCON on Monday was one I had regrettably skipped when I was last here in 2008: <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13843">Get Started with the Arduino</a>.  After purchasing my <a href="http://www.makershed.com/ProductDetails.asp?ProductCode=MSGSA">Getting Started with Arduino Kit</a> for $69.95, I tore it open like a kid in a toy store.  Inside the kit were the <a href="http://arduino.cc/">Arduino</a> board itself, some jumper wires, a handful of components, including LED bulbs and resistors, and a USB cable to allow for programming the notebook computers everyone in attendance brought with them.</p>
<p>In the beginning, I was shamed.  While I tried and failed to follow the <a href="http://www.arduino.cc/playground/Learning/Linux">Linux installation instructions</a>, my coworker, Debbie, was able to plug my Arduino board into her Microsoft Windows notebook and get the first example running.  When the <a href="http://www.arduino.cc/playground/Linux/Udev">udev tip</a> didn&#8217;t work, things were looking bleak for my attempt to control open hardware with an open operating system.  Finally, a trip to Google landed me right back on the Arduno wiki at the <a href="http://www.arduino.cc/playground/Linux/Fedora">installation instructions for Fedora</a>.  Finally, I could upload code to my Arduino board.  After getting the initial example to work, I modified it to change the pattern of the blinking on-board LED bulb:</p>
<pre>int ledPin = 13;

void setup() {
    pinMode(ledPin, OUTPUT);
}

void loop() {
    digitalWrite(ledPin, HIGH); delay(300);
    digitalWrite(ledPin, LOW);  delay(300);
    digitalWrite(ledPin, HIGH); delay(300);
    digitalWrite(ledPin, LOW);  delay(300);
    digitalWrite(ledPin, HIGH); delay(1000);
    digitalWrite(ledPin, LOW);  delay(1000);
}</pre>
<p>While we were playing with our new toys, we were treated to the history of the Arduino project, some other open hardware projects, and some of the things people have done with them.  Unfortunately, I was too busy playing with my new toy to take notes on these things, so the history lesson, <a href="http://en.wikipedia.org/wiki/Arduino">by way of Wikipedia</a>, is left as an exercise for the reader.</p>
<p>The editor embedded in the Arduino IDE leaves a lot to be desired.  It&#8217;s like Microsoft Notepad with syntax coloring.  My coworker found a setting that forces the IDE to use an external editor.  Basically, all it does is to make the editing window read-only.  Files edited outside of the IDE are re-read when the code is compiled.  In short order, I was able to find a <a href="http://www.vim.org/scripts/script.php?script_id=2654">Vim syntax file</a> for Arduino code files.</p>
<p>After the break, we were introduced to using the Arduino board in combination with a <a href="http://en.wikipedia.org/wiki/Breadboard">breadboard</a>, which allows for the creation of more complex circuits.  I&#8217;m excited, because I still have the breadboard, components, and multi-meter I bought in college for a computer engineering class.  I&#8217;ve been waiting all these years to finally have an excuse to dig them out of the closet and put them to use.  The Arduino will be a fun learning tool when my daughter is older, too.</p>
<p>To commence our unstructured time, which would last until the end of the tutorial (and the day), we were shown a simple circuit to wire up between the Arduino board and the breadboard.  Using a copy of the first blinking code, we could acheive the same effect of blinking the external LED simply by modifying which pin was referenced.  I took this a step further and made my LED bulb pulse like the light on a suspended MacBook.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/DCVIPQjBC-o&amp;hl=en&amp;fs=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/DCVIPQjBC-o&amp;hl=en&amp;fs=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>I&#8217;m glad I decided to attend the Arduino tutorial this year.  I&#8217;ve just picked up yet another hobby I don&#8217;t have time for.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-get-started-with-the-arduino/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Introduction to 3D Animation with Blender</title>
		<link>http://sirhc.us/oscon-2010-introduction-to-3d-animation-with-blender/</link>
		<comments>http://sirhc.us/oscon-2010-introduction-to-3d-animation-with-blender/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 06:45:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[blender]]></category>
		<category><![CDATA[monday]]></category>
		<category><![CDATA[morning]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[rendering]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=436</guid>
		<description><![CDATA[The first tutorial I chose to attend this year at OSCON was ﻿﻿﻿Introduction to 3D Animation with Blender.  It was something I wanted to attend for fun instead of for work.  The instructor was Matthew Momjian, a 17 year old &#8230; <a href="http://sirhc.us/oscon-2010-introduction-to-3d-animation-with-blender/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The first tutorial I chose to attend this year at OSCON was <a href="http://www.oscon.com/oscon2010/public/schedule/detail/13546">﻿﻿﻿Introduction to 3D Animation with Blender</a>.  It was something I wanted to attend for fun instead of for work.  The instructor was <a href="http://www.oscon.com/oscon2010/public/schedule/speaker/28373">Matthew Momjian</a>, a 17 year old high school student who has been using Blender for four years.  His experience with the software showed, too.</p>
<p>The version of <a href="http://www.blender.org/">Blender</a> available in the Fedora 13 package repository is 2.49b, but the tutorial focused on the beta version of 2.5, which has a redesigned user interface and new and improved features.  A Linux version was available on the internal cache website offered by OSCON, but it was 32 bit.  I ended up downloading a copy from the Blender website (the conference wifi doesn&#8217;t start to get really bad until Wednesday).  Unfortunately, Blender proved unstable and would frequently crash with a segmentation fault.  Matthew had provided files to serve as starting points for each section of the tutorial, so it was relatively easy to follow along, even if I didn&#8217;t complete the previous section.</p>
<p>Matthew walked us through generating a simple animation of a flying saucer approaching a planet and hitting it with a beam of light.  We started with simple shapes, two spheres, one flattened, for the saucer, a cone for the beam of light, and another sphere for the planet.  From there we learned how to apply surfaces and textures, manipulate light sources, and perform a simple animation.</p>
<p>All in all, I think the tutorial was worthwhile.  If I had launched Blender without it, I would be lost.  I&#8217;m still lost, but at least I have some semblance of an idea about how it works.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-introduction-to-3d-animation-with-blender/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2010: Travel Day</title>
		<link>http://sirhc.us/oscon-2010-travel-day/</link>
		<comments>http://sirhc.us/oscon-2010-travel-day/#comments</comments>
		<pubDate>Mon, 19 Jul 2010 08:23:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[Oregon]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon2010]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=427</guid>
		<description><![CDATA[It&#8217;s late Sunday night.  Actually, it&#8217;s early Monday morning.  I&#8217;m in a hotel room in Portland, Oregon, for the O&#8217;Reilly Open Source Convention (OSCON).  For the weeks leading up to this trip, I&#8217;ve felt some trepedation.  This is the first &#8230; <a href="http://sirhc.us/oscon-2010-travel-day/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s late Sunday night.  Actually, it&#8217;s early Monday morning.  I&#8217;m in a hotel room in Portland, Oregon, for the <a href="http://oscon.com/">O&#8217;Reilly Open Source Convention</a> (OSCON).  For the weeks leading up to this trip, I&#8217;ve felt some trepedation.  This is the first time I&#8217;ve been away from my daughter for more than a couple of days.  Now that I&#8217;m here, though, I&#8217;m beginning to enjoy myself.</p>
<p>At the beginning of the trip, I ran into a coworker, Juan, at the airport in San Diego, who was on his way to OSCON, too.  We weren&#8217;t able to sit together on the flight, but that worked out in the end.  A man was traveling with his son of around five years.  The son had the seat next to mine, while the father was several rows back.  I offered to trade seats with the father, so he could sit with his son.  One of the flight attendants bought me a beer for my trouble.  On top of all that, the we arrived in Portland earlier than expected.</p>
<p>After checking into our respective hotels, we swung by the <a href="http://www.oregoncc.org/">Oregon Convention Center</a> to register for OSCON and pick up our badges and associated crap.  Actually, a mug was included in the bag o&#8217; stuff, which I can actually use.  Plus, the bag can be kept in the trunk of my car for use at farmers markets.</p>
<p>Finally, it was time for dinner.  Juan and I met up with a friend of mine from the <a href="http://sandiego.pm.org/">San Diego Perl Mongers</a> and hopped on the <a href="http://trimet.org/max/">MAX</a> to head downtown.  After wandering around aimlessly for a bit, I searched for <a href="http://www.kellsirish.com/portland/">Kells Irish Restaurant &amp; Pub</a> on my phone and we found it in short order, taking a seat out back in their new beer garden.  I washed a corned beef and turkey sandwich down with three pints of <a href="http://www.ratebeer.com/beer/mt-hood-ice-axe-ipa/10483/5328/">Mt. Hood Ice Axe IPA</a> and one pint of <a href="http://www.ratebeer.com/beer/kilkenny/4788/">Kilkenny Irish Cream Ale</a>.  Shortly after we finished our food, we were joined by two more coworkers, who ordered some food of their own.  We spent some time doing what one does in an Irish pub, namely drinking and talking, then we made a failed attempt to find coffee.</p>
<p>That brings an end to OSCON travel day.  Tomorrow morning I will head to the convention center for breakfast and will hopefully run into more people I know (or will meet new friends).  I have two tutorials scheduled for tomorrow: <a name="session13546" href="http://www.oscon.com/oscon2010/public/schedule/detail/13546">Introduction to 3D Animation with  Blender</a> and <a name="session13843" href="http://www.oscon.com/oscon2010/public/schedule/detail/13843">Get Started with the Arduino &#8211; A  Hands-On Introductory Workshop</a>.<a name="session13546" href="http://www.oscon.com/oscon2010/public/schedule/detail/13546"></a> I know these tutorials don&#8217;t appear obviously relevent to my job, but I&#8217;m looking at them as useful for relaxing and enriching.  One of the reasons I like to attend OSCON is because I return to work refreshed and with a state of mind more prone to imagining creative solutions.  So, tutorials outside of my immediate area of expertise are exactly what I need when I come here.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2010-travel-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Wrap Up</title>
		<link>http://sirhc.us/oscon-2008-wrap-up/</link>
		<comments>http://sirhc.us/oscon-2008-wrap-up/#comments</comments>
		<pubDate>Mon, 04 Aug 2008 06:37:13 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=280</guid>
		<description><![CDATA[My third O&#8217;Reilly Open Source Conference has come and gone. Sure, it ended over a week ago, but this is the first moment I&#8217;ve had a chance to sit down to write this. Last year, I was able to spend &#8230; <a href="http://sirhc.us/oscon-2008-wrap-up/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My third O&#8217;Reilly Open Source Conference has come and gone.  Sure, it ended over a week ago, but this is the first moment I&#8217;ve had a chance to sit down to write this.  Last year, I was able to spend a few hours with the free wifi at the Portland airport, but this year my flight was scheduled before 7:00 AM, so I was left with little time to write.  As I have the past two years, I had a great time.  It was good to see <a href="http://www.dailyack.com/">Al</a>, <a href="http://www.canspice.org/">Brad</a>, and <a href="http://kevin.scaldeferri.com/blog/">Kevin</a> again.  This year, <a href="http://optimist.geekisp.com/samwise">Sam</a> and Jonathan joined us as well.  While the #oscon IRC channel has surely been vacated by now, I hope see the channel denizens again on Freenode.</p>
<p><a href="http://farm4.static.flickr.com/3068/2702925886_7f2636688c.jpg"><img src="http://farm4.static.flickr.com/3068/2702925886_7f2636688c.jpg" style="float: none;" /></a></p>
<p>About half way through the week I was accused of being a prolific blogger.  Just how prolific, I wondered.  So I went through the list of all of my posts prefixed with &#8220;OSCON 2008,&#8221; including this one.  As it turns out, I wrote a grand total of 17,270 words.  The post for Damian Conway&#8217;s <a href="http://sirhc.us/journal/2008/07/22/oscon-2008-perl-worst-practices/"><i>Perl Worst Practices</i></a> has the dubious distinction of containing the most words, at a scale-tipping 1,209.  Other posts I made during the conference, but not directly related to any sessions totaled 1,608 additional words.  Prolific?  Perhaps.</p>
<p>My primary reason for writing so much about the sessions is for my own reference.  These posts allow me to go back and remind myself of what I did and what I learned.  I just happen to post my notes publicly, because I hope they may be useful or informative for others.  In particular, anyone who couldn&#8217;t join me at OSCON.  Naturally, I was a bit curious to know if anyone was actually reading my articles.  So I checked.</p>
<p><a href="http://sirhc.us/images/blog/oscon2008_site_traffic.png"><img src="http://sirhc.us/images/blog/oscon2008_site_traffic.png" style="float: none;" /></a></p>
<p>I typically receive about four visits per day.  Google&#8217;s Analytics service uses JavaScript to collect data, so I&#8217;m fairly comfortable declaring that my visitors are probably real people using real Web browsers, rather than search engines or even feed readers.  The regularity of visits is curious, though.  I&#8217;ll have to investigate my traffic a bit more closely.  Visits to my site began to rise dramatically on the first day of OSCON, peaking mid-week when the main conference got started.  Hopefully, people are enjoying my writings, because I enjoy doing it.  I&#8217;ve tagged all of my 2008 OSCON posts with the <a href="http://sirhc.us/journal/tag/oscon08/">oscon08</a> tag, which will make it easy to refer to them later.</p>
<p>Thinking back over what I&#8217;ve written, I&#8217;m not completely pleased with the finished product.  I don&#8217;t think attempting to post entries so immediately after each session is the best approach.  In the end, I don&#8217;t believe I&#8217;ve done the topic or the speakers justice.  Next time, I may simply take notes in preparation for a proper article after the fact.  The Tuesday night keynotes, in particular, would have benefited from this treatment.</p>
<p>I&#8217;ve been a fan of <a href="http://en.wikipedia.org/wiki/Damian_Conway">Damian Conway</a> since I first attended one of his talks at a <a href="http://sandiego.pm.org/">San Diego Perl Mongers</a> meeting in late 2005.  Since then, I&#8217;ve been fortunate enough to see him speak at two OSCONs as well as attending his Perl training at my place of employment.  There must be something about Australians, because one of the best presenters at OSCON this year was <a href="http://use.perl.org/~pjf/">Paul Fenwick</a>, also from Down Under.  I highly recommend them both.  Entertaining and educational, a far too uncommon combination.</p>
<p>This year I found that I wasn&#8217;t as excited about OSCON as I have been in the past.  It&#8217;s been more than just this past week, too.  A lot of things that once brought me joy have left me feeling empty.  I didn&#8217;t know why, and assumed that I was simply too busy, trying to juggle too many balls again.  I was wrong, though.</p>
<p>Near the end of the <a href="http://sirhc.us/journal/2008/07/22/oscon-2008-perl-worst-practices/"><i>Perl Worst Practices</i></a> tutorial, Dr. Conway was asked how he became so proficient at what he does.  In response he asked who in the room practiced martial arts.  No one in front of me raised their hand, but I suspect at least one person behind me, in addition to myself, raised their hand.  Disappointed, he cycled through a couple other sports (cycling and tennis, I think) until he received a reasonable response.  The point, of course, was that, like these sports, programming requires passion and should be practiced every day.</p>
<p>That&#8217;s when it hit me.  I don&#8217;t write code every day anymore.  I&#8217;ve been writing code as long as I can remember.  My first <a href="http://en.wikipedia.org/wiki/Hello_world_program">Hello World</a> was written in BASIC at the tender age of four.  Lately, I haven&#8217;t spent any time at all writing code.  I&#8217;ve been waking up early, working long hours, going to bed early, and spending what free time I have left with my pregnant wife.  That has to change.  So now I&#8217;m back to staying up late, doing more work from home, and stealing moments to write code; even if it&#8217;s just a few lines.  I&#8217;m also working on a talk I plan on presenting to my coworkers and would also like to give at <a href="http://www.socallinuxexpo.org/scale7x/">SCALE 7x</a> next year.</p>
<p>Conferences are not always about the tutorials or the sessions.  Sure, they offer plenty of opportunities to learn something new, but that&#8217;s almost a complement to the main event.  It&#8217;s about networking with our peers.  Most importantly, it&#8217;s about revitalization.  My annual pilgrimage to Portland replenishes my spirit.  I return refreshed and full of creative energy.  The trick is maintaining the momentum.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-wrap-up/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O&#8217;Reilly, the New Gartner</title>
		<link>http://sirhc.us/oreilly-the-new-gartner/</link>
		<comments>http://sirhc.us/oreilly-the-new-gartner/#comments</comments>
		<pubDate>Fri, 01 Aug 2008 21:54:43 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Musings]]></category>
		<category><![CDATA[Gartner]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[O'Reilly]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=308</guid>
		<description><![CDATA[While hanging around the O&#8217;Reilly booth during the Open Source Conference last week, I picked up a coupon for 30% off the cost of Open Source in the Enterprise. I thought, great, maybe I&#8217;ll shell out a few bucks to &#8230; <a href="http://sirhc.us/oreilly-the-new-gartner/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>While hanging around the O&#8217;Reilly booth during the <a href="http://www.conferences.oreilly.com/oscon/">Open Source Conference</a> last week, I picked up a coupon for 30% off the cost of <a href="http://radar.oreilly.com/research/os-enterprise-report.html">Open Source in the Enterprise</a>.  I thought, great, maybe I&#8217;ll shell out a few bucks to see what this is all about.  I didn&#8217;t see that $399 price tag on a PDF download coming.  Not only that, but apparently one can subscribe to <i><a href="http://radar.oreilly.com/r2/">Release 2.0</a></i> and receive a whole six issues for the low price of $495.</p>
<p>I suppose O&#8217;Reilly is targeting the same market as <a href="http://www.gartner.com/">Gartner</a>.  Companies willing to spend what, to an individual, is a lot of money to have experts tell them what to think.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oreilly-the-new-gartner/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: The Expo Floor</title>
		<link>http://sirhc.us/oscon-2008-the-expo-floor/</link>
		<comments>http://sirhc.us/oscon-2008-the-expo-floor/#comments</comments>
		<pubDate>Sun, 27 Jul 2008 05:29:45 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=225</guid>
		<description><![CDATA[As with previous years, Wednesday and Thursday were highlighted with occasional trips to the expo hall. Not necessarily because we had any real desire to do so, but it was something to do. Exhibitor booths ranged from the large, flashy &#8230; <a href="http://sirhc.us/oscon-2008-the-expo-floor/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As with previous years, Wednesday and Thursday were highlighted with occasional trips to the expo hall.  Not necessarily because we had any real desire to do so, but it was something to do.  Exhibitor booths ranged from the large, flashy corporate sponsors, competing for prime real estate, to the Open Source projects and organizations, banished to obscurity in the far corners.  I&#8217;ll say this for conference organizers, though; they know how to get people into the expo hall: provide complimentary booze and snacks following the afternoon sessions.  Not that I spoke with any vendors while enjoying these niceties, but I was theoretically in a position to be accosted by the very same companies plying me with alcohol.</p>
<p><a href="http://flickr.com/photos/14933335@N00/2699204654/"><img src="http://farm4.static.flickr.com/3259/2699204654_63757ce564.jpg" /></a></p>
<p>Every conference I&#8217;ve attended&mdash;though that hasn&#8217;t been many&mdash;have used the same gimmick in an attempt to get people to visit vendors.  Each <s>mark</s>attendee is given a &#8220;passport&#8221; with a number of vendors listed.  The goal is to visit each of them and receive a sticker for the effort.  The reward is entry into a contest, the odds of winning being proportional to the number of people who fall for the scam.  I always start out collecting stickers, but quickly realize why I&#8217;ve never gotten as far as entering the contest.  I really hate talking to salespeople.  I&#8217;m not interested in any of the products being pitched and, even if I were, there&#8217;s nothing they can&#8217;t tell me that I can&#8217;t discover for myself on the Web.  At one point, I&#8217;m pretty sure Eric S. Raymond even tried to hand me a flyer&mdash;I&#8217;m unsure if it was about Free Software or <a href="http://www.catb.org/~esr/writings/sextips/intro.html">sex</a>&mdash;but I politely declined and went on my way.</p>
<p>I was pleased to run into Alyson at the Ticketmaster booth.  We met at <a href="http://www.socallinuxexpo.org/scale6x/">SCALE6x</a> in February, where she was again working the Ticketmaster booth, but also assisting us with the Perl Mongers booth.  It was good to catch up with her.  I was sure to tell her how much I admire what she does for the <a href="http://losangeles.pm.org/">Los Angeles Perl Mongers</a> and how I wish we had someone like her in <a href="http://sandiego.pm.org/">San Diego</a>.</p>
<p>Sun actually had a nice booth this year.  They provided a place to relax, snacks, and a wifi network with a hidden ESSID for people fed up with the one provided by the conference.  I didn&#8217;t spend much time there, but I did take advantage of the wifi as I lounged in the O&#8217;Reilly booth.</p>
<p>Amazon was running what I found to be an interesting gimmick in their booth.  &#8220;Ninja&#8221; code.  It was just a bit of self-modifying Perl written out on some poster board.  Tell them what it did and get entered into a raffle.  It was actually a fairly clever way of advertising for talent to hire.  Heck, it got me coming back to the booth a few times, if only to make fun of it.  I did spot some <a href="http://sirhc.us/journal/2008/07/23/ninja-code/">potential improvements</a>.</p>
<p>Intel&#8217;s gimmick this year was actually kind of interesting.  Everyone who visited their booth could receive a sticker with a number on it to wear.  The goal then is to find the person wearing the matching number.  People would post a phone number or Twitter handle on a cork board at the Intel booth for others to find.  I posted my Twitter information but unfortunately my default view only includes friends, not replies.  That, and the ever present <a href="http://en.wikipedia.org/wiki/Twitter#Fail_Whale">fail whale</a> made me miss my partner&#8217;s tweet.  Mere minutes after the raffle on Wednesday, as I was getting ready to throw away my sticker, I hear Jonathan call out to me that he&#8217;s found my partner.  As it turns out, there would be another drawing on Thursday, so we went ahead and entered.  That led to an extremely annoying sales pitch.  He wanted us to tell him about <a href="http://sirhc.us/journal/2008/07/23/oscon-2008-moblinorg/">Moblin</a>.  Just to spite him, I told him about <a href="http://www.qctconnect.com/products/snapdragon.html">Snapdragon</a> instead.  What do I keep telling myself?  Stupid gimmick contests aren&#8217;t worth it.  What I did like about it was the social aspect.  I met someone new, had a pleasant conversation, and he&#8217;s now following me on Twitter.</p>
<p>On Thursday at the O&#8217;Reilly booth, <a href="http://www.canspice.org/">Brad</a> was interviewed on camera by <a href="http://www.wgz.org/chromatic/">chromatic</a>.  I expressed my desire to see it play during a keynote, but that wasn&#8217;t meant to be.  Brad uses Perl to do cool things with <a href="http://www.jach.hawaii.edu/">telescopes</a> and munge astronomical data, which is of interest to the O&#8217;Reilly editors.  He&#8217;s been asked to write an article about it, and I&#8217;m trying to convince him to give a talk at next year&#8217;s Open Source Conference.</p>
<p>[tags]oscon, oscon08, oscon2008[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-the-expo-floor/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: The Twilight Perl</title>
		<link>http://sirhc.us/oscon-2008-the-twilight-perl/</link>
		<comments>http://sirhc.us/oscon-2008-the-twilight-perl/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 19:22:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Damian Conway]]></category>
		<category><![CDATA[ocon2008]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=277</guid>
		<description><![CDATA[It&#8217;s the last session of the conference, and I saw Damian Conway&#8217;s name on the schedule. So here I am, attending The Twilight Perl. I have no idea what to expect, but come on, it&#8217;s Damian. It&#8217;s got to be &#8230; <a href="http://sirhc.us/oscon-2008-the-twilight-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s the last session of the conference, and I saw Damian Conway&#8217;s name on the schedule.  So here I am, attending <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2438">The Twilight Perl</a>.  I have no idea what to expect, but come on, it&#8217;s Damian.  It&#8217;s got to be good.</p>
<p>Based on past experience, this is likely to be a fast-paced, highly-entertaining talk.  One which will be impossible to summarize, or no doubt even to explain, here.  Needless to say, if you&#8217;re not here, you&#8217;re missing out.  I intend to sit back, relax, and enjoy.</p>
<p>He&#8217;s talking about the defining characteristic of a hacker.  Particularly when they&#8217;re told that something is impossible and can&#8217;t be done.  The reaction is typically, &#8220;you wanna bet?&#8221;</p>
<p>He just presented a slide that read, &#8220;Let&#8217;s leave behind the shackles of sanity&#8230;&#8221;</p>
<p>Now I&#8217;m scared.</p>
<p>This is a great talk.  It&#8217;s a series of examples of things &#8220;you can&#8217;t do in Perl.&#8221;  At least, not until Damian shows us how.</p>
<p>I think Brad may have <a href="http://www.canspice.org/2008/07/25/oscon-2008-the-twilight-perl-by-damian-conway/">taken notes</a>.  Which is good, because now I wish I had.</p>
<p>[tags]oscon, oscon08, ocon2008, Perl, Damian Conway[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-the-twilight-perl/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Perl and Parrot</title>
		<link>http://sirhc.us/oscon-2008-perl-and-parrot/</link>
		<comments>http://sirhc.us/oscon-2008-perl-and-parrot/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:22:58 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[myths]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Tim Bunce]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=276</guid>
		<description><![CDATA[It&#8217;s the first session on Friday and I&#8217;m in Perl and Parrot: Baseless Myths and Startling Realities with Tim Bunce. As people were filtering in from the break, Tim displayed one of my favorite xkcd comics for us to enjoy. &#8230; <a href="http://sirhc.us/oscon-2008-perl-and-parrot/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s the first session on Friday and I&#8217;m in <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3242">Perl and Parrot: Baseless Myths and Startling Realities</a> with Tim Bunce.  As people were filtering in from the break, Tim displayed one of my favorite <a href="http://xkcd.com/224/">xkcd comics</a> for us to enjoy.</p>
<p>There are so many <s>holy wars</s> debates about whether one language is better than another.  Instead, the right question to ask is whether or not the developer&#8217;s skill set is right for the job.  I agree.  When I look for a developer, I&#8217;m more concerned with how they think than in what language they think.</p>
<p>Unfortunately, Tim is preaching to the converted in this talk.  Nearly the entire attendance already uses Perl and don&#8217;t believe the myths.  With that, let&#8217;s conquer them anyway.</p>
<p><b>Perl is Dead</b></p>
<p>No it isn&#8217;t.  It&#8217;s two decades old and still growing strong.  The books aren&#8217;t flying off the presses with great speed because the Perl community already has excellent books.</p>
<p>The trend when searching for &#8220;web development&#8221; jobs shows Perl growing very slowly in relation to other languages, particularly PHP.  However, searching for &#8220;developer&#8221; jobs shows Perl growing very strongly and holding its own extremely well.</p>
<p>As a lurking member of the Perl community and an active member of my <a href="http://sandiego.pm.org/">local Perl Mongers group</a>, it&#8217;s been my experience that Perl programmers tend to be quite happy with their jobs.  Which, unfortunately, has made it very difficult for me to find talent.</p>
<p>In fact, Perl is growing faster than ever.  A simple look at how much work is going into CPAN will show that.  The community is strong and Perl is everywhere.</p>
<p><b>Perl Is Hard to Read / Test / Maintain</b></p>
<p>Only if you&#8217;re doing it wrongly.  We have <a href="http://oreilly.com/catalog/9780596001735/">Perl Best Practices</a>, to use as the default documentation for coding standards, leaving developers with the need to only document when they deviate from the norm.  There&#8217;s <a href="http://search.cpan.org/dist/Perl-Tidy/">Perl::Tidy</a>, to force any Perl code into one&#8217;s own personal style.  <a href="http://search.cpan.org/dist/Perl-Critic/">Perl::Critic</a> for ensuring that code is being well-written and follows best practices.  And there&#8217;s no end to the Test::* modules and the work being done to make testing easy.  There&#8217;s even a <a href="http://search.cpan.org/dist/Devel-Cover/">coverage analysis tool</a>.</p>
<p><b>Perl 6 is Killing Perl 5</b></p>
<p>In fact, Perl 6 saved Perl 5, but one has to be close to the center of the community to see that.  One should notice that Perl 5.8 and 5.10 have both been released in the time that Perl 6 has been in development.</p>
<p>There is a culture of testing around Perl.  So many tests have been written for Perl 6, and the language is being defined by its test suite.  This culture has leaked out to the community.  In fact, I find there now exists a lot of peer pressure in the community to do proper testing.</p>
<p><b>Perl 6 Is Not Perl</b></p>
<p>Yes, and no.  Unfortunately, I was so busy trying to catch up with the last section that I missed most of the points Tim made.  In the end, I feel that this is fine.  If Perl 6 was supposed to be Perl 5, why not just use the perfectly decent, already existing Perl 5?  Which is still being actively developed.</p>
<p><b>Perl 6 Will Never Be Ready</b></p>
<p>It&#8217;s not on a schedule and, if it were on a schedule, it would be crap.  It will be ready when it&#8217;s ready.  Better to do it right than screw it up.  The development model encourages a lot of experimentation, and it&#8217;s difficult to schedule experimentation.</p>
<p><b>There&#8217;s No Perl 6 Code</b></p>
<p>Sure there is.  Thousands of lines of Perl 6 code exist in the test suite that came about from Pugs.  These very same tests are being used in Perl 6 development today in the form of Rakudo, Perl 6 on Parrot.</p>
<p>The important thing to note is that Perl 6 refers to a specification.  It does not refer to a particular implementation.  Any implementation that passes the test suite may call itself Perl 6.</p>
<p>From an authority in the audience (who I don&#8217;t recognize, unfortunately), we have been told that there will be a useable Perl 6 by this Christmas.  A round of applause ensued.</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, Tim Bunce, myths[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-perl-and-parrot/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Friday Morning Keynotes</title>
		<link>http://sirhc.us/oscon-2008-friday-morning-keynotes/</link>
		<comments>http://sirhc.us/oscon-2008-friday-morning-keynotes/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 17:18:08 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=271</guid>
		<description><![CDATA[The Friday morning keynotes opened with a video demonstration of the capabilities of Blender. Apparently, it renders scenes using crappy 80s computer-generated music. It&#8217;s no Wall-E, but it&#8217;s quite pretty. First up this morning Allison introduced Benjamin Mako Hill of &#8230; <a href="http://sirhc.us/oscon-2008-friday-morning-keynotes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The Friday morning keynotes opened with a video demonstration of the capabilities of <a href="http://www.blender.org/">Blender</a>.  Apparently, it renders scenes using crappy 80s computer-generated music.  It&#8217;s no <a href="http://en.wikipedia.org/wiki/WALL-E">Wall-E</a>, but it&#8217;s quite pretty.</p>
<p>First up this morning Allison introduced Benjamin Mako Hill of the MIT Center for Future Civic Media.  He will be speaking about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4449">Advocating Software Freedom by Revealing Errors</a>.  He seems to be far too highly caffeinated for the room this morning, and is speaking very quickly, and the sound system is too loud, so I don&#8217;t entirely know what&#8217;s going on.</p>
<p>The gist of the talk is that, when errors become visible to the user, it exposes something about the underlying technology.  He&#8217;s provided several obvious examples of ATMs crashing with Windows errors.  He runs the <a href="http://revealingerrors.com/">Revealing Errors Blog</a>, too.</p>
<p>Next up is Dawn Nafus of Intel, speaking about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4546">Three Challenges</a>.  Unlike most speakers at OSCON, she is an anthropologist.  There is a notion, particularly in the mobile devices industry, is that adding more and more data is equivalent to adding context.  This is phenomenally untrue.  Data without context is, more often than not, useless.</p>
<p>Her second challenge is the global food crisis in food and water, particularly in the developing world.  We Open Source folks are quite good at decentralizing power, just look at how so many of our projects are organized.  Technology is fast going mobile, and as these devices become cheaper, they are more easily put into the hands of people in the Third World.  There are many applications for this technology, we just need to be creative about how we go about taking advantage of this proliferation in technology.</p>
<p>The third challenge is to strengthen global growth in technology producers, not just consumers.  We must better understand where growth is coming from.</p>
<p>Annoyingly, we have another speaker from Microsoft this year, Sam Ramji.  He&#8217;s, apparently, here to tell us about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4779">Open Source Heroes</a>.  He&#8217;s telling us about platform trends, something we already know about.  There&#8217;s some slide about applications moving into Internet moving into Web applications over the time frame 1995 through 2005.</p>
<p>Microsoft sees Open Source growing strong over the next decade, but it&#8217;s hard to take him seriously, given the company&#8217;s history.  While he&#8217;s talking about Microsoft&#8217;s contributions to Open Source projects and the work they&#8217;ve done to improve their ability to work on Windows, I&#8217;m constantly on edge around Microsoft, wondering what they really have planned.  In fact, I may have just answered my own question.  Improving the use on Windows, thus attempting to ensure the continual use of Windows.  They&#8217;re desperate to hold on to the market share they&#8217;ve so deceitfully gained.</p>
<p>This talk can be summed up as, Hey look, we&#8217;re not evil, look at this boringly enumerated list of Open Source stuff we&#8217;ve done.</p>
<p>He&#8217;s announced that Microsoft has become a &#8220;platinum&#8221; sponsor of the Apache Software Foundation.  That doesn&#8217;t sound good to me.  Do people forget the embrace-extend-extinguish history of the company?  Should we really trust them so much?</p>
<p>Next up, refreshingly, is <a href="http://youtube.com/watch?v=9BAJYCKex1M">Tim Bray</a> of Sun Microsystems, speaking to us about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4317">Language Inflection Point</a>.  There&#8217;s background music, and he&#8217;s speaking very quickly.  He&#8217;s going over slides demonstrating various ways of measuring the popularity of programming languages.  From search engines to book sales.</p>
<p>He took a survey of the room.  A show of hands for who is using various languages and if we would still use it in an ideal world.  Python and Ruby were the only two languages with a positive delta, more people raised their hands to show that they&#8217;d use it in an ideal world than those who currently use it.</p>
<p>From there, he launched into a discussion of each language and their benefits and drawback as he sees them.  Obviously subjective, but they&#8217;re not entirely bad points.  He never got to Perl, so I&#8217;m a bit disappointed.</p>
<p>Finally, we have Jeremy Ruston of BT Design, who created <a href="http://www.tiddlywiki.com/">TiddlyWiki</a>.  He&#8217;s here to tell us about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4780">Learning from Airports</a>.</p>
<p>At airports today, the actual actions of taking off and landing is more a side-show.  There are more shops and things like security lines (and waiting), and the actual arrivals and departures are a very short part of anyone&#8217;s visit.</p>
<p>Airports do serve as an excellent analogy for technology standards.  Single sign-on: passports.  Access tokens: boarding passes. Standard documentation: universal signage.</p>
<p>The keynotes wrapped up with a question and answer session with each of the morning&#8217;s speakers.  The first question, unsurprisingly, was about patents, and what will it take for Microsoft to commit to not using patents against Open Source.  The speaker claims that developers should never have to worry about it, but it was unconvincing.</p>
<p>Unsurprisingly, the majority of the questions were directed to the Microsoft representative.  They ranged from (and I&#8217;m paraphrasing), why Microsoft is evil and patent bashing thinly veiled as questions.  Unfortunately, the presence of the Microsoft <s>shill</s> speaker on stage led to a completely wasted question and answer session.</p>
<p>But now it&#8217;s break time, so I&#8217;m off in search of more coffee.  OSCON starts way too early in the morning.</p>
<p>[tags]oscon, oscon08, oscon2008[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-friday-morning-keynotes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008, Day 5</title>
		<link>http://sirhc.us/oscon-2008-day-5/</link>
		<comments>http://sirhc.us/oscon-2008-day-5/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 15:06:39 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=269</guid>
		<description><![CDATA[Friday morning, and I&#8217;m sad the week is over. However, I&#8217;m a bit happy, as well. In shortly over 24 hours, I&#8217;ll be home. I love attending OSCON, but it takes its toll. For example, one of the things that &#8230; <a href="http://sirhc.us/oscon-2008-day-5/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Friday morning, and I&#8217;m sad the week is over.  However, I&#8217;m a bit happy, as well.  In shortly over 24 hours, I&#8217;ll be home.  I love attending OSCON, but it takes its toll.  For example, one of the things that makes getting to breakfast difficult is all the free beer available to us.  One might ask, Why not just avoid partaking of the local nectars and get a good night&#8217;s sleep instead.  To that I say, Are you crazy?  There&#8217;s beer!  And it&#8217;s free!  As in beer!</p>
<p>SourceForge held a couple of parties for us last night.  One was at the <a href="http://www.jupiterhotel.com/">Jupiter Hotel</a> and the other, branded BeerForge, was at a party venue down the block from the hotel.  Obviously, we attended both&mdash;twice.</p>
<p>Josh and I started out at BeerForge.  After a while we got hungry and found Brad, Alice, and Sam over at the SourceForge awards party.  As things got too crowded, we all went over to BeerForge.  As the venue grew too hot and loud, we ended up back at the SourceForge location, where we could be outside at least.  After that venue closed down, Josh and I went back to my hotel room to polish off a growler&mdash;a half gallon&mdash;of beer I had picked up at Rogue the night before.</p>
<p>I&#8217;m now at breakfast, after a whole four hours of sleep, and extremely thankful for the coffee, fruit, and pastries that have been laid out for us.  The fresh air and the walk to the convention center helped, too.  This week&#8217;s festivities make me almost want to take a pass on the <a href="http://www.oregonbrewfest.com/">Oregon Brewers Festival</a>.  I said, almost.</p>
<p>Fortunately, there are only two sessions today, leaving me with only two decisions to make.  However, after a more careful review of the schedule, the choices seem obvious.</p>
<p>First, Tim Bunce is giving a talk on <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3242">Perl and Parrot: Baseless Myths and Startling Realities</a>.  I&#8217;m not as enthusiastic about Perl 6 as I once was, but I quite enjoy Tim&#8217;s sessions.  Following Tim, in the same room, is Damian Conway.  He&#8217;ll be presenting&mdash;oh, does it even matter?</p>
<p>I will be faced with a bit of a dilemma tonight.  My flight home is scheduled for 6:40am tomorrow morning.  However, the <a href="http://trimet.org/max/">MAX</a> light rail ends its service at midnight and doesn&#8217;t resume until 4:30am.  Several years ago this may have been acceptable, but not in the airports of today.  So my options are to get a couple hours of sleep followed by calling a town car, or check out of the hotel tonight and make my way to the airport before the MAX service terminates for the night.  Quite honestly, arriving at the airport six and a half hours early is still shorter than some of the layovers I&#8217;ve had.</p>
<p>Well, I&#8217;m going to finish my breakfast and tag some <a href="http://flickr.com/photos/14933335@N00/">photos</a>.  In just under an hour, the final day of keynotes&mdash;and thus of OSCON&mdash;get started.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-day-5/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: State of the Onion</title>
		<link>http://sirhc.us/oscon-2008-state-of-the-onion/</link>
		<comments>http://sirhc.us/oscon-2008-state-of-the-onion/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 02:07:55 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Larry Wall]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[State of the Onion]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=264</guid>
		<description><![CDATA[It&#8217;s finally time for the State of the Onion. Larry Wall introduced this year&#8217;s theme, Rules That Are Meant to be Broken. If he had Perl to do all over again, what would he do different? Only two things, nothing, &#8230; <a href="http://sirhc.us/oscon-2008-state-of-the-onion/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s finally time for the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4871">State of the Onion</a>.  Larry Wall introduced this year&#8217;s theme, <i>Rules That Are Meant to be Broken</i>.</p>
<p>If he had Perl to do all over again, what would he do different?  Only two things, nothing, and everything.  Perl 6 is the everything part of the answer.</p>
<p>In Perl 5, one of the problems that creeps up is that regular expressions (regexes) are strings.  The best example of this is variable interpolation in regexes.  In Perl 6, this has been fixed.  They are now their own language.</p>
<p>Like cargo-cult programming, parsing has turned into its own cargo-cult.  Perl 6 breaks the mold when it comes to copying languages (the old lex/yacc loop), and instead uses polymorphism in its sub-language design.</p>
<p>Both regexes, double quoted strings, and single quoted strings are examples of sub-languages in Perl 6.  Each of these sub-languages has its own parsing rules and therefore parsing implementations.  This allows is code reuse.  Parsers can derive behavior from other parsers, but treat the tokens differently as necessary.</p>
<p>Fundamentally, Perl 6 is very simple.  It has no <code>CORE</code>.  It has no built-ins and no operators.  What Perl 6 has given us (will give us?), in effect, is a just in time lexer.  Tokens and their behavior can be defined on the fly, on a per-sub-language basis.</p>
<p>There are quite a few changes to the regularity of regular expressions.  Mostly what this means is that Perl 6 regexes are incompatible with those used in Perl 5, and that Perl-compatible regular expressions (PCRE) aren&#8217;t (or won&#8217;t be).</p>
<p>All languages tend to fall into the One True Syntax trap.  Perl 6 has aimed to break out of that trap.  By giving the user enough power over the syntax (rope) to design the language that suits them (hang themselves).</p>
<p>I didn&#8217;t enjoy the State of the Onion as much as I have in the past.  I suppose that&#8217;s to be expected.  Larry did warn us at the top of the talk that it would be serious and contain only a single joke.  For as great a writer as Larry is, his ability as a public speaker is lacking.  That&#8217;s okay, though.  I&#8217;d rather he not shift focus away from the design and development of Perl.</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, State of the Onion, Larry Wall[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-state-of-the-onion/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Perl Lightning Talks</title>
		<link>http://sirhc.us/oscon-2008-perl-lightning-talks/</link>
		<comments>http://sirhc.us/oscon-2008-perl-lightning-talks/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 01:03:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Lightning Talks]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=261</guid>
		<description><![CDATA[It&#8217;s 4:30pm on Thursday and that means it&#8217;s time for the Perl Lightning Talks. The crowd is excitedly gathering, but there are still plenty of seats as I write this. Sorry guys, these are five minute talks. If I start &#8230; <a href="http://sirhc.us/oscon-2008-perl-lightning-talks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s 4:30pm on Thursday and that means it&#8217;s time for the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2501">Perl Lightning Talks</a>.  The crowd is excitedly gathering, but there are still plenty of seats as I write this.</p>
<p>Sorry guys, these are five minute talks.  If I start summarizing, I&#8217;ll fall way behind.  You&#8217;re lucky I even take the time to write this.</p>
<p>If you really want to know what&#8217;s going on, there&#8217;s a <a href="http://www.justanotherperlhacker.org/lightning/2008oscon.shtml">schedule</a>.</p>
<p>For those of you still reading, here&#8217;s a bit of stream-of-consciousness for you.  Note, if trying to match these up to the schedule, they are in order, but I didn&#8217;t comment on all of them.</p>
<hr />
<p><a href="http://pgfoundry.org/projects/pgtap/">Testing databases with TAP</a> is cool.  You really can test anything with it.</p>
<hr />
<p>Nice to see The Perl Foundation get some slots in Google&#8217;s Summer of Code this year.</p>
<hr />
<p>It&#8217;s interesting to see how much Perl is used to compile USA Today every day.  Without Perl, it would be a very empty paper.  Though I&#8217;m not convinced the content would be much different.</p>
<hr />
<p>Schwern tells us that, in thirty years, time will wrap.</p>
<pre>
$time = 2**31 - 1;
print scalar gmtime $time;

<i>Tue Jan 19 03:14:07 2038</i>

$time = 2**31;
print scalar gmtime $time;

<i>Fri Dec 13 20:45:52 1901</i>
</pre>
<p>Wait, that&#8217;s not good.  But he&#8217;s fixed it.</p>
<hr />
<p>Sweet, <a href="http://code.google.com/p/perl-appengine/">Perl on Google App Engine</a>!</p>
<hr />
<p>Use <a href="http://search.cpan.org/dist/autodie/">autodie</a> instead of <a href="http://perldoc.perl.org/Fatal.html">Fatal</a>.  It&#8217;s better.</p>
<p>Also, <a href="http://use.perl.org/~pjf/">Paul Fenwick</a> is one of the best speakers I&#8217;ve seen in ages.  I hope he becomes an OSCON staple.</p>
<hr />
<p><i>F*ck, the F*cking thing is F*cked</i> had the best slides.</p>
<p><a href="http://ipv6experiment.com/">IPv6Experiment.com</a> (warning: there may be porn).</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, lightning talks[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-perl-lightning-talks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Hacking Wetware for Fun and Profit</title>
		<link>http://sirhc.us/oscon-2008-hacking-wetware-for-fun-and-profit/</link>
		<comments>http://sirhc.us/oscon-2008-hacking-wetware-for-fun-and-profit/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 22:09:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[People]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=259</guid>
		<description><![CDATA[My second mid-afternoon session is Hacking Wetware for Fun and Profit with Paul Fenwick. Andy Lester introduced Paul, and basically said he was awesome and couldn&#8217;t figure out how it is he&#8217;s never been in this country to speak before. &#8230; <a href="http://sirhc.us/oscon-2008-hacking-wetware-for-fun-and-profit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My second mid-afternoon session is <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3107">Hacking Wetware for Fun and Profit</a> with Paul Fenwick.  Andy Lester introduced Paul, and basically said he was awesome and couldn&#8217;t figure out how it is he&#8217;s never been in this country to speak before.</p>
<p>Paul&#8217;s preferred title for this talk is <i>Human Interfaces for Geeks</i>.  Most geeks think of things like keyboards, mice, and monitors when it comes to interfaces.  But that&#8217;s not what this is about.  Those are human-computer interfaces.  We&#8217;re here to talk about human interfaces.  Things like aural or visual communication.</p>
<p>Geeks can be quite awkward when it comes to interfacing with other people.</p>
<p>There are normal people out there who do make sense to geeks do make a lot of sense to geeks, <a href="http://thesims.ea.com/">Sims</a>.  They have wants, fears, and needs.  These are easy to see, because they have status bars.  Unfortunately, real people don&#8217;t have status bars.</p>
<p>One thing learned from the sims, if you want something done, ask a happy person to do it.  They will be far more willing to do it and will end up being far more helpful.  How do you make people happy?  Coffee and chocolate will go a long way towards making people happy and giving a higher priority to your requests.</p>
<p>Even without this kind of base bribery, we can make people happy.  By matching one of their goals to one of our needs.  Humans, when they&#8217;re instantiated, have a set of default goals, and no one ever changes these.  One of the best goals for this is a feeling of importance.  How can you make someone feel important?  Talk about them.</p>
<p>It&#8217;s easy to talk about someone.  Practice active listening.  Essentially, be an Eliza bot.  Listen to what someone is saying, then repeat it back to them in the form of a question.  If they&#8217;ve been on vacation, ask them about it.  If they&#8217;ve accomplished something, ask them about it.  This makes people very happy.</p>
<p>Another way to make someone happy is to make them feel important in front of their peers.  If someone submits a patch, recognize that in front of the community.  I did this once (because I&#8217;ve only ever received one patch for my one and only <a href="http://search.cpan.org/dist/String-MkPasswd/">CPAN module</a>).  Someone from Australia submitted a patch and I put his name in the Changes file.  I know I feel amazingly good when I&#8217;ve done a good job, so I do my best to point out when people have done a good job.</p>
<p>People, particularly in the United States, tend to look at situations in an adversarial way.  When someone wants something and someone else is standing in their way, he will want to force his way past.  This is rarely an effective method.  Instead, those standing in the way are people, too.  The best method is to take action to make that other person feel good about themselves.  When they are happy and feel good about themselves, they are far more likely to go out of their way to help.</p>
<p>This was a good talk.  Geeks rarely read books aimed at management types.  A lot of these books place a lot emphasis on the concept of win-win and interpersonal communication.  It&#8217;s nice to see a geek taking these lessons and putting them into terms other geeks can understand.  We definitely need more geeks with people skills.</p>
<p>[tags]oscon, oscon08, oscon2008, people[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-hacking-wetware-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Ultimate Perl Code Profiling</title>
		<link>http://sirhc.us/oscon-2008-ultimate-perl-code-profiling/</link>
		<comments>http://sirhc.us/oscon-2008-ultimate-perl-code-profiling/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 21:35:14 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[profiling]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=256</guid>
		<description><![CDATA[Lunch is over and I&#8217;m here to listen to Tim Bunce talk about Ultimate Perl Code Profiling with Devel::NYTProf. The Devel::DProf module is old and a waste of time and is broken. Stop using it. Take it out and shoot &#8230; <a href="http://sirhc.us/oscon-2008-ultimate-perl-code-profiling/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lunch is over and I&#8217;m here to listen to Tim Bunce talk about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2960">Ultimate Perl Code Profiling</a> with <a href="http://search.cpan.org/Devel-NYTProf/">Devel::NYTProf</a>.</p>
<p>The <a href="http://serch.cpan.org/Devel-DProf/">Devel::DProf</a> module is old and a waste of time and is broken.  Stop using it.  Take it out and shoot it.</p>
<p>The first obvious distinction between profilers is CPU time versus real time.  CPU time tends to be highly granular, but doesn&#8217;t include I/O, context switching, or other kinds of blocking.  That&#8217;s where real time comes in.  It&#8217;s far more useful in the real world.</p>
<p>Tim, as with many of us, is interested in line-based profiling.  It provides a high level of granularity  The total subroutine time is not always useful, particularly in larger subroutines.</p>
<p>The NYTProf module is exremely fast, discounting the time taken by profiling overhead, making it quite a bit more useful for real world analysis.  It also allows profile times per block, and can be aggregated up to the subroutine level.  It&#8217;s a module with dual profilers: line-based and subroutine-based.</p>
<p>It gets better, every location that calls the subroutine keeps separate track of the subroutine time.  This allows us to determine where the majority of the subroutine calls are coming from.  For control flow statements, the decision expression is not taken into account when profiling the block that is executed.  This is useful if the loop control itself takes time that should be discounted.</p>
<p>And that&#8217;s it for the description.  Now we have half an hour to play with it.</p>
<p>The HTML-based reporting is inspired by <a href="http://search.cpan.org/dist/">Devel::Cover</a>&#8216;s reporting.  Reported for each file are the number of statements executed, the time spent in the source file and the line, block, and subroutine reports.  The subroutine reports include the amount of time spent within the subroutine and the amount of time spent in other called subroutines.  The coloring of each line of the report&mdash;red, orange, yellow, and green&mdash;give a relative measure of deviation from the norm.  Very impressive.</p>
<p>Even more impressive, Devel::NYTProf is capable of reporting exactly what a subroutine reference is called, even when it&#8217;s an anonymous subroutine compiled within an <code>eval</code>.  With a handy link also provided, the called code can be easily inspected.</p>
<p>In summary, Devel::NYTProf is awesome.  Use it.  I know I will.</p>
<p>Tim Bunce is even more impressive than most people think he is.  He is the only presenter I&#8217;ve seen so far who has managed to use IRC while giving his talk.  Well, he didn&#8217;t actually type on IRC, but he had Colloquy running in the background.  This particular IRC client uses Apple&#8217;s Growl feature to display notifications when you are mentioned in a channel.  After he&#8217;s opened up the session to questions, one of those notifications pops up on the projected display:</p>
<blockquote><p>
&lt;sirhc&gt; Adam Kennedy (to Tim Bunce): Why are you so awesome?
</p></blockquote>
<p>It got a laugh, and Tim seemed to take it all in stride, even joking that he was not looking very professional on his screen cast.  Important safety tip for session presenters, don&#8217;t leave your IRC client open.</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, programming, profiling[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-ultimate-perl-code-profiling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Perl for Political Campaigns</title>
		<link>http://sirhc.us/oscon-2008-perl-for-political-campaigns/</link>
		<comments>http://sirhc.us/oscon-2008-perl-for-political-campaigns/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 21:12:35 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[politics]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=254</guid>
		<description><![CDATA[There was nothing interesting for me scheduled for the second session today, so I ended up in Perl for Political Campaigns, presented by Chris &#8220;Pudge&#8221; Nandor. I&#8217;m not entirely sure why I&#8217;m here, but it likely has something to do &#8230; <a href="http://sirhc.us/oscon-2008-perl-for-political-campaigns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>There was nothing interesting for me scheduled for the second session today, so I ended up in <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2655">Perl for Political Campaigns</a>, presented by Chris &#8220;Pudge&#8221; Nandor.  I&#8217;m not entirely sure why I&#8217;m here, but it likely has something to do with Perl in the title and Pudge as the presenter.  I must be in the right place, though.  Both Damian Conway and Adam Kennedy are present.</p>
<p>Pudge is, quite famously, a Republican, so he wants poor people to die, he asserts his right to shoot people who jaywalk, and he hates puppies.  Now that we have that out of the way, this will not be a political talk.  Instead, it will be a talk that just happens to use politics as the problem domain for which Perl was the solution (but isn&#8217;t it always?).  Pudge happens to volunteer for the Republican party in Snohomish county, Washington.  I actually know the area fairly well, as my grandmother happens to live there.</p>
<p>Winning elections is all about knowledge.  And blackmail.  But, mostly knowledge.</p>
<p>This session is essentially about data mining.  There are a number of disparate data sources available with information about voters.  From registration and voting history to contact information and preferences&mdash;can or can they not be contacted.  This data is not always easy to access.  For example, there is something called the Voter Vault, which is a super secret database of voter information controlled by the Republican party (there&#8217;s an NDA involved, so we won&#8217;t see any of it).</p>
<p>Essentially, Voter Vault is a really crummy Web application that only works for IE (hence the crummy part).  That&#8217;s where <a href="http://search.cpan.org/dist/WWW-Mechanize/">WWW::Mechanize</a> comes in.  Using this brilliant module, data on any Web site can be retrieved, even if it requires a certain amount of user interaction to access.  This, along with other sites, like the Washington State Public Disclosure Commission, provide all the raw data Pudge needs.</p>
<p>However, raw data is, by itself, not useful to anyone.  This is the reason behind Pudge&#8217;s efforts.  He uses Perl (and some JavaScript) to collect and aggregate all of this data.  Then, once it&#8217;s all compiled, he can use a bit of Perl glue to use the data in Apple&#8217;s Address Book and Mail applications.  But, more importantly, he can visualize it.</p>
<p>For the visualization, Pudge uses everyone&#8217;s favorite new tool, Google Maps.  Using the Ajax API provided by Google, he can embed a map in his own Web application and, next to it, provide controls to enable and disable different views of the data on the map.  For example, candidate donations by city and how much each candidate received.</p>
<p>It gets better.  With the Google Earth APIs available to Google Maps, KML files can be generated (again, with Perl) to provide even better data visualizations.  For example, precinct boundaries can be imported and colored based on voting history.</p>
<p>Initially, I wasn&#8217;t sure how I&#8217;d feel about this talk, but I ended up enjoying it.  It was an excellent presentation on how to take data and display it to users in a useful manner.</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, politics, visualization[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-perl-for-political-campaigns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Stick a fork() in It</title>
		<link>http://sirhc.us/oscon-2008-stick-a-fork-in-it/</link>
		<comments>http://sirhc.us/oscon-2008-stick-a-fork-in-it/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 18:45:32 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=251</guid>
		<description><![CDATA[First session of the day and I&#8217;m in room F150 (brought to you by Ford). The F wing, bereft of wifi. I&#8217;m here for Stick a fork() in It: Parallel and Distributed Perl with Eric Wilhelm of Scratch Computing. It&#8217;s &#8230; <a href="http://sirhc.us/oscon-2008-stick-a-fork-in-it/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>First session of the day and I&#8217;m in room F150 (brought to you by Ford).  The F wing, bereft of wifi.  I&#8217;m here for <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2748">Stick a fork() in It: Parallel and Distributed Perl</a> with Eric Wilhelm of <a href="http://scratchcomputing.com/">Scratch Computing</a>.  It&#8217;s great to see how popular Perl still is.  It&#8217;s standing room only in here.</p>
<p>A computer once referred to a human worker who would perform calculations.  This was a fairly easy thing to cluster and &#8220;run&#8221; several computers in parallel.  As time progressed, more and faster work was desired.  Enter the electronic computer, and specifically for this talk, the Cray.  As with anything, the inner workings of the Crays of old can be recreated in Perl.  Just use the Cray module, no problem (if only it existed).</p>
<p>After the history lesson, we move into high level overviews of parallelism and pipelineing, and a note about <a href="http://en.wikipedia.org/wiki/Amdahl%27s_law">Amdahl&#8217;s Law</a>.  This was followed up with an example for detecting prime numbers by partitioning the work.</p>
<p>The slide presentation was over in under 20 minutes.  Instead, we&#8217;re jumping straight into code examples.  Awesome.</p>
<p>Or so I thought.  Unfortunately, he&#8217;s been interrupted by multiple people in the audience, who keep wanting to move off into tangential conversations.  Eric is having difficulty bringing the talk under his own control&mdash;it&#8217;s no longer his talk, but that of the somewhat rude fellow in the front row.  Neither is Eric as eloquent when he switches from a prepared talk to demonstrating and explaining real code.  It&#8217;s become far more difficult to pay attention to this session, and I find myself looking at the clock to see how much time we have until the next session.</p>
<p>For real fun, be sure to check out <a href="http://www.canspice.org/">Brad&#8217;s</a> post on Schwern&#8217;s session about <a href="http://www.canspice.org/2008/07/24/oscon-2008-skimmable-code-by-michael-schwern/">skimmable code</a>.</p>
<p>[tags]oscon, oscon08, oscon2008, Perl, programming[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-stick-a-fork-in-it/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Thursday Morning Keynotes</title>
		<link>http://sirhc.us/oscon-2008-thursday-morning-keynotes/</link>
		<comments>http://sirhc.us/oscon-2008-thursday-morning-keynotes/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 17:12:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=239</guid>
		<description><![CDATA[Thursday morning, the conference is more than half way over. It&#8217;s once again time for some keynotes. They opened with an open content video from REM. I don&#8217;t know why. It wasn&#8217;t very good. Our first speaker this morning is &#8230; <a href="http://sirhc.us/oscon-2008-thursday-morning-keynotes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thursday morning, the conference is more than half way over.  It&#8217;s once again time for some keynotes.  They opened with an open content video from REM.  I don&#8217;t know why.  It wasn&#8217;t very good.</p>
<p>Our first speaker this morning is Keith Bergelt of the Open Invention Network, speaking about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4789">Open Invention Network and Its Role in Open Source and Linux</a>.  He&#8217;s speaking about patents and intellectual property in Open Source, the realities of it today and where he sees it going tomorrow.  He&#8217;s big on the buzzwords, and this is not the right audience for it.  In fact, a game of <a href="http://en.wikipedia.org/wiki/Buzzword_bingo">Buzzword Bingo</a> has already broken out in the IRC channel.</p>
<p>In summary, &#8220;Blah blah patent blah blah buzzword blah blah we care blah blah.&#8221;</p>
<p>Oh wait, he droned his way to a point.  One of the things the Open Invention Network does, and I should have known because I&#8217;ve seen this before, is to buy up patents and keep Open Source safe from them.  At least, until their funding dries up and they turn to their patent portfolios to squeeze money out of everyone.</p>
<p>I seem cynical this morning.  Maybe I didn&#8217;t get enough sleep.  Or maybe the first keynote today is boring.  The back-channel conversation on IRC is actually quite entertaining, though.  I need to whip up a quick IRC log file analyzer to correlate IRC traffic to keynote speaker.  Then I can use it as a tool to rate speakers.</p>
<p>The pain is finally over, and the program chair has caught buzzworditis from the last speaker.  Next up is Peter H. Salus to speak to us about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4547">Anniversaries</a>.  I&#8217;m told by Nat Torkington that Peter is an Unix historian.  He&#8217;s started off by showing us a picture of the first transistor, which is about 20cm and a bit more than that around.  It&#8217;s amazing to see how far we&#8217;ve come in 60 years&mdash;how many iPhones can fit in the same volume?</p>
<p>Anniversaries, in this case, are major milestones in computer history.  The first electronic computer; the first time-sharing system; the first Unix paper by Ritchie and Thompson; the GNU project.  One of the interesting things to learn is that history repeats itself.  Back in the days of ARPANET, there was an issue involving the exhaustion of address space on the network.  Short-sighted problems like that would never <a href="http://en.wikipedia.org/wiki/IPv4_address_exhaustion">happen today</a>, right?</p>
<p>I enjoyed this keynote speech, but probably because I really enjoy history.</p>
<p>Next up, <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4918">Supporting the Open Web</a> with David Recordon of Six Apart.  It&#8217;s not just the open nature of the software or the platform that matters, but the openness of the data.  Without open data, the Open Web can&#8217;t work.  Interoperability and open specifications are vital to moving forward with the technology.  The Web must be accessible, not just available on one device or another.</p>
<p>The majority of the talk is dedicated to talking about the various organizations doing work to keep everything free and open, including the Open Source Initiative, Creative Commons, and the Apache Foundation.  There are also quite a few people donating a lot of their time to help.</p>
<p>He&#8217;s announcing the formation of the <a href="http://openwebfoundation.org/">Open Web Foundation</a>.  They don&#8217;t necessarily want to form their own foundation, but they have had little luck finding an existing one to do what they&#8217;ve asked.</p>
<p>The Open Web Foundation will focus on four areas: incubation, licensing, copyright, and community.  Many companies, such as Google and Yahoo have already shown support for this new foundation.</p>
<p>Following David is Danese Cooper of the Open Source Initiative and Intel Corporation to speak about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4490">Why Whinging Doesn&#8217;t Work</a>.  A catchy title, and she introduced her talk with a funny video of a choir of Finnish women singing about all of the complaints they have (search YouTube for &#8220;<a href="http://www.youtube.com/results?search_query=complaints+choir&#038;search_type=">complaints choir</a>&#8220;).</p>
<p>She&#8217;s making a very good point.  There are so few women in Open Source.  Geek are often intimidated by women and women are so often objectified.  It&#8217;s true, there is a huge gender imbalance in the geek community.  Of all the geeks I know, I can name very few <a href="http://www.snipe.net/">women</a>.  I&#8217;m having a daughter soon, and you know what, she&#8217;s going to learn to code.</p>
<p>However, the feminist angle is merely a way of personally relating to the main point of her talk.  People complain.  I do it, you do it, the guy sitting next to you does it.  But whinging doesn&#8217;t help.  Mostly, all whinging does is beget more whinging.  That energy used to complain needs to be channeled into something constructive.</p>
<p>For seven years, Danese was the only female member of the Open Source Initiative&#8217;s board.  Now 30% of the board members are female.  Progress.</p>
<p>Finally, Nathan Torkington, former OSCON program chair and recently of He Hononga Software, Limited and his keynote, <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4721">fork() &#038;&#038; exec(): Spawning the Next Generation of Hackers</a>.  Thank goodness, this talk is <i>not</i> about geeks having sex.</p>
<p>I&#8217;ve been looking forward to this keynote for a couple of reasons.  First, I&#8217;ve missed hearing Nat speak this year.  Second, I&#8217;m expecting my first child in a couple of months.  Not only that, two other members of my local <a href="http://www.kernel-panic.org/">Linux User Group</a> are either recent or expecting fathers.  Suddenly, topics involving children are much more interesting to me.</p>
<p>Nat recently moved his family back to New Zealand.  One of the things he does now is to help teach children about computing.  In his school district, the computing infrastructure was awful&mdash;and used Windows.  So he got a handful of Macs and became the Bastard Operator from Hell for his kids&#8217; school.  Then he started teaching the schoolchildren.  Quickly, he discovered that the teachers needed teaching as well.</p>
<p>One more thing he wanted to do was to teach programming.  He feels it&#8217;s a very important skill.  But it has to be done right.  Avoid the frustration that so many of us experience with computing and programming, but something consistent, easy-to-learn, but still powerful.  Nat&#8217;s introduced <a href="http://scratch.mit.edu/">Scratch</a>.  The kids loved it.</p>
<p>Lessons learned:</p>
<ul>
<li>Lectures suck (you have two minutes to say what you want)</li>
<li>The gender gap is not what you think (girls are smarter and more focused than boys)</li>
<li>Keyboards are a challenge</li>
<li>Not a lot of experience with math</li>
<li>Robots are lame</li>
</ul>
<p>So please, volunteer in schools.  Perhaps remove Windows and bring the joy of Linux to their lives.  Find, or create, good courseware, such as Scratch.  Post it on your blog, so everyone can find it.  Finally, don&#8217;t profit.  Do this for the good of the children, our future generation of geeks.</p>
<p>With that, we&#8217;re off to the expo hall for the break.</p>
<p>[tags]oscon, oscon08, oscon2008[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-thursday-morning-keynotes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>OSCON 2008, Day 4</title>
		<link>http://sirhc.us/oscon-2008-day-4/</link>
		<comments>http://sirhc.us/oscon-2008-day-4/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 15:51:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=240</guid>
		<description><![CDATA[Thursday morning and day four of OSCON is sunnier than the last two have been. Though it&#8217;s still chilly outside, it&#8217;s comfortable inside the convention center, so far. I&#8217;m once again having breakfast in the expo hall after getting too &#8230; <a href="http://sirhc.us/oscon-2008-day-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Thursday morning and day four of OSCON is sunnier than the last two have been.  Though it&#8217;s still chilly outside, it&#8217;s comfortable inside the convention center, so far.  I&#8217;m once again having breakfast in the expo hall after getting too little sleep.</p>
<p>Sadly, yesterday during the morning keynotes, <a href="http://www.dailyack.com/">Al</a> was called back home abruptly.  Hopefully, he made it back to the UK quickly and safely.</p>
<p>After all the sessions were said and done for the day, we found our way to the expo hall, where beer and appetizers were being served.  Alas, we did not stay long.  We caught wind that Google would be hosting pizza across the river at <a href="http://www.oldtownpizza.com/">Old Town Pizza</a>, an event we never made it to.  It turned out to be a pizza dinner for Summer of Code participants.  We finally ended up at <a href="http://www.rogue.com/">Rogue</a> for dinner, and I finally got myself a <a href="http://en.wikipedia.org/wiki/Beer_bottle#Growler">growler</a> for my collection&mdash;currently being held (safely?) in Brad&#8217;s hotel room refrigerator.</p>
<p>After dinner, we swung by the supposed <a href="http://www.amazon.com/">Amazon</a> party.  Only, there wasn&#8217;t one.  It was only held between 8:00pm and 9:00pm.  Seriously?  This is how Amazon throws a party?</p>
<p>Fortunately, the <a href="http://www.sun.com/">Sun</a> party was a better this year.  First of all, they had no stupid <a href="http://sirhc.us/journal/2007/07/25/oscon-2007-opensolaris-party/">lolspeak</a> flyers.  Second, bottled beer instead of kegs, which is difficult for incompetent bartenders to over-prime and serve nothing but head.  Third, <a href="http://www.youtube.com/watch?v=9BAJYCKex1M">sumo wrestling</a>!  <a href="http://www.canspice.org/">Brad</a> and I also participated; those photos are coming soon, I promise.</p>
<p>However, as I actually enjoy attending the keynote sessions&mdash;scheduled far too early in the morning&mdash;I was back in my hotel just after 11:00pm.  I ran into Dan and his fellow <a href="http://www.tierra.net/">TierraNet</a> colleagues in the hotel bar.  Unfortunately, I had missed last call, but I sat down for a bit anyway.  We had some laughs with Margaret, the bartender.  I tried to get her to slap Tyler, but sadly it never happened.</p>
<p>Today&#8217;s session tracks begin with a dilemma.  Unfortunately, I&#8217;d like to be in three places, simultaneously.</p>
<ul>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3011">Skimmable Code: Fast to Read, Safe to Change (Michael Schwern)</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4857">Open Source Microblogging (Evan Prodromou)</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2748">Stick a fork() in It: Parallel and Distributed Perl (Eric Wilhelm)</a></li>
</ul>
<p>Fortunately, Brad wants to go to Michael Schwern&#8217;s talk, so I&#8217;ve agreed to attend Eric Wilhelm&#8217;s talk.  We&#8217;ll write summaries and both be happy.  The microblogging session was just a curiosity for me anyway.</p>
<p>The rest of the day won&#8217;t require quite as much rolling of dice.</p>
<ul>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2655">Perl for Political Campaigns (Chris Nandor)</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2960">Ultimate Perl Code Profiling (Tim Bunce)</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3107">Hacking Wetware for Fun and Profit (Paul Fenwick)</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2501">Perl Lightning Talks</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4871">State of the Onion Address</a></li>
</ul>
<p>The only potential conflict is during the second half of the Perl lightning talks, <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2852">A Tasting Tour of Haskell (Bryan O&#8217;Sullivan)</a>.</p>
<p>Just about time for the morning keynotes, and I&#8217;m looking forward to seeing Nat Torkington speak.  If I can reconnect to the wifi network, I can even post this entry.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-day-4/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: An Illustrated History of Failure</title>
		<link>http://sirhc.us/oscon-2008-an-illustrated-history-of-failure/</link>
		<comments>http://sirhc.us/oscon-2008-an-illustrated-history-of-failure/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 00:32:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[failure]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=233</guid>
		<description><![CDATA[For my final session of the day, I&#8217;m in D139/140 for An Illustrated History of Failure with Paul Fenwick. I attended Paul&#8217;s Perl security talk yesterday, which was deciding factor in my attendance here. I figure it will have to &#8230; <a href="http://sirhc.us/oscon-2008-an-illustrated-history-of-failure/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For my final session of the day, I&#8217;m in D139/140 for <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3072">An Illustrated History of Failure</a> with Paul Fenwick.  I attended Paul&#8217;s <a href="http://sirhc.us/journal/2008/07/21/oscon-2008-perl-security/">Perl security</a> talk yesterday, which was deciding factor in my attendance here.  I figure it will have to be good, I&#8217;m sitting a few seats away from Damian Conway.</p>
<p>Paul has started out by describing the <a href="http://blog.makezine.com/archive/2006/09/worlds_oldest_computer.html">world&#8217;s oldest computer</a> in terms of modern computing.</p>
<p>From there, he&#8217;s providing examples of major computing and engineering failures throughout modern history.  It&#8217;s amazingly entertaining.  I can&#8217;t summarize it.  If you&#8217;re not here, you fail.  I&#8217;m just going to sit back and enjoy it.</p>
<p>[tags]oscon, oscon08, oscon2008, history, failure[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-an-illustrated-history-of-failure/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Moblin.org</title>
		<link>http://sirhc.us/oscon-2008-moblinorg/</link>
		<comments>http://sirhc.us/oscon-2008-moblinorg/#comments</comments>
		<pubDate>Thu, 24 Jul 2008 00:21:26 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Intel]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Moblin]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=231</guid>
		<description><![CDATA[Continuing my afternoon tradition of attending sessions with absurdly long names, I&#8217;m in D136 at Moblin.org: The Community for Linux on Mobile Internet Devices (MID), netbooks, nettops and More&#8230;. It&#8217;s being presented by Dirk Hohndel, who I just overheard agreed &#8230; <a href="http://sirhc.us/oscon-2008-moblinorg/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Continuing my afternoon tradition of attending sessions with absurdly long names, I&#8217;m in D136 at <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3037">Moblin.org: The Community for Linux on Mobile Internet Devices (MID), netbooks, nettops and More&hellip;</a>.  It&#8217;s being presented by Dirk Hohndel, who I just overheard agreed at the last minute to substitute for the original author of the presentation.  He&#8217;s nervous, so I hope it goes well.  He is, however, the same person who gave the <a href="http://sirhc.us/journal/2008/07/23/oscon-2008-wednesday-morning-keynotes/">keynote</a> this morning.</p>
<p>I work for a small telecommunications design <a href="http://www.qualcomm.com/">company</a>, so this venture into Linux on mobile platforms holds quite a bit of interest for me.  Granted, I work in a support capacity for the folks who do real work, but knowledge is always a good thing, right?</p>
<p>Intel has chosen a Fedora- and GNOME-based platform for Moblin.  I&#8217;ve contributed a couple of <a href="http://rpmfind.net/linux/rpm2html/search.php?query=frotz">packages</a> to Fedora, which means users of these Intel mobile systems can play <a href="http://en.wikipedia.org/wiki/Zork">Zork</a>.</p>
<p>Dirk wasn&#8217;t able to have any sample devices with him, so he was left to describe what a &#8220;net book&#8221; is.  Fortunately, in a room full of geeks in a mobile computing presentation, several people had ASUS EEE PCs, which he could show off to the audience.  There were also a Nokia N800, N810, and of course several iPhones in the crowd.  Obviously I mobile-savvy audience.</p>
<p>Linux is often touted as the obvious first choice for these mobile devices because of its price.  One of the more important reasons is the ability to strip down Linux so much to fit on these devices, but still be incredibly usable.</p>
<p>This session ended up being exactly what I thought.  It&#8217;s essentially a marketing spiel masquerading as a technical talk.  The slides are far too slick, and the only reason any technical details are being given at all is because of the last-minute speaker substitution.  Our new speaker is a technical guy who has been promoted to a managerial role.  The presentation was apparently designed by a marketing guy with enough technical knowledge to be dangerous.  I hope Brad is having more fun in the <a href="http://www.canspice.org/2008/07/23/oscon-2008-moose-a-postmodern-object-system-for-perl-5-by-stevan-little/">Moose</a> talk.</p>
<p>I&#8217;m really regretting where I&#8217;ve chosen to sit.  Someone in front of me is wearing way too much pungent cologne.  I may be sick.</p>
<p>[tags]oscon, oscon08, oscon2008, Intel, Moblin, mobile, Linux[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-moblinorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Linux on the Corporate Desktop: We Did It, and You Can Too</title>
		<link>http://sirhc.us/oscon-2008-linux-on-the-corporate-desktop-we-did-it-and-you-can-too/</link>
		<comments>http://sirhc.us/oscon-2008-linux-on-the-corporate-desktop-we-did-it-and-you-can-too/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 22:24:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=224</guid>
		<description><![CDATA[The second of my mid-afternoon sessions is Linux on the Corporate Desktop: We Did It, and You Can Too with John Goerzen. This session popped out at me because we have a similar initiative at work. The company John works &#8230; <a href="http://sirhc.us/oscon-2008-linux-on-the-corporate-desktop-we-did-it-and-you-can-too/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The second of my mid-afternoon sessions is <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2509">Linux on the Corporate Desktop: We Did It, and You Can Too</a> with John Goerzen.  This session popped out at me because we have a similar initiative at work.  The company John works for has about 400 employees, so obviously no where near the scale we&#8217;d be deploying on.  Hopefully, I&#8217;ll learn a few lessons from someone who&#8217;s done it before.</p>
<p>There are a multitude of troubles with using a proprietary operating system, as anyone attending OSCON is familiar.  From cost to forced upgrades to vendor lock-in.  Suddenly, companies are at the mercy of the vendor, and have lost so much of their own self-direction.</p>
<p>Not only has John&#8217;s company benefited from the Open Source community, they&#8217;ve contributed back to the community.  That&#8217;s key, I feel.  I&#8217;d like to see my own company contribute much more than they do.</p>
<p>I&#8217;m not sure who this talk was targeted for.  It wasn&#8217;t really a good sales pitch to business-type people, and it wasn&#8217;t very high level for IT-type people.  I don&#8217;t know what I expected from it, but I don&#8217;t think I got what I wanted out of it.  Most of the challenges they faced, we&#8217;ve already solved.  We&#8217;ve already created a standard image and can already deploy it on standard hardware.  We already have Windows virtual machines for anyone who still needs to run Windows applications.  We already have enough management buy-in for the project, too.</p>
<p>I do, however, like the sound of this &#8220;seamless RDP&#8221; he talked about.  I will need to investigate it further.  Also, it&#8217;s refreshing to hear from someone who has successfully (mostly) removed Windows from their enterprise.</p>
<p>[tags]oscon, oscon08, oscon2008, Linux[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-linux-on-the-corporate-desktop-we-did-it-and-you-can-too/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>&#8220;Ninja&#8221; Code</title>
		<link>http://sirhc.us/ninja-code/</link>
		<comments>http://sirhc.us/ninja-code/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 22:20:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Amazon]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=227</guid>
		<description><![CDATA[The Amazon booth at OSCON 2008 is advertising heavily that they are hiring. They are also holding a raffle. To enter, simple look over some Perl code they have written out on some poster board and tell them what it &#8230; <a href="http://sirhc.us/ninja-code/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.amazon.com/">Amazon</a> booth at OSCON 2008 is advertising heavily that they are hiring.  They are also holding a raffle.  To enter, simple look over some Perl code they have written out on some poster board and tell them what it does.  It looks a little something like this (transcribing from memory):</p>
<pre>
my $code = qq{
    print 1+1 . "\n";
    $code =~ m/(\d+)\+(\d+)/;
    $new = $1 + $2;
    $code =~ s/\d+\+(\d+)/$2+$new/;
};

for ( 1 .. 10 ) {
    eval($code);
}
</pre>
<p>What&#8217;s the first bug?  Yes, it should use <code>q{}</code>, or the variables will interpolate on the initial assignment to <code>$code</code>.  To their credit, they initially used single quotes, but people said it was too hard to read.</p>
<p>I wasn&#8217;t content with just figuring out what the code did and fixing a small bug.  I think it can be written better.</p>
<pre>
eval($code = q{
    print 1+1 . "\n";
    $code =~ s/(\d+)(\+)(\d+)/"$3$2" . ($1 + $3)/e;
    eval $code;
});
</pre>
<p>Much better.  Not only is it more concise, I was able to remove that pesky loop, so I wouldn&#8217;t be bothered by any silly upper bounds.</p>
<p>So what does it do?  Should be obvious.  Head over to the Amazon booth and let them know.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/ninja-code/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Code Reviews for Fun and Profit</title>
		<link>http://sirhc.us/oscon-2008-code-reviews-for-fun-and-profit/</link>
		<comments>http://sirhc.us/oscon-2008-code-reviews-for-fun-and-profit/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 21:32:10 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=222</guid>
		<description><![CDATA[Lunch is over and I&#8217;m sitting in Code Reviews for Fun and Profit with Alex Martelli. I really wanted to go to the Perl 6 talk, but I always end up going home disappointed, because I don&#8217;t yet have Perl &#8230; <a href="http://sirhc.us/oscon-2008-code-reviews-for-fun-and-profit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Lunch is over and I&#8217;m sitting in <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2538">Code Reviews for Fun and Profit</a> with Alex Martelli.  I really wanted to go to the Perl 6 talk, but I always end up going home disappointed, because I don&#8217;t yet have Perl 6.  It&#8217;s maddening, so here I am, sitting in something that may be useful.  And we&#8217;re off.</p>
<p>Nearly everyone agrees that code reviews are a good idea, so why aren&#8217;t they done more often?  In fact, this is the very same problem we&#8217;ve had at work.  We&#8217;ve been talking about code reviews for two years, but we&#8217;ve never had one.</p>
<p>There are some barriers to entry to doing code reviews.  If revision control is not in use or automated tests aren&#8217;t being run, tackle those problems first.  Also, the need for a team process is necessary, from ticket tracking to release plans.</p>
<p>Pair programming, that tenet of XP, is a poor substitute for code reviews.  Two people working together will not magically turn one or the other into what is essentially a disinterested third party, who may catch bugs simply because they weren&#8217;t there when it was written.</p>
<p>Test-driven development is also a great way of coding, but not a substitute for reviews.  Often for the same reasons.  Tests are often just more code and the code tested is only when someone thinks to test it.</p>
<p>Even during a code review, a reverence for authority can get in the way of getting things done.  A poor, intimidated programmer may not have the courage to criticize a more senior programmer.  Instead, this can be turned around with something I use a lot myself.  I like to call it, &#8220;playing dumb.&#8221;  Instead of saying, &#8220;this won&#8217;t work,&#8221; ask what will happen for a suspicious case.</p>
<p>Socially, the only way for code reviews to work is universal buy-in.  Everyone is subjected to code reviews by everyone else.  No exceptions.  Make them a habit, a regularly-scheduled meeting.  At work, I&#8217;ve even suggested bi-weekly, or perhaps monthly, catered, lunch time code reviews.  Just to get us into the habit of doing it.</p>
<p>Code review time should not be wasted on things such as code formatting, best practices, or test coverage.  This is stupid.  These are <a href="http://search.cpan.org/dist/Devel-Cover/">objective</a> <a href="http://search.cpan.org/dist/Perl-Tidy/">tasks</a> that can be <a href="http://search.cpan.org/dist/Test-Harness/">automated</a>.</p>
<p>Instead, look for subjective things, which can&#8217;t be automatically found.  Such as code readability, algorithmic clarity, and consistent identifier naming.  Other targets for code reviews are the usual things we here over and over again as development best practices: consistent documentation that follows the internal standard, that kind of thing.</p>
<p>The remainder of the talk is essentially an enumeration of all the things to look for in code reviews.  All of them are, at least to me, common sense.  So I&#8217;m not going to spend any time writing them down.  If you don&#8217;t already know them, well go find some common sense.</p>
<p>One thing that he recommends that I like is code reviews by e-mail.  It&#8217;s an old, well-understood, and (usually) reliable tool.  So why not combine e-mail with a version control system&mdash;particularly one of the newer distributed version control systems&mdash;to perform out-of-band code reviews.  It actually sounds like a good idea to me, and I&#8217;ve done it at work a couple of times with code written by an intern.</p>
<p>What I&#8217;m starting to notice is that many of the later the recommendations for reviewing code are personal opinions of the presenter.  I think the way in which code reviews are performed are highly dependent on what works best for the group reviewing code.  It&#8217;s like so many things, from cameras to backup solutions: the best one is not the shiniest or the one with the most bells and whistles, it&#8217;s the one that&#8217;s actually used.</p>
<p>[tags]oscon, oscon08, oscon2008, programming[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-code-reviews-for-fun-and-profit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Beautiful Concurrency with Erlang</title>
		<link>http://sirhc.us/oscon-2008-beautiful-concurrency-with-erlang/</link>
		<comments>http://sirhc.us/oscon-2008-beautiful-concurrency-with-erlang/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 19:12:55 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[concurrency]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=219</guid>
		<description><![CDATA[My second session of the day is Beautiful Concurrency with Erlang. I&#8217;m here for two reasons. First, Erlang looks cool; second, the speaker, Kevin Scaldeferri, is a friend of mine. Erlang is a pure functional language (and thus no side-effects) &#8230; <a href="http://sirhc.us/oscon-2008-beautiful-concurrency-with-erlang/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My second session of the day is <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3065">Beautiful Concurrency with Erlang</a>.  I&#8217;m here for two reasons.  First, <a href="http://www.erlang.org/">Erlang</a> looks cool; second, the speaker, Kevin Scaldeferri, is a friend of mine.</p>
<p>Erlang is a pure functional language (and thus no side-effects) with strong dynamic typing and syntax similar to Prolog and ML.  Most notably, it contains concurrency primitives, which is what we&#8217;re here to hear about today.</p>
<p>Erlang concurrency primitives include <code>spawn</code>, to create a process, <code>!</code>, to send a message to a process, and <code>receive</code>, to listen for a message.  These are not system level processes, but other Erlang processes.  It&#8217;s a lot like using <code>fork</code> in imperative languages, but less messy.</p>
<p>Erlang, like many functional languages, can implement quick sort in three lines of code.  I was having a discussion with a friend of mine about this topic yesterday.  It&#8217;s very nice, and demonstrates the power of functional languages to trivially solve an already solved set of problems, but is it any use in the real world?  Maybe.  While I&#8217;ve not seen any non-trivial examples, I&#8217;m reserving judgment.</p>
<p>The first example is a demonstration on how simple it is to parallelize the quick sort algorithm.  It&#8217;s not a worthwhile example, in fact, it&#8217;s a particularly bad idea, but it serves as a reasonable example of the ease of use of the concurrent features in Erlang.  So far, it seems like changing a <code>map</code> call&mdash;something I love from Perl&mdash;to <code>pmap</code>.</p>
<p>The <code>pmap</code> function is not a built in function (BIF), but a library function built on top of the built in concurrency primitives.  The code implementing the function is actually quite simple, and should be available in the slides available at the end of the conference.  Conceptually, it spawns as many processes as necessary and uses them to call the function being mapped.  It then gathers the results, waiting for each process to complete.  It&#8217;s quite similar to code I&#8217;ve written to do scientific processing using <a href="http://en.wikipedia.org/wiki/Message_Passing_Interface">MPI</a>, but I&#8217;ve always thought functionally when coding.</p>
<p>After explaining concurrency, we make the jump to distributed systems.  What&#8217;s everyone&#8217;s favorite distributed system?  <a href="http://twitter.com/">Twitter</a>!  Twitter, while not designed as such, is essentially a messaging system.  Erlang does message passing very well, and almost all programs are designed using this paradigm.  So Kevin took a stab at implementing a Twitter-like system in Erlang, the key ideas of which he will present to us.</p>
<p>The lightweight and convenient process architecture of Erlang lends itself to the problem.  Every user can be represented as a process.  Each process can then send and receive messages.  In effect, the problem&mdash;the messaging part anyway&mdash;is now solved.  But, what about scaling to multiple machines?</p>
<p>It turns out to easy (but you knew it would, right?).  All we need to do is pull in the <code>global</code> module and we can bind our users not only to a process identifier, but combine that with a given machine as well.</p>
<p>However, we still don&#8217;t have a reliable system.  If a process dies, that user is no longer in the system.  So it really is a lot like Twitter.</p>
<p>OTP, the Open Telecom Platform (a legacy name from Erlang&#8217;s history at Ericcson), provides a set of common behaviors and patterns for writing reliable and distributed system.  The programmer simply declares what interface they would like to use, then implement a set of callbacks defined for that behavior.  Reminds me a bit of <a href="http://search.cpan.org/dist/Class-Role/">roles</a> (because I have an unhealthy need to relate everything back to Perl).</p>
<p>As with everything in Erlang, it is almost impossibly easy to set up this reliability.  I still can&#8217;t get over how well the syntax maps to how I actually think about code.</p>
<p>A question was raised about how to go about setting up the necessary cluster of hosts used in Erlang&#8217;s mesh network.  Kevin went into it briefly, but it&#8217;s unfortunately out of scope for this session.</p>
<p>And, with that, it&#8217;s time for lunch.  Thanks, Kevin!</p>
<p>[tags]oscon, oscon08, oscon2008, Erlang, concurrency, programming[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-beautiful-concurrency-with-erlang/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Strawberry Perl: Achieving Win32 Platform Equality</title>
		<link>http://sirhc.us/oscon-2008-strawberry-perl-achieving-win32-platform-equality/</link>
		<comments>http://sirhc.us/oscon-2008-strawberry-perl-achieving-win32-platform-equality/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 18:27:59 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Adam Kennedy]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Strawberry Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=217</guid>
		<description><![CDATA[My first session of the day is Strawberry Perl: Achieving Win32 Platform Equality, presented by Adam Kennedy. Originally, I had considered a Parrot talk, but I saw a similar talk at SCALE6x, and I happened upon Adam on IRC this &#8230; <a href="http://sirhc.us/oscon-2008-strawberry-perl-achieving-win32-platform-equality/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>My first session of the day is <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2769">Strawberry Perl: Achieving Win32 Platform Equality</a>, presented by <a href="http://search.cpan.org/~adamk/">Adam Kennedy</a>.  Originally, I had considered a Parrot talk, but I saw a similar talk at <a href="http://sirhc.us/journal/2008/02/10/scale-6x-programming-parrot/">SCALE6x</a>, and I happened upon Adam on IRC this morning.  I chatted briefly with him about his talk, and he happens to be in communication with a <a href="http://www.antlinux.com/">friend of mine</a>, who is working on <a href="http://code.google.com/p/camelbox/">Camelbox</a>, a Windows build of Perl originally targeted as a way to easily distribute applications written with Gtk front ends (I hope I got the motivation correct).</p>
<p>Recently, Adam has been funded by The Perl Foundation, Perl in Israel, and Stonehenge to use Perl from nothing but his flash drive.  This provides an excellent motivation to get Strawberry Perl working in a highly portable way.</p>
<p>Originally, Perl was awesome and worked everywhere&mdash;except Windows.  That was okay, because Windows didn&#8217;t matter.  No one did any real work on Windows.  Then, around 1995, Windows started to matter.  A brief history of Perl on Windows followed, resulting in what is today <a href="http://www.activestate.com">ActiveState</a>.</p>
<p>Much of what Adam wrote for <a href="http://search.cpan.org/dist/PPI/">PPI</a> does not work in ActivePerl, which makes it a non-starter for him, as he tends to work on Windows.  Anything depending on Scalar::Util or List::MoreUtils modules will not work with the ActivePerl build system.  This led to an embarrassing problem for Adam when he gave a talk three years ago at OSCON.  He couldn&#8217;t give his demo, because PPI would not build in ActivePerl.  In fact, ActiveState&#8217;s package manager has gotten so much worse that almost any module that is at all useful does not exist&mdash;and thus nothing useful can be done on Windows (big surprise).</p>
<p>Moving away from ActiveState, this talk is essentially about Adam trying to get his own laptop to work.  That&#8217;s really all he wants.  It&#8217;s a modest desire.  More importantly, the <a href="http://search.cpan.org/dist/CPAN/">CPAN</a> module has to work.  Without that, what&#8217;s the use of Perl?</p>
<p>So Adam offered a prize: a yard-high stack of cases of any beer desired by the first person who could provide a fully-installable and working (by the above definition of working) version of Perl for Windows.  After six months and no sign of a winner, he changed the prize to &#8220;craploads&#8221; of beer.  In 24 hours, he received two entries.  The winner cheated a lot, but the loser was <a href="http://vanillaperl.com/">Vanilla Perl</a>, which has become a testing ground for experimentation.</p>
<p><a href="http://strawberryperl.com/">Strawberry Perl</a> is the Perl for Windows designed for people who don&#8217;t use Windows.  That is, the people who do all of their work on Unix or Unix-like systems&mdash;Linux, Solaris, and Mac OS X.  The main goal of the project is to make it <i>easy</i>&mdash;it is Perl, after all.</p>
<p>In the future will come Chocolate Perl&mdash;completing the holy trinity of neopolitan flavors&mdash;for people who know Windows, but don&#8217;t know Perl, and thus the Unix-like characteristics of Perl.</p>
<p>The target of Adam&#8217;s financial support is Portable Perl: Perl for flash drives.  Carry it around, install CPAN modules onto, or from, the flash drive.  It&#8217;s network-aware, does the right thing, and juliennes fries.  An excellent standard being developed for portable apps is, in fact, <a href="http://portableapps.com">PortableApps.com</a>, where applications such as Firefox or Putty can be downloaded and installed to those ever-growing flash drives.</p>
<p>Available Thursday at the <a href="http://www.perlfoundation.org/">Perl Foundation</a>&#8216;s booth in the expo hall will be branded flash drives with Portable Perl on them.  At least, I think I heard that correctly.</p>
<p>I really like the work Adam is doing.  He&#8217;s accomplished so much to get Perl everywhere.  That&#8217;s a cause I can get behind.</p>
<blockquote><p>
&#8220;The main problem today is Vista.&#8221;<br />
&mdash; Adam Kennedy
</p></blockquote>
<p>Okay, I took that out of context, but I couldn&#8217;t resist capturing the quote.  What he really means is that changes made to Windows in Vista have made things not work, in particular the access control.  It&#8217;s not an unusual problem when upgrading to new systems, but it is more difficult with proprietary platforms, which Open Source authors have very little access to.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-strawberry-perl-achieving-win32-platform-equality/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Wednesday Morning Keynotes</title>
		<link>http://sirhc.us/oscon-2008-wednesday-morning-keynotes/</link>
		<comments>http://sirhc.us/oscon-2008-wednesday-morning-keynotes/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 17:09:57 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Open Web]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[oscon2008]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[Tim O'Reilly]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=215</guid>
		<description><![CDATA[Kicking off the official start of OSCON on Wednesday morning is Allison Randal welcoming us to the 10th annual O&#8217;Reilly Open Source Conference. She gave us an overview of what we could expect from this year&#8217;s conference. Mostly, it&#8217;s about &#8230; <a href="http://sirhc.us/oscon-2008-wednesday-morning-keynotes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Kicking off the official start of OSCON on Wednesday morning is Allison Randal welcoming us to the 10th annual O&#8217;Reilly Open Source Conference. She gave us an overview of what we could expect from this year&#8217;s conference.  Mostly, it&#8217;s about open systems this year, not just open source program.  She then introduced the program co-chair and the man behind the personal schedule feature on the conference web site, Edd Dumbill.  He started off by getting an idea of how long the audience had been coming to OSCON.  Quite a few people have attended half a dozen or more.  Impressive.  Next, he pimped the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4926">OSCON photo contest</a> on Flickr.  He&#8217;s a very big proponent of the social networking aspects of OSCON: Flickr, Twitter, and IRC in particular.</p>
<p>Allison is back to tell us that the morning break will be sponsored by Intel, and lunch is sponsored by Google.  That gives me some hope for a decent lunch, at least.  Don&#8217;t let me down, Google.</p>
<p>Next up, Tim O&#8217;Reilly with an update on <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4408">Open Source on the O&#8217;Reilly Radar</a>.  He started out with an overview of the history of this conference, in particular the predecessors: the Freeware conference, and the Perl conference.</p>
<p>He offers an important safety tip: keep your history.  Be an e-pack-rat.  Some day you&#8217;ll look back and appreciate that you have it.  It&#8217;s like the photo album on the coffee table.  It&#8217;s the story of us and how we became who we are today.  So keep everything.  Please.  Even if it&#8217;s embarrassing.  Those are always the best memories, the ones that make us laugh.</p>
<p>The big point he&#8217;s here to make today is how big Open Source has come in the last decade.  But, don&#8217;t become complacent.  There are three big challenges and opportunities coming up: cloud computing, the (open) programmable Web, and open mobile.</p>
<p>Cloud computing is on the tip of everyone&#8217;s tongue today.  From Amazon Web Services to Google&#8217;s App Engine.  Individuals and start-ups now have the ability to build applications on top of these wonderful, decentralized, and most importantly cheap platforms.</p>
<p>Web does not mean &#8220;http.&#8221;  It is, in fact, the entire Internet, the &#8220;web&#8221; of systems that communicate and inter-operate.  There are Web applications that provide platform-agnostic solutions, but there is also XMPP, mobile devices, and even non-Web APIs for those very Web applications that are often so impressive.</p>
<blockquote><p>
&#8220;The Web is 72 subsystems in search of an Operating System.&#8221;<br />
&mdash; Tim O&#8217;Reilly
</p></blockquote>
<p>Data is the value-add by so many of the so-called open web companies.  While the APIs are open and the data can be queried, the data itself is owned by the provider, to do with as they please.  We need a truly Open Web Platform.  Apple, as popular as the iPhone is, has created an essentially closed platform.  Google, with Android, understands this.  Without a truly open mobile platform, all of Google&#8217;s market share could potentially disappear overnight.</p>
<p>Back to Allison who introduced our next speaker, Christine Peterson.  She takes the stage to tell us about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4406">Open Source Physical Security: Can We Have Both Privacy and Safety?</a></p>
<p>We passed up an opportunity with &#8220;e-voting.&#8221;  The Open Source community should have been able to rise up and solve that problem.  I&#8217;m not sure how or in what way.  I&#8217;ve had many discussions with friends on the subject, and we&#8217;re still not convinced that computers are even a good idea when it comes to voting.</p>
<p>This is the political activism segment of the conference.  That said, she brings up very real concerns.  There are very real reasons to care about detecting weapons or other hazards.  But, the very same technologies, in particular surveillance, that are used to defend against very real dangers can be used&mdash;abused&mdash;to monitor law-abiding citizens.</p>
<p>Terrorism is a &#8220;bottom-up&#8221; problem, which the state is attempting to solve with &#8220;top-down&#8221; solutions.  We need so-called bottom-up solutions.  The solutions that involve the very same openness, security and privacy that the Open Source community is already so concerned about and already so vocal about.</p>
<p>The take home message, if there is one, is that all this public sensing data and the information they gather should be open.  Our elected officials (this is a very US-centric talk) are well-meaning, but do not have the tools or the knowledge or the experience to really understand the need for all of this to be open.</p>
<blockquote><p>
&#8220;No secret software for sensing public data.&#8221;<br />
&mdash; Christine Peterson
</p></blockquote>
<p>Allison came back on stage to introduce our last, but certainly not least, speaker, Dirk Hohndel, Intel&#8217;s Chief Linux and Open Source Technologist.  He&#8217;s here to talk about <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4719">Moblin, Linux for Next Generation Mobile Internet</a>.  Given that I work for Qualcomm, this is, or at least should be, a very interesting topic for me (I work in support of the engineers, who do the actual work).</p>
<p>Intel is putting their money where their mouth is with Moblin (Mobile Linux, get it?).  There is a new class of computers on the market, which have become affordable for the mass market: ultra portable notebooks, hand-held tablet computers, and &#8220;smart&#8221; phones.  The driving force making these devices so successful is the Internet.  They are connected and our data is accessible from anywhere.</p>
<p>But what about vendor lock-in of the platform and the data.  Intel believes that the platform should be open.  This is where Moblin comes in.  It&#8217;s Intel&#8217;s idea of an open platform and an open software stack, allowing the community to develop applications and create new systems and services.</p>
<p>It&#8217;s excellent preaching to the choir, but I suspect that from a business perspective, it&#8217;s also a way of getting other people to do work for free and really get entrenched in the mobile market.  After all, Intel is not the giant in the mobile space the same way that they are in the server, desktop, or notebook spaces.  In fact, Qualcomm has a very impressive microprocessor, called <a href="http://www.qctconnect.com/products/snapdragon.html">Snapdragon</a>, targeting the mobile market (shameless plug).</p>
<p>Allison is back, once again introducing Tim O&#8217;Reilly, who will be <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4407">talking to Monty Widenius and Brian Aker</a> about their work with MySQL and the acquisition by Sun Microsystems.  This is a Q&amp;A session, and I always find these difficult to blog.  With any luck, a summary or transcript will be posted to the <a href="http://radar.oreilly.com/">O&#8217;Reilly Radar</a> site.</p>
<p>That brings us to the end of this morning&#8217;s keynotes.  I&#8217;ll drop by the expo hall for a few minutes before my first session.  But first, I really need to find a restroom.</p>
<p>Oh, Brad also wrote a <a href="http://www.canspice.org/2008/07/23/oscon-2008-wednesday-morning-keynotes/">few words</a> about the keynote.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-wednesday-morning-keynotes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Day 3</title>
		<link>http://sirhc.us/oscon-2008-day-3/</link>
		<comments>http://sirhc.us/oscon-2008-day-3/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 15:38:21 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=213</guid>
		<description><![CDATA[It&#8217;s Wednesday, which means it&#8217;s day three of OSCON&#8212;day one for those here only for the sessions or expo hall. The tutorials and the Tuesday Night Extravaganza are behind us. Three days of sessions and two days of expo hall &#8230; <a href="http://sirhc.us/oscon-2008-day-3/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s Wednesday, which means it&#8217;s day three of OSCON&mdash;day one for those here only for the sessions or expo hall.  The tutorials and the <a href="http://sirhc.us/journal/2008/07/22/oscon-2008-tuesday-night-extravaganza/">Tuesday Night Extravaganza</a> are behind us.  Three days of sessions and two days of expo hall are ahead.</p>
<p>The morning keynotes begin in approximately 45 minutes.  After that, I have only a vague idea of which sessions I&#8217;d like to attend.  My current line up looks a little like this,</p>
<ul>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2769">Strawberry Perl: Achieving Win32 Platform Equality</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3065">Beautiful Concurrency with Erlang</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2437">Perl 6 Update</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3074">Rakudo: Perl 6 on Parrot</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2469">Moose: A Postmodern Object System for Perl 5</a></li>
<li><a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3072">An Illustrated History of Failure</a></li>
</ul>
<p>Of course, any of this is subject to change without notice.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-day-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Tuesday Night Extravaganza</title>
		<link>http://sirhc.us/oscon-2008-tuesday-night-extravaganza/</link>
		<comments>http://sirhc.us/oscon-2008-tuesday-night-extravaganza/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 03:52:37 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Damian Conway]]></category>
		<category><![CDATA[Mark Shuttleworth]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[r0ml]]></category>
		<category><![CDATA[White Camel Awards]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=209</guid>
		<description><![CDATA[It&#8217;s Tuesday evening and all of the tutorials are behind us. I&#8217;ve learned things about Perl no mere mortal should be trusted with, and I found out that Erlang is a really cool language. Now I&#8217;m in the Tuesday evening &#8230; <a href="http://sirhc.us/oscon-2008-tuesday-night-extravaganza/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s Tuesday evening and all of the tutorials are behind us.  I&#8217;ve learned things about Perl no mere mortal should be trusted with, and I found out that Erlang is a really cool language.  Now I&#8217;m in the Tuesday evening keynotes&mdash;or extravaganza, if you believe the marketing hype.  They&#8217;ve started out with a real bang.  Someone, whose name I didn&#8217;t catch, is talking about Python.  As <a href="http://radar.oreilly.com/allison/">Alison Randall</a>, the OSCON program chair said, &#8220;We have three of my favorite speakers, but first,&#8221; there&#8217;s this guy.  Actually, I&#8217;m sure he&#8217;s a perfectly decent chap, I just have very little interest in Python.</p>
<p>Originally, I hadn&#8217;t planned on arriving at the keynote until 9:00pm, when Damian Conway is schedule to speak on <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4549">Temporally Quaquaversal Virtual Nanomachine Programming In Multiple Topologically Connected Quantum-Relativistic Parallel Timespaces&#8230;Made Easy!</a>.  I mean, granted, I&#8217;m sure I already know all there is to know about it, but it still might be a little interesting.</p>
<p>Anyway, the keynotes got started with <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/14790">Mark Shuttleworth</a>, the founder of the <a href="http://www.ubuntu.com/">Ubuntu</a> project.  He&#8217;s here to speak to us about &#8220;Free software and the art of software engineering.&#8221;  It (whatever &#8220;it&#8221; is) boils down to three things: innovation, methodologies, and economics.</p>
<p><b>Innovation</b>.  Society has a responsibility to stimulate it.  Innovation is extremely non-linear and the key to this is disclosure, as is done in (or was once done in) academia.  Free Software is the scaffolding for innovation.  The real successes are accessible.  The Mozilla products are examples of wildly successful open platforms, with the extension architecture they have provided.</p>
<p><b>Methodologies</b>.  The purpose of methodologies is to organize talent.  How is Free software changing the direction of these methodologies.  The Free Software people, that is us, are organized and motivated by interest.  A second driving factor is that developers are almost never located near each other, so things like pair programming completely fall apart.  Creating architecture for collaboration and participation is essential to the success of any Free Software process.  While a common set of tools can never be forced upon the community, the ability for a diverse set of tools to communicate with each other is vital.</p>
<p><b>Economics</b>.  It is the combination of the technical change and innovation in economics that really moves the world forward.  For example, we had the Web for years before the business models started to spring up around it and really drove us forward, both technologically and economically.  Today, there is an increasing use of online services, which both drive technology forward and allow platforms to work together, and more often than not, these services are built on Free Software.</p>
<p>Our great task over the next two years is to lift the Linux desktop from something that is stable and works and is not-so-pretty, to something that is art.  At this point, someone started clapping, and a couple of people joined in.  As <a href="http://www.jwz.org/">Jaime Zawinsky</a> once said, &#8220;We should design software that helps our users get laid.&#8221;  But really, we need to make software that is phenomenally useable, beautiful, and functional.</p>
<p>Next up, <a href="http://egofood.blogspot.com/">Chris DiBona</a>, the Open Source program manager at Google, joined Allison on stage to present the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3705">Google O&#8217;Reilly Open Source Awards</a>.</p>
<p>Next up, with <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4717">Exceptional Software Explained: Embrace Error</a> is <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/6635">Robert &#8220;r0ml&#8221; Lefkowitz</a>.  He is fast becoming one of my favorite speakers.  He&#8217;s here to talk about software development methodologies in Open Source.  This talk is almost a sequel to one he gave last year, <a href="http://sirhc.us/journal/2007/07/27/oscon-2007-an-open-source-lexicon/">An Open Source Lexicon</a>.  He has a real penchant for language, particularly classical language, and how to apply it to themes in the Open Source community.  Unfortunately, because of this very quality, it&#8217;s extremely difficult to write about it as he speaks.  It&#8217;s hard to summarize as he speaks, and he&#8217;s far too entertaining to chance missing what he&#8217;ll say next.</p>
<p>Josh McAdams then took the stage to continue the long standing tradition&mdash;10 years now&mdash;of the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/4718">White Camel Awards</a>.  So here&#8217;s something I don&#8217;t understand.  What is it that drives people to design award trophies that have a high potential for lethality?  Honestly, don&#8217;t run with them.  They&#8217;re worse than scissors.</p>
<p>Finally, it&#8217;s time for Damian&#8217;s keynote.  But you know what?  I&#8217;m not going to miss any of it to write about it here.  If you missed it, well, you should have been here.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-tuesday-night-extravaganza/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Practical Erlang Programming</title>
		<link>http://sirhc.us/oscon-2008-practical-erlang-programming/</link>
		<comments>http://sirhc.us/oscon-2008-practical-erlang-programming/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 23:59:24 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Erlang]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=205</guid>
		<description><![CDATA[After lunch and our trip to the Apple Store, I&#8217;m sitting in Portland 256 for the Practical Erlang Programming. It&#8217;s being taught by Francesco Cesarini of Erlang Training and Consulting Ltd. Over 90 people registered for this tutorial, and the &#8230; <a href="http://sirhc.us/oscon-2008-practical-erlang-programming/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After lunch and our <a href="http://sirhc.us/journal/2008/07/22/belly-up-to-the-bar-were-geniuses/">trip to the Apple Store</a>, I&#8217;m sitting in Portland 256 for the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3373">Practical Erlang Programming</a>.  It&#8217;s being taught by <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/10595">Francesco Cesarini</a> of <a href="http://www.erlang-consulting.com/">Erlang Training and Consulting Ltd.</a></p>
<p>Over 90 people registered for this tutorial, and the room is almost full.  Save for the handful of available chairs, I&#8217;d feel guilty about auditing it instead of attending the <i>Real Time 3D on the Web with Open Source</i> I had originally registered for.  This will be a two and a half day course compressed into three hours.  Should be fun, and useful for <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/4961">Kevin&#8217;s</a> session tomorrow, <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3065">Beautiful Concurrency with Erlang</a>.  After seriously considering the relative merits and general usefulness of the tutorials, I decided <a href="http://www.erlang.org/">Erlang</a> would be much more interesting.  I had made my original choice with the equivalent of a dart board, so I don&#8217;t feel too bad about changing my mind.</p>
<p>The tutorial started with a quick tour of Erlang&#8217;s syntax.  It looks odd, but I&#8217;ve used Lisp and ML in the past, and I&#8217;m a rather good Perl hacker, so it isn&#8217;t proving too difficult to pick up.  The concept of pattern matching intrigues me.  It appears to use equivalency, in the mathematical sense to handle both boolean and assignment operations with the same syntax.  For example,</p>
<pre>
[A,B,C] = [1,2,3]    % A is 1, B is 2, C is 3
[A,B,C] = [1,2]      % error, size mismatch
[A,B,A] = [1,2,3]    % error, A already bound to 1
[A,B,A] = [1,2,1]    % okay, A bound to 1, then equivalent to 1
</pre>
<p>Shortly into the discussion of syntax, Francesco asked that anyone who hasn&#8217;t yet installed Erlang do so.  I executed <code>yum install erlang</code>, which pulled in unixODBC, tcl, and tk as dependencies.  Well, 45 megabytes and 45 minutes later&mdash;an impressive speed of 1 MBpm&mdash;I now have Erlang installed and ready to run.  Just in time for a 10 minute break.</p>
<p>During this first break, we were asked to do a simple exercise in Erlang: write a module, <code>boolean.erl</code>, that implements <code>b_not()</code>, <code>b_and()</code>, <code>b_or()</code>, and <code>b_nand()</code>, without using the built in logical operators.  I&#8217;ve been able to define the structure of the module, but I don&#8217;t know how boolean values are represented in Erlang, so I may have to wait until he gives us the answer.  Vim&#8217;s syntax highlighting tells me that <code>true</code> and <code>false</code> are reserved words, so I can use those.</p>
<p>The solution for this involves writing a simple truth table.  In Erlang, functions are subject to pattern matching in the same way that many programming languages allow for function overloading.  For the logical or, we start with the basic truth table:</p>
<pre>
b_or(true,true)   -&gt; true;
b_or(true,false)  -&gt; true;
b_or(false,true)  -&gt; true;
b_or(false,false) -&gt; false.
</pre>
<p>That&#8217;s downright simple and extremely easy to grasp on a conceptual level, particularly for anyone with any background in mathematics.  However, and this appeals to me as Perl hacker, Erlang allows the programmer to be lazy, but in a good way.  The null variable&mdash;as I&#8217;m calling it due to the analogy with <code>/dev/null</code> on Unix-like systems (or <code>undef</code> in Perl)&mdash;<code>_</code>, allows a kind of lazy matching:</p>
<pre>
b_or(false,false) -&gt; false;    % the only false case with OR
b_or(_,_)         -&gt; true.     % any other case is true
</pre>
<p>The other functions can be written in a similar way.</p>
<p>Back from the break, and the population of the room has thinned very slightly.  Francesco immediately jumped into conditional evaluation, starting with the <code>case</code> clause.  I suspect this may be one of the answers to the exercise.  He followed that with the <code>if</code> clause.  I find it interesting that he&#8217;s done it in that order.  In most languages, the <code>if</code> statement is a much simpler case (no pun intended) and is covered first, before moving into more complex territory.  I think I understand why, the two clauses are implemented in a very similar fashion.  I&#8217;m not sure how equivalent they are, I&#8217;d have to play with them a bit.</p>
<p>As with any functional language, Erlang has strong support for recursion as well as a handful of built in functions (BIFs) implemented in C to accomplish things that are difficult or impossible to do directly in Erlang.  After all, at a certain point, things like date and time require system calls.  Also available are convenience functions to do things like convert tuples to lists or back.</p>
<p>At the second, official, break&mdash;taken after an official entered the room to scold Francesco for being 15 minutes late&mdash;we were presented with two more exercises.  First, to write a function, <code>sum/1</code>, which, given a positive integer <code>N</code>, will return the sum of all the integers between 1 and <code>N</code>.  As an extension, write a function, <code>sum/2</code>, which, given two integers <code>N</code> and <code>M</code>, return the sum of the interval between them, first ensuring <code>N &lt;= M</code>.  Second, write a function, <code>create/1</code>, which will return the list 1 through <code>N</code> given <code>N</code> as its argument.  As an extension, write a function, <code>reverse_create/1</code>, which does the same in reverse.</p>
<p>As I suspected, both exercises are perfect candidates for recursion, which is quite simple to do in Erlang:</p>
<pre>
sum(N) when N &gt; 0 -&gt;
    N + sum(N-1);
sum(0) -&gt;
    0.
</pre>
<p>The simpler list creation function is actually the second, and is solved similarly, but by accumulating a list instead of adding to a sum (which is, actually, also a method of accumulation):</p>
<pre>
reverse_create(0) -&gt;
    [];
reverse_create(N) -&gt;
    [N|reverse_create(N-1)].
</pre>
<p>The first thing I notice is, again, how mathematical Erlang is.  The solution is written in exactly the same way I do it when I&#8217;m jotting down notes while thinking about how to solve the problem.  To me, the syntax is quite elegant.</p>
<p>After going over the solutions to the exercises, we moved into concurrency.  As with most languages worth using, Erlang has a <code>spawn()</code> BIF, used to create processes.  What&#8217;s interesting about spawning processes in Erlang is that the function to do it does not take a system command.  Rather, it takes another Erlang function to run.  It&#8217;s quite a bit more elegant (there&#8217;s that word again) than the equivalent <code>fork()</code> dance done in most imperative languages.</p>
<p>Communication between Erlang processes is done via message passing; data is never shared.  As with everything else, the method for doing so is quite elegant: <code>Pid2 ! {self(), foo}</code>.  Okay, maybe someone has to be me to find that elegant.</p>
<p>The whole process concept in Erlang is quite nice and, again, elegant.  It&#8217;s plain that it is the primary method by which systems in Erlang are designed.  So far, though, we&#8217;ve only seen trivial examples.  That&#8217;s okay, because this is only a three hour tutorial.  However, as Larry Wall once said about Perl: It makes the easy things easy and the hard things possible.  It&#8217;s a good litmus test for any language.  It&#8217;s far too early for me to pass any judgment on Erlang.  I&#8217;d like to use it in anger sometime, to see how it performs for me.  Perhaps I can get my local Perl Mongers interested in chatting about it.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-practical-erlang-programming/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Perl Worst Practices</title>
		<link>http://sirhc.us/oscon-2008-perl-worst-practices/</link>
		<comments>http://sirhc.us/oscon-2008-perl-worst-practices/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 18:36:52 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[clever]]></category>
		<category><![CDATA[Damian Conway]]></category>
		<category><![CDATA[obfuscation]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Perl]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=198</guid>
		<description><![CDATA[I&#8217;m sitting in Portland 252 for my first tutorial of the day, Perl Worst Practices with Damian Conway. He&#8217;s started off by complimenting us on our intelligence and our ability to convince our bosses or significant others that paying for &#8230; <a href="http://sirhc.us/oscon-2008-perl-worst-practices/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m sitting in Portland 252 for my first tutorial of the day, Perl Worst Practices with Damian Conway.  He&#8217;s started off by complimenting us on our intelligence and our ability to convince our bosses or significant others that paying for a worst practices course was a good idea.</p>
<p>Most of us are, of course, aware of the concept of best practice when coding.  Writing code that&#8217;s maintainable, predictable, and follows the rules.  Oh, and uses Java.</p>
<p>Worst practice is, by contrast, code that is obfuscated, unmaintainable, and breaks all of the rules.  Today, we will be studying code that Damian has submitted to the Obfuscated Perl contest.  This promises to be very, very scary.</p>
<p>Damian&#8217;s entry to this contest was <a href="http://www.perlfoundation.org/perl5/index.cgi?selfgol">SelfGOL</a>, a program capable of self-replication, rewriting other Perl programs to themselves self-replicate, detecting un-rewritable programs, playing Conway&#8217;s &#8220;Game of Life,&#8221; and, as if that wasn&#8217;t enough, animating any text as a cycling marquee banner.  The main constraint of the contest is that the entry must be under 1,000 bytes of code, so it shouldn&#8217;t be too difficult to understand.  Obviously it doesn&#8217;t use any modules, because that would be too easy.  Not only that, but it doesn&#8217;t use a single control structure.  This is going to be great.</p>
<p>Following an amusing demonstration of SelfGOL, we moved into treating it as a case study for a set of principles.  Principles that will focus on the very practices SelfGOL embodies, and why they should never, ever be used.  As I intend to enjoy the discussion, I won&#8217;t spend much time writing about the discussion and examples accompanying these principles, but rather simply note the principles for my own benefit (documentation for the win).  After all, sharing all my new tips and tricks would suck all the fun out of it.</p>
<p>Principle 1: Sane and consistent layout makes code more maintainable (but it isn&#8217;t a magic bullet if the code itself is beyond help).</p>
<p>Principle 2: Using built-in features isn&#8217;t necessarily smarter or cleaner (even though fellow developers&#8217; futile struggles to recall those features can be highly amusing).</p>
<p>Principle 3: Obscure obsolete features are obscure and obsolete for a reason (and restasking them for even more obscure purposes is not helping).</p>
<p>Principle 4: Each statement should do one thing only (since that&#8217;s the upper limit most brains can comprehend).</p>
<p>Principle 5: Relying on default behavior makes code very slightly easier to write and vastly harder to read (because most readers can see better than they can think).</p>
<p>Principle 6: Randomly placed subroutine definitionss are static (in the radio interference sense).</p>
<p>Principle 7: Choose data structures that simplify your task (even if the task is to make those data structures incomprehensible).</p>
<p>Principle 8: Just because you use some operation frequently doesn&#8217;t mean it should be in a utility function (especially if it&#8217;s in a function merely to abbreviate its name).</p>
<p>Principle 9: Encapsulating the familiar can decrease maintainability (refactoring isn&#8217;t a substitute for sanity).</p>
<p>Principle 10: Treat any clever one-line solution as an alarm bell (or as an antipersonnel mine with a six-month delay fuse).</p>
<p>Principle 11: Familiarity breeds comprehension (it breeds contempt (but hey, what&#8217; doesn&#8217;t?)).</p>
<p>Principle 12: Table-driven solutions are clean, efficient, and extensible (as long as you don&#8217;t mind losing a little comprehensibility).</p>
<p>Principle 13: Building a messy data structure and then cleaning it up is often easier than building it cleanly in the first place (and to hell with the purists).</p>
<p>Principle 14: Some code is better compiled at run-time (but the urge to use <tt>eval</tt> is Nature&#8217;s way of letting you know there&#8217;s not yet enough pain or misey in your life).</p>
<p>Principle 15: Parentheses are our friends (cos, if you can remember all 24 levels of Perl&#8217;s precedence, you gotta get a life, dude!).</p>
<p>Principle 16: Edge cases suck (and edge cases of familiar constructs suck worst of all).</p>
<p>Principle 17: Code should do what it seems to be doing (especially when it seems to be doing something subtle).</p>
<p>Principle 18: Conceptual elegance is no guarantee of actual maintainability (nor a good substitute for it).</p>
<p>Principle 19: If you&#8217;re going to have default values, define them near the place they may actually be used (or, at least, somewhere they have a slim chance of being discovered).</p>
<p>Principle 20: No matter how good you think your error messages are, they&#8217;re still too brief, too obscure, and too hard to decipher (even if you&#8217;ve already taken Principle 20 into account).</p>
<p>Principle 21: Avoid using obsolete and arcane magic punctuation variables with unfamiliar default values and unexpected global effects (even if you happen to enjoy a little self-inflicted pain in other recreational activities).</p>
<p>Principle 22: The fundamental complexity of any problem is irreducible (optimizations merely redistribute the pain differently).</p>
<p>Principle 23: Code that breaks when it&#8217;s reformatted is already broken (though on a much more profound and interesting level).</p>
<p>Principle 24: If it&#8217;s impossible to understand, it&#8217;ll be impossible to maintain (on the bright side, of course, such code is highly stable).</p>
<p>This last one should, but often doesn&#8217;t, go without saying.</p>
<p>Principle 25: Phenomimetic retrodeterministic nominativism generally does not improve code comprehension (then again, did it sound like it would?).</p>
<p>Principle 26: Don&#8217;t allow dynamic behavior to violate static expectations (and the easiest way to do that is reusing over-scoped variables for unrelated purposes).</p>
<p>Principle 27: Explicit behaviors are better than implicit behaviors (especially when the specification of the implicit behavior is syntactically baroque and hard-to-spot, and the behavior itself is unknown to the majority of developers).</p>
<p>At this late point of the tutorial, <a href="http://www.canspice.org/">Brad</a> pointed out to me that all of these principles are in the included materials.  Now that I&#8217;ve already transcribed so much from the slides, I don&#8217;t have the heart to delete it all.  Of course, since I haven&#8217;t been commenting on all of the black magic to this point, there would then be very little in the end to post.  Brad also has a much better <a href="http://www.canspice.org/2008/07/22/oscon-2008-perl-worst-practices-by-damian-conway/">post</a> about this tutorial, since he actually took real notes.</p>
<p>Principle 28: Code that pre-caches or precomputes its data is much easier to maintain than code that caches or computes on-the-fly (when you&#8217;re running at multiple gigahertz, acquiring your data a few thousand operations early is still plenty JIT enough).</p>
<p>Principle 29: Coding is an art, but code shouldn&#8217;t be art (evolution made programmers boring, pedestrian, and aesthetically challenged for good reasons).</p>
<p>It&#8217;s mesmerizing to listen to the thought process behind Damian&#8217;s obfuscated code.  I can&#8217;t help but wonder if this well-organized, well-thought-out explanation is anything close to how Damian designed this program.  Or, rather, if there are extremely convoluted, scary, and most importantly, evil gears grinding away inside his head.  In fact, I suspect this entire tutorial may have been designed purely as a way of documenting SelfGOL so Damian himself can remember how it works.  Clever.</p>
<p>This kind of programming is silly and fun, but it serves a real purpose.  Pushing the limits of a language teaches about its dark places.  The understanding that comes from it vastly improves the skills of the programmer, even if&mdash;especially if&mdash;the bad things are never, ever used.  Perl, even more than other languages, encourages this kind of play, thanks to its rich diversity and culture.</p>
<p>Important safety tip: keep these tricks and contrivances for recreational purposes only.</p>
<p>I don&#8217;t know what&#8217;s more disturbing, how much of the tutorial I understood, or how much I already knew coming in.</p>
<p>[tags]oscon, oscon08, Perl, Damian Conway[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-perl-worst-practices/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Day 2</title>
		<link>http://sirhc.us/oscon-2008-day-2/</link>
		<comments>http://sirhc.us/oscon-2008-day-2/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 15:01:16 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=195</guid>
		<description><![CDATA[It&#8217;s Tuesday morning in Portland and, after last night&#8217;s festivities, I&#8217;m glad there is fruit and coffee available for breakfast at the Oregon Convention Center. The coffee is Starbucks and the fruit isn&#8217;t ripe, but it&#8217;s a welcome sustenance this &#8230; <a href="http://sirhc.us/oscon-2008-day-2/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s Tuesday morning in Portland and, after last night&#8217;s festivities, I&#8217;m glad there is fruit and coffee available for breakfast at the <a href="http://www.oregoncc.org/">Oregon Convention Center</a>.  The coffee is Starbucks and the fruit isn&#8217;t ripe, but it&#8217;s a welcome sustenance this morning.  With approximately an hour before the morning tutorials, people are slowly beginning to filter into the expo hall in search of food.</p>
<p>I have a fun day lined up.  This morning I will attend <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/2443">Perl Worst Practices</a> in Portland 252.  I&#8217;m looking forward to this tutorial, particularly because it&#8217;s being taught by <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/4710">Damian Conway</a>.  I&mdash;as well as my boss, I&#8217;m sure&mdash;am excited about the prospect of putting these practices to work when I return to my job next week.</p>
<p>After the lunch break, which will probably be spent across the river again, I am signed up for <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3038">Real Time 3D on the Web with Open Source</a> in E143/144, being taught by <a href="http://en.oreilly.com/oscon2008/public/schedule/speaker/6841">Matthew Edwards</a>.  I&#8217;m not sure what to expect from this session.  A week prior to the conference, I received an e-mail instructing me to download a set of programs, including <a href="http://www.blender.org/">Blender</a> and <a href="http://www.inkscape.org/">Inkscape</a>.  This is well out of the ordinary for me, so I&#8217;m not sure what to expect.  I hope it will be fun, but if not, I may duck out and into the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3373">Practical Erlang Programming</a> in Portland 256, which <a href="http://www.dailyack.com/">Al</a> is attending.</p>
<p>A half hour now until my first tutorial.  Time enough for more coffee.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Monday Night Entertainment</title>
		<link>http://sirhc.us/monday-night-entertainment/</link>
		<comments>http://sirhc.us/monday-night-entertainment/#comments</comments>
		<pubDate>Tue, 22 Jul 2008 07:34:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Beer]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=193</guid>
		<description><![CDATA[After the tutorials on Monday, talk on the #oscon IRC channel turned to dinner. Brad, Al, and I decided we should go in search of beer, regardless of what people wanted to do for dinner. After dropping our conference crap &#8230; <a href="http://sirhc.us/monday-night-entertainment/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After the tutorials on Monday, talk on the #oscon IRC channel turned to dinner.  <a href="http://www.canspice.org/">Brad</a>, <a href="http://www.dailyack.com/">Al</a>, and I decided we should go in search of beer, regardless of what people wanted to do for dinner.  After dropping our conference crap off in our respective hotel rooms, we met up at the conference center MAX station.  Joining our party was Jonathan, from my San Diego Perl Mongers group, and Alice, Brad&#8217;s wife.</p>
<p>We started the night at <a href="http://www.kellsirish.com/">Kells Irish Restaurant and Pub</a> on the other side of the Willamette.  The hostess there was extremely attractive, even if some in our party made note of how young she appeared.  As it&#8217;s rude to ask a woman her age, I refrained from doing so.  After a few beers and sweet potato fries, we needed to find food.  So we decided on Italian, and <a href="http://mamamiatrattoria.com/">Mama Mia Trattoria</a> fit the bill.  Near the end of dinner, I received a text message from Dan.  He and his fellow <a href="http://www.tierra.net/">Tierranet</a> attendees were at <a href="http://paddys.com/">Paddy&#8217;s Bar and Grill</a>.  So we made our way over there for a few more pints.</p>
<p>We called it a night before the MAX stopped running, and made our ways back to our respective hotels.  Dan and I happen to both be staying at the Marriott and, as we passed by the bar, we saw his fellow coworkers.  Not only that, but the barmaid, at that very moment, announced last call.  Not wanting to pass up such a coincidence, Dan and I sat down for another pint.</p>
<p>Not satisfied with the early hour, Dan and I decided to walk down to <a href="http://profile.myspace.com/index.cfm?fuseaction=user.viewprofile&#038;friendID=88965821">American Cowgirls</a>, a bar across the street from the Oregon Convention Center.  Unfortunately, the bar is closed on Sunday and Monday, so we ended up calling it a night and heading back to our rooms.</p>
<p>Ah, but it&#8217;s only Monday night, and OSCON runs through Friday.  It will be a good week.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/monday-night-entertainment/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Perl Security</title>
		<link>http://sirhc.us/oscon-2008-perl-security/</link>
		<comments>http://sirhc.us/oscon-2008-perl-security/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 23:38:39 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Security]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=181</guid>
		<description><![CDATA[After lunch, I wandered over to Portland 255 with Brad and Al for the Perl Security tutorial, presented by Paul Fenwick. Straight away I can tell that he&#8217;s going to be a lively and entertaining presenter. His slides go by &#8230; <a href="http://sirhc.us/oscon-2008-perl-security/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>After lunch, I wandered over to Portland 255 with <a href="http://www.canspice.org/">Brad</a> and <a href="http://www.dailyack.com/">Al</a> for the <a href="http://en.oreilly.com/oscon2008/public/schedule/detail/3049">Perl Security</a> tutorial, presented by <a href="http://use.perl.org/~pjf">Paul Fenwick</a>.  Straight away I can tell that he&#8217;s going to be a lively and entertaining presenter.  His slides go by quickly, as they are merely short counterpoints to his commentary.  His commentary, which is also very quick and slightly witty.  I don&#8217;t expect to have any trouble paying attention.  If anything, I&#8217;m worried that I&#8217;ll fail to pay attention to my writing and, of course, to the #oscon IRC channel.</p>
<blockquote><p>
&#8220;A computer is secure if you can depend on it and its software to behave as you expect.&#8221;<br />
&mdash;Simson Garfinkel and Gene Spafford in Practical UNIX &#038; Internet Security
</p></blockquote>
<p>In a nutshell, that&#8217;s what security is.  If a computer behaves as expected, it is secure.  That is, unless it&#8217;s expected to be insecure, I suppose.  I&#8217;m not sure I&#8217;d enjoy that situation, so I&#8217;ll assume the assumption of expected behavior is both expected and secure.</p>
<p>Most security boils down to common sense.  Unfortunately, this mythical state of being is far less common than its name would imply.  Sad, but true.  People are often lazy or distracted, and these usually lead to really stupid mistakes.</p>
<p>There is a key acronym when thinking about security: <a href="http://www.cia.gov/">CIA</a>.  No, not that CIA.  Yes, I thought so, too, at first.  What it really means is, Confidentiality, Integrity, and Accessibility.  Confidentiality, because information will not remain secure if it does not remain confidential.  Integrity, because information must remain known and trusted to remain secure.  Accessibility, because denial of access to information may result in insecurity.  I may not have done justice to this acronym, because the tutorial moved on quickly after this point.  I&#8217;m sure there are <a href="http://en.wikipedia.org/wiki/Information_security">web sites</a> dedicated to security that can better define the term.</p>
<p>Perhaps the most important piece of advice for the unwitting Perl programmer is to always perform data validation.  Never, ever trust input, <i>regardless</i> of where it came from.  Fortunately, Perl provides Taint Mode, which forces the program to mistrust input.</p>
<p>Paul shared with us a variety of examples to demonstrate why input should not be trusted, as well as a number of examples of how to properly untaint data.  As with anything, it&#8217;s easy to become lazy when untainting data, which can sometimes be as bad as not using Taint Mode at all.</p>
<p>The tutorial continued into what is essentially a list of best practices to follow when programming securely with files.</p>
<ul>
<li>Do: Use the three argument version of <tt>open()</tt>, to prevent attacks using file names with magic characters in them.</li>
<li>Do: Use <tt>sysopen()</tt> instead of <tt>open()</tt>, which provides ways to avoid overwriting a file, thus helping to prevent symlink attacks often as a result of race conditions.</li>
</ul>
<p>The common attack vector in so many of the examples given so far has been via file names.  Wouldn&#8217;t it be great if we could write programs without file names at all?  Well, when working in a Unix-like environment, we can.  Perl has the ability to use anonymous files by passing <tt>undef</tt> as the third argument to <tt>open()</tt>.  He was even kind enough to provide us with a way of passing these anonymous file handles to child processes, by disabling the close-on-exec flag prior to calling <tt>system()</tt>.  Sorry, the slide went by too quickly for me to transcribe the method.  It, along with all the other examples, are available <a href="http://perltraining.com.au/notes.html">online</a>.</p>
<p>Calling <tt>system()</tt> and using backticks make Paul really, really angry.  Why?  Because doing it right is hard.  In fact, just correctly checking the result in <tt>$?</tt> requires 10 lines of code, according to the documentation for <tt>system()</tt> in the <a href="http://perldoc.perl.org/perlfunc.html">perlfunc</a> manual page.  So, 10 lines just to verify that a single line of code executed successfully.</p>
<p>I briefly became distracted by news of a <a href="http://sirhc.us/journal/2008/07/21/fire-in-encinitas/">fire</a> back home.  However, what I was able to get is that Paul has written a module, <a href="http://search.cpan.org/dist/IPC-System-Simple/">IPC::System::Simple</a>, which, as the name implies, makes the process of calling system commands quite simple.</p>
<p>After the mid-afternoon break, we ventured into setuid and setgid programs.  Perl provides ways to determine who is really running the program (<tt>$&lt;</tt>, <tt>$(</tt>) and who is effectively running the program (<tt>$&gt;</tt>, <tt>$)</tt>).  Perl is, however, ignorant of the saved UID, which is the third UID in Unix, along with real and effective.  Unfortunately, the standard for setuid scripts is confusing and implemented differently on various systems, so don&#8217;t use it.  Really.</p>
<p>Even worse, the <tt>$&lt;</tt> and <tt>$&gt;</tt> variables are cached by Perl, so they may lie to the program, especially when using the <tt>setresuid()</tt> system call to properly drop privileges, as recommended.  Fortunately, another useful module from Paul, <a href="http://search.cpan.org/dist/Proc-UID/">Proc::UID</a> provides a solution to this caching problem.</p>
<p>Now we move into DBI security.  <a href="http://en.wikipedia.org/wiki/SQL_injection">SQL injection attacks</a> are very similar to the file name or shell attacks covered previously.  Any database programmer worth his salt should be aware of the hazards of composing SQL, so I won&#8217;t go into the examples here.  Programmers should, of course, use placeholders if they&#8217;re available.  The DBI module itself provides its own Taint Mode, both for input and output, adding all the benefits of Perl Taint Mode to database interface code.  Even better, it can be controlled on a per-statement basis.</p>
<p>All of this careful taint checking we&#8217;ve done and Perl may end up sabotaging us anyway.  When presented with files on the command line, Perl is happy to just open them using the simplistic, dangerous, single argument <tt>open()</tt> call.  Typically, this is done when using the <tt>&lt;&gt;</tt> operator in a <tt>while</tt> loop.  Also, everyone forgets to use Taint Mode in cron jobs.  Don&#8217;t do that.  Really.</p>
<p>Because Perl is written in C, the null byte becomes very interesting.  While it is a perfectly valid character in Perl strings, it marks the end of a C string.  In most circumstances, this is not a problem.  However, it can mean bad things when making systems calls, which are written in C.  Normally, at a terminal, null bytes don&#8217;t occur in user input, unless that input comes from the Web.  Null bytes can be trivially represented by the %00 escape sequence.</p>
<p>I need to go through the list of Paul&#8217;s <a href="http://search.cpan.org/~pjf/">modules</a>, since they appear to be ideal for the type of programming I tend to do, as an IT developer.  In fact, he&#8217;d like to see some Solaris patches for Proc::UID, so I can probably help him with that.</p>
<p>I noticed during the tutorial that Paul must read the <a href="http://failblog.org/">Fail Blog</a> and <a href="http://icanhascheezburger.com/">I Can Has Cheezburger</a>, or at least knows someone who does.  Quite a few of the images that have appeared on his slides have graced the pages of those web sites.</p>
<p>As an added bonus, the tutorial ended 40 minutes early, and Paul had bonus material.  What a guy.</p>
<p>The tutorial, and with it the day, is now over.  It&#8217;s time for dinner, then maybe a <a href="http://en.wikipedia.org/wiki/Birds_of_a_Feather_%28computing%29">BOF</a> session or maybe just a trip to a pub.</p>
<p>[tags]oscon, oscon08, perl, security[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-perl-security/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Monday Lunch</title>
		<link>http://sirhc.us/oscon-2008-monday-lunch/</link>
		<comments>http://sirhc.us/oscon-2008-monday-lunch/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 20:28:53 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[lunch]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=183</guid>
		<description><![CDATA[Rather than settle for the box lunches in the expo hall, a handful of us decided to hop on the MAX for a quick trip across the river for food. We ended up at the back of a truck ordering &#8230; <a href="http://sirhc.us/oscon-2008-monday-lunch/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Rather than settle for the box lunches in the expo hall, a handful of us decided to hop on the MAX for a quick trip across the river for food.  We ended up at the back of a truck ordering Mexican food.  I had a carnitas burrito and a guava soda.  It was quite a lot better than the box lunch (I will safely assume).  Actually, one of our number had grabbed a box lunch before heading out.  He thoughtfully passed it on to a hungry young woman playing guitar on a street corner.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-monday-lunch/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSCON 2008: Mastering Perl</title>
		<link>http://sirhc.us/oscon-2008-mastering-perl/</link>
		<comments>http://sirhc.us/oscon-2008-mastering-perl/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 18:56:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Perl]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=177</guid>
		<description><![CDATA[It&#8217;s early on Monday morning and I&#8217;m in my first tutorial session of the day, following the continental breakfast provided in Convention Hall E. I wasn&#8217;t overly impressed with the tutorial options this year. So, being who I am, I &#8230; <a href="http://sirhc.us/oscon-2008-mastering-perl/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s early on Monday morning and I&#8217;m in my first tutorial session of the day, following the continental breakfast provided in Convention Hall E.  I wasn&#8217;t overly impressed with the tutorial options this year.  So, being who I am, I mostly opted for the Perl track.  That brings me to where I sit now: D136, listening to <a href="http://www252.pair.com/comdog/">brian d foy</a> teach us about <a href="http://www252.pair.com/comdog/mastering_perl/">Mastering Perl</a>.  I almost didn&#8217;t attend this tutorial, since I&#8217;ve read the book and, while I found it excellent, I learned very little from it.  I took this to mean that I&#8217;ve already mastered Perl.  But, like I said, my options are limited&mdash;I&#8217;m not very interested in the introductory Python tutorial.</p>
<p>The idea behind Mastering Perl is not to talk about Perl to a group of Perl masters.  Instead, it&#8217;s about mastering Perl in the guild sense (and not of the <a href="http://en.wikipedia.org/wiki/Society_for_Creative_Anachronism">SCA</a> variety).  Back in the day, and still existing in some professions today, there was an apprentice system.  A neophyte&mdash;in today&#8217;s nomenclature, a noob&mdash;would begin acquiring skills under a master of the art.  As he progressed, he would be entrusted with more and more responsibility, until finally he became a master himself and took people under his own wings.</p>
<p>This <a href="http://en.wikipedia.org/wiki/Apprenticeship">apprenticeship</a> system, somewhat unfortunately, does not exist in the computing world.  That&#8217;s where brian d foy feels that <i>Mastering Perl</i> fits.  Lacking true masters, the book acts as a substitute.  Someday, we may even create a guild system.  But then we&#8217;d probably have to pay dues and follow rules, and that&#8217;s not very attractive.  That said, it&#8217;s the model I&#8217;m hoping to use at my own place of work.  I&#8217;d like to hire one or two developers who I can take under my own wing and mentor them in the ways of Perl and the grid.</p>
<p>The first two topics covered are tools for optimization, profiling and benchmarking.  Often mis-attributed to Donald Knuth, Tony Hoare once said, &#8220;Premature optimization is the root of all evil.&#8221;  What this means is that one should never assume what requires optimization.  Let the testing be the guide.</p>
<p>While profiling is objective, benchmarks, like statistics, are not always objective.  Everyone has an agenda and benchmarks are subjective.  Often, benchmarks are short-sighted.  For example, benchmarking code run time and attempting to optimize for it may not be worth the expense of the developer time required to make the requisite changes.  It&#8217;s worth analysing what is important before blindly following benchmarks.</p>
<p>I&#8217;ve been on the receiving end of misplaced premature optimization.  I worked with a development group that put far too much emphasis on achieving perfect results on their <a href="http://search.cpan.org/dist/Devel-Cover/">Devel::Cover</a> reports.  This led to strange bugs in their code, and a strong belief that &#8220;<a href="http://use.perl.org/~cgrau/journal/33924"><tt>new()</tt> doesn&#8217;t work that way</a>.&#8221;  As it turns out, their test suite was calling <tt>new()</tt> in two ways.  I forget what the second method was, but it was not used anywhere else in their code.  However, in order to get this test code to run, and get 100% coverage, they added code to the constructor for every class.  Code that prevented inheritance of the method.  The team then convinced themselves that constructors could not be inherited in Perl, rather than realizing that their own habits were the problem.</p>
<p>After the mid-morning break, we wrapped up the discussion on profiling and benchmarking, and moved into configuration.  This is a vital topic for anyone who desires the ability to pass a program off to users without being bothered to modify it later in response to users&#8217; desire to customize the program for a slightly different use.</p>
<p>External configuration, particularly via the command line, is something I depend on heavily, even in very simple Perl or Bourne shell scripts.  I almost always create command line options for performing a dry run or output debugging information.  Not only are these useful for development, they can live on in the final program, providing help to the final user, who more often than not is me.  Sometimes I will even add configuration to values that never change, just for when they eventually do.</p>
<p>Jumping past configuration, we move on to logging.  It&#8217;s really easy to add to a program, and it&#8217;s really useful to leave in a program when it&#8217;s released.  The ability to enable logging on the fly sure beats adding a bunch of <tt>print()</tt> calls in the code when it inevitably breaks at three in the morning.  The <a href="http://search.cpan.org/dist/Log-Log4perl/">Log::Log4perl</a> module is a particularly powerful method of adding logging to programs.  It&#8217;s well worth investigating for anyone who wants to easily add logging functionality to their code.</p>
<p>The final topic of the day is lightweight persistence.  It&#8217;s always nice to have data stick around between program invocations.  The easy way (and everything in the second half of the tutorial is easy) to add persistence to code is to not use DBI.  While DBI is powerful, it also tends to require a database server (ignoring SQLite for the moment).  Modules such as <a href="http://search.cpan.org/dist/Data-Dumper/">Data::Dumper</a>, <a href="http://search.cpan.org/dist/YAML/">YAML</a> or <a href="http://search.cpan.org/dist/Storable/">Storable</a> are ideal for easily storing and retrieving data in code.</p>
<p>After the tutorial, brian will be available at the <a href="http://www.powells.com/">Powell&#8217;s Books</a> mini store, located near the registration desk, to sign copies of <i>Mastering Perl</i>.  I already have a copy, thanks to my local <a href="http://sandiego.pm.org/">Perl Mongers</a> group, but it&#8217;s all marked up with the group name, and I wouldn&#8217;t mind having a signed copy.</p>
<p>Now it&#8217;s time for lunch, which is good, because I&#8217;m quite hungry.  I hope the conference-provided lunch is decent during the tutorials, as it was last year.</p>
<p>[tags]oscon, oscon08, perl[/tags]</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/oscon-2008-mastering-perl/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>In Transit</title>
		<link>http://sirhc.us/in-transit/</link>
		<comments>http://sirhc.us/in-transit/#comments</comments>
		<pubDate>Mon, 21 Jul 2008 03:44:36 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Travel]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=172</guid>
		<description><![CDATA[It&#8217;s time once again for my annual pilgrimmage to OSCON, the O&#8217;Reilly Open Source Conference. As much as I loathe the anticipation of and the preparation for travel, I grow excited as I finally begin my journey. I look at &#8230; <a href="http://sirhc.us/in-transit/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s time once again for my annual pilgrimmage to OSCON, the O&#8217;Reilly Open Source Conference.  As much as I loathe the anticipation of and the preparation for travel, I grow excited as I finally begin my journey.  I look at it as an adventure, even if it&#8217;s merely a few uncomforable hours in bland airports and cramped airplanes.</p>
<p>As is my habit, I arrived at the San Diego airport extra early&mdash;two and a half hours in this case.  I was extremely pleased to see no lines, at the check-in counter or security, when I entered the terminal.  Unfortunately, I was immediately told by a customer service agent that there are air traffic control delays for flights in and out of San Francisco today.  As a reward for my promptness, I was rebooked on an earlier flight, which was supposed to depart at 10:21 in the morning&mdash;approximately half an hour before I arrived at the counter.  Once I got through to the gate, which was pleasant with only one person in front of me in the security line, I discovered that it had been scheduled for 11:45.  As I wrote these words, it was announced that the flight had been released and boarding would being immediately, at 11:25.</p>
<hr />
<p>The flight itself was pleasant, if boring.  The plane was not full and I was fortunate to receive an aisle seat with a small Asian girl next to me.  While complimentary soft drinks were provided, I couldn&#8217;t help but notice that the snacks, so common on domestic flights, were nowhere to be found.  Another example of airline cost savings, no doubt.</p>
<p>We touched down in San Francisco about 10 minutes after one in the afternoon.  My connecting flight to Portland won&#8217;t depart until approximately 5:30 in the evening.  That leaves me with some four hours to kill in an airport without free wifi.  I need to compile a list of airports that offer free access to the Internet, so I can be sure to book trips only through those.</p>
<p>It&#8217;s still too early for my connecting flight to be displayed on United&#8217;s monitors, so I&#8217;ve sat down in an uncrowded restaurant, the <a href="http://www.thebuenavista.com/">Buena Vista</a>, where I&#8217;m writing this.  I&#8217;ve ordered a Gordon Biersch Marzen and a reuben with cole slaw.  It&#8217;s actually quite good.</p>
<p>I had considered attempting to stand by on an earlier flight to Portland, but the lines are long, and I have baggage checked through.  I&#8217;ll just enjoy the time I have available to me to both relax and jot down whatever comes to mind my my new <a href="http://www.moleskine.com/">Moleskine</a> notebook.  Hopefully, the monitors will display my flight&#8217;s gate soon, so I&#8217;ll know the best place to find a seat.</p>
<hr />
<p>I&#8217;m writing this now from my seat on the MAX light rail, heading to the Oregon Convention Center stop.  I&#8217;m staying in the Courtyard by Marriott, a couple blocks north of the OCC.  The flight out of San Francisco was delayed, but only by about 20 minutes.  I managed to sleep for most of the time we were in the air, so I&#8217;m feeling pretty good right now.  I&#8217;m looking forward to checking into my room and finding something for dinner.</p>
<p>As I was composing this final piece of my entry, I received a call from the fraud prevention department of my bank.  At least now I know why the MAX ticket kiosk wouldn&#8217;t accept my credit card.  How annoying.</p>
<p>Tomorrow, OSCON.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/in-transit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bound for OSCON</title>
		<link>http://sirhc.us/bound-for-oscon/</link>
		<comments>http://sirhc.us/bound-for-oscon/#comments</comments>
		<pubDate>Sat, 19 Jul 2008 23:49:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Conferences]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[OSCON]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=165</guid>
		<description><![CDATA[In a few short hours, I will pack for my trip to Portland, Ore. for the 10th annual O&#8217;Reilly Open Source Conference. This will be my third time attending, and I&#8217;m looking forward to seeing friends from past years, as &#8230; <a href="http://sirhc.us/bound-for-oscon/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In a few short hours, I will pack for my trip to Portland, Ore. for the 10th annual <a href="http://en.oreilly.com/oscon2008/public/content/home">O&#8217;Reilly Open Source Conference</a>.  This will be my third time attending, and I&#8217;m looking forward to seeing friends from past years, as well as meeting new ones.</p>
<p>Though I don&#8217;t do it very often, I really do enjoy visiting places away from home.  Unfortunately, I don&#8217;t often enjoy the act of getting there.  It seems that the sole purpose of the US airline industry is to make things as inconvenient as possible for travelers.  They&#8217;re not alone, however.  When they&#8217;re not up to the task, the US government, in the form of the <a href="http://en.wikipedia.org/wiki/Transportation_Security_Administration">TSA</a>, steps in to take up the slack.</p>
<p>Most of the time, my trips are uneventful and I end up getting worked up for nothing.  Last year, though, my checked luggage ended up on a different flight than I did.  Fortunately, both of those flights were bound for Portland, so my suitcase was delivered to the hotel later that same evening.  Here&#8217;s hoping my trip tomorrow is uneventful.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/bound-for-oscon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>No Trees in My Courtyard</title>
		<link>http://sirhc.us/no-trees-in-my-courtyard/</link>
		<comments>http://sirhc.us/no-trees-in-my-courtyard/#comments</comments>
		<pubDate>Sat, 21 Jun 2008 20:19:36 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[OSCON]]></category>
		<category><![CDATA[Travel]]></category>
		<category><![CDATA[Hotel]]></category>
		<category><![CDATA[oscon08]]></category>
		<category><![CDATA[Portland]]></category>

		<guid isPermaLink="false">http://sirhc.us/journal/?p=127</guid>
		<description><![CDATA[This is what I get for procrastinating. I won&#8217;t be staying at the &#8220;official&#8221; OSCON hotel, the Doubletree. Since I really enjoy Google Maps lately, I&#8217;ve started one for this year&#8217;s trip. The blue marker is the Oregon Convention Center. &#8230; <a href="http://sirhc.us/no-trees-in-my-courtyard/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This is what I get for procrastinating.  I won&#8217;t be staying at the &#8220;official&#8221; <a href="http://en.oreilly.com/oscon2008/public/content/home">OSCON</a> hotel, the Doubletree.  Since I really enjoy Google Maps lately, I&#8217;ve started one for this year&#8217;s trip.  The blue marker is the <a href="http://www.oregoncc.org/">Oregon Convention Center</a>.  The red marker to the east is the Doubletree.  The red pin to the north is my hotel, the Courtyard by Marriott.  For distance, it&#8217;s no better or worse than the Doubletree.  Of course, as so many of my friends will be at the official hotel, I&#8217;ll likely spend a lot of time there anyway.</p>
<p><iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;s=AARTsJomwSDv7ReWjp5swyrz7C2AjiMpnA&amp;msa=0&amp;msid=106127988227392486969.00045032bce521d97f954&amp;ll=45.529982,-122.659349&amp;spn=0.010522,0.018239&amp;z=15&amp;output=embed"></iframe><br /><small><a href="http://maps.google.com/maps/ms?ie=UTF8&amp;hl=en&amp;msa=0&amp;msid=106127988227392486969.00045032bce521d97f954&amp;ll=45.529982,-122.659349&amp;spn=0.010522,0.018239&amp;z=15&amp;source=embed" style="color:#0000FF;text-align:left">View Larger Map</a></small></p>
<p>I&#8217;m sure I&#8217;ll add more to this map later.  Such as the locations of all the good (and not so good) bars, not to mention the <a href="http://www.oregonbrewfest.com/">Oregon Brewers Festival</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://sirhc.us/no-trees-in-my-courtyard/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

