iPodding my car (part 3)

According to Antwerpen VW, Volkswagen says that the way the iPod adapter hooks into the stereo disables the channels that display additional information during satellite radio broadcasts :-( I wonder if any of the after-market solutions have the same issue.


Buying my car

I should have written this back in February, since I don’t have nearly as many recommended links as I should. Anyway, here are a few notes on my most recent car-buying experience.

What Can I Afford The first thing I had to do was figure out how much I could afford to spend. During my research, I came across a rule of thumb that said you could spend up to 20% of your net income on a monthly car payment. When I found out what that figure was for me, it seemed way too high. So I cut it down to about 12% of my net and moved on to the next step. The other thing I did which proved quite handy later was get pre-approved for a set loan amount. I’m a Costco member, so I went through their auto financing & refinancing service to do this. The end result of this process was a rate of 5.3% on $25,000 over 5 years. Capital One, the company Costco partners with for this service, gives you check and a payment schedule so you can shop for a car as if you’re paying cash.

What Do I Want Deciding what I wanted was the easiest part of the process (since the previous step removed the delusional “I want a Lexus” thoughts). There’s tons of information on the Web when it comes to cars and costs. I found Edmunds.com to be especially helpful. I used Consumer Reports for some of my research too. After settling on the idea of buying a car with at least four doors, my field of choices narrowed to Audi and Volkswagen. For options, the only real must-haves were leather seats and a sunroof.

Test Drives I thought pretty hard about buying a certified pre-owned car instead of a new one, so I ended up test driving a number of used Audi A4s and Volkswagen Passats (both with the 1.8 liter turbo engine). In the case of the 2005 Passat, it wasn’t enough engine for that size car. The A4 with quattro was a bit better. The real challenge with the certified pre-owned cars was finding one that was the right price that didn’t have more miles on it than I was comfortable with.

Moving on to new cars, I considered the Audi A3. It’s a nice car, but a bit small. Add too many options and it gets expensive in a hurry. Since my last car was a 2000 Volkswagen Jetta, I thought I’d at least test-drive the new Passat. I wanted a fallback if I couldn’t get a reasonable offer on the A3. The way the Passat handled during the test drive really impressed me. Even with the 2 liter turbo, it’s quite agile. It’s got tons of room inside as well. Given those factors, and the substantially lower cost compared with the A4, I felt comfortable choosing it.

Pricing my trade-in I didn’t want the trade-in of my car to have any impact on the price I was ultimately offered for a new Passat. So I took my Jetta to CarMax to have it appraised. They offered me $5500 for it, probably because of the high mileage (nearly 100k in less than 6 years).

Pricing the new car I used Edmunds.com to get quotes on a Passat from multiple dealers at once. They all offer “special” Internet-only pricing at points during the year. At my friend Sandro’s suggestion, I timed things so that the purchase would happen at the end of February. The hope was that their need to hit sales quotas would make dealers more flexible on price. In the case of the two dealers I seriously considered buying from (Congressional and Antwerpen), it seemed like that did factor into the outcomes. In order to offer me a lower price, both dealers offered to sell demo cars at a lower price.

Closing the deal
One key advantage I had in getting the best price was Sandro’s friend Elmer. He works in auto finance, so he knows the secret numbers and incentives that aren’t going to show up in a Consumer Reports price sheet or an Edmunds.com report. I told him what my best offer from Congressional was and what option package I wanted and he found a car at a friend’s dealership at a price that was a little lower. Once we showed up at Antwerpen to check things out, they offered a demo model at a lower price. The mileage was much lower than they thought, so I chose to buy there instead of trekking back to Congressional. This is where my second advantage came in. While I was doing some of the paperwork, Sandro remembered that I was supposed to get owner loyalty credit since I’d bought a Volkwagen before. His memory saved me $500. After a driver from Antwerpen took the Jetta for a test-drive, they matched the CarMax appraisal for trade-in value. In retrospect, my mistake was telling them how much CarMax had offered. I’d kept the car in good enough condition that their driver commented on it. Telling them the appraisal value probably cost me $500-$600. When it came time to deal with financing, this is where my Costco exercise paid off. Volkswagen Credit initially offered a 5.9% interest rate on the car, quite a bit higher than what Capital One had offered. So I mentioned that I’d gotten pre-approved for a better rate and their 5.9% turned into 5.3% in a matter of seconds :-)

The end result I paid $25,500 for a car with an MSRP of $28,430. They also threw in a 2GB iPod nano as part of the promotion they were running that month.

Summary of Recommendations

  • Find out what you can afford first.
  • Get pre-approved for the amount you're willing to spend. This gives you an alternative to dealer financing.
  • Get your trade-in appraised. CarMax is a nice option because their appraisals are good for 7 days and 300 miles. In any case, it's an alternative to a dealer appraising it (since they have a vested interest in appraising it at lower than true value). Don't reveal the appraisal value unless the dealer's offer is lower.
  • Have two different cars you're willing to buy.
  • Consider buying a demo car. They'll have far less mileage than a certified pre-owned car, but will still have a price advantage over a brand-new car. You may even get a car with more features.

iPodding my car (part 2)

The ugly continues :-(

The sound on the satellite radio is back, but now some information on my radio display is missing. The next visit to the shop is April 4, when I hope Antwerpen will get it right once and for all.


iPodding my car

Last month, I bought a new VW Passat from the folks at Antwerpen VW (who gave me a great deal on a demo model). So far, it’s been a great ride (better gas mileage, more room, and better performance than the Jetta VR6 I’d been driving about 6 years).

Having suffered through a couple of attempts to get my iPod to play through my old car (tape adaptor, iTrip), I looked forward to the opportunity to “iPod my car”. I finally had it done yesterday.

The good (so far)

  • The adaptor charges the iPod and plays tracks simultaneously.
  • The iPod lives in a secondary compartment above the glovebox completely out of view.
  • Controls work just like the external CD changer would.

The bad (so far)

  • You can only access the first five playlists in your iPod, or the list of all your tracks. It would be nice to able to pick which five map to the radio buttons.
  • No display of track name or playlist name. Apparently you get that information if you put in a CD with MP3s on it, but I still need to test that.

The ugly The technician who installed the iPod adaptor managed to disable my satellite radio. It still receives channels and displays all the information, but there’s no sound :-(
They’re going to be fixing that today.

The verdict iPod integration is an improvement over the tape adapter, iTrip, or aux port options. It’s a bit pricey to install (around $350 for parts, labor, & tax). I’ve got enough songs and podcasts on my iPod that when the included 3 months of XM expire, I probably won’t miss them. Going the aftermarket route was probably the only way to address my hangups about playlists and display information, but for now I prefer how seamless the current integration setup is.


The acquisition continues

Lockheed Martin’s deal to buy Aspen Systems was finalized back in February, but until this week, the change hadn’t really manifested itself in a noticeable way. My colleagues and I have had more reports to write (since our bosses have had more reports to write), but not much else had changed until this week.

Yesterday we got an e-mail that our Aspen security badges were being replaced with Lockheed ones. The old ones will be deactivated April 1. Today we got an e-mail about company corporate cards we’ll be required to use for business expenses from now on. Bit by bit, the Aspen name and logo are disappearing from everything. Yesterday, they replaced it on the intranet. Today, the public website has the Lockheed Martin star on it (even though the title text still says Aspen Systems Corporation).

As I write this, there’s a crane outside the building removing the Aspen Systems sign from the side of the building (the sign said “pen Systems” the last time I checked since they’d only gotten 2 letters off).

I’m still waiting for more useful things to change, like intranet access, and software licenses for better tools.


Windows Live Again

This morning I came across an article that asks whether Windows Live is better than Google. I blogged about Windows Live late last year and thought there were a couple of things that it did quite well. The Technology Review article highlights the ability of Windows Live Search to launch multiple search panes in a single window. No one should be particularly impressed by this because tabbed browsing has been a feature of Firefox and Opera for a really long time. Internet Explorer 7 (which still isn’t out yet) is the first version of Microsoft’s browser that will actually have tabbed browsing built in. The article also highlights the ability to view pictures at different sizes without leaving the search page, something Google has probably been doing for awhile already.

The article spends very little time on what is ultimately the most important thing about any search engine: relevant results. Bells and whistles mean nothing if you don’t get results you can use. I’ll do a side-by-side comparison for my own searches for a bit to see if Windows Live is giving me results as useful as Google’s.


Blogging and Podcasting for ONDCP

Yesterday, I gave a presentation at the RSS, Podcasts, etc! workshop along with a colleague. Our presentation isn’t available on NOAA’s website yet, but you can download it here if you’re interested.

From what I saw and heard, NOAA, NASA, and the US Geological Survey are the furthest along in implementing RSS feeds and podcasts. Surprisingly enough, there are very few government agency blogs. Even the one Aspen (now Lockheed Martin IT) developed for ONDCP doesn’t have an RSS feed yet. There was very little use of blogging software to automate RSS feed generation. A number of our fellow presenters talked about custom solutions on the LAMP stack that retrieved content from databases.

Our podcasting solution for ONDCP was the only one that used Microsoft technology. The code we started with was a demo application including an Access database, a feed generation page, and a number of admin pages for adding, updating, and deleting RSS feed items. Our customizations included the following:

  • making the application run against SQL Server instead of Access
  • adding iTunes-specific tags
  • XSL to transform the raw XML into something viewable by users with regular web browsers

The solution works reasonably well, but it isn’t as fully-featured as WordPress or MovableType. LMIT will be using Community Server as part of the redesign of ONDCP’s current blog, pushingback.com. We’re using version 1.1 on an extranet project I’m managing and it’s got tons of feature. I think it’s overkill for a single blog, but if ONDCP decides they want forum functionality, photo galleries, blog rolling, etc, Community Server gives them all that out of the box.


.NET User Groups are Good

Before yesterday, I didn’t know what I was missing. I’d always gained my knowledge about .NET (and any other technology for that matter) from conferences, classes, reading, work projects, or trying things out on my own. But the ASP.NET custom web controls talk I heard yesterday was a real eye-opener. The speaker, Miguel Castro, made great use of the code snippet feature of VS.NET 2005 to speed up the development he did during his talk. Stepping through actual code in the IDE and not just reading from the few slides he did have made it a very engaging presentation. The only thing that might have made it better was if an electronic version of his presentation was made available after the talk. Until that happens, I’ll record the few notes I captured here.

Personal Notes from Presentation

  • WebControls are ultimately "code generators"
  • They are server-based components; classes that are OOP-aware
  • The terms WebControl and ServerControl are interchangeable
  • WebControls are code-only, UserControls are not.

Advantages of WebControls

  • Isolation of visual components
  • Fully object-oriented
  • Browser independent
  • Promote declarative programming
  • Handle their own state
  • Reusability

Rendered WebControls

  • fastest
  • direct output to HTML
  • least reusable
  • very manual

Composite WebControls

  • code is easy to follow
  • handle complexity well
  • most commonly used
  • Inherited controls inherit from rendered and/or composite controls

  • Rendered controls usually have direct HTML counterparts.

  • HTML controls are a visual designer representation of actual HTML.

When to Use WebControls

  • Use inherited controls when merely extending existing functionality will solve a problem.
  • Use rendered controls for simple widgets.
  • Use composite controls in all other instances.
  • The ToolboxData attribute and inheritance make a class a WebControl.

  • Override the Render method to generate HTML on-the-fly (rendered controls).

  • Advice: use your objects before you develop them (a nod to test-driven development).

  • Override CreateChildControls (composite controls).

  • ViewState identifies controls with ids, so set them first.

  • Tables cannot appear next to each other because they are block elements. Block elements cannot appear inside inline elements. Inline elements can appear next to each other.

  • The default master tag for a WebControl is . You should override the TagKey property in .NET 2.0 to change this. In .NET 1.1, you would extend the constructor to do this.

  • Implement INamingContainer to make sure control names are unique (.NET 1.1).

Properties

  • Use ViewState instead of memeber variables when creating properties for WebControls.
  • Category, Description, & DefaultValue are basic design-time attributes of every WebControl property.
  • Property-mapping needed if a user can change the value of a property.
  • Use "this.ChildControlsCreated = false" in your "setters" for visual properties so control changes are reflected right away, without having to close and re-open the page.
  • Add event handlers for composite controls using your control constructor. Also declare a public event handler delegate.
  • Events are not inheritable
  • Make button controls overridable with protected virtual void methods.
  • Object properties can be made read-only because their internal properties have their own getters and setters
  • Save WebControl state by using an object array. Reserve the zeroth array element for the base.SaveViewState call.
  • Style isn't serializable, so it's handled slightly differently.
  • Use ControlState to keep your control functioning even with ViewState turned off.

Recommended Reading Essential ASP.NET With Examples in C# Essential ASP.NET with Examples in Visual Basic .NET Building ASP.NET Server Controls www.dotnetdude.com

  • Just reading good source code is great education

Bosses 'are deluded' over success of deals

An interesting title for this story I read in the Times this morning. The acquisition of my current employer (Aspen Systems) by Lockheed-Martin falls right in the area the story discusses (acquisitions of $100 million or more). The buyout is scheduled to close shortly, so I expect to find out soon enough what Lockheed’s plans are for us.

The idea of M & A activity not always creating additional value has been around for awhile. I remember reading stories like this in magazines like The Economist five or six years ago in the middle of the Internet bubble. I’ve only been working full-time for nine years or so, but I’m sure questioning the value of mergers stretches back far before my time.

Since news of the buyout came to us, I’ve been wondering what Lockheed sees in Aspen that they want. Our annual revenue is a tiny fraction of Lockheed’s. As far as I can tell, the thing about Aspen that Lockheed most wanted was the subject-matter expertise. A lot of the civilian agencies we do work for have essentially outsourced certain government offices to Aspen so we can act on their behalf. So while we aren’t an outsourcing power like IBM or EDS, we do occupy a similar niche.

I think Aspen gets plenty out of being bought Lockheed. The first thing is deep pockets. Even more important than the deep pockets is superior processes. We just achieved CMMI level 2 last month, while parts of Lockheed have been at levels 3 through 5 for years. Only time will tell if we help push the LMT stock symbol up.


What Corporations Know About Us

This morning, when I was listening to the umpteenth radio story about the Justice Department subpoena of Google, it occurred to me that Google might know less about us than some other companies.

I’ll use myself as an example. I use Google for searching and Gmail for e-mail. So they know what terms I’ve searched for and when, along with who I’ve sent e-mail to (and received e-mail from). They could certainly know the contents of every e-mail if they wished. The biggest potential risk to me of someone knowing what I’ve e-mailed or searched for is embarassment.

Compare that to what credit bureaus can know about me. TransUnion, Experian, and Equifax know at least the following:

  • current and past addresses where I've lived
  • current and past employers
  • when credit accounts were opened and closed
  • what things I've bought with credit, as well as when and where I bought them
  • all the loans I've taken out, and how quickly (or slowly) I paid them off.
  • who has requested my credit report

According to this web page, there’s a long list of companies and people who can look at my credit report. There are a lot of potential risks to me if I have a bad credit report:

  • I could be denied credit or other loans
  • I could lose out on potential job opportunities (company background check)
  • I could be denied housing (landloard background check)
  • I could end up paying high insurance premiums, or be denied coverage (insurance company background check)

At least Google lets you look at your recent search history. The law only requires credit bureaus to give you free access to your credit report once a year. After that, you have pay to get access.

Somehow, I’m a lot less worried about how Google will use what they know about me.


Advice from Warren Buffett

Buried deep in this article about the dangerous size of the U.S. trade deficit was this bit of advice to MBAs:

“The one piece of advice I can give you is, do what turns you on,” he said. “Do something that if you had all the money in the world, you'd still be doing it. You've got to have a reason to jump out of bed in the morning.”

Unfortunately, my current job doesn’t fit this description. I need to do something about that, I just haven’t settled on what.


32

Today is my 32nd birthday. To me, it doesn’t seem like a particularly special birthday. It isn’t like turning 13, when you’re finally a teenager, or 16 when you can drive, or 18 when you’re officially an adult. I remember being excited about turning 18 because I was finally old enough to vote. I don’t drink, but 21 was still a good birthday. People talk about turning 25 as a milestone, but I feel 24 was a bigger year for me because I bought my townhouse that year.

Looking back over the past year, I see a lot of changes. I finally got my MBA after 3 years of working full-time and school nearly full-time. I made my first career change by leaving a full-time programming role and moving into project management. Looking forward, I see the potential for more change. The Lockheed-Martin buyout could change things completely. I might start a business of my own this year, or get out of project management and into something else, like business development or strategy.


.NET Development Tools

Richard Slade came up with a great list of free tools he thinks .NET developers should be using. I first found out about test-driven development and NUnit a couple of years ago in a previous job. It definitely improved the quality of my code. A consultant at my current job told us about TestDriven.NET. I’m looking forward to checking out the upgrade, since we used version 1.1 a year ago.


Ruby on Rails Progress

I finished Curt Hibbs' first Rolling with Ruby on Rails tutorial today. After getting phpMyAdmin installed, doing the database parts of the tutorial went a lot more quickly. Before I tackle part two, I need to read this post by Amy Hoy.

After this brief tutorial on building a database-backed website with Ruby on Rails, I like the way it works. While I didn’t find the development process quite as simple as the screencasts portrayed it, I can definitely see using it as a rapid application prototyping tool. Even with the hurdles posed by installing and configuring PHP and phpMyAdmin on top of learning Ruby and Rails, getting from page 1 to a completed application didn’t take much time.

I still want to try out the Ruby plug-in for the Eclipse IDE to see how that compares with with SciTe and the command line.


Trying out Ruby on Rails

I made it one of my resolutions to learn Ruby this year, so I took a bit of time yesterday and today to try and get something working on my work laptop running Windows XP. I’d used the one-click Windows installer for Ruby a week before, so I was able to use RubyGems to install Rails. I put the latest version of MySQL on the laptop as well, since the tutorial I’m following uses it.

Instead of building the cookbook application the tutorial describes, I’m trying to build an app that serves a database-driven RSS feed. My reason is that we’ve done this for a client project with some old ASP code and I wanted to compare architectures and level of effort. So far, I like the way Ruby on Rails works. You can create an empty web app just by typing ‘rails ’ at a Windows prompt. The application directory structure follows the model-view-controller design pattern, so there’s no wondering about where to put certain types of code if you’re familiar with the concept. Generating stubs for controllers and models is also simple (“ruby scriptgenerate controller ” and “ruby scriptgenerate model ” in the web application folder respectively).

Development Ruby on Rails seems to go fastest if you follow their naming conventions for code, and the table names in MySQL. When the model name is singular form of the database table name in plural form (recipe–>recipes or podcast–>podcasts), using “scaffold :” in your controller definition autogenerates the CRUD operations against that table in the database. Making changes then becomes a simple database change exercise. Once a column is added, moved, or removed from a table, just refreshing the browser shows the changes.

I’ll probably go back through the cookbook example and follow it step-for-step before going back to the podcast example, just so I have something stock that’s working. The other thing I plan to do is to replicate my work on the Mac mini I have at home.


Who got money from Jack Abramoff

The entire list is here. It includes how much he gave and when.


Goals for 2006

Improve My Health

  • Exercise 3 times a week
  • Cook 3 times a week

Maintain My Hobbies

  • Shoot 36 film and/or digital exposures a week.
  • Post 3 shots on the photoblog each week.
  • Start re-learning the piano.
  • Go skiing once more (or snowboarding twice) this winter.

Strengthen My Faith

  • Read the Bible every day
  • Pray every day
  • Help out with a church activity once a month

Improve My Career

  • Work on a business plan once a week.
  • Learn Ruby
  • Attend one technology conference this year.
  • Attend one business conference this year.
  • Write a technical blog post once a week.
  • Contact a different person in my network once a week.

Teaching the Clinton Presidency

I admit it–I’m a C-SPAN junkie. The purpose of the open phones topic this morning was to air people’s opinions on how the Clinton presidency should be taught in middle and high school history classes. As is usually the case with these shows, the callers didn’t so much answer the question posed as bash George W. Bush or Bill Clinton. The calls I found the strangest were the ones that blamed Clinton for the current Bush years and for how divided the country currently is. Those opinions aside, my own is this: teach Clinton’s successes and his failures–all of them.

I voted for Clinton both times. Despite that, I don’t consider him the best president ever, or even a great president–merely a good one. In the success column: NAFTA, welfare reform, the economy. Perot said plenty on the “giant sucking sound” of jobs leaving the U.S., and that’s true. But that has as much to do with companies not doing what was necessary to modernize as it does with lowering tariffs. I remember being disappointed that Clinton signed the welfare reform bill, but in retrospect, it did get a lot of people off the welfare rolls. Clinton should get credit for mostly staying out of the way as the economy recovered from downturn under the first Bush. He should also get credit for increasing taxes on the highest earners in this country. That contributed a lot to the government going from deficit to surplus. I would count Clinton’s actions on Bosnia as a success too, if only because he helped get NATO involved in stopping the slaughter of Muslims there.

In the failure column: healthcare reform, Rwanda, impeachment. The failure of healthcare reform is perhaps the one with the most consequences for the present day. The voices who said there was no healthcare crisis when Clinton was trying to get this passed are probably the same ones who passed the narrow, expensive and poorly-planned prescription drug benefit. While Clinton isn’t the only one to blame for the genocide in Rwanda (the whole world stood by on that one), as the leader of the greatest military power in the world, his government’s inaction was very disappointing. Impeachment ranks as the worst of his failures from an opportunity cost perspective, not just the moral one. A lot of time was wasted that could have been spent doing far more useful things (like chasing al-Qaeda for example). It allowed people to question his motives for trying to do what was ultimately the right thing.


Windows Live Beta vs Google Homepage

My office gives us the day off tomorrow, but it’s pretty much a ghost town already. I had a bit of time today to play with the Windows Live Beta. I was curious to see whether it was a step up compared to my.yahoo.com or google.com/ig.

At first glance, live.com looks like a clone of Google’s personalizable page (though live.com is even more streamlined). It’s easy to add content to the page, whether it’s “gadgets” (the Google homepage calls them sections) or individual RSS feeds.

One particularly nice touch live.com has that I haven’t found on Google yet is a way to import an OPML file. To test it, I exported an OPML file from my bloglines account and imported it into live.com. Very quickly it showed up under “My Stuff” as “Subscriptions”. From there, it was very simple to drag and drop individual RSS feeds onto my live.com home page. I didn’t realize right away that “>>” meant content would open in a new window, but once I did, I liked the functionality much better. I wouldn’t use this over bloglines right now, but I’d be very interested to see if someone could come up with a slick gadget for newsreading.

A second convenient feature live.com provides is the ability to add the results of search to your home page. It’s like the News Alerts feature at Google News, only instead of sending you an e-mail, you see the results right on your page.

live.com seems to work equally well in Firefox or IE. If I had to choose between google.com/ig and live.com right now, live.com has a slight edge in functionality.

If you’ve already got a Microsoft Passport (and/or a Hotmail account), live.com is worth trying out.


Busier Ads from Google :-(

This article from the NY Times (free subscription required) tells us that those of us who use Google will soon have to contend with graphical ads. I suppose it was only a matter of time, but I’m still disappointed by the news. There are areas when simpler is better, and search is definitely one of them. We can only hope they’ll be small and tasteful (or that CustomizeGoogle will still allow us to remove them).