Hi friends,
Lots of work-in-progress this month; let’s dive in!
Last newsletter I’d just discovered solo 401ks and the Mega Roth Backdoor. I’ve since set all that up via these folks and couldn’t be happier — simple fixed fee, fast email replies, and they even fill out all the paperwork around rollovers and brokerage account setup. (Efficiencies from specialization, who knew?)
If you have self-employment income and want to play the 2019 Mega Roth Backdoor game, you have three more weeks to:
establish a solo 401k (they took a day to draft the paperwork and it took me an hour to copy/paste my signature around the various PDFs)
rollover any existing traditional IRAs into your new 401k to avoid “pro rata” double taxation when you use the (Mega) Backdoor; this might take a while since, you know, banks and checks and mailing via stamps and stuff, so get on that ASAP my self-employed friends.
Check out my sweet new (used) oscilloscope, vintage 1998:
That splash screen clip art really brings me back to those simpler times — plus, having never known the Internet or garbage collection, the 20 year old scope works great and has no UI lag whatsoever. (Though if I want to export anything, it’ll be through that floppy drive on the front…)
Definitely my best Black Friday acquisition in a long time — thanks to my girlfriend’s father, who hosted us overnight on Thanksgiving and pulled this out of his attic for me!
I’m using the scope to debug a photodiode and analog amplification circuit that reads infrared laser pulses which I’ll be using to position the computer controlled track saw I mentioned last newsletter.
This is my first time using “bare metal” Rust and STM32 microcontrollers, which is coming along swimmingly. There’s something quite satisfying in connecting code to physical properties (i.e., needing to know that, at 72MHz, each CPU instruction takes about 14 nanoseconds).
Then again, it took me 10 hours to just measure some signal pulse widths: The laser sweeps every 60Hz, which means a pulse timescale of 16ms, but my microcontroller 16-bit hardware timers overflow every 910 μs (2^16 / 72MHz), so two timers need to be chained together, etc., etc., etc.
On the plus side, on bare metal one can easily measure exact CPU cycle counts — no need for statistical sampling, JIT-warmup animal sacrifices, or any of that nonsense.
The Rust community has some pretty sweet projects in this area too. In particular, check out RTFM (“real time for the masses”), which leverages hardware priority interrupts to let you write deadlock-free concurrent code without run-time synchronization overhead.
I’ve spent a decade as a professional LISP programmer, usually surrounded by a (un)healthy dose of dynamic JavaScript / web stuff. Two years ago I started writing Rust to experience a proper type system and better develop my mechanical sympathy (thinking more about memory layout, caches, etc.).
But my education as a programmer will always be lacking until I spend a few hundred hours with the numerical modeling and GUI-creation capabilities of the world’s most popular programming language: Microsoft Excel.
Not “spreadsheets”, Excel. (Specifically, Excel running in a Windows virtual machine that’s never seen the Internet.)
I’ve decided to invest in Excel skills for a few reasons:
Mastery is possible: Desktop Excel can’t be changed out from under me by product managers and engineers trying to advance their careers. (Sorry every hip new web spreadsheet/database tool.)
Mastery will pay long-term dividends: Excel itself isn’t going anywhere; honestly I wouldn’t be surprised if it outlived Unix.
I suspect the visibility of intermediate results will help me develop a numerical intuition more quickly than doing similar calculations with, e.g., NumPy.
Personally understanding the capabilities and limitations of the most successful end-user programming tool will allow me to more effectively troll the next nerd who gushes to me about Hypercard or the Memex.
Did I mention I have to do my taxes?
I’m only a handful of hours in, but so far I’ve discovered functionality that clearly addresses many of the hot takes I’d heard against Excel. E.g., there are lots of ways to name cells so formulae don’t have inscrutable references like “F17”. It’s also possible to define tables that act holistically (which avoids errors related to adding/removing rows/cols).
I’m sure it has its flaws, but all-in-all I’m excited to experience a different computing culture.
Two things I’ve found helpful so far:
Spolsky’s entertaining You Suck at Excel demo discusses “R1C1 mode”, which blew my mind about how Excel works internally.
Using AutoHotkey to give Excel Emacs-like keyboard shortcuts (yeah I’m learning Excel, but you can’t expect me to go completely computer-normie).
If you are interested in pair programming in Excel (especially in the context of pass-through entity tax law), let me know!
Robust, Visual-inertial state estimation: from frame-based to event-based cameras: New bio-inspired camera technology responds to intensity changes rather than intensity itself; very high frame rates + drone acrobatics
Do you have a personal algorithm when deciding on large purchases? Depending on your background, either a completely obvious or a revolutionary way of thinking
Matthew Walker’s “Why We Sleep” Is Riddled with Scientific and Factual Errors: “Note: I link to a bunch of paywalled studies in this essay. Please do not use sci-hub to access them for free”
Until next time my friends!
Kevin