<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: pak9rabid</title><link>https://news.ycombinator.com/user?id=pak9rabid</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Thu, 02 Jul 2026 15:07:34 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=pak9rabid" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by pak9rabid in "Internal Combustion Engine (2021)"]]></title><description><![CDATA[
<p>There's also been advancements in cylinder head technology (i.e., VTEC, VVT, etc), which I guess also falls under control systems, but worth mentioning as these technologies are very cool.  Honda's iVTEC has it down to a damn science with how to optimize valve lift & duration across the entire RPM spectrum.</p>
]]></description><pubDate>Wed, 01 Jul 2026 19:39:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=48752067</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=48752067</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48752067</guid></item><item><title><![CDATA[New comment by pak9rabid in "Giant Banana Pulled Over: Driver Says Cops Have Stopped Him 100s of Times"]]></title><description><![CDATA[
<p>Sounds like a fun way to make a lot of friends in law enforcement :)</p>
]]></description><pubDate>Tue, 23 Jun 2026 14:18:49 +0000</pubDate><link>https://news.ycombinator.com/item?id=48645375</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=48645375</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48645375</guid></item><item><title><![CDATA[New comment by pak9rabid in "Every GPU That Mattered"]]></title><description><![CDATA[
<p>The only thing the ViRGE was good for was passing through to a Voodoo2</p>
]]></description><pubDate>Tue, 07 Apr 2026 16:34:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47677902</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47677902</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47677902</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>It looks like it can.  Check out GPUDirect RDMA.</p>
]]></description><pubDate>Tue, 31 Mar 2026 14:45:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=47588110</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47588110</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47588110</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>When you setup your single ethernet port (let's call it eth0) as a VLAN trunk port, you'll get the ability to configure multiple virtual interfaces off of it.  How many virtual interfaces you get depends on how many VLANs you want to tag traffic for.  For example, if you have 2 VLANS with ids 100 and 200 (100 being your public Internet-facing traffic, and 200 being your LAN traffic), you would then have interfaces eth0.100 and eth0.200 to work with that you can then use in your firewall scripts as if they were two separate, physical interfaces.<p>This of course means you need a VLAN-aware switch that this single ethernet port can plug into, configured as a VLAN trunk (in Cisco terms) port.  You would then want to configure one of the other switch ports as a VLAN access port  assigned to VLAN 100 (untagged).  This is the port you would plug your cable modem into.  Then (in the simplest example) you could assign all the rest of the switch ports to VLAN 200 (untagged), and you would plug all your LAN devices into them.</p>
]]></description><pubDate>Mon, 30 Mar 2026 18:27:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577901</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577901</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577901</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>Yes.  You can take advantage of Netfilter's flowtable infrastructure and if you have the right hardware (NVIDIA/Mellanox ConnectX-5 or MediaTekMT7621) it will actually offload the processing of these packets to the NIC hardware.  This only applies to established connections, however, but that typically accounts for like 95% of the traffic passing through.</p>
]]></description><pubDate>Mon, 30 Mar 2026 18:21:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577819</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577819</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577819</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>You'd need to run a daemon like miniupnpd to enable UPnP, however I'd avoid it if you can, as it can be a significant security risk.</p>
]]></description><pubDate>Mon, 30 Mar 2026 18:15:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577758</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577758</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577758</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>You can still use the iptables interface for nftables rules if you'd like, but I think you miss out on things like atomic application of rulesets, ranges, lists, and variables (not shell variables).</p>
]]></description><pubDate>Mon, 30 Mar 2026 18:02:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577638</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577638</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577638</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>I've gone through quite a few embedded devices for exactly this use case.  So far I've used:<p>- Soekris net4501 (x86, 486-class CPU) (discontinued)<p>- PCEngines alix2d3 (x86, AMD Geode LX800) (discontinued)<p>- PCEngines APU (x86, AMD T40E) (my current router/firewall) (discontinued)<p>I'm also currently using an APU2 as one of my wireless access points (with hostapd).<p>All of these have been solid machines that have given me zero problems.<p>The next system I plan to use is going to be a Banana Pi R4 (ARM Cortex A73), it's a solid choice for a simple router/firewall/DNS/DHCP box.  It has a built-in 4-port gigabit switch where each interface can be used as normal Linux interfaces, as well as 2 SFP+ ports that are capable of supporting up to 10 gig ethernet.<p>It's also one of the few systems that offers true hardware offloading for connection tracking, so things like netfilter flowtables don't have to use any main CPU processing.<p>I'm currently experimenting with a Banana Pi R4 as a Wifi7 access point (running Debian with hostapd), however the current state of the wifi7 module for it (BPI-R4-NIC-BE14) and Linux driver (mt7996e) is still pretty young and a bit buggy (i.e., limiting transmit power to 6 dBm without patching the  driver to override it, and there's apparently a lack of RF shielding which can contribute to low SNR on the receiving end).  With the proper patches in place it makes a decent Wifi 6 access point. I'm hoping these issues get ironed out in the future and I can use it as a true Wifi7 AP.  frank-w is doing outstanding work to help support the open source community with this new hardware.</p>
]]></description><pubDate>Mon, 30 Mar 2026 17:59:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577607</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577607</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577607</guid></item><item><title><![CDATA[New comment by pak9rabid in "How to turn anything into a router"]]></title><description><![CDATA[
<p>Hell, you could do this with a single NIC if you have a VLAN-aware switch.</p>
]]></description><pubDate>Mon, 30 Mar 2026 17:49:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=47577462</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47577462</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47577462</guid></item><item><title><![CDATA[New comment by pak9rabid in "My home network observes bedtime with OpenBSD and pf"]]></title><description><![CDATA[
<p>Cool post, I love a good firewall story.<p>One suggestion though: rather than doing this all on a single LAN network and having to deal with adding exceptions for devices that still need access to the Internet during 'bedtime' periods, I suggest creating a separate VLAN for devices that need 'bedtime' enforcement and put those devices there, while leaving your 'always online' devices in your main VLAN where access to the Internet is always available.  This way all you have to do is simply change your firewall rules for that VLAN to enforce bedtime, which removes the extra rules needed for exceptions.</p>
]]></description><pubDate>Thu, 26 Mar 2026 15:07:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47531431</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47531431</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47531431</guid></item><item><title><![CDATA[New comment by pak9rabid in "GitHub is once again down"]]></title><description><![CDATA[
<p>Vegas should start taking bets</p>
]]></description><pubDate>Tue, 24 Mar 2026 20:57:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47509163</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47509163</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47509163</guid></item><item><title><![CDATA[New comment by pak9rabid in "So where are all the AI apps?"]]></title><description><![CDATA[
<p>I hope this at least resulted in some equity of this project for you.</p>
]]></description><pubDate>Tue, 24 Mar 2026 16:55:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=47505702</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47505702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47505702</guid></item><item><title><![CDATA[New comment by pak9rabid in "Possible US Government iPhone-Hacking Toolkit in foreign spy and criminal hands"]]></title><description><![CDATA[
<p>Have we already forgotten about Edward Snowden & the NSA?</p>
]]></description><pubDate>Tue, 03 Mar 2026 21:10:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=47239048</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=47239048</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47239048</guid></item><item><title><![CDATA[New comment by pak9rabid in "The WiFi only works when it's raining (2024)"]]></title><description><![CDATA[
<p>Here's a fun one that I still haven't figured out:<p>I recently purchased a Banana Pi 4 with the 802.11be Wi-Fi 7 module to be used as an access point.  It generally works well as an AP and I'm getting full speeds.  However, for some reason whenever I try to communicate directly with the router/firewall (separate device on the same network) through this AP, it will intermittently drop 3/4 packets.  It only happens when communicating with the router/firewall device, and only over the wlan interface on the bpi-r4.  I have a similar AP setup on another embedded system (PCEngines APU2) and this has never  been an issue.<p>I suspect there's some sort of bug with the internal 4-port switch of the bpi-r4 not playing well with the wlan interface when they're all bridged together, but digging through the logs hasn't revealed anything obvious.<p>It's driving me nuts!</p>
]]></description><pubDate>Fri, 30 Jan 2026 15:30:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=46825545</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46825545</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46825545</guid></item><item><title><![CDATA[New comment by pak9rabid in "Doom in Django: testing the limits of LiveView at 600.000 divs/segundo"]]></title><description><![CDATA[
<p>Never I hope</p>
]]></description><pubDate>Wed, 31 Dec 2025 19:14:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=46447273</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46447273</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46447273</guid></item><item><title><![CDATA[New comment by pak9rabid in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>This is kind of a complicated example, but here goes:<p>Say we want to create a report that determines how long a machine has been down, but we only want to count time during normal operational hours (aka operational downtime).<p>Normally this would be as simple as counting the time between when the machine was first reported down, to when it was reported to be back up. However, since we're only allowed to count certain time ranges within a day as operational downtime, we need a way to essentially "mask out" the non-operational hours.  This can be done efficiently by finding the intersection of various time ranges and summing the duration of each of these intersections.<p>In the case of PostgreSQL, I would start by creating a tsrange (timestamp range) that encompases the entire time range that the machine was down.  I would then create multiple tsranges (one for each day the machine was down), limited to each day's operational hours. For each one of these operational hour ranges I would then take the intersection of it against the entire downtime range, and sum the duration of each of these intersecting time ranges to get the amount of operational downtime for the machine.<p>PostgreSQL has a number of range functions and operators that can make this very easy and efficient. In this example I would make use of the '*' operator to determine what part of two time ranges intersect, and then subtract the upper-bound (using the upper() range function) of that range intersection with its lower-bound (using the lower() range function) to get the time duration of only the "overlapping" parts of the two time ranges.<p>Here's a list of functions and operators that can be used on range types:<p><a href="https://www.postgresql.org/docs/9.3/functions-range.html" rel="nofollow">https://www.postgresql.org/docs/9.3/functions-range.html</a><p>Hope this helps.</p>
]]></description><pubDate>Wed, 24 Dec 2025 16:49:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=46377116</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46377116</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46377116</guid></item><item><title><![CDATA[New comment by pak9rabid in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>Migrations are kind of a different beast.  In that case I just stand up a test environment in Docker that does what it needs, then just trash it once things have been tested/verified.</p>
]]></description><pubDate>Wed, 24 Dec 2025 15:52:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=46376592</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46376592</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46376592</guid></item><item><title><![CDATA[New comment by pak9rabid in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>Bingo...this is how I get around that.</p>
]]></description><pubDate>Wed, 24 Dec 2025 15:51:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=46376581</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46376581</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46376581</guid></item><item><title><![CDATA[New comment by pak9rabid in "Instant database clones with PostgreSQL 18"]]></title><description><![CDATA[
<p>I was able to accomplish this by doing each test within its own transaction session that gets rolled-back after each test.  This way I'm allowed to modify the database to suit my needs for each test, then it gets magically reset back to its known state for the next test.  Transaction rollbacks are very quick.</p>
]]></description><pubDate>Tue, 23 Dec 2025 15:39:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46366170</link><dc:creator>pak9rabid</dc:creator><comments>https://news.ycombinator.com/item?id=46366170</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46366170</guid></item></channel></rss>