Archive for the ‘Tech’ Category

Canon DSRL frame rates

Saturday, August 1st, 2020 | Tech, Video

One of the things that totally flummoxed me was trying to change my Canon DSLR from shooting video at 24 fps to 30 fps. It simply was not on the screen: I only had 24, 25 and 50 as options. And nobody on the internet seemed to have had the same problem.

I suspected it might be a legacy problem of PAL vs NTSC but I could not work out how to change it. In the end, I managed to find the menu option and my suspension was correct: once I changed the setting from PAL to NTSC I was then able to access 30 and 60 fps.

If anyone else is struggling with the same issue, or trying to get 24 fps on a NTSC-configured Canon, here is how to change it:

Garmin outage, Ironman VR16 and Leeds virtual

Tuesday, July 28th, 2020 | Sport, Tech

As you may know, Garmin have had a massive outage. It went down Wednesday night/Thursday morning and started coming back online on Monday, so 4-5 days. It took out their website, call centres, Garmin Connection, production line in Taiwan and even services like flyGarmin and Garmin Pilot.

Garmin’s software is awful at the best of times. Syncs constantly fail with the Garmin Connect mobile app, there are a bunch of bugs in their website that have lastest years (I still can’t see my swim from Wetherby Triathlon) and a lot of stuff crashes and does not work as it should. Hopefully, this will be a kick up their ass to make things better.

As a result, this has put a lot of strain on the things that rely on Garmin.

I managed to record my World Triathlon Leeds virtual event and earn my certificate. I was less lucky with Ironman VR16. Unusually, Ironman was on the ball and extended the deadline but technical problems at Garmin’s end with synced rides going missing and activities not reporting correctly meant I gave up after an hour of messing around. Thanks for that, Garmin. Still, even if I do not have the badge, I know I was a VR16 finisher in my heart.

The cycle was particularly challenging. I did 120 km, but a third of the way through a bolt fell out of my cleat (see above) and I had to do the last 3.5 hours with one foot clipped in and the other riding the flat side of the pedal. Thankfully, there were no major climbs or descents.

Garmin activities not uploading

Wednesday, April 29th, 2020 | Tech

If you watch is syncing with Garmin Connect or Garmin Express, but not appearing in Garmin Connect, it could be that the activity has corrupted.

You can fix this by plugging your Garmin watch into your computer, browsing to Device/Garmin/ACTIVITY and finally finding the .FIT file. Try uploading this to Garmin Connect manually. If it says unsupported file type, you know you have a corrupt file.

Take it to Fit File Tools and run it through their fit file fixer. Download the result and try re-uploading it to Garmin Connect. Hopefully, it should be accepted this time.

How to fix missing activities in Ironman Virtual Club

Sunday, April 26th, 2020 | Sport, Tech

If you’ve been doing the Ironman Virtual Club races, you may have run into the problem where some of your activities have not registered, and you’re stuck on 33% or 67%. Worse, it doesn’t tell you what was missing, so you have no idea what went wrong.

One of the most likely causes is that your activity was too long. For example, if you run 20km for a 10km race, Ironman Virtual Club will not count it. I ran into this when I ran 1.7km for the 1.5km run 1 of Ironman VR3. And things got worse for Ironman VR4. Last week, they announced on Facebook it would be a middle-distance event:

It didn’t occur to me to double-check the details when signing up, so I went out and did a 5km run and 90km bike ride, only to flip down in front of the TV to watch the VR4 Pro Challenge and realise they were only cycling 40km! By this point, I was in for the full thing, so I finished off with a 21km run on Sunday. But none of my activities had registered with Ironman Virtual Club, even though I had completed the distance (and then done it again).

If you are using Garmin Connect, here is how to fix it:

Download the FIT file from Garmin Connect, then go to Fit File Tools. Remove the section of the workout beyond your required distance. In this case, I deleted the last 50km my bike ride and then downloaded the modified FIT file. To allow me to re-upload it to Garmin Connect, I then used the time stamp modifier to make it look like a new activity.

If you have Strava connected to Ironman Virtual Club, you could also upload the modified versions direct to Strava from the Fit File Tools website.

If you’re using something other than Garmin Connect that doesn’t produce FIT files, you can download the GPX file and use a GPX editor, like WTracks, to make similar edits. You can trim the start and end with WTracks, but I’m not sure how to modify the timestamp.

IRONMAN’s technology problems

Monday, October 7th, 2019 | Tech

Last week, I wrote about how IRONMAN, as an organisation, do not always have the best reputation among athletes. I do not think this is justified at their events. However, it is frustrating that nobody within the IRONMAN organisation has ever used a computer. Here are some of the problems we have run into.

Registration not working

It was a pain to get through the registration form to create my profile. When I came back a few months later, they had changed their registration system and I had to re-register. Their new form did not work at all. There was no error; the form simply did not do anything.

When I emailed support, they asked me to re-try it. This time it did not work because something had been created in the background and now I could not register with the same details.

Profile problems

Once I was registered and logged in, my upcoming race was missing. I had to email support to get them to sort it out. It took a few emails back and forth to get it sorted.

When I turned up in Weymouth, my date of birth was incorrect. It was a simple matter to get it sorted with the team there, but again frustrating.

Club registration

You cannot just enter your club in your registration form. You have to get the club to give IRONMAN a bunch of personal details for them, too. Graeme was kind enough to do this so that I could list Hyde Park Harriers as my club.

However, they never sent the email confirmation and when I contacted support a month later, they said they had lost of the club registration and we would have to complete it all again if we wanted the club to be listed.

Online store

The online store does not work. I have tried to buy some stuff several times and each time it says that the item is in stock but when I try to add it to my basket it says they have no stock left.

Website design

Oh my, have you ever seen a website designed as badly as IRONMAN?

It is not a mobile-first design, despite mobile traffic overtaking desktop traffic years ago. In fact, if you try to access many of the pages on the website, you do not even get a terrible desktop-designed page. You get a page saying “not available on mobile” like it is the Nineties.

The website is slow.

The navigation is confusing. If you go to a particular race, you have the main website navigation across the top and you have to click a little red button at the bottom of the page instead to access the pages about that particular race.

It is hard to get the information you want. I was trying to find the results for IRONMAN Wales from last year. They are not there, as far as I can tell.

Their SEO is also terrible. Every time I searched for IRONMAN Weymouth, I would get the discontinued full distance race, rather than the half distance that is still running. This would be a relatively easy fix in a sitemap or a robots.txt.

Garmin Forerunner 945: Should you upgrade?

Saturday, May 4th, 2019 | Sport, Tech

Garmin has announced a new range of watches, including a new flagship Forerunner model, the 945. At over £500, it’s a lot of money to ask for if you are upgrading from the 935. So, should you? Here is my breakdown of the new features.

Music

You can now store up to 1,000 songs from Spotify on your watch. Thus allowing you to go out running and listen to music without your phone. This isn’t a selling point for me. I don’t go without my phone, nor do I listen to music while running. I do sometimes listen to audiobooks. But as the watch only supports Spotify and one other platform, that isn’t an option. It also means having Bluetooth headphones and I don’t want yet another device to charge.

Full maps

And in colour, no less. The breadcrumbs are gone and now you have full maps with routing capability like a sat nav. Some of my friends who do trail runs have said this would be useful to them. However, as I road run, and have never used the maps on my watch, this isn’t a selling point for me. Might be useful in a triathlon run, I guess, but the breadcrumbs would probably be fine. And I’ve never used them so far.

Garmin Pay

Now we’re talking. The idea that I could go out without my credit card because I could just pay on my watch is appealing. That said, I would still take my phone, so I could pay with that. And what isn’t widely mentioned is that Garmin Pay currently supports almost no UK banks. In fact, none of the banks I have a credit or debit cards with are currently supported. So, this might be something for the future, but right now is pretty useless.

Battery life

The 945 still provides two weeks in normal mode, but the GPS mode now boasts an impressive 36 hours, up from 24 hours on the 935. How does it achieve this? By using a new lower-power GPS chip. This sacrifices some accuracy, however. It also supports the new Galileo satellite system, but turning that on will use more power. So, this isn’t necessarily an upgrade, depending on what you value the most.

Improved stats

The stats look pretty similar to the old ones. And they’re not super-useful. It provides you with a training load, for example. But it only includes activities you record on your watch. It can sync from the Edge 1030, but it can’t sync from any other Garmin product or other workouts. I do my structured training on TrainerRoad, so the Garmin stats are meaningless.

Summary

Honestly, I’m relieved. When I heard there was a new top-of-the-range Forerunner out, I thought that sounded like an expense I did not need. But having reviewed the features, I don’t. Right now, it doesn’t offer anything substantially better than my 935.

Why does Mac VoiceOver keep saying the word “simul”?

Saturday, January 12th, 2019 | Tech

I’m currently working with a client to improve the accessibility of their website for visually impaired users. This has involved a lot of time working with screen readers. As part of that, I have found a rather weird bug with Mac’s VoiceOver. It keeps saying the word “simul”.

Which isn’t a word. Maybe it’s saying simmul or simmel, or something else. None of these are words.

It happens when we give it a range to read. Something like “4-6”. The screen reader says the first number, then goes suspiciously quiet and says simul, and then starts building back up to regular volume as it gets to the final number.

I even asked about it on Stack Overflow, and everyone else was confused, too.

I wondered whether it might be a language issue. So, I tried adding a custom pronunciation, and double-checked the HTML tag had a lang attribute set to en-gb. Alas, no luck.

This is only a problem on Mac: TalkBack on Android works fine, for example.

In the end, I was able to get it to read correctly by changing the voice. By default, macOS comes with Daniel Compact set as the voice. However, when I switched to Daniel, Kate, or Kate Compact, it read it out correctly.

In a way, this is frustrating, because there is no much we can do to fix it. It’s a bug with the voice in Mac. But it is at least somewhat comforting to know that I wasn’t making some obviously silly mistake.

Scaling Scrum to a 30 person team

Friday, January 11th, 2019 | Business & Marketing, Tech

What do you do if you need to scale your Scrum team? Ideally, have multiple teams and use one of the many fine methods for scaling with multiple teams. But what if you want to scale a single team? To say, 30 people?

This was the situation I ran into with a recent client. They had an important project and lots of money to throw at it, and they wanted it all to be one team.

You might think “but there is no way that could possibly work”. And you would be correct. It didn’t work that well. But, having no other option, we did find some hacks that made it easier. I’ll present these below.

Kim’s Corners

Doing a stand-up with 30 people is tough. You might think it took ages. But it didn’t. We got done in 15 minutes. There were so many people (in a special meeting room we had to book every day) that people kept it short and sweet. From that point of view, it was a good learning experience.

But it wasn’t useful. There was so much stuff going on that nobody could remember what everyone else has said. Most people did not even try. They just tuned out for most of it.

So, we moved to Kim’s Corners. Each workstream had a corner and we went around one corner at a time. The people in that corner listened to each other intently, while only taking a high-level overview of what the other corners said.

Goldfish Bowl

Having a retro was also challenging because there were so many people wanting to weight in. To solve this, we used the Goldfish Bowl technique.

This involves having five chairs in the middle of the room. Four people sit on them, with one empty chair. Everyone else sits around in a big circle. Only the people in the inner chairs are allowed to talk on the topic at hand, and the discussions are time-boxed to five minutes. The group can vote to allow another five minutes if required.

What if you are sat on the outside? You go into the circle and claim the empty chair. At which point, someone from the inner circle is obliged to get up and go back to the outer circle, freeing up a chair to be the new empty chair. Anyone who has a strong opinion can take a chair, but without too many people talking at once.

Refinement Lucky Dip

30 people were too many people to have sat around looking at a Jira board and pointing stories up. So, we used a lucky dip system in which five people were randomly selected to attend backlog refinement sessions.

Anyone else that particularly wanted to be involved, perhaps because they had the a specific knowledge or interest in a piece of work that was upcoming, was also welcome to attend. But they were not required or expected to attend otherwise.

No-Release methodology

Wednesday, November 7th, 2018 | Tech

You’ve no doubt heard of us at Glorry, the exciting Silicon Valley startup that is taking the world by storm. We’re best known for raising £17 billion in funding on Kickstart in less than 38 minutes, despite having no discernable business model. Still, that’s what they said about Instagram and look who is laughing now. Mark Zuckerberg, that’s who.

We’re pushing the limits of Agile delivery to see how we can deliver the most value to our customers. But our Service Delivery team are also looking to ensure a consistent and stable customer experience that doesn’t allow new features to compromise on quality.

The result is a methodology we’ve called “No-Release” and I’m excited to share some details of it with you today.

What is No-Release?

Simply put, we don’t release any code.

What are the results like?

They’ve been outstanding. Since we adopted this approach, we’ve had zero bugs introduced to the live system. That’s not a misprint: zero bugs. Not one single incident has been released related to the new code we’ve been writing.

Since adopting this approach, our velocity has increased. Developers feel more confident that their work will not cause issues in live. Product Owners are happy to prioritise tech debt because they know it won’t delay new features arriving in live. Service Delivery is less jittery about degradation due to changes to the product.

How does it work?

We based our workflow on a traditional Scrum methodology. We operate in two-week sprints with a backlog of features prioritised by the Product Owner. Each ticket begins with a Business Analyst sitting down with a Developer and a Tester to work out how we can deliver and test the acceptance criteria of the ticket.

When a ticket is complete and signed off, including going through our continuous integration pipeline where a series of automated tests are run, we then merge the ticket into our develop branch. At this point, the ticket reaches our Definition of Done and we can close it.

Our master branch contains a copy of the code deployed to live, while our develop branch contains all of the new features. Because we operate under No-Release, we almost never have to deal with merge conflicts because we never merge develop into master. Or anything else for that matter.

What are the drawbacks?

One of the biggest drawbacks to No-Release is that you do not release any code. This means that no new features and improvements ever make it to the end user.

Making this work requires buy-in across the organisation. Without everyone being on board you can easily get developers saying “this is pointless, what am I doing here” every stand-up, and upper management suggesting they can fire the entire team and get the same results for much less money. Therefore, it’s important to get everything to embrace the methodology before starting.

Each organisation needs to make its own decision as to whether this drawback is acceptable to gain the benefits discussed above.

Conclusion

No-Release methodology allows you to increase your development velocity while eliminating any risk of service disruption to the end user.

How I optimised Leeds Anxiety Clinic

Monday, October 29th, 2018 | Tech

We’re taking the lean startup approach with Leeds Anxiety Clinic and trying not to build anything unless we absolutely need it. As a result, when I originally built our website is was functional but not particularly fast.

Now that we’re up and running and have clients coming through the door, I’ve been back over the site to make it faster and better. Below, I’ve detailed what I’ve done. Here’s a before and after using the Lighthouse audit tool:

Turn cache headers on

There were no cache headers on our images, CSS or JavaScript. Part of this was that I was still making changes to the JavaScript and didn’t have any cache-busting functionality in the site yet. Now that I do, I could safely let the browser cache everything for a month.

Replacing jQuery

jQuery is a library whose time has been and gone. But it does make it super easy to throw in some functionality. Now that I have a proper JavaScript setup, however, and as jQuery was mostly just animating things, I replaced it with native CSS animations and vanilla JS.

Compressing the JavaScript

As there was no JavaScript preprocessing going on, it was not compressed. Ironically, this hasn’t made it any smaller because I’ve now got the Webpack bootstrapping in the file. However, it does mean I can easily load in additional modules, which I discuss below, to help with other areas of the site.

Gzip compression

This is a super-easy win because all you have to do is put it in your Apache config and the server does all of the rest.

Async loading of web fonts

We had a total of three blocking font calls in the header of the page. All of this has now gone. I’m using webfontloader to load in the two variations of Lato that we are using.

Fontawesome is used for icons and is loaded in using a classic link tag, however, I’ve moved this link tag to the bottom of the page so that the initial content can be loaded first. On slow connections, this means the icons are missing for a fraction of a second when you load the page but I think it is worth it.

If I was looking to optimise further like I do with Worfolk Anxiety, I would select the individual icons I want, base64 encode them and put them directly in the CSS. But that seems overkill here for the moment.

Finally, I’ve set the font-display CSS property to fallback so that if the fonts are slow in loading, the text will be rendered away using a system font.

Webp images

Oh my god, webp images are so good. They’re like half the size of the already optimised JPEGs and PNGs that they are replacing.

Unfortunately, few browsers support them yet. It’s basically just Chrome (on desktop and Android). So, I’m using the picture tag with a fallback, as everyone does. I can’t wait until webp gets wider adoption.

Unfortunately, there is no way to do a safe fallback in CSS so my background images remain old JPEGs for everyone.