Mad Props!

Omniscience is just a Google-search away.

Login

You're reading Mabsterama, the weblog of Matt Hamilton. Enjoy your stay.

AWDNUG Featuring Dave Glover!

Many thanks to Microsoftie Dave Glover for his presentation tonight on Windows Mobile Development at our latest AWDNUG meeting.

Dave shared his thoughts, tips and tricks about developing for the smartphone and pocket PC platforms, from both the web and smart-client perspectives. He also touched on some other facets of mobile development, like SQL Mobile, web services and even WCF.

Looking forward to next month's meeting now, although at this stage I don't know what it's going to be about. Those of you who are local and aren't coming along - you're missing out, guys! You know who you are!!!

The Great Ocean Road

Got back yesterday from our road trip down the Great Ocean Road.

We stayed away three nights. One in Melbourne (for which no Google Maps link should be necessary), one in Lorne, and one in Ballarat.

The drive itself is a lot of fun - it alternates between lush rainforest and coastal beaches, with plenty of small towns and sightseeing attractions along the way. The highlights for us were the Otway Fly (a walkway some 20m above the floor of a dense rainforest) and of course the Twelve Apostles.

The Ballarat stay turned out to be the most expensive single night we've ever stayed anywhere, because while we were browsing around the shopping centre, Sal noticed that her engagement ring had lost its diamond. Because it happened outside of the house, my insurance doesn't cover it. That's a little over $1000 right there. Certainly put a bit of a downer on the last part of our trip.

On the way home we stopped in to visit my brother, who had just had surgery (that day) to relieve the pressure on his spine caused by a leaking disk between vertebrae. He's going to be out of action for some time, and was pleased to see us despite being off his nut on morpheine.

I've uploaded ten pics from our trip into a little photo album if you wanna take a squiz.

Every Application Needs a News Feed

There's no argument that web feeds (RSS, ATOM etc) are taking off. Many, many web sites (all the good ones, anyway) now have feeds that I can subscribe to.

Add to that the benefits of trackbacks, where linking from one site to another will provide a link on the destination site back to the source, and you have a whole new world of discoverability.

With the rise of blogs and web feeds, more and more developers are keeping track of news about their applications online. Microsoft themselves have dozens of feeds related to specific applications or technologies, like the IE7 blog, the RSS team blog, even the Photography blog for Vista's photo viewer.

So why is it so hard to find these blogs? Why do I have to learn about them via trackbacks or links from other blogs?

I believe that every application should have a news feed - one that's accessible from within the app. In IE7, the Internet Explorer Team Blog is in the feed subscriptions by default. That's excellent, but how about Vista's photo viewer? I haven't used it yet, but I'm guessing that there's no point of entry for the team's blog.

I was going to suggest that there should be a "Product News" menu item under every "Help" menu, but menu bars seem to be less and less common as developers try new and interesting ways of surfacing their application's functionality to the user. That's fine ... just give me a nice big button somewhere so I know what to do.

Comicster includes a "News" node in its tree view, which simply shows all the posts to my blog in the "Comicster" category. Works a treat.

It's not hard to do, guys, and you're probably already maintaining a blog. How about it? Give me the news in your application.

Death Cab For Cutie

Death Cab For CutieOn Friday night I stayed up to watch the first showing of jtv, TripleJ radio's new TV program. It turned out to be pretty entertaining - a good mix of music and interviews.

Anyway, one set featured two of the guys from Death Cab For Cutie doing a cover of Billy Bragg's "You Woke Up My Neighbourhood". I know I've heard one or two of DCFC's songs on TripleJ in the past, but I was blown away.

So the next day I picked up their 2005 album, Plans. Wow. What an amazing sound they have. I'm going so systematically work my way through their back catalogue now.

Anyway - just a heads up for those who, like me, enjoy folksy alternative pop music. Death Cab For Cutie is well worth a listen. Don't want to buy the CD? That's ok - their web site plays their music as a soundtrack. Very cool.

Upcoming Road Trip

Great Ocean RoadFor a few days next week there won’t be any posts on Mabsterama. You’re probably used to that by now – I’ve been so busy at work that I haven’t been posting as often as I normally do anyway.

The reason for the downtime next week is that Sal and I are heading down to the south of Victoria to do the Great Ocean Road drive. For readers outside of Australia, the Great Ocean Road is a very popular tourist drive along the southern coastline of our great Nation.

We’ll be lazily coasting along for three or four days, taking in the sites and enjoying casual rainforest walks etc. There are apparently plenty of bed-and-breakfast places along the way, so we won’t even need to book accommodation before we leave.

We’ll take plenty of photos, so stick around for those!

ps. Really this was just an excuse to post from Word 2007 again, and this time I’m including an image.

pps. Argh! I can’t ftp the image up from Word! Well that sucks. I’m sure it’s something to do with Word attempting to use anonymous ftp (which of course won’t work). I’ll try again from home at some point just in case.

ppps. I've added a picture manually just to pretty up the post a bit.

Office 2007, Baby!

Ok – this is a blog post from Word 2007.

I don’t know if this is something that I’ll do a lot of – I like the “hands on” approach of blogging on the site – but it’s interesting nonetheless. Office 2007 really does rock.

I’m gonna categorize this post as “.NET Development” ‘coz I think the fact that you can do this at all should appeal to you developers out there.

"Hide When Printing" in Reporting Services

Y'know, unless I'm looking in the wrong place, it's not possible to hide or customize an item on a Reporting Services report depending on whether the report is being viewed on screen or printed.

I think it'd be a great addition to the product if you could somehow programatically determine whether a report is being viewed, printed or exported from item expressions. For example, it makes no sense to print a URL link that only works when the report's being viewed in the browser.

To this end I have created this feature request on Microsoft's Sql Server feedback centre:

Provide a way to determine if the current report is being printed/exported

Vote on it if you agree!

Dispell Beta 1

Dispell ScreenshotPete over at BrownBot has released the first beta of his new game, Dispell (formerly known as "Rhys Quest").

I playtested this with my two nephews (aged 4 and 5) on the weekend, and they loved it. This beta is a little newer than the version I was playing, so I'll have to grab it myself and try it out.

For the tech-head readers (and I'm sure Pete will correct me if I'm wrong, assuming he reads my blog at all), it's written in Borland Delphi and uses OpenGL for its graphics. Pete has drawn all the graphics by hand, so the game is a testament to his artistic prowess as well as his coding skills.

Go grab it and see what you think.

An SQL Tip - WHERE EXISTS

I don't even know where I picked this little tip up from. I think I read an example query on someone's blog recently.

Every SQL developer at some point has had to write a query that includes the "WHERE EXISTS" clause. You're looking for rows in one table where an equivalent row exists in another table. Let's use customers and orders as an example:

SELECT * FROM Customers c WHERE EXISTS ( SELECT * FROM Orders o WHERE o.CustNo = c.CustNo)

So ... this is a pretty bad query for a lot of reasons, most notably the use of  "*" to retrieve all columns rather than just the subset of columns we're interested in. The first thing you'd probably do is change it to look something like this:

SELECT CustName FROM Customers c WHERE EXISTS ( SELECT OrderNo FROM Orders o WHERE o.CustNo = c.CustNo)

This is better, but let's take one more step. We know that all we need to look at in the "Orders" table is the CustNo ... so if we only retrieve that, the server need not look at the table itself. It can simply scan the index and get the CustNo from that. So:

SELECT CustName FROM Customers c WHERE EXISTS ( SELECT CustNo FROM Orders o WHERE o.CustNo = c.CustNo)

Now we're looking pretty good. However, there's actually an even neater improvement we can make to that subquery.

If all we care about (as in this example) is that the subquery returns any rows (ie. there is at least one order for that customer), then it doesn't matter what we return, provided something is returned. So there's nothing stopping us from simply selecting a constant value, like "1". So, it's possible to do this:

SELECT CustName FROM Customers c WHERE EXISTS ( SELECT 1 FROM Orders o WHERE o.CustNo = c.CustNo)

Now the subquery doesn't even need to retrieve any details from the Orders table or index at all!

If nothing else, it's less to type, and it will definitely be an improvement over selecting "*" in your subquery. Give it a whirl!

Cloning Clyde

This weekend I've been playing Cloning Clyde, the new Xbox Live Arcade game by NinjaBee.

Cloning ClydeCloning Clyde is a 2D (although it's all 3D rendered) platformer, where you play as Clyde, a hapless guy who was given $20 to take part in a cloning experiment. Needless to say, things have gone horribly wrong, and now you're trying to escape from the cloning facility and help all the other Clydes escape in the process.

The game reminds me a lot of The Lost Vikings, another 2D-platformer-puzzler from many years ago. It's bloody funny, too - a lot of images that look like they're inspired by The Far Side or Calvin and Hobbes; and slapstick humour forms part of the game.

For the sake of $16.50 to purchase 1000 MS Points, 800 of which went towards this game (which, by my calc.exe's calculations, means that the game costs $13.20), it's hard to go past. Should keep me entertained for ages, and Sal reckons it's even the sort of game she'd play.

If more games of this calibre are released for Xbox Live Arcade (see also: Roboblitz), then there's every chance that I won't need to pay up to $120 for a new game for quite some time.