<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: jeffffff</title><link>https://news.ycombinator.com/user?id=jeffffff</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 20 May 2026 19:59:13 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=jeffffff" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by jeffffff in "Everything in C is undefined behavior"]]></title><description><![CDATA[
<p>Compilation error</p>
]]></description><pubDate>Wed, 20 May 2026 11:40:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=48206151</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=48206151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48206151</guid></item><item><title><![CDATA[New comment by jeffffff in "Do you even need a database?"]]></title><description><![CDATA[
<p>don't forget to fsync the file before the rename! and you also need to fsync the directory after the rename!</p>
]]></description><pubDate>Wed, 15 Apr 2026 18:24:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47783114</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=47783114</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47783114</guid></item><item><title><![CDATA[New comment by jeffffff in "Apple discontinues the Mac Pro"]]></title><description><![CDATA[
<p>> None of the things people care about really get much out of "unified memory". GPUs need a lot of memory bandwidth, but CPUs generally don't and it's rare to find something which is memory bandwidth bound on a CPU that doesn't run better on a GPU to begin with. Not having to copy data between the CPU and GPU is nice on paper but again there isn't much in the way of workloads where that was a significant bottleneck.<p>the bottleneck in lots of database workloads is memory bandwidth. for example, hash join performance with a build side table that doesn't fit in L2 cache. if you analyze this workload with perf, assuming you have a well written hash join implementation, you will see something like 0.1 instructions per cycle, and the memory bandwidth will be completely maxed out.<p>similarly, while there have been some attempts at GPU accelerated databases, they have mostly failed exactly because the cost of moving data from the CPU to the GPU is too high to be worth it.<p>i wish aws and the other cloud providers would offer arm servers with apple m-series levels of memory bandwidth per core, it would be a game changer for analytical databases. i also wish they would offer local NVMe drives with reasonable bandwidth - the current offerings are terrible (<a href="https://databasearchitects.blogspot.com/2024/02/ssds-have-become-ridiculously-fast.html" rel="nofollow">https://databasearchitects.blogspot.com/2024/02/ssds-have-be...</a>)</p>
]]></description><pubDate>Fri, 27 Mar 2026 14:31:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=47543091</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=47543091</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47543091</guid></item><item><title><![CDATA[New comment by jeffffff in "Mongo but on Postgres and with strong consistency benefits"]]></title><description><![CDATA[
<p>it's kind of dumb that postgres uses a nested loop join instead of a hash join there. hash join almost always has the best worst-case behavior, and without stats it should be the default choice.</p>
]]></description><pubDate>Wed, 10 Jul 2024 14:24:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=40927249</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=40927249</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40927249</guid></item><item><title><![CDATA[New comment by jeffffff in "Digital Wood Joints"]]></title><description><![CDATA[
<p>we're not really close, for two reasons:<p>1) programming takes a long time, and it only makes sense to take the time to do it if you're making a bunch of copies of something. this is something that could be improved with better software and ux - if cad programs made it easy to just drag and drop joints from a joint library into your model then this would be a different story. a hardware+software solution could also work here, something like a cnc version of <a href="https://www.woodpeck.com/multi-router-group.html" rel="nofollow">https://www.woodpeck.com/multi-router-group.html</a> where the software makes it easy to scale the templates to your work piece.<p>2) setup takes a long time on the affordable machines. every time you change bits you have to recalibrate. positioning the work piece on the table and clamping/taping it down takes a lot of time. if you have to flip the work piece over then that takes even longer and positioning is even more critical, and programming is more complicated as well. regardless of whether your designs require cutting on one or both sides, you have to program tabs into your design so the router doesn't cut all the way through (or else the piece will move and the router will screw it up), and then you have to go back and cut the pieces out the rest of the way manually and trim off the tabs with a flush trim router bit. the high end production quality machines mitigate a lot of these issues, but now you are talking about a machine that costs at least $100,000 and takes up a whole room.</p>
]]></description><pubDate>Thu, 25 Apr 2024 16:48:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=40159870</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=40159870</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40159870</guid></item><item><title><![CDATA[New comment by jeffffff in "Digital Wood Joints"]]></title><description><![CDATA[
<p>i'm a hobbyist woodworker with more money than time. i have a pretty basic 3-axis cnc and i thought it would save me time, but it really doesn't. the only thing i actually use it for is cutting out router templates, and even that would be done better with a laser cutter (although a good laser cutter costs a lot more than my cnc).<p>i could see how a machine big enough for 4x8 sheets with an automatic tool changer, a vacuum table, and all the automatic calibration gizmos might be a time saver for a production shop, but if you're building something that's a one-off or you don't have all the setup automation goodies (which are $$$$$) then setup and programming usually end up taking longer than doing the work the old fashioned way.<p>for tenon cutting like in the bed rail example you gave, i have a hard time imagining any situation where cnc is going to be more efficient than a domino xl.</p>
]]></description><pubDate>Thu, 25 Apr 2024 16:18:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=40159451</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=40159451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40159451</guid></item><item><title><![CDATA[New comment by jeffffff in "Ask HN: Any felons successfully found IT work post-release?"]]></title><description><![CDATA[
<p>Speaking of Indeed, the first employee (<a href="https://en.wikipedia.org/wiki/Chris_Lamprecht" rel="nofollow">https://en.wikipedia.org/wiki/Chris_Lamprecht</a>) was a felon and a great engineer</p>
]]></description><pubDate>Thu, 04 Jan 2024 01:24:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=38862012</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=38862012</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38862012</guid></item><item><title><![CDATA[New comment by jeffffff in "Zenbleed"]]></title><description><![CDATA[
<p>shouldn't have any effect, the new amd hardware is zen 4 and this only affects zen 2</p>
]]></description><pubDate>Mon, 24 Jul 2023 17:31:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=36851467</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36851467</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36851467</guid></item><item><title><![CDATA[New comment by jeffffff in "Backend of Meta Threads is built with Python 3.10"]]></title><description><![CDATA[
<p>JIT compilation has the opportunity to do profile-guided optimization at runtime. JIT compilation is also simpler when distributing an application to non-identical servers, as it can optimize for the exact hardware it is running on.</p>
]]></description><pubDate>Thu, 06 Jul 2023 20:32:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=36622516</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36622516</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36622516</guid></item><item><title><![CDATA[New comment by jeffffff in "Are You Sure You Want to Use MMAP in Your Database Management System? (2022)"]]></title><description><![CDATA[
<p>take a look at <a href="http://nms.csail.mit.edu/~stavros/pubs/OLTP_sigmod08.pdf" rel="nofollow noreferrer">http://nms.csail.mit.edu/~stavros/pubs/OLTP_sigmod08.pdf</a> - the overhead of coordinating multiple writers often makes multi-writer databases slower than single-writer databases. remember, everything has to be serialized when it goes to the write ahead log, so as long as you can do the database updates as fast as you can write to the log then concurrent writers are of no benefit.</p>
]]></description><pubDate>Mon, 03 Jul 2023 01:25:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=36567625</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36567625</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36567625</guid></item><item><title><![CDATA[New comment by jeffffff in "Dynamic bit shuffle using AVX-512"]]></title><description><![CDATA[
<p>there are only a handful of instructions that do interesting things beyond parallel versions of basic arithmetic and bitwise operations. <a href="https://branchfree.org/2019/05/29/why-ice-lake-is-important-a-bit-bashers-perspective/" rel="nofollow noreferrer">https://branchfree.org/2019/05/29/why-ice-lake-is-important-...</a> provides a good overview of them.</p>
]]></description><pubDate>Fri, 30 Jun 2023 15:08:18 +0000</pubDate><link>https://news.ycombinator.com/item?id=36536242</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36536242</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36536242</guid></item><item><title><![CDATA[New comment by jeffffff in "Dynamic bit shuffle using AVX-512"]]></title><description><![CDATA[
<p>AVX and AVX2 are pretty awful because of lane-crossing limitations, but AVX512 is actually really nice and feels like a real programmer designed it rather than an electrical engineer.</p>
]]></description><pubDate>Fri, 30 Jun 2023 14:49:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=36535875</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36535875</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36535875</guid></item><item><title><![CDATA[New comment by jeffffff in "What every programmer should know about memory (2007) [pdf]"]]></title><description><![CDATA[
<p>one thing that is missing from this document is that there are a limited number of line fill buffers in the L1 cache of each core, which limits the number of concurrent memory accesses that can be in flight well before anything related to channels/ranks/banks begins to matter. <a href="https://lemire.me/blog/2018/11/05/measuring-the-memory-level-parallelism-of-a-system-using-a-small-c-program/" rel="nofollow noreferrer">https://lemire.me/blog/2018/11/05/measuring-the-memory-level...</a></p>
]]></description><pubDate>Thu, 22 Jun 2023 20:55:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=36438838</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=36438838</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36438838</guid></item><item><title><![CDATA[New comment by jeffffff in "Smart ovens shouting out to servers in Russia and China"]]></title><description><![CDATA[
<p>i have jenn air appliances and tried to connect to my dishwasher solely because i was curious as to why anyone would want their dishwasher to be connected to the internet. i could never get it to actually work, so i am still in the dark as to what i am missing out on in the world of internet connected dishwashers.</p>
]]></description><pubDate>Thu, 26 Jan 2023 18:17:22 +0000</pubDate><link>https://news.ycombinator.com/item?id=34536058</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=34536058</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34536058</guid></item><item><title><![CDATA[New comment by jeffffff in "Ask HN: GDPR in 2022 – What do I need to know as a solo founder?"]]></title><description><![CDATA[
<p>you'd have to block california too because CCPA is essentially the same thing</p>
]]></description><pubDate>Thu, 13 Oct 2022 16:41:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=33193420</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33193420</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33193420</guid></item><item><title><![CDATA[New comment by jeffffff in "New integer types I’d like to see"]]></title><description><![CDATA[
<p>the "if constexpr" makes sure the checks only happen in debug mode. you'd definitely want to turn the checks off for release builds.</p>
]]></description><pubDate>Sat, 01 Oct 2022 01:25:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=33042865</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33042865</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33042865</guid></item><item><title><![CDATA[New comment by jeffffff in "New integer types I’d like to see"]]></title><description><![CDATA[
<p>of course the standard allows implementations to "behave during translation or program execution in a documented manner characteristic of the environment" if you do something that is undefined behavior, implementations are literally allowed to do anything they want if you do something that is undefined behavior. the key point is that they are not required to do anything, so what's the point of adding more undefined behavior for this case?</p>
]]></description><pubDate>Sat, 01 Oct 2022 01:20:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=33042837</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33042837</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33042837</guid></item><item><title><![CDATA[New comment by jeffffff in "New integer types I’d like to see"]]></title><description><![CDATA[
<p>i think you could actually do that in C++ as a library with a bit of metaprogramming. the arithmetic operations will get weird though unless everything is the same type, for example what is the result type of int<-10, 10>+int<0, 20>? (the "right" answer is probably a megabyte of compiler errors)</p>
]]></description><pubDate>Fri, 30 Sep 2022 15:24:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=33036117</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33036117</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33036117</guid></item><item><title><![CDATA[New comment by jeffffff in "New integer types I’d like to see"]]></title><description><![CDATA[
<p>torstenvl is correct. UB is UB whether you are in debug mode or release mode. making it UB for it to store a negative value doesn't make sense. you could put debug checks for it behind an if constexpr or a macro but please C++ has enough UB already, don't add more. disappointing to see that this is downvoted.</p>
]]></description><pubDate>Fri, 30 Sep 2022 15:14:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=33035982</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33035982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33035982</guid></item><item><title><![CDATA[New comment by jeffffff in "New integer types I’d like to see"]]></title><description><![CDATA[
<p>the one about unsigned integers with one bit missing would be trivial to implement as a library in C++ with no significant downside. all you have to do is make a class wrapping a signed int and put debug checks for if the high 1 bit is set behind an if constexpr in operator= and the copy constructor. in most other languages this would bring a big performance penalty, but this is one thing that C++ is actually very good at.</p>
]]></description><pubDate>Fri, 30 Sep 2022 15:09:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=33035922</link><dc:creator>jeffffff</dc:creator><comments>https://news.ycombinator.com/item?id=33035922</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=33035922</guid></item></channel></rss>