Maybe back to the drawing board…

I had this idea for an app to handle registration and results for kayak races. I had the following requirements in mind:

  • It must work when off-line
  • It must work on laptops and tablets
  • Preferably, it will sync up with a server when it is on-line
  • It must not require any installation or other technical futzing around because my target audience (the people who run kayak races) are not all very technically sophisticated.

After that, my idea was to make a proof of concept, and incrementally improve it as I got more ideas and maybe got some interest from others. I also wanted it to be a web page (with supporting JavaScript and CSS files), one that I could just give people a zip file and they could unzip it and open index.html in their browser and be good to go.

I discovered PouchDB, which would take care of the storing information locally in the browser when off-line, and also would sync to a server when it came time to do that. And so off I went programming away. My little proof of concept was humming along, it could accept registrations and display and edit existing registrations, and I was well set to add results entry and display, when I thought to try it on the bane of every web developers lives, Internet Explorer.

First problem: IE reports the ‘fetch’ is not a valid function. Fortunately, the documentation for PouchDB warns you about that, and says to install a polyfill. So I install it, and now IE reports ‘Promise’ is not a valid function. Hmm, no mention of that in the PouchDB docs that I can find.

Can I just mention as an aside that the PouchDB docs do say that it supports IE 10 and IE 11? Yeah, about that…

Thanks to an answer on StackOverflow, I find another polyfill for Promise. Now IE reports that you can’t use IndexDB on web pages that are loaded as files rather than as URLs. Not sure what to do about that except tell people to stop using IE. It appears that with my polyfills and stuff, it does work in Edge, at least. Small mercies.

New Linux Server

My Linux server, which I bought back in 2011, was getting flaky, crashing and freezing up with alarming regularity. So the first thing I tried was ripping out the two nVidia video cards – I’d originally put in two because I was using it as my daily driver and running three monitors (including a 4K), and didn’t need them any more because I only had one monitor on it and rarely logged into the console since I switched to using a MacBook Pro and then later a 5K iMac as my daily driver.

But that didn’t really help much, so I started looking at a replacement, and instead of getting a JNCS motherboard bundle and then finding my own case, power supply and drives, I bought a complete system from JNCS. However, in anticipation of getting the new system, I bought two new 4TB drives to replace the 3TB drives in the existing systems. And after I’d finished migrating the data from the 3TB drives to the 4TB drives and took the 3TB drives out of the system, the random crashes stopped! Shit, I didn’t have to buy the new system after all!

But anyway, the new system arrived. I moved the two 4TB drives and the two 256GB SSDs from the old system and fired it up. I had a hell of time swapping cables around and between SATA ports because I’d get the BIOS to recognize 3 of them but not 4 of them until I found just the right combination. I think a new set of SATA cables might be in my near future. After getting the BIOS to recognize the 4 drives, I could not for the life of me get it to boot from them. The grub menu would come up, but it couldn’t find the /boot partition for some reason. I tried booting with a live image to repair the boot, but couldn’t get it working, so I said “screw it” and just installed a new Kubuntu onto the built-in NVMe drive and restored all the required functionality from the old system.

I also had a hell of a time with the 4TB drives – they were RAID-1 with LVM on top of them, but the new system wouldn’t recognize them as RAID-1. I tried various “mdadm –assemble” commands, with no luck. Finally, I said screw it decided to just nuke it and start again. I used fdisk to re-write the partitions and did a “mdadm –create” to create a new RAID-1, but as a complete surprise to me, the system immediately recognized the existing LVM system and gave me back all my data!

Anyway, it’s working great now and one of these days I’ll be confident enough in the new system to reformat and repurpose the old SSDs. And boy does that NVMe drive boot fast!

2007 Machine2011 Machine2019 Machine
ProcessorIntel Core2 Duo E6360 1.82GHz 4MB Cache, 2 CoreIntel i7-2600K LGA-1155 3.4GHz 8MB Cache, 4 CoreIntel CoreTM i7-8700T Processor 12M Cache, 2.40 GHz
to 4.00 GHz Turbo, 6 Core
RAM2x1Gb DDR2-8004x4GB DDR3-13332x16GB DDR-2666
Disks2x500GB HDD, 2x1TB HDD2x500GB HDD, 2x1TB HDD500GB NVMe, 2x256GB SSD, 2x4TB HDD
MotherboardIntel DQ965GFEKRAsus P9H67-M EVOAsus PRIME B360M-A

Yeah, I know you’re getting bored about my GoPro issues

So I found a new waterproof external battery pack for the GoPro. This one used a waterproof case and a gland nut on the GoPro, and a separate battery pack with another gland nut. I’ve been starting to come to the conclusion that the problem with the GoPros shutting down is one of heat. So I was hoping that keeping the battery outside the camera case would reduce the heat build up.

I charged the new battery and attached it to the GoPro with no internal battery in it. I tried setting the GoPro to 4K/60fps and took it out while walking Gizmo, and then just letting it run. It make a strange chime and then shut down after just over an hour. I let it cool down a bit and reset the camera back to 1080p/60fps and (without recharging the battery) got over 3 hours on it.

What I’d really like to do is try it at 1080p/60fps in a more realistic scenario, where things are moving and the image stabilization has to work like it does in a real scenario. Maybe I’ll put it on the oscillating fan and just let it rip.

More on the damn GoPro battery issue

Ok, so I kicked both cameras down to 1080p instead of 4K, figuring it would reduce the heat build-up. And I managed to get the expected 4+ hours out of camera #1. Great!

However, camera #2 is still having problems – it would shut down as soon as I hit record. I tried doing a factory reset, I tried swapping SD cards, but the problem appears to be that it just doesn’t like the sidecar battery. It doesn’t matter which sidecar battery I use – as soon as I turn it on, it turns off. Take off the sidecar battery, and it’s quite happy recording for 100 minutes.

I think for this weekend I’m going to try using the sidecar battery on camera #1, but just going bareback on #2. I’ll probably put #2 on the bow facing back, because that view is usually only important in the first part of the race. When I get home, I’ll see if GoPro will admit there is a problem with their camera, although since it only happens with a third party battery I don’t have high hopes.

GoPro battery problems (again)

I use a “sidecar” battery for my GoPros to get some extra battery life. And when I was using them with GoPro Hero 5s, I was frequently getting 3.5-4 hours of video recording. But at the Round The Mountain race, one of them shut down after less than an hour (I’d turned them both on really early hoping to capture some of the flavor of the start area, and it ended up shutting down when I was warming up). I took them out for another test and I got 99 minutes out of the first and 120 minutes out of the other. In both cases, the sidecar battery appears empty or nearly empty, but there’s plenty of life left in the “built-in” battery. I’m able to turn them on and record another 80-90 minutes after I finished.

I don’t know if it’s an overheating problem, or what. Unfortunately the sidecar requires both it and the camera to be in a clear plastic case, which can’t help with the heat problem. I wonder if I should cover the whole thing in tin foil except the lens area?