# Cam Pedersen > Engineer and optimist. Personal blog covering software engineering, CAD, AI, TypeScript, Rust, and startups. ## Blog Posts - [The Second Half](https://campedersen.com/second-half): The United States turned 250 last Saturday, and I missed the deadline on this post. I don't feel too bad about it though - the founders missed theirs too. Congr - [The Importance of Being Idempotent](https://campedersen.com/agent-patterns): "The truth is rarely pure and never simple." Algernon, The Importance of Being Earnest I've been building agentic apps for friends lately. I keep running into t - [OneMinusDiv Is All You Need](https://campedersen.com/sheffer): That's a half-adder built from five NAND gates: two inputs, a sum and a carry bit. It's the thing that lets a computer add . Chain a row of them together (well, - [How to Get to Tomorrow](https://campedersen.com/kardashev): K = 0.728. Nikolai Kardashev designed the scale in 1964 to classify civilizations by how much energy they command. Type I harnesses all the energy hitting its p - [Noids](https://campedersen.com/noid): Those aren't boids. I'm calling them noids - neural boids. There are no hand-written rules; a small neural network takes in what each agent can see and outputs - [A Number with a Shadow](https://campedersen.com/tang): You can measure a curve with a ruler. Lay it across two points, read the slope. Zoom in and the ruler shrinks, so the approximation gets better. Keep zooming an - [Area Man Discovers Gravity](https://campedersen.com/phyz-at-home): Two particles walk out of a collision. They fly apart (one to the left, one to the right). Light-years apart. No connection between them. No wire, no field, no - [_ Considered Harmful](https://campedersen.com/183x): This match block ran my CAD kernel. One arm handled every surface pair the kernel didn't have an analytic solution for. It was supposed to be a rare fallback. I - [Loon is a Lisp](https://campedersen.com/loon): I built the programming language I've always wanted! I've attempted a few times before, but this time I had Claude to help me. It's called Loon. Lisp Of Opinion - [Paper, Scissors, Gravity](https://campedersen.com/phyz): I don't know what a Plücker transform is. I couldn't explain the Featherstone Articulated Body Algorithm if you put a gun to my head. I have never taken a physi - [The $6 Bug](https://campedersen.com/idle): I fixed a bug that costs my users six dollars a year, combined, across all of them. and I'd do it again, too! vcad is a CAD app I'm building. It has a 3D viewpo - [The Singularity will Occur on a Tuesday](https://campedersen.com/singularity): src= alt="Always has been astronaut meme" / "Wait, the singularity is just humans freaking out?" "Always has been." Everyone in San Francisco is talking about t - [cad0: A (shitty) Text-to-CAD Model](https://campedersen.com/cad0): I keep asking AI for a mounting bracket and getting triangle soup. Every text-to-3D model gives me a frozen mesh - dead geometry I can't edit, can't constrain, - [The King and the Wizard](https://campedersen.com/eigenpute): There are two ways to extend your reach beyond your own body. (I mentally bucket people into these when I meet them. It's quite useful.) The King makes one deci - [Cutting Up Curved Things](https://campedersen.com/tessellation): Your GPU doesn't know what a cylinder is. It knows triangles! That's it. Three points, maybe a color. The entire vocabulary of graphics hardware fits on an inde - [2D or Not 2D](https://campedersen.com/uv-space): Tonight I shipped cylinder booleans. Subtracting cylinders from boxes to make holes. Classic CAD operation. The problem: a cylinder intersects a cube's face alo - [Building a CAD Kernel in One Night](https://campedersen.com/brep-kernel): Yesterday I posted vcad on Hacker News. It hit the front page. I was stoked. Then I read the comments. The Roast "using a geometry kernel that operates on trian - [Parametric CAD in Rust](https://campedersen.com/vcad): I keep designing physical parts for our robots. Motor mounts, sensor brackets, wheel hubs. Every time, the workflow is the same: open a GUI CAD program, click a - [Hung by a Thread](https://campedersen.com/rayon-mutex-deadlock): It's 2am and my robot is frozen. Not crashed, not erroring, just... vibing. It's sitting there with the motors off, completely checked out. I've been debugging - [/cleanup](https://campedersen.com/cleanup): tldr: Copy this into Claude Code: My Desktop had 47 screenshots on it. I didn't notice until I accidentally hit "Show Desktop" and saw the carnage: screenshots - [Code is Clay](https://campedersen.com/code-is-clay): Kerri and I took a ceramics class recently! I made a hypercube. My instructor was... disappointed. The class was supposed to make a mug, or a bowl, something fu - [Just Press Enter](https://campedersen.com/just-press-enter): You're staring at a cursor and the prompt is almost right, but maybe you should rephrase that first part. Should you add more context? What if it misunderstands - [Ownership Mindset](https://campedersen.com/ownership-mindset): I'm loving my 30s so far. Brains are complex and I'm a college dropout, but I like to think of the human developmental process in decades (maybe I was a slow bl - [RIP RubberDuck](https://campedersen.com/rip-rubberduck): A year ago, I set out to find my ikigai. I found it, but not in the way I expected. tldr: - I'm shutting down RubberDuck - I'm really proud of what I built - I - [0 to App Store in 60 days](https://campedersen.com/0-to-app-store): // import progress from './progress.mp4'; I just shipped my first app to the App Store in years! It was a much different experience this time - it took only 60 - [You should try running](https://campedersen.com/you-should-try-running): 'Tis the season for resolutions, and I have a suggestion: you should try running. My wife and I just did our yearly planning for 2024. I was reflecting on my ye - [What would an LLM OS look like?](https://campedersen.com/llm-os): Andrej Karpathy's YouTube channel is fantasic. He just published an Intro to Large Language Models video which is a great overview of the subject. In this video - [Leverage in Chaotic Systems](https://campedersen.com/leverage): Disclaimer: I have no idea what I'm talking about. Systems have infected my thinking lately. I haven't read "the book" yet, but I tend to think of systems in te - [Finding Ikigai](https://campedersen.com/ikigai): I quit my job this week! I've been extremely lucky so far in life. My locally optimal decisions have generally turned out to be globally optimal. It would be ni - [What is Grok?](https://campedersen.com/grok): // import working from './working.mp4'; // import sound from './sound.mp4';   In January, I tweeted that I was going to ship something new every month this - [TypeScript Generic React Components](https://campedersen.com/generic-components): Simplicity of composition is what makes React so powerful to work with. I recently discovered a pattern that enables more composable components. More specifical - [Missing records in Rails 6.1](https://campedersen.com/rails-missing): Cunningham's Law says "the best way to get the right answer on the internet is not to ask a question; it's to post the wrong answer." Maybe a good extension wou - [Enums vs String Literals in TypeScript](https://campedersen.com/enum-vs-string): I've been fighting with enums in TypeScript this week. Specifically, whether it's better to use a string literal type or enum to represent a reused value. They' - [Prettier for Markdown](https://campedersen.com/prose-wrap): While working on this blog I got annoyed with manually worrying about line breaks. I use Prettier on save for all my code, so why should I have to think about t - [TypeScript - why Dachshunds are bad drivers](https://campedersen.com/typescript): Today I gave a presentation about adopting TypeScript into a React codebase. Here are my slides and notes, so others can get just as little enjoyment out of thi - [Sharing Audio in React with useContext](https://campedersen.com/react-audio): I ❤️ React Hooks, and my favorite lately is . I was working with YKYZ recently, an audio-based social network. They have a feature that lets you listen to all B - [Unassociated records in Rails 5](https://campedersen.com/unassociated): Recently I was working on a Rails project, and stumbled upon an interesting and hard-to-gooogle problem. I was looking for how to load records with the absense - [iPad as my Main Computer](https://campedersen.com/ipad): I recently went to China for the first time to help setup our production line for Depict. I decided I didn't want to bring my MacBook Pro with for weight and se