Hi friends!
It’s been a few months since I wrote about making calipers — since then I haven’t quite finished a substantial project, but I hope you’ll enjoy this smorgasbord of insubstantial ones and works-in-progress:
Also: I’m in Altea, Spain now until March 22 — if you’re in the neighborhood drop me a line!
Back in October I mentioned “Dark winter days are coming, so I’m thinking of buying/making a full-spectrum SAD lamp”. I wasn’t SAD enough to want LEDs-in-a-cake-pan shining directly into my face, so instead I designed a strip to bounce light off my ceiling. I had a hard time coming up with a design that:
and then I realized I could hide it in my desk, making an extremely illuminated workspace:
According to the LM-3000 light meter app, the illuminance of my (literal) desktop jumped from 4 to 200 lux. Looking directly at the undiffused panel from 1m away is about ~8000 lux. (This really puts into perspective the 10k lux therapeutic dose of SAD lamps; see also this video overview of SI illumination units.)
I used these 5000K “SunLike” LED strips, which appealed to me because they were inexpensive ($20 for 5m!) and the seller actually showed the spectra:
This is important, because (as I learned doing this project) you want light spectra pretty close to sunlight’s, and the standard shorthand measure for this, “color rendering index” (CRI) Ra, is pretty useless because it doesn’t include red, which is a pretty important color when it comes to reproducing skin tones. (This is why cheap lighting makes people look like zombies.)
Anyway, I mounted LED strips to some aluminum channel and used 3d-printed brackets to position it behind my television/monitor:
powered by a $25 Mean Well LPV-100-24 power supply switched via an Ikea Tradfri outlet.
This worked great, but when I replaced my 4k television with higher-pixel-density monitors to improve text clarity (thanks Nikita), I needed to find another way to both mount and hide the LED strip.
3D printing came in handy for mounting with simple snap-on flexure brackets:
and I used an extra strip of felt to hide everything:
(Sorry to my incredibly tall Dutch friends who might be able to look down onto the bare LEDs.)
I’m quite happy with how this turned out. LED strips are incredible!
If you’d rather spend $$$ than DIY, see this crowdfunded 50,000 lumen torchière and Andy Matuschak’s notes on The Sunday Light.
After replacing my 4k TV “monitor” with actual computer monitors, I found myself with, well, a television.
Although my partner and I have happily watched everything on laptop screens since college, we figured we might as well give this whole “TV in the living room” thing a shot.
I decided to design a mobile TV stand with the following requirements / challenges:
The TV is a 42 inch LG C2 OLED panel and has four M6 threaded holes in a rectangular 300 x 200 mm pattern on the rear for wall mounting. My plan was to somehow attach these holes to a wooden tripod.
When I imported my first design into the slicer, I realized it used wayyyyy too much plastic and didn’t feel particularly elegant:
I also had no idea how to connect the back leg to the middle wood rod. I tried to refine it:
but I wasn’t happy with the back leg connection being able to rotate freely, so I tried another approach:
Then I realized I could transfer the load with the pegboard on the back of the TV:
I knew I needed some kind of cross-bracing lower down on the legs for stability, but I didn’t have a sense of exactly what that should look like.
I tried adding a 3d-printed shelf using the maximum size my printer could handle, but was not thrilled at all with how that looked or felt:
However, getting it assembled was useful in that it uncovered an issue with the design: If the tripod legs can rotate axially, the castors will spin themselves into a position where the assembly as a whole can’t move. (The castors are Ikea Rill; how the hell is it possible to sell 4 castors for €5?)
I considered connecting the castors to each other with wood rods to lock them in place, but a friend suggested that this would probably lead to a lot of accidental kicking of the tripod and that I should instead put something further up off the floor, which is what I tried next:
I was particularly pleased with the joinery…thingy:
as it leans heavily into 3d-printing’s strengths: It’s complex geometry (tapered screw threads that apply clamping pressure onto the wood rod), printed without supports, with very little material. (The set of three prints in less than an hour on my Bambu Labs P1S and uses less than $1 of PETG filament.)
For scale, the cross rods are 20mm in diameter and the screw pitch on the thingy is 2mm.
Unfortunately, it just doesn’t provide enough friction for me to trust it with me TV — if I vault myself on the top of the tripod, the cross bracing rods pop out of their joints.
This led me to try increasing complex and deranged stuff like an ER-style collet:
Unfortunately, every design I came up with I could still pull apart with my bare hands — I guess there’s just not much friction between plastic and finely sanded wood ¯\_(ツ)_/¯
I decided to compromise on my “minimal cutting” requirement and now have a design with little retaining arms that clip into holes drilled through the cross rods. I’ve assembled this into a second prototype, which is currently undergoing load testing:
The castors don’t feel particularly smooth, and if the front ones catch while moving the assembly can tip forward distressingly easily — I’m not sure if the actual television will be an improvement (not as far forward) or worse (higher up).
Next I’ll try mounting some plywood to better approximate the TV weight and see how that feels. I’ve also ordered some spherical casters (ball transfer bearings?) to see if having lower-profile, more rollable feet improves the situation.
Stay tuned.
While I love spending time in visual CAD tools (recently, Autodesk Inventor), whenever I run into their limitations I can’t help but start to speculate about how the user interface might be improved.
For example, to create a new feature in Inventor, you pop open a modal and fill in all of the arguments. To create a circular pattern, you:
Often I find myself towards the end of one of these modals, after I’ve done the hard work of clicking on selections and typing in parameters, only to find that, e.g, I don’t have a visible axis I can pick. So I have to close the modal (losing my work!), go create the axis, open the modal, and re-enter everything.
This stings because the missing thing usually feels so obvious. E.g., the hole I’m patterning is on circular disk, but no matter how hard I point my cursor at this disk or its circular edge, I can’t get the computer to figure out the axis I want (the one through the center of the disk, duh!)
I think of this as a search problem in the “graph of types/functions” — you’re trying to find a path:
While Inventor has all sorts of “shortcuts”, they feel like hardcoded special cases. E.g., if I try to create a concentric constraint and hover over the exact same face, ohhhh suddenly you realize there’s an axis there, eh?
Having a uniformly applicable, general autocomplete would be useful in textual programming languages too.
I’m told that some of the fancier IDEs like IntelliJ will specialize autocomplete based on cursor position, so if you have some integer x
in scope within a function that returns a string, when you type return x.|
, the autocomplete will be to methods that return strings (x.to_string()
, x.format()
, …) instead of the full list of methods (x.plus()
, x.minus()
, etc.).
However, I haven’t seen any IDEs that:
repeat(x, n)
when you have some integer n
in scope and need a vector of x
‘s.My hunch is that the blocker is more on the UI side of things — designing textual patterns or dialogs to elicit the desired type from cursor position of a partially-written program or spawning “typed holes” that a user must fill in — rather than a computational one. After all, there are all sorts of extremely fast datalog engines (Souffle) and term-rewriting systems (egglog) out there. There’s also lots of interesting work done in program synthesis and superoptimization using SMT solvers (e.g., Synthesis of Loop-free Programs).
I just find it odd that a typical programming IDE today makes it easier to pull potential solutions from the vibes-space of billion-parameter LLMs but can’t find exact solutions via classical graph search across a few thousand functions.
Anyway, if you know of prior art in this space on UI and interactive use, I’d love to hear about it.
Until next time!
Very nice looking open-source 6-degree of freedom mouse based on inductive sensing. The hackaday.io project logs are methodical, including some FDM-printed compliant mechanism designs.
[WR] Visiting All 27 EU Countries in 80 Hours Of course it’s an American doing this. What’s even more incredible is that he pulled it off for ~$2k and some credit card reward points (the man just loves planning/optimization!)
“It works by injecting a JavaScript Engine inside the target process. That essentially allows you to inject or even replace native function with JavaScript code.”
“Our system kills salmon lice with laser while also monitoring health of farmed fish 24/7.” When I first saw the photos I didn’t believe this was real, but the straight-to-the-point marketing copy has me convinced it’s legit — I hope everyone involved with this made tons of money and feels extremely satisfied. I dream of being part of a such a badass, obviously good, epic engineering feat.
“When you make a thing easy to do, people often do vastly more of it. When you put up barriers, even highly solvable ones, people often do vastly less. Let us take this seriously, and carefully choose what inconveniences to put where.”
The Dusa Programming Language looks like a nice lil’ relational / datalog / logic programming language.
“Moving forward at 70% takes more guts, more strength of character, than holding out for 100%”
“new rule: ignore all decoupling requirements specified in a datasheet if they mention 100nF at any point.” See related article and HN discussion.
Building Bauble Fun signed distance field editor/compiler written in Janet.
Unbelievable New Discovery Shocks GoldenEye 007 Speedrunning!
“Italian industrial designer Joe Colombo loved smoking and drinking. In the early 1960s, he designed something that would make it easier for him to do both simultaneously”
The untold story of the vegetable peeler that changed the world
OKLCH in CSS: why we moved from RGB and HSL. OKLCH is the computable colorspace I wish I’d had back when I was doing tons of data visualization work.
Clearer Thinking’s Study On Dunning-Kruger Effect (Full Report)
Cargo airships could be big… but if they’re too big they’ll get ripped apart by turbulence
“Airports and cities may face delays and rising costs, but cruise ships keep breaking records. They show what can still be built.”
Floating Point Visually Explained; see also float.exposed to quickly inspect the bits of a floating point number.
CHO cells are the industry standard for producing protein therapeutics. The line originates from 20 Chinese hamsters evacuated from Nanking in 1948, avoiding “roving bands of communists” on an 11-hour station wagon trip, driven by a physician “armed with a bottle of brandy, a book of common prayer, and my old .45 Colt”. (PDF)
Advanced Napkin Math: Estimating System Performance from First Principles
Pro Mold Maker Reacts | Production Thoughts vs YouTuber Style | RTA Fabrication
Lush: my favorite small programming language. “this is what R&D on machine learning algorithms had to be back then. As a tool for building your own little universe of new numerics oriented algorithms it is almost incomparably cozy and nice. You get the high level stuff to move bits around in style. You get the typedefed sublanguage to compile hot chunks to the metal, and you get C/C++ APIs or adding new functions written in C/C++ as a natural part of the system. Extremely cozy system to use. While it’s not the Lisp machine enthusiasts like Stas are always telling us about, it’s probably about as close as you’re going to get to that experience using a contemporary operating system and hardware.”
Netizen wins bet after massive tent erection. See also video of the event.
Modifying and Automating the Addi Knitting Machine for Multi-Color Knitting. For fun and Profit!
Not sure when I’ll need to Reversibly Sticking Metals and Graphite to Hydrogels and Tissues, but it feels like it’ll be really handy in some specific situation.
“kink gear is often marked up for its quality—you should buy leather from equestrian or hunting gear makers bc they are made for rugged use in damp environments… 1/”
if the wooden mechanical MIDI music box was too wholesome last time, check out this electro-mechanical synth based on spinning optical encoder disks.