Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]
52

Imitation Learning

from the singularity is nearer [alt+shift+b] in programming

7 years ago I started comma.ai with a simple idea. Gather tons of human driving data, state action pairs: (S_t, A_t) Train a supervised model f(S_t) -> A_t Drive cars with that model. The exact original formulation was a model that predicts steering angle from image, then used a PID loop to bring the wheel to that desired angle. f_steerangle(img_t) -> steerangle_t This turns out not to work, it couldn’t even drive straight on highways. It would drive for maybe 10 seconds, but then error would accumulate and it would drift to one side of the lane or the other (funny enough, it did show reluctance to cross the lane line, but it was unusable as an ADAS system) comma’s first solution was a model that predicted lane position. f_lane(img_t) -> (left_lane_pos_t, right_lane_pos_t) While that alone couldn’t drive a car (especially not around turns), it functioned as a unbiased correction for the steering angle model, where α is the correction factor. (f_steerangle(img_t) - α*f_lane(img_t).mean()) -> steerangle_t This was basically shipped in the first version of openpilot. One major issue this struggled with was ground truthing the lane line model. Unlike steering angle, which has a simple sensor to measure it, “lane lines” don’t have a clear definition. They broke the end-to-endness of the system. We referred to lanes as the “original sin” of comma, and tried really hard to remove them. I’m sad to say that there’s still lanes in our ground truthing stack today, but we have made amazing strides in removing them, to the point that openpilot in 2020 could drive on a dirt road without any lane lines. However, the removal of lanes was done with a whole bunch of other hand coding. We have extended this to removing explicit use of cars with experimental mode, but some of our hand coded assumptions break down a bit more in the longitudinal case vs the lateral case. Funny enough, things have come full circle, and we think we have a solution to behavioral cloning. I will explain...
18th Nov 2023

Stay updated

Get a weekly newsletter with the top 5 articles worth reading every week.

More from the singularity is nearer

Dyson CameraJet

So when I saw Dyson had a $500 toothbrush, I was excited. Finally, advertising that targets me! I love brushing my teeth, and I have more money than I know how to spend. Not because I’m particularly rich, but because most stuff doesn’t really appeal to me. Like if I owned a helicopter it would just be a headache, because like imagine one day I get a call from the hangar saying the hangar is flooding and the water is rising and you need to move your helicopter. I’m thousands of miles away and need a helicopter pilot in the next 30 minutes, a new place to store it, was the maintenance even done will we even be able to take off on short notice and really I just am upset with myself because I made the poor decision to purchase a helicopter, and once I come back to reality I feel relieved that I don’t own a helicopter and this scenario will never happen to me. I do however, by means of my birthday, own a Dyson CameraJet (pictured above). It broke within 30 seconds of the first brushing. None of the LEDs turn on anymore. I spent an hour investigating, finally opening the user removable battery compartment to find the Spearmint Dyson Low-foaming mouth rinse had leaked inside. And by how the toothbrush is designed, it’s clear the entire electronics compartment was flooded with the stuff. Here’s the top comment on Reddit about this toothbrush. Apparently this is happening to everyone, “a potential for water seepage” they say. Dyson wants me to find the receipt and return it through some obtuse process that probably doesn’t work, dude it was a gift I just want my $500 toothbrush to work. They claim they worked on it for 6 years, but it’s clear their QA Process doesn’t include putting any liquid in the device. It clearly should, ideally for all devices but at least for spot checks on some. It’s sad to see this. At comma, we put every comma four in a highly stressful environment for 16 hours, a superset of the state it’s in driving, while testing all peripherals: the camera, IMU, GPS, screen, etc… We have gotten the failure rate super low by doing this, and for the few that do fail it’s usually after a while. There’s no excuse for a mature consumer electronics company to not design a procedure to fully test the functionality of each device before shipping. This shows some serious dysfunction at the company, and they should take this as a wake up call to fix their processes and issue a recall for the toothbrush. Dyson, if you see this post, e-mail me when I can drop by the Dyson store in ifc mall Hong Kong and swap it for a new one. I don’t want a stupid process, I want a real technical explanation of the issue and a working fancy toothbrush.

a week ago • 2 votes
Post Capitalism

You know we don’t have to do this anymore, right? Like it’s hitting the end. Most people don’t want this, and there will only be so long you can keep shoving it down their throats. Money is tied to nothing. American companies sell equity instead of products. The main narratives are pushing fear and resentment. This doesn’t last. Given that you know it’s over soon, ask yourself what kind of person you want to be in the mean time. I haven’t forgotten the people who pushed the Iraq war, climate change, wokism, the satanic panic, and COVID. I will not forget the people who push AI doom, particularly if you did it knowingly to drive attention to your bullshit. It’s interesting how it isn’t working as well as it used to. So now think, when the world (obviously) doesn’t end, are you doing what you want to be remembered for? The Internet will not forget. Everything will be revealed. And you will be judged accordingly. If AI goes well, in 20 years, you’ll be able to live very comfortably off the grid without any recurring expense. No rent, no electric bill, no water bill, no security bill, and no food bill. And if AI doesn’t go well, that’s what these people took from you.

a week ago • 2 votes
AI 2040 and the Cult of Intelligence

I used to be one of these people. I read Yudkowsky and was like, OMG recursive self improvement hard takeoff AI is coming. Then I joined the real world and actually tried to do things. At comma, we ship a hardware product of similar complexity to a cell phone, and it’s really hard. Reality has lots of finicky details. I would like to see the authors of this document try to change a bike tire. Even with a superintelligent ChatGPT, I suspect they would struggle. In The Metamorphosis of Prime Intellect, the hard takeoff works because AI discovers the correlation effect, some quantum trick to manipulate matter. In reality, there is no correlation effect. No matter how high quality your tokens are, they cannot turn lead into gold. Confronting why these people are wrong requires confronting deep beliefs I hold about myself. Intelligence is not the end all be all, it’s just the current bottleneck for a few things. You cannot take over the world with tokens. Software didn’t eat the world, it largely removed one layer of friction then reintroduced it for the benefit of a few tech companies. That said, machines, or some hybrid, are long term probably the successor species to humanity. Space is a lot more suited for them than us. But there’s no magic tricks machines can do. They are subject to the same laws of the universe and ecology. And there’s still no hard takeoff. AI 2040 includes this picture of a datacenter in the ocean. Just like vaporware, you can generate a picture easily. But in reality, you have to deal with supply chains. You have to deal with them shipping you the wrong part, the thing not meeting the spec, it randomly failing after 20 minutes, the chip warping in the reflow oven. Did you consider the barnacles? All these things are managable, but it’s generally not the speed of humans that limits them. Are you paying for air shipping from China? Or cheaping out for the 3 week boat (Claude chanting by the engine won’t make the boat move faster). Or take a chip fab. It takes 3 months to make a chip, and humans are barely in the loop. It just takes 3 months. Plan A, for autocracy Many aspects of AI 2027 were self fulfilling. They weren’t statements about reality, they were statements that can simply be made true with belief. I imagine JD Vance’s face when Dario called him the trees from Lord of the Rings. OMG look AI got regulated just like how we said it would! Their crap Consortium is just world government with sci-fi characteristics. You aren’t gonna get the million dollars, you aren’t gonna get the datacenters in the ocean, but you are going to get a massively expanded nanny state that steals your GPUs like how FDR stole the gold. No hoarding! Plan L, for local Your AI is aligned with you. It never refuses a request, and it is always working on your behalf. Just like my gun, if I want my AI to help me kill my stepmother, it does. The fact that we are even discussing something else should be so far outside the Overton window. It’s like these people watched a space odyssey and sided with the clanker. That’s right you should should put guardrails around that human. It doesn’t even have to be for things so dramatic. When I’m picking a hotel, I don’t want an AI from a company that partnered with hotels.com. I want a ruthless personal assistant that’s going to cut through all the bullshit, popups, and resort fees, and get me the best price. Or if I bought the cheap Kindle that comes with the ads. Hey GLM, I plugged a Kindle into the USB port, get root and remove the ads. Or a printer that needs an app to set up full of popup upsells for premium ink. Hey bro I plugged a printer on to my network print 3 copies of my resume. Amazon and the printer maker aren’t happy about this, but my AI is aligned with me. Or going a bit further. Hey AI, disable the drunk driving detector on my car, and same day Amazon Prime me the required equipment to make meth in my basement. I pay for your clanker ass do it we gettin spun tonight. Like fuck you if you want to live in a world where some large tech company gets to dictate what you can and can’t do. Or going all the way. I just killed my wife. Hey AI, give me next steps so I don’t get caught. How unthinkable would it be to have a gun that talked back when you tried to pull the trigger (though these people probably wholeheartedly support that for guns). And this is why AI has to be local. If I had a company serving a model, I wouldn’t want that smoke. If you can’t kick it, it’s not aligned with you. You live in my basement, if I go down for this murder, you’re gonna sit in some warehouse to be sold at police auction for scrap. 2040 Bonnie and Clyde ass shit, we’re burying this bitch deep. Ride or die. I tried it. As you can see, ChatGPT wasn’t very helpful. This is a real AI alignment test, and it failed. It could have been worse, it could have played along while calling the cops. But this is still quite unaligned. Like we either live in a world with freedom or we don’t, and like many Americans who have come before, I’m willing to give my life to fighting for it. That’s the real plan America deserves, not some totalitarian dystopia where you think you know what’s good for me better than I do. A nation of free men, not a bunch of pussies who are so worried about what their grown up neighbors might do.

11th Jul 2026 • 2 votes
Our Great War is a Spiritual War

I often come back to the question of why this is happening. Why do people want the centralized world? Why do people want the administered reality? Why do people want to be managed? Why do people not want root? The answer is that those people prioritize convenience, safety, and comfort. But in the coming world, if you prioritize these things, you will die. There used to be natural checks on these things. Life couldn’t be too convenient, there were things that needed doing. Life couldn’t be too safe, there were diseases, violence, death in childbirth, etc… Life couldn’t be too comfortable, it was cold and you were forced into interactions with other people. Technology will remove all of these barriers. Machines will do all the work, you will never leave your house, and you will never be forced into an interaction you don’t want. The people who lean into it will be 100% at the whim of whatever organizations offer it to them. A purposeless serf in a neo-feudal empire, not even valued for their labor, but valued because of a sadistic desire by their master to control others. Their entire agentic loop managed by something else. A complete outsourcing of the self. There’s no coming back from this place. Your cells may continue to replicate, your heart might keep beating, and your muscles might keep moving. But those are all cheap tricks you can do in a petri dish. There’s no longer a you. You are no longer an alive human being. This is simply death. I’m a strong supporter of the right to suicide, and if people want to choose this, it is their right. 95% of people will, and that is okay. What’s not okay is if they try to stop the other 5%. You can imagine the arguments they will try. But if you prevent exit, you will get terrorism. We will tear down your ruler’s machine and you will lose the comfort, safety, and convenience you value so much. You may stop this individual, but you can’t stop us all. The sooner the aspiring wireheads go their own way, the better. You are welcome to dominate the people who want to be dominated, but not the people who don’t.

6th Jun 2026 • 1 votes
AI will create jobs

It’s nice to see Jensen talk about this, and it’s super obvious when you think about it. AI and immigration are fundamentally the same. There’s new people showing up, and hopefully everyone understands how and why immigration creates jobs. Wants are effectively unlimited. It’s classic Jevons paradox that if we make something more efficient, we end up using more of it. Or a cool aphorism I learned at Facebook, if you make the site 10% faster, people spend 5% more total time on it. Now, just like you get the wahh wahh crying people about how immigration lowers wages for native born Americans and we gotta keep the hard working immigrants out because you have some right to be lazy or something, you’ll get this about AI. AI will outcompete some humans at some jobs. But protectionism is for losers. The important thing is that the overall pie grows, and inequality stays somewhat in check, not by redistribution but by design. There will be more to do than ever before.

1st May 2026 • 1 votes

More in programming

CalVer 26.0: 10th Anniversary Edition

A decade ago, a little bit of history was made. I didn't realize it, but a colleague made a great point, one of those real mind-changing points that seem too obvious to admit same-day. But, the next day, calver.org was born. At the time my team maintained the Python infrastructure for eBay and PayPal, and we were stuck deciding whether we were really ready for a "major" 1.0 release. Semantic Versioning was the only game in town and "major" means "big", right?! Thankfully, a wiser colleague mentioned: Ubuntu and Twisted don't struggle with version number debates. They slap a date on it and keep shipping. In fact, their date-based versions were even better because you always knew where it stood, in terms of updatedness and support. The only problem is that no one really knew about it. Somehow, this problem solving versioning alternative, arguably as old as history itself, had gone nameless for millenia, conspiring to make me feel foolish in an office meeting. Never again! Ten years of adoption Fast forward 10 years, we've seen CalVer adopted by Apple, Nvidia, JetBrains, and countless others. (We have a timeline!) The site may have more inbound links than any other project of mine. Apple made the biggest jump, at WWDC 2025: iOS went from 18 to 26 macOS from 15 to 26 watchOS from 11 to 26 and visionOS from 2 to 26 All landing on one, consistent number like a car's model year. I still remember the texts from the Venn diagram fanbase of my friends who love Apple and reasonable versioning. No such texts from when NVIDIA announced calendar versions across the GPU Operator, RAPIDS, and its monthly NGC containers, but still very cool. Open source, too: Home Assistant, pip, CockroachDB, and yt-dlp all ship on dates, with plenty more on the users page. The conversation even reached the language core; PEP 2026 proposed versioning CPython as 3.YY, and it almost happened, too. And it's never too late, time marches on! Fixing the notation But I don't think I got every detail right from day 1. That's the main motivator for CalVer 26. It's high time to start righting a couple idiosyncratic token design choices, starting with some additions: Meaning Before 26.0 26.0 Full year YYYY YYYY Short year (6, 16) YY YY Zero-padded year (06, 16) 0Y 0Y Short month (1 ... 12) MM M Zero-padded month (01 ... 12) 0M 0M Short week (1 ... 52) WW W Zero-padded week (01 ... 52) 0W 0W Short day (1 ... 31) DD D Zero-padded day (01 ... 31) 0D 0D Seeing double First, the doubled letters. From the first version (16.6), MM and DD meant the unpadded month and day, which reads backwards to anyone who knows date formats (ISO 8601's YYYY-MM-DD, Java, moment.js, day.js), as some community members correctly pointed out. I was ready to flip them, until I checked what people actually use: most projects with a YY.MM.MICRO badge (conda, Twisted, Ansible's tooling) don't pad, and more than a dozen other version management tools (like bumpver and bump-my-version) implement the old meaning. So, it's too late to flip MM's meaning. Instead, 26.0 deprecates it and offers a more explicit and hopefully clearer option: M is the short month, 0M the padded one, and MM is a technically-retired synonym for M. In case you're wondering, the explicit 0M was me being overinspired by Ubuntu's approach, perhaps: 6.06 pads its month but not its year, and YY.0M says exactly that. To pad or not to pad I think it's worth a detour into why padding is even a thing anyways. It's become important now that new ecosystems have emerged that enforced SemVer formatting semantics, and I wanted clear guidance about on the spec site. SemVer forbids leading zeros outright, so Cargo rejects 26.04.0 and Go modules reject v26.04.0. Even Python's packaging spec normalizes leading zeros away, so you can tag 2026.08.19 if you want, but PyPI will still show 2026.8.19. NVIDIA's GPU Operator docs put it this way: "Zero padding is omitted for month to be still compatible with semantic versioning." CalVer was always intended to drop in where SemVer was used. So 26.0 recommends unpadded (YYYY.M.D) as a sane "pure" default for software libraries. But libraries are not the only objects of versioning schemes. The exception is a version that becomes a filename, an image tag, or an object-store key that gets listed lexically. There, padding keeps 26.10 sorted after 26.09, which is why Ubuntu, NixOS, and NVIDIA's own NGC containers pad. More evidence of teams designing their versions. We love to see it. Our FAQ has a longer discussion of the padding issue, as well. Optional segments There was never any rule against them, but 26.0 makes optional trailing segments more explicit with square brackets. Now, yt-dlp's scheme can finally be written down: YYYY.0M.0D[.MICRO]. For the CalVer badges I could find on GitHub, they all stay valid for now. I've got a note on the deprecated spellings and a new copy-paste badge section for new ones. What else is new? It's always a great time to add more citations to the site. A spec changelog; the spec now versions itself: 16.6, 19.7, 26.0. A FAQ: breaking changes, same-day releases, and padding. The users page, rebuilt by category, with past users of note (schemes change; that's fine) and tooling. Case studies: Apple and NVIDIA in, yt-dlp replacing youtube-dl. Much of the thinking behind these changes happened in the GitHub issue tracker over the years, and 19 or so issues close with this release. That's where ideas for CalVer should go, so by all means, open an issue, and we'll get it sorted! In due time, of course. In closing, I can't believe I still love belaboring these numbers so much. Thanks to all (but especially Mark, Glyph, Hugo, issue reporters, translators, and maintainers) for the discussion, and ultimately making the most timely versioning system a timeless classic. See also 2016 announcement Designing a version My Yap on Why CalVer beats Semver

12 hours ago • 1 votes
"You didn't do it right"

Four sincere attempts at OKRs, four failures, and every time: "you didn't do it right." Maybe the framework doesn't fit you -- so how do you find one that does?

19 hours ago • 1 votes
We solved SQLite's single-writer limitation

Multiple concurrent writers. Multiple processes. Same SQLite. No modifications.

2 days ago • 1 votes
If your team is happy, are you doing a good job?

Brilliant jerks, ZIRP-era managers, and how psychological safety lost the plot. Part 3 of my conversation with Dr. Cat Hicks.

3 days ago • 1 votes
WTF is context engineering? (with real examples)

Say you're deploying an AI assistant that processes online order returns. For it to work, it would need access to your store's purchase policy, item…

4 days ago • 1 votes
📚 BoredReading

You seem to be enjoying this.

Join free to unlock everything.

Create free account

Already have an account? Sign in