Final Year Project Interim Demonstrations

The department is trying something new this year. Each of our Final Year project students is being asked to give an interim demonstration of their project to their second supervisor at around the project mid-point. The students see a lot of their first supervisor, but they don't usually see the second supervisor until later in the project, when they are involved in the final viva and the assessment.

This year I'm getting to see all the projects for which I'm second supervisor. I wasn't convinced at the start, what with the nightmare of fitting a whole new bunch of meetings into an already crowded diary, but I must admit it has been really useful. I've seen some really great work, and some that could be made great by a strong focus on the important elements.

When considering things like this I'm much more impressed by an "end to end" demonstration of a working system with "n" features than a half-way demonstration of a system with "n*2" features. If you are making a game, it should be playable all the way to the end, with a high score table and a chance to play again. If you are making a product you should be able to  run through an entire scenario of whatever transactional behaviours the product provides. If you are performing research you should have the theory, the things you are going to do to prove/disprove the theory and some outcomes to look at which drive the conclusions. And it is worth trimming the scope so that you can achieve this.  

Writers have this thing where they talk about "killing your favourite children" which means that they have to discard a great piece of text out because it doesn't actually add anything to the work. The text might be funny, or poignant or interesting - but if it doesn't fit the context it has to go.

During the meetings we were encouraging students to take a look at their projects and do something similar. This isn't to say that they should not get credit for work that doesn't end up in the finished deliverable. My advice is to write these up in the report and then document the process by which you decide to leave them out in order to focus on the core of the work. In fact, I reckon that getting a handle on your project and dropping features that will make you fail is actually strong evidence of real professional ability. And in real life you can always save these for version 2.0 anyway. 

Rob != Winner

Well, my suspicions were correct. Three minutes of unfocussed content does not a Famelab winner make. Even if you add a gadget.

I got the email today saying that I've not made the top six. I'm actually quite relieved about this. From what I saw of the entrants we have some proper science folks who are keen on presenting the subject that they are passionate about. The local final is in Hull soon. You can find out more here, and I'd advise you to go along if you can.

Ruined by Alvin and Dexter

Alvin and Dexter are an add on for the wonderful Ticket to Ride board game.  

You can use them with any version of the game. They are a thwarty type thing you can use to stop your opponents from building train lines to particular cities. 

I was kind of excited to see how they work so we had a go with them today.  And they were promptly used by everyone else to stop me from building anything and making sure that I came a really poor last place. (at least, that's what I'm telling myself)

Oh well. There's always next time...

Printing Green Cheese for 100% Students

I've been giving awards for the best performance in First Year labs and exams. Last week I gave awards to the top five or so exam scores. When it came to the practical work I had a bit of a problem, what with ten students getting 100% in the work - which is awesome by the way folks. 

Anyhoo, it means that Una the 3D printer has been busy for a large chunk of today dropping out perfectly formed pieces of green cheese for next Monday's lecture....

Research Rather Useful Seminar

Yesterday, before the excitement of FameLab, we had our first Rather Useful Seminar of the new semester. It was all about research. The thinking behind seminar was that folks don't necessarily understand what research is all about at a university.  So Darryl gave a talk about what you do.  You can find his slides here

Turns out that you can get started during your Final Year project, if you pick a project that is allied to our research efforts. Then you follow a trajectory into postgraduate study, finally emerging with a PhD. The system works, because lots of our PhD graduates are home grown Hull students. 

Darryl did a great talk, but for me the best talk was the one that followed, when one of our PhD students, John,  gave a session about  his research into the effectiveness, or not, of telemedicine technology. For me the absolute best bit was the discussion at the end, where we had all levels of the department, from First Year students all the the way to Readers in the subject discussing the best way to analyse the data and what it really meant. 

We should do more of these. 

Famelab Beckons. Or not.

A not so secret weapon

A not so secret weapon

Today was the day that I made my Three Minute Pitch for fame at FameLab. The idea is that you speak about something scientific for three minutes. No more. No less. No computers, no script. Just you and 180 seconds. 

Of course I cheated.

Turns out that you are allowed props. The night before the talk I put together the little device you can see above. It uses LittleBits devices to create a timer. It uses two rows of lights that increase as the time goes by.The bottom row fills up over the three minute and the top row fills over the last thirty seconds. It was actually quite fun to make. I used the Arduino LittleBit to make it work. I'll post the program later. 

The timer worked out fine, but I don't think I've made it to the final. Everyone else was doing hard core science stuff, you know, origins of the universe and serious stuff like that where I just did my piece about how Computer Science is the bestest ever subject.  I think if I want to make it in this field I need to come up with some slightly more focussed content. 

Anyhoo, the great thing for me was to see lots of enthusiastic people talking science in front of an appreciative audience. Great stuff. 

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 = "")
{
    Console.WriteLine(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()
{
    Demo();
}

- 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
{
    get
    {
        return aProperty;
    }
    set
    {
        Demo();
        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:

[CallerFilePath]
[CallerLineNumber]

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.