<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: asadjb</title><link>https://news.ycombinator.com/user?id=asadjb</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 06 Sep 2026 08:28:23 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=asadjb" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[Production Deployments to Exe.dev]]></title><description><![CDATA[
<p>Article URL: <a href="https://asadjb.com/blog/2026-07-19-production-deployments-to-exe-dev">https://asadjb.com/blog/2026-07-19-production-deployments-to-exe-dev</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=48973087">https://news.ycombinator.com/item?id=48973087</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 20 Jul 2026 00:33:51 +0000</pubDate><link>https://asadjb.com/blog/2026-07-19-production-deployments-to-exe-dev</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=48973087</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48973087</guid></item><item><title><![CDATA[New comment by asadjb in "Review-for-agent: A local, PR-style UI for reviewing AI agent code changes"]]></title><description><![CDATA[
<p>I tried out Codex over the past few days. It's good, and the one feature that I really liked was the ability to review the diff inside the app and leave inline comments. No more referring to code by file name and line number, or saying "change this variable inside this function."<p>But I like using Amp Code more. So I built review-for-agent: a local web UI that shows your uncommitted changes as a diff, lets you leave inline comments, and exports a structured Markdown file you can paste straight back into your agent's chat.<p>It's a single Go binary that runs locally and works with any agent.</p>
]]></description><pubDate>Tue, 10 Feb 2026 00:06:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=46953474</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46953474</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46953474</guid></item><item><title><![CDATA[Review-for-agent: A local, PR-style UI for reviewing AI agent code changes]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/Waraq-Labs/review-for-agent">https://github.com/Waraq-Labs/review-for-agent</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46953473">https://news.ycombinator.com/item?id=46953473</a></p>
<p>Points: 1</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 10 Feb 2026 00:06:10 +0000</pubDate><link>https://github.com/Waraq-Labs/review-for-agent</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46953473</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46953473</guid></item><item><title><![CDATA[I keep coming back to Amp Code]]></title><description><![CDATA[
<p>Article URL: <a href="https://asadjb.com/blog/2026-02-08-i-keep-coming-back-to-amp">https://asadjb.com/blog/2026-02-08-i-keep-coming-back-to-amp</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46938940">https://news.ycombinator.com/item?id=46938940</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 08 Feb 2026 21:56:41 +0000</pubDate><link>https://asadjb.com/blog/2026-02-08-i-keep-coming-back-to-amp</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46938940</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46938940</guid></item><item><title><![CDATA[The 1 feature I'm really liking in the OpenAI Codex App]]></title><description><![CDATA[
<p>Article URL: <a href="https://asadjb.com/blog/2026-02-06-the-codex-app-feature-i-really-like">https://asadjb.com/blog/2026-02-06-the-codex-app-feature-i-really-like</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46920137">https://news.ycombinator.com/item?id=46920137</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 07 Feb 2026 00:46:34 +0000</pubDate><link>https://asadjb.com/blog/2026-02-06-the-codex-app-feature-i-really-like</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46920137</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46920137</guid></item><item><title><![CDATA[New comment by asadjb in "After two years of vibecoding, I'm back to writing by hand"]]></title><description><![CDATA[
<p>Unfortunately I have started to feel that using AI to code - even with a well designed spec, ends up with code that; in the authors words, looks like<p>> [Agents write] units of changes that look good in isolation.<p>I have only been using agents for coding end-to-end for a few months now, but I think I've started to realise why the output doesn't feel that great to me.<p>Like you said; "it's my job" to create a well designed code base.<p>Without writing the code myself however, without feeling the rough edges of the abstractions I've written, without getting a sense of how things should change to make the code better architected, I just don't know how to make it better.<p>I've always worked in smaller increments, creating the small piece I know I need and then building on top of that. That process highlights the rough edges, the inconsistent abstractions, and that leads to a better codebase.<p>AI (it seems) decides on a direction and then writes 100s of LOC at one. It doesn't need to build abstractions because it can write the same piece of code a thousand times without caring.<p>I write one function at a time, and as soon I try to use it in a different context I realise a better abstraction. The AI just writes another function with 90% similar code.</p>
]]></description><pubDate>Mon, 26 Jan 2026 16:10:56 +0000</pubDate><link>https://news.ycombinator.com/item?id=46767432</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46767432</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46767432</guid></item><item><title><![CDATA[New comment by asadjb in "Oh My Zsh adds bloat"]]></title><description><![CDATA[
<p>I've been an oh-my-zsh user for many years now, being very happy with the very small set of features I use from it. Previously I could never think of trying to figure out how to replicate the features I need without the other features from oh-my-zsh, which does make the shell noticeably slower.<p>Just now, after reading this article, I used Claude code and have removed the OMZ config within 5 minutes. Here's my prompt - maybe others could find it useful. I ran this from `~/.oh-my-zsh`.<p>```
Here's my zsh config - I'd like to remove oh-my-zsh and replace the provided functionality with just raw zsh. i use starship for my prompt so i don't need
  any help there.<p><pre><code>  can you explore the oh-my-zsh codebae and see what it would take to replicate the features it currently provides me in the shell?

  my zsh config below:

  export ZSH="$HOME/.oh-my-zsh"
  ZSH_THEME=""
  DISABLE_AUTO_TITLE="true"
  plugins=(direnv fzf)
  source $ZSH/oh-my-zsh.sh
</code></pre>
--- CLAUDE RESPONSE ---
Minimal Raw Zsh Replacement<p><pre><code>  Since you use starship and have DISABLE_AUTO_TITLE=true, you can skip prompt and title-related code. Here's what you'd need:

  # Completions
  autoload -Uz compinit
  compinit

  zstyle ':completion:*' menu select
  zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}'  # case insensitive

  # History
  HISTFILE=~/.zsh_history
  HISTSIZE=50000
  SAVEHIST=10000
  setopt extended_history hist_expire_dups_first hist_ignore_dups
  setopt hist_ignore_space hist_verify share_history

  # Directory navigation
  setopt auto_cd auto_pushd pushd_ignore_dups pushdminus

  # Key bindings (emacs mode)
  bindkey -e
  bindkey '^[[H' beginning-of-line      # Home
  bindkey '^[[F' end-of-line            # End
  bindkey '^[[1;5C' forward-word        # Ctrl-Right
  bindkey '^[[1;5D' backward-word       # Ctrl-Left
  bindkey '^[[3~' delete-char           # Delete

  # Colors
  autoload -Uz colors && colors
  export CLICOLOR=1  # macOS ls colors

  # Plugins replacement
  eval "$(direnv hook zsh)"
  eval "$(fzf --zsh)"</code></pre>
```<p>Granted I've only done this like 5 minutes ago and might be missing functionality I'll realise later, but a quick few checks give me hope I have all the functionality I want.</p>
]]></description><pubDate>Sat, 10 Jan 2026 22:56:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=46570795</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=46570795</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46570795</guid></item><item><title><![CDATA[The Windsurf Browser]]></title><description><![CDATA[
<p>Article URL: <a href="https://windsurf.com/blog/windsurf-wave-10-browser">https://windsurf.com/blog/windsurf-wave-10-browser</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=44250972">https://news.ycombinator.com/item?id=44250972</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 11 Jun 2025 19:35:31 +0000</pubDate><link>https://windsurf.com/blog/windsurf-wave-10-browser</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=44250972</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44250972</guid></item><item><title><![CDATA[New comment by asadjb in "My Beancount books are 95% automatic after 3 years (2024)"]]></title><description><![CDATA[
<p>Thanks for responding and your thoughts! Generally agreed with all you said.<p>However, I feel like maybe a different approach could be to store all the app state in the DB, and then export to this text only format when needed; like when interacting with LLMs or when someone wants an export of their data.<p>Breaking the file into smaller blocks would necessarily need a cache system I guess, and then maybe you're implementing your own DB engine in the cache because you still want all the same functions of being able to query older records.<p>There's no easy answer I guess, just different solutions with different tradeoffs.<p>But what you've built is very cool! If I was still doing text based accounting I would have loved this.</p>
]]></description><pubDate>Wed, 05 Mar 2025 21:29:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=43272746</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=43272746</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43272746</guid></item><item><title><![CDATA[New comment by asadjb in "My Beancount books are 95% automatic after 3 years (2024)"]]></title><description><![CDATA[
<p>Love this! I haven't used Beanhup, but was a user of text based accounting systems (beancount, hledger) for many years to track personal expenses. I stopped doing it when I realized I wasn't getting much out of it, but the knowledge of double-entry accounting still helps me to this day when I keep track of my business expenses in Xero.<p>One thing which I disagree with in this article is the focus on file based data storage:<p>> That makes it 10 times harder because you need to parse the text file, update it accordingly, and write it back. But I am glad I did. That guarantees all my accounting books are in the same open format.<p>This quote captures my issues with it. It just makes things so much more difficult; and it makes the whole process slower as the file grows. I remember that when I used hledger for tracking my expenses over 3 years, I had to "close books" once a year and consolidate all the transactions for the past year into 1 entry in a new ledger file to keep entry/query operations fast.<p>I get the sentiment; you want open data formats that remain even after your app is shutdown. But you can get the same by using open formats; maybe a sqlite DB is good enough for that?<p>The only thing that would be more complicated with a DB is versioning & reviewing commits like this app does; which does seem like a very exciting feature.</p>
]]></description><pubDate>Wed, 05 Mar 2025 19:06:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=43270797</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=43270797</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43270797</guid></item><item><title><![CDATA[New comment by asadjb in "How I configure my Git identities"]]></title><description><![CDATA[
<p>I hated configuring multiple Hosts/aliases in my ~/.ssh/config for Github/Bitbucket when dealing with different keys for different clients.<p>I ended up creating a "SSH environment" manager 4 years ago to help with this: <a href="https://github.com/theonejb/sshenv">https://github.com/theonejb/sshenv</a><p>It's worked wonderfully for me since then, and it's something I use almost daily.</p>
]]></description><pubDate>Mon, 25 Nov 2024 09:17:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=42234566</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=42234566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42234566</guid></item><item><title><![CDATA[New comment by asadjb in "Show HN: Paisa – Open-Source Personal Finance Manager"]]></title><description><![CDATA[
<p>My somewhat limited understanding of this is that from your perspective, an increase in your asset/cash account would be a debit.<p>A big confusion for me initially was that my banks always talked about crediting my account whenever money was deposited/added to my account.<p>I finally understood it when I realized that from the banks perspective, an increase in my account is an increase in their liability towards me; they now owe me more money. Which is why they call it crediting my account.<p>So now I think of it like this: an increase in an asset is always a debit, an increase in liability is always a credit.</p>
]]></description><pubDate>Fri, 22 Sep 2023 22:52:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=37618822</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=37618822</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37618822</guid></item><item><title><![CDATA[New comment by asadjb in "Original Prusa MK4"]]></title><description><![CDATA[
<p>Most of the listed features are incremental updates over the previous model; the MK3. However, as someone who's been using 3D printers for about 3 years, I'd say the biggest improvement here is the automatic first layer calibration.<p>Until recently (most notably until the Bamboo Labs Carbon X1) you had to spend time setting up your printer to get a good first layer. This would involve changing the distance between the nozzle that lays out the melted plastic and the bed on which the model is printed. Because this distance varies not just between different units of the same printer, but also has to change based on what material (PLA, PETG, etc) you're printing with, it needed some knowledge to set correctly.<p>While that process did get much simpler (with most of it being automated), it still involved some tweaking on the part of the user. That's a problem for people who are new 3D printing. It meant that you couldn't start printing immediately after unboxing your printer. It also meant that you had to spend considerable time (a few hours at least in my case) figuring out what a "good first layer" means, and then tweaking your printer to print the first layer well.<p>With this update, you can now start printing immediately after unboxing your printer (after some minor assembly), which is a huge thing for people who are new to 3D printing.<p>When I got my first printer a few years ago, I remember having to spend a couple of hours initially learning how to do this calibration, and I didn't get great results until a few more weeks of learning and tweaking.<p>Note that this is from the perspective of a hobbyist. People using 3D printers on a commercial scale might find the other improvements to be a big thing for their use case.</p>
]]></description><pubDate>Thu, 30 Mar 2023 00:47:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=35366178</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=35366178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35366178</guid></item><item><title><![CDATA[New comment by asadjb in "Engineers Need to Write"]]></title><description><![CDATA[
<p>A personal story about how writing helped me make a decision.<p>A few months back, I was job hunting due to tech layoffs and ended up with two offers from different startups. One was a 2-year-old YC company with a larger team, while the other was a brand-new startup where I'd be the first engineer, building the tech stack from the ground up.<p>Deciding between the two was tough, so I tried a creative exercise. I wrote draft emails to both hiring managers, explaining why I chose not to join their startup. After about 90 minutes, my preferences became clear.<p>The only reasons I had for joining the more established startup were job security and better work-life balance. Meanwhile, my passion for the new startup was evident in the email I wrote. This exercise helped me uncover my true feelings.<p>---<p>It was a very useful exercise; might be able to help someone else faced with this issue.</p>
]]></description><pubDate>Sat, 25 Mar 2023 12:30:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=35302010</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=35302010</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35302010</guid></item><item><title><![CDATA[Ask HN: How valuable is being part of YC for a founding engineer?]]></title><description><![CDATA[
<p>Hi. I'm evaluating an offer from a brand new startup (raised a decent pre-seed round and have runway for 2-3 years) that will be joining a YC batch.<p>I'm already working in a similar startup; just without the YC part. So learning on the job is going to be similar in my current role and the one that I'm evaluating. The teams at both places are also similarly great.<p>Would I; as a founding engineer, gain the ability to learn a lot about building and scaling startups by being part of a team that's going through a YC program?<p>I understand that YC is mostly for the founders, so I'm not sure if as an engineer I stand to learn and grow from this.<p>Does anyone who's worked as an employee at a early stage startup that went through YC have any thoughts on how the experience was for them? Were you able to learn and grow more because your startup was part of YC?</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=34388178">https://news.ycombinator.com/item?id=34388178</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Sun, 15 Jan 2023 09:49:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=34388178</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=34388178</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34388178</guid></item><item><title><![CDATA[State machines – Why and how to use them in web development]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.asadjb.com/state-machines-why-and-how-to-use-them-in-web-development">https://blog.asadjb.com/state-machines-why-and-how-to-use-them-in-web-development</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=34042222">https://news.ycombinator.com/item?id=34042222</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 18 Dec 2022 19:56:41 +0000</pubDate><link>https://blog.asadjb.com/state-machines-why-and-how-to-use-them-in-web-development</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=34042222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34042222</guid></item><item><title><![CDATA[My Knowledge Management System]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.asadjb.com/my-knowledge-management-system">https://blog.asadjb.com/my-knowledge-management-system</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=32390525">https://news.ycombinator.com/item?id=32390525</a></p>
<p>Points: 9</p>
<p># Comments: 0</p>
]]></description><pubDate>Mon, 08 Aug 2022 20:21:18 +0000</pubDate><link>https://blog.asadjb.com/my-knowledge-management-system</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=32390525</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32390525</guid></item><item><title><![CDATA[Bootstrap with Ruby on Rails 7]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.asadjb.com/bootstrap-with-ruby-on-rails-7">https://blog.asadjb.com/bootstrap-with-ruby-on-rails-7</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=32378199">https://news.ycombinator.com/item?id=32378199</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Sun, 07 Aug 2022 17:45:26 +0000</pubDate><link>https://blog.asadjb.com/bootstrap-with-ruby-on-rails-7</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=32378199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32378199</guid></item><item><title><![CDATA[Thoughts on Zettelkasten and the Slip Box]]></title><description><![CDATA[
<p>Article URL: <a href="https://blog.asadjb.com/thoughts-on-zettelkasten-and-the-slip-box">https://blog.asadjb.com/thoughts-on-zettelkasten-and-the-slip-box</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=32261359">https://news.ycombinator.com/item?id=32261359</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 28 Jul 2022 07:14:59 +0000</pubDate><link>https://blog.asadjb.com/thoughts-on-zettelkasten-and-the-slip-box</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=32261359</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32261359</guid></item><item><title><![CDATA[New comment by asadjb in "What I don’t like about working at a remote job"]]></title><description><![CDATA[
<p>I'm sorry you feel this way, but maybe my experience can give you hope.<p>I moved countries in 2013, and barely had 1 friend after I moved. I had a few office colleagues I was friends with, but very rarely met with them outside of the office.<p>My days were similar to what you describe. Working long hours and then sitting at home with Netflix or Youtube. COVID has made it worst in your case unfortunately.<p>Here's what I learned which might help you:
- Watching movies or Youtube isn't necessarily a "waste" of time. It's just a way to spend time. You don't need to spend your time being productive or social. If the movies or videos let you pass the time in peace, enjoy that. I also enjoyed reading books back when I was living by myself, but the majority of my time was spent in "wasteful" activities like social media and movies. As long as it's a conscious decision to spend your time this way, I would suggest to not call it "wasted" time. You're spending time doing things that help you relax and unwind. It's not wasted.
- It took me a long time (> 2 years) to find a group of friends that I was happy being around. College is really the last time in my life when I made friends quickly. I think it's purely because being together for hours everyday over the course of years naturally builds friendships. Making friends after college takes time. As someone who is introverted, it took me even longer.
- The time I had to spend by myself was difficult at times, but that was just because of the way I had framed it then. Like you said, there's an expectation of how people your age have to act; go out and have fun. Ultimately it is someone else's expectations that you are enforcing on yourself. Find things that bring you some version of joy. Don't worry about what others expect you to do.
- Find hobbies. If you have a well paying job and low expenses, you should try your hand at different things. I've tried and given up on so many things over the years. A few; like 3D printing and FPV drone flying have stuck around. Again, I used to think that I was failing because I didn't stick with hobbies for a long time. I now realize that it would have been worse trying to force myself to spend my free time on things I didn't enjoy.
- Following up on the hobbies thing - find communities around your hobbies that you enjoy. It's a great way to make friends. Communities don't need to be in-person either. There are so many amazing people you can make friends with online through your interests.<p>Finally, working in-person with others in the office is a great way of accelerating friendships. Many in my current friends circle are people I met in the office, or people I met through my colleagues.<p>The last thing I'll end with is to not worry too much and give it time. That's essentially what helped me; giving it time.<p>Hope that helps.</p>
]]></description><pubDate>Sat, 23 Jul 2022 06:22:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=32200890</link><dc:creator>asadjb</dc:creator><comments>https://news.ycombinator.com/item?id=32200890</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=32200890</guid></item></channel></rss>