Browsers. An IE8 quickie.

by Matt 1. December 2008 18:08

So if the big point about Firefox is that I don’t like the non-native UI rendering, what odd thing am I going to pick on for IE8?

Well, I’m not going to write a review – it’s far too late, and we’d all be far too bored by that. But there are still some interesting points to make – but let’s do ourselves a favour and I’ll limit myself to a Twitter-like 140 chars per point.

Let’s kick off:

“Good enough” doesn’t work when the competition continues to raise the bar.

IE is already comically behind. And now not shipping until next year (I bet with win7). Had expected this year with another rev for win7.

Compatibility view pushes the problem to the user. How does my mom know how to use this? Is the user base going to accept/understand this?

How does Firefox and WebKit render the web so well? Are sites really pushing radically different content to standards compliant browsers?

The IE blog has been great at getting the information out. As I shall soon demonstrate with lots of links…

And veering dangerously close to review:

The search box and address bar suggestions are a clear (ahem) homage to Firefox. But IE’s is prettier.

The address bar suggestions use Windows Search. Hooray for a surprising example of reuse! How totally unlike Microsoft!

Accelerators = Smart Tags. Web Slices are great iff you are Ebay. Grouped tab browsing is less gimmicky than I expected.

Activities, Web Slices and grouped tabs could easily be created with Firefox extensions. Web Slices already have. Oh, so have Accelerators.

(Web Slices Sidebar gadget. Cool hack. Shame I’m not following anything on Ebay.)

Developer tools are really good. Even got a nicer View Source app.

No-one else seems to have noticed you can switch style sheets from the View menu.

The RSS platform didn’t see much love. Ok, authentication. And it does power Web Slices, and you can search titles

But seriously folks:

Process isolation is very clever, and is genuine innovation.

Session restore. Hallelujah. But is it just me, or does it only work for one open window at a time? Here’s hoping it’s a beta bug…

So there we are. I think I managed to keep within 140 chars.

Tags:

Elections – the killer gadget app?

by Matt 5. November 2008 19:38

Gadgets and widgets clearly have their place on the web, from personalised home pages to adornments for your blog. But I’ve not been convinced about putting them on your desktop.

Until last night, when I think I may have stumbled upon the killer app.

I’ve been fascinated with the American election, not in small part due to it’s uncanny similarity to the last series of the West Wing, and so followed a twitter link to MSNBC’s Vista Sidebar gadget.

WindowClipping

And it’s brilliant. It’s a Flash app that updates itself every 2 minutes, AJAX style. It’s nicely interactive, showing results or deadlines for each state. It shows me the totals, who’s winning, the majority values and the current leading stories on the site.

In other words, it’s a rich internet application, showing me focussed, relevant and up-to-date information, in a very unobtrusive manner – always running, in the background. This is what I want for a desktop gadget.

It’s just a shame you can only use it for 12 hours every four years and (thanks to the wonder of time zones) I’m asleep for most of that time.

Tags:

Microsoft and jQuery

by Matt 29. September 2008 15:49

About this time last year, I wrote a post questioning if Microsoft should bundle Open Source software with any of its products. They've shipped a number of Open Source projects (Wix, Iron Ruby, etc) but haven't taken a dependency on one.

Until now.

ScottGu just announced they're going to be shipping jQuery as an officially supported part of asp.net.

Kind of a surprising move - but a very good one.

They haven't really answered the questions from my post. What happens when jQuery goes out of favour? MS is going to have to support it in perpetuity. And, yes, they're actually supporting an Open Source project. If there are any bugs, they can't issue fixes for it - all patches they submit will go through exactly the same review process as a patch I would submit (realistically, they can issue a bug fix to a customer no problem - it is Open Source after all). In fact, the community benefits more from this support, because they'll also be contributing test cases and an intellisense annotated version. And they're going to be building on it themselves. I guess the goodwill they get from this move outweighs the money they will have to spend supporting it (and the fact that it's a mature and stable framework probably help a lot, too).

Very cool.

Tags:

Browsers. Firefox first.

by Matt 26. September 2008 18:25

There’s been a bit of activity on the browser front lately, and a couple of things have piqued my interest about each release. So, I’m going to start by being the least topical I can and look at Firefox.

Now, I’ve always been an Internet Explorer person. Clearly, I’ve known about Firefox for years, even dipped my toes a couple of times, but I’ve never switched. I knew it was more standards compliant, faster, more extensible, blah, blah, blah.

I just didn’t feel the love.

And there are two reasons why. Firstly, (and I know this is close to heresy, but it’s true) IE is good enough. If you’re not a web developer, then IE is just fine. As a user, I don’t care if a site is xhtml or tag soup. I don’t care how hard it was to develop. I’m using the majority share browser, and you’ll make your site work for it. I win. The same can be said for speed. Firefox is faster, but IE is fast enough.

The second point was one I didn’t realise until I read a blog post by Paul Thurrott. Firefox left me cold because it’s not a native application and the look and feel was like an old school Unix app.

Shallow? Perhaps.

But to quote Mozilla’s UI designer Alex Faaborg’s blog (referenced in the above post):

Personally I think a unified cross platform UI results in applications that at best feel foreign everywhere, and at worst don’t even feel like real applications.

Bingo.

You can tell a non-native application a mile off. VB6, .net or XUL – there’s just something in the look and feel that’s not right. A slowness, visual cues or whatever. It matters.

Firefox 2 wasn’t very good looking. It didn’t use standard OS buttons and other widgets, dialogs had text clipping off the edge of the screen. It was just a bit clunky.

And Firefox 3 was going to fix all of that. Worth keeping an eye on.

As did Paul Thurrott. With mounting disappointment.

So, Firefox 3 got released and didn’t quite deliver on the native look and feel promise. Oh well. Along came the Glasser extension to give us Aero Glass, and Vista toolbars. Add the Hide Menubar extension and you’ve not got a browser that looks nice and native, and not a million miles away from another browser. All of which made it much nicer.

Shame they messed up the tab handling though. Try doing Ctrl-tab in Visual Studio and Word. It cycles through the tabs in a most recently used fashion. Firefox decides to simply cycle left to right. And when you open a new tab, it opens on the far right, rather than next to the current tab. LastTab and Tabs Open Relative fix this.

So yes, extensions. Firefox has an astonishing number of extensions, some useful, some not so. You can, if you choose, turn your browser into something that no longer resembles a browser. Email notifiers, weather forecasters, calendaring reminders, idle-time photo “screen savers”. Why you’d want to put these into your browser is beyond me.

It’s interesting that the majority of the extensions I have installed are what I’d consider to be functionality that should be part of the base browser…

But what this means is that I’m a convert. FF3 is my default browser, mainly due to 2 killer features. Not the Awesome Bar (which is very nice), nor the password manager, or the database backed history and bookmarks. Not even the rock solid stability, speed of rendering or site compatibility.

Nope. Second favourite killer feature is an add-on: AdBlock Plus. It’s only when I’m using another browser do I see how impressive this add-on is.

The best feature of Firefox is it’s ability to save the session, between crashes or restarts or just simply closing the browser. It’s this feature that made me switch.

Tags:

Single instance applications

by Matt 7. August 2008 18:10

Scott’s Weekly Source Code just looked at handling single instance applications using Visual Basic’s built in support. Rather handy, and desperately easy.

But it’s not how the shell does it.

Windows already has a defined way to handle this. Historically, this was DDE, which involved broadcasting Windows messages to initiate a DDE conversation. Naturally not the best performing option (ever wonder why the IE options are so slow at closing? They broadcast the options change notification to all windows). Command line args are limited in length, and you've got the added cost of creating a new process for each new file to be passed through.

So, in Windows XP and later, Microsoft added support for registering your application as a COM IDropTarget for the file type. When the shell wants to send you some files, it creates an instance of the COM object and passes it an IDataObject that represents the shell items for the files. In fact, because it’s giving you shell items, you’re not limited to files, but can now accept anything that can be represented in the shell’s namespace – printers, files within zips, any other virtual item. Try that with your command line args.

Implementing it is, well, what you’d expect from COM.

You can, if you’re feeling a bit daft, implement an in-process COM object, get your dll loaded into explorer and perform your own inter process communication with your app. Kinda defeats the point, though.

Or, more appropriately, you can register your application as the out of process COM server for the object. And then you need to implement the standard COM goo of registering a class factory with CoRegisterObject, and dishing out your IDropTarget when asked for it.

The shell calls your IDropTarget and passes in the parameters. So it all happens in your first instance.

And there's the subtle difference - it's less about single instance applications, and more about passing data through to the currently running app. Almost the same thing, but not quite.

Now, this method isn't perfect - it's no good if you just double click the executable again, or call it on the command line. And it's not terribly useful if you want to pass arbitrary data through (a command line arg saying "stop").

That said, there's nothing stopping your second instance passing through a custom IDataObject data format to the existing IDropTarget...

So you can get single instance working with this method, and getting shell multi-select verb support for free can be useful, too.

As ever, MSDN has the skinny.

Now, if only there were some C# code. After all, who’d want to use a Visual Basic dll that already solved the problem?

Tags:

Is Live Mesh the next WinFS?

by Matt 25. June 2008 16:46

And I mean that in a good way.

WinFS was a fantastic concept. Complicated and grandiose, but quite clearly revolutionary.

The basic promise of WinFS was this: It was a general purpose data store all your data.

It promised a number of interesting end-user features. Firstly, data could be stored as structured entities directly in the database. Or you could keep the data in files just like you’ve always done and add the files into WinFS. Structured data would be extracted out and promoted into the database. Changes would be pushed back down into the file. And you could access the file directly, too, using plain old Win32 files (via some network redirector magic that SqlServer 2008 appears to have picked up – and this is where the confusion with WinFS being a filesystem comes from – the lines are certainly blurred here). It was all fully searchable and supported a synchronisation story.

Jon Udell (also a long time fan of WinFS) recently published a great interview with Microsoft’s Quentin Clark entitled “Where is WinFS now?” which is well worth a listen/read. Apparently, large portions of the technology have either shipped or are coming soon.

But bizarrely, most of it has ended up server-side.

So, let’s look at the client-side piece.

Search is done, although it’s arguably missing the first class relationships (I can search for all photos on a certain date, but not for all photos for a given persons birthday).

Common schema for the structured data is still MIA.

And synchronisation, ah yes. This was a big piece of WinFS, and is now also shipping separately:

“As they realized they were onto something, they started to fork out a componentized version of it that's now finding its way into a bunch of Microsoft products. The official branding is Microsoft Sync Framework. I think they're on target for shipping it in six different products, and for embedding it all over the place.”

The Sync Framework? The one that contains FeedSync? The protocol that powers Live Mesh? Yep.

Live Mesh provides synchronisation, just like WinFS. It enables storing structured data as custom items in a feed. Or you can store metadata about a file, with the files treated as enclosures and sitting in the local filesystem. Couple that with Vista’s (or is it Windows Search’s) Property System, and you’ve got your read/write file metadata.

And it has an API that allows any application to read or write to it.

In other words, Live Mesh is the global, shared data store that WinFS was aiming for.

It’s still missing the common schema, and as of today, Windows Search knows nothing about it (although that would be a great project to write) but frankly, that’s the icing on the cake. Every application needs to store data, and every application invents their own way (xml files, databases, zip archives). Every application is a data silo. A global data store like WinFS could crack that wide open.

And that’s a good thing.

Tags:

Live Mesh and Me

by Matt 20. June 2008 18:16

Firstly, I’d just like to point out that I’m on the train. And on the Internet. The modern world continues to amaze and bedazzle me.

But what I really wanted to talk about was Live Mesh. I’ve finally got my invite (thought not through www.sharemesh.com surprisingly), installed it, played with it, and yes, it works lovely. It’s all file-syncing goodness. It’s all, well, it’s all a little bit underwhelming actually. It’s just not terribly exciting.

And then I watched the Channel 9 video with Ori Amiga on programming Live Mesh, and it blew my head off. The potential here is really powerful stuff. It’s a platform, and you’ve got several ways of working with it:

  1. Just use the file system, and let Live Mesh worry about the synchronisation. You can make the minimum of changes to your application (perhaps add a file watcher) and still enable collaborative working.
  2. Query Live Mesh via a REST interface – http to the Live Mesh service. And now you can store your data in a more structured manner, directly within Mesh. Partition your data up into Atom feed entries, and Bob’s your uncle.
  3. Query Live Mesh via a REST interface on your desktop. This is a killer. You can make exactly the same http calls as you would to the Live Mesh service, but they are all non-network calls of the Mesh Operating Environment (cutely known as MOE) that runs locally on your machine, and which has all of the data of the online service locally, because, hey, that’s what Live Mesh does. And any changes you make to your local data store are automatically replicated up to the cloud.

The really big thing that hit me during this was the idea that Live Mesh can now be a generic application data store, shared by all local applications. We’ve seen this idea before. Well, nearly seen it. I’m going to come back to this.

And then, of course, Apple announce Mobile Me, which is, yep, a synchronisation platform. It’s the typical story; Microsoft announce a grand new vision to build a fantastic generic platform, and along comes Apple (or someone) and simply releases the working end application – something that just does the job.

And Mobile Me is very similar in terms of features. It does the whole sync thing – mail, contacts, calendar, photos, files, bookmarks, system (Mac) preferences, cross platform and phone (iPhone) – everything that Microsoft have promised, if not delivered.

So does that mean Live Mesh isn’t important?

Well, we’ll see. But I think Live Mesh has an edge – and that’s the API. It’s a platform, not an application. And by enabling developers to create applications with built-in cloud storage, personal synchronisation, collaborative working, structured data shared between local apps (I love this one), or devices that are actually online services such as Flickr or Facebook, well, they might just be on to something.

(And I’m no longer on the train. Mobile broadband modem died. It would appear that the modern world is not quite as amazing and bedazzling as I’d thought.)

Tags:

How to insert a USB cable

by Matt 18. June 2008 17:35

Are you tired of never knowing which way up you insert a USB cable? Do you always need several attempt before you can plug it in? Want to know how to get it right first time?

Based on the empirical evidence of a total of 3 cables, I can say, with some conviction, that a USB cable is always plugged in with the USB logo facing up.

A USB cable

Indeed, Wikipedia, from whence I shamelessly stole this picture, backs up my, um, research, with this tidbit on the topic of usability:

It is not obvious at a glance to the inexperienced user (or to a user without sight of the installation) which way around the connector goes, so it is often necessary to try both ways. More often than not, however, the side of the connector with the "trident" logo is the top.

Shame USB drives don’t have the logo on them. I guess I’ll still have to get it wrong, swear and turn it over before using those.

Tags:

Build your own context menu key

by Matt 17. June 2008 16:26

Turns out, my expensive, stupidly big laptop doesn’t have a context menu key. You know, one of these:

shortcut-menu-key

 

 

 

Now, I’m kind of used to the fact that laptop keyboards layouts are implemented with random number generators, and have pretty much resigned myself to the muscle memory stutter when trying to hit end, home or page up and page down on any particular machine, but to take away my context menu key is just rude.

Especially when they’ve bothered to include a number pad. I’ve already got one set of numbers, thanks.

It’s taken me over a week to find it on my work Dell laptop – head top right then turn left four or five buttons. But it’s completely MIA on my new machine. (But if you use Fn + End, it opens calculator. I have no idea why.)

Fortunately, Windows is smart enough to include a registry value to change the values sent to the system when you press specific keys. Don’t like your keyboard layout? Change it.

Of course, it’s in scary binary format, so download a program to help you. I used SharpKeys, but there are plenty of them out there – they don’t need to install, just to change a single registry value.

So now it was just a choice of which key to use. The closest in physical position was AltGr, which according to Wikipedia, is only useful for getting the Euro sign € and the pipe symbol ¦ on the UK keyboard, and guess what, Windows lets you use Ctrl + Left Alt instead of AltGr.

Which meant a quick map of Right Alt to the “Application” key and a logout later, and I’ve got a working context menu key. Another fine hack.

It might be worth having a bit of a mooch through the list of keys in this tool, though. You can map all sorts of keys to special functions like Media Up and Down, and yes, Calculator.

Of course, I could have just pressed Shift + F10.

Tags:

The times they are a-changing

by Matt 11. June 2008 17:24

It’s been a little while since I last posted. Well, not counting the two posts earlier today. And, admittedly, since Smallest Child was born, I’ve struggled to hit double-figures in a single month, and oh-my-god, I’m writing a meta-blogging post.

I always promised myself I wouldn’t blog about blogging, but you know what, I’ve been doing this for (very surprisingly) over 2 years now. So I think I’m entitled to the occasional self-indulgence. Feel free to wander off now – this post is going to be very light on techie stuff.

(My first post was 25 May 2006, not that you’d know if from the blog software I’m using – for some reason, the Posts Archive list starts in June 2006. This blog runs on Single User Blog, an Open Source project started by Mitch Denny that I had a lot of fun hacking on and learning asp.net 2 with. Of course, I never did have enough spare time to implement/fix everything I wanted to (such as conditional gets on the rss feed – ouch) and you know that when the creator of the platform abandons it, it’s time to move on. I’d love to write a new platform, WCF and LINQ based, but I don’t have the time, I wouldn’t finish it, and I think Minima has already done it, so I’ll probably be off to BlogEngine.net sometime soon. I just want to migrate without breaking anything.)

Anyway, there’s more interesting things to write about. Namely, a change of jobs. I’ve had exactly 3 jobs in the last 13 years. One year at a database solutions provider that went bankrupt. 5 years as a C/C++ cowboy developer at a company that creates a finite element analysis suite (and whose website is beautifully, wonderfully, still running on the same dev box, with the same university domain name). And 7 years at a rather large online bank.

And I’ve left. I’d reached the point where there wasn’t much else I felt I could get out of being there – I’d ticked all the boxes I’d wanted to tick. I was a Principal Developer, but had moved away from writing code. I’ve had a brilliant time there – it really was a great place to work (despite what we used to say. We weren’t happy unless we were complaining). I’ve learnt an awful lot, and I’ve shipped a lot of software (there are a number of really important pieces of architecture that I’ve had my hands on that I’ve really rather proud of).

Plus, my wife and I work for the same company, many miles from home. Putting 2 kids in the car for 2 hours a day is a bit rough. Plus First Born is starting pre-school soon, and the child care just doesn’t work out when we’re both working.

So here I am. In London, living away from home contracting. My wife’s also just handed her notice in, and it’s all change Chez Moi.

I’m currently working on a 6 month contract down in London for a rather well known media company, building the back end processing system for pushing TV programmes out onto the Internet. Cool. My contract is for me to be an Application Architect, but I’m kind of on secondment to this project right now, so I guess I’m a dev of some sort. But it’s really good. I’m 3 days in, and have already been pairing, writing test-driven code, and checking stuff in; I’ve been productive, which I was expecting so soon.

“Team Agile” as my ex-boss puts it. He’s not bitter.

But enough navel-gazing.

I’ve got me a new laptop, and quite clearly, my eyes are bigger than my belly. It’s a Dell Inspiron 1720. Yep. 17 inches of goodness. Er, screen. And that’s a whopping 1920 x 1200 resolution. I’m all awash with screen real estate right now; it’s lovely. And the 4 gig helps, too. Check it out:

WEI

This isn’t a laptop, it’s a desktop with a built in screen! It’s even got a numpad!

And it’s just as big and heavy.

Yeah, I’ve sacrificed some convenience for raw power. Oh well. I’ll get over it.

Tags:

Month List

RecentComments

Comment RSS