Just Looking

Welcome to the Z-List, baby...

Sat, 16 Dec 2006

According to prophesy...
David Horsey, November 14, 2006:

David Horsey cartoon about illegal immigrants building border fence

NPR: Border Fence Firm Snared for Hiring Illegal Workers, December 14, 2006

A fence-building company in Southern California agrees to pay nearly $5 million in fines for hiring illegal immigrants. Two executives from the company may also serve jail time. The Golden State Fence Company's work includes some of the border fence between San Diego and Mexico.


Posted at 21:18 Permanent Link

MinneDemo in the PiPress
Leslie Brooks Suzukamo: MinneDemo: 'Woodstock for geeks': Techies gather at a Minneapolis bar, hoping to dazzle one another with software ideas.

Nice! This ran on the front page of the Business section, along with one of my photos.

Crowd for Doomtree Reactive Video demo

Networking among local techies isn't new. The Minnesota High Tech Association, NetSuds and The Collaborative all sponsor events that promote the state's technology industries, which have a combined annual payroll of $8.4 billion, according to the high tech association.
But those events require polish and stiff entrance fees. MinneDemo is a reaction against that.
MinneDemo's organizers -- Luke Francl, Dan Grigsby and Ben Edwards -- said their event grew out of a desire to create a network for software developers that was less focused on impressing financial backers and more "true to the technology," according to Grigsby....
[T]he MinneDemo organizers believe their showcases can unleash the passion of local developers.
"You can't buy a spot at MinneDemo," Francl said. "You've got to earn it."


Posted at 21:12 Permanent Link

Fri, 15 Dec 2006

Wisconsin Man Runs Over, Eats Seven-Legged Transgendered Deer
Headline of the week!

(I think it should say 'hermaphrodite' instead of 'transgendered' though, as being transgender is a social condition, and this dear had both male and female reproductive organs.)

Via Chris Dykstra.
Posted at 19:54 Permanent Link

Wed, 13 Dec 2006

MinneDemo 2 Recap
On Monday night, nearly 200 geeks, coders, and entrepreneurs descended on the Acadia Cafe for MinneDemo 2.

Eric Grumdahl

"Whew!" is all I can say.

It went off great! Dan and I learned from the first event and found a venue that could accommodate networking and demos. I was worried that no one would want to watch the demos, but that was completely unfounded! The demo room was packed, and so was the bar.

Crowd shot

We have to give a big thanks to our sponsors, the presenters, and Ted at the Acadia Cafe for making this event possible.

We had a really diverse crowd of people from all kinds of backgrounds. Justin Kruger and Bob Waldron -- who are hard-core into BarCamp -- even drove up from Milwaukee (and crashed at my place), and a couple of guys from Souix Falls's Electric Pulp who were in town showed up.

Unfortunately, I didn't get to see all the demos, but what I did see was promising (though next time, we're going to have to enforce the no PowerPoint rule with a cricket bat). The Doomtree Reactive Video utility was pretty much the awesomest thing I've seen in a long time.

The coolest thing about MinneDemo and MinneBar is the community that they foster. After three events, faces and names are starting to be familiar. People I met at MinneBar are friends, and people who came to the first MinneDemo are part of the tech scene. I think it will just grow from there. I'll be disappointed if we don't get some startups happening out of this...

More:

Photos on Flickr.

MinneDemo thoughts thread on Google Groups.

Graeme Thickins: 'MinneDemo 2' Was One Hot Ticket!


Posted at 22:14 Permanent Link

Thu, 7 Dec 2006

The REST Dialogs
Duncan Cragg probably thought he was clever when he started his REST Dialogs verus an imaginary eBay architect. But then Dan Pritchett, a real eBay architect jumped into the fray.

This promises to be interesting!

Pritchett makes a good point about caching: "Caching dynamically generated content is considerably more difficult than you think. There are portions of our results that can be cached but rarely the entire result set from a single request. We already to caching where it can be done and still provide correct results to the interface. Bear in mind that you are talking about a system with more than 5,000 state changes per second."
Posted at 11:39 Permanent Link

Wed, 6 Dec 2006

Nice picture, Chapstick!

Heh.


Posted at 17:20 Permanent Link

Mon, 4 Dec 2006

MinneDemo 2: Dec. 11, 2006
Friends, geeks, fellow-nerds: lend me your bandwidth!

I'd like to invite you (and your friends) to attend the second MinneDemo event. MinneDemo is the Twin Cities' version of DemoCamp, which condenses the un-conference fun of BarCamp into a single evening. MinneDemo will be held at the Acadia Cafe in Minneapolis. This venue has great beer, plus separate areas for demos and conversation.

Holiday MinneDemo Monday December 11, 6:30 - whenever (demos start at 7:00) Acadia Cafe 1931 Nicollet Ave S Minneapolis Mn 55403 http://barcamp.org/MinneDemo

We'll have 6 or 7 software demos and 20 or so beers on tap. The first 75 people in the door get a couple free drinks.

To sign up, visit the wiki page and add your name to the bottom: http://barcamp.org/MinneDemo

Hope to see you there! Feel free to pass this invitation on to others.
Posted at 11:06 Permanent Link

Fri, 1 Dec 2006

Dog saves lives, gets boot
AP: Fargo hero dog up for adoption

FARGO, N.D. -- He's a hero, but now he needs a home.
A black lab named Hunter is credited with waking up a North Dakota family in time to get them out of their burning home early on the day after Thanksgiving.
But now Melisa Sherrard and her two sons are looking for someone to adopt Hunter. She says they can't keep him in the hotel where they'll be living for months until their home is repaired.
Sherrard says Hunter and another family dog named Riley are being boarded at a West Fargo kennel until they can be adopted. She tried keeping Hunter in the hotel for two days -- but says it just didn't work.

I think if my dog saved my life and the lives of my family, I'd want to keep him!
Posted at 17:12 Permanent Link

Mon, 27 Nov 2006

Top 20 replies by Programmers to Testers when their programs don't work
Hah, I've never used any of these before!
Posted at 11:29 Permanent Link

Volleyball
Jenny and I flew home this weekend with the University of Minnesota Gophers women's volleyball team. Haven't I seen this film before? I was worried...it seems like every time a plane crashes, it takes out an assortment of All American Athletes or a Peruvian soccer team. This was a bit too close for comfort, but we made it home safely.
Posted at 00:43 Permanent Link

Sun, 26 Nov 2006

Bruce Schneier Profile
The Pioneer Press profiles Minnesota-based security expert Bruce Schneier. Certain facts are missing, though.
Posted at 23:31 Permanent Link

Tue, 21 Nov 2006

Twin Cities Code Camp Recap
(I know I promised this over a week ago, but hey, it's not like I get paid for this...)

The first Code Camp went off well, and Jason Bock deserves big props for setting it up and running the show. The event was well attended. I heard there were about 200 people there. And there were some great prizes (including two XBox 360s and two iPod Nanos) from the sponsors.

I went in knowing that it was highly .NET/Microsoft centric, and it was. Probably 80% of the people there were .NET developers. They even had Windows laptops! It was amusing to see the "different" (but, really, more typical) Dells, IBM, Sony, and HP laptops.

What about the content? When I first heard about Code Camp, I wondered how it would differ from BarCamp. I wrote at the time, "The difference from BarCamp seems to be more structure and a code-only focus." That turned out to be true. BarCamp is very ad hoc and diverse. Code Camp was more structured and more narrowly focused. Also, due to the venue, there wasn't a whole lot of room for social interaction, which is one of the best parts about conference. Indeed, the BarCamp model is to take the between sessions conversations and stretch them out to the whole conference.

My take on Code Camp is much like Jon Dahl's constructive criticism. In the future, I'd like to see more varied types of presentations and separate tracks for different technologies. It sucked getting stacked against Charles Nutter's JRuby demo. It'd be cool if there was room for everyone to socialize at lunch and during breaks. And some of the rooms didn't have projectors, but instead everyone got a monitor that mirrored the "instructor's". This was awkward because everyone is looking down instead of at you. (But having done some venue-hunting for MinneDemo I know that finding a place that accommodates all needs is murder).

That said, I think my perspective is a little different as a speaker. We had our own room for decompressing and socializing. I had a good long talk with Nathaniel T. Shutta (who I will just call "Nate" from now on to save typing...), catching up from RailsConf in Chicago, and finally met erstwhile Ruby developer Jake Good, who promises he'll come to a Ruby Users of Minnesota meeting real soon now. After my talk, Jinesh Varia from Amazon and I talked in more detail about REST versus SOAP. The speakers were also treated to an after-conference beer at a nearby sports bar.

But wait, presenters shouldn't have a different, better experience than attendees, the BarCamper says. Everyone should be a participant!

That's the biggest problem with the presenter/audience format. On the plus side, the content is more central, which leads to learning more.

The Talks

I attended Jinesh Varia's Amazon Web Services presentation, Cory Smith's XBoxFriends talk, Nate Schutta's Foundations of Ajax, and of course my own session on REST. Here's some thoughts on those.

Jinesh Varia, Build Innovative Applications Using Amazon Web Services

I figured I had to go to this because I was talking about Web Services, too. Jinesh talked primarily about Amazon S3 and EC2, which I was familiar with. However, he really opened my eyes to the possibilities here. For example, I didn't know that Smug Mug is now hosting all their photos on S3, and saving a bundle on bandwidth, too. I also learned that developers can create EC2 machine images (like a VMWare image) that can be loaded (and unloaded) on new virtual machines on demand...that's pretty cool.

Cory Smith, XboxFriends...Under The Covers

XBox Friends is a AIM-like application that tells you (from your PC) which of your XBox buddies are online, and what they're playing. So if they break out the Gears of War, you can join them. Being neither an XBox owner nor a .NET developer, this talk didn't hold much for me. I went because Jake Good told me to go to Cory's talk instead of his. :)

However, I will say that it was an entertaining talk, and Cory did a great job of presenting in a PowerPoint-less manner. He showed us real code, examples from his program, and talked about the challenges of getting XBox Friends to work (screen scraping, yeck!).

Nate Schutta, Foundations of Ajax

Nate's written a couple of books on Ajax, so I didn't want to miss this one. It was primarily a compression of the Ajax overview that he gives for the No Fluff Just Stuff tour, and as such was pretty polished. He gave a similar presentation at MinneBar in May, but this one had updated content as the state of Ajax has matured quite a bit since then.

Luke Francl, REST and Its Discontents

My own talk was mixed. I tried to talk about the advantages and disadvantages of REST versus SOAP, but my understanding of SOAP is somewhat feeble as I've never used it in a real project. I could have done a much stronger job explaining why the audience should care about REST.

I also was about 5-10 minutes short on material and didn't have a class handout sheet, which I like to do, but I didn't devote enough time to the presentation to finish these things. I think if I gave the talk again it would be much stronger.
Posted at 22:56 Permanent Link

JavaScript/CSS tool tips for links
This is nice looking JavaScript/CSS tool tip code for HTML links.

I've been thinking of doing something like this for Central Standard Tech.
Posted at 13:21 Permanent Link

IBM embraces REST for SOA
Greg Flurry, IBM developerWorks: Interactions with WebSphere Process Server and WebSphere ESB using Representational State Transfer

This is good news for people who want to integrate with IBM's "Enterprise Service Bus" but would like to use a REST-style architecture.
Posted at 10:56 Permanent Link

Thu, 16 Nov 2006

Curbly
I want to give a shout out to my friends and fellow Rubyists Ben Moore and Burno Bornsztein for launching Curbly, their DIY design social networking site (sort of Real Simple meets MySpace).

If that's not enough, they also threw together a little local news aggregator site called acu.mn. Oh you kids and your "domain name hacks"!

I'm not sure if I'd call them "Ruby on Rails Rockstars," though. :) Aren't rockstars usually trashing hotel rooms and doing lines of coke off a stripper's ass? Instead, Burno and Ben seem to enjoy hanging out, drinking beers, and talking politics. At least, that was my impression from RubyConf!
Posted at 18:13 Permanent Link

Wed, 15 Nov 2006

Backup your data
A co-worker shared this story on the importance of backing up your data:

A criminal group showed up on Thanksgiving weekend and cleaned us out. They backed up a truck to our loading dock, disabled our alarm systems then went through the office and took all the laptop and desktop machines. Fortunately for us, the unix servers were left alone. Even though these guys had defeated our internal lock systems and could have taken them, they must have considered them too difficult to fence. Our release was delayed by quite a bit because the PC developers had all the best desktop machines (which had all been stolen) and all their source code was on their machines. So they basically had to go back and re-do that last month's worth of work.

D'oh!
Posted at 17:43 Permanent Link

Sun, 12 Nov 2006

CodeCamp Photos
I've posted my photos from the Twin Cities Code Camp on flickr.

I will try to post some notes on the event as well as my slides tomorrow.
Posted at 23:32 Permanent Link

Ad trains
The Mondy Strib editorial hits at one of my pet peeves: LRT cars covered with ads so you can't see in.

Metro Transit has shrouded most of its light-rail cars in advertising. Whole trains -- windows and all -- have become gliding billboards for supermarkets, sports teams, discount stores, you name it. Commuters on platforms can't see into the cars; riders inside can see out, sort of, but only into what appears to be a murky, depressing city.

It's especially annoying when there is a big game or event downtown and most of the seats are packed -- you can't tell which car is best to get into.
Posted at 22:36 Permanent Link

Fri, 10 Nov 2006

33-No Fun? (part 2)
The City Pages has posted their account of the shut down of the 331's live music.

Two things struck me about this -- first of all, the Como Avenue Jug Band is in some small way responsible for the citations, as they were playing the night the inspector dropped by to enforce Minneapolis's anti-fun policies. What's more, I was there!

The other thing is that the reason this is happening now is that the city has switched to a new inspection system, and the 331 just got a new inspector:

[331 manager Jarret] Oulman claims that, until recently, he'd had little problem with the liquor-licensing department. "When I had the big events, the outside events, I'd go down, apply for my permit, and then totally separately, I'd write to Diane [Hofstede, Third Ward councilwoman]. She'd tell me what her concerns were, things that were useful and insightful, and I'd address those with her." But then he started working with a new inspector, Dan Niziolek. "We didn't have individual territories until September 1; before that, inspectors were city-wide," explains licensing inspector Niziolek, whose newly assigned beat includes the 331 Club. "Another inspector passed me a complaint that burlesque was being presented, and I went to investigate it on September 16. There was burlesque and amplified music, both."

Dan Niziolek? Ah, that explains things. Until last year, he was our worthless Ward 10 city councilman. How's that saying go again? "Those who can't govern, inspect"?
Posted at 12:03 Permanent Link

Take control of your interview
Reg Braithwaite: Take control of your interview

Good advice.
Posted at 11:54 Permanent Link

Thu, 9 Nov 2006

Digital River backdating?
Uh-oh, this is not good news for local eCommerce company Digital River: Digital River shareholder suit alleges backdating.

Digital River was one of nine firms Glass Lewis cited recently as having a pattern of both being late to file stock-option grant reports and having a material rise in their stock price in the time between the purported grant date and the date of the SEC filing....
The suit alleges that a statistical analysis showed a 99.5 percent likelihood that the pattern of stock-option grants being followed by stock-price increases was not the result of random good luck, thus suggesting that backdating occurred....
For example, in 2001 one set of options was dated Jan. 2, at $2.59, the stock's low that year. Immediately after, the stock spiked to as high as $8.75 before settling back to $5.125, when another 1,390,000 shares were granted to different executives. The stock rose a couple of dollars after that, before settling in the $4-to-$5 range for several months. By December, the stock traded as high as $19.60.


Posted at 23:13 Permanent Link

Twin Cities Code Camp, Saturday Nov 11, 2006
Don't forget the Twin Cities Code Camp this weekend. I'll be speaking about REST.

The schedule is available here. I think there's a lot of .NET stuff, but a little something for everything.
Posted at 23:04 Permanent Link

Passport + Postcard
Today, I got a postcard from a friend in Thailand and my passport! He got there a few days before the coup, but says it's fine. (It's good to hear from him, I was worried after the coup).

passport + postcard

I think it's an omen.

P.S.: Yes, it is one of the new RFID passports. I guess I waited too long to get one. I'll have to see if there's anything I can do about it.
Posted at 22:47 Permanent Link

Tue, 7 Nov 2006

Pareto politics
On election day, here's something to think about.

Policies that are economically optimal, like "free trade", are often promoted as beneficial to the whole public. However, these policies have winners and losers. Theoretically, the losers could be compensated by redistributing some of the gains of the winners. Then no one would be worse off, and the economy as a whole would be better off.

However, winners have every incentive to fight this redistribution and are more often than not successful because they are more powerful than losers, practically by definition. This means that the best course of action from the would-be losers' self-interested point of view is to try to prevent the policy from being instituted at all.
Posted at 16:44 Permanent Link

Fri, 3 Nov 2006

Robocall
I just got a political robocall from my own phone number. How do they do that?

I've heard of caller ID hacking. Did they do this on purpose (it's hard not to answer your own call), or was it a bug?
Posted at 17:39 Permanent Link

A scientific look at label placement on forms
Matteo Penzo, UXmatters: Label Placement in Forms.

Wow, this is great. A user experience article backed up by real numbers! (And no, I don't think Jakob Nielsen's "buy the full report" teasers count.)

Matteo analyzed four different layouts of the same web form and discovered that users had the easiest time with a vertical form layout, with form labels above the fields.

This type of analysis is very useful, so I was hoping UXmatters had more of the same. Unfortunately, it seems the site is lacking more of that sort of writing. However, the introduction to color theory ( part 2) was worth reading.


Posted at 15:48 Permanent Link

Thu, 2 Nov 2006

33-No Fun?
Wha, wha, what? No more music at the 331?

City inspectors may pull the plug on live music at the 331 Club in northeast Minneapolis, which was transformed from an unremarkable dive bar into a hip nightspot two years ago when folk, country and rock bands started playing there.
Owner Jarret Oulman, who took over the club in 2004, said he received a cease-and-desist order Wednesday from the city prohibiting "amplified" music after Nov. 15.

Man that sucks! The 331 is one of my favorite places to catch a show (not coincidentally because the Como Avenue Jug Band often plays there). Sure, the sound system sucks and it's really crowded, but it's a fun atmosphere, and no cover!
Posted at 20:07 Permanent Link

We go to Borat movie-film!
Jagshemash!!! You come to see Borat movie-film opening night, very nice, I like!!!

Please to join me, my donkey, and our wife to watch "Borat: Cultural Learnings of America for Make Benefit Glorious Nation of Kazakhstan" Friday, Nov 3 at Block E at 8pm.

Buy tickets early, hard currency only, nice.

Tell your friends!

Chenquieh!


I just got back from picking up tickets at Block E. Damn, this movie's going to be big.

BORAT

There were a ton of people lined up with passes to tonight's preview showing. It looked like it would clearly be full.

It's gonna be awesome.
Posted at 20:02 Permanent Link

Oracle Buys Stellent
Fellow Rubyist Nick Sieger sent me notice that my former employeer Stellent has been bought by Oracle for $400M. Too bad I don't have any stock.
Posted at 19:50 Permanent Link

Tue, 31 Oct 2006

Critical Habitat Plates Contest
Vote for your favorite.

I like the walleye

walleye plates

and the heron

Heron plates


Posted at 21:13 Permanent Link

Happy Halloween
I got an email forward from a relative titled "Why Dogs Bite". Here were the best pictures:

cerberus

Cerberus

spider-pug

Spider Pug
Posted at 18:15 Permanent Link

Optimizing Page Load Time
Aaron Hopkins: Optimizing Page Load Time. Fascinating investigation into how to make your pages download faster.
Posted at 13:29 Permanent Link

Nappy time:
Kurt Kleiner: The modern world killed off the nap: A tribute to the soft pleasures of dozing, backed up by hard science.

As a species, we seem designed to nap. Sleep researchers have long known that our natural circadian rhythms show two distinct dips in energy and alertness. The major dip starts in the late evening, helping us get ready for a good night's sleep.
But there's another significant dip in the early afternoon that, in a saner world, would have us all dropping off. From an evolutionary point of view, this pattern makes some sense — our ancestors evolved in the tropics, where a desire to sleep during the hottest part of the day probably helped ensure survival....
MetroNaps sells naps as a productivity-enhancing experience for office workers, one that will send you back to your high-powered job with a better attitude and a better ability to get the job done.
If that's what it takes to pry a little room out of the day for more napping, I'm all for it. But for me, the productivity enhancement is almost beside the point. It's as if someone were arguing that I should eat lunch so that I could work harder.

I always feel a little sleepy after lunch. Maybe I should stop fighting it.
Posted at 13:18 Permanent Link

In a New York Dollar
New York Magazine discovers that in New York City, a dollar is worth 76.2 cents.

The authors compare the cost of living in New York city not only to the national average, but to "a city with a statistically average cost of living yet some semblance of a cultural life": Minneapolis.

There's some interesting comparisons (read: relevant to me).

Prix fixe dinner at top restaurant
La Belle Vie . . . . . $80 a person
Per Se. . . . . . . . . . $210 a person

Museum admission
Walker Art Center . . . . . . . . . $8
MoMA . . . . . . . . . . . . . . . . . . $20

Movie ticket
The Prestige, St. Anthony Main Theater . . $8
The Science of Sleep, BAM . . $10
Posted at 13:13 Permanent Link

Thu, 26 Oct 2006

Ideas in Spring
Empathy Box: The Ideas in the Spring Framework.

I think this is a really great essay about the Spring Framework and I think the author gets it right. Spring has some good and not so good ideas in it.
Posted at 18:03 Permanent Link

The Worst Boss I Ever Had

One time, I overheard him telling Josh about a book he was writing on building development teams. (!)
Suuuure, I think he'd say anything to impress anybody.
What's the title, anyway? "The Software Development Team as a Stalinist Regime?"

-- Former Co-Worker
Posted at 10:56 Permanent Link

Wed, 25 Oct 2006

Creating a new community
John Gladding, A List Apart: How to Be a Great Host.

Interesting advice on creating an online community.
Posted at 16:23 Permanent Link

BT buys Counterpane
BT bought Counterpane, the company of erstwhile Minnesotan and security guru Bruce Schneier. Looks like it was at least $20M.
Posted at 16:13 Permanent Link

Tue, 24 Oct 2006

Planet Venus
Planet Venus now has docs. Maybe it's time to try again to migrate CST to it.

I'm still having problems with Planet barfing on my cache directory for unknown reasons. Planet doesn't report which feed is broken, or why the DB is screwed up, nor does it (usually) continue after barfing on one of the feeds.
Posted at 11:45 Permanent Link

Sun, 22 Oct 2006

Twin Cities Code Camp: REST and its Discontents
I signed up for a slot at the Twin Cities Code Camp (Nov. 11, 2006) to talk about REST. Please come! It's pretty Microsoft centric, so it'd be nice to see some Ruby and Java people there. However, there are a number of talks I'm interested in seeing, so there will be plenty for us non-Microsofties:

Here's the abstract for my talk.

REST and its Discontents
Representational State Transfer or REST has gained a lot of mind share as an alternative to SOAP-based web services. REST describes a resource-based architecture that mirrors the web. "It's just XML over HTTP" is a common refrain. But as you did deeper, REST becomes more complicated. Debates about the "right" and "wrong" ways to do REST get hot and heavy fast. What are the advantages and disadvantages of REST? Who's doing REST right and who's doing it wrong? We'll cut through the chaff, and show you how you can use REST in your web services.

Posted at 15:15 Permanent Link

Sat, 21 Oct 2006

Whisker Sparklines patch accepted
Geoffrey Grosenbach accepted my whisker sparklines patch into his library. Cool!
Posted at 13:01 Permanent Link

Fri, 20 Oct 2006

RubyConf 2006
I'm at RubyConf. Nick Sieger is doing a good job of live blogging the presentations. Check it out if you're feeling left out.

I did get a chance to talk to Geoffry Grossenbach about putting my whisker sparkline implementation into his Sparklines library. Hopefully he will accept the patch.
Posted at 16:12 Permanent Link

Thu, 19 Oct 2006

Best Essay Ever
Unknown: Planes, Trains, and Plaintains: The story of Oedipus.

"This kid was apparently high when he wrote and turned this paper in."

The sources cited page makes me laugh every time I look at it.

(Via reddit.)
Posted at 19:23 Permanent Link

Indecision and Software Development
Rob Walling: How To Burn $6,540 a Week: Indecision and Software Development.

Ugh, don't I know it.
Posted at 19:11 Permanent Link

Coffee
Tom Moertel: A Coder's Guide to Coffee: "Although coffee is commonly considered a utility beverage, it is an amazing drink when well prepared. Given its ubiquity in software and creative circles, it's likely that you will be drinking a lot of it. So why not prepare it as it was meant to be? Why not enjoy a truly good cup of coffee? If you buy fresh, high-quality beans, grind them on the spot, and brew with hot water, you can't go wrong."

I do not drink much coffee. I can't stand the bitter brew that's commonly made, so I never really got into it. These days, though, I am starting to appreciate a good cup on the weekend. Jenny and I have been enjoying the fruits of a nice french press we got for our wedding (thanks!). I'm trying to get my hands on a Zassenhaus grinder, but it's proving difficult.
Posted at 18:26 Permanent Link

Wed, 18 Oct 2006

Off to RubyConf
I'm leaving tomorrow night for Denver and RubyConf 2006. Or as I like to call it: "199 of the world's best Ruby programmers...and me".

Denver's a city I've never been too, so I hope I'll get a chance to explore it a little, but the fundamental rule of computer conferences (with the exception of CodeCon) seems to be, have them in the most boring suburban location possible. I won't have a car.

The conference looks very interesting though. I'm looking forward to Dynamic Graphics with Ruby, Zed Shaw's talk, and John Long's presentation about Radiant. Nathaniel Talbott's Barn Raising talk at RailsConf was inspiring, so Open Classes, Open Companies sounds promising. And I wouldn't miss Tim Bray's Unicode talk for the world.

All in all, it should be a good time. A few other RUM members are going, too. I'll try to update this blog and my Flickr page while I'm there.

P.S.: For a trip, check out the branding between RailsConf (slick, professional) and RubyConf ("I barely know HTML and I don't care"). I think this gives you a good idea of the hype behind Rails.
Posted at 21:44 Permanent Link

Tue, 17 Oct 2006

Securing your server
Ilya Grigorik: Securing your Rails environment.

But really this is "securing your server" with lots of good tips for closing down some typical security holes as well as preventing brute force attacks on your remaining open services.
Posted at 17:00 Permanent Link

MediaWiki Templates: Turing Complete?
I've been struggling with MediaWiki templates for a new wiki I am trying to launch, and so reading Wikimedia Proves Greenspun's Tenth Law which suggests that MediaWiki templates may be turing complete made me chuckle.

These things are insane and MediaWiki is totally getting out of hand. At this point, a limited sub-set of HTML with some sort of scripting/template language would have been preferable. And the documentation for the templates is terrible.

Check out the template docs.

Here's an example template:

{{call|={{{1}}}|{{{2}}}=x0|1={{{2}}}|2={{{3}}}|3={{{4}}}}}

WTF? This code looks like brainfuck. And that's a simple one.

Here's the template that produces the company infobox. Look at that source code!

But I guess mainly I'm just bitter because I can't get conditionals working.
Posted at 14:23 Permanent Link

Gimme back my Google!
Give me back my Google is a searchbox you can use to filter out all the annoying product "review" sites from your searches. It translates this search " nikon d200" into " nikon d200 -site:kelkoo -site:ciao -site:bizrate -site:pixmania.co.uk -site:pixmania.com -site:dealtime.com -site:dealtime.co.uk -site:pricerunner.co.uk -site:pricerunner.com -site:pricegrabber -site:pricewatch -site:shopping.msn.com -site:resellerratings -site:epinions.com -site:nextag -site:comparestoreprices.co.uk -site:unbeatable.co.uk -site:ebay -site:shopping.com -site:shopbot".

Via Daring Fireball.
Posted at 11:48 Permanent Link

Fri, 13 Oct 2006

Scott Adams financial advice
Here's Scott Adams's financial advice:

  1. Make a will
  2. Pay off your credit cards
  3. Get term life insurance if you have a family to support
  4. Fund your 401k to the maximum
  5. Fund your IRA to the maximum
  6. Buy a house if you want to live in a house and can afford it
  7. Put six months worth of expenses in a money-market account
  8. Take whatever money is left over and invest 70% in a stock index fund and 30% in a bond fund through any discount broker and never touch it until retirement
  9. If any of this confuses you, or you have something special going on (retirement, college planning, tax issues), hire a fee-based financial planner, not one who charges a percentage of your portfolio

Apparently he wanted to publish a one page book with this advice.
Posted at 15:29 Permanent Link

Oh noes! MacBook Random Shutdown Hits
Last night, I was happily hacking away with Emacs and a couple terminals open, and then bam my MacBook shut off suddenly.

I stared in surprise for a moment at the black screen, then turned the machine back on. It started booting, and then turned itself off like before. I unplugged the AC power and tried again. No luck.

Oh, shit, I'm thinking. What about my data? I should have backed up. I'll have to take it in to get it fixed. But I'm going to RubyConf next week!

Sigh.

So I tired taking out the battery and replacing it, and for some reason that worked.

I did a little research and found out that this problem is pretty common with MacBooks. There's a website devoted to the problem, Apple has acknowledged the issue, and some users are organizing a class-action lawsuit. Some guy even got a video of the random shutdown happening at the Apple store (note: for me, the video pauses at 8 seconds. If you skip past that you can see the shutdown).

The problem is apparently caused by a short circuit where some wires melt to the heatsink.

Marc Zeedar suggested maxing out both processors with yes > /dev/null & yes > /dev/null would allow him to reliably reproduce the problem, but that didn't work for me. So far, it hasn't happened again. My plan is to back up my data, take it to Denver for RubyConf, and then replace it.
Posted at 15:24 Permanent Link

Tue, 10 Oct 2006

Ruby Linguistics library
The Ruby Linguistics library looks like a good way to get those pesky human-sounding messages in your Ruby app. (Via Reddit)
Posted at 16:31 Permanent Link

THE INTERNET
I love this comic.
Posted at 15:35 Permanent Link

Logging out of HTTP Basic Auth
If you're down with the RESTifarians, you loves you some HTTP authentication. Baked right into the spec, it's got everything you need to log in users.

One problem with it is that it's hard to log out users. Typically, the browser keeps sending the authentication headers until it is quit.

Michael Lucas-Smith came up with a somewhat hackish solution to this problem: Logging out of HTTP Basic Auth.

In the comments, Elliotte Rusty Harold points out it doesn't have to be so difficult:

Invalidating the realm is a good idea, but there's no reason to use a cookie to do it. As long as we're using cookies you might as well as use them for authentication. Better to give the user a button or some such on your site that invalidates the realm. You can time out the realm automtaicaly after a few hours of inactivity.


Posted at 15:33 Permanent Link

Fri, 6 Oct 2006

Cool Java code: anonymous class plus instance initializer
Ryan Sonnek posted a neat example of how to use anonymous classes and instance initializers to initalize a Map easily, right were you declare it. He's using this for his JavaScript builder.

Check out this code example:

Map options = new HashMap() {{
  put("key", "value");
  put("option", "foo");
  put("flag", "bar");
}};

Ryan calls it a "little-known Java feature called an initializing block":

Huh! I didn't know you could do that. So I tried to figure out how it works. It's interesting. I've used both components separately, but never put them together like this.

The first set of { } creates an anonymous class as a subclass of HashMap. You see this type of code a lot, especially for event listeners. They're also nice for FileFilters.

The second { } I've also used before, but it is rare. It's an instance initializer. (See also this discussion of them.)

So basically you're creating a subclass of HashMap and then setting the values you want in its instance initializer. Clever.

I ran this code in BeanShell and sure enough it reported the class of the instance as "global$1" instead of HashMap.

I ran this past my friend Nick and he replied with another neat trick:

I've used the new <someclass>() {} trick so that I can distinguish between classes in the debugger.
Eg.,
class X {
  Map m = new HashMap() {};
}
class Y {
  Map m = new HashMap() {};
}
The debugger will say X$1, instead of HashMap -- useful when debugging deadlocks and it isn't clear which object is in contention.

Posted at 20:34 Permanent Link

Thu, 5 Oct 2006

Chipmark: a great idea for a college class
As an alumni of the University of Minnesota Computer Science Department, I receive a bi-annual newsletter from the Department called SoundByte.

The Spring/Summer 2006 issue had an interesting article about an innovative two semester-long class taught by popular professor John Riedl.

The students who sign up for this class spend 30 weeks working on Chipmark, an open source de.lico.us knockoff. The cool thing about this is that they spend a long time working together on a real project, that runs on a real server, with real users. They also have to deal with legacy code, because each class builds on the previous class's work.

Here's some snippets from the article:

Do you want to learn how to really build software ... and get Upper Division CSci credits at the same time? Are you tired of 1-2 week assignments that just get thrown away when you finish them? Do you want to ge evaluated on your ability to build software, rather than your ability to memorize facts for a test? Then consider this class: working together with 10-12 focused students for 30 weeks over two semesters to deliver a useful open source software product to the world!
So read the first paragraph in an email invitation from Prof. John Riedl to Computer Science undergraduates. He wanted to give students the opportunity to participate in an unique class, gaining valuable experience building software in a way that isn't possible in a conventional classroom setting....
This project class isn't like other classes. Instead of attending lectures and coding textbook programs every few weeks, the Chipmark team meets twice a week to discuss progress and work together in the same room. The project has different areas of responsibility such as team lead, release manager, and user interface manager. This means that everyone has an area of responsibility and an opportunity for leadership....
UMN Computer Science majors learn how to program in Java in the second course they take. Chipmark team members apply their Java skills, but they also learn how much more there is to a software project than just writing code. They work with a wide range of industry standard tools including Ant (to build the software), CVS (for change management), Javascript and C++ (for browser extensions), Tomcat and MySQL(to run the Chipmark server), and MRTG (to monitor server status).

I think this is really cool. One of my constant complaints about my education is that the importance of source control was never addressed -- not even in my software engineering class (where, like the Chipmark project, our code was turned over to the next year's class -- sorry about the XML sit ups, guys!)

This class addresses that, and more. I wish I'd had the opportunity to take a class like that. I think it would have made me a better software developer, sooner.
Posted at 17:23 Permanent Link

Ajax and REST
Bill Higgins: Ajax and REST, Part 1: Advantages of the Ajax/REST architectural style for immersive Web applications.

Good introduction on some of the benefits of REST, primarily caching and lower memory usage on the server side.

More REST

Brian Repko: Ain't gettin' no rest with REST.

VERSUS

Benjamin Carlyle: Common REST Questions

See also: Benjamin's REST Tutorial

I think this discussion illustrates the biggest problem with REST: it's hard to understand. Conceptually, REST is pretty easy. Use the HTTP verbs. Post some XML. But when you start doing more complicated things than creating a new record, there's a lot of disagreement about the "right way" to do it.

I mean, listen to this: "That is not to say that REST can't do transactions. Just POST to a transaction factory resource, perform several POSTS to the transaction that was created, then DELETE (roll-back) or POST a commit marker to the transaction."

Huh?

I get what Benjamin's saying here, but it's not easy...

Maybe the real problem is that SOAP was too easy. It hid the complexity of what was really going on, but the abstraction was too leaky. Network calls are not like method calls. REST tries to rectify that, but it puts more of the burden on the developer to do it right.
Posted at 16:32 Permanent Link

Tue, 3 Oct 2006

JavaScript Memory Leaks
Jack Slocum: 3 Easy Steps to Avoid JavaScript Memory Leaks.

He shows how to use the Firefox Leak Monitor plugin to find memory leaks.

We gave this a try at work and it's pretty cool. Unfortunately, it logs to a pop-up instead of a console that you can safely ignore while you're using a site.
Posted at 16:52 Permanent Link

Mon, 2 Oct 2006

Recommended: Definitive XML Schema
If you find yourself working with XML schema, I highly recommend the book Definitive XML Schema by Priscilla Walmsley. It's dry as hell, but it's also comprehensive and easy to find what you need to know.
Posted at 11:51 Permanent Link

Fri, 29 Sep 2006

MinneDemo on Ice
Mark your calendar! The second edition of MinneDemo is scheduled for December 11! Known in jest as "MinneDemo on Ice", this time, we've got the whole venue to play with. We've reserved the Acadia Cafe from 6:30 on for the exclusive use of MinneDemo attendees. There will be a separate space for networking and for watching demos, and we'll have a great sound system to use, eliminating one of the major complaints with the first MinneDemo!

Here's the email that Dan Grigsby just sent out:

Mark your calendars: the holiday edition of MinneDemo will take place on Monday, December 11th starting at 6:30pm.
http://barcamp.org/MinneDemo
We've arranged to have the Acadia Cafe (http://www.acadiacafe.com/), located on Nicollet Avenue in Minneapolis' "Eat Street" district, close their doors to the public and make both their stage/theater and the cafe/pub space available exclusively for MinneDemo attendees on the evening of Monday, December 11th.
The Acadia can accommodate a larger audience, provides us with separate spaces for presentations and networking, offers a nice menu and a really diverse set of beers and wines all in a non-corporate setting. The place has soul, and lets us address the valid gripe about not being able to hear the presenters over the chatter.
As before, we've arranged for sponsors to chip in for food and -- new this time -- drinks for the early arrivers. We're still working out the details for the menu and drinks; we'll follow up with another email when it's all squared away. Thanks to ipHouse ( http:// www.iphouse.net ), Mosquito Mole Multiworks ( http://www.mmmultiworks.com ), Kinetic Data ( http://www.kineticdata.com ), Road Sign Math ( http://www.roadsignmath.com ) and New Counsel ( http://www.newcounsel.com ) for their sponsorship.
The presentation format will be unchanged from the previous: six 15 minute presentations. As always, it's free to present and spots are available on a first come first serve basis on the wiki. Grab one if you're interested.
Please RSVP at the wiki: http://barcamp.org/MinneDemo
Thanks,
Dan Grigsby and Luke Francl

Posted at 20:28 Permanent Link

Tue, 26 Sep 2006

Nifty corners JavaScript
I've been skeptical of JavaScript rounded corners implementations, but Nifty Corners seems to work pretty well at first glance. It's imperceptible to me when the rounding takes place during page load.
Posted at 13:51 Permanent Link

Fri, 22 Sep 2006

Object/Relational Mapping is the Vietnam of Computer Science
I heard the phrase "Object/Relational Mapping is the Vietnam of computer science" thrown out somewhere recently. It's funny, but I didn't think much of it besides that.

However, I came across coiner Ted Neward's blog post where he lays out the analogy in great detail.

Object/Relational Mapping is the Vietnam of Computer Science. It represents a quagmire which starts well, gets more complicated as time passes, and before long entraps its users in a commitment that has no clear demarcation point, no clear win conditions, and no clear exit strategy."

I highly recommend a full read. His list of six possible solutions is very interesting.

Responses:

Jim Murphy: Object-Relational vs. Object-XML Mapping Layers

Coding Horror: Object-Relational Mapping is the Vietnam of Computer Science: "Personally, I think the only workable solution to the ORM problem is to pick one or the other: either abandon relational databases, or abandon objects. If you take the O or the R out of the equation, you no longer have a mapping problem."
Posted at 12:38 Permanent Link

Thu, 21 Sep 2006

Why Top Employees Quit
Dumb Little Man: Why Top Employees Quit.

Interesting. The biggest reasons were:

  1. Money
  2. Unchallenged
  3. Too challenged
  4. Dead company
  5. Random annoyances that weren't addressed

But I take this with a grain of salt because it was based on exit interviews. You're not supposed to say anything in those.
Posted at 16:51 Permanent Link

Only in Japan
Lightweight Languages 2006 poster:

LL 2006

The event was actually held in a boxing ring! Man, that's awesome. Via RedHanded.
Posted at 15:31 Permanent Link

Wed, 20 Sep 2006

Planet goes BOOM
I've been pretty pleased with Planet for CST except that it doesn't have a configuration option to control the time zone. Except today, this happened:

File "/usr/lib/python2.3/bsddb/_init_.py", line 138, in keys return self.db.keys()

bsddb._db.DBRunRecoveryError: (-30978, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: Invalid argument')

Exception bsddb._db.DBRunRecoveryError: (-30978, 'DB_RUNRECOVERY: Fatal error, run database recovery -- PANIC: fatal region error detected; run recovery') in ignored

Stupid Berkley DB.

I may have to look into alternatives. Or maybe it's happening because I'm running with Python 2.3 instead of 2.4.

Sam Ruby's Venus might be more worthy. I think it still uses BSDDB but it is more modular. Maybe I could swap out the cache for something else. Planet is very monolithic, and hard to fix.
Posted at 12:37 Permanent Link

Google Image Labeler
Google Image Labeler is fun for the whole family. You and a random partner collaborate on labeling images. Once you agree on a label, you go to the next image.

It's a really cool application of AJAX.

I wonder if it wouldn't be better to have veto over your partner's labels so you could do something more like tags. The labels I was coming up with were pretty basic: "man", "people", "map", "chart". That doesn't seem like it would help people find what they're looking for.
Posted at 11:07 Permanent Link

Tue, 19 Sep 2006

CSS Newb: Styling forms
Petr Stanicek: Styling Form Fieldsets, Legends and Labels

Previously.
Posted at 20:01 Permanent Link

How to lose your fear of being fired
Positive Sharing: How to lose your fear of being fired.

Some of the "how to" seems to involve simply having enough money not to worry about it. Which isn't necessarily an option for everyone...
Posted at 18:53 Permanent Link

Don't Swallow InterruptedException
Michael Scharf: Don't swallow InterruptedException. Call Thread.currentThread().interrupt() instead.

Doing nothing with the exception restores the interrupted flag to false. Calling Thread.currentThread().interrupt() keeps the flag set to true so you can do something about it. I did not know this.
Posted at 17:46 Permanent Link

Sat, 16 Sep 2006

Tips for getting a job through a recruiter
Raganwald: Three tips for getting a job through a recruiter (via CST via afongen)

I like the bit about the salary range. Good discussion and links in the comments. Another interesting recruiter blog I've stumbled upon recently is MN headhunter.
Posted at 12:23 Permanent Link

Fri, 15 Sep 2006

Vote Yes for better roads and transit
You may have noticed the VOTE YES banner I've put in my sidebar.

On November 7, I encourage all my readers to vote YES on the transportation amendment. This will require that all money from the motor vehicle sales tax goes for roads and transportation. Currently a large portion of this money is being directed to the general fund. You can tell by the way so many of our road projects are delayed and our infrastructure is deteriorating. A YES vote is a vote to fix that. It's also (finally!) a vote for a dedicated source of funds for transportation.

The Star Tribune endorsed the amendment in a great editorial today: Vote yes on transportation: Crosstown failure reveals a state seriously short of money.

The key point:

This would not be a tax increase. It would be a restoration of $300 million a year for transportation and a decision to hold the Legislature to its 1981 intent not to divert motor vehicle sales tax revenues to nontransportation uses. In all, $6 billion has been diverted over two decades.

And:

Transportation projects require steady, predictable, long-term funding. By failing to provide it, the Legislature has jeopardized the state's competitive position.

Let's fix this. VOTE YES!
Posted at 13:49 Permanent Link

Thu, 14 Sep 2006

Twin Cities Code Camp
Jason Bock is organizing a Twin Cities Code Camp to be held all day November 11, 2006. I put on the Central Standard Tech calendar.

The difference from BarCamp seems to be more structure and a code-only focus.


Posted at 16:12 Permanent Link

Social Drinking = $$$
Now here's a study I can get behind: Alcohol use helps boost income: study. I suppose you have to drink with your coworkers -- or at least your colleagues -- for this to work. ;)

Note this was funded by the Reason Foundation. Oh those fun-loving libertarians! I expect a study on how social pot smoking increases income next.
Posted at 14:35 Permanent Link

The Communist Party
communists partying

Some Threadless designer came up with this funny riff on the Communist "Party".

I had a similar idea. When we bought our place, I told Jenny that before we moved in, we should paint all the walls Red and have a "Communist Party". Then after the (awesome) party, we would repaint.

Of course, actually painting the walls cured me of any desire to do this for real.
Posted at 13:16 Permanent Link

Mon, 11 Sep 2006

September 11, five years later
This is the image I'll always remember from that day.


Posted at 23:37 Permanent Link

Fire!
Whoa, there's a great big plume of smoke hanging over 494 by the airport right now. I can see it from the window at the office down here in Bloomington.

You can see it on the MNDOT traffic cameras:

I hope everyone is OK.
Posted at 17:15 Permanent Link

Enscript
I was just fooling around with enscript to print some source code for a training at work. Man, I haven't done that since IT labs days at the U of M. It tooks some digging to figure out the command line options. I used to have that stuff memorized ;-)

P.S.: the wedding went great, there are a few photos on Flickr with more to come!
Posted at 11:54 Permanent Link

Tue, 5 Sep 2006

MinneDemo!
MinneDemo logo

I just got home from MinneDemo and it was a great success!

A big thanks to our sponsors: Slantwise Design, New Counsel, Ventura, Dan Grigsby, and yours truly, to our raffle sponsors Pragmatic Programmers and Intertech Training and to our venue Chaing Mai Thai.

We packed the room at Chaing Mai Thai and it was a little loud for hearing the demos. Dan and I are looking for a venue with separate spaces for chatting and watching for the next one to solve this problem.

But all in all it was great. I had a good time, the food was great, and the demos went off without a hitch for the most part.

Let's keep the energy flowing in the Twin Cities tech scene. The next MinneDemo is already in the conceptual stages. We're looking for a venue and presenters. Rawk!

Tags:
Posted at 22:21 Permanent Link

Thu, 31 Aug 2006

Xyle Scope
Xyle Scope ($19.95) looks like a pretty cool tool for web developers on Mac OS X.

It does a lot of what the Firefox Web Developer toolbar does except with WebKit and seems to be laid out better.
Posted at 18:35 Permanent Link

Wed, 30 Aug 2006

Five interesting HTML elements
SEOmoz: 5 HTML elements you probably never use (but perhaps should)

I didn't know about <optgroup>. It looks cool. <fieldset> is also nice.
Posted at 17:59 Permanent Link

Mon, 28 Aug 2006

Ten things you shouldn't buy new
Liz Pulliam Weston, MSN Money: 10 things you shouldn't buy new.

Pretty good list:

  1. Books
  2. DVDs and CDs
  3. Toys
  4. Jewelry
  5. Sports equipment
  6. Timeshards
  7. Cars
  8. Software and games
  9. Office furniture
  10. Hand tools

She also notes exceptions, like hand-held power tools, which wear out fairly quickly (good to know!).
Posted at 10:59 Permanent Link

Thu, 24 Aug 2006

Snakes and rubies
jesusphreak: Of snakes and rubies; Or why I chose Python over Ruby

You don't have to agree with him 100% to see that there are some tasks that Python is better at. Ruby is a great lanugage, but it has faults (like all languages). Matz's Ruby Interpreter is slow, much slower even than other scripting languages. Weak-to-nonexistent Unicode support. And not as many libraries as Python or Java.

Related: I'm interested in checking out Python's SQLAlchemy -- it sounds pretty sweet.
Posted at 17:46 Permanent Link

Ruby on Raels
Heh.

DHH on Raels
Posted at 13:22 Permanent Link

Wed, 23 Aug 2006

"We support X"
mikaelhg: "This is one of the things that puts me off with Rubyistas and Pythonistas: they implement some bizarre tiny subset of standard functionality for X, and then claim 'we support X'."
Posted at 10:40 Permanent Link

Tue, 22 Aug 2006

Wedding Fatigue
I hope our wedding doesn't result in wedding fatigue for our guests.

We are keeping it simple -- no bridal party, no dinners. My only regret is that it's on a Friday night which makes it harder to get to.
Posted at 13:09 Permanent Link

Mon, 21 Aug 2006

Established 19NaN
Heh:

WTF University - Established 19NaN
Posted at 15:09 Permanent Link

Wed, 16 Aug 2006

Prey
ArsTechnica:

Prey has been stuck in development hell for longer than I can remember. You can easily find the trailer for the game that was shown off at E3.
In 1998.

I saw a really early engine demo of Prey in 1997 when I went to the first QuakeCon. It wasn't some big thing. The guy sitting next to me was a developer on it or something.

Prey's been in development almost as long as Duke Nukem Forever. Except Prey actually shipped...
Posted at 13:27 Permanent Link

Tue, 15 Aug 2006

Zombie Pub Crawl 2!
It's now an annual event. Be there or be eaten alive.

Braaaaaains!
Posted at 17:27 Permanent Link

AmyKlobuchar.com launches
I'm pleased to note the launch of the new Amy Klobuchar website which I helped build.

David Krewinghaus (who has a new design company -- check them out: Crewinghouse Design) did the design and I worked on the technical set up.
Posted at 17:13 Permanent Link

Mon, 14 Aug 2006

.cat

NOTE: ICANN has expressly prohibited the use of the .cat domain for pages about cats, unless they are written in Catalan or concerning Catalan culture.
-- Wikipedia

Posted at 15:57 Permanent Link

Ajax Loading Generator
So you've got your super-cool, AJAX, web 2.0 application that does all sorts of flashy stuff right before the user's eyes. But how to let them know what's going on?

You need to generate an AJAX Loading GIF!

It's pretty sweet...you pick your design and background color, and it makes an animated GIF for you.


Posted at 14:36 Permanent Link

Fri, 11 Aug 2006

Light-weight Excel Graphs
Little Excel sparklines made out of characters ( more).

See also:

Sparklines font (site seems to be down -- linked to archived version)

My sparklines presentation
Posted at 15:24 Permanent Link

Plain English
I saw this on reddit the other day: a guide to writing in Plain English. I recommend it, even if I sometimes have trouble following it.
Posted at 12:36 Permanent Link

Thu, 10 Aug 2006

The 4 to 6 hour day
Now here's an idea I could get behind: the four to six hour day. According to researchers in Australia, working four to six hours a day is the key to happiness. (John Maynard Keynes was a fan of the idea.)

This reminds me of the thesis of the Overworked American, which was that productivity gains could allow us to have the same standard of living as 1948 and work half as much as we did then. This was written in 1991, and productivity gains have gone up enormously since 1991, so presumably we could enjoy a higher standard of living, or work even less.

Instead, at every opportunity, we've gone for "more stuff" instead of "less work". Pretty stupid if you ask me.
Posted at 17:05 Permanent Link

JSPs: Lame
This is lame. You can't run a Java web app that uses JSPs without downloading the massive Java SDK. The Java Runtime Environment, which promises to let you run Java apps, won't compile JSPs because it doesn't include a compiler.

So, this is pretty obvious. But still, it's annoying. JSPs were a huge mistake.
Posted at 15:00 Permanent Link

Tue, 8 Aug 2006

QOTD
"Running on the bleeding edge (kernels, drivers, appservers, whatever) is for children and the insane. We cranky old boring people, who actually deploy applications other people have to use/pay for, like our targets to stay put :)"

-- McClain
Posted at 19:36 Permanent Link

Chad Vader 2
Tony (who totally blogged this before me) sends along a link to Chad Vader episode 2.


Posted at 08:04 Permanent Link

Mon, 7 Aug 2006

VMWare on Mac OS X!
Yes! VMWare is porting to Mac OS X.

The ultimate development machine is on its way. The slick, easy to use Mac OS X, the power of the Unix command line, and the ability to run Windows, Mac OS X, or Linux under VMWare!

(Note: I think VMWare is vastly superior to other virtualization solutions because of the ability to snapshot your virtual machine and jump back to that point in time. Its invaluable for builds.)
Posted at 16:41 Permanent Link

Chad Vader, Day Shift Manager

Posted at 12:42 Permanent Link

Unicode for Programmers
Jason Orendorff: Unicode for Programmers (draft)
Posted at 12:05 Permanent Link

Wed, 2 Aug 2006

JRuby -- the Liger?
O'Reilly's Java animal is the tiger. If they published a book about JRuby, what would it be?

Maybe... the liger? It's pretty much my favorite animal.


Posted at 11:06 Permanent Link

Wed, 26 Jul 2006

This one's for you, Dad
This one's for you, Dad

My dad died July 26, 2005. Today is the one year anniversary of his passing.

Jenny and I commemorated it by pouring out a 40 of Colt 45 and reminiscing about him.

It's amazing to think about what I was doing this time last year. My entire world was upside down. There's a pain you feel in your chest, a physical pain that just never goes away. Afterwards, I was numb for a long time. It seems like yesterday, and yet distant. When you lose a loved one, the love you feel doesn't fade, but thankfully the pain does. Life goes on.

Last year was rough for me. Jenny and I bought a house, my dad was diagnosed with cancer and sickened and died, we bought a car, my company was sold (again)...too many changes.

This month, I turned 27 years old. My dad was only 55 when he died. People like to think of their 40s and 50s as "middle age", but really, my dad was in his "middle age" when he was my age.

That's a lot to think about. Am I living my life the way I ought to be? I don't think so. I'm not doing bad but I'm not living up to my dreams. That's my goal.

It took my dad a long time to find the place where he was really happy, but he did. He loved his job at Penn State. He kept working from home answering email for as long as he could. I wish he could've found that happiness sooner. I'm going to try.
Posted at 21:25 Permanent Link

Mon, 17 Jul 2006

Jenny and Luke
Getting a website makes it official: Jenny and I are getting married!

I got her an "engagement bike" and she said yes. Since then we've been finding out the hard way that even a "simple" wedding is extremely complicated to plan...
Posted at 11:42 Permanent Link

Fri, 14 Jul 2006

MinneDemo is coming, September 5!

What is MinneDemo? It's a weeknight version of BarCamp, with the goal of showcasing the kick-ass software development that's going on in the Twin Cities. It will be held September 5, 2006 at Chiang Mai Thai. Six short demos (mini-demos?) will be presented. The rules are simple: presenters have 15 minutes to show working software, and no slides!

Oh yeah, we've rounded up some sponsors (including me) to buy appetizers.

Sign up on the wiki page.
Posted at 10:47 Permanent Link

Keep Cool
We're undergoing a heatwave. Here's some tips to keep cool for suckers without air conditioning, like me.
Posted at 10:03 Permanent Link

Wed, 12 Jul 2006

Learning Perl -- The Hard Way
The next time I need to figure out some Perl code, I'm going to reach for Allen B. Downey's Learning Perl the Hard Way, a GFDL'd book on Perl with an easy-to-follow, right to the point style.
Posted at 11:26 Permanent Link

Mon, 10 Jul 2006

Vittles = Victuals
Another one of those weird word moments.

"Vittle" is the same word as "victual", just spelled differently...They are pronouced and mean the same thing! I knew they both meant food, but I didn't realize they were pronouced the same way. (See the usage note for victual.)
Posted at 10:47 Permanent Link

Thu, 6 Jul 2006

Google Hosted Mail
I've been reluctant to switch to GMail because I like to control all my email and I'm not sure if I trust Google with it. Sure, GMail has POP for backups, but POP sucks.

Google hosted mail for your entire domain has me itching, though. Ironically, it stores even more of your data. But the service sounds pretty nice. And if these folks on the Joel on Software forum are right, it comes with IMAP access. That would be sweet.
Posted at 16:24 Permanent Link

ROARRR!
I love it.


Posted at 15:56 Permanent Link

Wed, 28 Jun 2006

PG GTI
Well, at least he has good taste in cars (we have a 2003 Volkswagen GTI).
Posted at 11:18 Permanent Link

Mon, 26 Jun 2006

Pure Ruby
The contrast between the Java and Ruby communities approach to external libraries is interesting.

In Java, calling executables programs is hard (check out the amount of code it takes to process the input and output). Wrapping a C library is also difficult. You've got to do lots of futzing with the Java Native Interface.

Then Sun came up with the 100% Pure Java marketing campaign to promote writing applications without resorting to native code or calling external programs. This ensured maximum portability for Java applications. There is a lot of dissension and a number of spectacular failures (like Netscape's "Javagator" browser) but being 100% Pure Java is still highly regarded in the Java community, as a quick search will show. Look at the number of open source projects that come up, touting their 100% Pure Java status.

Between the difficulty of calling non-Java programs and the cultural bias against doing it, there is not a lot of this going on. That means there are things that either were re-implemented in Java, don't exist, or aren't considered.

Meanwhile, in Ruby (and Perl and Python -- the "glue" languages) the use of C extensions and calling off to external programs is widespread. Sure, a "Pure Ruby" API may be preferred if it exists, but it's not uncommon for performance bottlenecks to be re-written in C, or for Ruby libraries to wrap C libraries with a Ruby-esque interface.

This does have some problems. Not all C libraries are available on all platforms. Some scripts and libraries only work on Linux and other Unix-like operating systems. A solution that only works on most platforms would be unacceptable to many Java programmers. But it does get Ruby most of the way there, and it brings a huge advantage: Ruby can use much of the existing C libraries (or even Java, with GCJ).
Posted at 15:14 Permanent Link

Paul Graham at RailsConf
Paul Graham spoke at RailsConf on The Power of the Marginal.

I must admit I was not particularly impressed.

One thing that particularly annoyed me was this, in a bit about the "Great American Novel", written by committee:

As everyone knows, America plus tragedy equals the Civil War, so that's what it would have to be about. Better stick to the standard cartoon version that the Civil War was about slavery; people would be confused otherwise; plus you can show a lot of strength and diversity.

I am continually surprised that smart people fall for this Confederate-sympathizer "Doomed Cause" claptrap. I think it's especially popular with libertarian types, because it allows them to feel counter-cultural and vaguely superior to all those dolts who believe the "cartoon version" that the Civil War was about slavery.

Consider this analysis of the differences between the US constitution and the Confederate constitution. Nearly every substantive difference deals with cementing the institution of slavery and an inalienable right.

Certainly, the causes of the Civil War were complicated. The opposition to slavery in the North was for economic and political as well as moral reasons. A series of increasingly strained compromises managed to hold the Union together for a while. Understanding why those compromises failed is important.

But to say that the Civil War wasn't about slavery is negligent in the extreme, and in its more virulent forms, neo-Confederate or even racist. Lending support to the false idea that the civil war wasn't about slavery is foolish. Delivering it with such a sense of superiority is dangerous.

More Reading:

Blogcritics: Blogger denies slavery cause of Civil War

The Constitution of the Confederate States of America

Wikipedia: Origins of the American Civil War


Posted at 12:10 Permanent Link

Sat, 24 Jun 2006

RailsConf: Certificate of Nonconformity
My roommate Jesse Ross just got a "Certificate of Nonconformity" from some guys who are passing them out to all the people not using Apple laptops. I would estimate at least 75% of the people are using Macs here.

Tag:
Posted at 11:33 Permanent Link

Fri, 23 Jun 2006

Summer of Rails
Summer of Rails: "You installed Ruby on Rails, you bought the books, and you even made a shopping cartBut that was months ago and you still haven't shipped your first Rails app. So let's fix that."
Posted at 14:11 Permanent Link

Revolutionary Java
Rails conf has its share of Java bashing, as you might expect. I'm surprised that there's less talk of .NET or Python or Perl, but I guess it's natural given the number of Rails programmers who come from a Java background. It's what they know.

Last night over drinks, Ben Moore asked me an interesting question. Whatever the next revolutionary software development is, will it be written in Java? What advanatages does Java have over Ruby?

We came up with the JVM, the libraries, and the speed of Java. A lot of academic work is done in Java so there is a big body of research going on in Java. But is that enough?

We also agreed that even if Java is surpassed by Ruby it's not going to go away. But the Java sector may stop growing. I think you see that already with respect to the adoption of C# and .NET.

Tags: , ,
Posted at 14:01 Permanent Link

Thu, 22 Jun 2006

Railsconf!
In just a few hours, I'm heading off to Chicago for the first RailsConf! It's exciting. A bunch of us from ruby.mn are going. Say "hi" if you see me there. I put my picture on the facebook.

RailsConf attendee
Posted at 08:34 Permanent Link

Tue, 20 Jun 2006

Ox = Cow
For some reason, I did not realize that an ox and a cow were the same animal! (OK, technically, cows are the female cattle, but colloquially, we call cattle "cows".)
Posted at 16:59 Permanent Link

Mon, 19 Jun 2006

XPath and Namespaces
XPath does not have a default namespace. So if you are doing an XPath search against an XML document that has a default namespace, you are not going to find anything, unless you add that namespace to the XPath expression. In the case of a default namespace, this can be confusing. What's the prefix?

Essentially, you have to just make one up, and use it in your query. For example, if the root element is /foo, you need to search for /prefix:foo, where "prefix" is the namespace prefix you invent.

XPath and Default Namespace handling talks about how to do this. I found this document useful, although my JDOM code ended up being a bit simpler than the example given.
Posted at 12:36 Permanent Link

Fri, 9 Jun 2006

Luke Pie-Rocker
Not only do they sling some of the best pie in town, Galactic Pizza's superhero suited Deliverators also fight crime.

What great publicity for Galactic and Cameron Evans (aka "Luke Pie-Rocker")!

Normally, chasing after crooks is not really recommended, but it sounds like the guy was some derelict junkie so it's probably not too dangerous.

See also: MNSpeak, Star Tribune.
Posted at 10:37 Permanent Link

Thu, 8 Jun 2006

Poor Scrappy. RIP.
Ugh, I can't believe this, but a neighbor shot my friend Chuck's dog Scrappy. Scrappy was apparently annoying the neighbor's goats, so he just shot him.

Jenny and I were just down at Chuck's farm two weeks ago and Scrappy was having a good old time. Everyone loved that dog.

Here's some pictures of Scrappy.

Sittin'

Me an' Scrappy
Posted at 10:09 Permanent Link

Thu, 25 May 2006

The CSci Monastery
Scott Aaronson: Nerdify the world, and the women will follow: "computer science departments could attract and retain better people of both sexes if they felt less like monasteries or pirate ships."

Heh.
Posted at 11:12 Permanent Link

Thu, 18 May 2006

MacBook First Impressions
Since I work right next to the Mall of America, I hopped on the light rail and went to the Apple Store last night to check out the new MacBook.

I was most interested in checking out the controversial new "glossy" screen. I think the new screens are a mistake. Even in the perfectly diffuse, complementrary lighting of the Apple Store, the reflection from the screen was quite noticeable. But what do I know? While I was trying the computers, at least three people commented how much they loved the screen (shiny = good?). I don't like it, but I don't think it's worth $1000 (for me) to get the MacBook Pro with the matte screen.

The keyboard is strange, but I think I would get used to it. It looks like a chicklet keyboard but the key travel is good and it is pretty comfortable to use.

The matte finish of the black model shows fingerpints and scratches extremely easily. I was able to mark it with very light pressure from my fingernail. I would not recommend this laptop if you care about that. After a few weeks in your bag, it's going to look like hell. Also, I don't want a laptop that says "I paid $150 extra for this color."

I couldn't get a good feel for the heat situation on these laptops. I know there have been problems with the MacBook Pro so I'd like to hear from people with a MacBook before I bought one.

The built-in camera and Photo Booth software are ridiculously fun. You can't help but smile when playing with the cool effects it comes with.

Photo of me from Photo Booth

And, at the Apple Store, the computers store a bunch of funny photos of the people who have been playing with Photo Booth before you.
Posted at 14:17 Permanent Link

Wed, 17 May 2006

Java Developer Questions
Rob Warner: Java Developer Questions.

I really like his OO design question and his approach to guiding people to the right answer.

I'm also surprised that he says 30-40% fail the firs