.NET Micro Framework Dare to Dream Different UI

The .NET Micro Framework Dare to Dream Different competition round closes on Friday. We have to have a working prototype and a video of it working, all ready by 11:59 PST. So this seemed like a good time to build the product.

Actually, we’ve been working on it for some time, getting the sensor class design sorted and the physical sample sensors built up, but the User Interface needed to be built, and so I started that today.

3532672103

The first menu display. The touch buttons work too!

The device will be entirely touch screen controlled, with no need for buttons at all. I’m building the display components on the fly rather than having pre-rendered graphics. The device seems plenty fast enough to do this, and I’m caching the components once I’ve drawn them. (If I run out of memory I might need to rethink this, but I only solve problems when they are problems, and not before).

I’m using a combination of events from the touchscreen and background timer to get a responsive display that is easy to use. So far it seems to be going OK. Once I get the components working I’ll post the code.

Great Service from Griffin

For some time I’ve been looking for a gadget that l can use to play my music in the car. The previous vehicle had a cassette player, and so I got one of those “fake cassettes” that let me connect my MP3 player of the day into the sound system.

Then, thanks to some rather off-putting clunking noises when I went over bumps, I swapped my old car for a newer, shinier one. What with progress and the like, the new car of course had a CD player. I tried putting the fake cassette into the slot and it wouldn’t fit. So that was that.  I burnt a few disks of my favourites and just played them.

A few weeks ago the urge to play MP3s in the car returned though, mainly because I fancy being able to listen to podcasts and the like. Eventually I settled on a Griffin RoadTrip, because it doesn’t have any trailing wires. It just plugs into your cigarette lighter (I wonder if anyone still uses those things to light cigarettes) and you attach your MP3 player to the other end. It finds the quietest parts of the FM spectrum and then uses them broadcasts your tracks, including the RDS data, into your car radio. And it works a treat with the iPhone. I had to pad out the fitting with a bit of insulating tape to get a nice snug fit with the connector and stop the whole thing from slowly rotating out of the socket, but apart from that it worked fine.

Then I tried to use it with my five month old iPod. Which, of course, is an old model. The RoadTrip comes with a bunch of adapters  which doesn’t include my apparently ancient and unsupported one. This reflects a kind of lack of foresight on my part I guess, but we’ll gloss over that.  I sent Griffin an email bemoaning this and they instantly came back and said they’d post me a missing adapter. It arrived today, all the way from the USA. Great stuff. In these days of the internet and telephone helplines it is nice to see that some companies keep the idea of good service alive.

Are you a “Best Banker” or do you have the “Strongest Pong”

Today and tomorrow I am going to be mostly in the practical labs marking first year programming work. The students can produce either an implementation of a Bank Account management program or an XNA version of the Pong game and they have to show it off and chat about how it works. The marking is is very time consuming, but I love doing it because it lets me chat to the students and see what they can really do.

To make things even more interesting I’ve produced some stickers which anyone who gets more than 90% will get either a “Best Banker” or “Strongest Pong” sticker.

3512129253

Well, could you get one?

Windows 7 is Lovely

I’ve been running Windows 7 Beta on my tiny netbook for a while. This week, having downloaded the Release Candidate I thought I’d step up to that. I had to do a complete re-install, which was a bit of a pain, but the effort is well worth it. Everything seems a lot more polished and there is some lovely artwork in the desktop and background themes that you get with the distribution.

From a technical point of view it doesn’t seem to have lost any of the responsiveness of the earlier releases and it found and used all the hardware in my device. If you are using Vista, or even XP, you should take a serious look at this, it really is very nice.

JSON and the Micro Framework

Our entry to the Dare To Dream Different competition is coming along nicely. We’ve spent a goodly chunk of today working on how we are going to pass messages from the Micro Framework device and the server it is attached to. Number one son suggested using JavaScript Object Notation, or JSON.

We could have used XML, but this has always struck me as a rather verbose way to pass data. JSON on the other hand is nice and tight, and has the benefit that its entire syntax can be expressed on a single web page. We are presently writing a set of JSON classes for the Micro Framework. This is actually proving to be quite fun (there might be ready-written versions out there but I quite like writing my own versions of these kinds of things, just to keep my hand in).

If you are interested in a beautifully simple way to express a design for data structures you should take a look at this page and see how the author has done it. I’m also thinking that if you are looking for an exercise for your programming smarts you might want to create a library of classes that will read and write data in this form.

Once I’ve got ours working and I’m happy with it I’ll post it out there so that the Micro Framework can use this rather neat data structure.

Simpsons 20Q is Fun

I thought I’d got a good deal getting a Simpsons 20Q for 8 quid up town. But Amazon have them even cheaper. I’ve long been a fan of the original 20Q device, which guesses what you are thinking by asking you 20 questions about it. The  original has an astonishing ability to guess random things, from lava lamps to artichokes to the air.

The Simpsons one is nowhere near as good, but it is quite fun, and does seem to have been programmed by people who really know a lot about the show.

Worth getting at the new low price, but if you haven’t got a 20Q (and everyone should have one) then get that instead.

DevDays Geek Night

I’m presently limbering up for Geek Night at DevDays in Amsterdam. I’ve got bits of the Micro Framework running and we just have to fit everything together. I love doing Geek Night presentations, I’ve even made a video to promote this one, which you can find here: http://tweakers.net/advertorials/geeknight.

Inaccurate Clocks

The clock on my Windows Desktop updates the minute hand every minute. Which is fair enough. However, it does this at the end of each minute, which I think is wrong. It means that for the last thirty seconds of each minute the clock is more than 30 seconds wrong. I reckon that the minute hand should move to the nearest minute when it becomes the nearest one.

Or am I just being too pedantic, and should really turn the second hand on? (and then fret about the clock being more than half a second out…)

SkyDrive is Superb

Fancy 25G of online storage for free? Thought so. It gets even better though. You can have public storage, private storage or anywhere in between. Everything is done via the web, so you can push files between PCs, Macs and anything with a browser. I’m getting into the habit of lobbing important stuff up there just to keep things safe.

If you have a Windows Live account you are in business. Just head up to http://skydrive.live.com and start uploading files. The biggest downsides for me are the fact that you have to drag individual files into the storage and that my home broadband makes uploading a rather slow experience.

Great stuff.

Meccano Makes Good Programmers

Beetle

When I was a kid I had a Meccano set. I had some Lego too, but at the time all you could make with that was houses and not very realistic vehicles. The Technical Lego and Mindstorms stuff was years away in those days, and besides Lego stuff was too easy to put together, and fell apart too quickly.

Meccano wasn’t like that. Getting the nuts and bolts together could be murder. It was especially unforgiving of mistakes. Picking up the wrong kind of part early in the build often meant you had to spend ages undoing your painstakingly constructed model. The instructions were good, but you often had to use a lot of deduction to work out which bit you needed to use, and how it really fitted. On the other hand, Meccano was tough. It even survived the day that I decided some Meccano roller skates would be a good idea.

I was reminded of all this when I got to play with some Meccano recently. Number one daughter got one first, and I just had to follow suit and get a little Meccano model of my own. And then spend a couple of happy hours putting it together.

When I think about it, this was very good preparation for a programming career. Programming languages and their libraries are not known for tolerating mistakes, and you often end up taking to bits what you have just built, because you get to the point where you discover it just won’t work that way. And with Meccano, as with programming, if it ends up wrong it is pretty much always your fault.  And, just like Meccano, every now and then you build something you really like.

De Nutty Professor Rob Miles

I'm going to be presenting at DevDays09 in Holland later this year (28/29 of May to be precise).

I'm doing two sessions during the conference, one on the .NET Micro Framework and another on XNA. I'm also doing a session at Geek Night. I did one last year, and it was great. This time I'm talking about "Ruling the World with the .NET Micro Framework". I'm going to show how you can achieve greatness by programming tiny devices. It is going to be fun, on the site at the moment they refer to me as "Rob Miles, de nutty professor uit Hull". Works for me.

Reading Twitter Feeds with LINQ

LINQ (Language Integrated Query) is a really neat feature of .NET which makes it very easy to work with structured data. I’d always thought this meant things like databases and stuff, but it also works with XML. This CodeProject article shows how you can use LINQ to read information out of Twitter feeds.

http://www.codeproject.com/articles/35668/How-to-Read-Twitter-Feeds-With-LINQ-to-XML.aspx

Very clever. It took me around five minutes to make a simple Twitter Viewer application based on the code given:

https://static.squarespace.com/static/5019271be4b0807297e8f404/52c5bcfce4b0c4bcc9121347/52c5bd03e4b0c4bcc91238f5/1240577347000/TwitterViewer.zip