RSSAmplifier

Blog

geeks have feelings

Xo Wang’s blog: building bots, breaking code, and fixing motorcycles—sometimes. Chaos is a feature and design is subjective.

geekshavefeelings.comRSS feed ↗36 posts

Latest posts

Geodesic Geometrics

Series index: Part I , Part II , Part III (this post) Part II established that recursive midpoint, one-pass 1 / n , and direct slerp methods for icosahedron subdivision are not equivalent constructions even at the same triangle count, though only by visual inspection. After quantifying the discrepancies, I need to reveal uncomfortable truths about geometry to budget unavoidable distortion. But…

Interpolation Tribunal

Series index: Part I , Part II (this post) , Part III Shared-edge “Vernier” comparison: midpoint and one-pass subdivision techniques place boundary vertices at different positions. In Part I , midpoint recursion and one-pass 1 / n refused to line up at equal triangle count. The mismatch pattern was suspiciously structured, suggesting distortion in the algorithms themselves * . Derp lerp § Remember…

Better-er Spheres, Fewer-er Triangles

Series index: Part I (this post) , Part II , Part III Back in 2009 I wrote a post about icospheres . It ended, “To be completed….” Completing it now. The case for icospheres § It might be easier for us thinkmeats to imagine UV spheres : globes with latitudes and longitudes. But for silicon, or at least rasterizing * GPU s, an icosahedron better approximates a sphere with fewer triangles (20 to be…

SSH into Windows 11 WSL2 with Agent Forwarding

Jump to Recipe ↓ You’ll SSH into WSL 2 through Windows with ProxyJump , forward your SSH agent end-to-end, and keep your GitHub SSH key on your laptop (or somewhere even safer!). SSH SSH I have a confession: I’m a Windows noob. I want to keep my PC ’s Windows 11 installation as “stock” as possible. I’ve worked with enough computers to know that fixing computers as an engineer is the optimal method…

Ducati Timing Belt Replacement

One of my obsessions of the past year has me pouring my anguish over the ( twice! ) theft of my fourth-ever motorcycle, a 2014 Ducati Monster 796 ABS , into its replacement, a 2012 Monster 1100 EVO , in the form of a fat tools & parts budget and sweaty wrenchwork. But I’m still gonna cheap out on maintenance by doing it myself, so here’s how I changed the timing belts. Approach § I bought this…

C++ Corrections

It takes some courage and a heap of self-importance to keep a blog alive for two decades without giving in to the urge to burn it all then either: reboot—not remake—the whole site with a fresh WordPress installation and a “Hello, World!” page that stands solo for four years, collecting vulnerabilities run screaming into the hills and let the sea swallow up the DNS caches If you’re reading this,…

Liftlord

Liftlord is a sumo grappler robot: specifically a (brushless hipster) 2 metric 12 O’Clockoff featuring belt drive skate wheels, real hot dog * grippers, servo-actuated clamper, and too many screws . It wasn’t the idea, but what it became as I rolled with the punches. Also, it’s not a beetleweight (3 lb)! Held on Sunday-before-Labor-Day, the micro battles (1 and 3 lb classes) event at Robot Battles…

Sensorless Brushless Can’t Even

Charles wrote a practical and less pointlessly technical post about his SimonK experiments, complete with a 250 lb system prototype . These are my hopefully in-phase science notes. If you’ve spent any time on hobby avionics and mobile robotics in the last few years, you’ve heard of the “SimonK reflash.” This refers to firmware written by the eponymous Simon Kirby based on the work of Bernhard…

Big Data: Test & Refresh

When I built the first Big Data in 2013, I was just getting to grips with my new surroundings. I even added the EVT moniker from my new job: in hardware development, “engineering validation test” means both testing the earliest prototypes and the prototypes themselves. Spring § I was overwhelmed by the Bay Area and toned down my typically masochistic design philosophy. I used a less-experimental…

The Orange Involute

Big Data needed more drivetrain power. How do you get more of that sweet, sweet sensored brushless power? More motor. These are eBay-supplied Portescap 22BL-8B-P motors, precursors to the current Portescap lineup of 22 mm motors . With different magnets on the rotor and a higher thermal resistance of 13 °C/W, they are rated for 20 W continuous rather than 70 W, but that’s still much more than a…

Big Data EVT

“8 oz” you said. This dang bar, man. Battlebots in the Cloud § To celebrate moving to the Bay Area, and by “celebrate” I mean “forgot that I registered for a robot combat event in a farm show complex in Harrisburg back when I was still living on the East Coast and now have to beast one so I can fly it into aforementioned Pennsylvanian snow pile,” I started living in the Google Workshops around…

Integer Arithmetic Continued

I continue my thing about integer arithmetic . The plan is to add so much math to this blog that nobody will read it, although to be fair, the amount of math that takes is “any” and nobody was reading to begin with. avg § Taking the average of two numbers is important. Super important. But how do you do it? It’s been over seven years since Peter Norvig posted “ Nearly All Binary Searches and…

Real Talk: Integer Arithmetic

Time for real talk, friends-o. We gotta address the bread and butter of we who massage code into machines: basic integer arithmetic. That’s right, absolute value | x | two-integer average a + b 2 I know, I know, you take your vitamin 0s and 1s and SELECT steel-cut rows for breakfast, but this is more fundamental than that; it’s about the core algos you learned in university, and how you’re…

Why Microsoft’s 3D Printing Rocks

Microsoft has just made its mark on 3D printing with its announcement of built-in support for 3D printing in Windows 8.1 . Now I don’t usually do blog posts like this where I pretend to keep up with news, but I see nothing but hollow rehashes (actual headline: “Microsoft Moves to Simplify 3-D Printing”) and vaguely 3D printing related filler ( LOL GUNZ ) on the tech pop media about this story.…

Flapjack Stator Thoughts

WARNING: THIS POST CONTAINS EXTREMELY SHADY ENGINEERING. HOLD NO ILLUSIONS ABOUT THE LEGITIMACY OF THE FIGURES AND METHODS. DO NOT TRY THIS AT HOME. I’ve been thinking about alternatives in constructing the stator for Flapjack, my latest 3 lb R/C combat bot , besides milling it out of 5 oz copper-clad circuit board material. I think I can wind coils that would be epoxied into the cutouts on a…

Delicious Axial Flux Flapjack

WARNING: THIS POST CONTAINS EXTREMELY SHADY ENGINEERING. HOLD NO ILLUSIONS ABOUT THE LEGITIMACY OF THE FIGURES AND METHODS. DO NOT TRY THIS AT HOME. We’re back to über-technical posts again. Today I’m introducing my current project, a new beetleweight (3lb) combat bot called Flapjack. When complete, it will be a super-compact shell spinner where the shell is a unique brushless motor. Here’s the…

How to teach how to PCB?

These days, a useful quality to have is the endurance to weather the disinterested gaze—collimated through glasses thick and transparent as hockey pucks—of gathered young engineers listening with open mouths and a slightly hunched backs. It freaks me out that I now have a solid decade’s worth of practice doing this, thanks to leading and teaching proto-engineers since middle school, yet humbling…

Fixed-point atan2

Originally posted February 2012, revised January 2017, and finally corrected February 2026 (to fix an inline sign typo in the code listing; thanks to Ayke van Laethem for spotting it). atan2 is a freaking useful function: given some y and x * , it computes their “four-quadrant” arctangent † , which is basically that coordinate’s angle in polar form . These two beautiful Wikipedia diagrams explain…

It Was Never About the Mileage

I was dismayed and slightly infuriated to find that the GMC Sierra Hybrid has been axed for 2014 * , but wasn’t at all surprised. The problem with the Sierra Hybrid, a full-size pickup truck (and its nearly identical brother, the Yukon SUV), was that it was created for Americans and appreciated only by engineers. When you think about how little pickup-needing construction work most engineers do,…

Trayrace

Trayrace is a minimal Monte Carlo renderer, created with the help of Greg Turk at Georgia Tech as an independent study project for my senior year. Code available at GitHub: https://github.com/GHF/trayrace Trayrace was designed to (eventually) have the bells and whistles of an advanced physically-based photorealistic renderer—like many renderers, it’s based loosely on PBRT —but was implemented with…

BabyCorntrolling

So I totally ditched Corntroller for its hot redesigned (square!) little sibling, BabyCorntroller . The control (corntrol?) logic board is called MiniCob * . I shrunk down Corntroller’s Tassel from credit card size (3.4″ × 2.1″) to just 1.95″ × 1.95″, while adding a wireless radio, doubling the number of power stages and analog frontends (so I can control two motors ), and still keeping the…

Conkers

Conkers is a game about hitting things. With your mouse. In high-quality (software rendered!) antialiased 2D graphics with framerates so smooth you’ll be able to snort lines off your monitor as you play. OK, so the YouTube video is at 20 FPS because my screen recorder sucks, but you get the idea. Download § Download 64-bit Windows binaries (12MB) Source code is available from my GitHub repository…

BabyCorntroller

Templated numerical integrators in C++

I find myself writing numerical integrators for physics solvers often enough * that I wished I didn’t have to keep rewriting them every time I used a different linear algebra library or changed the dimensions what I was solving. This is exactly what C++ templates are great for—writing code that works with multiple types with similar interfaces. So I whipped up Euler, midpoint, and Runge-Kutta…

Bringing up Corntroller

I compensate for my engineering mistakes with bigger engineering mistakes. -Me Every new board needs an “LED blink” program. It’s basically a Hello, world! for embedded engineers. Thing is, I put two seven-segment LED arrays on Corntroller , my brushless motor controller, so my LED blink program got a little bit fan-çay: The displays were the first things I wanted to program anyways (USB is next).…

Assembly-izing Tassel

Tasssel: the extra ‘s’ is for “scattering” Work continues on Corntroller , my sneaky copy of Shane’s sweet brushless motor controller . I got my Digi-Key order last week and started assembling the board at the Graphics/Visualization/Usability (GVU) Prototyping Lab , the sister lab to the Georgia Tech Invention Studio * , and home to my favorite hot-air reflow station on campus for prototyping. Now…

Corn-Troller: Tassel

Looking around at the hoppin’ electric vehicle scene happening at certain institutions , I realized that pretty soon I’d be playing catch-up to more than just Jamo when it comes stuff-strutting unless I started building something ridiculous, and quickly too. So in typical son-of-an-accountant behavior, instead of building my own scooter, I decided to go the manic whacky sneaky route and build…

5 V to 3.3 V with Preferred Resistors

What do you do when you want to scale a 5 V analog signal to 3.3 V? You build a resistor divider, possibly with an op amp-based voltage follower to drive low impedance loads. But what resistors do you buy for your resistor bridge? You want resistance values of some multiple of 1.7 to 3.3, but resistors come in preferred values , which are mathemagicatically spaced out resistance scales. None of…

HÄRDBÖRD: Interesting Bits

Update 2023/10/24 : See follow-up post C++ Corrections . OK, so I need to get better at blogging on caffeine. I spent about four times the amount of time writing the last blog post on HÄRDBÖRD than I did working on the stuff described in it. And let’s face it, what I described were my personal insecurities about electronics hacking becoming more popular & accessible, making my own talents less…

HÄRDBÖRD: Hardcore Electric Longboard

So I’m going to start using my blog as a build log for projects. All the cool kids are doing it. Introducing HÄRDBÖRD, the new reason for my keyboard layout § Today, I want to turn your attention to HÄRDBÖRD * , this wireless, all-aluminum electric longboard/deathtrap project I got myself involved in. My roommate Jamison and I are the principal designers (engineers? build slaves?) on a pair of…

Mistakes to Make on a Raytracer

Writing your first classical ray tracer was at one point a big deal. Now I don’t see what’s so difficult about the dark side of computer graphics. Tray racing , as I call it, is a remarkably entertaining exercise that will become the future of gaming and 3D visualization as computing hardware catch up with our ambitions * . Simply put, ray tracing’s generating computer images through a physical…

US International Dvorak

Windows (and many other operating systems) include by default an interesting keyboard layout called United States-International . It is essentially a version of the prolific American QWERTY keyboard layout, with many popular symbols and characters not found in English accessible through the AltGr key (or its Windows substitute, the right Alt key or Ctrl + Left Alt) and through dead keys . I saw…

Raxo

Raxo is a work-in-progress real-time rasterizing software renderer with a highly flexible, full-precision floating-point pipeline. This means that it draws animated objects and scenes using software running on the CPU instead of with hardware on the graphics card. Raxo is written in templated C++, and I am working on using just-in-time (JIT) compilation of assembly routines to accelerate…

Better Spheres, Fewer Triangles

Generating spheres through recursive subdivision of icosahedrons UV spheres are one of the easiest and most commmon ways to generate a sphere for computer graphics. UV sphere generated by revolving a circle about an axis planar to itself It has its charms: it looks kind of like a globe, with its clear longitudinals and latitudinals, it’s ridiculously easy to imagine and create, and it works well…

Donald Knuth Finally Sells Out

Harpy – Sumo Bots 2009

This will be a collection of design information, videos, and photos of Harpy, the robotic sumo platform I built for the Science Olympiad tournaments in New York State. Harpy’s drivetrain uses the motors that were used in La Cucaracha, only paired with larger, stickier wheels. It also has more capable, robust 4-cell 2.3Ah A123 lithium-iron-phosphate batteries capable of 70A continuous, but has a…