<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: nicois</title><link>https://news.ycombinator.com/user?id=nicois</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 29 Oct 2026 20:52:02 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=nicois" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by nicois in "The US added a record 20.2 GWh of battery storage in just 3 months"]]></title><description><![CDATA[
<p>In Australia, the real value of these big batteries is not necessarily to provide emergency power, but more to respond in milliseconds to variations in demand and to smooth out the 5 minute spot market.<p>Having a sink and a source for spikes aids grid stability and somewhat helps to reduce the need to build more infrastructure to handle transmitting power from the generators during those peaks.<p>It also helps avoid the viability of gas powered generators which are very expensive and carbon intensive.</p>
]]></description><pubDate>Thu, 29 Oct 2026 12:09:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=50287703</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=50287703</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=50287703</guid></item><item><title><![CDATA[New comment by nicois in "Ask HN: What are you reading?"]]></title><description><![CDATA[
<p>I just finished my second read of The Rise and Fall of the Third Reich. It's quite engaging, and also quite helpful to juxtapose against current political events, both to identify the similarities (media control) and divergences.<p>Rereading the Lies of Locke Lamure. If only the sequel were half as good as it...</p>
]]></description><pubDate>Wed, 30 Sep 2026 01:12:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=49903135</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=49903135</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49903135</guid></item><item><title><![CDATA[New comment by nicois in "US citizen charged after GrapheneOS phone wipes during airport search"]]></title><description><![CDATA[
<p>could graphene support multiple duress PINs?<p>feds: "unlock your phone or else"
victim: "um, you're stressing me man. It's either 1234 or 4321, I forget. One of them wipes the phone, the other will unlock it."<p>Whichever PIN they try, it wipes the phone, but the feds can't claim it was deceitful, just unlucky.</p>
]]></description><pubDate>Mon, 27 Jul 2026 03:32:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=49064913</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=49064913</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49064913</guid></item><item><title><![CDATA[New comment by nicois in "A decentralized peer-to-peer messaging application that operates over Bluetooth"]]></title><description><![CDATA[
<p>One missing feature: deferred message propagation. As far as I understand, while messages will be rebroadcast until a TTL is exhausted, there is no mechanism to retain in-transit messages and retransmit them to future peers. While this adds overheads, it's table stakes for real-life usage.<p>You should be able to write a message and not rely on the recipient being available when you press send. You should also be able to run nodes to cache messages for longer, and opt in to holding messages for a greater time period. This would among other things allow couriers between disjoint groups of users.</p>
]]></description><pubDate>Mon, 19 Jan 2026 08:48:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=46676451</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=46676451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46676451</guid></item><item><title><![CDATA[New comment by nicois in "A set of Idiomatic prod-grade katas for experienced devs transitioning to Go"]]></title><description><![CDATA[
<p>If the idea is to have devs implement each kata, wouldn't it be more effective to provide not only automated tests, but also code which should be used as a basis for each challenge?<p>For example, if supporting a dev tag to serve assets from the filesystem, why not include a simple webserver which embeds the contents?<p>This would allow aspiring gophers to go straight to the high value modification of a project rather than effectively spend most of the time writing scaffolding and tests.</p>
]]></description><pubDate>Sun, 11 Jan 2026 21:52:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=46580618</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=46580618</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46580618</guid></item><item><title><![CDATA[New comment by nicois in "The lazy Git UI you didn't know you need"]]></title><description><![CDATA[
<p>A large percentage of git users are unaware of git-absorb (<a href="https://github.com/tummychow/git-absorb" rel="nofollow">https://github.com/tummychow/git-absorb</a>). This complements just about any git flow, vastly reducing the pain of realising you want to amend your staged changes into multiple commits.
This sits well alongside many TUIs and other tools, most of which do not offer any similar capability.</p>
]]></description><pubDate>Mon, 10 Nov 2025 20:16:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45880393</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=45880393</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45880393</guid></item><item><title><![CDATA[New comment by nicois in "Show HN: MyTimers.app offline-first PWA with no build step and zero dependencies"]]></title><description><![CDATA[
<p>This is exactly what I want when baking bread: I have a fixed sequence of steps, spaced quite far apart, and this is pretty much perfect: a series of relatively short breaks when autolysing and kneading, then waiting 10 hours overnight, then waiting 75 minutes after proofing.<p>I'm not sure how well this will work on a mobile; the service worker might be stopped after a few hours, particularly with the screen off overnight</p>
]]></description><pubDate>Tue, 04 Nov 2025 09:35:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=45809047</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=45809047</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45809047</guid></item><item><title><![CDATA[New comment by nicois in "What if tariffs?"]]></title><description><![CDATA[
<p>This would be more impactful if we could see the cost to US purchasers was actually 39% more. Sadly some manufacturers spread the cost across all consumers, which actually means non-US customers are actually paying some of the tariff costs too.</p>
]]></description><pubDate>Sun, 26 Oct 2025 09:13:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45710256</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=45710256</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45710256</guid></item><item><title><![CDATA[New comment by nicois in "Uncertain<T>"]]></title><description><![CDATA[
<p>Is there a risk that this will underemphasise some values when the source of error is not independent?
For example, the ROI on financial instruments may be inversely correlated to the risk of losing your job. If you associate errors with each, then combine them in a way which loses this relationship, there will be problems.</p>
]]></description><pubDate>Thu, 28 Aug 2025 21:00:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=45056978</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=45056978</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45056978</guid></item><item><title><![CDATA[New comment by nicois in "Brood War Korean Translations"]]></title><description><![CDATA[
<p>Nit-picking, but a high signal to noise ratio is desirable, indicating low levels of noise compared to signal, not the reverse.</p>
]]></description><pubDate>Fri, 17 Jan 2025 21:16:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=42743338</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=42743338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42743338</guid></item><item><title><![CDATA[New comment by nicois in "Batteries: How cheap can they get?"]]></title><description><![CDATA[
<p>Despite what you get in Australia being pretty reliable, it's too expensive to justify quite yet. My 8kW solar is connected to a Fronius inverter, but until I find a less expensive option I can justify adding a battery.<p>A 13kWh system is over $AUD10k, and the ROI is on par with the expected lifespan of the battery.<p>If sodium cells can bring the price down to $AUD100 it would indeed be a massive game changer.</p>
]]></description><pubDate>Fri, 05 Jul 2024 08:04:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=40880704</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=40880704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40880704</guid></item><item><title><![CDATA[New comment by nicois in "The One Billion Row Challenge in Go: from 1m45s to 4s in nine solutions"]]></title><description><![CDATA[
<p>It would be interesting to know how effective Profile Guided Optimisation is here.</p>
]]></description><pubDate>Sun, 03 Mar 2024 05:50:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=39578766</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=39578766</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39578766</guid></item><item><title><![CDATA[New comment by nicois in "Htmx is part of the GitHub Accelerator"]]></title><description><![CDATA[
<p>I've also found htmx a great way to retain server side rendering with minimising the recalculation cost of client changes.<p>By avoiding needing to add lots of client side logic to still get very low latency updates, it's given me the best of both worlds.<p>The way Django's template system works also makes it so easy to render a full page initially, then expose views for subcomponents of that page with complete consistency.<p>On a tangent, Django's async support is still half-baked, meaning it's not great for natively supporting long polling. Using htmx to effectively retrieve pushed content from the server is impeded a little by this, but I slotted in a tiny go app between nginx and gunicorn and avoided needing async he'll without running out of threads.</p>
]]></description><pubDate>Wed, 16 Aug 2023 19:08:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=37152080</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=37152080</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37152080</guid></item><item><title><![CDATA[New comment by nicois in "I built an open-source, AI-powered solar panel that's 95% optimal"]]></title><description><![CDATA[
<p>Doesn't this model fail to account for seasonal variations in the locus of the sun? The optimal angle will vary across the year, whatever the latitude.<p>Maybe I'm missing something, but i would use a simpler algorithm which doesn't need ML. On day 0, plug in the latitude and allow the system to traverse the range of angles, finding the optimal one at the time - ie: yielding maximum power. Let it run 3-5 times during the day, then fit those points to the theoretical path of the sun across the sky. Now your system is calibrated, without needing any other input. As the seasons change, the system will always know which angle to face for optimal power.</p>
]]></description><pubDate>Thu, 28 Apr 2022 21:26:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=31198426</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=31198426</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31198426</guid></item><item><title><![CDATA[New comment by nicois in "Apple's whitelist of the 250k auto-completable domains in iOS"]]></title><description><![CDATA[
<p>Which is the cause, and which the effect? Was apple's incorrect autocorrect causing them to go to the wrong place initially, or did they autocorrect list get built from the incorrect attempts?</p>
]]></description><pubDate>Mon, 04 Apr 2022 08:02:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=30904300</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=30904300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30904300</guid></item><item><title><![CDATA[New comment by nicois in "Show HN: Nango, a Django extension providing SPA-like features"]]></title><description><![CDATA[
<p>The inter-request integrity guarantee is nice, but you're right that on its own it seems something many devs don't value - or at least don't consider.<p>The main driver for getting it done is mostly to set the groundwork for the websocket autosave feature, which would be exceeding dangerous without this.</p>
]]></description><pubDate>Sun, 13 Feb 2022 09:42:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=30320552</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=30320552</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30320552</guid></item><item><title><![CDATA[New comment by nicois in "Show HN: Nango, a Django extension providing SPA-like features"]]></title><description><![CDATA[
<p>I can't speak for Channels itself, but I'm quite comfortable that my use of it is not exotic, so is less likely to hit rough edges. The pattern of use I have chosen (having each websocket endpoint subscribe to layer groups based on the model instances the form is using) means it's quite clean.<p>Remember that this is not a SPA, so websockets are recreated each time a page containing models marked for dynamic updates is served. This means there should be fewer problems associated with long-lived connections, and any instability will have more limited impact.</p>
]]></description><pubDate>Sun, 13 Feb 2022 03:34:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=30318925</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=30318925</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30318925</guid></item><item><title><![CDATA[New comment by nicois in "Show HN: Nango, a Django extension providing SPA-like features"]]></title><description><![CDATA[
<p>Over recent weeks there have been a few HN posts relating to Django and how it interacts with "modern" ecosystems. Over Christmas I began working on a Django extension which would help leverage some features usually seen only in javascript-heavy websites, without the pain of writing custom code, in investing in browser-heavy automated tests.<p>The "killer" features I am hoping to bring to the Django community is the ability to have strong data consistency assurances between requests when editing data, as well as realtime server-driven validation of form inputs, alongside optional realtime "autosaving" of fields as changes are made. You can see how this looks here: <a href="https://user-images.githubusercontent.com/236562/153730557-a22b473a-1680-465d-a898-1a7fa72e919f.mp4" rel="nofollow">https://user-images.githubusercontent.com/236562/153730557-a...</a><p>I have also attempted to minimise how much an existing codebase needs to be altered to use or test this. No database schema changes are required, and mostly it's just a matter of changing import statements from "django..." to "nango..."<p>This is very much a proof-of-concept at the moment and certainly not fit for production, and I welcome all suggestions and critiques. A quickstart script is included in the repo which should minimise the pain in running the code locally.</p>
]]></description><pubDate>Sat, 12 Feb 2022 23:31:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=30317450</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=30317450</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30317450</guid></item><item><title><![CDATA[Show HN: Nango, a Django extension providing SPA-like features]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/nicois/nango">https://github.com/nicois/nango</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30317397">https://news.ycombinator.com/item?id=30317397</a></p>
<p>Points: 20</p>
<p># Comments: 5</p>
]]></description><pubDate>Sat, 12 Feb 2022 23:24:41 +0000</pubDate><link>https://github.com/nicois/nango</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=30317397</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30317397</guid></item><item><title><![CDATA[New comment by nicois in "Dura is a background process that watches your Git repositories"]]></title><description><![CDATA[
<p>This is also my pattern. To further assist with this, I wrote a short(ish) rebase script intended to be run when you want to squash your series of commits, also bringing your local branch up-to-date with the upstream. It relies on your initial commit in your feature branch having a commit message which corresponds to the branch name, but that's it. This does a great job of minimising unnecessary merge conflicts, even after working offline for an extended period.<p><a href="https://gist.github.com/nicois/e7f90dce7031993afd4677dfb7e84284" rel="nofollow">https://gist.github.com/nicois/e7f90dce7031993afd4677dfb7e84...</a></p>
]]></description><pubDate>Mon, 03 Jan 2022 22:16:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=29787751</link><dc:creator>nicois</dc:creator><comments>https://news.ycombinator.com/item?id=29787751</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29787751</guid></item></channel></rss>