# Sunday, July 29, 2007

Greg Reinacker (Founder/CTO of NewsGator, a local company) and Brad Feld (of the Foundry Group and a Boulder-based VS/startup blogger) both posted recently about their first computers.

For me, the "computer geek" bug bit pretty early. When I was 12 or so (early 80s), I had a friend whose father bought him a TRS-80 Color Computer. He'd have sleepovers at his house and we'd stay up very late hacking out "games" (loosely defined) that were of the Choose Your Own Adventure variety. They were completely text-based and offered multiple choices at each turn. We learned quickly to map out the story's flow on graph paper.

c64 It didn't take long to decide that I needed a computer of my own, so I started saving. Eventually, I got a paper route for the San Jose Mercury News and that helped me reach the savings goal pretty fast... I was pretty excited to purchase a Commodore 64 with my own money. My parents helped out by buying me the cassette tape drive (so I could [painfully and slowly] save my work) and a dot matrix printer. The following Christmas, my grandparents bought me the 300 baud modem for it (funny story: I learned years later that my grandparents argued over whether to get this because they'd just seen the film War Games). A year or so later, I bought the disk drive for it... which was both more expensive and physically larger than the computer itself!

I spent a whole lot of time hacking on that thing, including punching in program after program from "Compute Magazine". You'd punch things in by hand and try to run it later... but it was guaranteed not to run, so you'd have to go back through and try to find the typo.

wargames In high school, I got in trouble once in a History class and was given some "extra" homework -- I had to write "I will not cause a disruption in Mr. Whatever's class in the future" a hundred times. I asked the teacher if it would be alright if I typed it a hundred times because A) I had a lot of homework and B) I needed the practice typing. Not having any idea what he was agreeing to, he said it was alright.

I went home and wrote something like this:

10 FOR I = 1 TO 100 
20     PRINT "I will not cause a disruption in Mr. Whatever's class in the future." 
30 NEXT I 

Fire up the printer, run it, and I was done... I remember this because it was the first time I realized that I could make a computer work hard so I wouldn't have to. Thus, a career was born.

That computer was also my first experience with the online world. I had to borrow my parents credit card to make it happen, but I got my first Compuserve account with that C64. Between cruising forums and writing code to peek/poke sprites on screen, I spent hundreds of hours on that machines.

Later (shortly after high school), I got an IBM PC XT 8088 clone that had two 5.25" floppy drives in it. One was the system (the OS and whatever app you ran) and the other was for data (to save your documents or whatever). Later, my uncle hooked me up with a 10MB hard drive... it was a beast and sounded like a jet taking off. I still remember messing around with jumpers to get it all working.

cakewalkdos That 8088, with an amberchrome monitor, was the computer with which I first combined my other hobby -- music. I bought a serial port MIDI adapter and the original release of Cakewalk for DOS. Connecting a synthesizer to a computer opened up an amazing new world to me. I've been a Cakewalk (now SONAR) user ever since, despite dabbling with other products. It just "feels right" to me.

From there, it's been a series of 286, 386, and so on... I've never owned an Apple computer (though the MacBook Pro is sure tempting these days) and have been a PC junkie for over 20 years now.

posted on Sunday, July 29, 2007 2:36 PM Mountain Daylight Time  #    Comments [2]
# Saturday, July 28, 2007

bsodjoke

If getting a tattoo of a product logo (MS Zune, in this case) isn't "out there" enough, how about getting an operating system error message tattooed all the way up your arm (Windows Blue Screen of Death)??

I wonder how you explain those to your grandkids in a few decades...

Technorati tags: , , ,

posted on Saturday, July 28, 2007 11:52 PM Mountain Daylight Time  #    Comments [0]

recycle A chain of blog posts came through my reader this week that discussed the value, or lack thereof, in "code reuse" for most development teams. First, some background...

It looks like the original article was "Internal Code Reuse Considered Dangerous" by Dennis Forbes (great blog, btw). That article was then referenced by Carl G Lewis (cysquatch), who largely agrees with the sentiment in his "Is Your Code Worthless" post. Finally, Scott Reynolds referenced Carl's blog post in a follow-up the other day, wherein Scott suggests that "Code Reuse Is Not the Villain".

Still with me? Good.

As I worked my way back in time (Dennis' original post is from 2005), it occurred to me that this line of trackbacks is a bit like the "telephone game" that we played as kids. As each person responded to the previous person, the meaning of the story changed in subtle (but important) ways.

In deciphering this, I hope it goes without saying that "code reuse" as a practice is a worthwhile goal to keep in mind. It's not always achievable, nor even desirable, but certainly it's something that good developers keep in mind as they work.

That said, Dennis begins by arguing against the management notion that code reuse saves money by "codifying the abilities of the team" -- thereby making the team easier to replace or downsize. Ouch.

Code in the library is considered an asset, and managers and owners like the idea that, while developing product A, as a side effect they're accumulating this great repository of generalized code which they'll be able to use for a completely different product - let's call it product B. Soon the domain knowledge of their developers won't matter (and thus they'll be expendable), because everything is encapsulated in common code: They've codified the abilities of their team.

I'm not sure how any worthwhile manager could get from Point A (the practice of "accumulating [a] great repository") to that particular Point B (where the "domain knowledge of their developers won't matter"). And in fact, Dennis' rebuttal to this point is that the opposite happens -- the more you grow internal frameworks and libraries, the more you depend on your developers. New developers, regardless of previous experience, have a substantial learning curve in front of them with any of your internal code.

And in that, I completely agree. Where I got lost in Dennis' argument was in the next portion where he appears to argue that code has no value beyond the developers writing it and the project they're writing it for. [emphasis mine]

The question every organization needs to ask itself, then, is what value they could sell their "reusable code" for - what, realistically, would competitors and new entrants in the field offer for it? The answer, in almost every case, is $0, and they wouldn't want it even at that price. There is extraordinarily little code theft in this industry (even though we're in the era of burnable DVDs and USB keys) because most code - above and beyond the industry-wide frameworks and libraries - has no value at all outside of a specific project with a specific group of developers. Trying to use it for other projects is often worse than starting with nothing at all.

This is the part that loses me completely, for two reasons:

  1. It assumes that the value of reusable code is measured by what an external entity would pay for it. I'd argue that it should be measured by its value to the company that owns it. Not just in that it saves time for the team that wrote it... but that it reduces bugs by ensuring that a bug fixed in one location is fixed for all locations. A user interface metaphor or workflow used in one place is used in multiple places. Blah, blah, blah, the usual examples... Reusing code in the correct way increases the value of a product in the eyes of customers and prospects and this has very direct value for the company's bottom line.
  2. That argument also ignores technology acquisitions. The value of Visio's code when Microsoft bought Shapeware was something (much) greater than $0. It's not as if Microsoft needed the customer base or the market share. Similarly when Google purchased Writely or when Yahoo bought del.icio.us. In each case, the acquisition was a technology purchase -- the acquirer was infinitely larger than the company being bought and wasn't already in competition with them. The purchase wasn't just for the customer list.

I actually think Dennis' point is best made in a bullet point later in the post. And the point is that code reuse merely for the purpose of code reuse is a waste of time and money. [original emphasis]

Internal code reuse for niche industries and domain specific problems can be very valuable, but code for generalized, industry-wide problems are seldom valuable unless you're truly developing it for industry-wide consumption (e.g. the .NET Framework is tremendously valuable code reuse). I have seen too many examples of large internal libraries that are largely duplications of vastly superior functionality existing in the .NET Framework or C++ Standard Template Library, or which could be better served by available professional or open source libraries. If your problem isn't domain or niche specific, but rather is industry wide, it is extremely likely that either a library encompassing it exists, or that it isn't a problem that is worthwhile generalizing

And here's where I'd agree... I, too, have seen many examples where companies simply reinvent the wheel in the name of "reuse". Hey, if it's ours then we can change it, fix it, and reuse it -- right? It's really a buy-versus-build debate. If your team is writing things like data access layers, UI controls, or validation tools in the name of "reuse", then you may as well go out to your parking lot and just light some cash on fire. At least it'd be quicker and you'll get the momentary heat and entertainment.

The above quote is what Carl's response (from last month) is based on... and while the post's title ("Is Your Code Worthless?") is plenty controversial, his purpose was really more to tell a story -- and a funny one at that. It's the story of a client company who felt that their internal code was so proprietary and so valuable that they couldn't possibly let a contractor look at it offsite. Instead, they had Carl travel 8000km to work on it at their location -- only to discover that the code was a complete disaster. What a great line...

I sat down and fired up Vim to start looking at their code and was INSTANTANEOUSLY BLINDED by the reeking bile that was pouring across my monitor.

Hilarious.

Lastly, it's worthwhile, I think, to differentiate between the development of internal business applications and developing commercial products. If you're building internal applications (e.g., payroll, HR, accounting types of systems), then managing reuse across multiple applications is probably not as important. There's still value in reuse for you, but your company doesn't lose customers if the display grid in Application A is different from the display grid in Application B. The tolerance for error is higher. With commercial products, though, it's a different story. It would be silly for the Word, Excel, and Powerpoint teams to all go create their own base UI libraries or text-formatting behavior. And the consequences of a mistake are greater and more easily measured.

I guess the point is to not get carried away with a "reuse is worthless" meme and suggest turning away from it altogether. In 16 years, I've worked on several product lines that made extensive use of shared/common libraries, to great effect and to great value for the company. Bottom line - the key is to pay attention to where building your own libraries for reuse makes sense and where you should simply reuse existing, proven libraries.

In either case, recycle the good stuff... future generations thank you. ;)

posted on Saturday, July 28, 2007 10:24 PM Mountain Daylight Time  #    Comments [0]

I've subscribed to Frans Bouma's blog for quite some time. He wrote a post earlier this week that echoed a meme floating around various development blogs and, at the end, he "tagged" anyone who was reading the post.

Let me just pass on the torch to every dear reader of this blog. So if you read this item, you are up next.

Not having been "tagged" before (it doesn't happen much when you have two readers -- and they're both just different browsers on your own machine ;-) ), I started to give it some thought.

What are the things in my life that I've just "gotta have"? The must-have gadgets and tools that I wouldn't want to do without.

I should make two very important distinctions... first is that the most important thing I have in my life is obviously my family, but they're not "things". The stuff below is a list of simple, material possessions. Secondly, let's ignore for the moment that all any of us really needs is sustenance, shelter, and safety. The point of the meme is simply to point out the gadgets, tools, or prized possessions you enjoy... so here's what I came up with.

Gadgets and Toys

Xbox 360 - While it was originally just mine, it's become something the whole family uses now. From the media center capabilities to family-friendly games on Xbox Live Arcade, there's plenty here for the non-hardcore gamer.

Nikon D70 - I wish I were better at taking photographs than I am... I do alright, but I try to avoid the Auto modes and my best pictures usually still require some trial-and-error.

Roland V-Drums - Rupturing my Achilles earlier this year was a big setback in my drumming. I'm able to do it for short periods now and it's very relaxing to put  my iPod on the 'Drums' playlist and work up a sweat.

Tivo - Once you've time-shifted television, there's no going back. And don't tell me about your Comcast or Dish Network DVR... it's not the same.

iPod - It's not my first MP3 player, but it's by far the best I've had. I just wish iTunes weren't such a P.O.S. under Windows. Mine is a 60gb iPod Photo... but I wouldn't mind moving to an 80gb 5G iPod at some point.

Software Tools

CodeRush and Refactor Pro - These tools are like crack for me. I get twitchy if I have to use a machine that doesn't have them installed. I think my team is tired of hearing me preach about how much I love using these.

SlickRun - Probably the first thing I install after Windows... there are so many ways of using it and many of the shortcuts I've defined are etched into my muscle memory.

FeedDemon - Sure, Google Reader's good... but for my money, you can't beat a well-written, fast desktop application. Plus, with the automatic syncing to NewsGator Online, I get the best of both worlds.

Reflector - I can't imagine any .NET developer not installing this on their machine right away.

SnagIt - I generate a LOT of screenshots. From graphics for our dev wiki to quick examples I attach to email messages, a picture is usually the quickest way to get a point across.

I think that's it... I could come up with a lot more (and may do a list like this one at some point -- if only as a Google-indexed reminder of the things to install), but this my current Top Ten.

(Sorry, Frans, that LLBLGen Pro isn't on that tools list yet. I've been meaning to try it out, honest! ;-)

posted on Saturday, July 28, 2007 7:54 PM Mountain Daylight Time  #    Comments [0]
# Monday, July 23, 2007

Every developer, or at least those who really love what they do, has a few side projects to work on. They're the palate-cleansers you turn to when you want to sink your coding teeth into a different problem for a while... they're your sorbet projects. 

itunesexportsolution Well, one of the side projects I've worked on this year has been iTunesExport - a .NET app that can export playlists from your iTunes library. It exports them in a variety of formats (M3U, EXT, WPL), can copy tracks to a new location, and has both GUI and command-line interfaces. I got involved earlier this year when I wanted to export playlists in a file format that it didn't yet support. I contacted Eric Daugherty, who owns and hosts the project's site, and jumped in to add the additional export type. Since then, I've added additional features and tweaks and it's been a pretty fun project to work on.

Yesterday, productivity blog LifeHacker did (another) post on it with some examples for using it. It was a cool surprise as LifeHacker is one of the feeds I subscribe to, so I came across their post randomly in my feed reading.

I added a comment to that post, but since it was my first comment to LifeHacker my registration is sitting in an approval queue somewhere and the comment's not yet visible. The other comments on that post had a number of questions about iTunesExport and I wanted to answer those and/or clarify what the tool does.

First, iTunesExport does NOT modify your tracks in any way, shape, or form. It won't convert to or from any file format and it won't strip DRM from purchased tracks. The only time it does anything with actual song bits is when you choose to copy tracks to a new location for your exported playlist(s)... and in that case, it's just doing a straight, bit-for-bit file copy.

Second, the purpose of iTunesExport is simply to let you export playlists OUT of iTunes and into a file format that can be read by another player (WinAmp, Windows Media Player, etc). In my case, I use it to make my iTunes Smart Playlists available through the Tivo Home Media interface on our television. With this in mind, we're very careful to NOT modify the iTunes library XML file. We're simply reading the playlists/songs out of it and then writing another file in the format you want. So the exporter doesn't do anything to play count, last played, or any other data in the iTunes library.

Finally, Eric and I are always interested in hearing suggestions and feedback for the app. Some of the recent changes/fixes, especially around internationalization and Unicode,  have come via testing and feedback from others.  Those are always the things that are most fun to work on because you know someone can use it right away. So while I've got a few ideas for things I'd like to add (including saving/restoring your settings, improved documentation, and some better reporting/feedback on what was exported), we'd love to hear other ideas for things the tool might do... so please send those along via the project's site or through SourceForge.

posted on Monday, July 23, 2007 12:41 AM Mountain Daylight Time  #    Comments [0]
# Sunday, July 22, 2007

I'm not much into the Harry Potter phenomenon, but I am in the middle of trying to learn WPF (Windows Presentation Foundation). I'm currently tackling WPF via Adam Nathan's "WPF Unleashed" book and plan to read the Petzold WPF book next (followed, perhaps, by the Sells/Griffiths book). WPF is conceptually very different from Winforms or other UI technologies that I've used, which makes the learning curve steeper than would be normal for "just another platform update". Anyway, you may be wondering what Harry Potter has to do with WPF...

blackfamilytree Well, a month or two ago, the folks at Vertigo Software released a WPF reference sample application called Family.Show. The application is a genealogy tool that let's you manage a family tree, along with information and photos about the people in the tree. It's since been updated with more features and it's simply a great-looking application. If, like me, you're trying to learn WPF then the coolest part of Family.Show is that they've made the source available for download. Sweet.

Earlier today, Liam Molloy (of Vertigo) published a post about a family tree he created for the "Black family" from the Harry Potter series. Using Wikipedia, Liam was able to piece together a fairly large family tree for Sirius Black, including photos (of the actors/actresses from the films) and the background stories for many of the characters.

You can download Liam's data files for this family tree, load them up on your machine, and go to town with the info-browsing. Note Liam's warning at the bottom of his post -- while he made an effort to remove any spoilers for the just-released book, he says it's possible that there's still one or two in there. Not having read any of the books, I wouldn't know either way... I just think this was a very cool thing to do from a data visualization perspective.

So... whether you're into WPF or Harry Potter (or both?), you've got a reason to go check it out.

(Side Note: The only drawback I've found with the app Vertigo built for Microsoft is that the background whitepaper for it was published in the XPS file format... and even though I've got Office 2007 installed, I still had to download a separate "essentials pack" to view it. What's wrong with a simple PDF?)

posted on Sunday, July 22, 2007 10:55 PM Mountain Daylight Time  #    Comments [0]
# Friday, July 20, 2007

One of the side-effects of having surgery earlier this week is that I've had time on my hands to get some reading done. I can't lift anything heavy yet and I'm having to take some pain meds... so my options are pretty much limited to reading, watching television, playing some Xbox, and using the computer. Even that last one can be dicey as I don't want to be anywhere near important code while taking these prescriptions. 

managinghumanscover On the reading front, I started reading "Managing Humans" by Michael Lopp (also known via his nom de blog, Rands) the other day and am nearly done with it now. The subtitle of the book is "Biting and Humorous Tales of a Software Engineering Manager", which I think provides a good idea of the book's overall "vibe".

I know I've mentioned his site, Rands in Repose, a few times in previous posts and it's one of the top feeds in my subscriptions. He writes from plenty of real-world experience on managing developers, development projects, and most importantly, managing organizations on behalf of those developers and development projects.

His is one of those sites that you go to as soon as you see a new post has arrived. The writing and insights are just that good... so when I learned he was publishing a book, I knew that it'd be a must-read.

A lot of the material in the book comes from his blog, though it's been re-worked to some degree to flow better in book form. The humor, edginess, and "bite," however, all remain intact. This is NOT your typical management advice book -- it's focused squarely at people who manage development teams that are building software products.

The book is broken into three sections --

  • The Management Quiver, where each chapter discusses tools (or "arrows in your quiver") for surviving the manager-employee relationship (from either direction). Detecting agendas, handling someone in the middle of a freak-out, and saying "no".
  • The Process is the Product, where processes and approaches for getting a product out are discussed. Status reports to monitor progress, capturing the context for work being done, and the all-important version 1.0.
  • Versions of You, which contains chapters that discuss the various personality types that are common in a software team. The Organics, the Incrementalists, and the Free Electrons. If you've been a developer (or managed developers) for any period of time, you can't read through these chapters without laughing out loud at the way he describes these familiar personalities.

The chapter on saying "no" is particularly hilarious, as it describes the process by which a manager becomes a manager -- essentially, pixies arrive and provide you with an elegant top hat that has the words "I'm The Boss" emblazoned on the front. Of course, the key thing that you don't immediately recognize as a new manager is that the back of the hat reads, "For Now." And so begins the lesson about a manager NOT being infallible and truly needing a team to push back for the improvement of the process/product/company. Team members forget the "For Now" part and let the title and position of "The Boss" get in the way of fighting for good ideas.

Saying no forces an idea to defend itself with facts. It forces a manager under the influence of his top hat to stop and think. Yes, I know that top hat can be intimidating, and yeah, I know he's the guy who signs the checks, but each time you allow your manager to charge forward with unchecked blind enthusiasm, you only reinforce his perception that he's never wrong. That's a ticket straight to Crazy Town.

As the subtitle suggests, the book is aimed squarely at software engineering managers. But one of the things I really like about his style is the dual angles for the advice he provides. While he's suggesting an approach for handling a problematic situation with your manager (the President, CEO, CTO, whatever), he's also providing advice on how to not be that problematic manager as you manage your own team.

The book does so well with this multi-angle approach, that I'd also recommend it for people other than engineering managers, including developers of all levels and non-technical folks who regularly work with a development team.

posted on Friday, July 20, 2007 10:21 PM Mountain Daylight Time  #    Comments [0]

One of the cool features of FeedDemon, the news reader I use, is called "News Bins" -- it's essentially a place you can drag and drop items that come through your feeds to save or organize them for later. I used to use them essentially as "bookmark folders" for items I wanted to come back to.

In the latest version, News Bins can now be sync'd with NewsGator Online in the same was as all the rest of my feeds and folders can be. Even cooler, Nick Bradbury (the primary FeedDemon developer) set it up to create an RSS feed for any synchronized News Bin. So anything I drop in there is exposed via a syndicated feed to anyone who's interested in seeing the things I've come across.

With that, I've created a "Link Blog" and the feed for it is in the navigation items on the left. Right now, I've created only one and will use it for development-related items, plus the occasional 'general tech' tidbit.

I can see how this feature would be useful in a few ways, though... creating a link blog for "family", another one for "work", and so on. FeedDemon has keyboard shortcuts for dropping items into the feed easily so I can quickly share items that people in my family or at the office might find interesting.

Nick has a post from just after the 2.5 release that also discusses this feature and there's also a screencast with a walkthrough.

Technorati tags: , ,
posted on Friday, July 20, 2007 9:30 PM Mountain Daylight Time  #    Comments [0]

business2sos Here's today's blogosphere bummer... word is that print magazine Business 2.0 is on its last legs and could be publishing their last issue later this summer.

I've been a subscriber for just a couple of years, but in that time it made the cut when I did a serious "print subscription purge" a while back. It filled the gap nicely between two other magazines I subscribe to - Wired (for tech coverage with little "business" angle) and Business Week (for the decidedly non-tech business-y stuff). The closest thing I've found to Business 2.0 has been "Inc" magazine, which doesn't have as strong a tech angle and isn't usually one I read from cover to cover.

Most telling, it's one of the few magazines I've had where people who see it on my desk want to read the issue when I'm done with it... guess I should have told them to buy their own.

It sounds like Business 2.0 has actually been on the upswing (no small feat for a print magazine in these "content wants to be online... oh, and free to access" days), but its publishers (those AOL-acquiring, 3.2-billion-wasting, internet-music-hosing geniuses at Time Warner) decided that B2.0's new numbers may be coming at the expense of Fortune. Can't have that, so the smaller tech rag gets the thumbscrews.

The coverage today doesn't make it clear whether this deal is 100% done and there was an effort to get a "show your support" FaceBook group going. If it is a done deal, I guess I'll have to look at the silver lining here -- a shorter to-read stack on my nightstand.

posted on Friday, July 20, 2007 3:07 PM Mountain Daylight Time  #    Comments [0]
# Thursday, July 19, 2007

After posting over the weekend about my recent Dell woes, I received a comment from "John @ Dell" who works in their Customer Advocate group. John looked up the system I'm having issues with and agreed that it's overdue to be replaced.

After confirming the service tag and my shipping information, he commented again to let me know that an exchange machine is on its way. That's GREAT news... I look forward to posting again once it arrives and I can confirm that all's well and I'm back on track.

I gotta hand it to Dell... between the Customer Advocate program and the Direct2Dell blog program, they look to be pretty serious about being proactive with customer issues that arise. It's a bummer that it took blogging about it publicly before it was dealt with, and I'd have liked to have seen more responsiveness using the "traditional" support channel... but the end result is what's most important to me in this case as the machine's pretty much unusable as it is. Thanks again, John, for picking up on the post and taking some steps to get this resolved.

 

PS... ironically, I finally got a response to an email I'd sent in middle of last week wherein I wondered about the replacement panel that didn't appear to have been shipped. The response was a very short and generic message, stating simply that it "looks like the part should ship on 7/20".

Technorati tags: , ,
posted on Thursday, July 19, 2007 11:26 PM Mountain Daylight Time  #    Comments [0]

The last DasBlog release under ASP.NET 1.1 went out a couple of weeks ago, so I decided to give that a run. It all seemed to go well when running it locally, which was a good sign... and seems to be the standard for the last few updates I've done. Once I have it running locally, it's just a few config changes to get it going on the server. This one was just slightly different because there were some script files moved around and I initially had it running under ASP.NET 2 on my local machine. In any case, the site's using it now and no hassles.

I've been lurking on the DasBlog developer mailing list for a couple months now and there's a good deal of activity. Currently, the project's dev team is working on the initial ASP.NET 2.0 release, including support for Medium Trust. As I mentioned previously, there's also a theme contest going which should yield some cool new looks for folks to use.

I keep meaning to check out some of the "open source template" sites out there, but then I get sidetracked with other things... with this update, I'm settling for a few new navigation links and an updated blogroll.

Technorati tags: , ,
posted on Thursday, July 19, 2007 11:06 PM Mountain Daylight Time  #    Comments [0]
# Sunday, July 15, 2007

I've been a Dell guy for the last ten years. Over that time, I've had just one non-Dell machine and that's because it was purchased for me prior to starting a new job and the company was then standardized on IBM machines. That machine was a Thinkpad T series and it wasn't too bad a machine.

Otherwise, machines for home and business have been Dell boxes (one every couple of years at home and who knows how many business machines) and I've always suggested to friends and family that they go with Dell also. You get a machine that's ready to go out of the box and their prices usually compare well with other options-- assuming you don't want to go the build-your-own route. When it comes to my personal machine, I prefer a laptop so the DIY thing isn't really an option.

That allegiance is beginning to wane. About a year ago, I bought an Inspiron E1705 for my home/personal machine and it is pretty much loaded (at to the extent that an Inspiron configuration could be). Lots of RAM, fast disk, 1920x1200 17" display, DVD burner, NVidia graphics, and so on. Not a lower-end machine and not inexpensive either. It ran fine for the first few months but then the issues began.

It started at the end of last year when I noticed that it was running really hot. Areas on the bottom were nearly too hot to touch. Then early this year, it started randomly giving me the BSOD with a general hardware failure.

I had next-day warranty coverage, so I gave them a call... they decided it was the CPU burning out and sent another one out. This is when I learned that Dell's "next day" service really isn't "next day". What they mean is that they'll ship the part(s) out to some local contractor in your area and then the contractor should be out to fix it the "next day" after they get the part. So it's more like 3 days... whatever, I could get by with that and the CPU was replaced.

So far so good for a couple months... but then suddenly the screen would go black (as if the display shut off) when the machine was on AC power. On battery, it was fine. The machine was continuing to run and I could use Remote Desktop from another box to get into it even when it was on AC power. So another phone call... this time, they said they'd ship out a new "main system board". Three days later, a tech's out to replace it - but the problem isn't fixed.

So he calls Dell that day and they ship a new LCD panel out... another week goes by and then the screen gets replaced. Seems OK for a few days, but then...

laptopdarknessthumb The left edge of the screen begins to fade (see image to the left)... it's gotten more pronounced since that picture was taken, to the point that the fading now comes all the way into the middle of the screen. It also seems to get darker the longer the machine is on and, after 30 minutes or so, the left half of the screen is unusable. Another phone call... this time, they'll replace the LCD panel and the NVidia adapter ("just in case," says the tech).

All of this was frustrating, but now it's worse... because there's been no progress. After a few days, I don't hear from anyone. So I call to see what's up and am told the part is on backorder for a day or two and I'll get an email with a tracking number once it ships. Nothing for a couple days... so I email the tech, who emails a tracking number back to me and says the part(s) are on their way. However, Fedex doesn't recognize that number at all.

I emailed the tech again last week, along with the tech supervisor for the incident and the Dell Customer Advocate email alias... still no response.

I've got surgery scheduled for this week, but my wife will end up having to call them and nag again about getting this fixed.

I also have to wonder -- at what point does Dell declare this thing a lemon and replace it? This will be the FOURTH time in a few months that a tech has had to come out to replace parts on this machine. All these support calls, replacement parts, shipping, and paying contractors to come to the house -- that's gotta add up. I've got nearly the same machine at the office for business use, as do several of my colleagues,  and nobody has had any problems. Clearly this box has some problems.

In any case, their handling of this support problem may just be what changes me over to Lenovo... or HP. Or Toshiba. It's kinda ridiculous to think that, over the last few months,  my machine has been out of commission for weeks.

posted on Sunday, July 15, 2007 3:18 PM Mountain Daylight Time  #    Comments [4]
# Wednesday, July 11, 2007

usestairwell Christopher Hawkins has a post from last Friday wherein he describes his "dream" software projects. The funny thing is that he refers to them as "silly", but they seem like pretty real and useful projects to me. The film production system, in particular, sounds like a fun project to work on.

While I wouldn't say that mine are quite "dream" projects, there are a couple of systems I've always thought would be a lot of fun to work on.

Poker Machines for Casinos -- Partially because I enjoy playing some poker myself and partly because I think there would be some interesting problems to solve. There have been a number of products announced that bring the "automated" world of online poker into casinos, bars, or other hangouts.

Note that this is NOT video poker of the "Jacks or better" variety. In some cases, the game is still "regular" poker, but everyone around the table plays the hand via a touchscreen and there's no dealer. In other cases, it might be a small table where two people can play heads-up while they wait for a seat at a regular table or while hanging out at a bar and watching a game. There are enough differences between these "electronic tables" and regular online poker software to make it pretty interesting.

Elevator Control Systems (for high-rises) -- This is the one that usually gets a laugh when I tell people about it. But if you imagine a tall building with multiple tenant types (retail, offices, or residential apartments, etc), then there are some intriguing things to consider. How do you optimize the flow and availability of a car at any given time? If an car's at rest, do you send it to a certain floor to wait for a call? During the morning, you have one type of flow (from the ground floors up to the offices) and in the late afternoon it's the opposite. What about lunch hours? How do you handle things like redundancy or failover if a car has to be taken out of service for repair? What can you provide facilities and security with in the way of monitoring and management?

Both of these seem interesting to me as intellectual projects... but I think what intrigues me is that they both offer a lot of opportunity for data visualization and some infoporn. In both cases, you can imagine administrative/monitoring interfaces that provide all sorts of interesting views of data (historic poker hands) and state (elevator state).

I'm interested in reading what sort of "dream" projects others write about.

  Technorati: , , ,
posted on Wednesday, July 11, 2007 11:07 PM Mountain Daylight Time  #    Comments [0]
# Sunday, July 08, 2007

Ben Scheirman is running a themes design contest to get some new looks in the themes list for DasBlog. To encourage designers to submit their original designs, he and Scott Hanselman are putting up a $100 gift certificate for Amazon.com.

While I "know what I like" when it comes to design, I've got virtually no talent for creating a web theme from scratch... This could be a good opportunity for someone with talent, though, and a hundred bucks at Amazon.com? As I've said since we signed for Amazon Prime, "If I can't get it at Amazon using Prime, it's probably not worth buying..."

Speaking of DasBlog, the last ASP.NET 1.1 update went up a couple weeks ago. I'm running it on my local machine and it seems to be fine... so I'll update the server soon. On the other hand, an ASP.NET 2.0 version that supports Medium Trust is in the works. Maybe it's worth waiting... either way, I'm stoked to see all the renewed activity on the dev mailing list (where I've just lurked for a few months now).

  Technorati: , , ,
posted on Sunday, July 08, 2007 10:50 PM Mountain Daylight Time  #    Comments [0]
# Saturday, July 07, 2007

My wife's computer (a Dell Latitude laptop) has been acting a little wonky and was overdue to be re-paved and re-configured. It was a hand-me-down from me to her over a year ago and it's been nearly three years since it was rebuilt. I usually like to pave once every 12-18 months.

Thankfully, I always divide a laptop drive into at least two partitions -- C: (for the OS and apps) and D: (for everything you might want to keep). Once you get some of the system folders like "My Documents" pointed to a location on D: (using the awesome TweakUI), it's very convenient. It also makes doing this re-pave pretty simple because I won't have to restore all the files she cares about later. I back that stuff up semi-regularly (probably not regularly enough), but the D: stuff doesn't get touched during this process. I'm just nuking the C: partition and doing a re-install.

So I'm installing XP (not enough horsepower for Vista) from a disc that has SP2 already applied... but even at that, the first Windows Update process has taken even longer than the actual install of the Operating System. There are 80 important/critical updates in this first pass (and more likely after the first 80 finish and it reboots).

It's good to be up to date and all, but man... that's a lot of updates.

One other thing that has the potential to really irritate people is that one of those 80 updates (number 65, to be exact) is the Windows Genuine Advantage update. This installs some utility on your machine that verifies that you're using a legit, licensed install of Windows. Fair enough... but this update opens a wizard that requires you to step through it.

That's right -- the 65th update in a list of 80 that need to be downloaded and installed stops the entire update so that you can click Next a few times. Worse, there's no need here for a Wizard as there are no options or configuration settings to be set!

Luckily, I've opted to let this run through the afternoon and I just go over and check it out every once in a while to move things along. So I saw it fairly quickly. But how many people doing this have seen those 80 updates in a list and decided to start the process and go to bed... only to find a wizard wants their attention in the morning?

That stinks.

posted on Saturday, July 07, 2007 5:20 PM Mountain Daylight Time  #    Comments [0]
# Friday, July 06, 2007

I can't make it due to scheduling conflicts, but the Startup Weekend in Boulder begins tonight. The idea is for a group (a few dozen) to start with an idea this evening and work like mad until Sunday evening to turn that idea into a "thing".

I'd bet on some red and bleary eyes come Sunday night and Monday, but it should be a lot of fun and a great experience regardless of the business/product outcome.

Good luck, gang!

 

Technorati tags: , ,
posted on Friday, July 06, 2007 11:39 AM Mountain Daylight Time  #    Comments [0]
# Wednesday, July 04, 2007

MoMoneyPoster As I mentioned earlier, I find all the breathlessness around the iPhone to be entertaining. It's a sexy-looking device, to be sure, but it's a phone. And a $500-600 phone at that! Multi-touch sounds interesting, but it's not as though there's much else here's that innovative -- email, messaging, web-browsing. With no developer platform -- but wait, "there's the web" (and the Apple fans fall all over themselves to declare it some sort of ground-breaking genius move -- "bold"? "forward-thinking"? Yeah, you're objective).

In any case, it's obviously been a very successful launch for Apple, even with the too-many-to-be-a-fluke activation problems. Wildly successful. Down the road, I may even stand in line (for 5 minutes) pick one up for myself. You know, once it has decent download speeds and there are some compelling applications (I kid, I kid!).  In the meantime, it is nice to see mobile devices getting a lot of attention like this and spurring on the competition for features is a good thing.

What had me chucking this morning was a TechCrunch post that declares $200 million in profit for Apple in their opening weekend. How did they get at this number? First, the quote:

"Based on the cost of manufacturing an iPhone..., Apple would have made a profit of between $200million and $266 million in 3 days (not including marketing costs), on sales somewhere between $350million and $420million, significantly more than earlier estimates of Apple having a $300million weekend."

The original quote referenced a BusinessWeek article from Monday that estimates the parts cost for an iPhone to be $200-$220US. This is from a non-Apple estimate by a firm that took apart a production iPhone and came up with an estimated cost for the individual components. The $20 difference is based on the 4GB versus 8GB unit.

So using the most basic possible math, TechCrunch clearly took this route:

Price    -

Parts Cost    =

Difference

*    Units Sold

TechCrunch Profit

499 200 299 700,000 $ 209,300,000
599 220 379 700,000 $ 265,300,000


Voila, between $200 and $266 million. The TechCrunch article does point out that Apple "would have" made this profit by "not including marketing costs".

I'm not sure why marketing would be the only cost called out separately here because the true figure for expenses on the iPhone are clearly much higher. So while Apple will never tell us what that number really is, the most basic analysis would also have to include:

  • R&D -- A team at Apple worked hard to decide what to build, which features to include, how it might be engineered, what the tradeoffs were for cost, features, battery life, and size. Multi-touch doesn't grow on trees, right? Nor do screens that don't scratch easily.
  • Design -- A team worked to come up with that cool look and all that sex appeal.
  • Development -- Somebody wrote that software, right? Sure, I know it's "based on" OSX, but it's certainly not a matter of OSX developers choosing "File -> Save As iPhone" in their development environment.
  • Production -- The BusinessWeek article referenced above states that the $200/220 cost for the iPhone is just the parts. Those parts have to be assembled. By people. And big machines. In factories.
  • Testing -- Use the phone internally. Find a problem. Fix it. Use the new phone internally. Request a feature. Add it. Repeat.
  • Fulfillment -- Those phones have to be packaged (something Apple clearly spends a lot of time and money on -- they single-handedly created "gadget porn") and shipped out to stores.
  • Marketing -- This is the one that TechCrunch opted to include and it's obviously a huge cost. There were iPhone commercials all over prime time in the weeks leading up to its launch. Posters, brochures, billboards, t-shirts, television spots, magazine ads, and so on.

Finally, there are other costs not specific to the iPhone that must be carried. All those jobs above people to sell it (sales and retail labor). Those jobs also include people who need places to work (facilities), recruitment and benefits (HR), paychecks and expenses (finance), and tools with which to communicate (IT). Overhead.

We'll never know exactly what those other costs do to the iPhone's bottom line. But we can safely say that they add up to some fairly non-trivial numbers.

Do I think Apple LOST money on the iPhone's opening weekend? I doubt it. But it's certainly not accurate to say they made anywhere near $200 million in profit. iPhone #1 was very expensive for Apple to put into a customer's hands... it's iPhone #5,000,000 and beyond that will let us know what sort of long-term value has been created for Apple's business.

And I don't mean to pick on TechCrunch here... lots of sites were calling the iPhone a massive hit before the first device had been sold over the counter. There's no shortage of this sort of speculation.

In fact, TechCrunch themselves poked fun at all the hype a few weeks ago by calling it the second coming. Hilarious.

posted on Wednesday, July 04, 2007 12:44 PM Mountain Daylight Time  #    Comments [0]

What a month June was... Ugh. Among the highlights:

  • Getting acquired.
  • Taking a vacation to California.
  • Coming home (alone) to oversee having the house interior painted.
  • Going to the ER for stomach/GI issues (while home alone).
  • Getting admitted to the hospital for three days.
  • Learning that I need surgery to resolve the issue (second in 2007?!?).
  • My new laptop goes belly-up (again).
  • Next-Day service from Dell takes several days.

And the first calendar month without a blog update in a while.

From a health perspective, I'm ready for 2007 to be over. I've not had any major health issues since I was a kid (ruptured appendix) and now it'll be two surgeries in one year. Ridiculous... but at least both were/are fairly simple and won't have any lasting effects.

On the tech side, I've been slowing working my way through Adam Nathan's WPF book, experimenting a bit with Virtual Earth, made some incremental improvements to iTunesExport, and have enjoyed watching all the hype (and hyperbole) over the iPhone. On the iPhone, I think it's hilarious that people camped out to be among "the first" to get one, while others walked into an AT&T/Apple store the next day and walked out with one 5 minutes later.

posted on Wednesday, July 04, 2007 10:14 AM Mountain Daylight Time  #    Comments [0]