Thursday, August 31, 2006

Microsoft, where's the love?

Ahh... to reminisce for the days when Microsoft cared about developers. Remember Steve Ballmer's 'Developer' chant? I certainly do.

That is why I was so surprised when I went to renew my MSDN Subscription, and the online tool wanted me to pay almost $11,000!!!! (Due to a change in subscription model, the online renewal tool wanted to charge me full price, rather than the update price, what was only $3,500...) I know MSDN Universal is chock-a-block full of goodies, but that is ridiculous! Hm... so part of the change is to tie MSDN Subscription to a Visual Studio product skew, either Team System or Professional. Then you can pick an MSDN Subscription that includes everything, or OS releases but not Office software.

Now MSDN has always been expensive. It should be, since it includes all sorts of great perks, like licenses to install and try out almost every Microsoft product (for development purposes). Still, I find the current pricing to be outragous. This is just further proof that Microsoft is all about the enterprise. Microsoft has given up the small guy to Linux and Apple. What other explanation could there be? Yea, I know about the free Express skews of Visual Studio. Hello, have any of you used Eclipse or NetBeans recently? Or how about a fully decked-out emacs development environment.

Development tools is not where a company like Microsoft should be trying to make money. (I have one pet theory... I think the Developer Division inside MS has gotten so bloated that they need this money to keep the hideous monster from collapsing horendously.) Microsoft should be making great development tools that make people _want_ to develop on Windows. If you are developing on windows, you are more likely to focus on developing for Windows as your target platform as well. Microsoft should be releasing C# development tools that make the Mono crowd want to develope in VS, even while their target is not Microsoft's CLR.

I'll pick out my two biggest pet peeves, after having spent most of the last year using Eclipse and NetBeans:
  1. Unit tests - Why isn't NUnit just built right into the C# VS experience?
  2. Profiling - Why do I need to spend $2000 to get a profiler?
The problem is Microsoft is building everything for the enterprise developer. I don't blame them, that is where the fat licensing royalties come from. But hasn't anyone over there read Innovator's Dillema? Wake up! All you are doing is playing catch-up to your competitors. They keep nibbling at your user-base. Keep that up and eventually your user base will disappear.

I think it is already starting to happen. It has for me.

Monday, August 28, 2006

Sprint/Palm/Windows ... it's all about the phones

After this last week of vacation with zero Sprint coverage and 2 years of spotty coverage at my house, I think it is time to switch providers. I've been with Sprint for over 5 years, probably past 6 years, but I'm sick of bad coverage at my house (Calls are often routed directly to voicemail when I'm at home) and a pathetic choice of phones. My girlfriend has T-Mobile and they look like they have the best plans, especially if you want data connectivity.

I've carried around a Treo for 4+ years now and never regretted it. If you need to track appointements, todos, contacts, and have a great phone, the Palm Treos beat anything else I've ever touched. I recently tried out the new Treo 700wx and have to admit that my exit summary was that I would not want to buy the device. I'd pick the Paml OS version every time. I don't care that Windows Mobile has better email connectivity and can view my Excel and Word documents. The usability of the device was so bad compared to my old Treo 600 that I was actually looking forward to returning to my old device. Windows Mobile has a long way to go before I recommend it to anyone who isn't a gadget freak or likely to really benefit from it's improved Windows interop.

Now I just need to figure out what phone to get. The Samsung sliders are near the top of my list (that is what my girlfriend recently upgraded to and it is sweeet!) but since I'm going to have to break my contract with Sprint, I'm looking for something inexpensive (with a contract). It should have decent j2me support, and ideally be useable as a data modem. I like the Nokia 68xx series, but no-one is carrying the current versions of that form-factor (and the older 6800 is showing it's age)...

Back from Vacation

I just returned from a week long vacation with my family in Maine (across the bay from Bar Harbor). As always a week is never enough, but that was all I had time for. Possibly the best part of the vacation was spending time with my little nephew. At 18 months, he provides a constant source of insight into how we learn. He has just learned to walk, and isn't talking yet. While I was there, I watched his ability to navagate stairs improve noticable. Little tikes like him are amazing to be around... Especially when you have someone else to hand him over to when he is cranky or needs a diper changing. Also, keeping up with him as he scurried about was excersize in and of itself. Spending time with a little guy like him, and living in a comparatively primitive cottage by the shore, makes me realize how much of the hubub of my everyday life really matters in the grander scheme.

My flight over wasn't such fun though. A red-eye into Detroit (<4hr sleep) followed by a cancelled connecting flight left me a lot of time to work through the beginning of my Ruby on Rails book and read Oryx and Crake. Both highly recommended. In general the staff at the detroit airport was very friendly and helpful, and the airport has the weirdest tunnel I've encountered anywhere. Definitely odder than Chicago. WiFi was available, but at ~$10, it was as overpriced as everything else there.

Thursday, August 17, 2006

Start Menu Mess

As one might imagine when reading some of my recent posts (Not quite Quicksilver, and Quicksilver) my start menu on my main machine is out of control. I can't find anything anymore. I've long been a fan of the Quick Launch bar, but that steals precious pixels.

So I decided to be a good geek and code my own solution. It ain't beautiful, but it ain't ugly either. Best part? Only took a few hours , a good part of which was spent fiddling with silly things like the icon editor. It is hard-coded to look at the All-Users start-menu, the current-user start-menu and the current user's Quick Launch bar. It builds a list of all entries and lets your type just part of a name and sorts the list of entries based on what your have typed so far. When you type or double-click on an entry from the list, it runs whatever you selected, then hides itself. It is hooked to Window-, so you can run it from anywhere/anytime.

Here is a screen-shot:

Best part? C# + WinForms + P/Invoke mean that it only took a few hours to build. The VS 2005 WinForms builder is vastly better than what was available before. DataBinding in the ListBox control made binding my sorted list to a list-box trivial. P/Invoke meant that I could easily invoke the necessary Win32 APIs for ShellExec or to bind to Win-Space. Developer productivity baby!

There are still lots of gotchas... It doesn't resize. It is 2006 and the UI layout tools in VS _still_ doesn't generate code for an automatic resize. Delphi had this down in the 90s folks! Why doesn't VS ship with a Win32 P/Invoke library? Shouts out to Http://, but I often find that the code provided can only be used as a template. MSDN and Microsoft User-Education should be all over this... P/Invoke and a standardized Win32 CLR library would make writing sample code for Win32 so much better. C#/CLR may be here to stay but Win32 ain't going away, either.

It still has some kinks to work out, and the code could use some clean-up. The biggest issue I'm trying to track down is why it beeps at me when I type <escape> or run an app... Not much of a problem, since I often run with sound off, but I'd like understand why it is doing that.

Hopefully I'll get all that figured out next week while on holiday visiting my family, and then I can post the source.

Tuesday, August 15, 2006

Managing for your career

I was just reading Greg Linden's comments on Joel Spolsky's latest essays on management ([Command-and-Control] [Econ 101] [Identity]).  It reminds me dearly of why I left Microsoft.  I saw a number of managers do an excellent job of managing their careers to the detriment of their team.  Not all of them realized what they were doing, but some definitely did.  I think you will find similar problems at any large company.

One aspect that neither Joel nor Greg really touches on is that Identity management can be hard.  In many ways, top down management is what people expect, and to involve people more proactively can take some convincing.  A lot of people have been conditioned to accept top-down management as the way things work.

(note: this is my second trial post with Windows Live Writer...)

Monday, August 14, 2006

Not quite Quicksilver

I've spent a few hours here playing with some of the Quicksilver-like tools that Kristian Kristensen pointed me at.  Some are interesting, and I tried Slickrun and Launchy but I'm not impressed.  I'm looking for one simple feature: I want it to scan my start-menu (and a few user-contrib directories) and make it easy for me to find entries.  The launchers I tried didn't let me control where it scans (at least not that I can figure) which is a crucial for me.

I've heard that Vista improves the start-menu.  Will that solve the problem?

Wednesday, August 09, 2006

Dev vs Test/Ops

Dare's post 'Replacing Operations with Developers' reminded me of many discussions I had at Microsoft, especially when products were slipping and features were getting cut. A friend of mine once opinioned that developers are optimists and testers are pessimists. Developers (esp at Microsoft) tend to be smart, ambitious, and believe that they can solve any problem with clever coding. This has lead to some horrible situations, when developers believe that other parts of the team are holding them back.

Part of the problem stems from the nature of the task. Developers often a working with development plans that involve dedicating days or weeks to individual problems. Testers and Operations tend to work in terms of hours. If most of your day is spent task-switching and the rest is spent fire-fighting, you have a problem, and I have seen this happen repeatedly in Test and Ops teams, due to over-commitment or bad management. (I've seen the same happen to dev teams, but it is slightly less common.)

Another problem that sometimes arises is simple hubris. Developers like to think they can do/build anything, and so often look down on the Testers and Operations staff. This serves no-one and often exacerbates the problem.

But that isn't to say that Developers should not be actively involved in test and lab operations. Developers must understand what Testers and Operations have to deal with before they can honestly evaluate what these critical staff are really contributing. Test driven development does not mean no test staff. It means that the test staff can do really test integrations, back-compat, etc... all the complicated tests that test that all the pieces fit together like they are supposed to. One of my favorite things I saw happening at MS before I left was a move to Model-Driven-Testing. This required a lot more of the Testers, but resulted in some of the best bug reports. Even better, it got the testers writing non-trivial code and doing something which really felt rewarding. API testing is monotonous. Data-driven-tests are often worse. A good test team is one that is excited about what they are doing and finding bugs that make a Developer scratch their head. This only happens when the code that the Testers are bashing at is already solid.

All of this also depends heavily on what are your requirements. At Microsoft, despite what people may say, the targeted quality bar was very high. Any bug that gets through may mean a painful back-compat hack in the next revision. If you aren't working on a project that has such stringent requirements, then maybe TDD can mean the end of an explicit test-team. Honestly though, anything that takes more than 5 dev-years to implement (yea, I pulled that number out of my arse) probably needs a dedicated test team.

All this applies just as well to Ops. A friend of mine works for network ops for a tech firm that works with banks. He can barely write script, but I wouldn't want to replace him with a developer. He spends his days trouble-shooting network integration issues with customers. How many developers do you know who know anything about IBM mainframe networking? He spends days working with customers to troubleshoot the worst issues. No amount of tools or automation will make his job go away.

I guess one way to think about it is that Developers leverage working in a world of limited variables. To do their job, they need to constrain the inputs. Testers job is to be creative and introduce some new variables, they can expect a customer to experience. Operations live in a world of near infinite variables where half the job is just figuring out what the variables really are. The tricks that make developers so effective at writing code, do not necessarily transfer to these other disciplines.

Friday, August 04, 2006


How am I supposed to focus on work when I have Blue Angels doing flybys? And such beautiful weather! I just want to sit back in the sun with a book and a drink... Vacation, why are you 2 weeks away?



As anyone who reads 43 Folders knows about QuickSilver. I have it installed on my PowerBook and find in amazingly useful, even if all I normally use it for is as a launcher. Since I spend my day in Windows-Land... I'm wondering if anyone has made anything remotely similar for Windows?

I started looking at building something like it myself, and that is still my fallback plan. That would be a good excuse for me to spend some time with C# and WinForms. After some recent work that had me building a Java Swing app, I'm curious to see how WinForms feels in comparison.

PowerBook keyboard woes

Long ago, I wrote about my frustrations with the Fn key placement on my PowerBook. Someone has apprently been Googling around, found my entry, and then left a note that DoubleCommand has had some significant revisions since then and now allows you to reassign the Fn key! One more reason why I want a MacBook... I keep saying I'll just wait for the Meron based machines to come out and settle in a bit. I due hope that this next batch will resolve some of the heat issues that the first generation of apple-intel laptops.