Thought for the Dazed

I've had to give up that Distance Learning course as I was having trouble seeing the teacher.

RobMiles' items Go to RobMiles' photostream
C# Yellow Book

Search entire site

Selling Your Game with Simon Grey


I think Simon learned a lesson today.He learned not to email me and say “I’ve got some great ideas for the Rather Useful Seminar this afternoon about getting your game to market”. I told him I had an even better idea.

He could do the seminar.

So he did. And it was excellent. We kind of did it between us (in other words Simon said things and I shouted out stuff from the side). We also had John and Josh come by to talk about their experience getting games to market.  They started by publishing games from Three Thing Game and are now planning proper releases, with game companies based down at Platform Studios. Points to ponder:

  • Get something out there. Just do it. Don’t wait for it to be “finished”. Nothing is ever really finished. If you get stuff out there you will get feedback and make your next game even better. The experience of actually getting something approved and in a marketplace is an incredibly valuable one.
  • Set yourself deadlines. Don’t just plan to “Get round to it”. You never will. Tell yourself you are going to ship at the end of November and then do that.
  • Put yourself out there. Like everything else, it is all about networking and who you know. Get yourself business cards. Go to events. Shake hands with folks. Start a blog, get yourself a following and practise your writing styles.
  • There is no such thing as an “Overnight Success”. Minecraft took four years of solid work. Lots of other independent games that came from nowhere actually had a long gestation period and lots of planning behind them. And they were frequently the most recent in a long line of releases that had previously gone nowhere.
  • If something doesn’t work the way you thought it would, see if that makes the gameplay better, and use it if it does. Some games are built on “happy accidents”.
  • Keep doing stuff.

Thanks so much to Simon for putting together such a good presentation at such short notice. You can find the slides here


XNA for Three Thing Game Rather Useful Seminar


What a great audience to get things wrong in front of….

I did the XNA Rather Useful Seminar today. Slightly enlivened by the fact that I finished the slide deck only a few minutes before the lecture itself. Oh well. Everything worked eventually…..

You can find the slides here. You can find the demos here.


A Rather Useful Slice of Raspberry Pi


This is a slightly processed picture of the audience. It seems that quite a few people have a taste for Pi.

We did another Rather Useful Seminar today. It was all about the Raspberry Pi. I covered what is, how you use it, a bit about hardware interfacing from Python and then we had a bit of time to look at my Pi Arcade table, which I’m keeping in the department for now.


This is the table, showing off its Pi credentials. Normally I run Mame on it. You can find out more about how I built it here.

Thanks to a great audience. You can find the slides here.


Printing the Weather Forecast in 3D


We had a good audience for the first Rather Useful Seminar. Some of them were fresh from a first year lecture and must have been feeling a mite peckish. But they stayed to the end and I hope they enjoyed it. The talk was very similar to the one I did last year, but there was a twist at the end, when I printed the weather forecast as a plastic object. Again, I brought along Una the Ultimaker, and again she behaved herself very well.

I’ve become quite intrigued with the idea of generating objects from software, and it occurred to me that with the FreeCad tool having a Python interpreter in it, we should be able to do something interesting. I’d no idea how to use Python to read a weather forecast but fortunately Catalin George Festila has done it here. So I took his methods which use the Yahoo weather feed and prints it out and made a few changes.

def weather_for_zip(zip_code):
    url = wurl % zip_code +'&u=c'
    dom = minidom.parse(urllib.urlopen(url))
    forecasts = []
    for node in dom.getElementsByTagNameNS(wser, 'forecast'):
            'date': node.getAttribute('date'),
            'low': node.getAttribute('low'),
            'high': node.getAttribute('high'),
            'condition': node.getAttribute('text')
    ycondition = dom.getElementsByTagNameNS(wser, 'condition')[0]
    return {
        'current_condition': ycondition.getAttribute('text'),
        'current_temp': ycondition.getAttribute('temp'),
        'forecasts': forecasts ,
        'title': dom.getElementsByTagName('title')[0]

This is the code that he wrote that fetches the weather information from the Yahoo weather service and creates a list of objects that contain a forecast item for five days. The forecast information contains the highest temperature for each day, and that’s what I’m going to use to control the height of each of the columns that I print.

def main():
    # find range of temperatures
    highest = float(a['forecasts'][0]['high'])
    lowest = highest
    for i in range(noOfReadings):
        v = float(a['forecasts'][i]['high'])
        if highest < v:
            highest = v
        if lowest > v:
            lowest = v
    # make some blocks 
    plinthThickness = 3.0  
    blockStartHeight = 5.0
    heightRange = 20.0
    rangeScale = heightRange / (highest - lowest)
    plinth = Part.makeBox(blockWidth*noOfReadings,blockDepth, \
        plinthThickness, Base.Vector(0,0,-plinthThickness))
    for i in range(noOfReadings):
        v = float(a['forecasts'][i]['high'])
        blockHeight = blockStartHeight + rangeScale * (v - lowest)
        block = Part.makeBox(blockWidth,blockDepth, \
            blockHeight, Base.Vector(x,y,0))
        plinth = plinth.fuse(block)
        x = x + blockWidth


The Yahoo zip code for Hull in the UK is UKXX0476. This code fetches the weather forecast data and then finds the largest and smallest temperature values (something which should be familiar to first year students). It then makes a row of five blocks, each of which has a height set by the temperature for that day. I’ve re-written it from the demonstrated code so that the coordinates make a bit more sense. The width and depth values map onto the x and y directions, with height being the z value. The code creates a little plinth and fuses a series of blocks onto the plinth. The length of each block is the temperature for that day.



This is the object that was produced by FreeCad. It represents the temperatures 12, 16,14, 17 and 16 degrees, which is the rather chilly forecast for the next few days. I sliced the design using Cura and then, after a bit of kerfuffle I managed to print out the temperature plot.


The weather forecast. And a tiny owl.
I printed it out really tiny (all of the dimension values above are in mm) but I reckon it came out quite well. I’ve since found a flaw though, in that you can’t tell which way round it is supposed to be read. Of course I could add an arrow or emboss some text to make it easier to use.

I must admit that I can’t see a huge demand for physical manifestations of the weather forecast, but I hope it brought home to folks how easy it is to grab information and turn it into something tangible. There is a lot of scope for random patterns and generating objects from mathematical formulae. And, as you can see above, it is very easy to do. I made an offer that if anyone uses Python to make an interesting object I’d be quite happy to print it out for them.

You can find the slide deck here. At the end Peter was kind enough to show some videos of his printer in action. You can find out all about the “Richmond” 3D printer at his blog here.


Rather Useful Programme Autumn 2013

We are back with a slightly changed logo (it is now orange) and a packed programme of events for this semester.

October 16th

Making Things in 3D

- See a 3D printer in action and find out how you can use Python to make 3D designs from your software

October 23rd

A Byte or Two of Raspberry Pi

- Getting started with Python and your Raspberry Pi

- Making a Raspberry Pi Arcade Coffee Table

October 30th

Creating Gameplay using XNA

- How to get started with the XNA Game Development SDK

- Free sample code and starter kits for anyone taking part in Three Thing Game

November 6th

Getting a Game to Market

- Sensible things to do when you start publishing and selling your games and applications

November 13th

Views from an Angel

- David Clark of Cuba Entertainment talks video game investment and angel investors

November 20th

Correctly Commenting your Code

- Putting the right kind of comments in your code is very important. It gets you good marks and it also improves your code. Find out how from Simon Grey

November 27th

Hacking 101: Information security

- Tom Forbes will be setting up a website and then showing how easy it can be to run penetration attacks against it

December 4th

Blogging for fun and profit

- How to start up a blog, and keep writing it. From keen blogger Rob Miles

All the seminars will take place at 1:15pm on the given Wednesday, in Lecture Theatre D in the Robert Blackburn Building.  Anyone is free to come along.

If you have a burning desire to present on a computing topic Rob Miles would love to hear from you.