• Came across @eddiejiaoobj’s launch of Common Knowledge today:

    Now, Machine Intelligence gives us a new material – one whose inherent malleability allows us to invent entirely new categories of document. How will these new documents allow us to create, share, and collaborate in new ways?

    And then remembered a few tweets about AI-friendly frameworks:

    It’s evident that AI favors frameworks like Tailwind and React, but I hadn’t thought as much about the file format layer. I was recently trying to convert CSVs using various models and the results were surprisingly lackluster — reasoning models like ChatGPT o1 and DeepSeek r1 would forget to convert particular cells or get into logic loops trying to write and rewrite code that could interpret the input CSV.

    Non-reasoning models actually did better, particularly ones that I specified should not write code at all. But then the challenge was getting the model to output the correct number of commas in each row to put the right data in each column.

    AI prompts and responses are heavily reliant on Markdown formatting, and there’s evidence that Markdown can help improve understanding of prompts. It understands XML well, and is getting better at JSON.

    I’m sure understanding of CSVs will improve, though I wonder if they’ll need to be considered more like images, given their 2D nature, than text. Is there even a large enough training set for CSVs?

    And then finally, I wonder if Microsoft will train models on a corpus of Office docs — .docx, .xlsx, and .pptx. As far as I can tell with Microsoft 365 Copilot, the AI is either generating standard text or markdown markup that is then opened in Microsoft Office (screenshot), or helping with text generation within the application itself. Behind the scenes those formats have a shared Office Open XML markup, but maybe the bigger issue is bundling files as a ZIP?

    If you ask o1 to generate a simple Word document, it thinks for a few minutes:

    Crafting the document request

    I’m figuring out how to generate a landscape-oriented Word document featuring “Hi there” and considering methods for providing it since attachments or base64 encoding are not options.

    Assessing options

    I’m thinking through creating a base64-encoded docx file or a minimal Open XML document, which the user can rename to .docx, as direct attachments aren’t feasible.

    Crafting a Word doc

    I’m set to create a minimal Word doc featuring “Hi there” in landscape orientation, then encode it into a base64 string or provide raw text for users to save as a docx file.

    Preparing a solution

    I’m thinking about crafting minimal Word doc instructions or a raw text file with “Hi there” for users to convert to docx, simplifying the process with clear guidance or a base64-encoded string.

    Crafting the document

    I’ll create a minimal Word doc, set the orientation to landscape, open it as a zip, and encode it into a base64 string, ensuring it aligns with the user’s request.

    Forming the structure

    I’m crafting an OOXML snippet for a minimal Word document, ensuring it includes necessary elements like <w:document> and references to styles. This requires precision to meet the standard structure.

    Organizing the essentials

    I’m organizing the necessary XML files for a minimal Word document, including ContentTypes.xml, rels/.rels, and word/document.xml, ensuring a correct directory structure for packaging.

    Creating and encoding

    I’ll compress the XML files into a .zip, rename it to .docx, and encode it into a base64 string. This method involves generating the document logically and encoding it for user access.

    Compressing and renaming

    I’m piecing together the XML files into a .zip, renaming it to .docx, and base64 encoding the .docx, ensuring a compact and efficient format following the user’s instructions.

    Renaming and encoding

    I’m renaming the .zip to LandscapeHiThere.docx and preparing to encode it into a base64 string. This step ensures the document’s format aligns with the user’s request, focusing on maintaining accuracy and efficiency.

    Replicating the compression algorithm

    I’m considering the feasibility of replicating the compression algorithm for generating a Word document. This involves constructing a minimal doc and encoding it into a base64 string for the user.

    Simplifying the process

    I’m considering a minimal doc with only three files, encoding it into a base64 string, and providing instructions for decoding to streamline the process, avoiding unnecessary complexity.

    Nailing down the method

    I’m thinking through providing instructions for generating a Word document in landscape orientation with ‘Hi there’ text, as this seems simpler than creating an entire .docx file.

    Generating the document structure

    I’m crafting a minimal docx by creating essential files—Document.xml, ContentTypes.xml, and rels/.rels—zipping them, and then encoding the zip into a base64 string.

    Weighing options

    I’m considering providing a concise method for creating a Word document in landscape orientation with ‘Hi there’ text, or a base64 encoded snippet for decoding, to streamline the process.

    Moving forward

    I’m weighing whether providing instructions or a base64-encoded zip file is more efficient. Despite the base64 approach being sizable, I’ll proceed for thoroughness.

    Crafting helpful instructions

    I’m pulling together detailed instructions for decoding a base64-encoded zip file, including copying the text, decoding securely, renaming, and opening in Microsoft Word for ease of use.

    Laying out the options

    I’m organizing details on creating three essential XML files for a Word docx, focusing on the file structure and content, and assessing potential compression and base64 encoding sizes.

    Balancing options

    I’m piecing together the base64 and instructions for creating a Word docx. The collaboration to merge them will ensure comprehensive guidance for the user.

    And finally gives you a few possible solutions:

    Below you’ll find two ways to get a landscape-oriented Word document containing the text “Hi there.”

    Option 1: Simple Step-by-Step Instructions

    1. Open Microsoft Word (or a compatible word processor).
    2. Switch the page orientation to Landscape:
    3. Type the text: Hi there

    That’s it! You now have a Word document in landscape orientation that says “Hi there.”

    Option 2: Downloadable (Base64-Encoded) Minimal DOCX

    Below is a minimal Word document (in .docx format) encoded in Base64. It has exactly one paragraph that says “Hi there,” with its page set to landscape orientation.

    Instructions to use it:

    UEsDBBQABgAIAAAAIQDcZAUiYwEAAHsBAAAQAAAAW0NvbnRlbnRfVHlwZXMuXML7Wd1LFgUBf0q/Sm2hh0M1fApTTZQKepItpOeIo5gSO7g0jhPyPR4awMl3ggjdSS9/6HixzECAPQyB+x3D72bDY0+toYZpVCya3ke5EekQ4irjrJEKvK5ruxsj8L12cxhjTe9vJDv4R7N5vkcz9xaqGpTeABvEUfPFmyK+DmlrXujwSWVFFbeLRvZEzxBQSwMEFAAGAAgAAAAhANxkBSJjAQAAcwIAAAsAAABfcmVscy8ucmVsc7VQz07DIBDdBf8g7CeaNsHawKKA7sgDRylmOFGzo2tRSbPXr+RbN2aAwPGHInsJPe8P5HIC8qlIQDXRIS09ycymYsRsxzghm2lBKP8dc5UBsxm1jtKPYZ6rAa4uUHckkHvcznGgSSN7yhQU/Ez1Z/hEW72exOl/yybv5Ys6TtFKR+Mpcblhx2acUl44K0xuYS/rXdpwXLk+//OfBUEsDBBQABgAIAAAAIQDcZAUiYwEAAeQGAABcAAAAd29yZC9kb2N1bWVudC54bWyVbU+bMBC951eIbAXeGh2UE4oB6CLBAK7UBbqDUaTZ9OWhgpcv1pZcN0DJF/+9qymhktNcxlLb8/XePyYiI+7Z9719+os8DQEjJ2PizLAeqKhCeQTdXKqgzk2QbEF72/P6zpcB3+TOYXpxB34Frhxjpw4S4nyTxyoCxyI5IR9sL/nKZfnct9ZU2M0Okai0RG29V2GJTuqAJakdW3gvxqAHw0xXrL47xdl1GOSFy7y9uuDAvOWhrfdHZ7t8SeT53nFlXiNo9ZJV4Q6gkHaoERNoBpJShHbkZb02lCU3PbNTeDbqhS4PbkAl6lv1CCqqnPJSh4+bCl556TizP4GCvI9b47+T1/HZkPBcuvYJsOv2YVGzE6aZ/gNedcJbPmzrqdncHz8+z8moPC/YznE/D8isGhPNM/MvOv0zNv8855evD8r1QsDB5+tx70hyeDwEzSDEz2N6knV6SfJvO+DJ8AUEsBAhQDFAAGAAgAAAAhANxkBSJjAQAAewEAAAQAAAAAAAAAAAAAAAAAAAAAAFtDb250ZW50X1R5cGVzLnhtbFBLAQIUAxQABgAIAAAAIQDcZAUiYwEAAHMCAAALAAAAAAAAAAAAAAAAAC8AAABfcmVscy8ucmVsc1BLAQIUAxQABgAIAAAAIQDcZAUiYwEAAeQGAABcAAAAAAAAAAAAAAAAAHsAAAB3b3JkL2RvY3VtZW50LnhtbFBLBQYAAAAAAwADALcAAADnBgAAAAA=

    Verifying it works

    Enjoy your landscape Word document!


    4o does better, writing the following code:

    from docx import Document
    from docx.shared import Inches
    from docx.enum.section import WD_ORIENT
    # Create a new Word document
    doc = Document()
    # Change page orientation to landscape
    section = doc.sections[0]
    section.orientation = WD_ORIENT.LANDSCAPE
    new_width, new_height = section.page_height, section.page_width
    section.page_width = new_width
    section.page_height = new_height
    # Add text to the document
    doc.add_paragraph("Hi there")
    # Save the document
    file_path = "/mnt/data/Hi_there_landscape.docx"
    doc.save(file_path)
    file_path
    

    We’ll get to AI-native file formats that are more accurate and have higher information density / bits per second transmission speed. But I can’t help but wonder why, given the hundreds of billions of Office docs created each year, it can’t output or manipulate them more easily.

  • Last year, my co-founder Matt gave me a brain dump of a deep dive he did on water quality and purification. Until then, I had been using a water cooler since we have old water pipes and I wasn’t sure how clean our well water was. He sent over this initial list of resources:

    The Huberman podcast is a particularly comprehensive dive on the topic, and got me thinking I should look into under-sink water filters as an easier, healthier, and more cost-effective solution than a water cooler.

    At-home water quality testing

    The first step in the process is to do a water quality test, which will tell you what specifically you need to filter in your water. Wirecutter has a good guide on the various brands, and I opted for Tap Score’s Advanced Well Water test kit that looks for 114 factors in your water.

    The process is very simple, and usually requires you to collect water first thing in the morning and return the container promptly for testing. Within a few days, I got my report by email.

    You can choose to assess your results based on the EPA MCLs, which are federal drinking water standards, or HGL, which are much more strict and use the most extreme levels as determined by various states and academic institutions. By the EPA standards (left), there wasn’t much to worry about. But by the HGL (right), I had a few concerning results.

    It turns out these results are relatively common for well water with copper pipes. Since my water is soft (low in calcium and magnesium) and slightly acidic (pH of 6.82), it’s corrosive and can increase the levels of heavy metals (like lead) in the water.

    The coliform result is also common with well water — since the water isn’t treated, there can be bacteria introduced that can cause gastro issues. Tap Score has specific coliform tests that can go into more detail, but at this point I was ready to start deciding on a system.

    Choosing a water filter technology

    There are a ton of water filtration technologies and companies, and which you choose will depend on what you’re trying to treat. After researching, I found there were a few main categories:

    • Chemicals: gasoline, herbicides, pesticides, etc.
    • Radioactive: radon, uranium, etc.
    • Biological: bacteria, viruses, etc.
    • Heavy metals: lead, mercury, arsenic, copper, etc.
    • Particles: microplastics, sediment, etc.
    • Other elements that affect taste or smell

    You can filter those in several different ways:

    • Point of entry (i.e. where the water pipes enter your house, with several large filtration tanks)
    • Point of use (i.e. under sink or countertop filters)
    • Pitchers (i.e. the Brita pitchers you’re probably familiar with)

    And those filters use several different technologies, each of which has pros and cons:

    I knew I should focus on heavy metals and bacteria based on my lab report, but I also wanted something that would treat chemicals (who knows what pesticides leak into the well water?) and microplastics. I didn’t have immediate concerns about radon or my existing water’s taste or smell, but those end up being addressed by filtration anyway.

    I also knew I wanted to focus on point of use (under our kitchen sink) instead of a whole home system. We don’t have space for one, and it seemed like overkill for our needs.

    Based on the Huberman podcast above, I was already leaning towards a reverse osmosis system — you’ll read about it as the gold standard for removing most things you care about in water.

    What is reverse osmosis?

    On a high level, reverse osmosis works by forcing water through a semipermeable membrane that allows some molecules (like water) to fit through, while others (like chemicals or sediment) can’t. It’s the same osmosis process that helps water move in and out of our cells, except in this case it’s water moving in and out of a synthetic membrane in a water filter.

    You’ll typically still put traditional water filters (we’ll get to these later) in front of the actual RO filter. This prevents larger molecules from clogging the more expensive RO filter and prolongs its lifespan.

    The water coming out of the RO filtration step is extremely pure. Water purification is measured by TDS levels, or the amount of total dissolved solids. RO will reduce levels of water to under 25 parts per million (PPM). The only process that can get it lower is distillation, which requires heating water into steam and then condensing it back into water (and that’s to get from 25 PPM to 10 PPM).

    After going through the RO filter, you’ll often add a post-filter to…add back some minerals. Weird, but we’ll get to that.

    Clean water is stored in a small storage tank (usually 1-2 gallons) and the system disposes the waste water used during the RO process into your sink’s drain pipe.

    So RO is very, very good. But if you read enough about it, you’ll come across some common concerns.

    • Can reverse osmosis remove bacteria and viruses? Some manufacturers of non-RO systems claim RO isn’t effective at removing bacteria. Most RO systems will also not specifically talk about bacteria and say they must be used with “biologically safe water”, since bacteria can grow in the filter’s tight pores.

      The reality is more complex, and it helps to look up the sizing of the things we’re discussing. Giardia, which is a common water contaminant, is 10 microns. Bacteria (like E. Coli) are 0.1 to 1 micron. Both of those are easily stopped by standard carbon pre-filters, which we’ll discuss later. Viruses are smaller, usually 0.02-0.5 microns in size, but those are easily stopped by RO filters, which have 0.0001 micron pores. So if you keep your system clean, and regularly change the filters, the consensus is that bacteria and viruses shouldn’t be a problem. This was something I wasn’t 100% sure about, but I’ll be retesting my water to double check and may change my filter setup because of it (more on that later).
    • Does reverse osmosis waste a lot of water? Unlike a filter system where ~all of the water that goes in comes out the other side, RO processes more water than it produces. The amount ranges based on the system, but usually it’s something like 4 gallons in, 1 gallon out. The unit I got was more like 1:1, which seemed ok. After digging into it, in actual usage this comes out to around 1-2 extra toilet flushes in a house per day, and I thought I could conserve elsewhere. Also, you can technically pipe the waste water to a containment vessel for use outside, which I may do eventually. Finally, the efficiency ranges based on the amount of water in the holding tank — it’s less efficient the closer it is to full. So I try to batch my water usage to deplete the tank as much as possible in one go.
    • Is reverse osmosis water dangerous? You might come across people who say RO water is dangerous because of the lack of minerals. The argument is that RO water is missing minerals you need (calcium and magnesium) and that the pure water draws minerals out of your cells, leading to lower mineral levels in your body overall. The consensus is that this is really not the case. You get your minerals from food, and if you have a varied diet the mineral loss from RO water is pretty minimal. Plus, the RO systems I’m discussing have remineralization processes that add back in minerals after the RO step (mainly for taste, but it helps with this too.)

    So essentially — you should get an RO filter.

    Choosing a water filter brand

    Let’s start with a few easy ones you shouldn’t buy. Brita is overpriced and ineffective (and not RO). Berkey filters are overpriced and inconvenient. You’ll think they’re the gold standard, but move on from both.

    I was initially leaning towards Waterdrop or Aquasana, two of the more recommended brands on YouTube and Reddit. Waterdrop’s are interesting because they’re tankless, have a fast flow rate, and one of the best ratios of clean to waste water. Most RO systems with a tank are 1 part clean to 4 parts waste. Waterdrop’s is almost the opposite — 1 part waste to 3 parts clean.

    The reasons I decided against these were:

    • Proprietary refill filters: Most of the tankless units have proprietary cartridges, as far as I could tell. I didn’t want to be locked into a particular brand.
    • Electricity: Waterdrop’s high-efficiency units require electricity, which I didn’t have easily accessible under my sink.
    • Supply chain and provenance: Ultimately, I couldn’t find a great source about the quality of their filters. I was more comfortable with random RO filters, but because Waterdrop also remineralizes the water, I didn’t want random un-tested minerals being added. I found some third party lab tests, some of which cited dangerous levels of other chemicals being added.
    • Affiliate marketing: Waterdrop does a lot of affiliate marketing for their reviews, so I wasn’t sure how real anything was. Ultimately, that turned me off.

    My choice: Pure Water Products

    After a lot of searching, I came across Pure Water Products, which mainly caught my eye because of its minimalist and utilitarian web design. But as I clicked around, I found the site to be such a happy relic of an old internet where people who are clearly obsessed about water could just write about, and sell, water stuff. Some of my favorite articles:

    They make all of their units in-house, and can customize anything because everything is just standard plumbing parts. The filters are also standard / non-proprietary, so I can get them anywhere or swap them out to try different ones over time. (Their full list of cartridges is very extensive.) I mean, here’s how they describe their RO unit:

    Our Black & White Series Reverse Osmosis units have been sold and installed in the Denton area since the early 1990s and have been shipped to our out-of-town customers since the mid-1990s.

    We’ve continued to improve our basic design, so that our Black & White unit is now the most easily installed and reliable standard reverse osmosis unit available anywhere. Instructions are short and precise; phone support is free.

    Anyway, I was sold. The next step was to figure out which of their RO systems to order. Not only do they make any filter substitutions you want to their basic unit, they’ll customize the tank or parts depending on where you’re installing it. I had a few long email threads with dumb questions about various filters, and they were super knowledgeable about the pros and cons of different setups.

    So, what did I end up with? The Black & White: 50/50 Series Reverse Osmosis Unit – 4 Stage, with the remineralization and pH balance package (with a few modifications). Specifically:

    The 50/50 refers to the water saving properties of the Pentair RO filter, which is incredibly efficient (though still not as good as the top of the line Waterdrop models):

    Our Black & White: 50/50 series units change the 4:1 ratio to a genuine 1:1. A gallon of product water goes into the storage tank for every gallon of reject water that flows to drain. This 50/50 performance is achieved by using Pentair’s exceptional new GRO membrane. With the GRO, greater membrane efficiency allows the use of less drain water to keep the membrane clean.

    My further modifications were:

    • Adding a test tap to the unit. As the owner explained to me over email, “if you get remineralizing membrane, ask us to build in a test tap (no charge for that) so that you can test the water before the post filter. Calcite in the post filter skews the TDS result so that you can’t really evaluate the membrane performance.”
    • The Tomlinson Designer Faucet in cream

    Gene from PWP said this would “make really good water”, and he was right. It tastes great, was easy to install, and has ~12 PPM TDS before the mineralization and ~25 after.

    Moving forward, I want to try two filter changes:

    • The Doulton Sterasyl ceramic filter as a pre-filter. The technology and history is pretty crazy, and it would help with the bacteria reading I originally got. As Gene said over email to me, “You can install a ceramic filter before or after the RO unit. There are pros and cons to both. If your water pressure is good, before is definitely better because it keeps the RO clean and you can ignore boil water alerts. I have one in front of my home unit and it works fine.”
    • The Filtrex Greenblock Coconut Shell Carbon Block Filter as a post-filter, just to see if it affects the taste. “Coconut shell carbon blocks are said to produce water with a sweeter taste.”

    And separately, I purchased one of their countertop water filters, which is also a good choice for city water or situations where you don’t want a permanent install.

  • I’ve been waiting for a DIY / open source version of Find My, mainly to allow new form factors beyond AirTags and supported third parties.

    Came across OpenHaystack today and it seems like the best so far given their supported device list. Their version cleverly works as an Apple Mail plugin, but biemster/FindMy is another project that works with just your Apple ID.

    I wonder if this would allow for something like remote Find My beacons that you could post around your house to instantly find items instead of wandering around with an iPhone, or help visualize things moving around a space like a marauder’s map.

  • Flexoki 2.0, a color scheme by Obsidian founder Steph Ango:

    The problem is that using opacity to lighten a color makes it appear washed out.

    Flexoki emulates the feeling of pigment on paper by exponentially increasing intensity as colors get lighter or darker. This makes the colors feel vibrant and warm, like watercolor.

  • I’ve always wanted to find great case studies from people building things. Not high level blogposts dictating “this is how you should do X”, but “here’s the 20 things we tried and the data we had at the time, and what we learned.” I started a side project at some point to aggregate them, but I literally couldn’t find many examples online.

    Came across two of the best examples I’ve ever seen today:

  • One of the most enjoyable and educational shows I’ve watched in a while. Hilarious characters who demonstrate how difficult and thankless farming can be.

    Some things I’ve learned:

    • How a cultivator works
    • How exact tractor rows need to be
    • How heavy rain or weeks of drought affect the farming schedule
    • The many regulations farmers face — from registering each field with its crops, to sanitrary requirements, to land use regs
    • How necessary government subsidies for farming are, especially for less hearty crops

    After a year of dawn to dusk tractoring, Season 1 ends with an unbelievably slim profit margin. Very worth a watch.

  • As a longtime donor, got to visit the Internet Archive!

    They protect 50+ petabytes of web history over the past 28 years — nearly 835 billion web pages and 44 million books.

    Each drive rack holds 2.88 petabytes of data, so these 3 racks are ~2% of the archive counting backups.

  • The WordPress and open source communities have lots of thoughts on Matt Mullenweg’s actions after his talk at WordCamp. Much of this commentary has overlooked what I think is a core concern at the heart of Matt’s argument: the growing role and influence of private equity in tech, particularly in open source.

    PE firms raise money from institutional investors and high net worth individuals to buy companies, restructure them, and sell them later for a profit. They’re all about maximizing returns ASAP, usually in a 3-7 year window. That’s a shorter timeframe than the typical founder or public company shareholder, and far shorter than Matt’s time horizon:

    I would like future generations to grow up with a web that is more open, more free, gives more liberty, and so open source is really my life’s work, even above WordPress and anything else. I hope to work on it the rest of my life.

    When a PE firm acquires a tech company, a few things happen. The new owners focus on aggressive cost-cutting and “streamlining” operations to boost short-term profitability. This is extremely destructive, leading to mass layoffs, reduced benefits, and wholesale outsourcing. At the same time, PE firms often load up acquired companies with debt, extracting cash while leaving the businesses more financially unstable. With a myopic focus on an exit, long-term investments in innovation, customer service, and employee development fall by the wayside.

    The result? Private equity backed companies are 10 times more likely to go bankrupt than public companies.

    The basic business model of private equity firms often leads to disasters like that at ManorCare for three fundamental reasons. First, private equity firms typically buy businesses only for the short term. Second, they often load up the companies they buy with debt and extract onerous fees. And third, they insulate themselves from the consequences, both legal and financial, of their actions. This leads to a practice of extraction, rather than investment, of destruction, rather than creation. While not every company owned by private equity firms goes bankrupt, the chance of disaster meaningfully increases under their ownership.
    Plunder by Brendan Ballou

    Open source communities are particularly vulnerable to this model. They’re delicate ecosystems of volunteer contributors, transparent governance, and values-aligned sponsorships. Applying the PE playbook can easily destabilize that entire balance.

    Take, for example, Vista Equity Partners’ $1 billion acquisition of Acquia in 2019. Acquia is the main commercial backer of Drupal, another popular open source CMS. In the years since the acquisition, the Drupal community has visibly struggled. Acquia appears to be contributing less code and providing less financial support to the ecosystem.

    Just a few days ago, Acquia quietly laid off almost a third of its staff.

    With fewer resources, core development and maintenance have slowed. This coincides with a sharp decline in Drupal’s market share compared to competitors like WordPress:

    The Drupal story demonstrates how applying PE tactics to open source projects can undermine their health and sustainability. By nature, these communities aren’t a fit for rapid extraction of outsized returns. Their vitality depends on reinvestment, transparency, and long-term stability — the opposite of the PE model.

    Toys “R” Us. Simon & Schuster. Even America’s ports. Not everyone can push back against private equity, but I believe we should support companies like WordPress that have a long history of admirable values and prescient leadership. WordPress powers more than 40% of the web — its community’s health is too important to ignore.

  • I recently ordered a Comma.ai kit to add semi-autonomous driving capabilities to my 2018 Mazda CX-5. It took some trial and error (and help from the Comma.ai community on Discord) to get it working properly, but I highly recommend it as I’ll explain later.

    I’m sharing the steps I took in case it’s helpful for others looking to install the Comma 3X on the same or a similar vehicle. It’s a pretty intuitive process, all things considered, but there weren’t a lot of guides with photos on how to do the actual installation process.

    What is Comma.ai?

    Comma is like Tesla Autopilot for your existing car. It plugs into the car’s OBD-II port and uses data from your car’s existing sensors to do some Level 3 automation (ish). That’s partial automation — if the systems fail or there’s a major incident on the road, you still need to be ready to take over. But it works well on highway drives and anywhere you’d normally be using cruise control.

    This might sound sketchy, but Comma was actually ranked #1 by Consumer Reports. After a few months of using it, I can attest it’s not a fly-by-night hardware operation, and the software is quite good.

    What cars support Comma.ai?

    Comma’s official compatibility list is here, but if you don’t see your car listed it doesn’t mean it’s not supported. As I later found out, there’s an “unofficial” list of community-supported vehicles (like this for Mazda) where the sensors exist but capabilities have various limitations.

    In my case, CX-5 models earlier than 2022 have all the sensors needed for the full Comma.ai experience, but the EPS motor (which provides lane departure warnings by rumbling the wheel a bit) isn’t strong enough to move the wheel enough for medium to large turns when automated. That changed in 2022 model years and later, which is why they’re officially supported.

    Earlier models are community-supported, and there are some asterisks around what you get with the out-of-the-box Comma experience. But — if you’re willing to do a 30 minute part swap (that I thought would be scary and warranty-voiding, but is actually easier than you’d think with my guide below) you get the full Comma experience, which is better than most built-in car autopilot features today.

    A false start

    When I initially received the Comma 3X kit and installed it (follow the installation video and Jafar’s post, it’s pretty simple) I thought I’d be up and running quickly. However, the device seemed stuck in dashcam mode and didn’t move the steering wheel at all. After digging into the Discord server and reading more, it appeared to be an issue with fingerprinting my specific Mazda model.

    I reset the device and installed a special fork I found on the Discord server which had more Mazda car fingerprints to help identify how to interface with the car. This worked on a test drive, but the car would beep aggressively every 5 seconds if you weren’t holding the wheel very deliberately, making highway driving difficult. Even without Comma installed the car would complain when you had cruise control enabled and weren’t holding the steering wheel in the right place, but adding the Comma made it complain much more.

    The Discord community recommends trying a wheel cover with weights underneath, which worked somewhat but was quite bulky. Ultimately, I decided to pursue the ultimate solution I had been trying to avoid: swapping out the EPS motor.

    Swapping the EPS motor

    The EPS motor on pre-2022 Mazdas is designed for very lightweight lane departure vibrations. I always thought it felt a bit underpowered, and you could feel the car lightly bouncing between the lane markers. On any serious turn, the car would just continue to depart the lane.

    Newer Mazda EPS motors can apply more torque to the wheel, allowing for real LKAS (lane keep assistance) that can turn the car even through 10+ degree curves. I was initially hesitant to replace the EPS motor because I wasn’t sure exactly where it was located. But after reading the pinned messages on Discord and asking a few questions, the community reassured me it was pretty straightforward.

    The process ended up being easier than I anticipated, although there were a few tricky parts. Here’s a detailed breakdown of how it works:

    1. Order the new EPS motor from eBay — the LKQ store has several options, but you have to make sure the vehicle is model year 2022 or higher. As an example, here’s a search on LKQ’s eBay store, or just look for “2023 Mazda CX-5 Power Steering Pump OEM”. You’ll also need a 10mm and 12mm wrench for later.
    2. You’ll receive a hunk of metal similar to this. The only part needed is the circular gearbox-looking piece on the left of this picture.
    1. Remove the two bolts pictured here, which will detach the shaft from the EPS motor. Use a 12mm wrench for these and be careful not to lose the small plastic gear in the center of the motor once you remove it.
    1. Disconnect your car battery using a 10mm wrench to prevent the airbags from firing.
    2. While not required, I recommend removing the cover to the left of the steering wheel. It pops out easily and improves access to the EPS motor.
    1. Now that you’re in, you’ll see the same motor mounted, as pictured here:
    1. Here’s the trickiest part: you need to remove the same two bolts on the old gearbox, but one bolt is close to a piece of metal, making it hard to fit the wrench in. It’s doable but will take a few attempts. Both bolts are on quite tight, so don’t be afraid to use some force to loosen them.
    1. Once the bolts are out, unhook the 3 cables at the top and detach the old motor.

    One tip: the small gear kept falling out or misaligning as I tried to install the new motor. Rather than fumbling with alignment, I positioned the gear on the other (already mounted) side so it was already lined up correctly. You’ll see what I mean.

    1. Screw the bolts back in, reconnect your battery, and you’re all set! You’ll want to install this modified fork on the Comma 3X, which tells older Mazdas to use the new EPS motor.

    Review

    After installing the new EPS motor, I’ve been really impressed with its performance. I wouldn’t even bother installing Comma.ai on an older Mazda without it — the experience is just too annoying otherwise.

    The upgraded EPS motor enables stop-and-go adaptive cruise control, which by itself is a fantastic improvement for city traffic. It also provides LKAS that keeps the car smoothly centered in the lane without any warnings to keep your hands on the wheel. These enhancements make long drives much more pleasant.

    With the new motor, I’ve completed a few hundred-mile road trips with only three or four interventions to assist with turning, and just a handful of additional interventions in busy city traffic. It really is quite capable.

    Since I had Comma installed before the EPS motor upgrade, I spent some time observing the Openpilot lane markings as we drove. There was never a point where the green outline indicating the car’s projected path was misdirected or where the detected lane markers deviated from reality. I also drove at night and in the rain, with no issues whatsoever. This gave me a lot of confidence in the system’s capabilities.

    Special thanks to the Comma team for building an incredible hardware product, and to all the maintainers of Openpilot and volunteers in the #Mazda Discord channel.

    Update: 6 months later

    Highly recommend the Comma, and will continue updating this post with observations.

    • After ~500 drives and 10k+ miles, I’ve never had any safety issues, and have even relied on it in rain and snow because it did a better job of observing lane markings than I could.
    • I’ve noticed on some roads it adjusts the wheel back and forth a bit more than it should — this is a known issue called “ping-ponging” and some other branches are supposed to be better at minimizing wheel turn. More info is available on the Discord channel, but it hasn’t been a big enough issue for me to investigate further.
    • I might try some of the other forks like Sunnypilot that offer more customization.
    • I have noticed that the unit doesn’t do well in extreme temperatures, which usually happens when you leave it connected in a hot or cold parked car. Before purchasing, I had read reviews of people whose units broke in extreme heat, and I think it’s a real concern but avoidable in average climates. Either way, I’ve been disconnecting the unit and putting it in the glove box when I know it will be in direct sun or extreme temps. Quite easy to do, and so far no issues there.
    • I do think having the Comma as a dash cam is an underrated benefit. The team discourages its use as such, but it’s good enough and gives me some peace of mind.