Rather Useful Research Seminar this Wednesday

The students are back, and with them we have the return of the Rather Useful Seminar series. The first one is on Wednesday 3rd of Feb at 2:15 (usual time) in Lecture Theatre A on the ground floor of the Robert Blackburn building (one of the usual places). 

The subject is "Research at University"; what it is, how to get started and how to create a Final Year Project that lines up with it. Darryl Davis will be talking about the business of research and then we'll have an actual research presentation from one of our PhD students, John Stamford will be talking about his research into Home Telemonitoring. We will be having more research seminars during the semester.

Next week (February 10th) we'll be having a seminar about Cloud Computing with Azure, and how you can get to do this for free.

Open Days are Here Again

A fine audience to start with - apologies to the person on the far right - I need to get a wider angle lens..

A fine audience to start with - apologies to the person on the far right - I need to get a wider angle lens..

Our rounds of open days have started again. So at 1:00 pm prompt I was in position  to give the first intro talk of 2016. A great audience, good fun. Thanks for coming. Hope you found the trip worthwhile.

Prize Pi.

Prize Pi.

We had our usual competition prize draw at the end and gave away a couple of Raspberry Pi kits including a sense hat, keyboard and all the bits and bobs you need to get started. I was very pleased to hear from Sebastian , one of our prize winners, who had got his machine working and even sent me a picture.  

Arduino Fun at Platform Expo

We had some great sessions, this is the presenter setup just after a group had left. 

We had some great sessions, this is the presenter setup just after a group had left. 

I did some sessions for Platform Expo today. I was taking about the joy of making things using the Arduino micro controller. Not a lot of people had heard of this amazing device before they arrived, but they sure had afterwards. I showed off a bunch of silly devices including my wedding lights, the Thingomatic, light panel, balancing robots and even did some programming. All in twenty minutes a session. Six times in a row. 

The audiences were all wonderful. At one point I told everyone that an Arduino board can be bought for two pounds fifty, which is less than a McDonald's burger. And someone called out "Does that include the chips?".  Well played sir, well played.

Arduino Bits and Bobs..

Arduino Bits and Bobs..

I've put some resources on my Arduino pages if you fancy getting started with this amazing device. You can find them here

Games Networking Event

Sandwiches and Networking

Sandwiches and Networking

We had our first ever Games Networking event today. Games studios from up and down the country came up to Hull to talk to our students and discuss the state of the business. It was interesting the way that a composite viewpoint emerged with each successive speaker. These are the main points that were made

  • Good qualifications are nice, but a great portfolio of things you have made is the thing that will really get you places. Particularly if it is packed with stuff you did "just to see what you could do" and shows off lots of different technologies.
  • Networking is key, and Twitter is one of the best ways to make contacts. But don't forget to go out and meet people too.
  • Game studios may come and go, but there is always a market for capable developers. And everybody that spoke was building their business, with the consequent need for new hirings in the future. 

You can find more details of the event and, if you are a Hull student sign up for the next one in February, here.

Oh, and Adam really, really, wants you to sign up for Global GameJam this weekend. 

Work with Tom

Tom in 2013 at a Rather Useful Seminar

Tom in 2013 at a Rather Useful Seminar

Tom Forbes graduated from us a little while back. He did a Rather Useful Seminar about security in 2013 and now works in, wait for it, security at Context Information Security

Tom got in touch asking if we had any graduates with Python experience as they are after someone with that skill set. If you got Python chops (there's a phrase you don't hear every day) or fancy a career in Information Security (a very interesting and fast moving field) then Tom has passed me his contact details: tom.forbes(at-goes-here-please)contextis.co.uk if you want to contact him for more details.

And now I'm going to try and entice Tom back to give another seminar......

Don't Forget to sign up for Global GameJam

Global Game Jam is this weekend. Don't forget to sign up. Unfortunately I'm not sure how much time I'll have to get involved; I'm giving sessions at Platform Expo on Friday and we have a University Admissions Day on Saturday, but I hope to get down to the Horncastle Buildings at Hull College to take a look at what is going on. 

If you are in any way serious about getting into game development you should take part in as many Game jams as you can. They give you things to talk about at interview, intense game development practice and, sometimes, ideas that you can take forward to full blown products. 

And they are huge fun. The signup is only a fiver for the 48 hour event, so if you work out the cost per hour it's tiny. Sign up here

Snaps now has a 2D Game Engine

If  you've not heard much about Snaps (my library that's designed to make it easy to learn to program C# which I'm using in a forthcoming book) then that's because I've been too busy writing the book (and the Snaps) to tell anyone about it. But today I built some Snaps that I'm really quite proud of. I've now got a tiny sprite library and a gamepad which you can use to make 2D games.  I'm going to use it in the chapter where we talk about class hierarchies. 

It's not a particularly fancy engine really. It runs inside a Windows 10 Universal application and uses all the XAML display elements. Having said that, I can get reasonable performance on my machine which has no graphics acceleration and it even runs on a Raspberry Pi. 

For learning to program (and of course for Cheese Lander) it's absolutely perfect. 

Print with a Brim

Three pigs and a crocodile. (sounds like the name of a musical). 

I'm keeping the 3D printer busy printing tiny 3D animals They are all going to fit into a puzzle design that I found on Thingiverse.  I'm going to use different colours, including a rather nice pink that I've got for the pig. 

One thing I'm doing to massively improve my prints is to print with a brim. This is printed as part of the base of the item you're printing. After the print you trim it off. This is known as a brim trim.

Anyhoo, brims make a big difference to quality. They are printed from the outside in, and give your printer plenty of time to sort itself out before the actual model is printed. They also provide a bigger sticking area, greatly reducing the amount of "curl" that you get on the corners of prints when they lift up from the print bed as they cool. 

I use Cura to do my printing and the Brim is one of the platform adhesion options. The other one is Raft, which I don't use much. You can set the size of the Brim too. 

This is what the Brim looks like in print preview. I suppose I'm using a tiny amount more filament than before, but I'm much, much happier with the prints I'm getting.

The Magic of CallerMemberName

Oh my goodness. The things you find when you are searching for something else. While I was looking up some stuff on Model View View Model I came across a C# feature I've not seen before. It's called [CallerMemberName] and it is awesome. It has some  useful siblings too, which I'll get to in a moment. I'm dashing off a quick blog post about it now so that I can tell everyone, and also so I can remind myself how it works in the future.

CallerMemberName lives in the System.Runtime.CompilerServices namespace and it has one simple behaviour. It lets a method know the method or property it was called from. You use it as a parameter to the method, like so:

void Demo([CallerMemberName] string name = "")

The method Demo has a single parameter which is called name. All it does is print the name out. The parameter has a default value of "" and the strange [CallerMemberName] attribute thingy in front of it. When the method runs it prints the contents of  name. So, if we make a call to Demo from within another method - like this:

public void DoSomething()

- the program would print "DoSomething", because that is the name of the method that called Demo. It gets better. I can also do things like this:

private int aProperty = 0;

public int AProperty
        return aProperty;
        aProperty = value;

This time I'm calling Demo from within AProperty. And it prints "AProperty".  So far, so good.  Might be fun for code instrumentation. But why do I like it so much?

Answer, if you've not figured it out already, is that one of the more painful things about creating ViewModel classes for your applications is that when you set a property you have to call a method to tell the system that the value of that particular property has changed. And you have to give the method call the name of the property that has changed. As a string. If you get the name wrong (it has been known) a whole heap of nothing happens and your display is not updated properly. If you've done any MVVM in C# you'll be nodding around now.

If we use [CallerMemberName] we can get the name of the property being updated straight from the property itself, which means that we can make a generic notifier method that works for all the properties in the ViewModel class. No more errors caused by mistyping. There's a nice description of that part here

There are a couple of other "Caller" features you can use that work in exactly the same way, and might be fun to play with:


They are fairly self-explanatory. 

Great fun. 

Careers and Internships Events at Hull

Gaming: 27th January 2016 12:30 pm - 4:30 pm

Development: 24th February 2016 12:30 pm - 4:30 pm

There is still time to register for the two events we are holding this year. The Gaming one is next week  and the Development one runs in around a month or so. 

These events are for students at Hull University who want to find out just what software development is going on and meet up with the folks doing it. If you are a First or Second Year you should be looking for internships and summer placements. If you are a Third or Fourth year you should be talking to people with a view to employment. There is a lot going on in the development space and this is how you can become part of it. Everyone who attends as a conference delegate will get a set of business cards and some other conference goodies. We'll have talks from industry and stands from companies. And maybe some free pens.

Register here by 12:00 on Monday 25th of January to take part. 

Bluetooth Manager for Windows 10 Universal Apps now on Nuget


I've been playing with nuget

It's awesome. 

It is fantastically easy to package up an assembly and make it available for just anyone to use in their applications. It is beautifully integrated into Visual Studio and I reckon it is actually easier to download a package from the other side of the world and make it part of your solution than it is to add one that you have written yourself on your own machine. 

To practice I've packaged up my Bluetooth Manager library. This is a little wrapper class that makes it really easy to use Bluetooth on Windows 10 applications. I've not tried it on Windows 10 on Raspberry Pi (but I've tried it on lots of other systems and it works fine). You can find out a bit more about it here.  I use it so that I can print message on my little home made Bluetooth printer, but you can use it anywhere you want to talk over a Bluetooth serial connection. 

Oh, and in case you are wondering why it is version 1.0.1 and not version 1.0.0 I found an interesting quirk in nuget. If your library class doesn't have a public constructor the package will fail to work because Visual Studio will complain that the class is "Inaccessible due to its protection level.". That's what happens when you try to use version 1.0.0

Sending Money the Scary Way

 Mobile banking is wonderful. The way that you can send money to a distant account by just tapping a button is really nice (once you've done the shenanigans with the card reader thingy and set up the account first of course).

However, I always fret that one wayward digit might result in me sending the plumber's payment to some other lucky person. I wonder what the legal situation is if this happens?

Anyhoo, no worries, and all is paid for. I am now the certified owner of a properly shiny boiler. 

A Couple of Good Books

This is a great book if you like Japanese food, or if you want to find out if you will like Japanese food (you will). There are lots things that are quick and easy to prepare, with some nice looking cakes. Some of the ingredients might take a bit of searching out, but my experiences in Japan make me think it will be worth the effort. 

Space Dumplins
By Craig Thompson

This is a great book if you like well drawn and imaginative comic strips. 

And yes, I've just figured out how to add Amazon links to my blog. Go me.