<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: technojamin</title><link>https://news.ycombinator.com/user?id=technojamin</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 07 Apr 2026 06:06:31 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=technojamin" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by technojamin in "I won't download your app. The web version is a-ok"]]></title><description><![CDATA[
<p>I think that's perfectly understandable. File systems require the user to remember a hierarchy in their head (even if there are tools like breadcrumbs to help you out), and many people aren't willing or aren't able to hold an arbitrarily complex structure like that in their head. A name is a flat piece of information, no extra structure to imagine.</p>
]]></description><pubDate>Mon, 06 Apr 2026 15:37:29 +0000</pubDate><link>https://news.ycombinator.com/item?id=47662315</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=47662315</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47662315</guid></item><item><title><![CDATA[New comment by technojamin in "Show HN: Gemini Pro 3 imagines the HN front page 10 years from now"]]></title><description><![CDATA[
<p>Asking an AI for opinion versus something concrete (like code, some writing, or suggestions) seems like a crucial difference. I've experimented with crossing that line, but I've always recognized the agency I'd be losing if I did, because it essentially requires a leap of faith, and I don't (and might never) have trust in the objectivity of LLMs.<p>It sounds like you made that leap of faith and regretted it, but thankfully pivoted to something grounded in reality. Thanks for sharing your experience.</p>
]]></description><pubDate>Tue, 09 Dec 2025 20:52:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=46210502</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=46210502</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46210502</guid></item><item><title><![CDATA[New comment by technojamin in "Crews claim Boring Company failed to pay workers and snubbed OSHA concerns"]]></title><description><![CDATA[
<p>I thought those were part of "the normal course of business" (quoting VP of Boring Company).</p>
]]></description><pubDate>Wed, 26 Nov 2025 21:54:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=46062792</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=46062792</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46062792</guid></item><item><title><![CDATA[New comment by technojamin in "How to Obsessively Tune WezTerm"]]></title><description><![CDATA[
<p>I love WezTerm! In the author's spirit of obsessive tweaking, here's a completely inconsequential configuration change I made.<p>By default, WezTerm doesn't have a scrollbar, but you can easily enable it with:<p><pre><code>  config.enable_scroll_bar = true
</code></pre>
But now you <i>always</i> have a scrollbar, just a big line on the side when there's no scrollback or you're in alternate screen mode. Horrible! So, here's an event handler that will automatically hide the scrollbar when not needed, giving it the same behavior as scrollbars in modern applications:<p><pre><code>  -- Hide the scrollbar when there is no scrollback or alternate screen is active
  wezterm.on("update-status", function(window, pane)
    local overrides = window:get_config_overrides() or {}
    local dimensions = pane:get_dimensions()

    overrides.enable_scroll_bar = dimensions.scrollback_rows > dimensions.viewport_rows and not pane:is_alt_screen_active()

    window:set_config_overrides(overrides)
  end)
</code></pre>
And that kinda sums up the development philosophy of WezTerm. It has basically all the building blocks you'd ever need with nice APIs. It's set up quite usably by default, but anything that's missing you can probably implement yourself.</p>
]]></description><pubDate>Wed, 29 Oct 2025 22:34:36 +0000</pubDate><link>https://news.ycombinator.com/item?id=45753978</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=45753978</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45753978</guid></item><item><title><![CDATA[New comment by technojamin in "Speeding up my ZSH shell"]]></title><description><![CDATA[
<p>Quite possibly, but I use it daily with no issues. It’s also pretty easy to write your own prompt and then make it async with this plugin: <a href="https://github.com/acomagu/fish-async-prompt">https://github.com/acomagu/fish-async-prompt</a></p>
]]></description><pubDate>Mon, 21 Jul 2025 13:21:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=44634780</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=44634780</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44634780</guid></item><item><title><![CDATA[New comment by technojamin in "Lua for Elixir"]]></title><description><![CDATA[
<p>Here's a 22-line Elixir script that spins up a webserver: <a href="https://hexdocs.pm/plug/readme.html#hello-world-request-response" rel="nofollow">https://hexdocs.pm/plug/readme.html#hello-world-request-resp...</a><p>There's another single-file example on that page that shows how to implement routing. The reason AI probably gave you a more fleshed out project structure is because people typically default to using Phoenix (Elixir's equivalent of Rails) instead of going for something simpler like Plug.<p>After getting a result you didn't like with AI, did you try refining your prompt to state that you wanted a single-file structure?</p>
]]></description><pubDate>Thu, 15 May 2025 14:28:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=43995480</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=43995480</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43995480</guid></item><item><title><![CDATA[New comment by technojamin in "Overengineered Anchor Links"]]></title><description><![CDATA[
<p>This seems like the obvious solution to me. You don't know what the user's eyes are looking at, so making the highlighting a visual representation of what's in the viewport seems preferable than nominating a single section as "current".<p>In fact the final solution is pretty bad. Sure, it looks nice when I scroll down, but when I use the alternative navigation method of clicking the sidebar items, it just scrolls to unexpected places.<p>Beautiful article, though.</p>
]]></description><pubDate>Thu, 03 Apr 2025 18:00:16 +0000</pubDate><link>https://news.ycombinator.com/item?id=43573235</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=43573235</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43573235</guid></item><item><title><![CDATA[New comment by technojamin in "Okay, I Like WezTerm"]]></title><description><![CDATA[
<p>Not out of the box, but I use Hammerspoon to implement a global hotkey to show WezTerm: <a href="https://github.com/jaminthorns/environment/blob/a609e81f3f4179d3c60b60bd729e6424916d3655/config/hammerspoon/init.lua#L21-L22">https://github.com/jaminthorns/environment/blob/a609e81f3f41...</a><p>I don't have a keybinding to hide, but you could easily achieve that by inspecting the active window with `hs.window.focusedWindow()`/`hs.window.frontmostWindow()` and making the behavior conditional based on the application: <a href="https://www.hammerspoon.org/docs/hs.window.html#focusedWindow" rel="nofollow">https://www.hammerspoon.org/docs/hs.window.html#focusedWindo...</a><p>In WezTerm, you can control whether the terminal is always on top with the `ToggleAlwaysOnTop` action: <a href="https://wezfurlong.org/wezterm/config/lua/keyassignment/ToggleAlwaysOnTop.html" rel="nofollow">https://wezfurlong.org/wezterm/config/lua/keyassignment/Togg...</a></p>
]]></description><pubDate>Mon, 12 Aug 2024 16:30:53 +0000</pubDate><link>https://news.ycombinator.com/item?id=41226343</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=41226343</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41226343</guid></item><item><title><![CDATA[New comment by technojamin in "Dtui – TUI for introspecting the state of the system/session dbus"]]></title><description><![CDATA[
<p>I've definitely seen "zero-dependency" as a selling point for several packages in the past few years, that's always very refreshing.</p>
]]></description><pubDate>Wed, 24 Jul 2024 14:15:17 +0000</pubDate><link>https://news.ycombinator.com/item?id=41057349</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=41057349</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41057349</guid></item><item><title><![CDATA[New comment by technojamin in "A better merge workflow with Jujutsu"]]></title><description><![CDATA[
<p>I completely missed the `<PATHS>` argument despite being the first thing documented under `jj log`. That's definitely the most critical feature out of my list, thank you for pointing that out!<p>Also, it's great to hear that you're willing to accept contributions for those features. If/when Jujutsu gains critical mass, I imagine that someone will end up contributing these features.<p>Regarding rename detection, it seems like that is actively being worked on, which is really encouraging! <a href="https://github.com/martinvonz/jj/pull/3574">https://github.com/martinvonz/jj/pull/3574</a></p>
]]></description><pubDate>Fri, 05 Jul 2024 15:15:55 +0000</pubDate><link>https://news.ycombinator.com/item?id=40883485</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40883485</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40883485</guid></item><item><title><![CDATA[New comment by technojamin in "A better merge workflow with Jujutsu"]]></title><description><![CDATA[
<p>What? That's a weirdly money-minded question. I'm not gonna do some Google interview-esque estimation question to answer that, but I'll elaborate on how I use those features, because I enjoy discussing them.<p>I use line range history the most, multiple times per day, since it's a much better alternative to line blame in most situations. You get the full historical context of a line instead of just the last commit.<p>File blame is really useful when I'm encountering new code, and I want to quickly find out who has the most "responsibility" over it, oftentimes so I can go and ask them about it if I need more clarification.<p>File history is especially useful when I come back to a file that I originally wrote or was familiar with, some time has passed, and now I want to re-familiarize myself with all the changes since the last time I was familiar (could be years). Rename detection is useful when there are repository-wide restructures, which has happened a couple of time in the main repository I work on. Otherwise, your history will cut off at that refactor, which is really irritating.<p>I use path history like file history, but to re-familiarize myself with large modules (admittedly less often than file history, but it comes up).<p>I'm newer to pickaxe, but I've used it 2 or 3 times in the past year to track some chunks of code throughout a refactor. That's how a lot of these little tools that Git has work. You might only use them a few times per year, but when you need them, they're really amazing.<p>It seems like Jujutsu focuses a lot on the commit authoring and modification flows, and it looks like it offers improvements in those areas, but I don't see much functionality in the history investigation area. They might be considered niche features to some, but I think this functionality becomes more valuable the older and larger a codebase gets.</p>
]]></description><pubDate>Wed, 03 Jul 2024 14:47:51 +0000</pubDate><link>https://news.ycombinator.com/item?id=40866451</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40866451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40866451</guid></item><item><title><![CDATA[New comment by technojamin in "A better merge workflow with Jujutsu"]]></title><description><![CDATA[
<p>Jujutsu seems really cool, and I love that I can use it in a Git repository alongside other contributors that don't. It seems like a lot of logging features from Git aren't present, though.<p>Besides the mentioned lack of blame functionality[1], things like path filtering (`git log -- <PATH>`), file-following with rename detection (`git log --follow -- <FILE>`), pickaxe (`git log -S <CODE>`), and range evolution (`git log -L<START>,<END>:<FILE>`) are missing. These tools have all become pretty indispensable to me in my day-to-day work since I've learned them, and I know I can still use them since jj can use Git as a backend, but I don't think I could adopt a tool that doesn't have them as first-class features.<p>Do any regular users of Jujutsu have thoughts on this?<p>[1] <a href="https://github.com/martinvonz/jj?tab=readme-ov-file#status">https://github.com/martinvonz/jj?tab=readme-ov-file#status</a></p>
]]></description><pubDate>Tue, 02 Jul 2024 18:22:39 +0000</pubDate><link>https://news.ycombinator.com/item?id=40859168</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40859168</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40859168</guid></item><item><title><![CDATA[New comment by technojamin in "Pulsar – A Community-Led Hyper-Hackable Text Editor"]]></title><description><![CDATA[
<p>I've got to give Atom a lot of credit for laying the groundwork for VS Code, but I can't imagine ever going back to use it. I doubt this project will ever get the performance to an acceptable level, since it seems like that was never an architectural goal for Atom. VS Code proved that it was absolutely possible to have a performant editor written with web technologies, you just need to prioritize it from the start. That's true for any application, of course, but not something web developers are accustomed to (especially not a decade ago).<p>It made me a bit nostalgic trying it out again, though. I used Atom for about a year before switching to VS Code, and I remember the vibrant community around it. It definitely fulfilled it's goal of being hackable, since there were extensions that completely extended the UI in some pretty neat/silly ways.</p>
]]></description><pubDate>Fri, 28 Jun 2024 14:40:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=40821033</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40821033</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40821033</guid></item><item><title><![CDATA[New comment by technojamin in "I kind of like rebasing"]]></title><description><![CDATA[
<p>Git rerere basically solves this: <a href="https://git-scm.com/book/en/v2/Git-Tools-Rerere" rel="nofollow">https://git-scm.com/book/en/v2/Git-Tools-Rerere</a></p>
]]></description><pubDate>Fri, 21 Jun 2024 21:43:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=40754128</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40754128</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40754128</guid></item><item><title><![CDATA[New comment by technojamin in "Ask HN: Tell me your stories of taking lower paid work to be happier"]]></title><description><![CDATA[
<p>Making a pivot to working on research-adjacent software instead of corporate software has been in the back of my mind over the past couple of years. Do you mind sharing a bit on how you went about your search and found your current job?</p>
]]></description><pubDate>Thu, 20 Jun 2024 15:40:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=40739971</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=40739971</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40739971</guid></item><item><title><![CDATA[New comment by technojamin in "The hunt for the missing data type"]]></title><description><![CDATA[
<p>Elixir has a pretty nice graph library as well: <a href="https://hexdocs.pm/libgraph/api-reference.html" rel="nofollow">https://hexdocs.pm/libgraph/api-reference.html</a><p>I've used it to do some dependency resolution for operation ordering.</p>
]]></description><pubDate>Wed, 06 Mar 2024 19:33:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=39620229</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=39620229</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39620229</guid></item><item><title><![CDATA[New comment by technojamin in "Tacit programming"]]></title><description><![CDATA[
<p>Pipes in both of the languages you specified do function application, not composition, so they’re very much point-ful (you see the arguments you pass/get passed).</p>
]]></description><pubDate>Sun, 25 Feb 2024 10:06:15 +0000</pubDate><link>https://news.ycombinator.com/item?id=39499451</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=39499451</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=39499451</guid></item><item><title><![CDATA[New comment by technojamin in "The highest-resolution photos of snowflakes (2021)"]]></title><description><![CDATA[
<p>Here's a fantastic Veritasium video about snowflakes with a scientist that basically figured out all of the ways they can form: <a href="https://www.youtube.com/watch?v=ao2Jfm35XeE" rel="nofollow">https://www.youtube.com/watch?v=ao2Jfm35XeE</a></p>
]]></description><pubDate>Sat, 30 Dec 2023 19:06:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=38817936</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=38817936</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38817936</guid></item><item><title><![CDATA[New comment by technojamin in "The highest-resolution photos of snowflakes (2021)"]]></title><description><![CDATA[
<p>Probably not, but those aren't photographs.</p>
]]></description><pubDate>Sat, 30 Dec 2023 19:03:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=38817899</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=38817899</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38817899</guid></item><item><title><![CDATA[New comment by technojamin in "Evolving the Infinite Canvas"]]></title><description><![CDATA[
<p>I've seen this in the past, but it looks like the "magic paint" feature was added since then, and it really delighted me when I discovered it. It's such an intuitive way to implement multi-select on a canvas.</p>
]]></description><pubDate>Wed, 27 Dec 2023 23:48:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=38788307</link><dc:creator>technojamin</dc:creator><comments>https://news.ycombinator.com/item?id=38788307</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=38788307</guid></item></channel></rss>