7 ms·
How I over-engineered my book
- deleted 1mo ago[deleted]
- hyperhello 1mo agoOkay, but I feel assured your book will be astonishingly boring.
- benbalter 1mo agoWhy do you think I procrastinated writing by building out all that unnecessary tooling? /s
- NAR8789 1mo agoYour own descriptive comment got downvoted and the only other comment I see is bashing you. It seems you rub people the wrong way, but so far I'm scratching my head as to why you're receiving this degree of hate. Is this common for you? Does someone have a vendetta against you?
- hyperhello 1mo agoI think you’re way off. Hate is absurd, I don’t even know him. He’s automatically being downvoted for hyping his own product on HN, although he’s certainly not plugging it too hard.
- t-kalinowski 1mo agoSeeing that list of tools you're using in automations, I'm guessing you'll enjoy this, as another tool to add to the pile: https://t-kalinowski.github.io/yamark/ https://t-kalinowski.github.io/yamark/ (disclosure: I wrote it)
- benbalter 1mo agoWell, there goes my weekend. Thanks for sharing. Will take a look.
- khaki54 1mo agoTextbook example of structured procrastination. I bet you got all your household projects done as well as taxes for next year
- jdw64 1mo ago[dead]
- hinkley 1mo agoI saw a Bruce Eckel talk one time after Thinking in Java became a best seller. I expected him to talk about Java, and lessons learned about it writing the book (he did not start nor end in Java and documented a number of programming languages.) What we got instead was a rundown of how he 'overengineered' the book. He had interns solving a problem for him: How to make sure the published code examples actually run when transcribed into an editor. They wrote a tool to mark up live code with extraction points to excerpt it automatically into his manuscript. About five years later I worked at a F50 company with a bunch of contractors who were all Getting Shit Done and making some of the more bureaucratic org units around us a bit nervous. Someone thought they found a gotcha by complaining about how our developer documentation didn't meet the defined documentation standards the company had devised. They weren't wrong, but people used to the platform we were building on wouldn't have been stymied at all by what we gave them. If we had done it the way they suggested, it would have added almost a week of my time to every release, and I was already struggling with delegating enough work to make me not the bottleneck. So that extra week would have taken our velocity down a notch and made us a bit more comparable to everyone else. It was a clever ploy, but Bruce saved me. Instead of spending a slog every release on updating the docs, I found that Bruce's strategy had already been made into a FOSS tool, jcite. So I spent about 50 hours the first quarter learning to use it, and fixing up all of my integration tests to be suitable to use the way Bruce taught me. With that done, it took less an hour per release to fix the developer documentation, and half of that hour I got one of our tech writers to take off my plate (I couldn't get the documentation template to exactly match the corporate template, so she manually fixed the handful of errors). So within another quarter we were back to full speed. It's possible I imagined the disappointment when we explained what we did but it was a delicious hallucination if so. Nice try. Maybe you could learn from us instead of trying to pull us down with you, hmm? Thanks Bruce, for teaching me a lesson I didn't even know I needed.
- benbalter 1mo agoNice! My rule (pre-AI) had always been never force a human to do what a robot can. If you can automate yourself out of your least favorite part of your job, that's a win for both you and your employer. You can move on to more meaningful work, or in some environments, just leave early. Reminds me of that old xkcd about the tradeoff in time between doing something manually vs. automating it.
- stephantul 1mo agoIt is perhaps ironic that I find this post very difficult to read. I'm super interested in the content, but it reads like it is generated.
- benbalter 1mo agoI've gotten that feedback before. Once a lawyer, always a lawyer. Full disclosure, a few months back when I had some tokens expiring, I had Copilot spike out a draft to see if there was anything "there" worth writing. If you check the revision history (linked from the bottom of the post), I did a full (human) blank page rewrite three days ago and then only used Claude for line edits like adding links or fixing failing lints.
- japhyr 29d ago> I did a full (human) blank page rewrite three days ago You did a "blank page rewrite" of a 576 page book "three days ago"?
- song_synth 1mo agohey thanks! I learned from your article that "if you can make a website, you can make an ebook." This is inspiring because I can indeed make a website, and have a lot of drafts that I want to turn into a book!
- benbalter 1mo agoGlad to inspire. That was the point of the post. For the record, I never made any guarantees that the book (or the website) was any good. Software or prose, you can have the most pristine build pipeline in the world, but "garbage in, garbage out" as they say.
- goostavos 1mo agoIn contrast, here's how I under engineered my book lol: https://news.ycombinator.com/item?id=49336392 https://news.ycombinator.com/item?id=49336392 If our two styles found a middle ground we'd be unstoppable!
- benbalter 1mo agoHa! Indeed. Love the time-lapse video. ETA: Need to add "maniac on the front page of Hacker News" to my resume.
- _def 1mo agoHow did people come to the conclusion that "over-engineered" is something positive?
- epgui 1mo agoWhat gives you the impression that "people" have come to such a conclusion?
- _def 1mo agoI just noticed it more often that it's getting used as a positive connotation. From the article itself: "Over-engineered, absolutely. [...] Every check earned its place by catching something I’d otherwise have shipped. Would I do it again? Without hesitation."
- epgui 28d agoSounds more like an admission than a boast to me.
- thereisnospork 1mo agoFrom a consumer POV it is -- even if only read as 'not under-engineered'. In an over engineered thing margin is left on the table which the consumer gets to take advantage of. Noting that in the real world items are often exposed to loads and demands above and beyond the idealized design constraints a 'perfectly' engineered item would just meet.
- nonethewiser 1mo agoThe software engineering workflow is simply the GOAT for text based work.
- TeaVMFan 1mo agoRelated: a tool to convert HTML to EPUB, with checks and smarts: https://frequal.com/epublish/ https://frequal.com/epublish/
- sinab 1mo agoThank you for the demo! I like the concept. However, I personally find that the writing style you've designed for reads very strongly as AI-generated. For example, opening a section with phrases like "Here's the irony: after automating everything up to this point," or "Turning emoji into images solved the missing-font problem and created a subtler one." These are both strong tells of AI-generated prose, though I find it surprisingly difficult to articulate exactly why. It makes me wonder whether your style has evolved to sound more like AI-generated prose, or whether AI-generated prose has evolved to sound more like you!
- KPGv2 1mo ago"Um ackshually your writing looks like AI and that is so problematic" wags finger This is how you people sound. You can't recognize AI. Nobody can without training specifically to recognize AI, and eve then, it's only been shown to be successful with a language with an online corpus significantly smaller than English. The thing LLMs are best at in the entire world is imitating human writing. So all you're really doing is discouraging a human from writing. I hate AI in the artistic disciplines. No one hates it more than I do. But Jesus Christ, I've been seeing legitimate authors get called AI for over a year now, and it's so bad that I know people are quitting writing over it. ("What's the point, everyone stopped reading because they think I'm AI") End result being the percentage of writing that is AI goes up, and humans enjoying the most human of all disciplines goes down.
- cindyllm 1mo ago[dead]
- soulofmischief 1mo agoI'm sorry, but if you're halfway adept in both writing and using modern LLMs, every single telltale sign exists in this material. OP is right to call it into question, and you are embodying the very caricature which you're attempting to assign to him in your fallacious assault on character and authority. Let's return to a more positive discourse, and not immediately become vitriolic when someone rightfully points out that material marketing a book might not be genuinely produced by a human. We should expect more transparency from the author around the use of AI in their writing and marketing process if we are expected to give this book any attention.
- soulofmischief 1mo agoI agree with the premise and have also learned to apply my engineering habits to other domains that I normally struggle with. It helps a lot and allows me to churn through projects that previously would have not seemed tractable. But in this article, the TLDR and first paragraph have textbook LLMisms. The landing page for the book is clearly vibecoded both in structure and copy. This is very alarming for material that is meant to market a book, which I expect to not be vibe-written. So whose book is this, actually? What otherwise could be a very useful lesson comes off as a trojan horse for automated viral marketing slop in order to promote a book which I have to assume at this point is vibe-written. To be clear, I use AI heavily in my work today, and understand the difference between AI-assisted work and vibe-coded work. This appears to fall in the latter camp. How much editorial control did you assert over this project? Where did the ideas come from? How do I know a given snippet is a well-researched fact or the product of experience, instead of an unfounded potential-hallucination? I've also been making websites for decades, Ben, and most people I know in that camp are more interested in letting their hard-earned experience elevate their output to the top of the pile in an increasingly competitive space. If this is the direction we're going in, vibe-coded marketing campaigns and vibe-coded landing pages for books that we rationally have to assume are also vibe-coded and basically a medium for Claude, then we as authors must adopt an atmosphere of clarity and transparency towards our audience. A book like this needs more information about the process so that people like me don't immediately and rationally disregard it as slop. I can see your blog goes back to 2011 so I want to give you the benefit of the doubt and a chance to explain yourself further.
- benbalter 1mo agoFair. The project originally started as "turn my blog into a book", with a 1:1 mapping of blog post to chapter. I got feedback early on that that wasn't landing, but if you compare the outline on the book site to my blog archive, the original posts are still there. Chapters built on an earlier post making the same argument: - Why everything should have a URL → "Why URLs?" (2015) + "Expose process through URLs" (2014) - Speak like a human → "Write corporate blog posts as a human" (2015) - Optimize for developer happiness → "On stickers and optimizing for happiness" (2015) - The zen of open and async work → "The zen of GitHub" (2015) - Lead like an engineer → "Manage like an engineer" (2023) - Rethinking management for remote teams → "Deprecate management" (2012) + "Cathedral–bazaar management" (2023) - Retool your documents → "Word vs. Markdown" (2014) + "We've been trained to make paper" (2012) - The etiquette of issues and pull requests → "Types of pull requests" (2015) + "Pull requests are a form of documentation" (2023) - Showing colleagues they're valued → "Three easy ways to show employees you appreciate them" (2017) - Choosing the right collaboration tools → "Tools of the trade" (2020) - What I wish I knew before going remote → "Eight things I wish I knew my first week at GitHub" (2016) - Career conversations → "The brag doc" (2026) - Intro to software development for non-technical roles → "GitHub for non-technical roles" (2023) And chapters that are near-verbatim descendants of a named post: - Leaders show their work → "Leaders show their work" (2022) - Work loudly → "Work loudly" (2026) - Meetings are a point of escalation → "Meetings are a point of escalation" (2023) - The Andon principle for knowledge work → "Transparency & collaboration is the Andon of knowledge production" (2023) - Engaging with dissent → "Dissenting voices" (2024) - How to 1:1 → "One-on-one playbook" (2026) - Agentic workflows → "Agentic workflows" (2026) - Why you should work asynchronously → "Why async" (2022)
- everybodyknows 1mo agoI set out likewise to write a highly structured book with FOSS, therefore: git, some hierarchical plain text format, and a visually rich editor. Markdown could not seem to meet the third point. For instance, progress-related comments that would be stripped from final output were essential, but Markdown's HTML-style comments are intolerably unergonomic, and editors know how to de-emphasize no other syntax. Ended up with Org-mode. Emacs with a bit of customization color- and font-codes richly. Org text goes into an Org-to-HTML converter that I hacked up in Go, incrementally added to as new wants arise. Most recent completed production was a photo album for relatives. In HTML form, it could be put on line, but I used Weasyprint so I could give them self-contained PDF as a keepsake.
- whiterook6 1mo agoI love this! I'm writing short stories and I use Astro to build the site, I generate sharable qr codes and epubs for every story as well as the whole, and I use gh-pages to push to GitHub pages. And I hear you about over-engineering. I feel like a Linux user--spending more time getting my laptop just right instead of using it. I have to remind myself that the point of it is the result, not the process.
- cadamsdotcom 1mo agoCustom linting is so cheap and easy, why not! > "Please add in this repo, a pre-commit hook in the form of a script that prints all filenames and line numbers on which the hyphenated "open-source" string exists, and if any instances are found, will exit nonzero. Then please install it in `.git/hooks` so commits are blocked until me or an agent removes all the instances, so we never again commit the string "open-source"." 1 minute after hitting enter you've created yourself a guarantee your repo will never again see the string "open-source".
- frizlab 1mo ago> AI reviewed every page; I wrote every word. This is the only correct use of AI IMHO. Including for development.
- pushcx 1mo agoHaving an "AI tells" linter to catch "Phrasing that reads as machine-generated rather than my voice" has a real echo of "What does God need with a starship?".
- thallada 29d agoI do wonder if all of the automated linting and the LLM-powered editor assistance is contributing to your very LLM-sounding writing voice that seems to be triggering everyone's internal AI-writing detection alarms here (also Pangram detects parts of the post as ~20% AI-written for what it is worth). It makes sense that a lot of what the linters would red squiggly on (e.g. weak passive voice) would also be the type of prose that gets trained out of LLMs as not "punchy" enough. So, basically, did you accidentally RLHF yourself into sounding like an LLM?
- basedrum 29d agoWhere can I find the source for these? I'm currently over engineering my own book and you have done interesting ideas is love to reuse, without having to reimplement.