DDD 14 at Reading

Thanks for being a great audience folks

I’ve not been to Microsoft Thames Valley Park for a while. It was very nice to be back there for the day at the Developer, Developer, Developer (DDD) conference. It was awesome. Four tracks of excellent content. I was talking about Air Quality and top hats and whatnot. I had a fantastic audience all my demos worked. (Note to self: stop sounding surprised when this happens). If you want the slide and the sample programs you can find them here.

These events are always amazing and kudos to Microsoft, the Black Marble Team and all the speakers. There was also a splendid set of lunchtime talks. The next DDD will be DDD North which will be back in Hull on Feb. 29th 2020. Make a note of the date now folks. I have.

Making a Useful SatNav

I’ve been moaning about SatNav software for years. It is getting better though. My latest car displays a map that contains 3D renderings of the car parks I’m failing to find a way into. Very useful. Of course it also has a habit of getting the lane guidance wrong, which makes for amusing antics at roundabouts every now and then, but I guess nothing is perfect.

One thing that struck me as I was threading my way through the rain-soaked streets in Reading tonight was how the navigation software proudly displays the names of the streets I’m supposed to turn into. I think this is a bit of a waste of time. Only a local would actually know the street names, and they probably wouldn’t need to use a SatNav. And as for using the street names to confirm your navigation, that’s a bit of a non starter bearing in mind how hard these things are to find and read. What I really wanted was useful directions like “Turn left in front of the pub” or better yet “Follow that blue Prius”.

Actually, having thought about it, “Follow that blue Prius” is just about doable. I sat in a Tesla that could discern the vehicles in the traffic around me and finding their make and colour wouldn’t be too tricky. Link that up to the SatNav and off you go. Hmmm. Perhaps I should patent this.

Then again, once we have cars which are that clever I guess we might just get them to do all the driving and navigation themselves.

Fixing broken Windows Services for Linux

Last week I upgraded to the latest version of Windows 10. And I rather like it. That’s the good news. The bad news is that the upgrade seemed to break my lovely Windows Services for Linux installation. When I tried to open my Ubuntu command prompt it just closed instantly. No error, no nothing. Wah. A bit of searching didn’t help, since most of the fixes were to an almost working system and mine was anything but.

After a bit of heart searching I deleted the application and re-installed it. This was rather annoying. I didn’t have any important data in the installation, but it took me a while to configure the machine with all the services I wanted. Fortunately, thanks to my habit of writing a diary when I do something like configure a computer I can retrace my steps to set everything up again, but it’s still a pain to have to do it.

Of course, the really bad news is that the reinstalled machine didn’t work either. But at least this one gave me an error code I could search for. Turns out that the fix was to turn it off and on again - in this case turn the Windows Service for Linux feature off and then back on again.

I wish I’d tried it before I deleted my original service, but at least I’m back running again.

Update: I’ve since tried WSL on other machines that have been upgraded and they all work fine. So it must be something about my particular machine.

Using the Postman to fetch data from a Swagger Site

We’re using The Things Network to get data from our PAX (passenger) counters. We have Things Network application that receives Lora messages from our counters and we’ve added a data storage integration to hold the data from the counters. We’re not doing much with the data at the moment, but today I thought I’d try and get it out of the Things Network data store sot that I could play with it.

I was thinking that I might have to write a little application to make the request that fetches the data but it turns out that it is actually very easy to use The Postman to fetch the data for me. The Postman is a program that posts web requests and gets the result back for you. It’s great for testing and also for performing quick web requests when you can’t be bothered to write a program to do it. Which is what I’m doing.

If you ever need to do this too it’s actually quite easy. Just open up the integration from your application on the Things Network as shown above. Press the Authorize button in the top right and copy the application key from the application into the dialog that appears so that you can authenticate requests to the Swagger api. Then find the query that you want to run. Iin this case it is the query one you can see on the screenshot above.

Now scroll down to reveal more of the query settings. I’ve set the parameter to get the last 7 days of data. The Things Network only hold the data for 7 days, so this will fetch all of the data. If you hit the “Try it out” button the query runs and you will see the data appear in the browser. That’s fine, but it is very hard to do much with the data in a web page like this.

To use Postman you just have to copy some of the elements from the sample curl query generated by the web page into a new Postman GET behaviour. As you can see below I’ve set the url for the GET request to the Request URL above and added two header values to the request. These give the output format and the authorisation key.

When you click the Send button the request is sent and you can then save the response in a file. You can save the query for later use. Postman and swagger are a couple of technologies that it is worth learning a bit about.

Super secure wallet

A while back I went into a clothes shop and bought something that fitted me perfectly. It was a wallet. It was half price, but since my old wallet had reached the point where my money might start escaping of its own accord, I thought it was a bargain.

It was sold as super secure because it uses special material to stop radio signals getting at the cards inside it. The idea is to stop sneaky people tapping into your bank balance by the use of portable contact-less card readers.

It works too. Last week I was trying to open en electronic lock and it didn’t work. I usually just wave my wallet at the door and it opens, but with the card in my super secure new wallet this failed to work.

I’m now pondering on whether super security is worth a loss of convenience….

Stupid Train Tickets

Every now and then I do something that I (but probably nobody else) think is rather clever. Like using both cores of an ESP32 so that a display keeps running when the WiFi is used to updated it.

And every now and then I do something that everybody thinks is rather stupid. Like last week. A while back I subscribed to an alert to tell me about the release of cheap train tickets. I wanted to get a day trip to London which would cost less than a flight abroad.

So today when I woke up and checked my phone I was pleased to see an alert that I could order some tickets at a massive discount. Mindful of the fact that lots of other people had received this message and there would only be a few seats as these prices I booked my trip and paid for it in double quick time. Clever me.

However, any feeling of smugness evaporated when I discovered that rather than buying day returns from Hull to London I had in fact booked day returns from London to Hull. Idiot me. I put my mistake down to the early hour and undue haste. The tickets are non refundable, and must be used with an, ahem, senior railcard, However, if you are old, live in London and have a desire to spend a day in Hull then it is just possible that I could sort you out.

iPod Classic Blast from the Past

I got out my old iPod Classic today. It still works, and it is still only half full.

And it is the only way that I can listen to some of my music. For example, take the album “Futurenow” from Go West. Good stuff. I bought it ages ago.

Unfortunately I didn’t actually “buy” it though. I got it from Apple iTunes, loaded a copy onto my iPod and got on with my life.

And then, for some reason, the licencing arrangements seem to have changed. Although Apple Music thinks I’ve got the album it presently only provides access to two tracks. Very annoying.

I can probably do a music match thing to add the missing music to my collection, but to do that I need to have the original files. And they are presently on my iPod and nowhere else. Very annoying. I’ve been looking at sneaky software that can pull the music files off an iPod, but so far I’ve not found anything that is guaranteed to work. Oh well.

Fixing browser problems after Windows 10 Upgrade

I finally got the latest Windows 10 feature update on my PC today. I like it. The improvements to the downloads folder are worth the price of admission alone. You now get to see your more recent downloads (the one that you actually care about) instantly, rather than having to wait for the folder contents to laboriously update.

The only problem for me was that the upgrade broke my browser, which started complaining about network problems. I did a bit of searching and in the end I fixed this by turning off the “Automatically detect settings” option in the Proxy configuration above, which you can find in the Network Settings for your machine.

Top Five Finish in the Humber Care Tech Challenge

This was our work area. Keith is posing with a rather nice multimeter. We had the camera in the middle of the table and cupboard (full of sweets), kettle (borrowed jug) and sink (we had everything but the kitchen sink it turned out). The tracking could tell which of the locations you were standing at, and also when you were moving. You can see a horrible, but mercifully short, video of it mostly working here. When the outline flashes white it means that the person has been detected at a location.

Once we had something working it was time to make a presentation in the event that we made “top five” and had to present to the finalist judges. We put together a quick bit of PowerPoint and then dropped it onto my elderly (but still working fine) Surface Pro 3 ready for use.

Turns out we were picked first to present, which was great fun. We didn’t win though, which is not surprising when we saw what the other four teams had been doing. Some lovely presentations, some great ideas and huge chunks of enthusiasm. The winner has a fantastic solution to the issue of “sunsetting”. The great thing about the solution is that the path to deployment is well established and so I’m really looking forward to seeing it go out there. If you’re interested in my horrible code and presentation you can find them on GitHub here. I’m going to have a go at replicating the behaviour using an ESP32 camera.

I’ve put some pictures on Flickr here. They include the all important “firework” shot of the winners getting their richly deserved prize:

Huge thanks to the team for organising another excellent event.

Day 1 of the Humber Care Tech Challenge

..the tech challenge spaceship is landing…

The Humber Care Tech challenge is becoming a highlight of the year for me. I hope they have one next year. The idea is simple enough: Take a problem faced by healthcare professionals and then turn a bunch of techy folks loose to make things better. This year the theme is patients with Alzheimer and related conditions.

The scope of the problem was nicely illustrated by the range of ideas that have emerged. There are 14 teams here today working away and all of them are working on different aspects of the condition, from creating apps to help carers, to helping with shopping, to building reminiscence systems.

Keith and I are working on a system that tries to track the user performing simple processes. The one we’ve chosen is making a cup of tea. We’ve boiled this down (see what I did there?) to movement between a number of fixed kitchen locations (kettle, sink, cupboard etc) and our application will profile the activity in terms of movement between those locations. Once we have observed sufficient repeats of the activity we can detect changes and also detect when someone is having a bad day.

We are starting with my awesome OpenMV camera with a view to migrating to the ultra-cheap ESP32 Webcams and maybe even a thermal camera.

The Open MV environment is wonderful. I’ve not done much image processing before and this is a perfect way to get started. You write the code in Python and then push it into the camera which then runs it. The library is comprehensive and very easy to use. And it runs really quickly.

I’m trying to keep the algorithm silly simple so that it can be made to run on very constrained devices. Essentially I’m using the camera as a glorified PIR sensor. I’m not very proud of the code that I’ve written, but I’m rather proud of the fact that it seems to work.