Chris X Edwards

People become doctors for the money and/or to "help others"; you don't hear much about them doing it for their own longevity or good health.
2022-01-10 10:32
Read about "self hosters" taking back power from centralized big tech monopolies. Heard this song before when mainframes gave the PC its P.
2021-12-16 22:44
There is a Quake CLI option `-nojoy` to disable joystick. The documentation assures us, "the fun factor in the game will remain the same".
2021-12-07 10:14
XSS exploit warnings simply using "C++" in search terms; worst language name ever? Well, C#, Go, and "Java"script put it in perspective.
2021-11-22 08:41
A scammer rented $1.5e6 of textbooks with gift cards and simply resold them. Is this a great crime? Or greatest crime ever?
2021-11-15 13:23
Blah Blah

Now With Extra Pixie Dust

2022-01-09 15:49

Welcome to 2022!


Remember that Sign Painter Problem? That refers to the fact that a bad sign advertising a sign shop is a bad sign. As a computer nerd I take this seriously and have been hard at work recently fixing up my computer nerd stuff. Yes, yes, I know… Still looks like crap, but consider that not only am I not a web artiste but unlike 99% of computer "professionals", I have a basic website. It is really quite a technical achievement under the hood. And this is the season of major improvements!

First up is something quite banal — a new cable. I replaced the CAT5 cable from my ISP to my network with a CAT6 one. But the minor electrical details of ISO/IEC 11801 are not the important thing in this case. Certainly it is dumb to potentially hobble my splendid Verizon Fios connection with a less than optimal cable. But the real improvement was the routing. When it was installed the installer drilled randomly in my office floor and popped out in the basement inside a heating duct. Whoops. Ok, retry that somewhere else, right? Heh heh, oh no! This is a cable installer! He ripped open the heating duct to extract the cable. Yes, and left it sliced open with the cable dangling over the sharp sheet metal (leaking thermally controlled air). I was finally able to drill the hole in the correct place and run the correct cables, correctly. And patch the heating duct. The moral of that story is watching installers like a hawk is not enough! They will do the most awful installations possible and you need to budget for cleanup and repair. (I once had one route a CATV coax line by lying it along the inside of a gutter.)

This cable allowed me to finally set up a nice server area in my basement. I also added a new switch to the network down there to hook up multiple devices. And I also added a new electrical outlet. Now my main server is not on the same circuit as my garage door opener and, sometimes, my chainsaw.

This infrastructure now allows me to set up a new server to replace raven15. Since I first started getting obsessive about fanless hardware in the early 2000s, it has come a long way. I was able to buy this device which is ready to go as a low power silent server. This one specifically overcame the cognitive dissonance of convention and even mentioned Linux specifically by name. I bought it last March and have had it running since then to test it. Finally I was able to make the big switch to it.

This server is my main computer where I do most of my serious stuff. I am composing this post on it now. My raven15 had some very fancy RAID1 and Xen VM setup. That turned out to be useful exactly zero times in 7 years. This time I’m going with a simpler strategy that hopefully will be easier to recover from even if it means I’ll have a slightly greater chance of needing to. So new storage media arranged in a new design.

Another big change is that after at least 17 years of using Gentoo Linux as my main computer, I’m finally trying something different. Gentoo is the most Linuxy Linux distribution and can be really technically interesting. It taught me a lot, but the regular maintenance of it can be a real job. The hardware of raven15 seems fine actually, but my hand is forced because Gentoo today can not compile GCC on this lightweight CPU with very little RAM. I used to have to go to heroics by cross compiling (almost defeating the purpose) or making massive swap partitions on disk (slow!) to get through the process.

Now my server has joined all of my other computers with 100% wholesome, clean Debian Linux.

As I started setting up the new server, I started to run into weird problems. I would get corruption in files I was trying to edit. It turned out that GNU Screen with my escape key (escape ^gg) plus a modern version of Vim causes weird file corruption. Great. Besides the insane default escape key ([ctrl+a]) I’ve always hated the terrible name of screen — go on, do a search for "screen"! In their defense, this was written in 1987. Just like no one today uses Bill Joy vi or Vixie-cron, it might be time to move on. So up to my neck in newness, I took on the jump to tmux which is a very good system for terminal multiplexing. It also has a very sensible name.

Speaking of Vixie-cron, I was probably one of the last people to use original ancient versions of that. If you received an email notification, vixie-cron was probably triggering it. Now I’ve switched to a modern ISC cron like all normal people.

Obviously the biggest work I’ve put into all this has been to write from scratch a replacement for the ancient Python AsciiDoc processor I used to use to turn all of this text into HTML. This new system is Nerdtext. That project turned out well and I’m trying to get all the other pieces back in order so I can start to apply it to my website as planned. Currently the main page and old material may still use ancient but the post’s individual page should be using Nerdtext now. Which is pretty cool!


But there is a lot more going on behind the scenes. I actually have a few little scripts that help organize everything and naturally they did not work. They were written around 2015 and used Python2. I just spent some time fixing them to be happy with Python3.

And then we come to the hosting. Since "dynamic" IP numbers seem to be astonishingly stable these days and DynamicDNS is a thing, I’ll probably additionally host my own web server publicly soon. For now it’s just internal. But since 1998, I have used as an isolated external web host and email server. Recently I found out that they were offering plans with way more storage than I was getting for about half the cost. The catch was I had to sign up for a new account as a new customer — in other words, they were charging a premium to leave me alone and not force me to do this. So I just finished going through that process and now I have a completely different host machine — formerly BSD, now Ubuntu. They also gave me a new stable IPv4 number which is interesting; aren’t these things a precious commodity? Whatever. Seems to work fine as you can see here: I’ll take it!

If you’ve been paying too much attention to the technical details of my acerbic web site, you might notice that my URLs now support the extraneous magical thinking of SSL (or is it TLS?). So a new service protocol. This will be its own post/rant! But enjoy the break from browser warnings.

The email server change was ok. I want to stress that I was able to change email providers (kind of, not really) and you do not need to care! My address did not change because I own my own domain. I highly recommend that! Keep using your goomail or iFruitmail or whatever, but if you own/use your own domain, you can easily jump ship if they piss you off. For me it was just an administrative change and configuring a new modern version of Mutt.

As you can see, I do not think I left any hornets' nests unpoked. If you read this, it will truly be a miracle! Welcome to 2022!


2021-12-24 16:26

I hope everyone is having a decent holiday. At least a lot of places are closed, giving us the day off from absurd moral quandaries emerging from weird banal questions like "Should I avoid the gym today to stay healthy?"

Speaking of odd quandaries, did you know that holiday gift giving has a deadweight loss between a tenth and a third of the value of the gift? Well, try not to dwell on it. I mention it because I believe that (with certain exceptions) homemade gifts are even worse. But what if there was something you could make for yourself that you really appreciated (at full value by definition) that you could also give away to others with little extra cost or effort? From the perspective of the other people, this would probably be a pretty lame "gift", but I believe (to economists anyway) it technically does beat the normal auto-cannibalism of holiday gifting.

In that spirit I’m putting some effort into a public release of some software I wrote for myself that I’m quite pleased with. The program is called Nerdtext and it is a tool to help people communicate efficiently — using the web (mostly) — and without the spectre of surveillance capitalism abusing them.


If you don’t feel like reading about the backstory, you can jump right to the Nerdtext Project page. If you’re still with me, cool! Let’s take a deeper look at the making of my website.

Ever wonder how I produce this blog? Of course you haven’t! But consider the question rhetorical and let’s pretend you were interested. Ever wonder why my whole website looks like shit? Sure, that one my regular readers may have briefly entertained. It’s a long story.

In high school the number of times I ever took notes in class is precisely zero. In engineering school, notes were much more critical — still zero. And yet today I personally know nobody to be as serious of a note taker as I am. Good notes are the cornerstone of my professional confidence. So why the radical change?

While most tech nerds today have seen the "profound" transition from last year’s fad framework to this year’s, I experienced the tail end of information technology methods used since Latin was the native language of London. Writing stuff down with a stick is a classic but it suffers very badly in several ways. First, it is difficult to duplicate — the monasteries of Europe were serious operations that barely were able to pass along to us a tiny slice of survivorship bias we call Western Civilization. Second, hand written notes and printed books alike are notoriously hard to organize and recall effectively. If you only have a few super important rules you need to communicate, you can carve them onto a chunk of fancy stone and they’re as available to everyone as that post-it with your password on your monitor. But once everyone realizes how super handy literacy can be, suddenly there are post-it notes all over the place. As with the concept of life itself: how do you organize that messy victim of its own success?

The answer of course is computers. Computers have in my lifetime convincingly solved all traditional problems related to literacy, perhaps to the point of obviating it. Of course… Computers… They are their own universe of new and improved problems. Fortunately for me (maybe) I seem to be preternaturally suited to computerized literacy, which at least goes far to compensate for my horrendous penmanship.

So how do I practice computerized literacy? Well, if you asked an F1 driver to talk about "cars", you’ll get some weird esoteric answers. Mine are in the same spirit. But try to keep in mind F1 tech does find its way into passenger cars. For example: have you ever used Slack or Discord or some chat program like that? Did you know that you can make words you type italicized by surrounding them with underscores? This is precisely how everything (←yes) on my website that has ever been italicized has been made so since about 2006.

And that convention goes back much farther. A lot of text embellishment convention was established and popularized on the Usenet. Some if it goes back to conventions people used with manual typewriters but old typewritten documents are incredibly staid by modern standards. They also used things like red ink ribbons and double printing tricks which are not so transferable to simple computer encoding. That’s why I feel it was Usenet, maybe some email, that really tried to forge new typographic conventions that could be expressed well in efficient text encodings — the only kind at the time.

These conventions were not especially complicated. For example…

  • If you put *asterisks* around something, it seems more serious.

  • As mentioned _underscores_ can, well, underscore a point. The dictionary literally defines underscore’s purpose "…for emphasis or to indicate intent to italicize…".

  • Another similar convention is to put a row of dashes or underscores on the line below a title following the thought process of double printing underlined titles on a typewriter.

  • You might have a list of bullet points that each start with an asterisk. This list is an example of such a thing.

  • When you see a blank line (feed) between blobs of text, you can naturally infer a paragraph break is implied.

If any of that was terrifyingly complex, you probably have not been a literate human for long. These are quite deliberately the simplest text organizing conventions possible. And I mean simple for humans! At the other end of the spectrum is something like this:

The volume of a cone is: $${1\over3} \pi \rho^2 h$$

I had to actually double check what the formula really was because I’m not especially good at cone geometry or Donald Knuth’s TeX syntax for using text characters to describe complex mathematical typesetting (despite having read the entire fascinating and brilliant TeXbook).

Somewhere in between the simplest text conventions you can imagine and TeX is something like HTML. Most people today are familiar with it. You can right click in your browser and ask to "View Page Source" and see the <insane> <jumbled> <mess> of <tags> and <more tags="and all kinds of weird stuff"/>. HTML is actually not hard or complicated, but it sure looks terrible. If you’re reading it directly, someone is probably paying you.

By the late 1990s it was quickly becoming apparent that the web was going to be a lot more powerful and important than even its pioneers could imagine. In a gold rush atmosphere, everybody was clamoring to figure out how to get a web site that would make them rich. Some people, like me, had personal websites just because they seemed very sensible. I immediately realized that tagging up websites was tedious drudgery that I wanted no part of. Little did I suspect that 99% of computer jobs for the next 25 years would be doing exactly that! So much for the robots and space travel I’d been promised as a youth!

In the early 2000’s some other people were getting pretty sick of HTML work too. Programs that generated HTML that humans never had to look at were becoming popular. This gave us things like wikis and web mail and shopping carts, etc. The famous Aaron Schwartz was doing stuff like inventing RSS, Creative Commons, and, importantly, Markdown.

An important protagonist in this story is Stuart Rackham. He seems to be a Kiwi but his existence is shrouded in mystery now — perhaps he has "retired".

In 2002 he seems to have written the program called AsciiDoc. The purpose of AsciiDoc is to translate a disciplined use of those simple obvious conventions I mentioned earlier that were created for and by humans, directly into something more obnoxious like HTML. I learned about this program in 2005 or early 2006 and immediately started using it for my web pages.

I have been using it continuously since then. For the first 5 years or so, it seemed like any other high quality free software program. It released new features and bug fixes and the documentation improved. But while I was busy worrying about other things, I started to get the feeling that the development of AsciiDoc was faltering. Eventually it was clear that it was not being actively developed.

At the same time Markdown was enjoying a surge in popularity thanks to GitHub promoting it as an aid to documenting software. The simplistic Markdown had been completely unknown to me and when I discovered it, I was disappointed that compared to AsciiDoc, it lacked many features I’d come to depend on.

At some point Stu’s website seems to have disappeared. I feel like there has been some confusion about AsciiDoc’s status. Some helpful internet people have done some work to rescue the code from oblivion. Here, here, here. Or maybe they have rewritten it — it’s difficult to say. The old version was in Python 2 and it looks like it wasn’t Stuart Rackham who brought it into the era of Python 3. It’s all rather confusing.

And some people have definitely rewritten it completely, most notably the Asciidoctor project. We know it is completely rewritten because it is no longer in Python at all — their project is in Ruby. That was a fantastic blessing for the Ruby community! Unfortunately I am not interested in becoming a member thereof.

Like Austin Powers, I’m kind of waking up from a deep sleep while my production server had a very long life of flawless production. I never fiddled with my system because it worked. For almost 10 years. The AsciiDoc that will compile this blog post is by Stuart Rackham and has a copyright notice from 2002-2010.

$ head -n7 /usr/bin/asciidoc
#!/usr/bin/env python2.7
asciidoc - converts an AsciiDoc text file to HTML or DocBook

Copyright (C) 2002-2010 Stuart Rackham. Free use of this software is granted
under the terms of the GNU General Public License (GPL).
$ asciidoc --version
asciidoc 8.6.9

But it’s time to replace it. Well it was about 7 years ago! I actually have had a replacement server running for almost a year but have not switched over yet. One big question that remained was how would I process my very large body of AsciiDoc documents on a new modern system? With the Rackham AsciiDoc retired to a remote bach in the New Zealand wilderness with no internet connection, what could replace it?

I am really not keen on Ruby, Java, or JavaScript (Asciidoctor’s three options). I’m a little bit confused and unnerved by the state of the Python projects. I have huge respect for those keeping the code working, but it doesn’t seem like anyone has replaced Rackham to lead a coherent Python AsciiDoc solution.

And finally, ever since I started using AsciiDoc, something has nagged me. I dislike the way it renders. Sure it’s ok enough that I’ve lived with it for 15 years. But I was really hoping that instead of dying, that the AsciiDoc community would start to make it easier to do what needed to be done to get my own look. This is why if you go to it will look very different than if you go to The latter has AsciiDoc’s default 2011 styling which practically screams "this was produced by AsciiDoc!" I always found it a bit weird and problematic that I could not figure out how to fix this.

Obviously I could have figured it out, but if the project seems dead and it’s so much work to dig into how to change the back end to be the way I want, well… We’re starting to enter the territory where I may just want to redo it. My way.

And that is what I did. Over the last few weeks, I wrote a new text processing engine from scratch in C++. This is Nerdtext. I’m not calling it something with AsciiDoc in the name just to avoid confusion. I’m going to be simplifying and modernizing the mark up syntax. It will be focused on my applications, at least at first. I have tested it on all my notes and blog posts (some 800,000 words) and it does pretty well. Very few serious errors or problems, so quite compatible with classic AsciiDoc.

This has been a huge project for me. I feel a small bit stupid having known full well going in that it was a quintessential classic Laundry Problem. But it had to be done. The fact that people will look upon this and very wrongly think "Well, that’s easy!" is just a cross I’ll have to carry.

I definitely improved my C++ skills, especially modern flavors which really are a lot better behaved than they were in the 1990s. I still prefer C and Python, but C++ did well and impressed me.

My plan now is to overhaul my entire website. This will involve transitioning to the new hardware, changing my hosting arrangement a bit, and compiling everything with Nerdtext. That itself will be a pretty serious job. Hopefully this will be one of the last posts that uses archaeological AsciiDoc. (By the way, you can see source code for pretty much any of my pages by replacing the .html with .txt in the URL. For example.)

To check out Nerdtext, have a look at its new project page which is the first web page on my site to be produced entirely by Nerdtext.


C++ Errors: Finally More Funny Than Awful For Me

2021-12-19 16:35

I was getting ready to add a new feature which required a new member attribute variable. I went ahead and added a declaration for it in the class definition. Obviously this sounds like nerd glossolalia to normal humans so don’t worry about the details — just have a look at the shape and colors of this.

class Block {
        list<string> lines;
        int new_variable= 0; // Trying to add this new variable.

Just to make sure I didn’t make any dumb mistakes, I tried to compile it. It compiled fine. Luckily I tend to automatically run the program when it compiles cleanly. However at runtime I got this bizarre error.

terminate called after throwing an instance of 'std::logic_error'
  what():  basic_string::_M_construct null not valid

Uh huh. That’s super not helpful. I had no idea why it said this. Remember, I’m not even doing anything. I’m adding the simplest declaration possible to a class which works fine. That is frustrating but it then goes from annoying to completely insane. Desperately trying random things attempting to at least get a better error, I try the following (simply the two declarations switched in order).

class Block {
        int new_variable= 0;
        list<string> lines;

And then it works. Compiles and runs fine. I was under the impression that if the declarations had nothing to do with each other, their order was completely optional. Fun stuff.

Fortunately my programming style is to drop tons of runtime hints about what exactly is going on. I was able to put diagnostics on high alert until I could zero in on exactly where the program stopped working. When I found the line it was dying on, I knew what the problem must be. I was asking for the last item of a container and I suspected the container was empty (perhaps the error message’s "null"). Checking the official documentation, my suspicions were confirmed.

If the container is not empty, the function never throws exceptions (no-throw guarantee). Otherwise, it causes undefined behavior."

I’ll say!


Skiing Season Starts

2021-12-08 18:45

I was just fooling around when I took out my new skis in a light snowfall last month. Today I got to do some real skiing! I was surprised that the weather defied the forecast, my expectations, and global warming to produce about 3in/8cm of snow in temperatures that were finally below freezing. This morning I went out to shovel the driveway and it was 100% clear (pavement above freezing) so my expectations were low. But by the afternoon, even the paved surfaces were starting to get some accumulation. This is important since our forest trails are paved. I shoveled a decent amount and thought it might be possible and at least worth a try.

And it was great! Which is why the moral of this story is for activities with hardly any downside, give it a try and you might be pleasantly surprised!

I was out for an hour and had one of the best skiing experiences I’ve had on my community trails. I was using my old reliable Rossignol evo XC60 skis which are absolutely perfect for tenuous global warming conditions. You can see that this snow was incredibly sticky with clumps packing into iceballs at every opportunity. I am now planning to put glide wax also on the tops of the skis to keep snow from sticking so tenaciously there.


But the skis performed great. Great glide and kick at the right times. I have a new set of poles too — Salomon R60 Click. These are a huge improvement for me. I love the wrist cages that detach with a press of a button. I skiied the first 20 minutes with a sweatshirt on but was just in a tshirt as shown for the last 40 minutes. But with those poles — click click — and I can take off my sweatshirt or jacket — click click — and I’m back to skiing. No messing around with the straps. The really huge thing though is that the tips are able to dig into the asphalt. If I lived in Sweden this may not be so critical but I don’t. Yet. My other poles would skip off the asphalt through the weak layer of crushed slush. So a huge improvement.


I think the biggest improvement to the whole ensemble was the engine. I’ve been assiduously using my very, very silly NordicTrack every day since last ski season, and guess what — that helps! Not so silly. I don’t do a lot with it, but I do a couple of minutes on it every day just to make sure my body doesn’t forget about this. And at the start of November, I doubled the regime. Still not a lot, but still a lot more than nothing. I definitely am not strong enough to double pole the entire 90km of the Vasaloppet like the winners do. They literally push themselves — quickly — with only poles for 4 to 5 hours straight! But I can do it for a couple of minutes until I feel like my heart is about to explode and I can properly marvel at those pros.


Now after a good day skiing I can sit back and enjoy some calorie negative apple pie by a nice cozy fire. (Yes, that giant pile of logs in the photo of me is an even harder workout!)

Update 2021-12-09 Got up early since yesterday’s snow had a pretty hard freeze (by local standards). Did 50 min on an icy mess and was able to double pole almost all of that! I don’t keep super detailed timed records but I’m pretty sure I just demolished my best previous performance. I am certain that I have skied the same route before taking double the time. I just need to work up to another, uh, 4 hours and I’ll take a more serious look at that Vasaloppet!

Skate Sharpness

2021-11-29 16:24

As I’ve written about before, for someone who does not compete, I have a pair of absurdly nice ice skates. This however is the story of why I have not been ice skating in a few weeks. This graphic tells you way more about ice skates than I’m sure you care about. Rather than read all that and worry about details, just roughly absorb the point that ice skates are quite technically specific and people get very fussy about them.


The part I want to focus on is the phrase "speed skates are so sharp". How sharp? Sharp how? Why would they not be sharp? It turns out that steel does pretty well against ice; unfortunately the impurities in the ice are what grinds away your perfect edges. So, for example, when the Zamboni drives across the parking lot to dump the ice it shaves off and later comes back and drives all over the ice tracking dust and abrasive minerals… well, true story.

One of the reasons that I was interested in speed skates is that hockey skates have a complicated edge that you need to take to a hockey shop to get sharpened.


The RoH is the radius of hollow and that curve is carved into the blade’s profile using an expensive specialty grinding machine. Well, you hope it is — it’s actually kind of difficult to audit just how correctly your skates were sharpened. But speed skates are, in some respects, simpler. With speed skates, you can sharpen them yourself! The caveat, of course, is that if you own speed skates, you pretty much must sharpen them yourself.

Ok, no problem. I’m up for that kind of thing. But this is the story of why my skates were too dull to skate on safely for so long and what I finally did about it. First, we need to take a curious diversion to the world of woodworking. You may care about woodworking about as much as speed skating, but bear with me.

This superb woodworking tool is called a card scraper.


Here it is shown in use doing what it does which is — you guessed it — scraping wood. What’s amazing about this tool is that it’s just a stamped "card" of metal, nothing fancy. And yet it can produce astonishingly smooth finishes. It can shave down unruly wood grain problems as well as do useful tasks like strip old paint. Basically it does much the same thing as sandpaper, only quicker, better, and with no dust.

Sounds awesome, right? Only one tiny problem — you need to sharpen them yourself. You see the theme, right?

In this video, the titan of English woodworking, Paul Sellers, explains all about card scrapers. What I want to focus attention on is the wooden block shown below that he uses to align the scraper for perfect sharpening. I’ve seen enough of his lectures to know that the cut in that block was not made by a band saw with a precision fence. No, it was cut freehand like a freaking ninja with an English rip saw made of Sheffield steel that Paul sharpened personally with a hand file. When this man talks about sharpening things, everyone would do well to take notes! Apparently Paul thinks that a wooden jig can hold a blade in position for accurate sharpening. Good enough for me!


The actual sharpening technique for these scrapers is quite interesting. When they are new from the factory, they are quite useless and have an edge usually straight from the industrial metal shear. The first thing that must be done is the edge must be filed down so that all imperfections are ground out and it is perfectly perpendicular to the sheet. Many people use some kind of guide block, as Paul is demonstrating, to make sure this goes according to that plan. Note that this operation will kick up a burr on the sides. These scrapers are actually made of somewhat soft metal (softer than skate blades) so this burr can be deliberately controlled. Using a very hard burnishing tool or any hardened ground rod the burr is pushed off the end and then pressed down so that the profile resembles a kind of mushroom shape. That is the shape that scoops shavings out of the workpiece.


Ok, great. Back to speed skates — how are they sharpened?


As you can see, the process is quite similar. The main difference is that the end goal isn’t a controlled burr suitable for peeling thin layers of ice. The end goal for speed skates is a perfect ninety degree corner. It turns out that if that corner really is geometrically perfect with no chamfer or bevel, it will be razor sharp and reliably cut into anything softer than the steel such as ice (and jugular veins?) and not slip out of position.

Great, so how does one go about actually doing this on real skates? Normal people — well, "normal" speed skate owners — tend to also own a jig like this.


You can see the sharpening stone and the smaller deburring stone. This deburring stone simply pushes off that burr that a card scraper cuts with.

When the skates are loaded in such a jig, it looks a bit like this.


This photo shows a pretty fancy jig and there are black horizontal top stops set in pace to make sure the blades are set at exactly the same height. Once the skates are locked into final position, the stops are removed to facilitate sharpening by moving the stone back and forth over the tops (bottoms really) of the blades.

Of course I am going to be different and weird. And "thrifty" if we lived in a world where my time had no value. I had my typical thought, hmm… I wonder if I can make something myself that works as well or better. Out of junk I have lying around. It seemed like a good project to practice using Blender for design work. Here’s what I came up with.


Remember that time I got all insane about photogrammetry? And if you do, you may have wondered why the heck I didn’t simply pick a better subject! Well, this is why.


I realized that any design like this was going to be surprisingly close. Sure there are easier ways to sort this out, but I wanted to see if Blender could help me solve problems like this.


This crude model that I manually hacked out of the default cube is just not accurate enough to answer the questions that need to be answered. Mainly, is there interference with the center support? The closer the skates can be to each other, the better. Too close, however, and the whole thing is useless. Once I replace that with the photogrammetry model, you can see exactly what is going to happen.



This shows the final setup exactly as I envisioned it. I did realize a bit late that the sides of the top would be precariously attached after the critical slots for the blades were cut. I spent a while thinking about that and finally was able to sink some dowel rod in those sections before making the main cuts.


I was very happy that this is actually what the final result did look like!



That photo shows the skates just resting loosely not clamped. I was very pleased that when it is clamped, the geometry validates Blender’s ability to be very good at predicting such things.

The clearance holes for the blades are shown as small as possible and I started out with that. I thought they would be sufficient to make the sides quite flexible for clamping, but no, they were impressively stiff. I kept opening those holes until they were exactly the right tension I wanted, just enough to get the skate and reinforcing spacer in perfectly. Very easy to load now too.

I’m not delighted with Blender’s ability to provide working shop prints, but it can be done. More problematic is Blender’s reluctance to actually tell you detailed high precision measurements that I know it knows. For example, it only measures angles to the nearest whole degree (see lower right); this was insufficient and I ended up calculating them myself using trig.


Of course since I like biscuits there are biscuits all over this thing. I will say though that in terms of execution, this went the most poorly. It can be hard to get a good datum for biscuits in the middle of a board. You must clamp a reference edge and make sure it doesn’t move around. Let’s just say, it moved around more than I would have liked.


This project would seem to require machine shop accuracy, but that’s mostly not true. However, there is one critical property that must be very accurate: parallelism of the primary blade holding surfaces. My plan for that was to rely on my table saw’s rather good ability to repeat simple cuts. The trick then was to make sure the surface that was against the saw’s table was extremely flat. This would prevent rocking or warping that could cause the cuts to not be parallel.

My technique may seem silly - ok, it was silly - but it worked. I used a test indicator and a surface gauge on my glass table to measure the flatness. Yes, I know it’s not a granite surface plate. I was actually able to pretty reliably map topo contours of exactly what the surface looked like.


How did I cut the top to make it perfectly flat? My card scraper of course! You see the theme, right?

Of course I had to sharpen and burnish the scraper first which I did. With that turtle’s back ready to stand on, I was able to make the top of the skate jig quite flat - more flat than wood can even stay with normal indoor temperature changes. I was then able to make my critical parallel cuts that would support the blades.


And with those cuts made and the reinforcing shims in place, it all came together and was ready for action. Here’s what it looked like ready to go.


This shows the rough stone I started with and the fine diamond sharpening plate I did finish polishing with. It also shows more clearly how big I had to open the end holes before the wood was flexible enough to have the perfect tension for clamping. The dowel pin is visible too.


In these shots you can see the serious part of this whole thing. Serious speed skate technicians will look at this contraption and not just be horrified by the ghetto appearance of wood I literally had lying around; they will be horrified that the very premise of this fixture will "ruin" the bend on the blade. It’s actually almost possible to see the blades are straining to curve into a reverse C. Since we’re looking at the front, this means these skates are preset to turn left. Well, serious speed skate technicians, I actually skate clockwise exactly 50% of the time. So the quicker I can ruin this subtle property of the blades, the better! Obviously if you’re a real speed skating person who somehow stumbles upon this, do keep this in mind before following my example.


There are a few decent videos out there of people sharpening skates, but I want to highlight one in particular. I watched this girl sharpen her skates and when she whipped out a bubble level I initially thought, no way is that accurate enough for anything. I think what threw me was she felt she had to go find a place in her house where the floor was level. What she overlooked was that she could simply pack out the jig with card stock (common machinist trick). The idea of using a level, however was actually very smart and correct. When I was aligning my setup I realized that with an accurate level reading consistently across the blades along their lengths, you could pretty much ensure a good result. So if you really want to watch the whole process, check her out.


Ok, I just got back from the ice rink. How did they do?


Well, I was able to skate for about 80 minutes and they were definitely better than the last time I skated. It feels like I didn’t take the burr off completely and got a bit of a card scraper edge. So still not perfect but now that I have a sharpening setup that allows me to try different things, perfection is now a plausible goal.


For older posts and RSS feed see the blog archives.
Chris X Edwards © 1999-2022