Geek Rant dot org

Mon 2006-05-08

Naming Conventions

Filed under: — josh @ 07:24

The cool thing about starting a new company, or having a child, or even a new project, is that you get to name it.

I fell onto Wikipedia’s list of laws, and found Diana Goodman’s Law, which says that in online discussions between women, eventually someone is accused of not having kids. Goodman is truly horrified by some of the names handed out to kids.

Unlike children’s names, with company names pretty much doesn’t matter what you call them. I’ve got one friend who named his company after a psychedelic drug, another who chose his hobby for a basis and a third after a Futurama character. Others pick some lame set of initials and add ‘consultants’ or whatever on the end. Myself, I went for truth-in-advertising: Intellectual Mercenaries. I was toying around Fictitious Deduction for a while, but rejected it as being a little dangerous in the accounts receivable department.

You’re not going to see truth-in-advertising in Project naming, no project Keeping Up With The Competition, or Dragging This Pile of Bones Kicking and Screaming into The 1990s. Acronyms seem to be very popular, even if a lot of the time the acronym becomes rather forced. Microsoft and Chip companies seem to like US Cities, perhaps because it doesn’t give anything away.

Project naming needs some flair. I suggest Pokemon Characters. I was going to suggest another Japanese franchise, but realised someone’s already gone down that path (sometimes my brain can’t keep up with my imagination).

What memorable namings have you seen (in any of the above categories)?

Bookmark and Share

Mon 2006-03-06

Dr Watson bites arse

Filed under: — josh @ 10:13

I had a program that was crashing at the customer site, but not in any way I could reproduce back at the office. I wasn’t able to load up a dev environment on the affected box, but someone had the bright suggestion of running Dr Watson (DrWtsn32.exe), and checking out the stack trace. As we all know, if you know your codebase well enough, you can almost explain a crash just by where it happened.

So I created an exe with debug symbols and optimizations removed, and waited for the crash. The DrWtsn32.log contained, amongst other things, the dump of the thread that caused the program crash:


*----> Stack Back Trace < ----*

FramePtr ReturnAd Param#1  Param#2  Param#3  Param#4  Function Name
0100F9E8 00438172 01010460 0100FBE0 0100FB00 00D85698 !<nosymbols>
0100FAF4 0048DD45 01010460 0100FC54 0100FBFC 00D85698 !<nosymbols>
0100FBEC 004C3DBE 0106D028 00000114 0100FC60 0100FC64 !<nosymbols>
0100FC54 004C3C17 00D8AFC0 00000114 0100FD60 0100FD70 !<nosymbols>
0100FCDC 004CBDE9 010101F0 00000110 0100FDE0 0100FD70 !<nosymbols>
0100FD60 004C6FC5 010101F0 00000110 0100FE44 0100FDF0 !<nosymbols>
0100FDE0 004B63BD 010101F0 00000110 0100FEEC 0100FF00 !<nosymbols>
0100FE50 004B61B6 010101F0 00000110 0100FF7C 0100FF00 !<nosymbols>
0100FEEC 004B5C9C 010101F0 00000110 00000001 000001FB !<nosymbols>
0100FF7C 1020BFD2 00D84058 000001FB 00130178 00D85698 !<nosymbols>
0100FFB4 77E8B2D8 00D85698 000001FB 00130178 00D85698 !beginthreadex
0100FFEC 00000000 1020BF20 00D85698 00000000 00000008 kernel32!lstrcmpiW

Which added nothing to my understanding of what went wrong, beyond it happened at some point after the thread started. Great. Did I mention I’d done a debug build – the kind with all the symbols compiled in? Anyway, I figured switching to the binary output (which I understand is like a unix core file) may provide further explaination.

The format of the binary output from Dr Watson is lost in the mists of time. I had to go to an NT4 server install CD (you have to love the pack-rats who keep the German Server version of NT4 ©1999!) to locate the two necessary files for working with the user.dmp file it generates. The files are DUMPCHK.EXE and DUMPEXAM.EXE.

Running DUMPCHK.EXE gives a little output

C:\...\RetailGateway>dumpchk user.dmp

Filename . . . . . . .user.dmp
Signature. . . . . . .USER
ValidDump. . . . . . .DUMP
MajorVersion . . . . .5
MinorVersion . . . . .0
DirectoryTableBase . .0x0000014c
PfnDataBase. . . . . .0x00000004
PsLoadedModuleList . .0x00000018
PsActiveProcessHead. .0x0000009a
MachineImageType . . .NumberProcessors . . .7528
BugCheckCode . . . . .0x00001f65
BugCheckParameter1 . .0x000000a0
BugCheckParameter2 . .0x00000040
BugCheckParameter3 . .0x00001ca8
BugCheckParameter4 . .0x00d6df65

ExceptionCode. . . . .0xc0000005
ExceptionFlags . . . .0x00000000
ExceptionAddress . . .0x0045b4a9
ExceptionParam#0 . .0x00000000
ExceptionParam#0 . .0x00000000

At which point I got this dialog: DUMPCHK barfs reading the user.dmp file from Dr Watson
“Oh well,” I thought, “I’ll just head on straight to examining the dump, rather that checking it.” Unfortunately, DUMPEXAM.EXE wasn’t on my side. All I got was:

C:\...\RetailGateway>dumpexam user.dmp
unsupported processor type

Which is useless. Which is the sum value of the binary dump from Dr Watson. And, in this case, all of the output from Dr Watson.

Bookmark and Share

Sat 2006-02-25

Maintenance nightmare

Filed under: — josh @ 22:09

Unmaintainable Plumbing - kids, don\'t use silicon sealant to hold plumbing in place
Houses need maintenance, it’s just a fact of life. Things wear out. But programmers are not alone in creating artifacts without thought for the subsequent fixing of the going wrong of things.

Take a look at this tap. This tap is copper, as you can tell by the oxidation. Inside it is a washer that, as a function of how many times it’s been opened and closed, now needs replacing. This is normally a simple matter of turning off the water supply to the house, unscrewing the tap body, popping out the old washer and slipping in a new one. But if the plumber or whomever followed in their footsteps decided to make things more watertight by the liberal application of silicon sealant, you’re in for some fun times digging it all out so as to be able to get a spanner onto the bastard of a thing.

The plumbing all through my spacious bathroom continues in a similar vein.

One of the shower taps can’t be removed with a spanner because it’s too deeply recessed into the wall. So deeply recessed that the tap had to be extended out so that the cover could screw on. But rather than extend the tap out via a pipe extension, the tap was extended out with a thread extension. So, joy of joys, I can’t change the cold water washer.

Part of the house maintenance was to install a Residual Current Device, a saftey switch. This protection extends to the spa bath’s pump, which is how we found out the pump has a leakage problem – switch the pump on, and the whole house is plunged into darkness. Should be a simple matter of locating the pump, determining where the unit has degregated, and replacing it. If, say, it was externally mounted. Which it isn’t. I believe it’s mounted under our bathtub, in the cavity between the tub and the wall. There is no way to access this area, not via a removable panel or anything of the ilk – the whole lot has been tiled in. Which tile should I remove to get to the unit? The left hand side or the right? No one knows. Naturally, there are no spare tiles to replace any that get broken in the search. For all I know, the pump may be under the floorboards, but the bathroom’s just about as far as you can get from the underhouse access trapdoor, and I haven’t gotten up the courage to go looking for it yet. If the pump’s not under there, I hope there is under-floor wiring that will give a hint as to the location of the pump – but I’m not holding my breath.

What home maintenance nightmares have you seen as a function of poor design?

Bookmark and Share

Tue 2005-12-27

Warning!

Filed under: — daniel @ 16:38

Warning in the custom configuration options of a setup program:

This component is an essential part of the application. If it is not installed, the application will not run properly

Well if that’s the case, why even give me the option of not installing it?!

Bookmark and Share

Sun 2005-12-18

Parents and computers

Filed under: — daniel @ 22:34

I’m not convinced that parents and computers should mix, but Microsoft provides six steps when buying your parents a computer.

They appear to have missed the first point, which should be: Buy a Mac.

Though admittedly in most people’s cases that would contravene step 3: Set up their desktop with software that you are familiar with.

(via Ed Bott)

Bookmark and Share

Fri 2005-07-08

System capacity planning for major incidents

Filed under: — daniel @ 08:01

Transport for London web siteThe terrible events in London overnight do have some relevance to us as humble IT workers. While there are many critical jobs performed in such situations by the emergency services, communications and other systems are also important.

Obviously top of the pile in this respect are the systems dealing with the emergency services themselves: their communications and despatch systems — and we know that mobile phone networks were affected by the chaos. A few notches down, but growing more significant, are the web sites (and background systems that feed them) to inform the public.

While the BBC News web site seemed to generally cope as events unfolded (I’m sure they’re well-versed at this kind of incident), their live video and audio streams were swamped. Likewise CNN responded okay, though ITN was sluggish. The Transport For London site didn’t respond for some time, before they switched to a plainer, less server-intensive basic information page.

Last week Connex in Melbourne suffered a shutdown, and similarly, their web site didn’t cope. While most disruptions are also communicated to SMS subscribers, the shutdown itself was caused by problems with the same systems used for sending out the alerts. Melbourne’s public transport umbrella site Metlink was responding, but the problem there was a lack of updates.

As the web becomes more pervasive, and media outlets also use it to gather information, capacity planning for peak demand becomes important. Obviously no organisation wants to spend up big on servers that never get used, but for mass communication of detailed information, the web is cheaper than employing operators or even installing masses of phone lines, and will play an increasing role in keeping the general public informed of events.

Bookmark and Share

Fri 2004-12-03

Winhelp vs HTMLHelp

Filed under: — daniel @ 07:32

Popup helpI know the move from the ol’ Winhelp to HTML Help was meant to be a good thing (and at the time made my life easier, as I could re-use HTML formatted text more easily), but the loss of the very handy “What Is?” help originally trumpeted in Win95 is a shame.

Nowadays if you click the question mark on Word 2003′s options screen, for instance, it just chucks you onto a help page which covers the entire dialog. Doesn’t even open the bit that talks about the tab you were on. They really should have ensured that all the functionality of Winhelp 4 (that fine granularity of context-senstivity) was available in HTMLHelp. (Is it? Did the Word 2003 people just get lazy?)

In fact, I reckon what they should have done was improve the help development tools, but leave the underlying technology alone. Winhelp4 worked well for users, but its authoring was a real pain. That’s why tools like RoboHelp won sales. If MS could have come up with a way of easily developing your help in HTML, but having it compile into Winhelp4, they would have been onto a winner. In the days before everyone had IE, it would have got around the issues with poor Win95 users having to install HTMLHelp (and thus, IE 3+), and suffering the performance hit of having to load up the browser just to look at the help.

Of course, at the time MS would have been trying to entrench IE’s hold on every desktop. Which I guess explains why they did it their way.

Bookmark and Share

Tue 2004-11-09

Visio and database creation

Filed under: — daniel @ 07:19

For quite a while I used Visio 2000 Enterprise Edition to design database schemas, and then have it create and update the tables. Admittedly the Visio 2000 interface is a little cumbersome for such things: it’s overzealous on its checking before you can update the database, and just try and delete a relationship without the sky falling on your head — it somehow thinks some kind of underlying link is still there, and if there’s anything wrong with it, it refuses to play ball. But when it behaves, it’s an excellent timesaver.

The other week I upgraded to Visio 2003 Professional Edition. Somewhere between 2000 and 2003 they’ve scrapped the Enterprise Edition, and although Microsoft don’t specify it in their literature comparing editions and versions, gone too is the database creation stuff. Apparently they’ve moved that functionality into Visual Studio Enterprise Architect — which Joel On Software describes as the super expensive “Enterprise Architect” edition at the top of the line that hardly anyone ever buys; it’s only there to make the other prices look reasonable by comparison. Great.

In Visio 2003 you can still draw database designs, or even generate them from existing databases, but there’s no way to create the DDL (SQL) for them, or update/create the databases themselves. I spent a couple of hours searching vainly through the Visio menus (the “Database” one is particularly deceptive) looking for such options, but couldn’t find them. I did find stuff pertaining to outputting a bunch of data describing my database diagram, but nothing would let me create the database I’d meticulously designed, or even print out a list of the fields and their types and sizes.

I have Visual Studio 2003, but for various reasons it’s the Professional Edition. So I couldn’t get my lovely design into the waiting and ready Oracle database. On the Visio 2003 Save As, it lets you choose “Visio 2002″. I wondered if by some fluke Visio 2000 would read a 2002 format. So I saved it, removed Visio 2003, installed Visio 2000 and tried to load it up.

Eureka, it worked. There was some further messing with it to get around a relationship on the database that was causing an error, and which I eventually decided I wanted to delete (an impossibility in Visio 2000 — see above) but eventually I got my DDL and indeed managed to create my glorious Oracle database.

But really, it shouldn’t be this hard.

Bookmark and Share

Fri 2004-10-15

Money

Filed under: — daniel @ 07:14

It’s a few months old, but this article is a great read — telling the story of (some of) the history of Microsoft Money.

During the heady dot-com days, when all reason was tossed to the wind, Money’s success was measured against the same metrics that other MSN properties (read: “websites”) used.

Metrics like minutes viewed per month. Like ad revenue. Like click-through. Stickiness. I am not making this up. I sat through meetings where we were asked to research ways in which to increase the amount of time that users spent in Money. Increase the amount of time!

Bookmark and Share

31 queries. 0.777 seconds. Powered by WordPress