Archive for ‘Uncategorized’

March 2nd, 2007

Things I wish I’d known

by Tim Cull

For my mystats Ruby on Rails project, I hand coded a SQL schema; if only I’d known then what I know now!
Rails has a cool feature called a migration, where you write basically a ruby class that describes your
database table and it does the rest for you, including versioning. So if you just want to add a column
you can create a migration to do that. If it turns out that extra column was a mistake, then you can
tell Rails to roll back just that change, no problem.

Anyhow, on my last post I was trying to learn how many-to-many relationships work in Rails. That
was a month ago, but hey, I had a birthday, my wife had a birthday, and we all had Valentine’s day,
kids got colds and ear infections here and there, so give me a break, ok? You people are such task masters.

I bought a book (Ruby on Rails Up and Running, Bruce Tate and Curt Hibbs) and read it on the bus.
Turns out it only needed about 2 pages to explain everything I needed about many-to-many. It’s that simple.

Another thing I wish I’d known, though, is that Rails (surprise, surprise) has a naming convention for
the mapping tables typically used in a many-to-many relationship. In my case, I have a table named
“people” and a table named “groups”. I’d created a mapping table called “person_groups” to map
between them, but it turns out the names have to be both plural and in alphabetical order, eg “groups_people”.
Oh, well.

Once I’ve done that, my Person and Group classes are this simple:

class Group < ActiveRecord::Base
has_and_belongs_to_many :people
end

class Person < ActiveRecord::Base
has_and_belongs_to_many :groups
end

Now I’ve got an application that allows me to create groups and view them from a home page. To get the
home page, I ventured into hand coding my own controller. I also need to have the concept of logging in and
keeping a current user in the session–I’m guessing there’s got to already be a package for that, so finding it is
my next set of homework.

February 26th, 2007

A Piece of Humble Pie

by Tim Cull

I recently stumbled across a blog written by a 93-year-old man. The blog itself is interesting, but this post:

http://dontoearth.blogspot.com/2007/02/my-grandfather-and-others.html

in particular hit me in an unexpected way. Specifically, here’s a guy who remembers *first hand* using a horse and buggy to get around, and now he’s writing on a blog. Technology has evolved that far in the span of a single lifetime

That’s humbling.

It’s humbling because it gives me some perspective on the technology I create today. How long will its life be? How big will its impact be? Chances are, not as long or as big as I think–more likely it will be obsolete in a few years and completely forgotten in ten.

January 6th, 2007

Underground Wii

by Tim Cull

I’d heard it was hard to get your hands on a Wii, but I had no idea it was this hard

December 31st, 2006

A Word of Resume Advice

by Tim Cull

I recently phone screened a person who had a 25-page resume. This one was a real doozy. He had only 10 years of experience in development, which translates to two pages per year. One word of advice to people writing resumes out there: don’t make them too long. Just don’t. I’d say no more than 1 page per 2 years of experience, up to 5 pages max. Even if you’ve got 35 years of experience, your resume should be 5 pages max.

Ordinarily, this person would have gotten about 5 seconds of my attention before I threw their resume in the garbage, but this time around someone else was screening the resumes and had set up the phone screen for me, so the first time I saw their resume was 30 minutes before our already scheduled phone screen.

So I phone screened the guy anyway, just to see if my opinion about his resume was correct. And it was. By a long shot.

Here are several things a 25-page resume tells me this person lacks, without even having to read a single word in the resume. All of these things are critical skills for a professional of any kind, including a software developer:

Can not understand the needs of your user
What kind of hiring manager does he think has the time to read hundreds of 25-page resumes?

Can not succinctly and clearly communicate
This is probably self-evident, and is a super set of some more points farther down.

Can not prioritize
So maybe he thought everything on that resume was important. So what? Some of it has to be more important than other parts, and he wasn’t able to pick the most important from among them.

Can not optimize
A 25-page resume has lots of fluff in it that doesn’t need to be there.

Can not edit
In addition to fluff that doesn’t need to be there, he repeated the same information in several places.

Can not let go of ideas he thinks are ‘nifty’
The resume actually had a table to organize his experience. And catchy little blurbs about every company that were a full paragraph long. I think part of the problem was that he just thought all this stuff was cool and couldn’t bring himself to cut any of it. I’ve seen the same thing happen in code.

Has entirely too high an opinion of himself
What kind of (false) ego do you have to have to think someone wants to read 25 pages of text about you?

Trying to make up for a lack of substance with volume

Can not work within constraints
Maybe he had seen resume advice about keeping it short, but just couldn’t make himself follow it.

December 16th, 2006

Business meets Charity

by Tim Cull

I stumbled across these two sites when reading some blogs today. I’ve always been a fan of sites that try to be philanthropic, but in a smart, business-like way.

Changing the Present (http://changingthepresent.org/) is a place where you can “shop” for causes you want to donate to and also create wish lists for your friends and family (mine is http://changingthepresent.org/profiles/show/172).

Through Changing the Present, I found CarbonFund.org (http://www.carbonfund.org/site/), an organization that basically lets you offset your carbon emissions by buying them back off the emissions offset markets and retiring them, or by funding a renewable energy project.

September 30th, 2006

College Recruiting Time Again

by Tim Cull

My company is starting up its college recruiting drive again this year so I’m helping out again. For some reason, we’re recruiting from a lot of East Coast universities and I ended up flying out to Rochester Institute of Technology.

We gave a presentation in their computer science building (which is pretty standard) and then crashed their computer science dorm to bring them pizza and fliers (which is unconventional) . The whole thing reminded me of why I take the time to do all this new-grad stuff in the first place.

I met some really bright kids. Bright, and excited, and ambitious and a little scared. Their enthusiasm was palpable and rubbed off somewhat on me.

Take their dorm for example. They’d commandeered a broom closet and turned it into an ad-hoc server room with dozens of servers. They’d built a network-enabled soda machine called “Big Drink” so they could buy soda from their dorm room, walk down the hall, and have it already dropped. They’d built two technologies they called “SOAP” and “SUDS”: one sensed if the showers were occupied or not and reported back through a web server and the other allowed them to set up from their room what music they wanted to hear in the shower, and when.

Oh, and Big Drink had a little cousin named Little Drink.

September 3rd, 2006

Persuasion Through Narrative

by Tim Cull

My sister-in-law got married recently. It was a great wedding on a beautiful day in the coastal town of Ft. Bragg.

That’s not necessarily anything readers of this blog would care about. But at the wedding I witnessed a conversation that makes a good story.

Two of her uncles from opposite sides of the family were having a conversation about global warming. One is an anthropology professor who specializes in consumer adoption of alternative fuels and alternative transportation and lives in Santa Cruz. The other owns a paving company in Fresno. Clearly very different people and, not surprisingly, they had differing opinions–even about the very existence of global warming.

Dr. Uncle is, literally, an expert in the field. I’m sure he could quote statistics for hours straight to support his case, but instead he told a story about the mountains he used to be able to climb in Switzerland and France in his twenties that are now unclimbable because all the ice melted. This narrative-based tactic cut right through the other uncle’s griping about “all those academics” and their false ideas about coming catastrophe.

I think most of us are persuaded more easily by stories . Our species invented language way before it invented math and probably for good reason. So it’s easy to forget in the Information Age (especially when you’re in a career like engineering) that if you want to convince others there’s often nothing more effective than a really good story.

September 3rd, 2006

Think outside the box

by Tim Cull

Today my son was hanging out with the neighbor girls and playing in their vegetable garden. He picked a cucumber off one of the vines and started eating it. Just like that, didn’t peal it, slice it, chop it, or anything. He just started chowing on it like it was an apple.

And, hey, why not? My kids are constantly doing that for me: showing me new ways of thinking about the world. I often have to actively, consciously stop myself from saying, “hey, don’t do that. That’s not the way you’re supposed to do that.”

Because, really, why not?

August 5th, 2006

An Ounce of Perspective Never Hurts

by Tim Cull

I’ve always said that someone who considers themself a senior developer should be comfortable picking up any language to get a project done. Lately, though, I’ve been doing so much development in Java that I’ve started feeling like a “java developer”.

So it was refreshing to see a rant from Steve Yeggee about functional programming and verb-centric development as opposed to the noun-centric development commonly found in strongly typed, OO languages like Java.

I’ve read lots of rants about the superiority of functional programming, but most of them tend to be way to smug to have any hope of converting anyone. This one is smug, too, but smug in a different way. And not short on useful examples.

Anyway, what’s the advice out of that? Make sure you keep up on articles that fall outside your immediate domain or you’ll get stuck in a rut, approaching problems only one way.

August 1st, 2006

An Underappreciated Aspect of Email

by Tim Cull

Just tonight, I sent an email to my own wife (who was in the next room) through a web site (LinkedIn) to ask for the email address of a friend of ours. At first, that sounds like the beginning of a joke you might find in the New Yorker making fun of our tendency to make life too techno-complicated. But if you knew the background you might really begin to smell the revolution arriving…

…the back story is that I was using the first 10 minutes I’d had free during the day to check email. My wife was in the other room rinsing out some soiled underwear (it’s potty training time) and trying to wrangle my half-naked son. As soon as she was done with that, I got rolled into some other childcare ruckus. In any case, the first chance the two of us got to talk to each other without distractions wasn’t till a couple of hours later and the last thing I want to squander that time on is asking about someone’s email address. She probably won’t see my request until tomorrow, and to answer the question all she’ll have to do is click a link in LinkedIn (which already knows our friend’s email address) and shoot the response automatically back to me. In total, we’d both probably spend 60 seconds of our own time to get the job done, but that 60 seconds would be spread across two days.

What’s the magic then? Taking 2 days to do 60 seconds worth of work?

Certainly not. The magic is:
Email is asynchronous. This means we both have the luxury of doing low-value activities (finding email addresses) during low-value time (goofing off at work) and doing high-value activities (bonding with each other) during the high-value times (when we’re both free and together at the same time).

Ten years ago, you couldn’t have done that. At least not as easily.