A public record of tinkering, teaching, and thoughts.

I’m a guy who’s in to software, machining, fabrication, furniture design, art, etc. This subdomain mostly exists as a record of things of interest which I think will otherwise (or have already) been lost to time / obscurity, and as a place of convenience for me to post stuff I want to share.

Dw50 / DW1150 "special adjusting screw"

The dewalt dw50, dw55, and dw1150 (and presumably more) machines have an enigmatic “special adjusting screw” with which you can adjust the height of the blades in the cutter block to the correct height. The specs for these are not available anywhere on the internet. There are suppiliers that apparently sell them, but any of the items with images look at best marginally correct. The screw, it seems, goes by different names and part numbers. I believe the actual canonical name to be ...

November 27, 2025 · 2 min · 346 words · theelous3

How to set up FoundryVTT on a filthy cheap server, for noobs.

Last updated: 2025/11/30 Info What will I have at the end of this tutorial? You will have a Foundry server running on a remote system that will always be on. You’ll have secure HTTPS for your connection. It will be a very basic setup. Your certificate will optionally be self-signed and probably scary looking the first time you connect, but perfectly good to use for years (Step 8a). Alternatively, if you have a domain, we can set up a proper HTTPS site that will get rid of the self signing warning (Step 8b). ...

July 3, 2020 · 11 min · 2330 words · theelous3

Overteaching - an error

Teach one thing at a time. An intuition that many have when teaching is to start at the foundation and strictly work upwards. In programming this translates to working with languages that reveal to you some aspects of the hardware, brick by brick, and thinking about things like how to retrieve stuff back out of your ram. The all-knowing-already teacher intuits that in order to understand one thing you should understand everything else holding it up. This is obviously untrue when you give it any thought. You don’t need to understand the details of fluid dynamics to be an expert engine mechanic. You don’t need to grep math proofs to manage global scale financial systems. We operate our whole lives almost exclusively in abstraction layers with no idea whatsoever about the scaffolding holding it up. ...

December 4, 2017 · 3 min · 571 words · theelous3

Wtf is self (in python)

Let’s say you wanted to design a useful little machine called a widget, and start producing them in a range of colours. First thing you’d do is design a blueprint. In Python, writing a class is much like writing a blueprint for something. Let’s write our widget! class Widget: pass Well. That was easy. We could start producing these widgets right away if we liked. first_edition_widget = Widget() second_edition_widget = Widget() third_edition_widget = Widget() Nice! We have our widgets. Each widget is an instance of Widget and is its own object. We don’t yet have a way to give our widgets a range of colours though. Giving our class an __init__ method will enable us to initialise each widget with a colour. Let’s do that, and then create a red widget. ...

August 19, 2017 · 4 min · 655 words · theelous3

Concurrency in python, a primer.

Some Terminology I/O i/o (input/output) is pretty much any operation that requires getting data from outside of your computer’s RAM. (Usually means getting stuff from your hard drive, or over a network.) Hard drives and networks are physical things which need to be accessed, and as such they are extremely slow relative to running computations, or accessing things from your blazing fast RAM. The performance of an i/o bound task is dependent on the devices and interfaces between you and the resource you want to access. This could be kilometers of copper wire maintained by pigeons, or it could be your uber-fast SSD. ...

June 2, 2017 · 7 min · 1408 words · theelous3