Oct
1.
2007

This post is more “note to self” than anything else. I spent several hours last week recovering from a nasty driver installation that wouldn’t allow me to boot my desktop computer (running 64–bit Vista).

A couple of months ago I let Windows Update install the latest drivers for my NVidia video card. Despite what you might have read on Slashdot, Windows doesn’t need to be restarted all the time – I keep mine on for months.

Ever since I installed that video driver I had issues, I just didn’t connect them with the driver update. Video playback became visibly blocky, as if no interpolation of any kind was done.

A couple of days ago I let Windows Update install the latest driver for my Attansic onboard network chip. It did not ask for a reboot, so I didn’t.

Then, as a desperate move, I decided to resolve the video blockiness by manually installing the latest drivers from NVidia site. This time I had to reboot and… machine froze in the middle of the startup.

Tried again. Then again. OK, safe mode with networking – nope. Hmm. I assumed all along that it was my latest installation of video drivers that caused the problem, but obviously it was the network drivers – I could boot just fine in safe mode without the network.

Here’s where things become strange. Uninstalling the driver and reinstalling the one from the manufacturer’s site (Asus) didn’t work at all – same problem, startup freezes the computer. I let it “frozen” like this and 15 minutes (!) later it actually boots fine, except that the network doesn’t work. Bizarre.

I give up and use the source, err, Google. I find not one, but at least five people describing exactly the same situation. The problem is that the faulty network drivers ruin even the firmware on the mainboard, so uninstall does nothing. You have to unplug your computer from the wall (!), let it like that for at least 15 minutes (I tried first with just a couple of minutes, wasn’t enough), then install the driver.

Needless to day I will never let Windows Update install any drivers on any of my machines.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Sep
11.
2007

You might have noticed that with the launch of Windows Vista there are now many new “Works with Vista” certifications and logos. This is normal - each new Windows version adds new features but also new conventions and sets of recommendations. Microsoft values backward compatibility but if you want to stick a new logo on your product, you need to update it to comply with the latest and the greatest.

It’s “easy” with the software – open up the source code, adjust where necessary and recompile. What about hardware? Most of the new hardware devices do leave out quite a bit of functionality to the firmware (a special software necessary for proper functioning of the device) that can be updated, but don’t expect dramatic changes or improvements.

Thus I was puzzled when it turned out there is a Vista logo for home routers, and the one called “Works with Windows Vista” at that. Will my router work if it’s not certified?

Of course. Turns out that this logo ensures that most of the new features in Vista are actually used, plus it makes the configuration of your home network much easier and enables flawless media sharing between your PC and other devices like Xbox 360. In other words, the certification process is good for the average consumer that does not want to fiddle with network equipment. Normal people expect the router to “just work”, no maintenance whatsoever.

If you are network savvy and know how to open (and close!) ports on the router, do not share videos wirelessly or simply have a trivial network setup (ISP provided router and one computer) you do not need to worry about the logo. I have used two different routers in the last few months, neither is certified in any way but everything works fine, including my 64–bit desktop Vista machine, 32–bit XP laptop (over wireless) and (wired) Xbox 360.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jul
28.
2007

I had a very annoying OS issue yesterday. It all started with the release of Visual Studio 2008 Beta 2. Unlike previous releases where a new Visual Studio usually meant a new .NET Framework (which also meant a new CLR) this time the CLR is the same as it was when version 2005 came out, the rest is just extra libraries in the BCL and a few new compilers. This does not mean that it wasn’t a lot of work to put these out, just look at the Linq goodness in the new compilers. But this also means there’s no* risk installing this beta on a production machine either side-by-side with Visual Studio 2005 or standalone (if you use Resharper, it works with 2008 too). Extra safety is provided by the Go-Live license and multi-targeting: you can use version 2008 to target .NET 3.5 projects, but also 3.0 and 2.0 (yay!).

Great stuff, I just need to update to the latest version of the CD/DVD emulator so I can mount the ISO image and I’m ready for the installation. Except that after I installed the latest Daemon Tools, there was no drive. Updated to the latest SPTD driver, nothing. Removed, reinstalled older version, again nothing.

Removed Daemon Tools, installed Alcohol 52%, still nothing. By this time I was really annoyed – every reinstall meant a restart because these apps have to add a driver for a virtual CD/DVD and by this time I have restarted the machine more than in the last year or so  – yeah, despite what Linux zealots think I generally never restart my Windows boxes. Tried with one more virtual CD/DVD utility that I remembered as the only one that worked on early Vista beta versions, still nothing.

By this time I exhausted all well know software CD/DVD emulators. Then I removed spare battery and slid in physical DVD-RW drive. It did not work.

Now we’re getting onto something. None of the CD/DVD drives worked including the physical one, so a setting in the OS somewhere must be blocking them all. The error I got for the physical drive was not informative but when I uninstalled it and let the OS (Windows XP 32–bit) rescan the hardware, I got a bit more specific error: Windows cannot start this hardware device because its configuration information (in the registry) is incomplete or damaged. Finally – so it’s definitely configuration related.

Google to the rescue, I found a post in a forum that nailed it: I had a leftover CD/DVD filter driver configured, but I removed the startup of the driver manually in the (most excellent) Autoruns because the software that used it was uninstalled long ago. The remedy is simple – just go to the HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318} and delete keys UpperFilters and LowerFilters (or, if you want to be on the safe side, rename them). Reboot and voila! All the drives are back.

*To be precise, there’s little risk, as installing beta stuff can always screw things up.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
Jul
19.
2007

Great book and a bozo salesman

Posted by: Drazen Dotlic in Categories: rant.
Tags:

Founders at workI just finished reading a highly inspirational book. It’s just a bunch of interviews about startup’s early days, straight from the mouth of the founders. With a few minor exceptions where stories were a bit dry and did not sound completely honest the rest of the book is absolutely fantastic.

To me the most interesting was the recurring pattern on how the business came to be – in most cases the founders started something else (sometimes a completely different product) but the market steered them in the right direction. I was also delighted to find out how humble and realistic most of the founders were. Rarely would a founder claim how the whole success story was a result of his/hers great vision and the ability of the team to execute, yadda, yadda, you know the corporate speak. These people are realistic and realize that sometimes it’s not just skills but the timing, the availability of funds and, let’s admit it, pure dumb luck.

One story did stick out though, in a negative way – Bob Davis (who was a CEO of Lycos at the time) was constantly downplaying the role of the technology in the story about Lycos’ success. Even though he admitted on several places how it was technology that separated them from some of their main competitors, after being asked directly he would still repeatedly claim that they were not technology company at all. Then I realized that this was probably the only non-technical guy (he was a VP of sales before becoming their CEO) in all of the startups’ stories.

I really am sickened by the antagonism between developers and business people. Often you’ll hear how developers ridicule the “dumb suits” but the reverse holds too. Hey, a company is a sum of all of its parts. The technology company produces technology, but it needs to sell it to someone, so it needs salespeople (if it’s big enough to warrant that). At the same time, what would salespeople sell if there was nobody to produce the technology?

There’s no need to understate anybody’s role in the company. In fact, you’ll find out that the other founders who were mostly technical people had nothing but the kindest words for their CFOs and CEOs who were often brought in by the VCs in the capacity of “adult supervision” (a lot of the founders were very young when they started).

If you’re thinking about ever starting up a business this book is a great resource. It does not have concrete advice (it’s not a list of recipes for success) but if you can read between the lines you might learn a lot.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
24.
2007

I vented before about the movie and gaming industries’ reliance on sequels. It’s a better bet than to risk millions with an unproven formula. Thus we get solid movies and games, but the great ones are few and far between. What’s worse it seems we never get an original product out of the studio that has a winner on their hands, just more-of-the-same.

Splintercell5_trailer_052207Or at least we didn’t. In one of the boldest moves I’ve seen in a long time, Ubisoft decided to dramatically change the dynamics of their very successful franchise Splinter Cell. I am positive that yet another incremental improvement to the game would sell great. After all, it’s not like they didn’t improve the game since its inception. Four games total, three sequels, each slightly better than the previous one. Lots of money earned thus extremely high risk changing the formula. Yet, that’s exactly what Ubisoft did.

The new game dismisses the light/dark formula we’re all used to. It’s still about the stealth, but in a totally different way. Most chapters take place during the day, in the open with a lot of people around you. You don’t have any of the gadgets you’re used to and must improvise all the time. Fortunately since there’s little to no scripted events involved this means that even if you make a mistake (a guard notices you or an alarm goes off) you can still wing it and get out of the situation. The change is pretty drastic and if not executed well could alienate a huge fan base.

Personally, I have great fate in Ubisoft’s Montreal studio, they’ve never disappointed before. But I particularly commend them for having the courage to change the winning/proven formula.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
23.
2007

We are progressively getting more and more spoiled by the features of a modern IDE . Each new version brings better intellisense, code generation and sometimes even mind reading (that's what it looks like, anyway) features. It’s hard to imagine how could we have ever worked without an IDE.

The feature I’d like to comment on today is background compilation. Jeff complained how C# should have offered it, just like VB.NET does. Ian chimed in asking if IDE could refrain itself from constantly compiling his VB.NET code and do what C# compiler does – wait for user’s explicit action. These are two opposite approaches – is there a better one that could satisfy both sides?

Maybe. Just like VB.NET, Java code in Eclipse is checked all the time, as you type. But the compilation only happens when you save the file. You do get red squiggly lines while you’re typing obviously incomplete statements, but the IDE goes out of your way and even helps you whenever it can. Post-save automatic compilation actually works great and is quite hard to shake off – I miss it all the time when I switch to C# in Visual Studio 2005.

Ideally, this could be a global IDE setting, or per-language one. If you want background compilation (it suites your coding style) turn it on, otherwise don’t. Ian has a point here: it probably has more to do with the way you code than with anything else, background compilation itself is inherently neither good nor bad.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
22.
2007

Software industry is constantly re-inventing itself. It’s almost like any other fashion – things are in, then out but just a couple of years later they are in again. We’ve had command line user interfaces first, then the graphical ones (all hail mighty mouse) and now command line-like ones again. Look at just two well-known examples: Google home page and Windows Vista start menu. Both rely on a single piece of UI – the edit box. On the other hand, Vista disposes with another (physically) hard-to-navigate concept – hierarchical tree of menus, but let’s leave that for another time.

In a recent blog post Jeff cites several interesting pieces on UI friction. When is it possible to reduce the UI to something simpler, even to a single edit box? If Google can do it, can we too?

EditBoxAsUserInterfaceA broad question like this results in a typical answer: it depends. If it has to do with searching, you probably can. I find it a bit funny to point out at an example more than 12 years old. To the left you can see a screenshot from an application I used to work on. The app mainly draws nice charts of stock/futures data. It can connect to multitude of data sources and thus a multitude of exchanges. Searching for a particular symbol (for example Microsoft’s stock price) can be quite daunting. But there was a shortcut – just start typing and if what you’ve entered is uniquely identified, it will be used. Click on a screenshot to the left to see how it looks like. In fact, this is just like Google’s I feel lucky button. I remember using this all the time, users loved it.

But if the UI is not just for searching you can’t simply remove pieces of it and expect improvement. This is somewhat like compressing a compressed file – the file won’t get smaller, it might even become bigger. As always, apply common sense. With the apologies to Albert Einstein: make the UI as simple as possible, but no simpler.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
15.
2007
I got a nasty “Delivery Failure” back from GMail the other day. The message was:
Could not deliver message to the following recipient(s):

Failed Recipient: <anyone>@gmail.com
Reason: Remote host said: 550 5.7.1 our Bulk Email Senders Guidelines. 50si6194057ugb

What does this mean? In a nutshell, GMail server thinks I am a spammer. Unfortunately, there are no links leading to more information in the text that follows and there are no hints as to why does it think I am a spammer.

Searching the ‘net will lead you to the mostly useless GMail Bulk Email Senders guidelines. I say “useless” because the text applies to those sending a lot of email to GMail servers, but also because I wrote them a complaint and got back what looks like an automated, generic reply (please make sure you’re not sending a lot of mail blah, blah). I send at most about 5 (five!) emails a day to GMail, so this can’t be the problem.

Then I remembered how email server at work used to reject emails from the account I was given by my ISP. I also remembered how due to the high amount of spam sent from hijacked computers on the network of my ISP, recently that same ISP started blocking port 25 by default for all consumers.

Since I run my own email server I had to explicitly opt out of this, but it made me think – could it be that an over-zealous third party put a large range of IP addresses from  my ISP as potentially spammy (due to bad history) and my IP address was accidentally included? In order to fight spam, there are several organizations, some commercial and some not, who maintain a list of bad (and sometimes also a list of good) hosts/IP addresses. If you are on a bad list, you are blacklisted.

You can check if you are blacklisted here (click on the first link called rbls). I was a bit surprised but my IP was listed, fortunately just on two places. I am guessing here but I think GMail is using the services of the one I heard about before called Spamhaus (I was listed there). There is a link leading to each and every blacklist site where you are given a chance to remove yourself. Sometimes (this was the case with Spamhaus) an email confirmation will be sent to your email address as a verification step but sometimes a single click is enough. Note that this does not mean you’ll be whitelisted forever – if you are a spammer and sending a lot of email, you’ll get blacklisted again.

In my case, an hour or so later everything went back to normal (it takes time till the removal of your IP address propagates through the ‘net).

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
7.
2007

There is a big problem in the software industry. It doesn’t matter if you’re building desktop apps, Web sites or SaaS; one of the biggest problems you’re facing is estimating how long it will take to develop features X, Y or Z. Software companies are infamously bad estimators. It has always been like this and pessimists think always will be.

Some do not agree though – I’ve recently read the most excellent book from Steve McConnell called Software Estimation: Demystifying the Black Art. Steve found enough data to support the claim that not all is lost and that there is a hope for the software industry after all. The book is highly recommended.

Anyway, today I’d like to draw your attention to a specific manager/developer interaction that is at the core of the estimation problem; it goes like this:

  • Manager: “How long is it going to take to develop features X, Y and Z?”
  • Developer: “3 months”
  • Manager: “But we need it for the trade show due in two months!”
  • Developer: “(thinking) God, if you’re out there, kill me, do it now…”

OK, there are business reasons why the company needs features presentable for the trade show. Does this somehow compress the time/space continuum? I don’t think so. Why does the manager’s tone sound like the developer is an equivalent of Hiro Nakamura (check out the TV series Heros if you’re lost on the analogy) and that the developer is somehow unreasonable with his 3 months estimate? Why does the manager usually expect the developer to deliver the same features for less time than is possible? Why is it expected from the developer to explain that if certain trade offs are implemented (less features, less quality/beta code etc) the deadline can be met and nothing is expected from the manager?

The situation reminds me a lot of something I heard from the then 3 year old daughter of a friend of mine. At the time of the event she was the only child and got all of the attention of both of the parents. It went more or less like this:

  • Daughter: “Papa, I want this”
  • Father: “Well, you can’t have it because… (explanation follows)”
  • Daughter: “But I want it!”

Plain and simple – the child cannot recall being denied something. She gets what she wants and she gets it instantly. Therefore, it’s enough that she wants it!  It’s cute when kids pull stunts like this, but they don’t know better.

Shouldn’t the manager know better?

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
0 Comments
May
3.
2007

If you are following the .NET related news your best bet is to subscribe to Mike Gunderloy’s Larkware blog. He is a human aggregator – if there’s a download to check out, a blog post detailing some obscure (or not so obscure) programming problem or anything else newsworthy, he’ll catch it and link to it. His blog is an excellent information source for all things .NET related.

Or so it was. A couple of months ago, Mike defected from the camp of Windows developers into the great unknown called Ruby on Rails. Fear not, he’s still doing what he does best - good writing and collecting interesting links from all around the world. His new blog can be found at A Fresh Cup. But it’s completely Rails oriented and Mike’s career seems to be heading exclusively into Rails. What’s “even worse” is that he switched from Windows to (gasp!) Mac OS X

What happened? Mike has been living off the contracting on Microsoft technologies for years. He invested a lot of time and probably gathered a lot of clients over the years – why would he throw all that away?

Some of his own comments and the comments on the forums of the Softies on Rails echo the same kind of sentiment – developers just can’t keep up any more. Microsoft is constantly (re)inventing itself, putting out newer and newer technologies, never stopping to catch a breath. With the rise of transparency this has become even worse (or better, depending on how you look at things) – now we get to try every alpha, beta or RC of whatever chefs in Microsoft decide to lay upon us.

In a way, I was lucky - at the time the .NET (by my own account, the dominant programming technology on Windows for the foreseeable future) came out, I was too busy working on other things. Thus I practically skipped version 1.0, touched a bit 1.1 and jumped fully in with the 2.0. By the time I needed to do GUI I was already exposed to WPF (.NET 3.0) so I skipped Windows Forms (I did a lot of similar work over the years in MFC and don’t want to do it again, thank you very much). The same happened to ADO.NET: don’t even get me started with all of Microsoft’s technologies for data access – Jet, ADO, RDO, UDA, OleDb, ADO.NET and finally DLinq. I thought DLinq might be the one they’ll stabilize on, but apparently I was wrong since next-next version will brings us entities framework.

The others were not that lucky, they absorbed each and every new thing Microsoft put out. That was their job, you know, the thing that puts food on the table.

It just keeps on going. Year after year, just as we adapt to the new wave another wave comes. Unfortunately, in the last couple of years it was impossible to transfer your knowledge forward. If you were a MFC programmer, not many things worked the same in the .NET. If you’re a Windows Forms programmer, just forget everything you’ve learned when you jump into WPF. If you did some Remoting, it’ll be useful but the model is sufficiently different in WCF. Before we adapt to .NET 3.0 we’ll have 3.5. If we’re lucky, we’ll get a bit of break then, but who knows. Look what’s going on with Silverlight (which is in itself a great technology I’ll talk about in another post).

No wonder people are switching to different platforms. The amount of information to digest is staggering and despite the Rails being moving target, Rails is still easier to follow.

My advice to those sticking to Windows? Try to filter the technology and pick (if you’re in a situation to be able to choose) only the technology that’s obviously:

  • fundamentally better than the previous one
  • is here to stay (I know, recognizing this is a lot easier said than done)

I’d also recommend against spreading thin over all of the technologies Microsoft offers – if you’re a desktop applications guru, don’t try to be a guru for the Web apps, databases and whatnot. Don’t get me wrong – you almost have to dabble in Web technologies and you must know decent amount of SQL even if you are a SOA architect, but you don’t have to know each and every detail.

To those leaving Windows (some actually are trying to run Rails on Windows, which might become  reality pretty soon) and jumping on the Rails bandwagon, I wish you all the best. Rails is a fine piece of technology and Ruby is a great language. I hope you’ll have fun.

Be the first to rate this post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
2 Comments