Programming At Hull Web Site

Over the last couple of days I've spent some time adding content to our WhereWouldYouThink web site. This is a site that has lots of stuff that might be useful to students in general and computer science students in particular.

I'm trying to rationalise some of the support materials that we have for programming and I've attacked the problem in the only way I know how.

I've bought another domain name.....

I've set up a microsite at the address This brings together all the stuff that we've put together to help folks learn to program. This includes the wonderful C# Yellow Book and Arduino and Python content. If we make anything else useful we'll put it there too.

Festival of Daring and Excitement

Last year we had a welcome Frag Fest day for our new First Year students. It was so successful that we are doing it again. The fun starts at 11:00 or so on Saturday 31st of January and runs through to 7:00 pm, with Pizza in the middle somewhere. 

We'll have all the usual suspects, including Team Fortress 2, a Wii U Super Smash Bros tournament and even board games and whatnot. It's open to any students or staff of the department. You can find out more here.

Grimsby Global Game Jam Rocked

The Blimbu team being photographed with their prizes. 

The Blimbu team being photographed with their prizes. 

I wasn't able to take much part in the Global Game Jam this year. Circumstances conspired to limit my involvement to transporting Hull students who wanted to take part over to Grimsby Institute, where the competition was held this year. 

From the looks of things the competition went really, really well. Kudos to the Grimsby team for running an excellent competition.  The winners of the event were Blimbu, who are Game Jam veterans and have been producing high quality games from the very first Global Game Jam in Hull a couple of years ago.

You can take a look at the game that they made in only 48 hours here.

Consoles and Blu-Ray Players

So last night I settled down to watch Tinker Tailor Soldier Spy. It's a fine movie. Nowhere near as good as the TV series or the book, but well worth a watch. However the picture quality was horrible. At first I thought the flickering screen and grainy image were part of a period recreation, but then I remembered it being perfectly fine in the cinema. 

I discovered, after some messing around, that game consoles don't make very good Blu-Ray players. I tried a couple of devices and the results were pretty horrid on both of them to be honest, with tearing images and lots of noise. This might be something to do with the rest of my system, but because I'm the kind of person I am, I thought I'd try getting a dedicated player to see if it was any better. 

Oh yes it was. The difference was like night and day. Much much better. And the good news is that a decent player can be had for a comparatively low price these days, not far off the price of a video game (which is how I price most things to be honest).

My advice, such as it is, would be to think beyond using your PS3 or whatnot as a player and look into getting a "proper" one. This also has the useful advantage of making it much easier to actually watch movies. Now I can just put the disk into the machine and within seconds be watching a whole bunch of trailers I can't skip. With the console I have to find the controller, wobble through a bunch of menus and, if I'm lucky, a firmware update before I get to see things that are on the disk but shouldn't be in my way.

Up until now I've had a kind of "everything is digital" mindset about things like DVD players and whatnot, but my experience has been that there is actually quite a lot of subjective shenanigans going on between the signal source and the display. 

Hatless by Degrees

Ceremony 2

Ceremony 2

Ceremony 3

Ceremony 3

There are two Rob Miles's working at the University of Hull. This can cause problems occasionally. As when you hear "We've ordered academic dress for Rob Miles to wear at the degree ceremony on Friday" and think that all will be well. 

Of course, that wasn't me. So I had to make do with a gown and cape that we grabbed from the returns, plus a hat that was strangely large. In fact I really wished that I'd spent some time practicing the Michael Jackson spin before the ceremony.  I reckon that I could have done one of those without my hat actually turning. That would have been so cool. At least I think so.

Anyhoo, hat problems aside (I gave up on the hat in the end as it kept falling off) we had a couple of really splendid ceremonies. It's always a bit nerve wracking getting everyone into line and doing the warm-up speech, but it was so worth it to see the looks on the faces of the graduates and their families. I took my usual pictures from the stage, they came out quite well. If you click through the pictures onto Flickr you can find the larger versions and seek out yourself. 

The only real snag with today was that it's put me in the wrong place to get into the Global Game Jam that is running over the weekend. Jon took a bunch of students over to the Grimsby event and I'm going to be nipping over during to see what is going on, but I don't think I'll have the time to get down and build an entry. Then again, when I find out the theme and the mood takes me, who knows..... 

WiFi Security on the Radio

You've probably seen the film "The Truman Show".  It's about a chap who is is unknowingly the centre of a reality TV show. His life is being continuously filmed for a worldwide audience. Everything around him is choreographed so that the viewers can see his reaction to events. There's a memorable sequence in the film where Truman is heading out to work and all the traffic around him is planned like a military operation.

I was reminded of the film this morning when I was trying to drive into the middle of Hull to take part in a radio item about WiFi security. Everything, and I mean everything, seemed to be happening in a manner calculated to make me late. I had a mental vision of someone in a control room speaking into a headset and saying  "OK, he's had the slow running train and the reversing bus, now lets set up the trick cyclist and red light sequence......".

I was a bit late, but they managed to shuffle things around and we had what I thought was a good chat. It was in response to a piece in the news about a seven year old girl who had learned how to hack into an unsecured public WiFi system in around 11 minutes. You can read a good description of it here.

The story had been set up by a WiFi security company (who would have guessed). The girl wasn't actually a hacker in the proper sense, more someone who could find a video on YouTube and then copy the instructions in it. Actually I feel rather sorry for her, in that she now has "how to hack wifi" in her Google search record for the rest of her life. Oh well.

But the story did hold important lessons on security. The most important one is probably that folks need to be aware of the dangers that using free "open" wifi brings. By "open" I mean the kind of connection you don't need a username or password to access. When you use these your phone, PC or tablet will frequently give you a warning, and with good cause.

The open nature of these connections means two things. Firstly it means that the data exchanged between the network and your PC is not encrypted, so anyone can see what you are doing. Secondly it means that it is child's play - literally - to make a computer pretend to be the WiFi connection and perform a "man in the middle" attack, reading the contents of each of your messages before passing them onto the network.

So, using an open WiFi connection must be regarded as fraught with risk. If you have to use a a username and password to connect things are probably OK. Lots of hotels have a little printer on reception that prints out a set of credentials that you can use for a limited time. These are probably OK. But places where you can just find the site and then connect must be regarded as rather dodgy.

If you really must use an open site (and we've all done it - including myself who has been known to install Windows Phone firmware upgrades in Starbucks the world over) then here are a few tips:

  • Only visit  web sites that have https (and the little padlock in the address bar) while you are online. These encrypt the conversation between your computer and the server so that any eavesdropper will get an earful of meaningless chatter.
  • You can use your banking applications quite safely, as these will encrypt the data sent to and form the bank.
  • If you really, really, must log in to use sites that are not https secure, use usernames and password pairs that are unique to that site. One nasty trick that hackers have up their sleeves is to take credentials that you use in one place and then try them on lots of other ones. If possible you should really have different passwords on every site you visit to stop this from happening.
  • Once you have finished, check your device to see if it has remembered the connection. Lots of phones and tablets keep a handy list of sites so that they can reuse connections if they see them again. This means your phone might try to remake the insecure connection again without you knowing. I'd advise you to delete the connection from the list to stop this from happening.

Networked devices are massively useful and we have built large chunks of our lives around them. But you also need to remember that some of this wonderful technology was not really built for the nasty world that it is being used in and make sure that you limit exposure to these horrid tricks.

Windows 10 Looks Wonderful

I wasn't able to watch much of the live presentation about Windows 10 today. We were down at Fudge having a really nice meal at a bargain price, thanks to their January seat sale (my tip, have the quiche - like a pie but without the lid, and a fantastic filling).

Anyhoo, I managed to capture the gist of the event, sneaking peeks of a live blog from the event on my phone in between courses. Which is probably the epitome of bad manners, but I really wanted to find out what was going on. 

It was awesome.

Some perspective here. I'm a Microsoft MVP. I like Microsoft stuff. So you would expect me to say nice things about stuff that comes from Redmond. But even so it was awesome.

There was a great balance between stuff that you can see fitting in with your life (universal apps that are built once and run on every platform in an appropriate way, Continuum that makes sure that you get the best experience whatever device you are using, Cortana everywhere, playing Xbox One games on your tablet/phone) and completely bonkers stuff that might just change your life completely (the Holographic headset). 

I've read up what I can on the headset and the only thing I truly, definitely know about it just right now is that I really, really want one. It is definitely a work in progress. I'm not sure that Microsoft can tell us exactly how they see it being used in the future. But kudos to the company for unveiling it as they did. If you want to watch back the event you can find it here

Microsoft now have compelling hardware, compelling software and real proper science fiction stuff. The next year is going to be very interesting. 

Updating the C# Yellow Book

Yesterday I got an email from Amazon telling me that readers had spotted some spelling errors in the Kindle edition of the C# Programming Yellow book. They are quite right. The errors crept in when I used the Amazon system to convert the word file into an eBook. They've been bugging me for a while.

Not that the errors have stopped my book becoming a best seller......

Not that the errors have stopped my book becoming a best seller......

Anyhoo, I've decided to fix these pesky errors once and for all. I'm doing a new conversion of the text, moving it by hand from Word to HTML, and thence to Kindle.

Lots of things about the layout of the first version of the book didn't translate well into eBook format, hopefully the updated version of the text will be easier to read. It should be out in a week or so, once I've reformatted the text and tidied it up.

There's also some shiny new content that I've added to bring things up to date. 

Made My Camera

Well, the camera I started building on Friday is now complete. The build wasn't that tricky, although I did end up making the lens assembly four times until I got it right. 

The viewfinder is kind of interesting. The view through the lens is projected onto a little screen, just like a "proper" single lens reflex camera. However, unlike a normal SLR, the viewfinder image is not further reflected inside a pentaprism.  What you see on the screen is the right way up, but flipped left to right, which took me a while to figure out. The image is also a bit dim, so you need to assemble a little screen around it to keep the light out. 

But it works. You can see to focus and compose your picture and I've loaded the camera up with film and taken a few shots. Everything is delightfully primitive and I'm looking forward to taking the film in and having the pictures processed. 

The Curious Incident of the Dog in the Nighttime

The Curious Incident of the Dog in the Nighttime is an amazing book. I read it a little while back. And now it is an even more amazing play. We got to see it today and it was one of the best pieces of theatre that I've ever seen in my life. 

The play is on tour around the UK at the moment, we got to see one of the final performance in Hull this afternoon. The theatre was packed, and quite right too. 

If you want proper drama, brilliantly staged, massively original and with characters you really care about, then you must, must go if you get the chance. 

Making a Camera

I got a Konstructor camera for Christmas. It reminds me very much of the first camera I ever had, which was made of plastic, had a plastic lens and took photographs which were almost recognisable as the thing it had been pointed at. From the samples online this one has performance quite a bit better than that. But I'm not really looking for quality images here. I'm looking for interesting ones. And I think I'll get those. 

The camera  also reminds me of the Airfix models that I used to carefully construct when I was a kid,  bearing in mind it comes as a kit. I've just spent a very happy evening attaching Part A12 to P11 and whatnot, and with a bit of luck I'll have it finished tomorrow. It actually uses real, proper, 35mm film too. I've got a bunch of cassettes and over the weekend I plan to take some shots and get them developed. I used to love getting my pictures back from the labs and seeing how they come out, now I'll be able to do that again. 

Paddington the Movie

Go see Paddington. You'll enjoy it. It's a rather slight tale, but very well told. It's from the producers of the Harry Potter films. You can tell this because they seem to have employed a large number of British actors who have all worked with the young wizard. 

I wasn't exactly dragged along to the showing. I've always quite liked Paddington. We had one or two of the books by Michael Bond floating around the house as I was growing up and the TV series voiced by Michael Hordern was always good fun. But I was a bit worried about what they might have done with the story when they made it into a film. 

I needn't have been concerned. It is very well done, with some lovely set pieces and running gags. One musical joke is direct steal from "There's Something About Mary", but since they stole it from "Blazing Saddles" that's fair enough. And it was still funny.

If you are like me and want to walk out of the cinema feeling happy, then you should go along. There's enough knowing, and silly, humour to keep grown ups occupied and plenty of slapstick for the kids (and grown ups like me).

I don't go to the pictures to get depressing insights into the human condition, or to learn of the terrible things that people do to each other. I can get all that from five minutes of the news. I go the the cinema for a good time. And you get that from Paddington.

Mistreating a Surface Pro 3

My Surface Pro is really coming into its own now. Folks I know who have purchased new ones recently seem to have a very high opinion of them. None of them are complaining of the issues that I had a while back. Perhaps recent firmware updates have sorted out the problems I was having with suspend and resume. 

So for the last few days I've tried something new with my poor device. I've been treating it abominably.  Up until now I've been very careful about starting up and shutting down and docking and undocking. But recently I've given up on that. I've been snapping the machine in and out of the dock and just closing it when I'm done and opening it up again when I want to work.

It seems to work really well. In fact last night I went a bit too far and undocked the machine while Adobe Lightroom was still running and connected to an external drive. That caused Lightroom a few problems as its universe collapsed around it, but the Surface took it all in its stride. 

The one major difference in my approach is that I'm very careful not to interrupt the machine when it is sorting itself out on startup. Previously I'd press the power button, not see anything happen and then press and prod other buttons. I'd also probably press the power button and close the cover and generally do things that confused things. 

I'm much more careful now. If I want it to shut down I just close the cover. When I open the machine I check by touching the Windows button to see if the Surface is trying to wake up. I get a buzz from the haptic feedback motor in the machine if it is doing something and so I just wait for things to appear, which they have done so far.

I hope this post doesn't jinx things, because at the moment the machine is completely living up to the promise it had when I bought it.  

Getting Started with LittleBits

I'm turning into a bit of a fan of littleBits. They are a bit like Lego, but for electronics. They are rather hard to get hold of in the UK at the moment but I reckon they are worth the effort. Each of the "bits" has magnetic couplings on it that let you snap it to other bits and pass electrical signals around between them. It is intentionally very simple and works very well. 

LittleBits started off making simple circuits which have lights and dials and stuff, but based on the success of those kits they've branched out to make lots of other devices.

While I was in the 'states last year I picked up a Korg synthesizer kit. This is awesome. It lets you make the most amazing sounds.  I'm sure there are computer programs you can use to make these kinds of noises, but for me there's nothing like wiring things together and making sounds with them "the hard way". If I was making a space shooter game I'd definitely be using this kit to do all the sound effects. There are even people on the web who have recorded musical pieces using this simple hardware. And some of them are very good. 

Because each of the bits is compatible with all the others you can plug the sound generation components together with other sensors in the kits and make things like touch controlled musical instruments.

I've been playing with the bits for a while now (I've even got them talking to Windows Phone). In the next few weeks I'll be putting out some posts that tell you how.

Failing Properly

There's nothing like writing a program to get you thinking about how to do things properly. My Magic Marker program is one such example. Turns it it is possible to use it incorrectly. If a file is open when you try to save it (because you've got the spreadsheet open in Excel for example) the save is doomed to fail. Above is the message that you see if you try to save in this situation.

private bool saveEverything()
       // write the file

    catch (Exception e)
        System.Windows.MessageBox.Show("File error: " + e.Message,
            "Magic Marker");
        return false;

    return true;

This the code that makes it happen. It catches files exception and displays it. It then returns false to indicate that the save has failed.

I've also written the program so that it automatically saves the data when you exit it, which seems sensible. It's what most people will expect to happen these days. But if the save fails when you exit you get this message:

This is the best (i.e. least worst) way I can come up with for dealing with this problem. At least it gives the user the chance to go back and fix the problem (for example they might not have entered a valid mark value which is stopping the save from working).

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
    if (!saveEverything())
        if (System.Windows.MessageBox.Show(
        "The file save has failed. Do you really want to exit?", "Magic Marker",
         MessageBoxButton.YesNo) != MessageBoxResult.Yes)
            e.Cancel = true;


Here's the code that makes it happen. This is the event handler for the WindowClosing event for the application page. It tries to save everything and then, if the save fails, gives the user the option to cancel the exit. I've tried to make the answer options (yes or no) directly match the question. 

The only thing I'm not completely happy with is that it is possible for a programmer to use my saveEverything method and ignore the situation where the method doesn't work properly (you don't have to use the result of a method call).

Ideally saveEverything should rethrow the exception or not catch it and rely on the caller to deal with the problem. However, in this case I'm happy to keep things comparatively simple. 

Spell Checking in XAML applications

When I was writing my Magic Marker application I wanted to make my notes input box spell checked. Turns out that this is really, really easy. This is the XAML for the notes texbox. 

<TextBox Name="NotesTextBox" Width="500" Height="315" AcceptsReturn="True" ScrollViewer.CanContentScroll="True" TextWrapping="Wrap" SpellCheck.IsEnabled="True"></TextBox>

I just had to add the one extra property (that I've highlighted above) and it works a treat.