San Diego Contention Society

Since May of this year, I have been a director-at-large of the San Diego Computer Society. I volunteered at the recommendation of a friend, who was retiring from an equivalent position on the board. At the time, I had no idea what I was getting into.

The named officers—president, vice president, secretary, and treasurer—are all members of the San Diego PC Users Group. Four out of the five current directors, of which I am counted, are members of the Kernel Panic Linux User Group.

This is the first time I’ve participated in a not-for-profit 501(c)(3) organization, so I don’t know how a typical group works. This one is contentious. I don’t know the motivation behind the typical volunteer board member of the San Diego Computer Society, but I now know that a cantankerous, argumentative disposition is a requirement for the job. It’s impossible, it seems, to hold a discussion without a formal, lengthy, and largely unnecessary motion first being introduced, then argued about. At one point during the board meeting last night, we were referred to as the San Diego Debate Society. I can only hope that made it into the minutes.

One member delivered an emotionally heated monologue to his fellow members. He was quite passionate, almost livid, in the belief that the organization is shrinking. He insisted that it should be growing, and he wanted to do whatever it would take to bring more groups into the fold. That got me thinking. What in fact is the purpose of the San Diego Computer Society?

The best anyone could come up with in the way of services in return for dues paid were the provision of a meeting location for the so-called special interest groups (SIGs) and liability insurance for the same. These days I would be surprised if a group couldn’t find a location to meet. Many companies are willing to provide space to employees’ groups, and free wifi is available at Panera Bread—though it’s not a convenient location for presentations. My experience with the modern technical user group has been informal gatherings instead of officially sanctioned events. In these situations, what use is liability insurance?

If asked today, I couldn’t provide an answer to any of my queries. I term as director lasts two years. In that time, I hope to find those answers.

I recently oversaw the dissolution of a failed Web-based start up company. We made the mistake of forming a board of directors. This led to more bickering than actual work. When we were launching our venture, I attempted to avoid the formation of a board, in favor of a more loosely organized company. Unfortunately, we were left to learn our lessons the hard way. Perhaps that’s just the way people are. In my experience, any time more than one person is handed any amount of power in an organization, strife will inevitably follow.

OSCON 2008: The Expo Floor

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

Every conference I’ve attended—though that hasn’t been many—have used the same gimmick in an attempt to get people to visit vendors. Each markattendee is given a “passport” 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’ve never gotten as far as entering the contest. I really hate talking to salespeople. I’m not interested in any of the products being pitched and, even if I were, there’s nothing they can’t tell me that I can’t discover for myself on the Web. At one point, I’m pretty sure Eric S. Raymond even tried to hand me a flyer—I’m unsure if it was about Free Software or sex—but I politely declined and went on my way.

I was pleased to run into Alyson at the Ticketmaster booth. We met at SCALE6x 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 Los Angeles Perl Mongers and how I wish we had someone like her in San Diego.

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’t spend much time there, but I did take advantage of the wifi as I lounged in the O’Reilly booth.

Amazon was running what I found to be an interesting gimmick in their booth. “Ninja” 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 potential improvements.

Intel’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 fail whale made me miss my partner’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’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 Moblin. Just to spite him, I told him about Snapdragon instead. What do I keep telling myself? Stupid gimmick contests aren’t worth it. What I did like about it was the social aspect. I met someone new, had a pleasant conversation, and he’s now following me on Twitter.

On Thursday at the O’Reilly booth, Brad was interviewed on camera by chromatic. I expressed my desire to see it play during a keynote, but that wasn’t meant to be. Brad uses Perl to do cool things with telescopes and munge astronomical data, which is of interest to the O’Reilly editors. He’s been asked to write an article about it, and I’m trying to convince him to give a talk at next year’s Open Source Conference.

[tags]oscon, oscon08, oscon2008[/tags]

OSCON 2008: The Twilight Perl

It’s the last session of the conference, and I saw Damian Conway’s name on the schedule. So here I am, attending The Twilight Perl. I have no idea what to expect, but come on, it’s Damian. It’s got to be good.

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’re not here, you’re missing out. I intend to sit back, relax, and enjoy.

He’s talking about the defining characteristic of a hacker. Particularly when they’re told that something is impossible and can’t be done. The reaction is typically, “you wanna bet?”

He just presented a slide that read, “Let’s leave behind the shackles of sanity…”

Now I’m scared.

This is a great talk. It’s a series of examples of things “you can’t do in Perl.” At least, not until Damian shows us how.

I think Brad may have taken notes. Which is good, because now I wish I had.

[tags]oscon, oscon08, ocon2008, Perl, Damian Conway[/tags]

OSCON 2008: Perl and Parrot

It’s the first session on Friday and I’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.

There are so many holy wars debates about whether one language is better than another. Instead, the right question to ask is whether or not the developer’s skill set is right for the job. I agree. When I look for a developer, I’m more concerned with how they think than in what language they think.

Unfortunately, Tim is preaching to the converted in this talk. Nearly the entire attendance already uses Perl and don’t believe the myths. With that, let’s conquer them anyway.

Perl is Dead

No it isn’t. It’s two decades old and still growing strong. The books aren’t flying off the presses with great speed because the Perl community already has excellent books.

The trend when searching for “web development” jobs shows Perl growing very slowly in relation to other languages, particularly PHP. However, searching for “developer” jobs shows Perl growing very strongly and holding its own extremely well.

As a lurking member of the Perl community and an active member of my local Perl Mongers group, it’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.

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.

Perl Is Hard to Read / Test / Maintain

Only if you’re doing it wrongly. We have Perl Best Practices, to use as the default documentation for coding standards, leaving developers with the need to only document when they deviate from the norm. There’s Perl::Tidy, to force any Perl code into one’s own personal style. Perl::Critic for ensuring that code is being well-written and follows best practices. And there’s no end to the Test::* modules and the work being done to make testing easy. There’s even a coverage analysis tool.

Perl 6 is Killing Perl 5

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.

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.

Perl 6 Is Not Perl

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.

Perl 6 Will Never Be Ready

It’s not on a schedule and, if it were on a schedule, it would be crap. It will be ready when it’s ready. Better to do it right than screw it up. The development model encourages a lot of experimentation, and it’s difficult to schedule experimentation.

There’s No Perl 6 Code

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.

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.

From an authority in the audience (who I don’t recognize, unfortunately), we have been told that there will be a useable Perl 6 by this Christmas. A round of applause ensued.

[tags]oscon, oscon08, oscon2008, Perl, Tim Bunce, myths[/tags]

OSCON 2008: Friday Morning Keynotes

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’s no Wall-E, but it’s quite pretty.

First up this morning Allison introduced Benjamin Mako Hill of the MIT Center for Future Civic Media. He will be speaking about Advocating Software Freedom by Revealing Errors. 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’t entirely know what’s going on.

The gist of the talk is that, when errors become visible to the user, it exposes something about the underlying technology. He’s provided several obvious examples of ATMs crashing with Windows errors. He runs the Revealing Errors Blog, too.

Next up is Dawn Nafus of Intel, speaking about Three Challenges. 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.

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.

The third challenge is to strengthen global growth in technology producers, not just consumers. We must better understand where growth is coming from.

Annoyingly, we have another speaker from Microsoft this year, Sam Ramji. He’s, apparently, here to tell us about Open Source Heroes. He’s telling us about platform trends, something we already know about. There’s some slide about applications moving into Internet moving into Web applications over the time frame 1995 through 2005.

Microsoft sees Open Source growing strong over the next decade, but it’s hard to take him seriously, given the company’s history. While he’s talking about Microsoft’s contributions to Open Source projects and the work they’ve done to improve their ability to work on Windows, I’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’re desperate to hold on to the market share they’ve so deceitfully gained.

This talk can be summed up as, Hey look, we’re not evil, look at this boringly enumerated list of Open Source stuff we’ve done.

He’s announced that Microsoft has become a “platinum” sponsor of the Apache Software Foundation. That doesn’t sound good to me. Do people forget the embrace-extend-extinguish history of the company? Should we really trust them so much?

Next up, refreshingly, is Tim Bray of Sun Microsystems, speaking to us about Language Inflection Point. There’s background music, and he’s speaking very quickly. He’s going over slides demonstrating various ways of measuring the popularity of programming languages. From search engines to book sales.

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’d use it in an ideal world than those who currently use it.

From there, he launched into a discussion of each language and their benefits and drawback as he sees them. Obviously subjective, but they’re not entirely bad points. He never got to Perl, so I’m a bit disappointed.

Finally, we have Jeremy Ruston of BT Design, who created TiddlyWiki. He’s here to tell us about Learning from Airports.

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’s visit.

Airports do serve as an excellent analogy for technology standards. Single sign-on: passports. Access tokens: boarding passes. Standard documentation: universal signage.

The keynotes wrapped up with a question and answer session with each of the morning’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.

Unsurprisingly, the majority of the questions were directed to the Microsoft representative. They ranged from (and I’m paraphrasing), why Microsoft is evil and patent bashing thinly veiled as questions. Unfortunately, the presence of the Microsoft shill speaker on stage led to a completely wasted question and answer session.

But now it’s break time, so I’m off in search of more coffee. OSCON starts way too early in the morning.

[tags]oscon, oscon08, oscon2008[/tags]

OSCON 2008, Day 5

Friday morning, and I’m sad the week is over. However, I’m a bit happy, as well. In shortly over 24 hours, I’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’s sleep instead. To that I say, Are you crazy? There’s beer! And it’s free! As in beer!

SourceForge held a couple of parties for us last night. One was at the Jupiter Hotel and the other, branded BeerForge, was at a party venue down the block from the hotel. Obviously, we attended both—twice.

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—a half gallon—of beer I had picked up at Rogue the night before.

I’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’s festivities make me almost want to take a pass on the Oregon Brewers Festival. I said, almost.

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.

First, Tim Bunce is giving a talk on Perl and Parrot: Baseless Myths and Startling Realities. I’m not as enthusiastic about Perl 6 as I once was, but I quite enjoy Tim’s sessions. Following Tim, in the same room, is Damian Conway. He’ll be presenting—oh, does it even matter?

I will be faced with a bit of a dilemma tonight. My flight home is scheduled for 6:40am tomorrow morning. However, the MAX light rail ends its service at midnight and doesn’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’ve had.

Well, I’m going to finish my breakfast and tag some photos. In just under an hour, the final day of keynotes—and thus of OSCON—get started.

OSCON 2008: State of the Onion

It’s finally time for the State of the Onion. Larry Wall introduced this year’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, and everything. Perl 6 is the everything part of the answer.

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.

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.

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.

Fundamentally, Perl 6 is very simple. It has no CORE. 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.

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’t (or won’t be).

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

I didn’t enjoy the State of the Onion as much as I have in the past. I suppose that’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’s okay, though. I’d rather he not shift focus away from the design and development of Perl.

[tags]oscon, oscon08, oscon2008, Perl, State of the Onion, Larry Wall[/tags]

OSCON 2008: Perl Lightning Talks

It’s 4:30pm on Thursday and that means it’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 summarizing, I’ll fall way behind. You’re lucky I even take the time to write this.

If you really want to know what’s going on, there’s a schedule.

For those of you still reading, here’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’t comment on all of them.


Testing databases with TAP is cool. You really can test anything with it.


Nice to see The Perl Foundation get some slots in Google’s Summer of Code this year.


It’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’m not convinced the content would be much different.


Schwern tells us that, in thirty years, time will wrap.

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

Tue Jan 19 03:14:07 2038

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

Fri Dec 13 20:45:52 1901

Wait, that’s not good. But he’s fixed it.


Sweet, Perl on Google App Engine!


Use autodie instead of Fatal. It’s better.

Also, Paul Fenwick is one of the best speakers I’ve seen in ages. I hope he becomes an OSCON staple.


F*ck, the F*cking thing is F*cked had the best slides.

IPv6Experiment.com (warning: there may be porn).

[tags]oscon, oscon08, oscon2008, Perl, lightning talks[/tags]

OSCON 2008: Hacking Wetware for Fun and Profit

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’t figure out how it is he’s never been in this country to speak before.

Paul’s preferred title for this talk is Human Interfaces for Geeks. Most geeks think of things like keyboards, mice, and monitors when it comes to interfaces. But that’s not what this is about. Those are human-computer interfaces. We’re here to talk about human interfaces. Things like aural or visual communication.

Geeks can be quite awkward when it comes to interfacing with other people.

There are normal people out there who do make sense to geeks do make a lot of sense to geeks, Sims. They have wants, fears, and needs. These are easy to see, because they have status bars. Unfortunately, real people don’t have status bars.

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.

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

It’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’ve been on vacation, ask them about it. If they’ve accomplished something, ask them about it. This makes people very happy.

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’ve only ever received one patch for my one and only CPAN module). Someone from Australia submitted a patch and I put his name in the Changes file. I know I feel amazingly good when I’ve done a good job, so I do my best to point out when people have done a good job.

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.

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

[tags]oscon, oscon08, oscon2008, people[/tags]

OSCON 2008: Ultimate Perl Code Profiling

Lunch is over and I’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 it.

The first obvious distinction between profilers is CPU time versus real time. CPU time tends to be highly granular, but doesn’t include I/O, context switching, or other kinds of blocking. That’s where real time comes in. It’s far more useful in the real world.

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.

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’s a module with dual profilers: line-based and subroutine-based.

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.

And that’s it for the description. Now we have half an hour to play with it.

The HTML-based reporting is inspired by Devel::Cover‘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—red, orange, yellow, and green—give a relative measure of deviation from the norm. Very impressive.

Even more impressive, Devel::NYTProf is capable of reporting exactly what a subroutine reference is called, even when it’s an anonymous subroutine compiled within an eval. With a handy link also provided, the called code can be easily inspected.

In summary, Devel::NYTProf is awesome. Use it. I know I will.

Tim Bunce is even more impressive than most people think he is. He is the only presenter I’ve seen so far who has managed to use IRC while giving his talk. Well, he didn’t actually type on IRC, but he had Colloquy running in the background. This particular IRC client uses Apple’s Growl feature to display notifications when you are mentioned in a channel. After he’s opened up the session to questions, one of those notifications pops up on the projected display:

<sirhc> Adam Kennedy (to Tim Bunce): Why are you so awesome?

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’t leave your IRC client open.

[tags]oscon, oscon08, oscon2008, Perl, programming, profiling[/tags]