In Praise of Older Lenses


I've got myself another camera. Surprise. And I'm definitely going to sell all my old ones to pay for it (now that would be surprise). The bad news is that the lenses for my latest acquisition look to be rather expensive. The good news is that very old lenses for it are a lot cheaper. 

For around ten quid you can get an adapter that lets you fit lenses from yesteryear.  And it turns out that way back in the past they weren't just better at making music. They could make some amazing optics too. I picked up 55 mm Canon prime lens from Ebay that is a fraction of the cost of a modern lens, with image quality which is top notch. The picture above has been heavily tweaked in a way that tends to hide the sharpness of the lens, but take it from me this thing is pin sharp. 

My new/old lens doesn't have any of the new fangled features such as auto-focus or automatic aperture adjustment. But it turns out that I really like that. The camera viewfinder does a thing called "focus peaking" where it outlines the sharp parts of the picture in yellow. And adjusting the aperture manually means that I get to preview the depth of field in the picture and see how well the subject has been isolated from the background. 

It seems that you can get lots of adapters for lenses from way, way, back - even for old Leica lenses from the thirties. If you fancy testing your understanding of photography a bit and you have a camera that supports interchangeable lenses I'd say it was worth having a go with some old glass. 

Printing Tiny Robots

I've not done any 3D printing for a while. Then, earlier this week Peter showed me some things he'd been printing and they looked rather nice. And today on Twitter I saw a link to a tiny articulated bot that looked interesting. I like designs which print all as one. The legs, arms and head are intended to be separate items which stay fitted together because they are made that way. The original model had a print time of four hours, so I scaled it right down to speed things up and get a print time of an hour or so.

I was a bit worried that this would mean that the different pieces would fuse together into a single block but with a bit of careful twisting I managed to free of all the elements and I now have a tiny figure to help me with my breakfast cuppa. 

What makes a Bad Programmer?

I've been spending quite a bit of time with the First Year students this week. They're presently grappling with the "Space Cheese Mining" coursework which is a silly board game loosely based on Snakes and Ladders but with a few twists. And some cheese. 

Anyhoo, I was telling one student that I didn't allow First Years to tell me they were bad programmers. "That's my job" I said. The point I was going for is that one of the problems people have when learning to program is that they lack confidence in the code that they write. Sometimes they worry that they might not have found the "best" solution.

It turns out that some things are just hard to deal with, and require fiddly bits of code no matter how you approach them. So your code ends up looking a mess, and that's just the way it is. Snag is, when you are learning to program you don't necessarily get this, and you might worry that your program looks messy because you can't actually write code. So I always say that I'll be the judge of bad and good code, 'cos I've been writing programs for some time. 

We talked it through a while and then the student asked a really tough question "So, what makes a bad programmer then?" Ugh. Wasn't expecting that one. I didn't really have a ready answer. I muttered about bad coding style, not testing code, etc etc and that was that. 

Having thought about it some more though, I reckon I was wrong. I now think  a bad programmer is someone you don't want to work with.  They might write code that nobody can understand. They might refuse to test their solutions. They might refuse to believe that there is a problem with something they have written. They might not buy their round in the pub. They might get into fights with the customer. And they might enjoy telling you about bugs in your code rather too much.

Technical ability will get you so far in this business, but if you aren't good to work with this is going to hold you back in the long run.

Windows 10 on Raspberry Pi Rather Useful Seminar

We had a Rather Useful Seminar today. I talked about Windows 10 on Raspberry Pi 2. Great fun and all the demos worked. It is rather impressive to be able to flip a switch and swap from PC to Pi deployment, and still have all the Visual Studio loveliness including  breakpoints and full debugging support.You can find the slides here.


Testing Software vs Playing with it

I was giving a Software Engineering lecture this afternoon and the conversation turned to testing. As it frequently does. So I asked everyone what they thought I meant by the word "test". One answer came back "it's what you do to see if it works". 

I don't think that's what I'd call testing. I was casting around for a phrase that fitted the occasion. Finally I came up with "Playing with the code". I wanted to get people thinking that actual testing is a lot more than just running with the program to see if it seems to do what we want. .

Proper testing is planned, repeatable and part of the creation process. And, if possible, automated. Don't make the mistake that the thing you do once it compiles is testing.  It isn't.

Bluetooth Arc Touch Mouse

While I was in Seattle earlier this month I took the opportunity to pick up some mice and keyboards. I got a Bluetooth version of the Arc touch mouse which is really nicely designed . It lies flat and you turn it on by folding it into an arc. Hence the name. It's more comfortable than I expected and it works very well. There's no scroll wheel, but the touch area in its place is a usable replacement. The mouse contains a sounder that "clicks" as you scroll up and down providing good tactile feedback. It's a bit pricey, but it does have a nice premium feel and the way it snaps flat is very pleasing.

Paul Talks Security at a Rather Useful Seminar

I bumped into Paul Orlowski a while back. Apparently I taught him something about computers in the 1980's. Paul was studying electronics at the time, but now he is into security. Proper, full on, big company to government security. Of course I asked him to deliver a Rather Useful Semnar. And today he did. 

It was great. Security is a big thing. A big big thing. And it is going to get bigger. Paul made the point that as a career security is an increasingly interesting (and lucrative) choice for a Computer Science graduate.

Paul also explained that security is all about governance and process. If there's nobody at the right level in an institution to ensure that security policies are are properly enacted, or if systems are built without having security at the heart of the development, then we won't get the secure systems that we need. 

We had a really good turnout and everyone went away with plenty to think about. 

GPUs and Surface Books

So, I was talking to Lilian from Microsoft last week, and explaining how I didn't think I needed to buy a Surface Book device because the only difference between it and my Surface Pro 3 is that it has a Graphical Processor Unit (GPU) in it.  I reckoned I that I had no need for GPU support because I don't play games or do graphical things. She reminded me that lots of programs, including Adobe Lightroom - which I use a lot - make heavy use of GPU hardware to speed things up. 

I tested this theory over the weekend, running Lightroom on my HP Sprout, that has a reasonable GPU in it. Turns out she's right. The GPU makes raw decoding of images much, much, faster. So now I want a Surface Book. The big one. With the GPU.

Thanks for that Lilian. 

Suiting Up Pays off

The "Black Godzilla" team in Three Thing Game made an awesome game. And they turned up at the Finalist Presentations fully suited and booted, and looking really sharp. Like winners in fact. I caught up with one of the team today and he told me that they had decided to dress properly for the event. 

I think this is a great idea. Way back when I was mentoring Imagine Cup Teams I had a habit of nipping down to Asda and picking up sets of matching shirts for the teams that I was looking after. This got a bit expensive when we had four teams in the UK finals one year, but it made a huge difference. For one thing, the students looked like proper teams.

If you're engaged in any kind of team work it is well worth giving some thought to this. It doesn't have to be expensive, just all get the same style T shirt or whatever. And the funny thing is, once you look like a team you start to behave more like a team too.

Three Thing Game Video Links

Awesome competition yesterday. And here are some awesome videos fromthe entries:

Here's a stupid video I made in five minutes detailing my Three Thing Game entry. I did text because talking was too hard. Ignore my awful "comedy". More details below: Team Name: Twich Plays Three Thing Game Team Members: Just me Words: Blank, Minded, Thought Idea: The idea of the game is that you are a newly awoken artificial intelligence with barely any grasp on the world.

Our Spooky Elephant production for the November 2015 Three Thing Game. Our three words were Like, Hate, and Why which we used to create multiplayer networked game of intrigue and manipulation.

I'll be putting these videos on the official Three Thing Game site, so if any other teams have got videos that they want to share, please send them through. 

Three Thing Game Finals

These are the hardy survivors

These are the hardy survivors

By the end of the competition we had around 20 teams that wanted judging. This is about par for the course for the November Three Thing Game, as people discover to their cost what happens if they ignore my "Keep it Simple" advice and end up with not a lot at the end (although I would strongly advise teams to always submit something for judging - you may not win, but you'll get a lot of good feedback and very likely some respect to).

By the end of the judging pass we had the top finalists, and they got to present their games. Here they are in no particular order:


First up was first year team TBC with an astonishingly rich text based adventure game written "because we don't know enough XNA just yet". They'd managed to fashion a compelling narrative from the things "shoe, horn and cream". Very nice work.

Next we had the "Ice Team Cones" who had created "Bereavement Bonanza", a fast paced shoot-em-up where you have to fight for your inheritance, from the things "Inheritance, property and goods". Some nice gameplay twists around what happens when you die (other players get your goods) and "retro-cheese" graphics in this one. 

This is team "Penetration Innovation" with their zombie game created from "dread, dead, grave". It's a bit hard to see the zombie hordes chasing the player around a scary village, but they all use some very clever algorithms to get an effective chasing action. 

Team Baeshaw are a bunch of Three Thing Game old hands, and they brought some lovely polish to the competition with a musical line following game inspired by "Equation, crescent and curve". Players control the waveform type (sine or square) and the amplitude with the aim of following the target line and hitting all the notes. Get it right and the music goes up a gear. Miss a few and the tune reflects your lack of skills. Very nice work, one that should go for sale I reckon. 

This is team "Just One Guy" got the words "hot, cold and bear". He was showing off  a lovely puzzle platformer built with a bear that could heat to steam to fly, wander round as cold and then turn to ice to freeze over the watery barriers. The artwork fitted the theme perfectly and the gameplay was beautifully thought out and with great progression as the various "states of the bear" are used to solve puzzles. 

If there was a prize for the sharpest dressed team in the competition it would have to go to the "Black Godzillas" who still managed to look freshly pressed after a night of development. There game, inspired by the things "Why, are and you" had a fighting knight forced to re-examine his choice for a peace-full life when his quiet village is razed to the ground by invaders. The animation was jaw droppingly good and the storyline intriguing. 

I didn't envy the judges their task when they went out to pick the winners, but they managed somehow to come up with four teams who were announced, as is the fashion, in reverse order.

Team TBC came away with fourth place, the judges praising their story telling and how much content they'd managed to create and fit together in the time they had.

Team Baeshaw were third, being singled out for the polish of their creation and its "just one more go" appeal.

Team "Penetration Innovation" were second. The judges were hugely impressed with their algorithms to give the Zombies a life-like (or should that be death like) behaviour as they hunt down their prey.

Which left "Just One Guy" to pick up the First Place. Judges were full of praise for the way that the artwork and the gameplay complemented the things and the overall thought and design that went into the finished product. A stunning piece of work from just one developer. 

After the main prizes had been given out the judges wanted to specially commend a few teams. Here's Lee (on the left) giving awards to "Twitch Plays TTG", the one man next to Lee and "Spooky Elephant", Warren and David on the right, for their technical innovation in gameplay.

Final award of the night went to team Alex² + 2AlexDan + Dan² who produced something really special with an adherence to theme that was above and beyond the call of Three Thing Game. You have to see the video to find out more. 

Thanks go to Lee and Lilian from Microsoft for their support, to Derek for judging, for the team from BetaJester who not only helped with judging, but also served the pizza, Louis for judging assistance and the 3D viewers given to each team  and Lindsay from Platform Expo for helping to judge and also producing some much appreciated alcoholic prizes for the winning teams.

Three Thing Game will be back in March next year, but keep your eyes open for Global GameJam Hull, coming at the end of January.

I'll post links to the videos later. 

Three Thing Game Overnighter - It Begins

We started the overnight portion of Three Thing Game November 2015 today. We handed out the things and got folks going early in the evening. Lilian from Microsoft came along and told us all about the neat cloudy things available for students from Azure (find out more here) and I did my "Keep it Simple" routine where I advised teams to start with something simple that works and then build on that. We'll see how many follow my advice....

After the briefing, and once the labs had finished, it was time to head for the various computer rooms around the campus and for everyone to get set up. I was very concerned that we wouldn't fit in the department but as it turned out everyone spread themselves around the department rather handily, with four different labs playing host to teams of developers.

I settled down in the Fenner Computer lab and tried to get a few things done, in between ordering pizza and sorting things out. The pizza was a little bit later than I planned, but we did have a lot of pizzas. Three car's worth.

By the time we had fed everybody there were a few pizzas left, but Warren reckoned that by the morning they'd all be gone.

Once food had been had everyone settled down for the night. I'm now much to old to work overnight so around 10:45 or so I gave Lilian a lift back to her hotel (and had some wonderful shenanigans outside Hull Paragon Station where I tried to drive the wrong way a Taxi rank (they didn't like that).  I think I had the look of Uber about me. 

Anyhoo, things look set for some interesting games tomorrow. I took a bunch of pictures of the teams as they got started. You can find them here

Give Things Away

One of the smartest things I ever did was to give away the C# Yellow Book. I've had more interest and traffic from the free downloads than I'd ever have got if I tried to make a profit from the text. 

I was talking to one of the musician folks who will be helping make music and sound effects for Three Thing Game on Friday and I was expounding on this theory. My theory is that people really love free stuff, and that if you make a name for yourself as a provider of good, free, stuff then sooner or later someone will want to hire you for a proper job.

The great thing about being young and creative is that you often have more ideas than you know what to do with. So why not put some of the stuff you make out there for free and see what comes back. If you're a programmer you can get a similar effect by taking part in Open Source Projects.  

Rob at Future Decoded


That's me on the Red Stage. I wonder how it got it's name? Thanks to Edward for the picture. You've not given me permission actually, but you put the shot on the internets and so I reckon it's fair game. And anyway, I think I may have taught you to program a while back and I so I reckon we are probably quits. 

Anyhoo, today saw me up bright and early and heading off to London for Future Decoded. I was giving a "Grok Session", in fact one of the very last ones of the day. I was a bit worried that nobody would come - after all 

That's me at the bottom...

That's me at the bottom...

One thing that amazed me was the number of people who came up to me and told me that I taught them to program many years ago. Fantastic to see them doing well. And quite a few came to my talk, which was lovely.

I was talking about Snaps, my little framework that is designed to help people learn how to program, but turns out to be a neat place to create simple applications. The audience was great, much fun was had and I managed to get to Kings Cross to catch my train back in good time. Thanks to Lee for inviting me.  I took some pictures, as you do...

Robot Bartenders..

Robot Bartenders..

Big Banners

Big Banners

I think their "goodies were well tuned to the audience demographic"

I think their "goodies were well tuned to the audience demographic"

Windows 10 on Raspberry Pi - Snaps secrets of the LogoBlaster

Spent a lot of today working on the presentation for Future Decoded tomorrow. I'm showing off my Snaps framework for creating simple applications. It's almost ready for release. If I hadn't just decided to renumber all the chapters of the book that it is linked too, thereby breaking all the sample code, it would be available now.....

Anyhoo, I dropped Snaps onto a Raspberry Pi (which is really easy to do) and built a bunch of embedded snaps.  I'm going to show how easy it is to use Snaps with embedded code and show of my LogoBlaster device.

This is the code that reads from a pin and changes to the next logo if the pin has been pressed. All that displayNextImage does is fetch the next picture. No need to set up an GPIO, just use the snaps engine methods. I'm really looking forward to the talk tomorrow.