<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: antoineleclair</title><link>https://news.ycombinator.com/user?id=antoineleclair</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 16 Sep 2026 08:56:25 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=antoineleclair" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by antoineleclair in "Show HN: Is It Greg?"]]></title><description><![CDATA[
<p>Hi! HN is such a small world.</p>
]]></description><pubDate>Mon, 14 Sep 2026 03:12:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=49691486</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=49691486</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49691486</guid></item><item><title><![CDATA[Show HN: Is It Greg?]]></title><description><![CDATA[
<p>My friend Greg often posts incredible things he just made, just for fun.<p>Often, I don't realize that it's something HE made and then I see the URL, AND IT'S MY FRIEND, GREG!<p>A few things he made that I think are amazing:<p>- ikea complexity index: <a href="https://ikea.greg.technology/" rel="nofollow">https://ikea.greg.technology/</a><p>- Boing: <a href="https://boing.greg.technology/" rel="nofollow">https://boing.greg.technology/</a><p>I want to make sure I don't miss anything from him, so I created this Chrome extension that flags things posted by Greg, or linking to his website or a subdomain.<p>I hope other people will install the extension and never miss anything Greg made.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=49690943">https://news.ycombinator.com/item?id=49690943</a></p>
<p>Points: 65</p>
<p># Comments: 18</p>
]]></description><pubDate>Mon, 14 Sep 2026 01:58:41 +0000</pubDate><link>https://github.com/antoineleclair/is-it-greg</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=49690943</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49690943</guid></item><item><title><![CDATA[New comment by antoineleclair in "The zero-cost fallacy: open-source software in the agentic era"]]></title><description><![CDATA[
<p>I stopped reading at "load-bearing" and em dash.</p>
]]></description><pubDate>Tue, 14 Jul 2026 17:55:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=48910625</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=48910625</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48910625</guid></item><item><title><![CDATA[New comment by antoineleclair in "New Landing Page for Awesome PaaS"]]></title><description><![CDATA[
<p>Great to see Disco is listed there. Thanks!<p>Kudos for the new landing page.</p>
]]></description><pubDate>Tue, 05 May 2026 17:00:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=48025251</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=48025251</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48025251</guid></item><item><title><![CDATA[New comment by antoineleclair in "PeppyOS: A simpler alternative to ROS 2 (now with containers support)"]]></title><description><![CDATA[
<p>I see in their FAQ:<p>> Will PeppyOS be open source?<p>> Yes! PeppyOS will be fully open source under a BSL license before the end of this year. Once the software is mature, everyone will be able to contribute and participate in its development.</p>
]]></description><pubDate>Wed, 11 Mar 2026 14:45:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47336275</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=47336275</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47336275</guid></item><item><title><![CDATA[New comment by antoineleclair in "SolarWinds is shutting down Librato"]]></title><description><![CDATA[
<p>Librato was a simple Heroku add-on to view charts of metrics provided in the logs of Heroku.</p>
]]></description><pubDate>Wed, 05 Nov 2025 20:51:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=45827835</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=45827835</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45827835</guid></item><item><title><![CDATA[SolarWinds is shutting down Librato]]></title><description><![CDATA[
<p>Article URL: <a href="https://thwack.solarwinds.com/kb/articles/20100-faqs-migration-from-heroku-appoptics-and-librato-add-ons-to-papertrail-add-on">https://thwack.solarwinds.com/kb/articles/20100-faqs-migration-from-heroku-appoptics-and-librato-add-ons-to-papertrail-add-on</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=45827834">https://news.ycombinator.com/item?id=45827834</a></p>
<p>Points: 2</p>
<p># Comments: 1</p>
]]></description><pubDate>Wed, 05 Nov 2025 20:51:43 +0000</pubDate><link>https://thwack.solarwinds.com/kb/articles/20100-faqs-migration-from-heroku-appoptics-and-librato-add-ons-to-papertrail-add-on</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=45827834</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45827834</guid></item><item><title><![CDATA[New comment by antoineleclair in "Serving a half billion requests per day with Rust and CGI"]]></title><description><![CDATA[
<p>We used CGI to add support for extensions in Disco (<a href="https://disco.cloud/" rel="nofollow">https://disco.cloud/</a>).<p>It's so simple and it can run anything, and it was also relatively easy to have the CGI script run inside a Docker container provided by the extension.<p>In other words, it's so flexible that it means the extension developers would be able to use any language they want and wouldn't have to learn much about Disco.<p>I would probably not push to use it to serve big production sites, but I definitely think there's still a place for CGI.<p>In case anyone is curious, it's happening mostly here: <a href="https://github.com/letsdiscodev/disco-daemon/blob/main/disco/endpoints/cgi.py">https://github.com/letsdiscodev/disco-daemon/blob/main/disco...</a></p>
]]></description><pubDate>Wed, 09 Jul 2025 15:40:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=44511430</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=44511430</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44511430</guid></item><item><title><![CDATA[New comment by antoineleclair in "Heroku Is Down"]]></title><description><![CDATA[
<p>The incident of Salesforce contains more frequent and detailed updates about Heroku as well and loads more reliably.<p><a href="https://status.salesforce.com/generalmessages/10001540" rel="nofollow">https://status.salesforce.com/generalmessages/10001540</a></p>
]]></description><pubDate>Tue, 10 Jun 2025 16:44:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=44238861</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=44238861</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44238861</guid></item><item><title><![CDATA[New comment by antoineleclair in "Ask HN: How do you structure your shared finances with your spouse/partner"]]></title><description><![CDATA[
<p>It's not super simple, but here's how we did it for a long time:<p>All of your income that's not invested for retirement goes to a joint account, every 1st of the month.
From that joint account, you then move the money to many different accounts and/or prepaid credit cards:
- Day to day expenses, like groceries.
- "Irregularities": municipal taxes, school taxes, things that don't happen every month, like car inspection, veterinary, vacation expenses. You add everything in a spreadsheet that you keep, and divide by 12. Add some padding.
- Home improvements, aka "IKEA" account. Fixed amount every month. If it's a good that you buy to add you our home (coffee machine, chair, curtain, etc.), that's the account. If it's a consumable (gas for the car), use "day to day expenses".
- Individual accounts: each one of you have an account that you decide what to do with. Buying clothes, hobby, etc. aka "I'm an adult, I do what I want".
- Kids: There's always something to buy. Clothes, etc.
- Automatic payments are taken from the main joint account, but you could also have another account if it makes it easier.<p>This method can get confusing and you may need to move money from one account to another one when the wrong card was used.
But the main advantage is that it automatically budgets for you. You see the amount remaining for the month for everything.
Otherwise, you may think that you still have plenty of money to spend on the grocery, so you buy a nice coffee machine, and then the mortgage and car payments happen and you're left with nothing for the rest of the month to do the grocery.<p>The main goals we had when using this method were to never use a credit card (and lose track of how much money we have), and also accommodate for the discrepancy in our revenues at the time.</p>
]]></description><pubDate>Tue, 18 Jun 2024 15:24:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=40718875</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=40718875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40718875</guid></item><item><title><![CDATA[New comment by antoineleclair in "You Don't Need a Dedicated Cache Service – PostgreSQL as a Cache (2023)"]]></title><description><![CDATA[
<p>Transactions can fail because they conflict with other transactions happening at the same time.
It's not an application bug. It's real life transactions happening on a production system. It's normal for that to happen all the time. The app can retry, etc., but it should be expected to happen.
Having to deal with distributed transactions is not something easy. Especially when they're part of many different systems.
For example, you'd have to wait until the transaction commits successfully before setting the value in the cache, which makes it hard to read.
Also, life in general happens. Compute a value, cache it, save things to the database, make API calls, and then a network error happens cancelling everything that you've just done. Having code that handles this kind of possibility is relatively hard to write/read.</p>
]]></description><pubDate>Wed, 06 Mar 2024 20:21:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=39620912</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=39620912</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39620912</guid></item><item><title><![CDATA[New comment by antoineleclair in "You Don't Need a Dedicated Cache Service – PostgreSQL as a Cache (2023)"]]></title><description><![CDATA[
<p>For projects where I know the team will remain small (less than let's say 15 developers), I usually push to keep the architecture as simple as possible.<p>I've used something similar in the past, but kept the expiration code in the app code (Python) instead of using "fancy" Postgres features, like stored procedures. It's much easier to maintain since most developers will know how to read and maintain the Python code, that's also commited to the git repository.<p>Also, instead of using basic INSERT statements, you can "upsert".<p>INSERT INTO cache_items
    (key, created, updated, key, expires, value)
    VALUES (...) ON CONFLICT ON CONSTRAINT pk_cache_items 
    DO UPDATE SET updated = ..., key = ..., expires = ..., value = ...;<p>And since you have control over the table, you can customize it however you want. Like adding categories of cache that you can invalidate all at once, etc.<p>Postgres is also pretty good at key/values.<p>In other words, I agree that using Postgres for things like caching, key/values, and even maybe message queue, can make sense, until it doesn't. When it doesn't make sense anymore, it's usually easy to migrate that one thing off of Postgres and keep the rest there.<p>Also, one benefit that's not often talked about is the complexity of distributed transactions when you have many systems.<p>Let's say you compute a value inside a transaction, cache it in Redis, and then the transaction fails. The cached valued is wrong. If everything is inside of Postgres, the cached value will also not be commited. One less thing to worry about.</p>
]]></description><pubDate>Wed, 06 Mar 2024 20:10:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=39620756</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=39620756</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39620756</guid></item><item><title><![CDATA[New comment by antoineleclair in "iPad Pro"]]></title><description><![CDATA[
<p>USB-C port. Great!</p>
]]></description><pubDate>Tue, 30 Oct 2018 15:33:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=18337573</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=18337573</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=18337573</guid></item><item><title><![CDATA[New comment by antoineleclair in "Show HN: Parabola.io – Automate your work with visual programming"]]></title><description><![CDATA[
<p>Congratulations for the launch. Definitely a good idea. I'm a developer and personally won't need this, but I'll definitely suggest this when I think this could replace some "real coding".</p>
]]></description><pubDate>Thu, 24 May 2018 21:54:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=17148803</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=17148803</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17148803</guid></item><item><title><![CDATA[New comment by antoineleclair in "Dropbox New Plans: Pay If You Want 2FA"]]></title><description><![CDATA[
<p>I opened a support ticket to give my opinion, I suggest you all do the same.</p>
]]></description><pubDate>Tue, 31 Jan 2017 23:52:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=13536643</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=13536643</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=13536643</guid></item><item><title><![CDATA[New comment by antoineleclair in "Ask HN: Show us your abandoned (and probably incomplete) side projects"]]></title><description><![CDATA[
<p><a href="http://grawl.it" rel="nofollow">http://grawl.it</a>
A crawler to find broken links on you websites. 404s for example. If it get some traction, I might put more time into it, but right now it's on stand by. Feedback appreciated.</p>
]]></description><pubDate>Mon, 18 Aug 2014 00:00:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=8190909</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=8190909</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8190909</guid></item><item><title><![CDATA[The Importance of Idempotence]]></title><description><![CDATA[
<p>Article URL: <a href="http://antoineleclair.ca/2014/08/15/the-importance-of-idempotence/">http://antoineleclair.ca/2014/08/15/the-importance-of-idempotence/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=8182723">https://news.ycombinator.com/item?id=8182723</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 15 Aug 2014 15:54:11 +0000</pubDate><link>http://antoineleclair.ca/2014/08/15/the-importance-of-idempotence/</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=8182723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=8182723</guid></item><item><title><![CDATA[New comment by antoineleclair in "Show HN: DroidEdit, a source code editor for Android"]]></title><description><![CDATA[
<p>Looks great, just bought the pro version. I tried a few others last week but was not satisfied.<p>Eager to try the remote commands for unit testing and source control.</p>
]]></description><pubDate>Tue, 20 Mar 2012 13:56:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=3729211</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=3729211</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3729211</guid></item><item><title><![CDATA[New comment by antoineleclair in "Signsquid: The cool way to sign contracts online"]]></title><description><![CDATA[
<p>I must admit it looks oddly similar. We did not see it on Coda site before using it. Not sure of the provenance (I will ask my designer).<p>As smackfu noted, the water drops are not exactly the same. But obviously, since it's very similar, we'll change it. It's very accidental and far from intentionnal.</p>
]]></description><pubDate>Mon, 09 Jan 2012 22:07:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=3444523</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=3444523</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3444523</guid></item><item><title><![CDATA[New comment by antoineleclair in "Signsquid: The cool way to sign contracts online"]]></title><description><![CDATA[
<p>I know, you're right. The original texts were written in French and then translated by someone else to English. We certainly have work left to be done in that area.<p>I decided to post it on HN anyway to get feedback ASAP.<p>Thanks for the example. The original (French) question is more like "Do you keep the documents?". I'll have this fixed.</p>
]]></description><pubDate>Mon, 09 Jan 2012 21:36:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=3444383</link><dc:creator>antoineleclair</dc:creator><comments>https://news.ycombinator.com/item?id=3444383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=3444383</guid></item></channel></rss>