Bryton Rider 450: tips and tricks for use on the bike

I’ve written earlier about tips and tricks for route planning with the Rider 450, so in this post I wanted to cover tips for actually using the unit on the bike. So in no particular order:


  • Fit: out-of-the-box the Rider 450 comes with a standard handlebar mount. It’s cheap and works well enough, but uses up valuable bar space. There are two other options worth considering: a stem mount or out-in-front mount. The former is a bit more efficient on space, but perhaps not quite so good if you are tucked down.

  • Learn the Buttons: it goes without saying, learn how to use the unit.

    • 1. Two Operating Modes: I found it slightly counter intuitive to have two different modes. A “cycling” mode and a “settings” mode which you can switch between. The RightTop is a “start” or “OK” button depending which mode you are in, whilst the RIghtBottom is a “pause/stop” or “Back” button.
    • 2. Zoom/Scroll: the two buttons on the left are for scrolling up and lists, except when you are using the map when they zoom in and out (useful!)
    • 3. Map Modes: the BottomLeft changes between cycling mode screens. There are up to 5 data screens you can set up/switch off (in the app) which support a range of different layouts, followed by a navigating/map screen.
    • 4. Power/Light: the BottomRight is for power and light.
    • 5. Reset: the 450 has frozen twice on me now. To reset you need to hold all four side buttons and then release. It will take the GPS sometime to get satellite lock so be patient.
  • Learn the Icons: there are a number of icons at the top and bottom of the screen. There is an efficient use of space so know that they mean as they are useful. For example, the arrows indicate if you are riding above or below the average speed.

  • Start/Stop a Ride: be careful pausing a ride as my natural inclination is that once you pause a ride, you press the same button to start again. But no! That stops the ride and all the recording that goes along with it. Unless you really have to, just left the auto-pause kick in and then restart. Leave the buttons alone!

  • Laggy Screens: all the screens are very responsive except for the map and data sync screens. If you load one of these, wait a few seconds for them to complete.

  • Notifications: these are a step ahead of the competition as you can set up the app to send notifications from any app (not just texts). This is great, however bear in mind it is a 3-line notification that is limited to 11 characters (ish) of text per line. It shows the app, the sender’s name and the message. Anything longer that 11 characters will be truncated. This is frustrating because how hard would it be to allow the notification to fill the screen and then enable you to scroll through it? That’s any comments aside regarding how safe that might be to do.

  • Sensors: the Rider 450 supports bluetooth and ANT+ sensors. I’ve fitted a cadence sensor which works flawlessly. No problems there.

  • Bugs: so far I’ve found the following two significant bugs:

    • Distance to Go: if you are following a route then the map page which show you distance to go to the finish. Except it overestimates this by 15-20%. Quite why I’m not sure as I know the route length from the route planning application and when I get to the end the distance is the same
    • Auto Lap By Distance: another useful feature so you can see your splits except I can’t get the setting to sync across from the app to the Rider 450, but you can set it on the Rider 450 itself.

SSRS Subreport Reports “Error” for a New Data Column

This “bug” took me a while to track down… I have a report which embeds a subreport and returns the data to it. Along the way I realised the subreport needed an additional column. I edited the SQL in the Dataset and then reran the subreport. It loaded correctly. I then went back to my main report and ran it to find that the new column was returning “Error” for all values.

I tried recreating the subreport Dataset, the embedded object in the main report, and eventually the whole subreport itself. None of these worked. What was actually causing the problem was the Visual Studio cache that was created when it first ran the main report. Because I had subsequently edited the subreport, it was returning an extra column which it wasn’t expecting and so throwing an error. I’m not sure if there is front-end way of rebuilding the cache, however the simplest solution was to delete the .data file in the report folder, and the “bin” subfolder. These are then rebuilt the next time the project is opened.

WinSCP for FlatPress Backup

The benefit of FlatPress is that it doesn’t use a database… this approach pivots to the axiom of “keep it simple” which should make the rendered site fast, secure, and portable (for example, when I ported from Blosxom to FlatPress). One area where this is particularly evident is backup as all you have to do is copy the content files off the server. You can run this either sever side (putting the files somewhere) or client side (pulling them to a local machine). I’ve opted for the latter approach and my tool of choice is WinSCP (and the portable version), an open source FTP client that includes a n extensive number of reliable and extensible tools. I’ve found WinSCP better than FileZilla, not least because it has reliably handled large file transfers and maintains the create dates of any files you transfer.

Of particular importance for automating FlatPress backup are directory synchronisation and scripting. In fact, the WinSCP GUI can generate the script for you based upon existing profile settings. For completeness this is the very simple script that runs:

open ftp://<username>:<password>
lcd c:`\mywebsitebackup
cd /
synchronize local -mirror

This opens a connection to the server, changes the local and remote directories before mirroring from the remote to the local. On Windows I can then schedule this to run as a daily task.

A good tool for the arsenal!

Visual Studio 2015 SSRS Solution Files and Upgrade Woes

The arrival of a new Windows PC precipitated an upgrade from Visual Studio 2015 to Visual Studio 2019. All of my development is for SQL-based reports which are then deployed to SSRS. As Visual Studio is Microsoft’s “one-size-fits-all” approach to programming, you need to make sure you pick the right “flavour”. In this instance that means SQL Server Data Tools. For VS2015 and VS2017 that is a standalone installer and you need to make sure you select the “Data storage and processing” option which then installs SQL Server Data Tools. For VS2019 some of the functionality has been moved out in to Extensions: for me that mean installing the MS Reporting Services Projects extension.

With that rigmarole out of the way I pointed VS2019 at my Solution file and… I got an error message saying that it couldn’t be upgraded! WTF?! I mean, seriously? Microsoft can’t upgrade from two versions ago? Whilst the RDL report file format hasn’t changed, setting up new Solution files would be a time vampire for no valid reason.

It then struck me that it was worth a punt installing VS2017 to see if the intermediary version could upgrade the VS2015 files, and then move on to VS2019 after that. A 1Gb download and 30 minute install later (seriously!) and VS2017 successfully upgraded the Solution files. I then copied these over to my new machine and VS2019 successfully upgraded those too. It’s one extra step but is then seamless!

Copying a Visual Studio SSRS Solution

Designing SSRS reports in Visual Studio is liberating in how easy it is to get them up and running, but every so often you come across a gotcha that you think should be straight forward. One of them is copying a “solution” (VS’s name for a set of project files) to a new location. You might want to do this because you want to back it up, duplicate it for another related project, or just to run some tests against a demo version. What’s missing in VS is a “Save As” for the whole solution (you can do it for individual reports). If you copy the folder containing all the files you can create a new version in a new location, however all of the hard coded file locations will be incorrect and it will then fail to load.

So what is the solution?! Well you could create a new solution, then add in copies of all the existing reports, but then you still have to set it all up again which is just a little self-defeating. Surprisingly, the simplest thing is to copy the solution folder, but keep it within the same directory as the original, just changing the name. You can then open the copied solution from within this folder and all the reports load correctly (as new copies). If you are deploying this to SSRS then you will need to change the name of the solution in the solution properties, but then you are good to go.

Microsoft SQL Server Report Designer Error: An item with the same key has already been added

Whilst designing a report for deployment to SSRS from Visual Studio 2015, I received this error message when entering a SQL query I knew worked in to the New Report wizard:

An error occurred while the query design method was being saved. An item with the same key has already been added.

This is a classic Microsoft error message that is both specific and vague at the same time… and also shouldn’t happen. There are scant details online as to where this comes from but is a result of Microsoft SQL Server Report Designer having a requirement for unique column names (even if the underlying SQL query returns unique columns with the same name). This is a stupid limitation and whilst the error message is accurate, it is sufficiently vague to obfuscate what is going on.

The solution - unsurprisingly - is to make sure that there is no repetition in the names of the columns.

Grouping Objects in Visual Studio 2012

Grouping objects should be one of those things that is - well - easy to do! In Microsoft Word you Ctrl select each object, then right-click and select “Group”. Easy. In Visual Studio 2012, not so. You would have thought that, in Microsoft’s prime programming environment, these simple layout tasks would be easy, but thy’re not and it’s not documented anywhere. In my particular instance I was creating a SQL Server Reporting Services report where images in the template were moving depending on the number of rows in the output. The solution was to group the images together.

The grouping concept is sensible and well implemented, it’s just that working out how to do it is difficult! You actually have to insert a new rectangle object and then drag-and-drop the objects you want to group in to it. Once you’ve done this, the properties of your contained objects should look something similar to this where the “Parent” attribute under “Other” shows “Rectangle”. Now if you move the group, they all move. Job done!


ISO 3166-1

ISO 3166-1 just trips off the tongue, however it’s one of those standards that underpins a fair amount of daily geospatial traffic that is undertaken on a daily basis. Yes, I’m talking about country codes which Wikipedia helpfully defines as:

ISO 3166-1… defines codes for the names of countries, dependent territories, and special areas of geographical interest

This is important because it is used in so much analogue and digital data exchange between countries, although don’t for a moment think the ISO is the only organisation that defines country codes… but that’s a whole other blog post!

What gets in included in the list is interesting… the criteria for inclusion include member states of the United Nations, a UN specialized agency or a party to the Statute of the International Court of Justice. Becoming a member state of the UN is clearly helpful, although what makes a country is interesting in itself, as well as highly politicised. Palestine is an obvious example, but just look at the UK. The UK is a country, but should Wales, Scotland, and Northern Ireland also be included? For example, they are included for FIFA. The UN loosely uses Article 1 from the Montevideo Convention which outlines four qualities a state should have: a permanent population, a defined territory, government, and the capacity to enter relations with other states.

Anyway, once you are on the ISO 3166-1 list you get 2 and 3 letter codes, along with a 3 digit numerical code. These are maintained by the ISO 3166 Maintenance Agency and, given the above, change regularly. You can view the current list here and subscribe to official updates.

At the RGS we are a membership organisation and take online international payments, so having up-to-date country codes is important. Rather than subscribe to the ISO, we use the UK government Country Register, which includes an update service. It has the ISO-2 letter codes, although isn’t necessarily identical (as it’s countries the UK recognises).

Converting from Blosxom to Flatpress

This blog has been offline for a little while as the original Blosxom implementation had been hacked. Blosxom was a wonderful CGI script that was elegant in its simplicity yet eminently extensible through the many plugins which existed and made it moderately feature rich. Best of all, it used plain text files to store all its entries which makes backup and conversion much simpler than a database. With my implementation of blosxom decommissioned, I needed to find a replacement. Google flat file blogging engines and there are a lot. However many of the projects have been orphaned, like blosxom, and no longer in active development. What I wanted to find was an engine that was simple, had some good features and an active community. Flatpress seems to fit the bill with a new maintainer - and active Flatpresser - Arvid Zimmerman.

The next step was to convert my archive of over 1000 blosxom blog entries to Flatpress. Big shout out to James O’Connor who wrote the Python script to convert the files. The process is broadly this:

  • download your Blosxom files, including all the sub-directories for categories, but make sure to maintain the date/time filestamp of individual files - this is used to timestamp the entry for Flatpress. WinSCP does this (Filezilla doesnt)
  • make sure the categories only ONE DIRECTORY DEEP. Move any sub-sub-directories up to the top level
  • rename all the directories to numbers. These are used to tag the entries and can then be recreated within FlatPress
  • copy the and template files to the directory the folders are stored in
  • edit the template file to have the header/footer you want. The content, date and categories will be changed for the entries
  • run the script
  • a new fp-content directory will be created with all your entries
  • upload this to your flatpress site and rebuild the index

The script does the following

  • renames the file to entry‹date›-‹time›.txt based upon the date modified date
  • copies the file to a new subfolder in FlatPress /content folder based upon year and month
  • deletes the first line from the file (and deletes the first line break)
  • prefixes the file with: VERSION|fp-1.1|SUBJECT||CONTENT|
  • suffixes with: |AUTHOR|miksmith|DATE|<1566926569>|CATEGORIES||

Any updates will be posted over at Flatpress.

Video file sort order on my Pico projector

A (long) time back I wrote about the Acer C112 Pico Projector I was using. I’ve since upgraded to the Pico Genie P200 which gives a great 200 lumens of light and has microSD, USB and HDMI ports to allow all sorts of connectivity along with a built in battery. It’s not perfect - but its very good (and I still follow the same routine for transcoding with DVDDecryptor and TEncoder).

One minor irritant was that the sort order of the files on the memory stick appeared to be shown by date on the projector - I used Nico’s useful BulkFileChanger and… it made no difference. Obviously the embedded Linux system wasn’t using file dates. In fact on my (FAT32) USB stick it’s using the order of the files in the FAT - what was successful was using DriveSort. Problem solved - I suspect this affects a small number of embedded systems (mp3 players, projectors etc) that have had some lazy coding and don’t sort the files on portable drives.

Wake on LAN

Wake on LAN (WoL) is one of those incredibly useful features that I had forgotten about having used in the dim distant past. As the name suggests, it wakes up a PC by sending it a “magic packet” across a network. To get it all to work you need several things in place:

1. a network card that supports WoL - all should now
2. the network card with WoL enabled. Do this in Device Manager, and in your card properties check all the settings under “Power Management” and then also under “Advanced” make sure “Wake on Magic Packet” is enabled.
3. it’s easier if you PC has a fixed IP on your (home) network - do this in “Control Panel” then Network and Sharing Center->View network status and tasks->Change adapter settings then right-click on “Ethernet” (or what your network card is called) and Properties. Under “Internet Protocol Version 4”, use Properties to set the IP address.
4. the PC can only wake for “Sleep” or “Hibernation” so make sure your PC is in one of these two states. By default Hibernation (which is the lowest power mode) is off in Windows 10. To make this accessible goto “Control Panel” then Power Options->Change what the power buttons do. If Hibernate is unticked, click on “Change settings that are currently unavailable”, tick it then “Save Changes”
5. I wanted my machine to resume to the main screen and bypass login - to enable this goto “Settings” then Accounts->Sign-in Options and change “Require sign-in” to Never.
5. YOU’RE THERE!! Now you only need a way to wake your machine - I installed the aptly named “Wake on Lan” Play store app which just works.

In terms of application, for me it allows me to remotely start my desktop and then remote desktop in. I can’t help but think that this should be one of those things that “just works” rather than having to jump through so many hoops!

Excel: deleting blank rows

One of those great tips that just makes life easier… you have 100,000 records in an Excel spreadsheet that you’ve just pulled from a live database and it’s ended up with some blank rows in it, scattered throughout. How do you delete them easily?? With this tip using (believe it or not) the “Go To” dialog in Excel! And, copied verbatim:

1) Select the cells in one column from the top of your list to the bottom;

2) Make sure that all the blank cells in this selected range are the rows you want to delete;

3) Press the F5 key on your keyboard;

4) On the Go To dialog, click the Special… button;

5) Choose the Blanks option and click OK. This will select all blank cells in the range you had previously selected;

6) Right click on one of the selected cells, select Delete, Entire Row and click OK.


Converting NoteStudio files to TiddlyWiki

For many years I was a user of NoteStudio on Palm as a tool for implementing David Allen’s Getting Things Done (GtD) productivity methodology. It was great, worked well, had a few foibles and then the developers dumped it.

After that I then ran NoteStudio on the StyleTap emulator on my Android device (see blog) but the touch interface doesn’t sit well with Palm (everything’s a bit small). So I moved on to using ToodleDo and Keep - I still use Keep, but whilst ToodleDo is good, the Android client is frustrating to use. So…

I came across TiddlyWiki which is a great Wiki system that can operate in server or single-file mode. The single file is great for using on Android and AdTidWiki provides a simple interface to using it. I like it.

Exporting data from ToodleDo is easy, simple and painless (good for them) allowing me to move data out as a CSV and then import it directly into TiddlyWiki. That made me think, why don’t I revisit the NoteStudio data and see if I can recover it?? These were the steps I took:

1. Reinstall StyleTap onto my Android phone and then restore the last backup of the ROM (I had always used RightBackUp on Palm, so had a complete copy I could restore).
2. NoteStudio supports export to MemoPad format (although this was VERY slow)
3. MemoPad isn’t included as a standard app in the StyleTap ROM which led me on a search for a freeware replacement. This led me to Redwood’s MemoLeaf. Install this into the ROM, import the Memopad file and then export as DOC format (which generates a single PRC file with all the selected entries in).
4. Copy the PRC file to your PC and then use Zamzar to convert it to a TXT file (Zamzar is actually using the libraries in Calibre in the background to do the conversion).
5. That finally left me with a text file for some text wrangling to convert the data entries into JSON which TiddlyWiki would happily read. My programming skills are a little rusty so I asked James to throw together some code to do this. The code does this, taking the input TXT and doing some extra wrangling:

-put the title in the title tag
-insert \n for a line break
-replace double quotation (“) with single (‘)
-replace anything in square brackets (e.g. [linkname]) with [[linkname

Controlling email…

Straight from one of the best books I’ve read on communication (Trees, maps and theorems by Jean-Luc Doumont), is this paragraph on helping stem the flood of emails. Sage advice indeed:

If you are buried under too much incoming email, you may feel helpless about it. Yet, without hoping for a revolution, you can still take concrete steps toward easing the overload. To receive less email, simply send less email - and send better email, too.

So, starting today, think before you send and if it’s not required, don’t send it.

Note to self… duplicating a tab in Firefox

This is one of those actions that is incredibly useful every so often… you have a tab open and you actually want to duplicate (so you have an active copy) and then carry on working with the current tab. Except there is no “duplicate tab” (or clone) option when you right click in the window or on the tab. This is actually one of those Unix-esque type daisy-chaining of functions to achieve the same in result. So… middle clicking on a link will load that link in a new tab (very useful itself). Solution:

middle click on the reload page icon (next to the address bar)

Always easy when you know how!

It’s a , stupid!!

Yes, one of the manuscript writing moments where I was using Endnote and wanted to cite a webpage for an organisation. Enter the oranisation name in and the European Geosciences Union gets turned into…


This is one of those annoying diversions where you either go and work and the syntax for citing it or… do it manually.

In this instance I Googled it and found that all that was needed was the humble


at the end of the author field. It’s always easy when you know how!

Data transfer and memory cards

James and I were in Norfolk a few weekends back completing data collection for his PhD studies (his blog has at least one post relating to this) and the whole topic of data transfer speeds came back to haunt me. Amongst a number of cameras, we had been shooting with the Nikon D700 using a Sandisk 16Gb Ultra card which has read speeds of 30MB/s. We actually filled the card on day 1 (1000 shots) and need to unload the data off it. I had brought with me my cheap and cheerful Integral CF->USB card reader which works fine. Except it took the best part of 30 minutes to copy the data off the card around <5MB/s. Painfully slow.

When we got back I thought I’d dig back into data transfer speeds again. Remember that the firmware (and hardware) in a digital camera will be able to use cards up to a certain specification. The D700 is at least 64Gb cards up to 90MBs (although it might not be able to utilise the full speed of the card). My Fuji XM1 can take 32Gb cards at 50MBs. Now to achieve these speeds during data transfer to a PC, all parts of the chain need to be quick - card, card reader, USB port, bus and hard disk. In this instance the card reader was the limiting factor as it was plugged into a USB3 port on a new laptop. And just as a reminder, USB3 has a throughout of (depending upon what you read), somewhere above 400MBs (and doubling for USB3.1), whilst USB2 somewhere around 35MBs.

So, one lowcost USB3 card reader later and a new (lowcost!) 50MBs SD card, plugged directly into the USB3 port and read speeds race along. Getting this kind of throughout is both cheap and easy, but its not hard to accidentally put a weak link in that chain and see those rates plummet.

Windows 10 Anniversary Update

Well the Windows 10 Anniversary Update has landed and, after the big download, it comes with quite an array of tweaks and new features. To get the skinny on some of these head to your favourite IT site for their run down… for example cnet or How-to-Geek.

Perhaps the most interesting for techies out there is the arrival of a Linux Ubuntu subsytem. How-to-Geek has a great rundown for installation (and to note its not really Linux, as its the bash shell, so really GNU apps). Anyway, think of this as the reverse of WINE. Opens up a world of command line scripting.

And a final note on usability and interface. Yes, really yes, the start menu has changed AGAIN. Supposedly simpler, cleaner, nicer, fresher - pick your superlative. Except… usable?? My Mum went through the update, it all installed perfectly, no errors and then… she couldn’t work out how to shut down the machine. Sorry Microsoft, FAIL on that count.

Of VM woes…

Actually not so much VM woes as out-of-date underlying OS. Yes, the new term is hitting so I thought it appropriate to upgrade ArcGIS to the same version used on campus - that meant going from 10.2.1 to 10.4. Simples I thought - just request the student/instructor license, download the EXE and away we go.

Of course in reality things are never quite so simple. I won’t allow ArcGIS near my native OS because it is such a behemoth of an application - so I run it in a VM. Its slower, but locked down and if it dies, well I can just spin it up in the VM again. I use the excellent (and cross-platform) Portable VirtualBox) and, because its portable, I can copy it onto my portable hard drive and take it with (just make sure your drive is exFAT formatted for those large VDI files). Anyway, after the EXE download and install fails telling me to upgrade to Windows 7 (yes, the VM is on 7, I have an 8.1 and the main system on 10) to SP1. One upgrade later and…. upgrade .NET to 4.5+. And then… my virtual disk runs out of space. Its sized to 25Gb, but with ArcGIS, Imagine and Cyclone on there its run out of space. A little head scratching (and Googling later) led me to this page outlining the VirtualBox command to increase the VDI file (why you can’t do this in the GUI I don’t know!):

VBoxManage modifyhd windows7.vdi —resize 30000

Finally, inside Windows, expand the partition to take up all the virtual drive space.

Bingo, ArcGIS finally installs.

Whilst these are quite frustrating hoops to jump through, it does at least make you aware of some of the hurdles that students face.

Got an old ISO disc image….

…. as I have. I was interested in accessing the contents of an old ISO disc image from an age old data CD. There are a number of tools to look inside these, but at times you just want to emulate a CD/DVD drive and run it directly. There are a range of tools to do this but I wondered if there was an easy option… and there is! Under Windows 10 you can now directly “Mount” the ISO image and it will appear as a new CD-ROM on your PC. Just right-click and “Mount.” For older systems Microsoft do a device driver bundled as the Microsoft Virtual CDRom Control Panel (which I first came across here).

Voila! Problem solved.