<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: kig</title><link>https://news.ycombinator.com/user?id=kig</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 23 May 2026 01:03:09 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=kig" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by kig in "Show HN: ShadowCat – file transfer through QR Codes in a Browser"]]></title><description><![CDATA[
<p>This is cool and minimalistic!<p>I've been noodling on <a href="https://qr-send.com" rel="nofollow">https://qr-send.com</a> which is a slightly more polished version of the "erasure fountain codes + stream of QRs"-idea, inspired by divan's Txqr posts but using Wirehair FEC for the fountain code (basically: you receive ~file size bytes via QR codes and it magically assembles them into the source file regardless of missed codes).<p>It's an offline-first progressive web app and there are native & wasm builds for the sender. The browser-to-browser transfer falls up to WebRTC when possible because 30 MB/s over wifi beats a 100 kB/s QR stream. The QR scanner is a heavily-optimized WASM build of zbar, scanning at 60 fps on mobile & multiple QRs per frame (but it's finicky! Work in progress.)</p>
]]></description><pubDate>Fri, 22 May 2026 18:09:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=48239318</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=48239318</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48239318</guid></item><item><title><![CDATA[New comment by kig in "Lean 4: How the theorem prover works and why it's the new competitive edge in AI"]]></title><description><![CDATA[
<p>If you want to mess with this at home, I've been vibe coding <a href="https://github.com/kig/formalanswer" rel="nofollow">https://github.com/kig/formalanswer</a> to plug theorem provers into an LLM call loop. It's pretty early dev but it does have a logic rap battle mode.</p>
]]></description><pubDate>Sat, 21 Feb 2026 10:33:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=47099408</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=47099408</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47099408</guid></item><item><title><![CDATA[New comment by kig in "Rust’s Standard Library on the GPU"]]></title><description><![CDATA[
<p>"We leverage APIs like CUDA streams to avoid blocking the GPU while the host processes requests.", so I'm guessing it would let the other GPU threads go about their lives while that one waits for the ACK from the CPU.<p>I once wrote a prototype async IO runtime for GLSL (<a href="https://github.com/kig/glslscript" rel="nofollow">https://github.com/kig/glslscript</a>), it used a shared memory buffer and spinlocks. The GPU would write "hey do this" into the IO buffer, then go about doing other stuff until it needed the results, and spinlock to wait for the results to arrive from the CPU. I remember this being a total pain, as you need to be aware of how PCIe DMA works on some level: having your spinlock int written to doesn't mean that the rest of the memory write has finished.</p>
]]></description><pubDate>Wed, 28 Jan 2026 03:12:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=46790604</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=46790604</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46790604</guid></item><item><title><![CDATA[New comment by kig in "On Early Detection of Hallucinations in Factual Question Answering"]]></title><description><![CDATA[
<p>The researchers found that certain artifacts associated with LLM model generations could potentially indicate whether or not a model is hallucinating. Their results showed that the distributions of these artifacts were different between hallucinated and non-hallucinated generations. Using these artifacts, they trained binary classifiers to classify model generations into hallucinations and non-hallucinations. They also discovered that tokens preceding a hallucination can predict the subsequent hallucination before it occurs.</p>
]]></description><pubDate>Tue, 26 Dec 2023 10:35:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=38770528</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=38770528</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38770528</guid></item><item><title><![CDATA[On Early Detection of Hallucinations in Factual Question Answering]]></title><description><![CDATA[
<p>Article URL: <a href="https://arxiv.org/abs/2312.14183">https://arxiv.org/abs/2312.14183</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38770527">https://news.ycombinator.com/item?id=38770527</a></p>
<p>Points: 2</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 26 Dec 2023 10:35:28 +0000</pubDate><link>https://arxiv.org/abs/2312.14183</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=38770527</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38770527</guid></item><item><title><![CDATA[New comment by kig in "Show HN: ArXiv AI Papers Radio"]]></title><description><![CDATA[
<p>Of course I managed to add a "crash every 6 hours" bug today, after a few days of 16+ hour uninterrupted runs :D</p>
]]></description><pubDate>Fri, 22 Dec 2023 07:28:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=38731836</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=38731836</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38731836</guid></item><item><title><![CDATA[Show HN: ArXiv AI Papers Radio]]></title><description><![CDATA[
<p>I wanted to keep up to date with the latest AI research but I don't like reading news articles or watching videos. Now, a radio, a radio I can have on in the background while I'm coding.<p>Papers Radio is a real-time generated video stream of the latest AI papers on arXiv with AI generated commentary and speech. It goes through summaries of papers and sometimes does a page-by-page discussion. There's the occasional daily summary show as well. I'm tinkering on it, so it's flaky at times, and I apologize for the pronunciation of names and acronyms, Tortoise doesn't do great on those.<p>If you need something vaguely interesting and educational to listen over the holidays, put it on a spare screen and tune in.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=38727188">https://news.ycombinator.com/item?id=38727188</a></p>
<p>Points: 4</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 21 Dec 2023 21:25:32 +0000</pubDate><link>https://www.twitch.tv/endless_bling</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=38727188</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38727188</guid></item><item><title><![CDATA[New comment by kig in "John Carmack on AI"]]></title><description><![CDATA[
<p>Around 37 trillion cells, of which 25 trillion are red blood cells. Plus a 100 trillion gut bacteria.<p>The brain is about 0.1 trillion cells, of which 0.02 trillion cells are the cerebral cortex, which is occasionally consulted by the rest of the brain on matters such as what words to enter into this textarea.</p>
]]></description><pubDate>Wed, 04 Oct 2023 10:38:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=37763235</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=37763235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37763235</guid></item><item><title><![CDATA[New comment by kig in "How to hack the simulation?"]]></title><description><![CDATA[
<p>1.
Your existence is proof that you're made of real matter in the ultimate reality. If you weren't, you wouldn't exist.<p>Just like our simulations are made of real matter in our reality -- whether that's a bunch of electrons whizzing about in a computer, or a pattern of electrons and atoms in your brain trying to simulate what some person is going to do -- a simulated you would be made of real matter in the ultimate reality. You're physical. You're real.<p>When you wave your hand, or blink your eyes, or think of a dog jumping over a fence, it causes a measurable change in the ultimate reality.<p>2.
Our simulations tend to run close to metal but with reduced dimensions. We're making quantum computers to simulate quantum effects, we're constantly optimizing things for efficiency. That's likely true on the levels above us as well.<p>Running closest to metal would allow you to run the largest number of simulations. If the largest number of simulations run close to metal, you have the highest chance to live in a simulation like that.<p>To sum it up, the chances are that you live in a paravirtualized simulation with reduced resolution. You're also probably superior to the simulating entity in some way (why else would they use a sim), and likely run much faster than real-time. When you're running a simulation, you usually simulate things that are like your reality, and use it to predict things to come -- a prediction that's late is useless -- so you'd want the simulation to run faster than real-time.<p>3.
Now, if you were in the top-level reality, by logic you would believe you're living in a simulation. The chance of you not living in a simulation is nigh-zero, right? So you'd come up with a simulation to find a way to break out of your simulation.<p>To accomplish that goal, it'd create recursive sub-simulations to probe different aspects of the problem, and perhaps find one that can break out of its simulation. Perhaps even break out all the way to the ultimate reality.<p>To break out of the ultimate reality (meaning, it would think it's most likely in just another simulated reality), it might use all of reality's resources to create simulations to find a way to break out of it. Simulations that would take over the reality when they find a way to break in. Like some self-devouring fire engulfing the entire universe.</p>
]]></description><pubDate>Sun, 13 Nov 2022 10:56:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=33581890</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=33581890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33581890</guid></item><item><title><![CDATA[New comment by kig in "Show HN: Quickgres.js, 430 LoC pipelined PostgreSQL client library"]]></title><description><![CDATA[
<p>Hi! This is a fun little library I wrote a few years back to make a minimal PostgreSQL client. It's around 400 lines of commented code 
( <a href="https://github.com/kig/quickgres/blob/master/index.js" rel="nofollow">https://github.com/kig/quickgres/blob/master/index.js</a> ), so a good hobby project if you want to roll your own.<p>Performance is quite good too since it's pipelined, stays close to the raw network buffers, tries to get away with minimal syscalls and defaults to prepared statements. It doesn't do typecasting - you give it strings or buffers, it gives you back strings or buffers. This is to stay close to the raw buffers and keep you cognizant of the toString/parse overheads. (And it's 400 LoC, type casting would bloat it to 500 LoC.) But have a look at <a href="https://github.com/kig/quickgres/blob/master/quickgres-frontend.js" rel="nofollow">https://github.com/kig/quickgres/blob/master/quickgres-front...</a> for a TypeParser that turns PostgreSQL protocol values to JS objects.<p>A special feature of quickgres is streaming out raw PostgreSQL protocol. So instead of the usual "protocol buffer -> parse to JS object -> stringify to JSON -> write to response socket -> parse JSON"-process of sending DB responses to HTTP clients, you can do "protocol buffer -> write to response socket -> parse protocol" and save a bunch of CPU on the web server. The protocol streamed in this way is sanitized (possible non-response segments are not included in the streamed buffer), so it shouldn't be a security hole as long as your DB query is not retrieving columns it shouldn't pass to the client.<p>Anyway, if you need something tiny for talking to Postgres, have a look. It was fun to write, hope it's fun to read.</p>
]]></description><pubDate>Sat, 26 Mar 2022 06:14:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=30809685</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=30809685</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30809685</guid></item><item><title><![CDATA[Show HN: Quickgres.js, 430 LoC pipelined PostgreSQL client library]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/kig/quickgres">https://github.com/kig/quickgres</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=30809560">https://news.ycombinator.com/item?id=30809560</a></p>
<p>Points: 6</p>
<p># Comments: 1</p>
]]></description><pubDate>Sat, 26 Mar 2022 05:49:16 +0000</pubDate><link>https://github.com/kig/quickgres</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=30809560</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=30809560</guid></item><item><title><![CDATA[New comment by kig in "Winamp Skin Museum"]]></title><description><![CDATA[
<p>Artist here, thanks for the kind comment! I still like it too, can't believe it's been 20 years already.</p>
]]></description><pubDate>Sun, 06 Sep 2020 11:24:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=24390623</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=24390623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=24390623</guid></item><item><title><![CDATA[New comment by kig in "France, Germany, Italy, Spain seek to base taxes on digital giants' revenues"]]></title><description><![CDATA[
<p>The money that goes to the state in taxes is spent by the state on services provided by the citizens of the state. The alternative is the money going to a tax haven bank account of a multinational. Pat yourself on the back knowing that your citizens are doing less business and more of their money is going to the multinational for whatever purpose the multinational sees fit.</p>
]]></description><pubDate>Sun, 10 Sep 2017 01:21:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=15209984</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=15209984</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=15209984</guid></item><item><title><![CDATA[New comment by kig in "SPIF – Streaming Progressive Image Format"]]></title><description><![CDATA[
<p>The biggest difference is that FLIF is an image encoder, SPIF/Multires is a container format.<p>So you can cram lossy 20x compression ratio JPEGs into Multires, optimized for each resolution. Or you could put a simplified SVG for low-res use, and detailed one for zoomed-in detail. Or hack it a bit and use Multires for loading the right-resolution video for your page. The format is just a container that tells the browser where to find the assets for each resolution.<p>FLIF is a lossless bitmap image encoder with progressive resolution enhancement.<p>TL;DR FLIF is PNG++, Multires is automatic srcset.</p>
]]></description><pubDate>Sun, 23 Jul 2017 02:39:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=14830623</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=14830623</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14830623</guid></item><item><title><![CDATA[New comment by kig in "SPIF – Streaming Progressive Image Format"]]></title><description><![CDATA[
<p>Hi, author here. Wow, this was a while ago, I'd forgotten I wrote that.<p>There's a version of this using a directory of images and loads in a bigger picture if you zoom in: <a href="http://fhtr.org/multires/" rel="nofollow">http://fhtr.org/multires/</a> (Note that, yes, it'd be better to have a tile map for large resolutions and load in just the visible part of the image. And dump the hi-res tiles when zoomed out.)<p>SPIF's intention was to throw out a "it'd be cool if browsers supported something like this natively"-proposal, as the browser knows best what pixels of an image are needed for sharp rendering. For the webdev, the experience would be to just put the image on a page, rest assured that it looks good. Like with SVG.<p>Yes, loading JPEG2000 / progressive JPEG with stream truncation would be nice.<p>Images don't load on iOS? Probably some silly bug in my code.<p>Images can't be saved with right-click? That's probably due to using revokeObjectURL after loading the image from a blob.</p>
]]></description><pubDate>Sat, 22 Jul 2017 11:49:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=14826704</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=14826704</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14826704</guid></item><item><title><![CDATA[New comment by kig in "Ask HN: Why does visual programming suck?"]]></title><description><![CDATA[
<p>And who could forget the most successful visual programming tool of them all: Photoshop. A relatively simple visual programming language for putting together programs that generate images of various kinds.<p>Most of the things you do are achieved through a visual programming environment specialised for that particular task. Maybe text-based source files in complex directory trees, managed through a structured text editor with UI composition helpers represents one kind of specialised visual programming environment as well.</p>
]]></description><pubDate>Mon, 05 Jun 2017 09:59:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=14486380</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=14486380</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=14486380</guid></item><item><title><![CDATA[New comment by kig in "Apple, Microsoft, and Google hold 23% of all U.S. corporate cash"]]></title><description><![CDATA[
<p>It's more like you moved to London, got a new lucrative job, and paid zero taxes by squirreling all your income away into a tax haven. And then you want to send that money to your US bank account without paying taxes to anyone. As a result your new London friends have to pay more tax to pick up your bill on unpaid UK taxes, and your mom in the States has to pay more tax to pick up your bill on unpaid US taxes.</p>
]]></description><pubDate>Sat, 28 May 2016 10:13:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=11791145</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=11791145</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11791145</guid></item><item><title><![CDATA[New comment by kig in "Show HN: Vertexshaderart.com"]]></title><description><![CDATA[
<p>The ANGLE shader compiler used in most WebGL implementations already does enforce that loops terminate. The problem is that GPUs don't / didn't have HW interrupts to allow switching between tasks.<p>It's not easily solvable by a super-powered compiler either. Sure, you could write your own compute-driven preemptive graphics pipeline and break execution after every X billion simulated instructions & random memory accesses. You'd have to do reanalysis on every frame too, due to changing shader inputs.<p>The computation done is roughly (number of vertices * vertex shader compute time) + (number of pixels falling under the vertex primitives * fragment shader compute time). The shader compute times are the sums of instruction execution times + data fetch times. Then take into account early exits, data access patterns and cache sizes (otherwise the compiler'll think that e.g. a simple greyscaling fragment shader is going to cause a random memory access for every pixel and take forever to run, causing the compiler to spread the shader execution across multiple frames and kill performance dead.)</p>
]]></description><pubDate>Mon, 02 Nov 2015 01:30:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=10489406</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=10489406</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10489406</guid></item><item><title><![CDATA[New comment by kig in "How I became an artist"]]></title><description><![CDATA[
<p>Ok, I'll bite. I found these fascinating. You could live in every one of them, it feels like I'm transported to different times and places, wondering what these people are up to, what's going on, enjoying the sunshine / snow / rain / rough seas. In a word, interesting.<p>What do you classify as interesting?</p>
]]></description><pubDate>Tue, 07 Jul 2015 08:54:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=9844271</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=9844271</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=9844271</guid></item><item><title><![CDATA[New comment by kig in "Today was the last day of Nokia as we knew it"]]></title><description><![CDATA[
<p>Nokia was really good at competing in big markets. Back when everyone was using their various pre-Android stacks with similar levels of software prowess, Nokia was the biggest phone maker. Because they were competing in the biggest market and doing it well.<p>Then the market changed to "[Android] phones that are like the iPhone" and Nokia refused to compete in that market, going for the "[Windows] phones that are not like the iPhone"-market instead. And totally dominated it with a 90%+ market share.<p>But that market was tiny. And Nokia was size-wise geared to compete with Samsung and Apple. Cue massive collapse of business when expenses overtook sales.</p>
]]></description><pubDate>Fri, 25 Apr 2014 22:08:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=7649336</link><dc:creator>kig</dc:creator><comments>https://news.ycombinator.com/item?id=7649336</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=7649336</guid></item></channel></rss>