Category Archives: Conferences

SCALE 11x

Over the weekend, I attended the eleventh annual Southern California Linux Expo (SCALE 11x) at the Hilton Los Angeles Airport. I’ve been to this event a handful of times and always thoroughly enjoy myself. The hard-working folks that volunteer to run this conference outdo themselves every year.

The Expo Floor

I didn’t spend much time on the expo floor, walking through it only a couple of times. I’m not currently looking for anything to use at work, I’m not on the job market, and nothing captured my interest.

In retrospect, one thing I wish I had done was Rackspace’s breakfix challenge, which they were using as a recruitment tool. The idea behind it is that you are seated at a computer on which things are broken and are given some fixed amount of time to accomplish a number of tasks to bring the computer back to health. On Monday, my boss came into my office to enlist my help tracking down a strange bug in the way some shell initialization files were being sourced. This had been bugging (heh) them for a week and has caused some stoppage of work. After making his head spin for a few minutes, I found the problem and hacked up a workaround. So yeah, I kind of wish I’d tried my hand at the challenge.

The Sessions

I won’t attempt lengthy descriptions of the sessions I attended (there are probably dozens online already, and I think many of the sessions were recorded and will be put online). Instead, I’ll try to comment on what, if anything, I took away from each session.

Saturday Keynote: The Secure Boot Journey (Matthew Garrett)

The staff at SCALE did a great job in lining up this keynote. It was entertaining and educational. The real fear of not being able to boot Linux on commodity hardware was palpable, and I was left impressed by the efforts put forth to ensure user freedom in that respect.

I also learned that, if drinking doesn’t solve the problem, try drinking some more. If that doesn’t work, wait for the hangover to wear off, then cause trouble. Also, standards are wonderful, if you’re on the right side of them. Microsoft used the UEFI standard to defend their position on Windows 8 and secure boot. The speaker made the point that 5.56x45mm NATO is a standard, but few people on the receiving end are appropriately happy for that.

Scaling systems configuration at Facebook (Phil Dibowitz)

This session convinced me that Chef is very cool, but also very scary. It reminded me of the adage, stated by Doug Gwyn, “Unix was not designed to stop its users from doing stupid things, as that would also stop them from doing clever things.”

As a programmer, I like the idea that a configuration management system is simply a set of objects on top of a full programming language. If it doesn’t do exactly what I want, I can hack it to do so, as was demonstrated in the session. However, the thought of then handing the ability over to junior (or even senior) system administrators leaves me with no small amount of fright.

Free to be a kid (Keila Banks)

I love that SCALE had an entire track dedicated to the youth in our community. A lot of us have had, or will have, children. This is a great way of introducing younger audiences to our hobbies and fostering that curiosity and creativeness that got us started. In fact, one of the friends I attended SCALE with brought his son, who attended the two-day Linux Beginner’s Training Class.

This session wonderfully highlighted that curiosity and creativeness. Presented by the 11-year-old daughter of one of the SCALE organizers, we learned about all of the fun and useful things she does with Open Source software. From playing games to writing blogs and publishing her class’s weekly newsletter. She is exactly what I hope my daughters become.

Checkpoint, Restore, Live Migration and beyond (Kirill Kolyshkin)

I found this session interesting from an academic standpoint. It’s cool that this is being done at the kernel level, but I’m not sure how useful it is to me. The overhead of running KVM is less and less noticeable every year, and it already provides a lot of (if not all of) the capabilities already. There was some discussion about working with NFS mounts, which did pique my curiosity, but that came up during questions after the presentation. By then my eyes had already glazed over.

Practical Application Troubleshooting using strace (David Rodriguez)

I didn’t actually pay much attention to this session. From what I could gather, it was a great introduction to the strace command, and the presented case studies were quite useful. I use strace a lot at work, and I don’t recall noticing anything new during the session.

The reason my memory is so fuzzy is that, early in the session, I got the itch to clean up and post the strace-pstree script I wrote a while back. So I spent the hour doing that. Yes, I know it needs better documentation. It’s on my to-do list.

Sunday Keynote: Practical 3D Printing and the Open Source Community (Kyle Rankin)

Rather than stuff myself into the overcrowded and stuffy keynote room, I viewed it from the overflow room. While the environment was far more comfortable, the camera was only focused on the presenter, so I didn’t see any of the slides. I don’t know that it mattered much, but I did miss some of the jokes.

One of my fellow attendees took a pass on this keynote, stating that he didn’t want to listen to a bunch of mumbo jumbo about how cool 3D printing is and how it’s going to change the world. While I admit to not having paid too much attention to the talk (I foolishly had my laptop open), I don’t recall too much about changing the world. Most of what I caught was about the history of hobbyist 3D printing and what may be coming in the near future.

This keynote, in keeping with current events, also digressed into firearms. The printable AR-15 lower receiver was mentioned, along with its ability to only handle a few rounds of ammunition before failing. Based on reactions, it was difficult to judge the prevailing attitude among SCALE attendees. I’d say it was evenly split between anti- and pro-firearm people.

Your Baby Can Hack (Jenn Greenaway)

Actually, as was immediately pointed out, your baby can’t hack, and shouldn’t. It’s not healthy for babies to spend time in front of computer screens.

Of all the sessions I attended, this was my favorite. A lot of information was conveyed about the appropriate ages at which children can start using computers for different tasks. As anyone who has so much as spoken to me knows, since having children, I’ve developed a keen interest in evolutionary health and fitness. This session fit right in with all of that. My children are still young enough that I can immediately apply what I learned.

In perhaps the best demonstration ever that children are far smarter than we give them credit for, One Laptop Per Child ran an experiment, which resulted in Ethiopian children hacking Android. This should come as no real surprise to anyone who has watched their offspring learn to use an iPhone.

GTD with Emacs (Dennis Kibbe)

I’ve been using Vim, and prior to that, vi, for a cumulative 18 years. Between the muscle memory, my sizeable ~/.vimrc, and the Vim plugins I’ve written, I’ve never had any desire to learn emacs. That said, I’m always interested in seeing how people think and the things they’ve done to make their environment work for them.

This session did not disappoint. Dennis’s demonstration of org-mode was incredibly compelling. So much so that I immediately installed a mostly-compatible version for Vim. I’m not sure if I want to spend time playing with the Vim plugin or devote the time to learning enough about emacs to use org-mode. To track my time at work, I wrote some Vim macros and Perl scripts, but it could prove useful to determine how I can take advantage of org-mode to accomplish the task.

Hacking Your Health (David Uhlman)

As I wrote above, I’ve taken a keen interest in evolutionary health and fitness. As a geek, this session jumped right out at me. It didn’t disappoint. After a brief introduction to what the various measurements on a blood test mean, we were given a plethora of information on how to go about having tests run ourselves. The speaker has been involved in the health care industry, from various angles, for a number of years and spoke of the ins and outs of the system. He came off as quite knowledgeable and there was no shortage of questions from the audience. Now I know how to have a blood test run without the hassle of finding a doctor. Also cool: obtaining the raw data from a 3D body scan and using it to 3D print your own body parts.

The more amusing part of this session was the blood-alcohol guessing contest. Two volunteers were asked to have their BAC level tested, immediately consume an entire beer (beer is debatable: one drank a bottle of Corona, the other a bottle of Heineken), and finally test again after 45 minutes. The audience was to guess their final BACs, and a couple of lucky winners would receive health testing kits. One was an at-home blood type testing kit, the other was a hackable blood sugar tester. Apparently the latter is the only tester with Linux drivers available for it. For the curious, the final BAC for each volunteer was 0.00, though with the error margin for the testing device, it could have been as high as 0.02.

Honorary Mention: logstash – open source log processing and analytics (Jordan Sissel)

While I didn’t attend the logstash session, I find it worth mentioning, because seemingly everyone else did attend and afterwards it was all they could talk about.

logstash all the things

After attending the logstash session, people were ready to run their firstborn through it.

After hearing the excited and constant flow of ideas from my colleagues about what they could do with logstash, I can’t say I blame them. My day job uses Splunk, I’ve become quite familiar with using its API, and it’s unlikely to be replaced anytime soon, so I have no real interest in logstash at this time. However, I’ve made note of it, just in case I do find a need for it in the future.

The Fun & Games

Instead of making the not-so-fun drive from San Diego to LAX, I take Amtrak from Oceanside to Union Station and the bus from there to LAX. The Hilton is a quick shuttle ride (or walk) from there. Besides avoiding traffic, this gives me the opportunity to have a few drinks on my way to the conference. This year, my selection included a four pack of Oaked Arrogant Bastard.

Once everyone had arrived at the hotel on Friday, we walked to the Proud Bird, where I enjoyed a rare prime rib. The meal left me full well past lunch on Saturday. This actually helped me avoid the overpriced buffet at breakfast on Saturday morning.

For dinner on Saturday, we continued our now-four-year-old tradition1 of walking to Aliki’s Greek Taverna for dinner. I highly recommend the lahanodolmades, the pronunciation of which I usually stumble over. Being the only meal I’d consumed that day, I was left a bit hungry. When one of my friends, who did not join us for dinner, expressed a desire for fries at Carl’s Jr., I jumped at the chance for a burger.

If I’d known that food and beer would be available at game night, I may have opted for that instead. As it turns out, street-style tacos were being served. There was a beer line, but I never found out what was being served; I ended up in the hotel bar for a couple of pints instead (Sierra Nevada). Later, I did go back to game night. Once we kicked some people, playing Just Dance, off the Wii, a few of us played Mario Kart until the rented equipment was packed up.

After all was said and done2 on Sunday, we headed home, stopping at the Yard House in Irvine for dinner and drinks. After the beer over the weekend, I opted for two pints of Woodchuck Amber cider.

  1. The second year included a walk to the restaurant, but it was closed, because the cook had been involved in a car accident. []
  2. Actually, we left early, before the last session. []

OSCON 2011: Friday

Friday marked the last day of the O’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’ve sat around my hotel on Friday night with nothing to do except finish posts about OSCON. There is one drawback, though. I’m finally finishing this post 20 days later, which means it probably won’t be as fleshed out as my posts about Wednesday and Thursday.

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 open health was good, but that’s about all I can say about them.

By far I was the most pleased by the sessions I attended on Friday. First, Kevin Falcone’s Shipwright: Application Distribution Simplified. Kevin works for Best Practical, a company with the best shirts. 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.

I wasn’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, Easy Distributed Computing with Perl and Grid::Request. It seems that Victor Felix has released a module that does exactly the same thing as some of the modules I’ve maintained at work, only the design is much better. However, it doesn’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.

Since, after chatting for a bit with Victor, I was already standing outside the room well into the next time slot, I popped into Git for Ages 4 & Up. 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 tinkertoys to help the audience visualize what Git’s internal representation of the repository looked like after each command. It was definitely a different and entertaining talk.

Prior to the closing keynote, Piers Cawley was invited to sing his library song, which I mentioned in Thursday’s post, again for the benefit of all OSCON attendees.

Paul Fenwick delivered the closing keynote. If you haven’t seen one of his talks, shame on you. Here, to help you fix that, I’ll refer you to his keynote, All Your Brains Suck—Known Bugs and Exploits in Wetware.

After three days in Portland, I finally ate at Burgerville. Eating at this regional chain is something I look forward to every time I’m in the area. Though, I suppose my change in diet 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.

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 Stargate. As we were waiting to take pictures with it, Paul Fenwick happened by and offered to take some photos. He’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.

Sockgate

Photo Credit: Paul Fenwick

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’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’t regret my choice to be away for a shorter period of time, but if I go next year, I’ll probably go for the entire week.

OSCON 2011: Thursday

Thursday was the second day of sessions at the O’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, 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’s conference hasn’t had the same effect on me.

In any case, the Thursday morning keynotes were far better than those foisted upon us on Wednesday morning. Gabe Zichermann’s talk, in particular, caught my attention. In Game theory applied to user engagement in Open Source 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 lottery to reward good drivers in Sweden 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 hypermiling drivers.

Getting into the sessions, I favored those more in line with the work I do as a Perl programming system administrator. Also, it didn’t hurt that The Conway Channel 2011 happened to take place during the first time slot of the day. I’m a bit sorry I passed up DIY Clinical Trials (Or: How to Guinea Pig Your Way to Scientific Truth and Better Health), 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’t go into too much detail, only to note that he demonstrated four of his modules, using a theme I’m sure most will recognize. First, something old, updates to the Regexp::Grammars module. He then introduced something new, the IO::Prompter module, which supersedes his older IO::Prompt. There was something borrowed, the Data::Show module, which serves as a convenience wrapper around the Data::Dump module. And finally, something blue, the Acme::Crap module, which seems oddly cathartic.

I like to think I’m a halfway decent Perl programmer, but that doesn’t mean I think I can ignore things like Jacinta Richardson’s Perl Programming Best Practices 2011. 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’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’t necessarily have to be a good reason). The first of two, possibly pithy, examples of this is the local::lib and it’s default use of ~/perl5 as its include path. I prefer to use ~/local/lib/perl5 and, sure, the module allows me to do that easily enough, but it’s an extra, non-standard step. Second, the cpanm has been touted as the best way to install modules from CPAN. As a control freak with a highly customized CPAN configuration, I’ve never liked the way cpanm seems to do things its way. Admittedly, it may be customizable, but I’ve never had the need to look into it.

There’s been some noise around the office about testing Amazon’s EC2 offering. To that end, I thought James Loope’s Utility and Automation: Low Overhead Operations with Amazon & Puppet would be educational, possibly giving me some ideas about how to managing our own potential EC2 environment. Unfortunately, it didn’t work out that way for me. The talk was heavily focused on the way the web application was designed and pieces of Amazon’s infrastructure were used. We’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.

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 Achieving Hybrid Cloud Mobility with OpenStack and XCP and instead attended Piers Cawley’s Polymorphic Dispatch—It’s Not Just a Good Idea, It’s the Law. I’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 Null Object pattern and what Piers referred to as the key tenant of object-oriented programming: tell, don’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, Smalltalk Best Practice Patterns was recommended as the best book on good coding practices out there. According to Piers, it “will change the way you think about programming.”

I was in way over my head in Tom Christiansen’s Unicode in Perl Regexes. The only thing I managed to learn is that I don’t know nearly enough about Unicode to actually understand using it. I’ll leave it at that. It was a very information-dense session and it’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 Connecting iOS to the Real World with Arduino, presented by my friend Alasdair Allan, or, venturing again into the realm of health geekery, Open Source Preventive Medicine: Citizen Science Genomics

The last session I attended on Thursday had so much potential, but, for me, it fell flat. I expected A. Sinan Unur‘s Visualizing Economic Data Using Perl and HTML5′s Canvas 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 Spreadsheet::ParseExcel 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.

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—national chains in particular—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.

After dinner, we returned to the convention center for the Perl Lightning Talks and the State of the Onion. 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’t know how to act when women brave their way into our midst, the knitting convention is completely opposite. Ricardo’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.

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, “Child of the Library”. There doesn’t appear to be any video (yet) of Piers performing at OSCON, but I’ve gone ahead and embedded one that I found. It’s catchy, I had it stuck in my head for a couple of days after the conference.

We could easily see the same thing happen in the United States—and in fact I have already seen it proposed in San Diego. I’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’t yet know the Internet? I can’t, and won’t, take a side on this issue until I’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’s worth funding.

As a final, humorous note, I almost didn’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.

OSCON 2011: Wednesday

Today marks my first day of the O’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 in the past, but it adds more stress and distraction than I’d like this year. Instead, I plan to relax and enjoy each session I attend. I’ll still take a few notes, but I’ll limit myself to recapping an entire day in a single post.

I had breakfast in my hotel’s restaurant this morning, a mistake I won’t make again —over half the plate was composed of potatoes and toast, leaving little room for the eggs and sausage—. 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.

This morning’s keynotes were dry. At least, I didn’t find them at all interesting. Well, except for one. I enjoyed Ariel Waldman’s brief talk about Hacking Space Exploration. It reminded me that I don’t spend nearly enough time on Galaxy Zoo.

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—Bill Joy, Tim O’Reilly, and Al Gore to name a few—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 Nebula. While the idea of open and commodity elastic compute is cool, I have difficulty taking something seriously when it’s surrounded by as much hype as I saw during the keynote. Maybe I’m alone in this, but OSCON doesn’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’t the real audience for the announcement. Perhaps they were just using the large and popular conference as a way of getting media attention.

So, what sessions did I attend?

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’t do). Where do I end up for the first session of this conference? In Perl 5.14 for Pragmatists, presented by Ricardo Signes. For anyone who has read the Perl release notes (perl*delta), 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’s improved Unicode support. As Ricardo stated, Unicode isn’t going away, so we need to get better at working with it.

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 primal lifestyle. So I was excited to see the session Geeking in a Cabin in the Woods, 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 blog (with a really cool domain name) where he writes about his experiences.

Following in the same basic genre, I next attended Sarah Sharp’s talk on Growing Food with Open Source. 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’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’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, Garden Geek.

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’s talk on The Unexpected Resurgence of Interactive Fiction. So excited, in fact, that I passed up a session r0ml 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 Inform language and the Glulx virtual machine (not to mention current efforts to produce a web browser-based player), which leads me to think that there isn’t much point in putting any more effort into playing with TADS. He also mentioned the annual Interactive Fiction Competition, 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’d like to enter into the competition, which I should finally get started on.

For the final two sessions of the day, I decided to return to my core competency, and arguably the whole reason I’m here, and sat down in the Perl room. Damian Conway talked about (Re)Developing in Perl 6. I’ve previously attended his six hour class on this topic, but it was a nice refresher, since I don’t use Perl 6 regularly. He guided us through porting a handful of his modules—Acme::Don't, IO::Insitu, IO::Prompter, and Smart::Comments—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.

I ended my day with a session on improving code performance: Sooner, Cheaper, Better — Optimization on a Budget, presented by Eric Wilhelm. I didn’t find it very well organized or delivered, which is a shame, because I’ve seen him present before and he was rather good. After introducing us to the Rules of Optimization Club, 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’s advances coming in the form of more cores rather than more speed, optimization was replaced with parallelization. The same rules apply and it’s good to remember that.

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 QuIC booth, ate a bunch of cheese, and left at 7:00 PM …

To attend the .vimrc birds of a feather (BOF) session. A .vimrc, oft pronounced vim-wreck, is the name of the configuration file Vim uses. It’s more than a configuration file, though; it’s a full scripting engine, which provides quite a bit of potential for customization of one’s editor. Damian Conway, 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.

I didn’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’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.

OSCON 2011: Tuesday

This marks the fourth time in five years I’ve attended the O’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 last year. So I’m here, too.

Unlike in previous years, I didn’t show up on Sunday to explore Portland and attend the Monday tutorials. I didn’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.

Most of the hotels near the Oregon Convention Center (OCC) were booked up, and I left my itinerary planning to someone else (who is unfamiliar with Portland), so I’m staying at the Courtyard Marriott by the airport. This wouldn’t be so bad, but, according to Google Maps, it’s a 1.2 mile walk to the Cascades MAX station.

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

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 Bailey’s Taproom to use the bathroom and have a beer. The bartender recommended the Davis Street Tavern 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 Puppet Labs party, where I got a souvenir Open Source Lab beer mug.

Bailing fairly early on the party, I caught the MAX red line back over the river and on to the Cascades station. The hotel’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’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.

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.

OSCON 2010: License to Fail

Robert “r0ml” 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: Competition is bad, don’t do it.
  • Thursday: Licensing is bad, don’t do it.

And with that, the session is over.

I’m kidding, of course. The best part of any of r0ml’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.

I don’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’ve written while on the job. Doing so is decidedly non-trivial and, after two years I still haven’t been allowed to release my code. To say I’m disappointed is an understatement.

My experience with lawyers has been that they are extremely cautious. While frustrating, I understand that it’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’d rather not release. It can’t be easy trying to bridge the gap between the closed and open ways of doing business.

The topic was introduced with a question: What is the difference between copyright and plagiarism? Plagiarism is forever. I didn’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.

That, if one is an Open Source geek, leads one to think about licenses. Let’s take the attribution clause of the BSD, which contains two sub-clauses, for example. It’s redundant. It effectively means that the recipient of the source code can not claim credit for the author’s work. Under copyright law, this is already the case, so why the redundancy.

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 Do What The Fuck You Want To Public License.

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?

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 73 approved licenses. 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’s rare that anyone knows all that they are agreeing to in the license.

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.

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.

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.

So r0ml wrote unlicense.rb, 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’t redistributed. It does have the effect of pleasing the obsessive-compulsive user.

Under the laws of many countries, a copyright notice isn’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 all rights reserved.

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.

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’t really Open Source business models. The SQLite 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 sell them an Open Source license for the code.

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’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’t possible. Hence, capital letters. The simplest case of a disclaimer is such:

/* This program comes without any warranty, to the extent permitted by law. */

As we recall, the default case under the law is an implied warranty so including the phrase “to the extent permitted by law” is redundant. Also, it should be noted that copyright law, in the United States, is codified at the Federal level, in Title 17 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.

So finally, here is r0ml’s part serious, part humorous take away: don’t include either a copyright or 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.


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’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’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, “capitalists” will simply steal the code for their own nefarious purposes.

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.

OSCON 2010: Friday Morning Plenary Sessions

I’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’t be terribly useful to anyone.

Your Work in Open Source, 3 years of Incremental Change

Chris DiBona (Google, Inc.)

Google crawled 40 million files in Google Code to generate statistics on what’s in there. Lines of code and numbers of commits are not the most useful of metrics but that’s what they have to use.

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

Many companies are committing code, too.

Mayor Sam Adams

Sam Adams (City of Portland, Oregon)

Last September, Portland adopted one of the first Open Source policies in the nation. They’ve committed themselves to open software, open data, and Open Source in the procurement process for software.

It’s pretty cool when a politician gets it.

Situation Normal, Everything Must Change

Simon Wardley (Leading Edge Forum (CSC))

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.

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’t pay attention to it, we’ll be left behind.

Well defined processes stifle innovation.

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.

OSCON 2010: State of the Onion

The Thursday sessions are over, but before I head out to the parties, I’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 by his wife and his son, the former dressed as an angel, the latter as a devil.

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

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.

Do you think Perl 5 and Perl 6 are really the same language?

Do you think Perl 5 and Perl 6 are really different languages?

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’re sitting on the wrong fence and the voices in your head start to argue about which side has the greener grass.

When the voices in your head start arguing if the purple cow eats greener grass than the brown fence, it’s time to see a doctor. Or find a better drug dealer.

— Larry Wall

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.

Next up is a live demo of Perl 6; or, more specifically, of Rakudo Star, which is scheduled to be released next week. Some of the demos, without comment:

.say if 6 %% $_ for 1..^6
[+] gather { take $_ if 6 %% $_ for 1..^6 }
[+] grep { 6 %% $_ }, 1..^6
~[+] grep 6 %% *, 1..^6
-> $n { $n == [+] grep $n %% *,  ..^ $n }
-> $n { $n == [+] grep $n %% *,  ..^ $n }(6)

At this point, the examples scrolled off the screen due to a “whatever” example being run. That’s good news, though. It means Rakudo Star supports lazy lists and, as such, we finally have those infinite lists we’ve been promised:

0, 1, ... *

The whatever star can, in addition to being used as in an infinite series, can be used to curry a function:

(1, 1, *+* ... *)[^20]    # Fibbonacci
(0, !* ... *)[^20]        # 0 1 0 1 0 1 ...

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.

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.

A disruptive technology simultaneously does something worse and does something better than its competitors. In a time of the Unix philosophy of “do one thing and do it well,” Perl came along and attempted to do everything, but didn’t necessarily do any of it well. The Unix philosophy was broken by its own utilities. No one knew what a “thing” 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.

In California, we once had many, many colonies of ants. Now, most of California is populated by a single colony of Argentine ants. 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.

If you don’t like Camelia, you can just fork off.

— Larry Wall

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?

OSCON 2010: Awesome Things You’ve Missed in Perl

Paul Fenwick (Perl Training Australia)

Ever since I saw An Illustrated History of Failure two years ago, I’ve made it a point to see @pjf‘s talks. That’s how I find myself in his mid-afternoon session, Awesome Things You’ve Missed in Perl. Judging by the size of the crowd, I’m not the only one. However, I won’t attempt to pass along his humour in this post. I’d never do it justice.

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.

People are still out there writing Perl as if still in the dark ages of 2008. Paul doesn’t want us to write old Perl, but only new and shiny Perl. This talk only covers practices that have come about since Perl Best Practices was released.

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’s a simple way to fix this: use Moose. This module does so much of the infrastructure work of composing classes, it makes object-oriented programming enjoyable again.

Paul spent a lot of time giving a humorous, high-level overview of the features available in Moose.

The Moose module contains a huge number of extension modules in the MooseX namespace.

When I have a problem, I go down to the pub with other Perl mongers and bitch.

One of the limitations of Perl, that is exposed to Moose, is that not everything is an object. This means methods like push() or isa() can’t be called on everything. And checking types defeats the purpose of polymorphism. Enter the autobox module, which turns everything into an object. As a bonus, it operates in lexical scope. Moose exposes autobox through the Moose::Autobox module.

A module that Paul wrote, autodie, which is now included in core. This lexically scoped module removes all of the boilerplate code that goes along with trapping errors from subroutines.

Not only is Perl 5.10 awesome, but Perl 5.10 regular expressions are awesome. In particular, the introduction of named captures (via %+) made regular expressions extremely awesome.

Perl 5.10 also provides grammars in the regular expression engine. This is the basis for Damian Conway’s Regexp::Grammars module.

Referring to an article on SweeperBot in The Perl Review. However, there’s the problem of distributing a program that uses half of CPAN to users of inferior operating systems, such as Microsoft Windows. That’s where the PAR 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.

Remember to never optimize code. Programmer time is far more valuable than CPU time. However, when you must optimize code, profile first. The Devel::NYTProf makes profiling awesome.

Code reviews are important, but Perl programmers are lazy. Fortunately, the Perl::Critic module has read Perl Best Practices 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.

If you find an awesome module, buy the author a beer if you have the opportunity. There’s also CPAN Ratings to leave feedback or perlthanks in recent versions of Perl.

OSCON 2010: 21st Century Systems Perl

Matt Trout (Shadowcat Systems Limited)

The full title of this session is, 21st Century Systems Perl – the New Perl Enlightment for sysadmins

Introduction

While Perl isn’t dying, “PERL” most certainly is dying. This is a good thing, because it includes all the really crappy stuff, such as Matt’s Script Archive. Thank goodness for that. To be fair, this code would have been horrible written in any language. Remember, blame the artist, not the tool.

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.

Part 1: Minimising Developer Fatalities

As a developer, we should do what we can to make our sysadmins’ lives easier.

Right off the bat, we should use the local::lib module, which allows an application to use custom library areas without polluting the system installation areas. It can even work with /etc/skel. 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’s modules and even other applications.

Improve module installation using Module::Install.

Package modules for your distribution of choice using cpan2dist.

Improve the CPAN experience using App::cpanminus, which is amazing easy to bootstrap:

> wget cpanmin.us
> ./cpanm

Start using all of the modules associated with best practices by installing Task::Kensho.

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.

After many debug sessions, Matt has come to the conclusion that mod_$lang is evil. Jamming languages into the web server is a bad, bad idea. However, actually hooking into the different handlers can be useful. Matt’s preference now is now FastCGI.

Part 2: Maximising Automation Banality

“In the systems world, shiny and exciting is not good.”

Use the autodie (in core as of 5.10) and the IPC::System::Simple modules to reduce the repetitiveness and the common errors of systems programming.

Use IO::All to fix the syntax and semantics of I/O operations.

Systems script shouldn’t need to be deployed. It should be possible to just drop the script onto a host and it will Just Work. That’s where PAR::Packer.