Robots in Hull

There are robots in Hull. Not science fiction ones, hard core car assembling, job doing, working robots. I've got a history with robots. When I worked in Electronic Engineering (it seems ages ago) we had a few proper robots around the place. I even found myself counting the number of degrees of freedom the robots in the city centre have (this is the number of ways they can rotate - the more the better) but, having thought about it, having robots with  lots of degrees of freedom makes sense in Hull.

They are being used as part of an art installation with lights, sound and coordination. It will be on this month as part of the City of Culture celebrations. I really must see them in action.  

Day 2 of the MVP Community Event

Another day of MVP chat at the MVP Community event. Some really interesting talks and some very thought provoking ones too.

I really like meeting up with all these people.

The only downside was that I didn't get to win the Xbox One x competition. If only I'd been a bit quicker with my answer (and actually known what the answer was....)

Thanks to Claire and the other stalwarts who put everything together. 

Winning on Table 6

Click Through for the 360 degree experience of Table 6

Day one of the Microsoft MVP Community event. Great fun. Interesting content on Story Telling and whole bunch of like minded folks. We're at the National Space Centre in Leicester which is a fantastic venue. Tonight we had the event dinner. With a quiz. And I was on the winning table, which was rather nice. More talks tomorrow.

Biggest Hull Devs Meetup Yet

Joe whips the crowd into a frenzy....

Last Wednesday in the month. Time for another Hull Devs. This means free food and drink (including those lovely white chocolate buttons with hundreds and thousands on them) and high quality technical chat. And, the most people I've seen there ever. It was packed. I think there was one seat free. It was the one next to me, which might tell you something about my personal magnetism. But then again maybe not.

I'd taken along my shiny ipad pro and Apple pencil to take notes, and happily scribbled down summaries of the talks. And then, less happily, discovered that the ipad had lost the lot. I'm doing a kind of highly expensive experiment where I try to find out if an ipad can replicate a proper computer. Experience so far is that it can't, except in the function of trashing your work. 

Anyhoo, working from memory, we had two talks. The first was from Dylan Beattie. This was a great discussion on what makes for happy developers (and customers, and workmates). It was pleasing to find that a lot of the stuff I'd been telling students for years (make yourself a nice place to work, think about other people who might have to use your code) was echoed by Dylan, and he had some lovely insights into simple things that can make for happy times.

My favourite was the brilliantly simple "Give things names" suggestion. Rather than describing something as "The new version of the Customer Management App", name it after something, be it a particular "My Little Pony" or a east coast town. This provides an instant reference point for everyone. 

The second talk was from Seb Lambda. This was all about restful services, and how to make them better. It's not a field that I'm particularly familiar with (although I do know a lot more now). The improvements are all about getting clever about how a client fetches information from the server and preloads data. Seb talked about some really interesting ways in which this is being explored in the latest version of ReST 3.0.

If you're in Hull, and you're a developer (or a student becoming a developer) you should go to Hull Devs. The next one is in the new year. Find out more here.  

Python Fans

It was really nice to see some students from Hymers College today. They'd dropped by to talk about Python, which was great. I hope I said some things that you found useful. I did find time to gratuitously plug my new book (see left).

Incidentally, anyone can get the final four chapters of the book as free downloads from here.

These chapters are the ones where you actually deploy what you've learnt in the previous parts.

It makes sense to have them as downloads as you can have the book open while you work on the sample code. 

I hope you find them useful. 

My Car in Gran Turismo

The only Black Friday purchase that I made was that of Gran Turismo for half price. And I only bought it on Sunday. One of the attractions for me was that it offered me a chance to drive my own car in the game. The picture you see above is pretty much identical to my car, it even has the same wheel design.Yesterday I downloaded a free pack of images that allow you to place your car in exotic locations and render pictures. They are awesome. 

They've done some very clever environmental modelling to make the pictures look pretty much photo-realistic. 

You can also grab pictures from race replays. 

Driving the car is quite fun too, although I'm probably going to spend a lot of my time taking pictures of it. 

Hull Pixelbot Scripting Language

About nine months ago I finished off a design for a scripting language for the Hull Pixelbot. The idea was that you could enter programs in clear text and the robot would understand and act on them. You'd not need anything else, and the programs would be compiled and stored inside the robot in an intermediate code. Then "Begin to code with Python" hit me, and everything else stopped as I frantically wrote chapters. 

Well, on Friday I decided to dust off the script design and actually start to build the language. I'm nearly finished. I had a problem when I ran out of memory (I've only got 32K of program space and 2K of memory) but I found that in one part of the program I'd used the sprintf function (which is huge). I've deleted that, freed up a few K of code space and it very nearly works. I've just got to drop in the while loops and I'll have the complete language running. There's nothing quite like designing your own language and then making it work on a tiny device. 

File Comparison in Visual Studio

Today I found out something that I didn't know that Visual Studio could do. It can perform file comparison. This is really useful if you've made a tiny change to a file for a very good reason at the time, but have completely forgotten where the change is, or why you made it. I never do this kind of thing myself you understand, but I've heard that some programmers make this mistake from time to time. 

There are lots of file comparison tools out there of course, along with quite a few plugins, but it's nice to see that Visual Studio can do it right out of the box. 

The only problem is that that finding the function is a bit tricky. You have to use the Command Window (which you open using CTRL+W, followed by A) or by selecting it from the View menu (take a look in the "Other Windows area if you can't find it). 

Once you've got the command window you can type in the command Tools.Difffiles followed by the names of the two files you want to compare. There is some rather neat auto-completion of filenames which makes it a bit easier to navigate to the files that you want, and I love the idea of being able to type three f's in a row in a meaningful context. 

Anyhoo, the comparison window that you get is rather nice, and it works well. 

The Ring Doorbell and WiFi problems

Some time back I got a Ring doorbell. It's an internet connected door chime that contains a camera and motion sensor. When someone rings your doorbell (or stands on your doorstep if you've turned on the motion sensor) your phone (or your Apple watch) goes ping to alert you. 

The doorbell also contains a speaker and a microphone, so you can have a conversation with the person at your door. And for a small sum you can have videos of all your visitors stored in the cloud for later review. 

It works really well. I knew I was onto a winner when number one wife used it to accept delivery of a rug while we were away in Leeds.

Then today, right in the middle of a conference call, I heard someone hammering on the door. I shot downstairs, retrieved the package and started to wonder why my lovely doorbell hadn't told me there was someone on the doorstep. Both it and the sounder in the house had fallen off the network. 

This illustrates a problem with these lovely, connected appliances. They're as good as their connectivity. Wah. So I started digging. And the solution is a bit disturbing. 

My WiFi router has been set to automatically select the quietest WiFi channel. When I reset it on Monday the router had gone and picked channel 13. 

This was a rather stupid choice as far as the Ring doorbell is concerned, as it only supports channels up to number 11. The result was that the doorbell fell off the network. Unfortunately, because nobody had pressed my doorbell (or, at least nobody I'd heard had pressed my doorbell) I had no way of knowing things were broken.

The doorbell "phones home" once a day, and I guess after a while I'd get a message that something was broken, but until then I'd be missing callers.

The rather important moral to this story is that if you have a connected appliance like this, check, your router settings to make sure that it is using a fixed channel in the range 1-11. If you allow the router to pick a channel in the range 1-13 there is a chance that a bunch of your networked devices might suddenly stop working.

Of course once I'd picked a likely channel I then had to boil a jug of water in the microwave oven to make sure that it didn't interfere with WiFi reception in the kitchen. For me it turns out that channel 4 fails when I'm heating things up, but channel 11 works fine. 

HullDevs event next week

The next Hull Devs event is next week on the Wednesday 29th of November at 6:15 at c4di. They have a couple of interesting speakers; Dylan will be talking about Life, Liberty and the Pursuit of APIness: The Secret to Happy Code and Seb Lambla will be talking about ReST 3.0 - A Lap Around HTTP API's Next Generation

There are free goodies and we always finish up in the pub. I'd suggest that you sign up now. You do it here.

In search of "A Map of the Floating City"

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

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....

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. 

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

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

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.