<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: charlax</title><link>https://news.ycombinator.com/user?id=charlax</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 10 Oct 2026 05:13:52 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=charlax" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by charlax in "How I use Claude Code: Separation of planning and execution"]]></title><description><![CDATA[
<p>Great article. I have a similar process, described here: <a href="https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan" rel="nofollow">https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-...</a></p>
]]></description><pubDate>Mon, 23 Feb 2026 20:34:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47128402</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=47128402</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47128402</guid></item><item><title><![CDATA[AI agents: write and checkout the plan]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan">https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46559363">https://news.ycombinator.com/item?id=46559363</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 09 Jan 2026 21:09:26 +0000</pubDate><link>https://www.dein.fr/posts/2026-01-08-write-and-checkout-the-plan</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=46559363</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46559363</guid></item><item><title><![CDATA[GenAI has limited engineer productivity impact (case study)]]></title><description><![CDATA[
<p>Article URL: <a href="https://techblog.cloudkitchens.com/p/study-and-update-on-genai-devex">https://techblog.cloudkitchens.com/p/study-and-update-on-genai-devex</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45184808">https://news.ycombinator.com/item?id=45184808</a></p>
<p>Points: 7</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 09 Sep 2025 16:54:38 +0000</pubDate><link>https://techblog.cloudkitchens.com/p/study-and-update-on-genai-devex</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=45184808</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45184808</guid></item><item><title><![CDATA[1Password Technical Architecture [pdf]]]></title><description><![CDATA[
<p>Article URL: <a href="https://1passwordstatic.com/files/security/1password-white-paper.pdf">https://1passwordstatic.com/files/security/1password-white-paper.pdf</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38105449">https://news.ycombinator.com/item?id=38105449</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 01 Nov 2023 21:19:49 +0000</pubDate><link>https://1passwordstatic.com/files/security/1password-white-paper.pdf</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=38105449</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38105449</guid></item><item><title><![CDATA[The Mathematics of Dobble]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.petercollingridge.co.uk/blog/mathematics-toys-and-games/dobble/">https://www.petercollingridge.co.uk/blog/mathematics-toys-and-games/dobble/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=33758696">https://news.ycombinator.com/item?id=33758696</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 27 Nov 2022 00:36:49 +0000</pubDate><link>https://www.petercollingridge.co.uk/blog/mathematics-toys-and-games/dobble/</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=33758696</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33758696</guid></item><item><title><![CDATA[Use the index, Luke – a guide to database performance for developers]]></title><description><![CDATA[
<p>Article URL: <a href="https://use-the-index-luke.com/">https://use-the-index-luke.com/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=32070627">https://news.ycombinator.com/item?id=32070627</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 12 Jul 2022 14:37:52 +0000</pubDate><link>https://use-the-index-luke.com/</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=32070627</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32070627</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Can I see your cheatsheet?"]]></title><description><![CDATA[
<p><a href="https://github.com/charlax/dotfiles/tree/master/cheatsheets" rel="nofollow">https://github.com/charlax/dotfiles/tree/master/cheatsheets</a> using cheat</p>
]]></description><pubDate>Thu, 30 Jun 2022 12:46:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=31931697</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=31931697</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31931697</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Which open source versions of SaaS products would you like to see?"]]></title><description><![CDATA[
<p>The database part of Notion/a simplified Airtable/Google Sheets storing to plain text files or CSV.<p>Editing and manipulating CSV by hand is a pain. Something like a simplified sqlite viewer/editor?</p>
]]></description><pubDate>Fri, 11 Feb 2022 13:02:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=30300926</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=30300926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30300926</guid></item><item><title><![CDATA[New comment by charlax in "Dieter Rams' design principles applied to software engineering"]]></title><description><![CDATA[
<p>Funny! I wrote the same article 6 years ago: <a href="https://www.dein.fr/2015-10-01-10-principles-for-good-code.html" rel="nofollow">https://www.dein.fr/2015-10-01-10-principles-for-good-code.h...</a></p>
]]></description><pubDate>Thu, 16 Sep 2021 11:35:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=28550414</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=28550414</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28550414</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Who is hiring? (February 2021)"]]></title><description><![CDATA[
<p>GensDeConfiance | Nantes, France | Onsite | Full Time<p>GensDeConfiance is a community accessible only via referrals, with about 800k members (mostly in France). Our main product is our classifieds website. It's free and pretty much guaranteed to be scam-free!<p>We have a bunch of roles available: Infra Engineer, Senior Data Engineer, Senior Back-end Engineer. Our stack: back-end in PHP/Symfony/Python, front-end in TypeScript, React and React Native, data infra in Python. We deploy on Docker, AWS (managed via terraform).<p>Most of our roles are described here: <a href="https://www.welcometothejungle.com/fr/companies/gens-de-confiance" rel="nofollow">https://www.welcometothejungle.com/fr/companies/gens-de-conf...</a><p>We are only looking at onsite roles for now. You need to be authorized to work in France.<p>We'd love to hear from you. Contact me at charles@gensdeconfiance.com ;)</p>
]]></description><pubDate>Tue, 02 Feb 2021 11:23:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=25999721</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=25999721</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25999721</guid></item><item><title><![CDATA[A Python Project Checklist]]></title><description><![CDATA[
<p>Article URL: <a href="http://www.dein.fr/2021-01-28-python-project-checklist.html">http://www.dein.fr/2021-01-28-python-project-checklist.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=25942562">https://news.ycombinator.com/item?id=25942562</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 28 Jan 2021 14:52:13 +0000</pubDate><link>http://www.dein.fr/2021-01-28-python-project-checklist.html</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=25942562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=25942562</guid></item><item><title><![CDATA[Churchill's D Day todo list]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.calnewport.com/blog/2020/10/06/churchills-d-day-task-list/">https://www.calnewport.com/blog/2020/10/06/churchills-d-day-task-list/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=24697187">https://news.ycombinator.com/item?id=24697187</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 06 Oct 2020 12:58:00 +0000</pubDate><link>https://www.calnewport.com/blog/2020/10/06/churchills-d-day-task-list/</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=24697187</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24697187</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Who is hiring? (July 2020)"]]></title><description><![CDATA[
<p>GensDeConfiance | Nantes, France | Onsite | Full Time<p>GensDeConfiance is a community accessible only via referrals, with about 700k members (mostly in France). Our main product is our classifieds website. It's free and pretty much guaranteed to be scam-free!<p>We have a bunch of roles available: Infra Engineer, Senior Data Engineer, Back-end Engineer, Front-end Engineer. Our stack: back-end in PHP/Symfony, front-end in TypeScript, React and React Native, data infra in Python. We deploy on Docker, AWS (managed via terraform).<p>Most of our roles are described here: <a href="https://www.welcometothejungle.com/fr/companies/gens-de-confiance" rel="nofollow">https://www.welcometothejungle.com/fr/companies/gens-de-conf...</a><p>We are only looking at onsite roles for now. You need to be authorized to work in France.<p>We'd love to hear from you. Contact me at charles@gensdeconfiance.com</p>
]]></description><pubDate>Thu, 02 Jul 2020 11:46:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=23712124</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=23712124</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23712124</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Who is hiring? (June 2020)"]]></title><description><![CDATA[
<p>GensDeConfiance | Nantes, France | Onsite | Full Time<p>GensDeConfiance is a classified ads site accessible by referral. It's free and pretty much guaranteed to be scam-free!<p>We have a bunch of roles available: Infra Engineer, Senior Data Engineer, Back-end Engineer, Front-end Engineer. Our stack: back-end in PHP/Symfony, front-end in React and React Native, data in Python. We deploy on Docker, AWS (managed via terraform).<p>Some of our roles are described here: <a href="https://www.welcometothejungle.com/fr/companies/gens-de-confiance" rel="nofollow">https://www.welcometothejungle.com/fr/companies/gens-de-conf...</a><p>We are only looking at onsite roles for now.<p>We'd love to hear from you. Contact me at charles (at) gensdeconfiance.com</p>
]]></description><pubDate>Tue, 02 Jun 2020 16:16:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=23392694</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=23392694</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=23392694</guid></item><item><title><![CDATA[New comment by charlax in "Test coverage only matters if it's at 100%"]]></title><description><![CDATA[
<p>Hey - author of the article here.<p>Thanks for the detailed answer! I have answered some of your points and some of the points made in the comments below in the article.<p>The article might have been perceived as more dogmatic than it meant to be. It is actually, I believe, a pretty pragmatic position. I tried to clarify the wording here and there, let me know if you still disagree with the point I'm making.<p>### 100% test coverage does not mean you're testing everything right.<p>Absolutely - this point is explicitly stated in this article. I even give an
example situation showing how just checking the test coverage leads to missing
an important test.<p>100% test coverage does not make your code invulnerable, and it should
evidently not be your only metric. This article is only about the test coverage
metric.<p>### A test suite that covers 80% is pretty good<p>Absolutely. It is a good number and a good goal for any
codebase.<p>However, what about that remaining 20 %? Why are they not tested? Will it be clear
in 2 months why they were not tested? In 6 months? In a year? While it may make
perfect sense not to test them, you should be explicit about that decision and
keep the reason in the code.<p>If you don't keep the test coverage _metric_ at 100%, then you leave it up to the
code reviewer to challenge your test coverage assumption.<p>### 100% is a blanket rule that leaves no room for negotiation<p>Once again, the goal is not to cover 100% of the lines of code - it would be
almost impossible. Thanks to `no cover` markers, you can still decide to
exclude code from coverage. It actually makes this negotiation explicit in the
code, as opposed to implicit during the code review phase coverage.<p>Consider the example below:<p><pre><code>  def toast(bread: str) -> str:
      if toast == "brioche":
          raise ValueError("...")

</code></pre>
Let's say you're fixing a bug in this code, and you find out that the `if`
branch is not covered. You're left to wonder why. The developer did not have
enough time? They decided it was too trivial to need a test?<p>With an explicit marker, the intent is clear and gives you insight with what is
considered appropriate coverage for _this_ codebase:<p><pre><code>  def toast(bread: str) -> str:
      if toast == "brioche":  # pragma: no cover, trivial error case
          raise ValueError("...")

</code></pre>
### It is not feasible in an old codebase<p>Right, that's probably the case. However, this is not different from proper
testing, monitoring, logging practices. Decide if it's important, then start
with something attainable that brings you closer to the goal, and iterate.<p>Also, if it is not a desirable goal for the codebase, then for sure don't monitor
test coverage!<p>### Enforcing 100% test coverage leads to bad tests<p>It bears repeating: this is not about testing 100% of the lines; this is about
keeping the code coverage metric at 100%. I am not sure how that would lead to
bad tests.<p>Putting too much focus on one particular metric might lead to gaming behavior.
That does not mean that no metric you should be enforced. I believe that there
isn't enough material and training about what it takes to write good tests.
This is beneficial regardless of whether you enforce test coverage. Also, the
more you talk about test coverage, the more you iterate and learn about
what it takes to write good tests in your language and codebase.<p>What's sure is that it is straightforward to write bad tests. It takes a lot of
skills, experience, and hygiene to write great, maintainable tests. That's a
topic for another article.<p>### 100% coverage only matters for languages without a type checker<p>No. Sure, a type checker might catch some classes of bugs that would require a
test in a language without type checking, but you still need to test
correctness (among others).<p>### You're creating blind spots<p>Unless you're reviewing your test coverage report after every single commit,
leaving explicit markers in the code and keeping the metric at 100% is actually
a much safer practice.<p>When working in code that has been excluded, you'll immediately see the `no
cover` marker, perhaps with a comment explaining why the code is excluded. This lets you reconsider the coverage decision.<p>Any regression in coverage will break the tests.<p>### You should not exclude code from coverage because of setup cost<p>This article is not about end-to-end vs. unit testing. I have provided some
examples of code that I sometimes exclude from testing, but your mileage may
vary.</p>
]]></description><pubDate>Mon, 09 Sep 2019 07:02:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=20915845</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=20915845</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20915845</guid></item><item><title><![CDATA[Test coverage only matters if it's at 100%]]></title><description><![CDATA[
<p>Article URL: <a href="http://www.dein.fr/2019-09-06-test-coverage-only-matters-if-at-100-percent.html">http://www.dein.fr/2019-09-06-test-coverage-only-matters-if-at-100-percent.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=20897382">https://news.ycombinator.com/item?id=20897382</a></p>
<p>Points: 23</p>
<p># Comments: 49</p>
]]></description><pubDate>Fri, 06 Sep 2019 16:59:44 +0000</pubDate><link>http://www.dein.fr/2019-09-06-test-coverage-only-matters-if-at-100-percent.html</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=20897382</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20897382</guid></item><item><title><![CDATA[Texas Sharpshooter Fallacy]]></title><description><![CDATA[
<p>Article URL: <a href="https://en.wikipedia.org/wiki/Texas_sharpshooter_fallacy">https://en.wikipedia.org/wiki/Texas_sharpshooter_fallacy</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=20886026">https://news.ycombinator.com/item?id=20886026</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 05 Sep 2019 12:40:24 +0000</pubDate><link>https://en.wikipedia.org/wiki/Texas_sharpshooter_fallacy</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=20886026</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=20886026</guid></item><item><title><![CDATA[Carrier Pigeons: The French Army’s Unsung Heroes Are Still on Duty]]></title><description><![CDATA[
<p>Article URL: <a href="https://frenchly.us/carrier-pigeons-the-french-armys-unsung-heroes-are-still-on-duty/">https://frenchly.us/carrier-pigeons-the-french-armys-unsung-heroes-are-still-on-duty/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=18997322">https://news.ycombinator.com/item?id=18997322</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 25 Jan 2019 12:16:55 +0000</pubDate><link>https://frenchly.us/carrier-pigeons-the-french-armys-unsung-heroes-are-still-on-duty/</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=18997322</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18997322</guid></item><item><title><![CDATA[New comment by charlax in "Ask HN: Going from Developer to Manager. What should I know or learn?"]]></title><description><![CDATA[
<p>I keep a list of all the resources that have inspired and helped me here: <a href="https://github.com/charlax/engineering-management" rel="nofollow">https://github.com/charlax/engineering-management</a><p>It starts with a few high-level book recommendations, and blog articles for more specific topics.<p>My favorite book, which has not been listed in this thread, is: Turn the Ship Around!: A True Story of Turning Followers into Leaders. David Marquet, who used to command a nuclear submarine, explains how he achieved high levels of motivation and output thanks to empowering his team.</p>
]]></description><pubDate>Mon, 07 Jan 2019 12:24:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=18844615</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=18844615</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18844615</guid></item><item><title><![CDATA[PCI auditor asks for list of all usernames and plain text passwords]]></title><description><![CDATA[
<p>Article URL: <a href="https://serverfault.com/questions/293217/our-security-auditor-is-an-idiot-how-do-i-give-him-the-information-he-wants">https://serverfault.com/questions/293217/our-security-auditor-is-an-idiot-how-do-i-give-him-the-information-he-wants</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=17362670">https://news.ycombinator.com/item?id=17362670</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 21 Jun 2018 06:39:10 +0000</pubDate><link>https://serverfault.com/questions/293217/our-security-auditor-is-an-idiot-how-do-i-give-him-the-information-he-wants</link><dc:creator>charlax</dc:creator><comments>https://news.ycombinator.com/item?id=17362670</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17362670</guid></item></channel></rss>