February 7, 2020

Cumulative patch

We have a long weekend coming up, the first of the year and all systems will be offline for the long weekend. Since we're moving on to Windows Server 2019, I decided this is a good time to upgrade the lone Windows Server 2016 we have on site.

At 5:00 PM sharp I noticed all the users had already left since there were no OT. At 5:01 PM I started a backup process which finished in about 10 minutes. Unfortunately, before I started the in-place upgrade, I looked at Windows Update and it has a cumulative update. Well, couldn't hurt to be on the latest cumulative patch level before doing the upgrade.

Four hours later...


January 14, 2020

Bye 7


Today marks the end of life of Windows 7, Windows Server 2008, and Windows Server 2008 R2. Of course, being EOL only means Microsoft stops supporting it, doesn't mean we're required to stop using it. After all, we're still using Windows XP and Windows 98. But Windows 7 is so much more complex and more widely deployed, and in today's social media world, almost every one knows about the EOL, not just us sysadmins.

Windows 7 (and Windows Server 2008 R2) was truly the best desktop OS I've ever used. Windows 10 is a bit more streamlined and obviously more modern looking in the year 2020, but still has UI disconnections that slow me down. But I've already been using Windows 10 for quite a while and being an evolving OS has its advantages. Each release adds things and modifies the look, and even though my users are constantly confused I find each release to be easier and faster to use.

Windows Server 2019 has been fast and stable too. Maybe in a few more years I'll say that Windows 10 (and Windows Server 2019) was truly the best desktop OS I've ever used.

January 3, 2020

Windows 10, .NET 3.5, and TLS 1.2

One thing about Windows 10 is that even though they're all called Windows 10, each major update are sufficiently different that things can break. I rolled out Windows 10, version 1909 to all users a few weeks ago, and sure enough, something broke, maybe.

On the very first working day of 2020 at 8:30 a.m., users called in to say the program they use to upload exchange rates doesn't work and returns a cryptic error message: The underlying connection was closed: An unexpected error occured on a send.


The program is actually very simple, it connects to the Bank of Thailand's website and simply downloads the current exchange rate in Excel format. It then parses the Excel file and ports the exchange rate data into the ERP system. The error seems to suggest the file doesn't exist or there's some other connectivity error. The Bank of Thailand changed their website layout once many years ago, but I seriously doubted they would do this on the very first day of the year. Sure enough, the website still exists and a manual download of the file worked fine, so the issue must be elsewhere.

I asked the users when they started having the issue, and they said they've been having it a while, but since we were busy with end of the year stock taking and moving servers, they decided to do manual entry instead of reporting the issue. Well that sucks.

A Google search for the error message suggests that it's due to newer operating systems defaulting to TLS 1.2, but I know that the program worked fine in Windows 7, and we rolled out Windows 10 quite a while ago, and it worked until recently, and since the users weren't sure when they started having the issue, I wasn't sure if 1909 was the problem.

However, TLS sounded right since the program was developed using Visual Studio 2008 with .NET 3.5. Many solution I found on the net were impossible to do since they suggest modifying the code with SecurityProtocolType.Tls12, but my version of Visual Studio doesn't have such an option. A lot of the solutions also suggest upgrading to .NET 4.8 which is also impossible. Finally, after about three hours of searching and trying all kinds of different things I managed to find an easy to implement solution. The surprising thing about this solution is that it doesn't involve registry editing or installing a hotfix, which is much easier for me since I have the source code. I guess most of the other solutions try to modify the OS since most legacy apps probably don't have the source code available any more.

Fortunately, after the modification the program worked fine and the users are happy again. Unfortunately the program no longers works in Windows 7, but we're phasing Windows 7 out any way so I decided not to modify the program to work with both Windows 10 and Windows 7.

December 31, 2019

Bye Windows 2000 Server



On the last week of 2019 I finally decommissioned our old Windows 2000 Server. This server has served us well for 19 years. I upgraded all the way to Windows Server 2019 which couldn't be done in a single step, so I had to get a computer running Windows Server 2008 R2, migrate the domain to 2008 R2 (and raise the functional level), then migrate again to 2019.

The preparation for the migration took more than a year since we still have a lot of old apps and computers, I even had to get Windows 10 to join the Windows 2000 domain before the domain could be upgraded. I simulated the migration in VMware many times before doing it in production, so everything went relatively smoothly. I've actually done a 2000 to 2008 R2 migration once before around 10 years ago at my secondary site. One gotcha that took me by surprise was that adprep was an entire folder and not a single .exe file.

I hope the next upgrade won't be so far into the future. Happy 2020!

September 5, 2019

Stryd with wind detection

After the last post I started thinking about calibrating my Stryd on outside runs (also indoor runs). I wrote that I had let it auto-calibrate when I first bought it a few months ago and it was an impressive 100.0, but I hadn't done any calibration recently due to doing most of my runs on the treadmill. Last weekend I finally found some time for an outdoor run and I blasted through what was supposed to be a slow recovery run with a PR. I was so used to running on the treadmill and Stryd giving me a slow speed that when I went running in the park I was going so fast and I kept telling myself to slow down because it was a recovery run, and I still ended up with a PR. And yes, I made sure the Stryd was set to indoor runs only, and the distance was correct because I was running on a marked course in a park.

So after the run ended I decided to calibrate the old Stryd by turning on the auto-calibration function and running the park again. Yeah, I know I'm supposed to do calibrations on a track and run on the line, but the park has markings and I've ran it for years and Stryd used to be perfect on it even at a calibration factor of 100.0. Stupidly enough this time it auto-calibrated itself to 108.0! Now I'm more confused than ever.


But since I had a new Stryd with Wind detection on order at the time, so I thought I would try calibrating everything again when I receive it. It supposedly has better motion sensors so it might be more accurate. Well, I'm disappointed to say that the Wind version reports an even slower speed than the old one. I've manually set the calibration factor to 109.0 for now and will go for a run in the park and let it auto-calibrate after the most recent tropical storms subside.

For now I'll talk about the outer appearances for a bit. My old Stryd is a Model 11 [Rev 3] and the new one is Model 14 [Rev 4]. Rev 3 is the one sold near the end of last year that wasn't packaged with a wireless charger but instead comes with a wired USB charger.

The revision numbers appear to be:
Rev 2: Wireless charging only.
Rev 3: Wireless and USB dock. But doesn't come with wireless charger.
Rev 4: Current wind version. USB dock charging only.

Rev 3 and Rev 4 chargers are identical. One of the deciding factors for buying the new Stryd was whether the charger can be shared. But when I contacted Stryd about this, I couldn't get a straight answer out of them, they kept saying it comes with a charger! You don't need to worry! It comes with a dedicated charger! But it's easier for me if I could share accessories like chargers and cables. Wonder why they couldn't just give me a simple answer.

The "terrace farming" design of the Stryd looks nicer on the new one. I always thought the very top terrace on the old model looked a bit lop-sided. The clip was a little surprising, the old clip is more rounded on the bottom while the new one is completely flat, you can see this from the shadow in the picture. This is quite problematic for me since the new one's flatness digs onto the top of my foot. I'll probably just have to reposition it from the usual location.

August 17, 2019

Stryd is slow only on the treadmill


I wrote earlier about how the Stryd felt slower when used on the treadmill, but I finally got fed up by everyone telling me that the treadmill display on my gym is wrong and Stryd is right. So I brought out all my foot pods and tested each one multiple times against the Stryd. Before doing the tests I made sure the foot pods were calibrated correctly. The Stryd is uncalibrated and set to 100.0, while other foot pods were auto-calibrated by my Garmin watch by running outside at a flat open area at a consistent pace. (Sidenote: I've tried auto-calibrating my Stryd and it ended up with 100.0 as the calibration factor. Impressive.)

The result? The treadmill display, two MilestonePods (now called Zwift RunPod), two ANT+ foot pods (identical to the Garmin SDM4), my Garmin Forerunner 935 watch alone (using the least accurate method of pace estimation of arm swinging), my perceived exertion level, my heart rate (measured using Polar H10, the Garmin HRM-RUN, or the watch's built-in optical heartrate sensor), comparison with other runners on treadmills next to me using their own watches or foot pods, all ended up having similar speed and pace, while the Stryd is NINE PERCENT (!) slower. One thing that was surprising (or not that surprising) was that the treadmill display was accurate. Surprising because everyone kept telling me not to trust the treadmill display, not surprising because the very first time I ran on it I felt it was accurate (by feeling alone) and before I got the Stryd I've used other foot pods that also reported similar speeds as the treadmill display.

After repeating the test I decided to set the calibration factor of the Stryd to 109.0, and it started giving me the same results as the other devices. The biggest problem with this is that because the Stryd is accurate everywhere except on the treadmill, I have to manually set it to 109.0 for the treadmill and 100.0 when I'm not on the treadmill. Just setting the Stryd to provide speed and distance indoors wouldn't work, since I also run on an indoor track and Stryd is extrememly accurate on the indoor track.

I've been using the Stryd for about seven months before doing the test. Yeah, at first I didn't really care (or know) about it being so much slower. I actually thought the Stryd was more correct than the others, since it gave very consistent results (1% variance) while other foot pods could give me up to 5% variance. And I attributed the slowness to factors such as the treadmill being uneven or lack of fans leading to my body overheating and thus giving false exertion factor. But after I started using Zwift running, I would join group runs or races, it's incredibly annoying to find myself lagging behind everyone else even when I'm running really hard. I tried speeding up the treadmill to my typical outdoor speeds according to Stryd and always felt that it was way too fast for me to keep up or even run safely because the belt was going so scarily fast! In fact, I "cheated" a few times by not running on the treadmill and still have Zwift open on my phone just so I could be faster.

Oh, and also some people said that pace shouldn't matter, only power matters, I also discovered that since power is based on speed, changing the calibration factor to 109.0 also increases power by 9%. Yeah, I was running my butt off on the treadmill, and it was giving me really low power numbers.

The weirdest thing is that my Stryd is completely accurate when not on the treadmill, so I suspect it must be my treadmill running form that's affecting it somehow. Running on the treadmill is really running in place with no actual forward motion, only leg motion and the belt carrying the legs, so I don't know if my Stryd is faulty in that it doesn't sense the "simulated" forward motion, or if it's the belt being softer than ground, but none of these factors can explain why other lesser foot pods are consistent with each other. The original thought of the treadmill being inclined was wrong too, because I managed to find some with 0% incline didn't change anything. Of course, one can argue that only the Stryd is right and everyone else is wrong, but that won't explain my perceived exertion level, and how could everybody all be wrong by the same amount? I realize I didn't actually measure the distance of the belt, so... who knows?


Anyway, I'm happy with the 109.0 setting for now. Zwift needs its own calibration but since the treadmill display is accurate I easily calibrated Zwift by setting the treadmill according to Zwift's calibration prompts. Stryd recently announced an updated model with wind detection and improved next gen motion sensor. I don't really care for wind detection but the new motion sensor sounded useful, so I ordered one immediately. I should be receiving the new Stryd real soon now and I can't wait to test it against the old Stryd on the treadmill.