Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used after 'URL-Rewriter' in /home/.elfa/mogens/xt1.org/wp-includes/functions.php on line 821
xt1.org » Design -- Christian Mogensen writes software and dreams of droids

Posts filed under 'Design'

ADSI and WMI

I’m improving the installer for a web application. It’s a windows installer. It needs to register a MIME type with the server. This is important to do, since Windows 2003 server will not serve unknown Mime types. (Neither will Windows 2000 after the Lockdown tool has been used).

WMI is the preferred mechanism for diddling IIS settings, but it turns out you can’t rely on WMI being installed. So we need to user ADSI, the underlying technology.

ADSI is a maze of little automation objects, all poorly documented. There’s plenty of documentation. It’s just that most of it is pointless drivel. Undocumentation as some have called it.

The ADSI incantations necessary have been recorded by wizened elders.

Unfortunately these incantations need to be converted to C++ in order to work inside an installer. There is a heavy bias against using script in installers. Partly because script may not be installed, or if it is installed, it’s a lower version than we require. So a hardened C++ version is needed.

In case anyone needs to know, here is how to tweak ADSI to add a mime-type to IIS from C++. It’s not pretty - being a frankenstein monster of cut-and-paste snippets from various places.

Continue Reading 2 comments March 13th, 2006

I must be doing something right

We got a mail from a happy customer today. A very happy and satisfied customer.

When a customer rates the product you’ve designed and helped build on par with sex, you can’t be doing too badly.

Add comment February 3rd, 2006

WikiCalc and REST architecture

Dan Bricklin the co-inventor of the spreadsheet has started to build a web-based spreadsheet - WikiCalc

As office software moves onto the web, it can become more open and collaborative. Consider a web-based spreadsheet, where every cell is addressable through a URL.

If the spreadsheet is at
http://www.example.com/calc/myStuff
then the first cell of the spreadsheet should be adressable as
http://www.example.com/calc/myStuff/R1C1

Ok -  now consider a spreadsheet somewhere else - the second spreadsheet could reference the results of a calculation in my sheet by reference to the URL of the cell in the spreadsheet. The second spreadsheet could contain a formula like this:

= 2 * http://www.example.com/calc/myStuff/R1C1
This is just a straightforward application of the REST architecture.

This could be a great way for government to expose standard values. Income tax rates, VAT rates and so on - easily referenced and automatically updated.

http//www.example.gov/taxrates/2006/vat/goods returns the VAT on goods in 2006 (25% in Norway).
http//www.example.gov/taxrates/current/vat/goods returns the VAT on goods at the moment.

When the rate is changed next year, the current value is updated - and all applications that reference it get the new, fresh value without a software-update.
Now imagine what happens if we extend this to all XML documents through XPath - i.e pretend that the web server is smart enough to dig into an XML document and pull out a fragment, rather than just sending back the entire document. i.e. URLs that reference bits of a document using XPath, not just entire documents:

http://www.xfront.com/REST-Web-Services.html  - this gives us the entire document.
http://www.xfront.com/REST-Web-Services.html/html/body/H2[0] - would in an ideal world give us the contents of the first second level heading: “What is REST?”

Imagine how easily you could glue together web-applications with this kind addressing…

The text fragment extraction wouldn’t have to be done by the web-server, it could just as well be done by the application. The point is that the URL would make integration with existing, well-formed content much much easier. And while much content out there isn’t well-formed (and so can’t be addressed in this way), the next generation of Office tools will output suitable content by default.

When everything is addressable, then everything becomes intertwingled. A point of potential intergration. Lots of places for leverage.

Of course, all the hard problems of versioning and formatting don’t go away, but they apply to all kinds of solutions, not just this one.

1 comment January 7th, 2006

Daily Software Grind

I have too much work at once. Transitions between projects are tricky things, and I have (yet again) managed to get caught in a squeeze between four projects (two major, two minor). Whine whine whine.

Anyway, VS.net 2003 will occasionally not help by locking up. Deleting the .NCB file helps. Argh! Nothing more annoying than my primary tool going bonkers and freezing while I’m trying to get some work done. Two hours wasted uninstalling/installing various helpers and tools.
Visual Assist X is lovely, but I suspect it contributes to the Visual Studio lockup-on-start. We have a metric ton of files in our solution, and Visual Assist likes to scan the header files. It usually doesn’t freak out, but I wonder about it. Does it suffer from corruption in its database of symbols?

Xoreax Incredibuild rocks hard when it works, but the last couple of builds (2.40 and 2.42) have not rocked at all. Corrupt files, broken builds and increased flakiness do not endear themselves. The compiler is the most important tool for the programmer, and it’s considered bad to mess it up. Internal Compiler Error is not a good thing.

I’ve been told good things about Code Historian but I don’t have time to try it out. Too busy finishing and starting projects.

Add comment September 22nd, 2005

iTunes 5.0

iTunes version 5.0

The new iTunes 5 looks nice but two things:
* why is everything in Norwegian all of a sudden? Did I miss something during Setup?
* What happened to the title bar? Putting the menubar up there is cute, but not having a title bar freaks me out.

The skinny look is different, but I kinda like it. The playlist used to lie on a larger slate window, but the slate padding is gone now.

When you do a search, a set of little buttons appear at the top of the song-list.
Searching in iTunes
These buttons (All/Music/Audiobooks/Videos/Podcasts/etc) work as quick filters. We’ve been doing something similar with the activity list in SuperOffice since version 5 — very handy way of managing large lists of information.

This new button-oriented search interface fixes the big problem with the old interface: the little dropdown menu that the magnifying-glass triggered was too small and too annoying to be bothered to use.

The new interface works much better: the buttons afford experimentation, and the filtering stuff is pretty obvious. The buttons on the right of the split are different: they determine which field you are searching on, and this isn’t quite obvious unless you have a couple of hits in the list. Getting an empty list up after you click a button is baffling. Putting a little text up to explain why the list is empty would help a lot: “No albums named ‘Cherry’ found”.

Add comment September 8th, 2005

The Tyrrany of the Real

User interfaces seem to proceed through stages, no matter what technology is involved. First the new must mimic the old, before breaking away and exploring the outer limits of the design space, then finally settling on conventions and becoming mundane before the cycle repeats again.

Horseless buggy
The first cars are horseless buggies, with reins instead of steering wheels. Reins give way to various levers/stick/wheel systems, before finally settling down to the system we are familiar with today.

CD player with all the knobs
Software CD players started out mirroring the physical CD players in the real world - down to the little LED displays and buttons of the real, physical thing.
Winamp v 2

After a while the designers realize that the old constraints no longer apply, and a slew of new interfaces burst forth, all challenging the old ways of doing things. During this phase we got things like winamp v3 skins, Microsoft Media Player version 9 and 10, which paint pretty pictures, but which didn’t really challenge the fundamental play/next/prev/stop model the software cribbed from the old physical CD and cassette decks.
Microsoft Media Player skins

iTunes was probably one of the first to leverage the advantage of having a screen and a keyboard attached to the player.
iTunes
Suddenly you could see next song in the list on the screen. You didn’t have to create playlists ahead of time — the whole archive was there to manipulate in real time.

Software music players are still exploring the design space — and they have finally broken away from the old physical boombox.

The reason I bring this up is that we have got new phones at work. IP Phones. Internet telephony. Shiny. New.

You must have a program running on your PC in order for the phone to work.
This program is the users interface with the phone network.
This program is a prime example of the tyrrany of the real.
This program uses a scan of a real phone for its main window.
Nortel Phone
Nortel isn’t the only one to sin in this respect. There are plenty of other softphones which are also unable to break away from the constraints of the real world (XTen XPro, eStara softphone, for example)

But Nortel is the craptastic software I have to use on a daily basis.
There is a voicemail system in there as well, with the corresponding voice-driven menu system. Why does the menu system have to be on the phone? I’m sitting in front of a large color display with plenty of room for a list of messages in my mailbox. Do I have to listen to a women wibble on about the number of messages?

IP Telephony is still in the horse and buggy stage. We can only wait for the winamp/skinning phase to start soon, as useful but incomprehensible interfaces start to appear. The fact that SIP and the underlying APIs are fairly open means that there should be lots of experimentation as the infrastructure starts to become deployed.

1 comment September 7th, 2005

Brothers in Arms

Finally finished Brothers in Arms: Road to Hill 30 - interesting and nicely balanced length and difficulty. The quick interface for giving your squad commands works well: point at a target and click the right mouse button, and the context determines the command given. The biggest problem is that the click is modal — you have two teams to command, and which team gets the order depends on which team you have selected in the lower left corner of the screen. Unfortunately I can’t see a better way to do the command targeting without adding another button to the mouse. It would be nice if the current selection was a little bigger than the tiny icon in the corner.

It’d also be nice if the team were smart enough to know not to run in front of the german machine gun nest, but I guess the problem is that sometimes you do want the team to draw fire away…

The command system is almost too simple, since there are only two verbs: “go” and “shoot”. Still, when the bullets are flying it’s easy to give the wrong command. The game gives you lots of interesting puzzles to apply your commands to. Early battles are tutorials, with handy fences and walls for you to hide your flanking maneuvers. Each fight becomes a simple chess game: fire team to that fence, fire to supress, move assault team to flank, fire to finish enemy position, move up to next obstacle, repeat. Later battles are a lot more open and free-form, where your tactics and eye for positioning become the deciding factor. Flanks aren’t as obvious. They also require the occasional headlong rush to solve. Interlocking fields of fire makes flanking impossible without taking casualties.

This isn’t as much a chess game as Full Spectrum Warrior. Especially in later battles, where the enemy AI tries to flank you while you are doing your thing.

The narrative is thin but realistic — the squad leader voice-over mumbles on about the friendships and the horrors of war. The missions all fit together nicely (i.e. take a town, then defend it against the counter-attack), but the characters in your squad remain cardboard cut-outs for the most part.

Add comment August 28th, 2005

No-click

dontclick.it user interface experiments in click-less interaction. Challenges us to think of new ways of interacting with systems, and shows us how a user-interface without windows might look. In some ways it’s reminicent of the old Windows 1.0 tiled-desktop approach: Contents is always available, but the tiles shrink and grow according to what you focus on.

Add comment July 10th, 2005

ASP.net 2.0 - Plus ca change, plus c’est la même chose

I’ve been safely wrapped up in my little C++ world for a while now, but I’ve had to tweak a few ASP.net web sites in the past year. The problems we’ve had building and testing web sites internally appear to be fixed in the new ASP.net 2.0 release that Microsoft are shipping this fall. But then I read articles like this and I get worried.

The problems and issues Scott outlines contrasts with the simple life in the PHP/MySQL/SMARTY world. Files stay where they are. Compiling happens automatically, but does not litter the hard-disk with mysterious DLLs. Problems are comprehensible and solutions are discoverable.

Could it be that ASP.net is trying too hard to remake the web in Visual Basic’s image?

5 comments July 5th, 2005

Split($site)

I’m going to split the blog into two sections - one with the boring general stuff (pictures of random lions, weather reports from Oslo, etc) and one more focused on usability, programming and software design. Partly this is to force myself to write seriously instead of just filling the blog with useless fluff, and partly it’s because I’m impressed by sites like Coding Horror.

This entails me actually figuring out how WordPress theming works. Luckily the wiki has turned up just what I need — I think. Expect random breakages as I muck around below-decks.

Add comment June 26th, 2005

Next Posts Previous Posts


Posts by Category

Calendar

January 2009
M T W T F S S
« Dec    
 1234
567891011
12131415161718
19202122232425
262728293031  

Posts by Month