Apparently, I'm a Joiner

I typically avoid joining each new social networking thingy that comes along, but I’ve joined two lately.

The first was LinkedIn. You can view my public profile here, feel free to add me if you’re so inclined. My email address associated with me there is larrywright at gmail dot com.

The second one was Twitter, which is a new-ish site from the folks at Odeo (which, as an aside, was recently bought back from the investors - way to go Ev), that lets you keep up with what your friends are doing at any given moment. You can send and receive updates via text messages, the web site, and now by instant message. Pretty cool. View me here, and feel free to add me as a friend if you’re so inclined. Or come to to my home page and look at the left hand side of my page to see what I’m doing at the moment. As if you care.

On an unrelated note, things have been a little quiet lately, due to other commitments. Things are quieting down a little now, though. I’ll have some more technical posts up soon(ish).


Links for 9/18

A random sampling of the things that I’ve found interesting lately:

Airplane Seat Etiquette

  • If you ask me, reclining your seat on an airplane is a declaration of war. There are few things in the world that are ruder.

Mark Fletcher leaves Bloglines

  • He’s technically leaving Blogline’s owner Ask, but that’s a minor detail. I was a happy Bloglines user for a long time, but it started to lag behind the other readers. I’m a happy Feedlounge user now.

Interactive Capistrano Shell

  • This has some potential for a lot of uses outside of Rails (system administration in particular).

Video - Woman Calls 911 Over Wrong Burger King Order You really have to hear this to believe it.

Cheat - Cheat is a command line tool similar to ‘ri’, but it prints out a cheat sheet for the command you’ve specified. Awesome.


How to Make Sortable Tables in Textile

One of my favorite organizational tools is Instiki. I use it for note-taking, maintaining reference information, and keeping lists. I have several lists that I keep in tables, and the other day I had need to make them sortable. Here’s how I did it.

The first thing you need is Stuart Langridge’s sorttable Javascript library. This is a library that allows you to make any table sortable, just by giving it a class of “sortable”, and a unique ID. It’s smart enough to figure out how to sort most kinds of data, so it will sort a date column as a date, and a number column as a number. Very cool piece of code. Anyway, take this Javascript file and put it in the the public/javascripts directory for your Instiki installation.

Next, start editing the page with the table that you want to make sortable. At the top add the following declaration:

Next we’ll modify the table. Usually tables in Textile look something like this:

 |ID|Name| |1|Joe Smith| |2|Susie Jones| |3|Bob Barker| 

We need to add a table declaration and associated modifier in order to give it a CSS class of sortable, and a unique ID:

 table(sortable#mytable) |ID|Name| |1|Joe Smith| |2|Susie Jones| |3|Bob Barker| 

The class name has to be “sortable”, but the ID (the part after the #) can be anything you want as long as it’s unique.

Save your changes, and you should now be able to sort by any column in your table.


Partitioning Databases in PostgreSQL

I recently came across a presentation given on migrating a very large database (as in, tables with 1.8 billion rows) from Oracle to PostgreSQL. It describes some of the issues they had along the way, including having to move from Linux to OpenSolaris due to stability issues.

One of the more interesting challenges they had to solve was the lack of support for partitioning in PostgreSQL. Oracle allows you to partition tables, so for example if you had a large table, you can cluster the data into various segments - dates in their case. The reason for doing this is to allow you to put less frequently accessed data on cheaper storage (say, SATA instead of SCSI).

The solution in this case was to use PostgreSQL’s support for table inheritance (implementation details in the presentation). This allowed them to easily add and delete new partitions. Database archiving is always a hassle, and it also seems like this might make that easier as well.

I’ve never used inheritence in PostgreSQL, so I don’t know what kind of overhead it adds, but no performance issues were noted in the presentation. Regardless, this seems like a very interesting solution to a pretty common problem.

[preso]http://www.lethargy.org/~jesus/archive%20s/66-Big-Bad-PostgreSQL.html


Links for 8/28

Free Programming and Computer Science Books - No explanation needed

Getting Started With Getting Things Done

16 Year Old Guitarist Plays Pachelbel’s Canon

  • Pretty amazing

Guy Kawasaki - Ten Things To Learn this School Year - Includes “How to survive a meeting that’s poorly run”, and “How to explain something in thirty seconds” among other great advice.

Geek to Live: Top 10 free and cheap productivity tools

  • My favorite: Pen and Paper (second favorite: plain text).

What I'm Reading

I tend to read a lot. I’m one of those people who has four or five books in various states of being read at all times. I’m always interested in what other people are reading, so I thought I’d share the books that I’m currently reading, or have just finished:

Practices of an Agile Developer

  • I’m about 1/2 way done with this one. I like it so far, but I’ve liked every book from the Pragmatics that I’ve read. This is a great introduction to what Agile development looks like from the perspective of a developer, rather than a manager. Even if you’re not doing Agile development, it’s a great book on the foundations of being a great programmer.

The Tipping Point

  • I swear I’m probably the last person to read this. Great read, and definitely an interesting concept.

Pragmatic Version Control Using Subversion

  • I use Subversion on a daily basis, but this has helped with some of the advanced features.

Developing the Leader Within You

  • John Maxwell is my favorite author on leadership. I’ve read several of his books, and I’ve found every one very usefull.

CSS Mastery: Advanced Web Standards Solutions

  • CSS isn’t my strong suit, so this book has helped quite a bit. It’s not a CSS 101 book, it’s for taking your use of CSS to the next level.

Yes, those are affiliate links. Help feed my addiction.

What books are you reading? Leave a comment and let me know what’s on your reading list.


Links for 8/24

Ten Things You Shouldn’t Buy New

  • The usual suspects are here, but there’s some things I hadn’t considered.

The Complete Running Network - New blog dedicated to running. I’m trying to get back into running, so this is a useful resource.

Writing a Typo Sidebar Test First

  • Just what it says, good insight into the process.

Datebocks - Intuitive Date Parsing - Javascript library that let’s you handle dates like “Tomorrow”, and “Next Friday”, as well as more traditional date formats. Also available as a Rails Engine.

Beast: An open source Rails forum in under 500 lines of code

  • New Rails forum software from Rick Olson. Get the source here. Even if you have no need for forum software, it’s a nice example of a small Rails app.

Salaries: Keep Them Secret or Make Them Public?

I found an interesting pair of articles recently covering the topic of salaries. The first article, Why secret salaries are a baaaaaad idea, makes the case that all salaries should be public within a company. The arguments are pretty compelling, especially since I just finished reading Ricardo Semler’s book Maverick, which is an extraordinary book about an extraordinary company in Brazil.

Among other things, employees set their own salaries, which are public. The argument for doing this is essentially two-fold: 1) It keeps the employer honest, discouraging inequities in pay, and 2) It keeps the employee honest as well, as employees that are higher paid will feel more like they have to work for it, since everyone knows how much they are making. I see the point in this, and at least conceptually I like the idea of having an open company, in which most details are known to all (in the case of Ricardo Semler’s company, profits and expenses are open to all as well).

This evening however, I found an interesting article by Eric Sink (who coincidentally lives only about 45 minutes away from me) that makes the case for keeping them secret, but acting as if they were public. His rationale is that people value their privacy, and communicating everyone’s salaries to the entire company violates that. He advocates keeping the salary list “clean” though, as if the salaries were public:

So I think secrecy about compensation is important, but it should be for the purpose of protecting the privacy of individuals, not for the purpose of obscuring the fact that management is doing things they know to be unfair.

All in all, I think this is an interesting topic. I admire companies that disregard convention and defy traditional rules of business, but on the other hand I can see the point of the traditionalists with regards to things like salaries as well.

What are your thoughts? Ever work for an “open” company? What was it like?

Afterthought: It’s stated above, but I’ll repeat it again. If you want to read about a company who has open salaries, and why, you need to check out the Ricardo Semler book Maverick. It’s not just about salaries, there are lots of other innovative ideas in there as well. It’s well worth the time to read.


Quote(s) of the Day

“We should be taught not to wait for inspiration to start a thing. Action always generates inspiration. Inspiration seldom generates action.”

Frank Tibolt

“Far better it is to dare mighty things to win glorious triumphs, even though checkered with failure, than to take rank with those poor spirits who neither enjoy much nor suffer much, because they live in the gray twilight that know not victory or defeat.”

Theodore Roosevelt

Via Garret Dimon


5 Tips for Interviewing Well

I’ve been interviewing people (mostly programmers and management/leads) for about 7 years. I would guess I’ve interviewed over 100 people (if you include college recruiting job fair “mini-interviews”). In that time, I’ve seen and heard some amazing things. I won’t share horror stories, because that’s not terribly helpful. Instead, I’ve put together a list of 5 ways to interview well. Without further ado:

1. Show up.

This seems obvious, but let’s elaborate a little bit. Show up on time - early even. But not too early, as that’s often more annoying than showing up late. 10 minutes early is fine; 30 minutes is not. You may want to ask the company you’re interviewing with how early to show up, as sometimes there might be paperwork to fill out. Be prepared -have extra resumes, samples of your work, etc. Know something about the company you’re interviewing with. You shouldn’t have to ask “What does your company do”, unless it’s one of those super-secret startups that wants you to sign an NDA to walk in the front door (in which case, run for the hills).

2. Make a good first impression.

Dress sharp: when unsure, wear a good quality suit that fits well. It’s perfectly fine to ask the company you’re interviewing with what the appropriate attire would be; these days, corporate dress codes are all over the map. You should always strive to be dressed at least one or two levels above the person you’re interviewing with (unless they’re wearing a suit - no need to don a tuxedo).

3. Ask questions.

Nothing makes a job candidate seem less enthusiastic than when they ask no questions. Here’s a tip though, don’t ask too many questions about money. It can make you appear greedy, and people will start to question if that’s the only thing that matters.

4. Don’t complain.

If you’re leaving a bad situation (boss is a jerk, company went down the drain, etc), it’s tempting to complain about your situation. Don’t. Nobody wants to hire a whiner, which is exactly how you’ll come across. It’s ok to talk about things you didn’t like, but don’t dwell on it. Talk about the things you liked about your job as well.

5. Don’t lie

You can recover from just about anything else on this list, but this one is fatal. If you pad your resume, you will be found out - don’t even bother. Furthermore, “I don’t know” is an appropriate answer to a question. If I ask if you’ve done X with ABC database, don’t try and bluff. Just say “No, I haven’t yet had the opportunity, but I’d like to learn how”. I can’t emphasize this enough. I’ve passed on several otherwise qualified candidates because they put some skill on their resume that they didn’t actually have. Lying never, ever works in the long run.

Above all, be yourself. Be relaxed, be natural, and be honest. You’ll do fine.