November 17th, 2008

I’ve been using a credit card for several years. For the past two years in particular, I’ve put everything I could on my American Express Blue Cash card. The card’s cash back benefits are pretty good, and it seems at first like there’s no reason not to take advantage of the free money.

As of late, though, I’ve revised my stance on the credit card. It’s not worth it. No, I didn’t acquire massive amounts of consumer debt. And no, I haven’t had any problems with American Express. They’ve always treated me well. (They even waived a $40 late fee for me once.) But I have decided that the card is actually more trouble than it’s worth.

Card Benefits Barely Matter

Sure, the 1% cash back, or whatever your card offers, seems nice. Why not get some free money, right? Okay, but it’s really not that much money. Let’s say you get 1% cash back from your credit card. Let’s also say you put $2000 per month on the card. At the end of the year, you will have gotten $240 back. Sure, it’s 240 dollars, and that’s nice, but that means you charged $24,000 that year. Should you really be charging $24,000 to your credit card in one year? If $240 really makes a significant difference in your finances, then no, you shouldn’t. If $240 makes a big difference to you in the grand scheme of things, you need to stop charging and learn to save.

If I spent every single take-home dollar through my credit card (an impossibility), and got 1% cash back, then at the end of the year, I’d get less than 0.6% of my gross pay as cash back. Um, wow. Now I can afford that vacation to Aruba, if Aruba is a cheap hotel in a bad neighborhood.

That’s the way the math works out, though. There’s simply no way to spend enough on a card to have the cash back (or other benefits) really matter. The percentage just isn’t high enough. It doesn’t matter how much you spend, you’ll still be getting only a small fraction back. Yes, a little free money is nice, but is it really enough that you should be letting it sway your decisions?

Let’s look at it one other way. A pack of gum costs about a dollar. If you saw that pack of gum for 99 cents instead of a dollar, would you get excited? No? Maybe you find a new plasma TV you like. It costs 1700 dollars, but you find it on sale for $1683. Excited yet? No? Damn, you’re hard to please. If you don’t get excited when retailers offer you a 1% discount, why do you get excited when AmEx does?

Using a credit card for the cash back is like withdrawing cash from one credit card and transferring the balance to a new card with a low introductory rate, just so you draw a tiny bit of interest on the balance for a few months. Yes, people do that, too, but it’s still stupid. The payoff just isn’t worth the hassle.

Living Month to Next Month

Credit cards also encourage living month to month. Even if you pay off your credit card every single month, you can easily find yourself behind. It’s simple to deceive yourself about the real state of your finances when you rely on credit.

Up until recently, I was using my credit card for virtually everything. I paid my bill, in full, every single month. That makes it okay, right? Well, no. I realized a few months ago that I was basically living on my next month’s income. I wasn’t destroying my savings yet, but slight overspending was building up, and it had gotten to the point where I didn’t have enough in my monthly expenses account to cover the total current balance and still pay the rest of my bills for the month. I had let the credit card hide my debt. Because I was paying it off monthly, I was convinced I wasn’t overspending, but I was. I was living almost a month ahead of my income.

In theory, a closely monitored budget should avoid this problem. At best, though, adding an ability to hide debt will add extra burden to your budgeting effort. At worst, it will hide issues that will sneak up and bite you later.

The Alternatives

So, I’m giving up the credit card. What does that leave? Three things.

  1. Cash
  2. Checks
  3. Debit Cards

I use checks for the same things I always used checks for. Rent, car payments, other bills. I use cash for food and discretionary spending. I use the debit card for everything else. In particular, I use the debit card for fuel. Paying for gas with cash is a pain, and paying with a check is even worse, so the debit card is the only way I plan to pay for gas.

Having the debit card handy means that I have the same emergency support that I get from the a credit card. i.e., I can always pay for a ride home if I break down. Using the debit card also means that I never have debt build up on me unexpectedly.

It’s certainly possible to use a credit card and still maintain a budget. It is not, however, possible for the credit card rewards to be “worth it”, when they are worth so little. Do what you think is best for your finances, but don’t let yourself imagine that the small rewards have much value. As for me, I’ve chosen simpler finances over a couple hundred extra dollars every year. The easier budgeting, combined with the peace of mind I get from knowing exactly how much money I have is worth far more than 1% cash back.

September 29th, 2008

After my fiancée and I officially decided to move to Silicon Valley, I found myself in the market for a new programming job. Before I even looked at any job openings, though, I updated my resume. I strongly feel that the resume is often the make-or-break factor when applying for jobs. A well-written resume can get attention, which can lead to an interview. A poorly-written resume will likely get thrown in the trash.


I spent a lot of time reviewing resume tips (yes, my own, but also several others). I don’t update my resume very often, but when I do, I always look for advice. In the end, I actually threw away my original resume and completely rewrote it. The basic content was the same, but the style was entirely new (and very heavily influenced by resume articles I read). This took quite a bit of time, but was entirely worth it. The final product was much higher quality than what I started with.

One really important thing I did was have coworkers, professors, and my fiancée read my resume. I got some really good feedback from this. I got a few style pointers, but mostly I got substance advice. My fiancée pushed me to clarify and expand on my leadership experience. My coworkers recommended relevant technologies that I should have included. My academic advisor really pushed me to restructure the resume to make it more appropriate for the industry. In particular, he had me highlight my skills and work experience.


Another thing I would wholeheartedly recommend everyone do is to prepare both a formatted (ahem, PDF) and a plaintext resume. I used my formatted resume almost everywhere. However, I did use a plaintext resume for a few places that I knew were going to strip my resume down to plaintext anyway. In general, plaintext resumes are not very pretty, but for places that I know are going to strip away the formatting, I would rather provide a plaintext resume of my own creation. Text extracted from formatted documents is rarely pleasant to read.

I do not, however, recommend using plaintext resumes for most job applications, because they still look like crap. Use them only when you really have to. And despite what Steve Yegge says, you don’t need to submit a plaintext resume to Google. I don’t know why he implies that resumes at Google are stripped of their formatting. I almost submitted a plaintext resume to Google because of his article. I’m glad I didn’t, though, because the first guy who interviewed me showed up with a printout of my resume exactly as I had formatted it.

The Cover Letter

Every resume I sent was with a custom cover letter. Form letters look lazy and half-assed, because that’s what they are. A custom cover letter indicates at least a little actual interest in the job. A generic cover letter screams “bulk mail”, which in turn yells “delete me”.

I also made my cover letters match my resume as closely as possible. Some of the positions that I applied for were via an online form, and the only place to provide a cover letter was a text box. For those, I submitted the cover letter in plaintext. For the rest, I made my cover letters match my resume fonts, margins, etc. I think this attention to detail is important. When printed, the cover letter and resume should look as if they came from the same document. This level of attention to detail may not be strictly necessary, but it definitely won’t hurt, and it really doesn’t take much time. Create a cover letter template and you only have to make it match once.

Oh, and I saved every single cover letter I sent. This allowed me to lift sentences when writing new cover letters, but it also gave me a lot of examples to read when I had trouble thinking of what to say. (And I have them saved for the future as well.) Whenever I had trouble deciding what to put into a new cover letter, I’d re-read the others, and several ideas would pop into my head. A little socket work here, a little C++ work there. Examples are extremely useful for me, even when they are my own.

Once I finished my resume and all those matching cover letters, I started sending them out to interesting positions. I had planned on talking about that more in this post, but the resume chatter got long enough, so I’m pushing that off to next time.

By the way, if you want a lot of other good tips, read the comments on my resume tips article. There were a lot of really good tips (as well as a few really bad tips) from the readers.

I ordered DSL service from AT&T recently. There were a lot of things they did wrong early on. They made it difficult for me to get naked DSL. They refused to allow me to transfer my existing service. (I’m in California now, but I had an account with Bellsouth in Mississippi.) They didn’t support their own modems from Mississippi. Etc. But that’s not what I want to talk about. I got my new modem today, along with it’s lovely installation software, and let’s just say that the installation wasn’t exactly smooth.

Broken Out of the Box

DSL modemFirst problem, it doesn’t work out of the box. There’s no reason why a DSL modem shouldn’t just work when you plug in the wall. AT&T already knows who’s paying for the line. There’s no question about that. So why doesn’t it just work?

The modem wanted a username and password to connect. Okay, this is stupid, but whatever. I entered my username and password (actually the default one that tech support gave me when I was trying to get my old modem working). It still didn’t work.

Oh, the DSL connection was established. It passed all of its internal tests. I could even ping, dig, etc. from the command-line. But I couldn’t get my browser to connect to anything. Why didn’t it work? Damned if I know. Apparently it’s intentionally shipped in a half-working state, so that you’re forced to use the install software it ships with. The software is the source of the real problems.

Stupid Software

There’s is no reason any user should ever have to install software to get an external DSL modem to work. The software is completely unnecessary to actually use the modem once it’s configured.

It is absolutely obnoxious that users are forced to install extremely invasive software that is unnecessary for actual use of the device. All necessary configuration should be exposed through the modem’s own interface.

This software committed a lot of sins. Very briefly:

  1. It’s slow. Extremely slow. The software felt like I was running it on a 386. I could hear the hard disk and CD churning each time it loaded the next step in the wizard. And oh yes, there were a lot of steps. It probably took me 15 minutes to go through all the steps. And of course, there was no option to skip any steps. I had to click through ten pages on how to install line filters. I’m not using line filters. I bought naked DSL.
  2. It’s invasive. The software installed new hardware drivers. Why in the hell is this software installing drivers? I don’t even know what these drivers do, but they sure as hell aren’t necessary. There’s no option to not install them, though.
  3. It’s inconsiderate. Aside from generally being all-around poor-quality, the software also installed icons on my desktop, changed my homepage, installed unnecessary services, and rebooted my computer without asking me. After it installed it’s idiotic drivers, it actually rebooted my computer with no request and only about two seconds of warning. Who does this? After it started back up, Windows requested that I reboot again, but at least Windows gave me the option to decline.

There were plenty other issues with this software, but let me just move on to the grand finale.

The Trojan

AT&T TrojanAfter the AT&T software finally finished installing, I got a nice message from my antivirus program. Apparently, the AT&T installer let a trojan in, or installed one directly. Maybe it’s even a false alarm, because the installer just exhibits such inappropriate, trojan-like behavior. I don’t know, and I really don’t care. There is absolutely no reason that this should have happened. This goes past incompetence into the realm of gross negligence.

In order to get my DSL modem, I had to install unnecessary software, sit through a ridiculously long install procedure, receive totally unnecessary drivers and services, have my computer reboot without warning, and be infected with a trojan. Are you serious? How much do you have to despise your customers to put them through this crap. It almost makes me wish I’d gone with Comcast. It definitely makes me wish I’d had more options.

Oh, and by the way, this software is version 7.6. Does that mean that the previous versions were even worse, or that it took them 7 major versions to screw things up this bad?

AT&T Trojan in Virtual MachineI actually got all of AT&T’s crap removed from my computer. Thankfully, I installed their stupid, infectious software in a virtual machine, so all I had to do was revert to a previous snapshot. I feel really bad for the majority of their customers, though. The average person isn’t going to have access to a virtual machine, and wouldn’t know to use it anyway. Instead, the average person will sit through the whole install, and then after it’s all done installing all its trash, wonder why their computer seems slower and less stable.

AT&T, you should be ashamed.

You can call me a software engineer or a software developer. You can call me a computer scientist. You can even call me a Technical Yahoo! Software System Development Engineer. Whatever. I call myself a programmer, maybe a hacker on self-congratulatory days.

My first programming-related job was working as a systems administrator during my senior year of undergrad studies. I did a lot of network and computer maintenance that year, but I also had a chance to put together some custom software. After that, I had a grant as a Master’s student to develop science and math projects for elementary school students. As part of this job, I built a new website and database for the grant and all its associated projects. Most recently, I was developing radar software for a small defense contractor. This was my first full-time job, and also my first software-only job. However, it was not a job in a software-only company, and I’ve decided that’s where I want to be.

I don’t want to work for the software division of some company. I don’t want to work in network administration. I definitely don’t want to be anyone’s “computer guy”. I want to be a part of a dedicated software firm.

No one can truly thrive without continual learning. You learn or you fall behind, regardless of what field you are in. No matter how much you know, no matter how skilled you are, others will eventually surpass you if you don’t strive to stay ahead. I know that there are many things I need to learn about building quality software, and I feel that I am likely to learn some of these things best in a dedicated software company.

In a software company, the focus is on the software (or it should be). That means that there is more attention directed toward software quality, toward software development productivity. It means that a lot of the management grew out of the developer pool, and should know what it takes to build quality software. Most importantly, it means that there’s a wealth of talented and experienced developers to learn from. I want to know how to built large systems. I want to learn how hundreds of programmers can work together. I want to discover how world-class software is grown. Maybe I could learn these things at a non-software company, but it would certainly be harder.

There are a lot of software firms in the world, but I can tell you one place where most of them are not: Mississippi. You can probably guess where I used to live.

Since Mississippi has few software firms, it would be rather difficult for me to find my ideal job there. Besides, neither I nor my fiancée ever planned to live in Mississippi forever. Neither of us were born or raised in Mississippi, and neither of us have any wish to grow old there. We were destined to move eventually.

When my fiancée and I started investigating where we should live, we wanted to restrict our search to places that would have abundant jobs for both of us. She’s a psychologist. Most software companies are headquartered in or near large cities. A luck would have it, most people are also in or near large cities. Since more people imply more opportunities for psychologists, our fields’ job opportunities overlap best in major cities. (Funny how most opportunities seem to be where most people are . . . .)

We ranked some of the best cities for both of us, and three options came out on top: Boston, San Diego, and Silicon Valley. She applied for jobs in those three areas, and we decided we’d go wherever she got an offer. In the end, she received offers in both San Diego and Silicon Valley (specifically Palo Alto). Of those two, Palo Alto appeared to have more of a future for her, as well as more opportunities for me. That pretty much ended the discussion of where we should live. She accepted a position in Palo Alto and I began the process of applying for jobs myself.

So, where does a programmer apply for jobs in Silicon Valley? Lots and lots of places. I’ll talk more about that soon.

June 23rd, 2008

I accepted a new job in Silicon Valley recently. The short version is that I am now gainfully employed with Yahoo. The long version will be arriving in several parts. Look for part one soon.

The first part will cover the reasons we (my fiancée and myself) chose Silicon Valley, along with the beginning of the job hunt, the resume, etc., depending on how long I let the post get. Some later posts will describe the interview process, offers, salary and benefits negotiation, and relocation. This will take a while, but stay tuned if you’re interested in more information about the process I went through to get a job in Silicon Valley, or if you’re interested in hearing another opinion about Google and Yahoo’s interview process.