<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: gurgeous</title><link>https://news.ycombinator.com/user?id=gurgeous</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 02 May 2026 09:05:04 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=gurgeous" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Show HN: AnsiColor, resilient ANSI color codes for your TUI]]></title><description><![CDATA[
<p>Hi HN. AnsiColor constructs resilient ANSI color codes for your TUI, cli app or prompt. Colors that will work regardless of the user's terminal theme.<p>I built this after experiencing the hilarious illegibility of Codex CLI when running with Solarized Dark. If a zillion dollar company can't get it right, we  need better tools.<p>It comes with these themes:<p><pre><code>  Andromeda
  Ayu Dark/Light
  Bearded Dark/Light
  Catppuccin Frappe
  Catppuccin Latte
  Catppuccin Macchiato
  Catppuccin Mocha
  Dracula
  GitHub Dark
  Gruvbox
  Monokai Dark/Light
  Nord
  One Dark/Light
  Palenight
  Panda
  Solarized Dark/Light
  Synthwave 84
  Tailwind
  Tokyo Night Dark/Light</code></pre></p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46878962">https://news.ycombinator.com/item?id=46878962</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 03 Feb 2026 23:33:01 +0000</pubDate><link>https://ansicolor.com</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=46878962</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46878962</guid></item><item><title><![CDATA[New comment by gurgeous in "Ultrasonic Chef's Knife"]]></title><description><![CDATA[
<p>In Rand's video he does an "old" lime, mozzarella, and a shallot. It's just a quick vid he did in like five minutes but it shows some prep. Rand is a prolific amateur chef...<p><a href="https://www.linkedin.com/feed/update/urn:li:activity:7374472103284154368/" rel="nofollow">https://www.linkedin.com/feed/update/urn:li:activity:7374472...</a><p>Disclaimer: I've enjoyed many delicious meals at Rand's table</p>
]]></description><pubDate>Sun, 21 Sep 2025 01:32:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=45319237</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=45319237</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45319237</guid></item><item><title><![CDATA[New comment by gurgeous in "Ultrasonic Chef's Knife"]]></title><description><![CDATA[
<p>I personally watched Scott spend years working on the project and obsessively iterating on the steel, the vibration pattern, the circuitry, the handle, and the form factor. Scott is a hacker, one of us for sure. I mean, the guy built a custom robot just to measure cutting efficiency...<p>The knife is amazing and exactly as shown in the video. Rand Fishkin has a nice short on LinkedIn trying out the knife too. I think he shows one his (sharp) kitchen knives slicing through a lemon, then the Ultrasonic. It's astounding.<p>Disclaimer: I am a (tiny) angel investor in Seattle Ultrasonics.</p>
]]></description><pubDate>Sun, 21 Sep 2025 00:35:05 +0000</pubDate><link>https://news.ycombinator.com/item?id=45318936</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=45318936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45318936</guid></item><item><title><![CDATA[New comment by gurgeous in "First Ultrasonic Chef's Knife Vibrates 40,000X/Second for Easy Cutting"]]></title><description><![CDATA[
<p>I have used this knife, I am an angel investor in Scott's company. The thing is legit amazing. He labored for years to bring this to market and it shows.</p>
]]></description><pubDate>Thu, 18 Sep 2025 18:17:12 +0000</pubDate><link>https://news.ycombinator.com/item?id=45293070</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=45293070</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45293070</guid></item><item><title><![CDATA[New comment by gurgeous in "Rv, a new kind of Ruby management tool"]]></title><description><![CDATA[
<p>I am so excited about this!! Ruby tooling is already pretty good, but we can do better. I will try to contribute. Now we just need types</p>
]]></description><pubDate>Wed, 27 Aug 2025 03:10:28 +0000</pubDate><link>https://news.ycombinator.com/item?id=45035053</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=45035053</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45035053</guid></item><item><title><![CDATA[New comment by gurgeous in "Show HN: I built a Ruby gem that handles memoization with a ttl"]]></title><description><![CDATA[
<p>This is neat, thanks for posting. I am using memo_wise in my current project (TableTennis) in part because it allows memoization of module functions. This is a requirement for my library.<p>Anyway, I ended up with a hack like this, which works fine but didn't feel great.<p><pre><code>   def some_method(arg)
     @_memo_wise[__method__].tap { _1.clear if _1.length > 100 }
     ...
   end
   memo_wise :some_method</code></pre></p>
]]></description><pubDate>Tue, 22 Apr 2025 18:01:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=43764723</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=43764723</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43764723</guid></item><item><title><![CDATA[New comment by gurgeous in "Show HN: TableTennis, a new rubygem for printing stylish tables in your terminal"]]></title><description><![CDATA[
<p>This got some attention in r/ruby so I figured I'd post it here too..<p>TableTennis is a new gem for printing stylish tables in your terminal. We've used ad-hoc versions of this in our data projects for years, and I decided to bite the bullet and release it as a proper gem.<p>- auto-theme to pick light or dark based on your terminal background
- auto-layout to fit your terminal window
- auto-format floats and dates
- auto-color numeric columns
- titles, row numbers, zebra stripes...<p>By far the hardest part is detecting the terminal background color so we can pick light vs dark theme for the table. This requires putting the console into raw mode and sending some magic queries. These queries are widely supported but not universal. There are some great libraries for doing this in Go & Rust, but as far as I know nothing like it exists for Ruby. Check out the long comment at the bottom of this helper if you are curious:<p><a href="https://github.com/gurgeous/table_tennis/blob/main/lib/table_tennis/util/termbg.rb">https://github.com/gurgeous/table_tennis/blob/main/lib/table...</a><p>As always, feedback, feature requests and contributions are welcome.</p>
]]></description><pubDate>Tue, 22 Apr 2025 17:53:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=43764676</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=43764676</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43764676</guid></item><item><title><![CDATA[Show HN: TableTennis, a new rubygem for printing stylish tables in your terminal]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/gurgeous/table_tennis">https://github.com/gurgeous/table_tennis</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=43764182">https://news.ycombinator.com/item?id=43764182</a></p>
<p>Points: 5</p>
<p># Comments: 1</p>
]]></description><pubDate>Tue, 22 Apr 2025 17:00:39 +0000</pubDate><link>https://github.com/gurgeous/table_tennis</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=43764182</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43764182</guid></item><item><title><![CDATA[New comment by gurgeous in "Implementing a Game Boy emulator in Ruby"]]></title><description><![CDATA[
<p>Love the play by play.</p>
]]></description><pubDate>Sat, 08 Feb 2025 04:01:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=42980262</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42980262</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42980262</guid></item><item><title><![CDATA[New comment by gurgeous in "Show HN: Interactive systemd – a better way to work with systemd units"]]></title><description><![CDATA[
<p>This is incredible! I will use this a ton. Only thing missing is a deb package...</p>
]]></description><pubDate>Sat, 18 Jan 2025 18:22:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=42750223</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42750223</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42750223</guid></item><item><title><![CDATA[New comment by gurgeous in "Just: Just a Command Runner"]]></title><description><![CDATA[
<p>Hi Jeff, thanks for creating mise! I am gearing up to migrate from asdf, very excited to check it out. Not totally sure we can adopt mise for tasks (we use just) but willing to give it a whirl. Putting run commands into toml sounds like it might be challenging, I wonder if there's syntactic sugar that would help.</p>
]]></description><pubDate>Sat, 07 Dec 2024 23:41:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=42353753</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42353753</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42353753</guid></item><item><title><![CDATA[New comment by gurgeous in "Just: Just a Command Runner"]]></title><description><![CDATA[
<p>Actually, it was package.json scripts that pushed me toward just! I wanted that stuff in non-node projects (python/ruby/~), I wanted more complicated scripts, I wanted more logging output, I wanted comments... For whatever reason every project seems to have 10-20 little commands (often interdependent) and just makes that a breeze.</p>
]]></description><pubDate>Sat, 07 Dec 2024 20:31:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=42352656</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42352656</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42352656</guid></item><item><title><![CDATA[New comment by gurgeous in "Just: Just a Command Runner"]]></title><description><![CDATA[
<p>Question - mise is also incorporating a command runner. Anyone tried it yet? We love just, of course. Always curious about new tools.</p>
]]></description><pubDate>Sat, 07 Dec 2024 20:01:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=42352433</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42352433</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42352433</guid></item><item><title><![CDATA[New comment by gurgeous in "Just: Just a Command Runner"]]></title><description><![CDATA[
<p>We love just and are using it in all projects now. So great. Our typical justfile has around ~20 rules. Here is an example rule (and helper) to illustrate how we use it in ci:<p><pre><code>  export PATH := justfile_directory() + "/node_modules/.bin:" + env_var('PATH')

  ci:
    @just banner yarn install
    yarn install
    @just banner tsc
    tsc --noEmit
    @just banner lint
    eslint src
    prettier --check src
    @just banner vitest
    vitest --run
    @just banner done!
  
  banner *ARGS:
    @printf '\e[42;37;1m[%s] %-72s \e[m\n' "$(date +%H:%M:%S)" "{{ARGS}}"
</code></pre>
This example is a bit contrived, more typically we would have a rule like "just lint" and you might call it from "just ci".<p>One of the best features is that just always runs from the project root directory. Little things like that add up after you've spent years wrestling with bash scripts.</p>
]]></description><pubDate>Sat, 07 Dec 2024 17:39:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=42351310</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42351310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42351310</guid></item><item><title><![CDATA[New comment by gurgeous in "Show HN: Scooter – Interactive find and replace in the terminal"]]></title><description><![CDATA[
<p>Also see the excellent <a href="https://github.com/your-tools/ruplacer">https://github.com/your-tools/ruplacer</a>.<p>For more advanced needs, I have a custom thing called greprep that let's you make changes using your favorite editor. Workflow is like this:<p><pre><code>  1. $ rg -n .... > /tmp/lines.txt
  2. (edit lines.txt in vscode)
  3. $ greprep /tmp/lines.txt to apply the changes</code></pre></p>
]]></description><pubDate>Fri, 15 Nov 2024 18:06:13 +0000</pubDate><link>https://news.ycombinator.com/item?id=42149337</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=42149337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42149337</guid></item><item><title><![CDATA[Show HN: Everything you ever wanted to know about smoke detectors]]></title><description><![CDATA[
<p>I find smoke detectors pretty interesting, especially after debugging many false alarms in the middle of the night. There isn't much detail out there due to the ongoing enshittification of the internet. Maybe this will help? Feedback pls!<p>Surprising quantity of tech used, definitely overkill. Vite/Vue/Tailwind/Daisyui hosted on Vercel behind Cloudflare. We used Markdown-it for the content with simple custom stuff to mixin Vue components. On the data side, some Amazon crawling along with a lot of grunt work and proofreading. Httpdisk for crawl caching. Rembg for image background removal. Oh, and we also use Asdf+Just+Direnv on the dev side. Really love Just and use it heavily all the time now.<p>A bit of interesting math for the CSS animation at the top. I learned you could combine two translateX() animations inside a single transform, which is key for that thing.</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41745297">https://news.ycombinator.com/item?id=41745297</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 04 Oct 2024 20:31:19 +0000</pubDate><link>https://fireball.xyz</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=41745297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41745297</guid></item><item><title><![CDATA[New comment by gurgeous in "The Unreasonable Effectiveness of Makefiles"]]></title><description><![CDATA[
<p>Seconded - I love just & Justfile. Such an upgrade after trying to force things into package.json scripts. Chaining commands, optional CLI arguments, comments, simple variables, etc. Very simple and a breath of fresh air.</p>
]]></description><pubDate>Fri, 12 Aug 2022 20:26:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=32443475</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=32443475</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32443475</guid></item><item><title><![CDATA[Advent of Code in 2021]]></title><description><![CDATA[
<p>Article URL: <a href="https://old.reddit.com/r/adventofcode/comments/qvjr09/advent_of_code_in_2021/">https://old.reddit.com/r/adventofcode/comments/qvjr09/advent_of_code_in_2021/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=29248060">https://news.ycombinator.com/item?id=29248060</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 17 Nov 2021 00:28:08 +0000</pubDate><link>https://old.reddit.com/r/adventofcode/comments/qvjr09/advent_of_code_in_2021/</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=29248060</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=29248060</guid></item><item><title><![CDATA[New comment by gurgeous in "We analyzed 425k favicons"]]></title><description><![CDATA[
<p>Also, we turned up 2,000 domains that redirect to a very shady site called happyfamilymedstore[dot]com. Stuff like avanafill[dot]com, pfzviagra[dot]com, prednisoloneotc[dot]com. These domains made it into the Tranco 100k somehow.<p>Full list here - <a href="https://gist.github.com/gurgeous/bcb3e851087763efe4b2f4b992f1b842" rel="nofollow">https://gist.github.com/gurgeous/bcb3e851087763efe4b2f4b992f...</a></p>
]]></description><pubDate>Wed, 20 Oct 2021 19:32:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=28935097</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=28935097</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28935097</guid></item><item><title><![CDATA[New comment by gurgeous in "We analyzed 425k favicons"]]></title><description><![CDATA[
<p>It's one icon per domain. Try hovering (on desktop) and you'll see that many domains have the same favicon.</p>
]]></description><pubDate>Wed, 20 Oct 2021 19:18:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=28934926</link><dc:creator>gurgeous</dc:creator><comments>https://news.ycombinator.com/item?id=28934926</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=28934926</guid></item></channel></rss>