Archive for July 2010

ArchCon 2010: A tale of beer

Arch devsI don’t normally write public journal-like entries, but I’d like to describe my experience at ArchCon as an advertisement to attract more attendees next year!

As co-organizer of the conference, I felt a lot of pressure for it to go well. People had paid registration fees to attend, as well as their travel arrangements and accommodation costs. I wanted it to be worth the time, effort, and money they spent to attend.

I think it was. I feel quite confident that no-one was disappointed.

My trip started a week before the conference. Dieter came over from Belgium around the same time as me. We did some touring around Toronto and down to Niagara Falls, and I had the dubious pleasure of introducing him to Canada’s own special recipe: poutine.

On Wednesday, the day before the conference, my best friend, fellow arch user, and ex-developer, Jason Chu flew in from Victoria, BC. I navigated my way to Humber College, where the conference was hosted and where we were rooming together on campus. Our room very closely resembled a prison cell with cement walls, floors and ceilings. We each got a private bedroom; mine was especially private (and prison-like) as my magnetic key card tended to need frequent resetting.

We met up with Ricardo Alvez who gave us a tour of the college and classrooms and then drove us to a nearby Mr. Greek for supper. We were all thoroughly entertained and swapped a variety of stories, information, and ideas.

Ricardo dropped us off at our dorm where we impatiently waited for our third roommate, Dan McGee (veteran pacman hacker, patch rejector, and expert freelancer). Jason and Dan had never met before, but they quickly became old friends and we spent the weekend insulting each other just like old friends who have far too much respect for each other always do.

We failed in our first mission of Archcon: Find a pub near campus. Dan and Jason were less than impress when we settled for Tim Horton’s (A Canadian coffee/donut chain) instead. Conference consensus is that, wherever Archcon 2011 is held, it must be in proximity to multiple pubs. No beer that night, but it wasn’t for lack of trying!

We went to bed slightly too late, but got up in time. I had meant to be at the conference early and get set up before anyone arrived, but there were already several attendees in the room when I walked in. People seemed a bit nervous and reluctant to allow me to draw them into conversation, but this didn’t last. People became very animated and everyone had something to contribute.

I haven’t presented anything since I was in school, and I have always been an awful presenter with massive public speaking anxiety. So I was surprised, as I set up my introductory speech, to find I felt relaxed and comfortable and was looking forward to the talk. I don’t think the talk was terribly well done, but I was happy with it, and most importantly, enjoyed it. The best part was, having my talk over first, I was able to enjoy the rest of the conference completely anxiety free!

We all experienced a fair amount of anxiety to begin with, though, as wireless was not immediately available. We had an ethernet port in the room, but no wireless routers. This was eventually resolved when Jason set his laptop up as an access point.

We had arranged scheduled talks in one room with various versions of free form discussion in a second room. With the small number of attendees, the second room didn’t get much use on day one, although a small collection of us got together for an informal bug squashing. I had intended to run this in parallel with an online bug squashing in IRC, but I had trouble getting into IRC and had previously thoroughly forgotten to advertise the session! I wrote a patch for an archweb bug, but I’m sure Dan will be rejecting it.

The conference was catered with pastries and drinks at breaks, and burgers, hotdogs, and way too much salad at lunch.

I am writing this as I upload and encode videos, so I won’t describe individual talks. The presenters were all game and presented well. The talks really made the conference, and I think a lot of enthusiasm for Arch development was generated among the participants, even (or especially) those of us who have basically left the community.

Day one ended with a trip downtown to find food and, more importantly, beer. I’d say about half the attendees went out, and I’m pretty confident fun was had by all. If laughter is the best medicine, we should all be very healthy for some time to come. Matt and Jason’s argument about…. well, I’m not sure what they were arguing about, but it was entertaining to watch them argue.

Day two started about 15 minutes late. Most people showed up surprisingly close to on time in spite of the late night. Coffee was consumed. After the scheduled talks wrapped up, several attendees presented “lightning talks” (5-8 minutes on whatever topic makes you happy). These forced a lot of variety into a short amount of time and were quite entertaining.

I was sad that we missed out on the development sprints. These were scheduled to occur in parallel with the last talk, but I think we were all a bit too tired and decided to watch the talk instead. I had in my mind we’d have time to do development after the lightning talks, but instead we ended the conference early. Some people left, having to catch planes, buses, or other commitments, but a large group of us stuck together. Dan and Jason coerced Kevin into chauffeuring them through a beer run while the rest of us borrowed Dan’s disc to play a game of three on three ultimate. Given Toronto’s humidity, we were soaked with sweat in short order. I still managed to cause grievous injury to my right thumb, though. It’s still hard to type and even harder to text as I write this.

Once Dan, Jason, and Kevin returned, and Jason had fixed a problem with his company’s web servers, we headed over to a Chinese buffet for dinner. The group kept shrinking as people left.

Next, the beer was consumed in our prison-like dorm. The number of beer-consumers was disproportionate to the amount of available beer, and we ran out quickly. Alex and Eric showed up shortly after all beer cans were empty. We had to switch to alternate forms of entertainment, and rotated between exchanging friendly insults and compliments, modifying and discussing playlists, discussing the history and future of Arch Linux, and planning ArchCon2011. Jason was repeatedly asked why he wasn’t carrying his Nexus one. Apparently this question annoys him.

That was the official end of ArchCon, but not for me. Jason, Dan and I spent Saturday touring Toronto in the rain. I didn’t go up the CN tower, but they had a wireless lounge that allowed me to write a python script to create the archcon image thumbnails page you’ve seen. I wrote it on my android cell phone over SSH with my injured thumb.

Dieter and a local friend of his met us at the bottom of the CN tower and we made our way to the Cloak and Dagger for more beers. We were all hungry, but didn’t realize that their kitchen was closed on Saturday. Jason and I grabbed a pair of pizzas which disappeared to quickly. So Dieter and I picked up a couple more. Loui showed up and further Arch discussion ensued with, of course, an adequate consumption of beer. I’m told it was one of the best place to get beer in the city.

I wouldn’t know. I don’t drink.

Upcoming Schwag Shipping Delays

I’d like to thank all my Arch Schwag customers for being the best schwag customers ever! Sales are steady and brisk, and I’ve been able to donate several hundred dollars to the Arch Linux project this year. Laptop stickers are, by far, the most popular item, but handbooks, t-shirts, lanyards, and pens are also well-liked. The occasional laptop bag and piece of jewelery are also ordered.

In a few days, I will be headed to Toronto for a vacation, tai chi training, and ArchCon. This means that orders for any items I ship personally will not be shipping until the end of the month. I apologize for the inconvenience, but I’m the only person involved in these items. If you are making an order and planning to move, it may be wise to have your items shipped to an alternate permanent address.

The items affected include laptop stickers, case badges, pens, and lanyards. Orders from the Zazzle store will not be affected, nor will orders for the Arch Linux Handbook. Orders for laptop bags and jewellery will likely only suffer minor delays, as I simply have to contact the people who create them; it will depend how slow I am to deal with my e-mails.

Schwag Shipping

Canada Post recently raised its shipping rates. Again. I think it’s the third time in a year, and the increase was substantial. I have considered their rates to be unfair for quite some time, and have tended to keep my shipping rates lower than my actual costs (handling fees, such as envelopes, printer ink, and tape are other costs I face). However, I had to raise the rates on most of my products today in order to cover more of the costs. Some of my more recent shipments have cost me more than the amount I was making on the products themselves.

As a government-run corporation, I believe Canada Post should be making more of an effort to keep it’s rates low and facilitate the moving of mail across this rather large country. I find it insulting that it costs so much for me to ship items to my Canadian clients. I understand the costs associated with international shipments, but with the unique size, geography, and climate in this country (it’s a tough place to live), I feel it is very important to have the infrastructure for getting both people (it is costing my $1000 for return flights to ArchCon in Toronto and back. I can fly to Vegas with 5 nights included for half that.) and parcels across the country as cheaply, efficiently, and easily as possible.

That said, most of my schwag customers are not located in Canada, and I am taking even bigger hits on my shipments to those customers. I have investigated some alternatives, such as travelling to the US to mail orders in bulk, but less often, but USPS has also been steadily raising their rates, and the savings to my customers wouldn’t cover the gas to get down there, the hassle at the border, or the added delays.

I anticipate reduced sales from these raised prices, and I apologize to those who feel it is too expensive to order Arch Schwag products. I will continue investigating cheaper forms of logistics, and hopefully I will be able to reduce the rates someday!

Validate as you type in javascript

This is a common task, but has several facets that are easy to miss. I needed an input element that would validate as you type to ensure that an integer value was always entered. This was easily done by doing a replace against a regular expression, linked to the keyup event:

function validate_number(event) {
    this.value = this.value.replace([/[^0-9]/g,'');
}
 
$('jquery selector').keyup(validate_number);

This works fine provided the user is typing at the end of the box. The problem is that if the user has clicked in the middle of the number, aiming to insert a new digit, each time this.value is set, the cursor is moved to the end of the box, regardless of whether or not a valid character was entered. This happens on every keypress. That is bad.

The solution is to save and reset the selection range, as follows:

function validate_number(event) {
    if (this.value.match(/[^.0-9]/g)) {
        var start = this.selectionStart-1;
        var end = this.selectionEnd-1;
        this.value = this.value.replace(/[^.0-9]/g,'');
        this.setSelectionRange(start, end);
    }
}

I haven’t found any situations where this code doesn’t work, but there is one other caveat: pasting. If the user pastes a non-numeric value into the field without issuing a keypress (ie: using the right click–> paste menu), the value will not be validated. I haven’t found a way to stop this at the point when the value is pasted, but I’ve found it sufficient to additionally call the validation function when the textbox loses focus:

$('jquery selector').keyup(validate_number).blur(validate_number);

A variation of this code can be used to validate most inputs as the user types; a regular expression that matches whitespace can remove whitespace, phone numbers would look for digits and hyphens, decimal numbers would additionally search for a period, etc.