2011 End of May Bash
/We are holding our Summer Bash a little earlier this year. But the fun and games will be just the same. We'll have lots of games, Team Fortress, a Word Search (win a copy of my book) and lots of good stuff. Including Pizza. And cakes. If you want to come along you can get tickets from the Departmental Office from Thursday the 26th for a mere 2 pounds each.
Got a Hash Key!
/One of my golden rules for developers is “Make yourself a nice place to work”. Of course I don’t always apply this to myself. For the last few years I’ve been using keyboards that I bought from the US which don’t have the proper keyboard setup for my machines. I’ve written a whole bunch of stuff on C# development using a keyboard that doesn’t have a proper mapping for the # key. Things are even worse when I use my MacBook, that doesn’t even have a # anywhere – I end up using block copy to get one, even though there is a strange “Picnic site + something or other” combination that you can use.
Anyhoo, I’ve just managed to get hold of a couple of bendy keyboards that actually have a # key on them in the correct place. My one worry now is how I’m going to get used to them.
FYI I prefer the Microsoft Bendy keyboards. These help a lot with things like RSI (at least for me). If you get any kind of wrist ache after a long bout of typing I’d strongly suggest investigating them. One of my big worries is that they might stop making them, which would be annoying. Fortunately that doesn’t seem to be the case at the moment, you can still get the one I like, albeit for a lot more than I paid….
Thwaite Gardens Open Day
/This is right in the middle of Cottingham.
Thwaite Hall is one of the student halls at the university. At the back of Thwaite Hall is a frankly amazing garden (including the lake you can see above) and some greenhouses containing plant collections. This is all managed by the Friends of Thwaite Gardens, who are working to make the gardens more accessible. They are open during the week for anyone to walk around and each year they hold an Open Day. This year’s Open Day was today, so we went down there with a whole bunch of cameras and lenses. And I took a bunch of photos. You can find all of them on Flickr here. Here are some of them.
This is just a small part of the gardens.
Trees
Cactus Greenhouse
Some of these cacti have amazing flowers
Flower
Cactus Flower
Another Flower
Using the bendy lens..
Lord Mayor’s Parade
/Today was the day of the Lord Mayor’s Parade through Hull. I was in town at the time, and had the little camera with me. Unfortunately I also had a enormous suitcase that I’d just bought, which made moving around the crowd a little tricky, but I did manage to take a few shots of the fun and festivities.
This is as the procession went past. Note that there are some people in this picture who are even taller than me.
Only a really skilled photographer can manage to get a traffic light to grow out of the Lord Mayor’s head…
Sponsor Jenny Please
/
I just love this message. You can see it too when you donate.
Number one daughter is taking part in a Three Legged Race today. Since she only has the two legs herself, she has teamed up with Bronwyn and they will be trying to cover three miles on three legs.
The cause is a great one, and she would really appreciate your support, however small the amount. You can give with PayPal, it’s really easy and completely painless.
Using the Texas eZ430 Watch with the .NET Micro Framework
/Some time back I got a Texas Instruments EZ430-Chronos watch. One of my better investments. For only fifty dollars you get an LCD watch which you can program. What’s more, it contains a whole bunch of sensors and can communicate with a host device over a wireless link. Around the same time I got a ChipworkX board from GHI Electronics.
So, one lunch hour I decided to try and make them work together. It turns out to be very easy. The watch has a wireless connector (you can just see the PCB at the top of the picture) that appears as a USB serial port to whatever you plug it into. Since the ChipworkX board has USB hosting and serial port support it was an easy matter to get the two talking. A bit of searching and I found the accelerometer protocol for the watch, and away we went.
If you are interested, I’ve created a Watch class that abstracts the watch behind an object that will fire off events when the watch delivers new accelerometer readings. You can find a sample .NET Micro Framework project here.
08249 Robot Fun and Games
/These are the first ever cohort on our 08249 Electronics and Interfacing module. On the left we have the controller team, on the right we have the robot team. Today they got together to link their two .NET Micro Framework programs together so that the controller could send the robot off to traverse a room and measure the size of it. The packet of cigarettes that you see near the robot is actually a really important part of the setup. This is what they stood the robot on to make sure that it didn’t jump off the desk and run away when they were testing the motor code…
It was very interesting to watch the two teams work together as they developed a communications protocol and then implemented it at each end. By the time they had finished they the two devices passing messages backwards and forwards and actually understanding what was going on.
Great fun. Next we are are going to have around 27 or so students on this module. Time to buy a few more robots methinks.
Making Great Games
/I’ve spent pretty much the entire day marking. I’m now giving grades to everything I see. I’ve been impressed with what our students have been getting up to this year, it always surprises me how many different takes you can get on the same problem. This year we were making Breakout. Many of the games that they made were good enough to go to market. Some have had really poor presentation but fantastic gameplay. Others went the other way, with lovely graphics but nothing worth playing. Some thoughts for game writers:
Get someone else to play. You might spend so much time admiring your scrolly graphics and particle effects that you forget that it has to be fun. Get other folks to play. You know you are on a winner when you find people playing who become better at your game than you are. And won’t let you back onto the machine to work on it.
Embrace serendipity. Some of the games had really strange collision behaviour that I’m sure wasn’t intentional. Their ball careered through bricks in really odd ways. However, this made the gameplay much more interesting than some of the better behaved ones. If this sounds like some folks got more marks for writing imperfect code I must add at this point we weren’t marking gameplay as such, this was strictly a programming exercise. But it did bring home to me that if something strange happens you should investigate what is going on and not always fix it. Sometimes these things make good features.
Give the player control. Some games had fantastic graphics, sound, etc etc but the ball always bounced the same way off the paddle. Boring. Other games had very poor graphics but amazing ball and paddle interaction that really let you aim at things on the screen. Much more fun. Consider what happens at your average game of table tennis in real life. Not much happening graphically, but a fantastic range of shots available from a simple ball and bat combination.
Put the graphics on after the gameplay is sorted. In real life game developers often use empty “placeholder” graphics when building the game. This forces them to think about gameplay first. No amount of graphics will compensate for poor gameplay. So get the gameplay right before anything else, and then use the graphics to add value afterwards.
Enjoy your games. I got the feeling from many of the games that the students had really enjoyed writing them. There were little touches and flourishes that you would only add if you were really having fun writing the code. This is great, and just how it should be.
Another Hull Winner
/Earlier this month Josh won a flashy tablet on the back of his Windows Phone development, and now Stephen has got himself a prize as well. If you don’t win the HTC Steven you might still stand a chance with the Optimus Quest II which will be launching here soon.
The Thank You Economy
/I’m trying a new thing where I read more books. I’ve worked out that a book on Kindle is less than the price of a couple of packets of cigarettes. If I read a book in two days (unlikely) this will still cost me less than a tobacco habit. And it is much less likely to kill me.
So, today on a whim I downloaded a copy of “The Thank You Economy” after I saw it in Joey deVilla’s blog. I’ve started reading it and it is rather interesting. It makes the point that in a world of connected and savvy consumers, who are going to Tweet, Blog and Facebook any bad customer experiences, a business can’t afford to upset folks in the way that it used to. Furthermore, if you give really good customer experiences you are creating a sales force out of the users of your products.
Apple are brilliant at this. I remember being told an awestruck tale of a dropped (and shattered) iPhone which was ‘Just replaced’ in an Apple Store. This is actually very good business sense. The hardware costs Apple very little, they can write the expense off against tax, and if their delighted customer tells ten people the story and a couple of them go Apple rather than Android then it will have paid for itself.
A couple of thoughts though. Some people seem just born to complain. I’ve stood behind examples of this genre in queue the Post Office, and I’m sure you have too. These folks have presumably got Twitter and Facebook accounts, so I wonder how this policy works with them. With a bit of luck the book will cover this a bit later on.
The other thing I was thinking was how we could apply this to my business, that of education. We work hard at Hull to can give students a great experience, but at the end of the day we also have to give some marks out which will not always be well received. One of the biggest mistakes I’ve ever made was to hand out my teacher assessments after I’d given out the results on a course. Some of the students (who had not actually applied themselves very well and done badly as a consequence) took it upon themselves to deliver payback and the comments were so good they got stuck on the staff room wall for all to enjoy.
I’ve not finished the book, but I’m enjoying reading it. Like most good business books it is full of things that make you say “Well Duh!”, but you might not have actually thought of. It is worth a read, and will certainly do you more good than 40 cigarettes.
Practice Your Passwords
/Scott Hanselman (who talks a lot of sense) has been telling people on the internets to make sure they have secure passwords, and different passwords for all their various accounts. This is very sensible, and made me think about my passwords. I find that the problem is that when hit with an “enter new password” dialog my brain turns to mush and I can’t think of anything sensible to use. Actually, my brain turns to mush at other times too, such as when number one wife ask me questions like “What do you think?”, but I digress.
Anyhoo, having pondered the matter I reckon the way to solve this one is that whenever you are doing something mildly unexciting (for example mowing the lawn or vacuuming the lounge) you should use the time think about what might make a good password and practice remembering it. That way, when the prompt comes along you will have something to type in.
24 Hours a Day at the World Trade Centre
/Yesterday lunchtime I popped down to the World Trade Centre in the middle of Hull. They were having an event to mark the start of their “24 Hours a Day Opening”. I was there to show off some technology and be the only one present not wearing a suit. When I arrived the whole place was packed with business folk, as you can see above.
This was my setup, where I was showing off what the Kinect can do when you write your own software for it. (and giving a none too subtle plug for the blog…)
I had a brief chat with Alan Johnston MP about game development, which was nice. I managed to get in the fact that Criterion games (who make titles like Burnout) have just hired four of our students, which counts as all their graduate recruitment for the year. I think he was suitably impressed, which was nice.
I also met up with a number of people who, once I’d told them what Kinect can do, instantly started thinking how they could use it in their business. Great fun.
Why the New Guy Can’t Code
/
There’s an interesting post on Tech Crunch – Why the New Guy Can’t Code. (Found out about it via Alfred’s blog). The Tech Crunch post is bemoaning the fact that companies which are supposed to have well managed recruitment processes are ending up with programmers who can’t actually write programs. This is becoming quite an issue in a world which is short of good developers at the moment.
In the past some companies (notably Microsoft and Google) became famous for asking interview questions like “How would you move Mount Fuji? or Why are manhole covers round?”. Their argument was that they wanted smart people, and questions like this will allow a smart person to shine. A tip: I think that in these situations they are interested in what you do when confronted with the question, not whether your answer is actually correct. If you say “I dunno” when asked how to move a mountain, this won’t go well. If you start making plans involving earth moving equipment and calculating volumes of rock then this might go down a bit better. Me, I’d suggest just changing the road signs, but perhaps this is because I have difficultly taking these questions seriously.
Google have apparently taken this a bit further, and now ask for answers to programming questions like “Write me a binary search”. This sounds more technical, but nobody writes that kind of search any more, and the fact you can trot out an algorithm like this doesn’t necessarily prove a lot.
Anyhoo, according to the blog post the trend now is moving towards making an applicant show off what they have made. In other words, the best way to see if a person can program is to look at a program they have made. Well, duh. In the old days you had this idea of an “apprentice piece” that was made by an apprentice at the end of their training to prove their worth. A cabinet maker would create a small wooden box, etc etc, and then show this off to potential employers.
I’ve just spent four days in the labs getting our first year students to show us what they have made. This is the second time we’ve done this marathon effort, and it was nice to see the improvements. Lots of students who last time failed to deliver all the components, or added extras that weren’t needed or worth extra marks, had really focused on the specification and made darned sure that all the important bits were present. And they got very good marks as a result. The students also had the experience of someone looking at their code and asking them to explain it.
I’ll tell any student who listens that they need to get some code out there in the form of an application or game, and be prepared to talk about it when you get interviewed. And if they don’t bring it up, make sure that you do:
“Any Questions Mr. Miles?”
”Yes – do you want to see this game I’ve written? It’s called Cheese Lander”
(sound of minor chord playing in the background)
In all seriousness, if you want to get ahead (or perhaps anywhere) in this business I think that you really do need to have an “apprentice piece” of your own, that you can show off. It is good to see that those hiring are starting to take a proper level of interest in such things.
If you haven't already, you should read the comments on the original blog post. They are reflect a wide range of viewpoints on this issue. I thought it was pretty much an open and shut case, but the individual opinions and the way they are expressed are worth a look. I've not changed my views on the matter, but I must admit the matter seems a bit more complex than I originally thought.
Friday the 13th Update Fun
/A great way to start Friday 13th. Both of my laptops stuck doing Windows Updates which seem to lock the machine up when it reboots, and then fail, so that when I do a reboot it happens all over again.
Lovely.
Turns out this is a known issue of sorts. If you go here you will find some discussion and things you can try. I managed to fix the problem by only installing one update at a time, rather than all at once, in the order suggested by a post on this thread. If you have this problem make sure that you install KB2534366 after all the rest.
And have a nice Friday the 13th.
Crunchy Teeth
/Yesterday I was eating my breakfast, as you do, when something went “crack” in my mouth. Not a good sound. Turned out that a piece of one of my teeth had broken off. Not good. So I rang my NHS dentist. Fortunately he was able to see me today, and so at around two thirty (which is very appropriate time to do this) I went down to the surgery and opened wide. I was expecting this to be bad in just about every way possible. It was going to be expensive and painful. Perhaps at some point my trousers would fall down too, so that it could also be embarrassing and I would have the full set.
But no. After poking around for a while the dentist, a thoroughly professional chap called Julien, pronounced that the tooth was fundamentally sound, and just needed a filling on top. Which he could do there and then for the sum of just 17 pounds. So I was getting it fixed for less than a price of a Blu-Ray. With no injections. Wonderful.
So I’m now sitting here with a mended tooth and a resolve to be more careful when eating nuts in future.
Marking Time
/Spent the day marking First Year programming work. That’s around 15 different Breakout games and 5 or so banks (I got to do lots of games for some reason). I’m getting pretty good at paddle control, which is nice. We’ll finish tomorrow.
One thing that is impressing me is how much more the students are focusing on the deliverables. Last time we did this we had lots of submissions with bits missing. This time everybody seems to have read the specification and figured out just what they need to do. I think this is a really good development. Programmers are legendary for “drifting” off the original design, and it is nice to see some attention being paid to delivering what the customer needs.
Static on the Radio
/I was doing a C# revision lecture yesterday and I was talking about static class members. I mentioned the fact that every year some students write “Static means that the value of the variable cannot be changed” in the exam, which produces an anguished cry from me and zero marks. I was trying to think of a better way to explain what static really means. And I thought about the radio. If you turn on your am radio and tune it away from a station you will hear static. And that static hiss is always there. It has been there since before radios were invented and it will be there until the universe cools right down. Static class members are a bit like this. They are always there. They exist whether you make an instance of the class or not. Static in this situation doesn’t mean “can’t change” it means “always there”.
We use them in programs when we want a data member that is part of a class but not part of each instance. For example, in a bank we might have loads of accounts, but the minimum amount you can withdraw, the maximum size of the balance we can have and the minimum age for an account holder are all relevant to accounts, but not stored in each account instance. Static works well in this situation.
Don’t Forget Memory of a Goldfish
/David Parker, one of our postgrad students, has made a very nice Windows Phone pelmanism (matching pairs) game for windows phone. You can find it on the Windows Phone Marketplace by looking for “goldfish”.
I think I really ought to create a showcase page for Hull applications that have made it to the device (this would of course include Cheese Lander). If you have created an application or game for WP7 please get in touch and I’ll add you to the list.
WiFi Fun and Games
/The WIFI connection downstairs has been a bit dodgy ever since I “upgraded” it with a device I got for an amazing price (can you tell what is going to happen here?). I’m pretty sure the discount was because someone had bought it, found it didn’t work and taken it back to the shop. It used to connect quickly enough, and then drop the connection at some random point in the future, just often enough to be really annoying. Its in the bin now. I can’t think of anyone I dislike enough to give it to them to use.
Anyhoo, I’ve recently come across these Tenda routers that you can get from eBuyer for the bonkers price of 12.48 pence:
http://www.ebuyer.com/product/169923
They don’t replace the venerable Netgear DSL device that links me to the awesome power of Karoo, but then again I don’t want them to. What I want them for is to spread some WIFI around the house. They are designed to sit on the end of a broadband modem and provide WIFI and four more 10 base T ports. However, by ignoring the modem connection you can use them as WIFI access points. You can also use them to extend and bridge a wireless network if you are happy twiddling with the settings.
I just turned off their DHCP support (so they don’t go around offering network addresses to all and sundry) and set them up as WIFI access points hanging off the wire running around the place. I initially used one as a repeater to extend the coverage, but since that means I end up with a bunch of stations sharing one channel I decided to just make a new network instead. There is a nice little HowTo in amongst the reviews if you are new to this kind of thing.
So far so good, with speed and range nicely improved.