RGB LED Panel Magic

Some time back I got some of these SparkFun LED panels. I hooked one up to an Arduino and got impressive results, although just driving the pixels took pretty much all the power that the Arduino had. I had this plan to use a Parallax Propeller chip or maybe something from Xmos to create a fast moving animated display. But I never got around to it.

Then I found out about the SmartMatrix Shield for the Teensy 3.1 device. This sorts out all the wiring and power supply issues (all you need is something that can spit out 5 volts at a couple of amps). The Teensy is a quite amazing machine. It pops a 72Mhz processor with 64K of RAM and 260K of ROM onto a platform the size of an Arduino Pro. The development tools integrate straight into the Arduino environment and the deployment to the device works wonderfully, far better than a "proper" Arduino.

TodayI set about building my display. Everything fits into an 8 inch picture frame that I got from HobbyCraft.

You can see it all above. The Teensy and the SmartMatrix Shield are at the bottom of the picture. I've also attached an SD card and an IR receiver that allows remote control of the display.  There's a really good set of step-by-step instructions on the AdaFruit site. I designed and printed some corner brackets to position the panel inside the frame, you can get them from Thingiverse here.

The Teensy runs the Aurora software which is completely wonderful. it produces some really lovely displays. I've had to hack it slightly to get it to work with a remote control I happened to have lying around. The display is excellent, and photographs just can't do it justice.

One other nice surprise was that I did all this on my old Surface Pro that is now running Windows 10. It took all these strange programs and usb devices in its stride and just worked. I'm looking forward to adding some more visualisations and searching down some animated gifs to play on the device.

Old Surface Pros, Windows 10 and Spartan

I've been running Windows 10 on an old Surface Pro 1 and it works a treat. I installed it from a USB key. I really wanted a clean install but the Windows 10 setup insisted on doing a (very successful) upgrade of the existing Windows 8.1 installation. However, by forcing a refresh I managed to get an empty machine to play with.

It's very snappy. Boot times put my Windows Phone to shame and it seems very complete and stable. I upgraded to the latest version so I could try the new "Spartan" browser. I was interested to see if it could render my blog home page and the editing environment that Squarespace provides. It works great. Takes a while to wind up but once it is going it all seems fine.

I've also done lots of things that I wasn't expecting to work very well, like connecting to network printers at the office and installing strange usb drivers. So far Windows 10 is looking like a win.

Game Jam Judging

So, sixty two games later, I've finished judging. It was great fun, and I learned a lot. I sat down to take a peek at a few entries, and then five hours later I looked up again. The things I've taken away from the experience are:

  • There are some very clever, inventive and hard working folks out there who can make astonishing stuff in just forty eight hours. Well done to the lot of you.
  • If you want the judges to like your game, make it very, very, easy for them to get to it. I had to download and run some games (which I'm always nervous about) and others plain didn't work. If you can find an easy way to get it going in a web browser you should do that. Quite a few entries made very good use of the Unity web player. Some folks had found free hosting that had advertising. I've lost count of the number of adverts I had to watch to get to games. If your game needs an install, consider making a video instead. I can get a better feel for the gameplay by watching a video rather than failing to make something work because I have the wrong library installed.
  • When you start building your game one of the first things you should add is the instruction screens. Some games had very poor help, others had none at all. I spent five minutes with one game trying to figure out what I was supposed to do. Now I understand that discovery can be part of a game mechanic, but leaving a player with no idea of how to get started will encourage them to walk away rather than put in any effort to play. If you put the help screens in first it makes it easier to get feedback too, in that you won't have to explain what the game is about to anyone who wants to have a go.
  • Some of the games told a story as they went along. I thought these were great. There's nothing like a narrative to make a game format interesting.  Even a simple "old school" mechanic can be really enlivened by a background story.
  • Don't worry about graphics if you've got good gameplay. Some games had really simple graphics that worked really well. While a certain amount of polish is nice, you need a strong core mechanic to make a great game.  Other games had amazing graphics and physics but no gameplay that I could get my teeth into.
  • I loved to see how much folk seem to have enjoyed making these things. The journey is a great one. Please, please, please publish the games if you can.

Thanks to the Meatly team for inviting me to judge, it was great fun.

Meatly Game Jam Judging

Meatlyjam is a game jam that was running over weekend. I've been asked to help with the judging of the entries. Apparently there have been 62 games submitted, which is just amazing. Kudos to the organisers and those who took part.

You might think that going through 62 different games and scoring them is a bit of a pain, but actually I'm really enjoying clicking on each entry and finding out what it does.

If you fancy having a look at the entries you can find them all here. I've only had a look at the first few so far, but there are some really nice ones in there.

Cheap Game Fun

I went computer game shopping yesterday. And for 35 quid I managed to get a couple of second hand triple A games that I very nearly bought at full price a while back. Both games were in splendid condition and they are both great fun to play. Each is a first person shooter, but there the resemblance ends. Sunset Overdrive is all bright colours, wild graphics and crazy weapons. Wolfenstein is all about a dour colour scheme and a very linear story progression. I'm not sure which I enjoy more, but getting a game like Wolfenstein (in a collectors pack with some pictures and a little book) for fifteen quid has to count as some kind of a bargain.

I really must set aside more time to play games.

What Price Protection in Programs?

I got a lovely question from one of our students today. He is presently working on our "Pick Up the Crew" game coursework and is using objects to manage the items on the screen. The question concerned protection of the data members inside the game objects. If you are writing software for a bank you need to be careful to make sure to carefully manage access to data inside your objects, since you don't want naughty programmers fiddling with account balances. But in a game you don't care so much about this kind of protection. There is nothing particularly important about where on the screen a sprite is drawn.

The questioner was asking if it is OK for a sprite to expose its position information in public data so that other sprites could find out where it is on the screen and check for collisions with it. This is a good idea from a performance point of view (if we are really worried about such things) because it provides quick access to the position information. But is it a good idea from a programming point of view? Should we worry about protecting data inside things like game sprites?

To me this is the wrong question. I don't like using public properties like this because it can introduce dangerous dependencies. If I decide to change the way that I manage sprite position I'm going to break all the other objects that make use of this information directly to work out whether or not they have collided.

From a collision point of view I reckon it is best if each sprite exposed a method (perhaps called CheckCollision) which could be used to see if it has collided with something else. Then if you change how the sprite stores its position on the screen you can just update the behaviour of CheckCollision so that nobody outside your class is affected by the change. There may be a tiny performance hit with this approach, but the chances of introducing bugs are much reduced.

Sortlisted for Student Teaching Awards

The Students Union at Hull has been running teaching awards for a few years now. I've been lucky enough to be nominated a couple of times in the past, and in 2012 I even managed to win an award. Which was wonderful.

I've just found out that I've been nominated for an award again this year. Thanks so much. The presentation dinner is in early May, I'm rather looking forward to it.

You can find out all of the details of this splendid initiative here.

Amazing fun fact: Rob Miles has in fact been nominated twice. It turns out that Robert Miles from the School of Languages, Linguistics and Cultures has also been nominated for an award. We are going to so careful that we don't both head down to the front if our names get read out.....

CloudBit Libraries for Windows Apps

LittleBits are tiny electronic components that can be fitted together to create working circuits. They are great fun and you can find out all about them here:

http://littlebits.cc/

They make a device called CloudBit:

http://littlebits.cc/kits/cloudbit-starter-kit

This puts LittleBits signals into the cloud, where you can connect to them from browsers and services such as If This Then That (ITTT). I used my CloudBit in the Microsoft Band Hackathon earlier this week, where I was using values sensed by the cloudbit to trigger alerts in the Band. I also used the Band accelerometer to control the output of the cloudbit as well.

I thought I'd put the LittleBits library that I used to control the device up on GitHub. So I have. You can find it here:

https://github.com/CrazyRobMiles/CloudBitControl

You might want to control your LittleBits devices from your Windows PC or Phone, and that's what this library does. You can send a percentage power value to your CloudBit device and receive a percentage value back. What the signals mean is entirely up to you. They might control a servo, light a lamp, open a cat flap or any number of other actions. You can use the inputs from the CloudBit in any way you like too.

There's a sample universal application that uses the library. This is a good basis for getting started. You just need the device ID and access token for your CloudBit and you are good to go.

Go to the Folly Lake Cafe

Serendipity is one of my favourite words. And I only found out about it by accident. Just like I found out about the Folly Lake Café. Now that I'm back on Windows Phone I get Cortana telling me about places to eat nearby, and this place I've never heard of just popped up last week. So on Sunday we thought we'd check it out.

It's lovely.

My favourite special would definitely be  "Bacon, Egg, Burger chips - and salad" Yay!

My favourite special would definitely be  "Bacon, Egg, Burger chips - and salad" Yay!

We arrived a bit early to eat, although the food was tempting. The café is located in a dip in the ground that might have been a quarry a while back. Now it is just a haunt for anglers, walkers and cyclists. We didn't walk there, although we might next time.

If you are looking for somewhere in the countryside you should go and take a look.

Microsoft Band Hackathon

Rob wriitng

Rob wriitng

Yesterday Robert Munnoch and myself headed down to London to take part in a Microsoft Band Hackathon. The event was based at the Central Working resource in Whitechapel, where the Microsoft Accelerator programme stuff is also based.

At the start of the event each team was given a Microsoft Band each and turned loose to make something interesting.  We downloaded the SDK (it's very easy to use) and got cracking.

There were a whole bunch of teams taking part. Robert and I had some plans involving image processing, accelerometer data acquisition and LittleBits cloud connected devices.

Proper Pizza

Proper Pizza

The event was great fun, and the catering gave me Three Thing Game flashbacks, which was nice.

We had the LittleBits cloud bit talking to the band. We could get readings from the LittleBits circuit to cause notifications, and we were also using the accelerometer in the Band to control the servo output. Which was fun.

Experience has taught me that I can't do all night development any more and so at around midnight on Monday we set off to find the hotel. This took a lot longer than I'd planned. Note to self: Hotels are often remarkably unaware of their actual location and so you should always double check their directions. Otherwise you end up traipsing through the night to the wrong location. Like we did.

Anyhoo,, we found the place in the end and I settled down for what sleep I could get, while Robert gamely carried on writing code. In the end everything worked at the last minute and we had enough stuff to talk about during the final show and tell presentations.

It's very interesting to see what folks are doing with the device and as the capabilities of the Microsoft Band SDK grow in the future things are going to get even more interesting.

Thanks to Dave Baker and Paul Foster of Microsoft for setting up the event. I'm going to post some of the things that I've learned in the next few days.

Oh, and sorry to the Python Wrestlers this evening. In my sleep deprived state I completely forgot a to create slide deck that I was supposed to have written for the event tonight. The good news is that thanks to sterling support from Warren we managed to have quite a good night in the end, reading the weather from RSS feeds.

Rob on "The Conversation"

Last week I went to a lunchtime meeting all about "The Conversation". It's a news and comment website which is written by academics from all over the world. It's a great idea, and there's some very interesting stuff on the site. All the content is published under the Creative Commons licence and so it can find it self republished in all kinds of interesting places.

I left with a strong desire publish something and they were asking for something about biometric passwords, so I wrote up a little piece. One of the best things about the site is that the articles are generally short - around 600-800 words or so. This means that they aren't too intimidating, and don't take too long to put together.

Another really lovely thing that I discovered was the great quality of the editing. I've had this experience before when I've written books. A good editor can take words and make them read really well. In the age of the internet and self publishing I worry that this skill is being lost. Not at all. What emerged from the process was so nice to read that I felt a bit guilty about my name being at the top.

I'm looking forward to writing more in the future. If you are an academic who wants to brush up your writing skills and tell the world a bit about yourself and what you are about, I strongly recommend that you get involved.

One of the most useful skills you can have is the ability to write well, it will serve you in any number of different situations. The Conversation gives you a chance to do just that, and get the benefit of the involvement in a proper editing process.

You can find my article here.

Rob at TechDays NL

I've been doing sessions at TechDays for as long as I can remember. Including the one I'd rather forget, when Every Demo Failed

And I'm very pleased to be able to report that I've been invited back again. This time I'm giving a couple of talks, one about the use of asynchronous operations and the other about the creation of Universal applications for the Windows Platform.

I love speaking in front of audiences from the Netherlands. They are always great fun. And so I'm looking forward to the end of May, when I'm going to get to do it all over again.

Last Open Day for a While

We had our last Saturday Admissions Open Day for a while today. Thanks to everyone who came along, particularly those who had travelled a long way to get to us. Don't forget that you can get an electronic copy of the C# Yellow Book here. You can also find a complete set of our first year programming content on the same link.

We had a question about masters level Computer Systems Engineering during the Q&A session. If you want to know exactly which courses we teach (including MEng Computer Systems Engineering) you can go here.

If you want to keep up with news from the department you can keep up to date with what we are doing here. http://www.wherewouldyouthink.com/

Solar Eclipse

The last time I went to see a solar eclipse it didn't end that well to be honest. Having carefully placed ourselves bang on the "line of totality" and enjoyed viewing a fantastic meteor shower through clear skies the night before, we woke up to two layers of cloud and a whole heap of nothing much.

So today my expectations were a bit low this morning. I viewed the gathering crowd on the campus as a being bit optimistic, to be honest. But when the time came it was great. I even suspended a tutorial so that we could go outside and get a look. There were telescopes and kids and a carnival atmosphere as it got gradually darker. There was a bit of cloud, but nothing that got too much in the way.

I was somewhat unprepared, I did have a camera but that was about it. However, by fiddling with the exposure I managed to get the picture above. Then someone suggested that floppy disks made a good light filter, so it was off up to my office to crack open a 3.5 inch disk.

I've no idea what the disk had on it, but I'm quite happy with the resulting photograph.

Rather Useful Seminar : Joe Stead Talks Cross Platform C#

We really like it when past students come back and tell us what they are up to. Yesterday Joe Stead came in to give a Rather Useful Seminar all about portable C# development. Turns out that you can use C# on pretty much any platform these days and Joe gave an excellent talk on the best ways to do this, how to get started, and any issues you might encounter.

As you might expect, Xamarin featured quite prominently in the talk and it was very interesting to get Joe's perspective on the platform. Joe showed how you can use a variant of XAML to design the screen and showed how to take a single application and deploy it on IOS, Android and Windows Phone.

Keep an eye on Joe's blog for a copy of the slide deck and the example application he built.