Thursday, May 20, 2004

Nickeled & Dimed to Death x 100

Two months ago, Bank One quietly shortened the grace period on my credit card by 7 days (although the customer service guy swears it was only 5). So, suddenly I'm hit with two $35 late charges in a row, plus extra finance charges. Sneaky, sneaky. I think that they are also deliberately sending the bills out late. The one I got today is due on the 2nd, which means I only have a week to get a check in the mail if I want to allow 5 days for it to get there. What if I was away on a business trip?

A few days ago I read an article on SlashDot about T-Mobile charging their customers a "Regulatory Programs Fee" which sounds like a government tax but is just a way for them to stick it to the customer without changing the prices they advertise. Sneaky, sneaky. I think they took their cue from the practice of hotels hitting you with a "resort fee" that's on top of the advertised rate and never mentioned until you arrive to check in. Sneaky, sneaky. (BTW, I was considering switching to T-Mobile once until I realized that the contract they wanted me to sign bound me to terms that appeared only on some arbitration company website that wouldn't come up in any browser. Talk about buying a pig in a poke!) Anyway, you can bet I'll be watching out for when my cell phone company follows T-Mobile's example.

And, of course, today my cable bill went up another $2.50 for the second year in a row.

It used to be that you had to watch out for being nickeled and dimed to death. Now, it's $2.50'd and $35.00'd to death.

Tuesday, May 18, 2004

Two Books on Being a Software Professional

I just read a blog entry on productmarketing.com that mentioned a book called Coder to Developer by Mike Gunderloy. (The blog is addressed at marketing professionals and recommended the book as a way for them to become familiar with how software is, or ought to be, created). This book reminds me of another one called Code Complete by Steve McConnell that is due out with a second edition next month. I highly recommend Code Complete to anyone interested in software craftsmanship, and it sounds like this other one might be worth a look, too. The biggest difference appears to be that Gunderloy's book is thick with .NET stuff, while McConnell's book is agnostic.

The productmarketing blog points out that Gunderloy's book is "generous with references to other works," and that his index of all web-accessible references is online. Be sure to check it out, whether or not you read the book. At a quick glance, I recognize many sites that I know and love, and I'm sure I'll have fun exploring the rest.

Thursday, May 06, 2004

Tech Jobs on the Rise

The Extreme Programming SoCal group meets informally over lunch every other Wednesday (in addition to occasional formal programs), in two locations: Pasadena and Tustin. The Tustin contingent was 7 strong this week with some rarely seen faces, three of whom were all just laid off together, which is why they were available. They swear that it was because their group was doing XP and the old guard managers simply reverted to what they considered "tried and true," without questioning the true part. They didn't seem worried about their prospects, though. Vladimir (another Vladimir, not my partner) said that one mailing list he subscribes to recently increased from 2 or 3 help wanted ads per month to 50+. So, it sounds like the economy really is picking up, even if some companies are still feeling the pain.

Wednesday, April 28, 2004

Don’t Refactor and Enhance at the Same Time

Last night at my "Introduction to Refactoring" presentation, I received a bunch of blank stares the first few times I said that you aren’t supposed to refactor and enhance at the same time. Eventually, it dawned on me that I was being imprecise in my definition of the word "enhance." After all, refactoring is itself a form of enhancement -- you are improving the design when you refactor. So, what I meant by "enhance" is adding functionality from the user’s (customer’s) point of view. I don’t know where I picked up that terminology. Maybe it was a culture thing where I’ve been working. Do other people use the term "enhance" that way?

Anyway, the bottom line is you aren't truly doing refactoring unless
  1. you isolate the refactoring activities from the feature-adding activities,
  2. before you apply a refactoring you have an automated unit test that puts the existing functionality through its paces, and
  3. the exact same unit test runs cleanly before and after the refactoring is applied.
Note that it’s okay if the unit test has to be tweaked to conform to new method signatures and whatnot, but you can’t change anything that has to do with what the unit test is trying to prove.

Friday, April 23, 2004

The Myth of the 100-Year CD-ROM

Think your CD backups are trustworthy? Think again. According to an article on rense.com, some CDR's don't even last 2 years! What I can't figure out is if that means 2 years from the time it's burned, or from the time it's manufactured? I'm guessing the latter. How fresh is your supply of blank CDs?

Getting Hired

My friends who are about to graduate from the U.C. Irvine School of Information and Computer Science -- and anyone else looking for a programming job -- should check out Arjun Ram's blog. He has some great advice for software engineers in the job market, having recently changed jobs himself.

Saturday, April 17, 2004

CandidateMap.com

As we move closer to the 2004 presidential election, it's great to see web sites like CandidateMap.com popping up. This one is an archive of quotes from the candidates sorted by topic. For example, you can pick from 30 topics (e.g. Taxes, Drugs, Environment, Sci/Tech & Space), and then read one relavent quote from each candidate. If you haven't yet formed any opinions, this looks like a great way to get started.

Friday, April 16, 2004

"Intro to Refactoring" on Tuesday, April 27

I will be speaking on Tuesday, April 27 at 7pm in the city of Orange on the topic of refactoring. This will be at a meeting of the Orange County Delphi Users Group, although the topic has nothing to do with Delphi, per se. OCDUG meetings are free and open to the public.

If you have heard the term "refactoring" bandied about, but you're confused as to exactly what it means, you are not alone. It doesn't help that people tend to misuse it all of the time. This introduction will define what refactoring is, what it is not, when you would want to use it and why. In case you are completely in the dark, you'll find an official definition of refactoring below, but don't worry if it doesn't make sense yet. All will be made clear.

This presentation will last a little over 1 hour and include 5 specific step-by-step examples of refactoring. The examples are in Delphi, but
should be easy enough to follow along for non-Delphi programmers as well. A basic understanding of object-oriented programming is assumed (e.g. encapsulation and inheritance). Being able to read a UML class diagram will definitely help as well.

"Refactoring is a disciplined technique for restructuring an existing body of code, altering its internal structure without changing its external
behavior. Its heart is a series of small behavior preserving transformations. Each transformation (called a 'refactoring') does little, but a sequence of transformations can produce a significant restructuring. Since each refactoring is small, it's less likely to go wrong. The system is also kept fully working after each small refactoring, reducing the chances that a system can get seriously broken during the restructuring." -- From www.refactoring.com

The OCDUG meetings are held at Red Brick Software, 1301 East Lincoln Avenue, Orange, CA 92865. [Directions]