In search of "A Map of the Floating City"

a map of the floating city.PNG

I was very sorry when I heard that Microsoft were suspending their Groove music  service and migrating everyone to Spotify. The Groove player is a lovely piece of user interface design that makes everything else look a bit rubbish. And the Groove music catalogue seemed to include quite a few records that I really like. 

Take "A Map of the Floating City" from Thomas Dolby for example. Love it. Listened to it a lot on Groove. Not available on Apple Music. Or Spotify. I can't even find anywhere I can buy the digital download. Amazon have the CD. But it's 45 quid.....

It seems that there are a bunch of tracks and artists that I can't play any more because I'm just too far down "the long tail of musical taste". Perhaps I should get my record deck down from the loft......

Comicon 2017

24651341138_d3063d3d85_z.jpg

Ever since happy times spent at the Collectormania events in Milton Keynes many years ago, I've had a hankering for a bit more comic book madness. So today we headed off down the motorway to Comicon 2017 at Birmingham. It was great.

There were lots of people in "cosplay", which I guess is a posh name for "dressing up", but some of the costumes had to be seen to be believed. There were even entire families heading out in character. The atmosphere was great, and I even ran into a bunch of ex- students. At a Comic Book conference? Who'd have thought?

It was great fun, and I'd love to go again next year. There were some really impressive "steam punk" outfits around and I fancy having a go at that.....

Hull Pixelbot 2.0: The future is clear....

37772552964_97a847b1d1_z.jpg

I've spent today working on the 3d printed parts for the latest version of the Hull Pixelbot. I'm now using laser cut perspex for the larger parts, which makes the robot look great and should mean that I can start to make kits of parts available for anybody who wants a Hull Pixelbot of their own....

I was hoping that I could just use all the existing 3d printed parts for the rest of the robot, but it hasn't turned out quite like that. I've changed some sizes, and I've now added a speaker underneath the pixel so that the robots can make some noise. 

37594391505_d58be51065_z.jpg

I've found some tiny speaker units which an Arduino can drive directly. It's not what you'd call HiFi, but it works.  They fit inside the pixel ring on top of the robot, which means that I've not had to increase the size of the robot to add sound. I've also got a mini-breadboard on the front of the robot to make it easier to add your own circuits. 

The design files for the laser cut parts, along with the customised 3d printed elements, will be going on GitHub soon. 

World's Smallest Arduino compatible board at c4di Hardware Group

atomx1.PNG

Did you know that the worlds smallest Arduino compatible device is made in Hull? I didn't until Hayden turned up with one at the hardware group at c4di tonight. He's designed and built a lovely little device. I've played with tiny Arduinos before. They are usually a bit hard to connect to a computer because they lack a proper usb connection and are a bit under-powered when you get them going. 

The device that Hayden has made gives you serious computing power in a device you can hang off any micro-usb cable and program using the standard Arduino SDK. It puts a 48 Mhz  device with 256K of ROM and 32K of RAM onto your fingernail. You can find out more (and buy one for yourself) here. We had it flashing a led, which is probably not really the best use of its power, but it is a start....

It was a great meetup. We had some new folks turn up keen to learn, and some who had brought things to talk about. You can sign up for the next one on Thursday 7th December (and you should) here.

Python output in FreeCAD

37560748832_9ff48a0bb9_z.jpg

This is one of those selfish blog posts I make to remind myself how to do something that I'm bound to forget. 

But, if you're using the FreeCAD designer to run Python programs to design robots (as I am) you might find it useful. If you want to be able to print messages from your program onto the report console in FreeCAD you can the following:

App.Console.PrintMessage('hello from the program\n')

For this to work you have to have the output window options in Preferences set to Redirect internal Python output to the report view, but if you do this works a treat. My design programs can now report on progress, which is nice. 

Incidentally, I've now got a lot of experience creating solid objects from Python code using FreeCAD. If anyone would like me to do a talk on this, let me know and we can sort this out.  

Single Channel Lora

38153290726_273a32593b_z.jpg

I'm learning more about the Lora network. Lora links tiny, low powered, devices to an application. The devices talk to a Lora "gateway". The idea is that any device can talk to any gateway. Lora networks use different radio channels to pass data, and the node can select any data channel to send any particular message. Nodes usually cycle through the available channels.

A "proper" Lora gateway will listen on 8 channels at the same time. However, my tiny (and cheap) |Lora gateway from Dragino only listens on one channel.  This means that under normal circumstances I only receive one message in 8 on my gateway. Which is a bit of a limitation. 

Fortunately for me there is a way you can restrict a node to only using one channel. I found a forum post here which tells you how to do it. This is not something I'd advise anyone to do, because it is not in the spirit of the way that Lora works by spreading messages round different channels. However, I've made a script (called naughty) which does this, and it works fine. 

The really good news for us is that Hull centre is now served by a proper Lora gateway so if I use my Lora nodes in Hull they just work. 

Achievement Unlocked - got a mini SNES

24527757918_f36ecf84a6_k.jpg

Last year Nintendo released a miniature version of a game console with a bunch of built in games. And I failed to get one. This year they did the same thing, only this time the console was the awesome Super Nintendo or SNES. And I failed to get one. 

Until now. While I was in Leeds on Saturday I found one at a much smaller price than I was expecting to have to pay, and today I hooked it up to the TV.

It works a treat. There are 20 very solid games inside the tiny box, the picture quality is very good and it really takes me back. If you can get one, it's well worth tracking down. The only downside that I've noticed is that the device doesn't come with a mains power supply, just a micro usb cable that you have to plug into a supply you already have. I used one that is supposed to power a Raspberry Pi and it worked a treat. There are two controllers in the box, which means that you've got two player action right from the start. 

The SNES was based on a fairly low powered 8 bit processor, but it had a really fancy graphics chip (for the time) which had a magical "mode 7" that allowed it to take a flat texture and draw it with perspective. This was great for game playfields and was used  to good effect for the tracks in Super Mariokart. It's interesting to discover that the games are still very playable today. The handling in Mariokart is beautifully balanced and gives you a real feeling of control. 

If you manage to track one of these down I'd strongly advise you to go for it, whether you remember the games or not.

Star Trek Discovery is really, really good

Star Trek Discovery.PNG

I've liked Star Trek ever since I saw the very first episode on a cranky black and white telly when I was a kid way back in the sixties. For the last few years there's been a "Star Trek" shaped hole in my life that buying the boxed sets hasn't really satisfied. 

I was a bit worried when I heard about the latest incarnation of the franchise, as there were rumours of it being stuck in "development hell" and deadlines for release came and went. 

It turns out they were just working really hard to get things absolutely right. And they have. It is very, very good. A bit darker, with some real moral compromises at its heart, but brilliantly produced and acted, with some cracking story lines.  The first few episodes are mostly OK, with a bunch of Klingon subtitles I could well do without, but by episode 4 it really gets into its stride.

In the UK it's on Netflix, but in the 'states I you have to sign up to a particular CBS streaming service to get to see it. I'm not sure why I'm telling folks this, as if you're into Star Trek you've probably already watched a few episodes and drawn your own conclusions, but if you're late to the party then it's well worth seeking out and seeing. 

Students at c4di

c4distudents.jpg

On Wednesday this week we had a bunch of 30 Computer Science students from the University of Hull drop round to have a look at c4di. It was rather nice to see a few familiar faces and to chat about this and that. I was showing off my Pixelbots and one visitor made a rather interesting observation along the lines of "They've not come along much since last year". This is true, mainly because of Begin to Code with Python, which has sucked all the time out of my life for the last few months. 

But, I'm back playing with other things again now, and so expect the Pixelbot pace to pick up in the next few weeks. We've got another "Build a Robot in a Day" planned for December and the laser cut designs are coming along. There are also a few interesting options if we start putting Lora devices on robots. 

It was great see the level of interest that the students were showing. And I think they were rather impressed by the building and the surroundings. What I really want is some form of "Hull based" trajectory for graduates who love the city (who wouldn't) and want to stay in Hull to build a career. I reckon the c4di could play a big part in this.

Quite a few people wanted to find out more about the hardware group. If you fancy coming along you can find out more here

Writing DXF files from Python

pixelbotDXF.PNG

I spent a bit of today creating design files for the latest version of the Hull Pixelbot. This version is going to be laser cut from perspex. This should make it much easier to produce large numbers of robots. Of course I'm not using a CAD package to produce the designs. It's a matter of personal pride that the Hull Pixelbot is entirely a software creation, and the designs are actually built by a Python program. 

The 3D printable version of the designs is created by a program running inside the FreeCad drawing program, but for the laser cut version I'm trying something different. I've discovered the ezdxf library that enables you to create dxf files (the ones that can be used to tell the laser cutter what to cut) directly from Python. 

So, after a bit of fiddling around I've got the start of the designs for the top and bottom of the robot.

Properly Broken Device

26432885109_c06215d956_z (1).jpg

Last week I wrote about "The Broken Device Dilemma", when something you hardly use breaks. Do you try and fix it, or do you throw it away? Of course, if you're me you try and fix it. It's all about the journey. Right?

Anyhoo, my lovely little Sony audio player failed. The battery refused to accept any charge.  It was as if the cable was broken. Of course, being Sony, it's a special cable, not a standard usb one. The good news is that replacements are very cheap, so I got one. 

It didn't work. 

However, playing with the device left me thinking that the battery was broken. This happens with Lithium Ion batteries. So, it was onto eBay to source a battery. I managed to find one, ordered it and it arrived today. Fitting it was great fun. Number one son found the service manual and I had a happy half hour this evening undoing sticky fixers and soldering the replacement battery in. 

It worked. Yay!

The player woke up and played some music at me. Great stuff. But it did seem to get very warm. And then the WiFi stopped working. And then the battery failed. And now it behaves just like it did at the start of this story. Oh well. It looks like something in the player has failed and is taking so much power that that the charging circuit can't keep up. So I think it is properly broken. 

Oh well. Now I have to ask myself the question "If a device you hardly use breaks, to you replace it?....."

Frogman

frogman.PNG

Last wee we went to see "Frogman" by Curious Directive. It's an intriguing story told by a combination of theatre and virtual reality. We really wanted to see what the VR stuff looked like, and how it was slotted into the narrative. So off we went.

The answer is that the VR looks pretty good and adds a lot to the experience. The production cleverly avoids the audience having to spend great chunks of time wearing the headsets, and manages the transitions between scenes very well. The one actor in the show does an astonishing job. Tessa Parr plays the part of a scientist studying the Great Barrier Reef who's past comes back to haunt her. And she does it really well.   

I think that one measure of a good story is the amount of discussion it generates on "what was really going on". On that score I reckon that Frogman is a great story. If you get the chance you should go and see this. Absolutely. 

Things Network Frame Counter

Frame Counter Checks.PNG

I'm getting the hang of Lora networks. And by that I mean "Spending quite a lot of time figuring out why things don't work when they really should".

Today I found out about Frame Counter Checks. Each Lora packet contains a frame counter value. This is set by the node when the packet is sent into the network. The Things Network likes it if the frame counters in packets always get bigger. This makes it slightly more difficult for someone to spoof messages into the network. 

Trouble is, if you're using a very simple node you'll find that the frame counter is reset to zero by the software each time you start the device. Which means that The Things Network will reject packets from the device until it seems a frame counter bigger than the one it's seen so far. 

Unless you know this, you'll spend ages trying to figure out why something that worked yesterday has suddenly failed. 

There's an option for the device settings for your application in the Things Network which turns off Frame Counter checks, which you can see above.

In a proper application you'd either save the frame counter in eeprom each time you've used it, or do something clever with the date and time to generate a frame counter value which is always bigger than the last one. 

Fireworks

38209502171_09bc64b108_z.jpg

We don't usually have fireworks on November the fifth. But this year we did. In the old days we used to buy a box of "Standard" fireworks that contained one dud (which varied from year to year) and a taper thing to light the fireworks that you couldn't actually get lit yourself. The family would spend forty five minutes standing in the garden freezing to death while I tried to light the blue touch paper on a succession of cardboard tubes that I'd stuck in the lawn. Sometimes it would rain.

All the fireworks had different names like "Golden fountain", or "Emerald Shower" but when one eventually lit we'd just just get a shower of sparks followed by nothing. Things were slightly enlivened if the Catherine wheel set fire to fence. And we'd force the kids to hold sparklers which would also fail to light.

26432885899_8b24d32047_z.jpg

Anyhoo, today we didn't do any of that. Instead we bought three little boxes that each contained a bunch of fireworks that were wired together using some cunning fuse technology. We just lit one corner which fizzed merrily and then the box generated a ten second display of quite impressive proportions. I even managed to get some pictures. 

The whole thing was over in about ten minutes and we retired to the warm indoors and had hotdogs. 

Three Thing Game Fun

TTG2017.PNG

These are the winners of Three Thing Game November 2017. If you study the picture carefully you'll notice that not one of the people in the picture is me. Oh well.

But quite a few of these folks are First Year students from Hull, which bodes very well for the future of Three Thing Game (and game development in general). They made a lovely sequence of mini-games that chronicled important milestones in the development of Hull. It looked fun to play and had some splendid graphical touches. 

As always, I really enjoyed taking part. My team, as frequently happens,  was probably a bit more ambitious than we should have been, trying to create a networked multi-player game in around six hours. However, we got darned close.

The three things we were asked to base the game around were "Hull", "Culture" and "Change". Our game used the medium of Venn Diagrams (which were invented by John Venn, a mathematician from Hull) to explore Hull Culture. I'm most proud of the moment when the judges asked "Where's the change in your game?" and I replied "It costs fifteen pence to play". 

After that, the discovery that we hadn't won was a real surprise.....

Three Thing Game. Like Old Times

Staying up late. Writing programs to impossible deadlines. Such fun. 

I'm back at Three Thing Game as part of the Spooky Elephant Collective. The organisation is great and the pizza delicious. I managed to stay sentient until around 11:00 pm, which is actually quite impressive for me. The game that we are making celebrates the great things about Hull through the medium of Venn Diagrams. 

Wish us luck. 

Begin to Code with Python goes to print today

I spent a big chunk of yesterday going through the final drafts of "Begin to Code with Python". And today the files will be going off to the printers.

I started work on the book in March, and we now have a 630 page book with over 170 example programs. Thanks to everyone at Pearson and Microsoft Press for letting me write it and being so helpful during the process..

The book will be in the shops at the start of December. The perfect Christmas present.