<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: fphilipe</title><link>https://news.ycombinator.com/user?id=fphilipe</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Tue, 28 Jul 2026 06:53:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=fphilipe" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by fphilipe in "A shell colon does nothing. Use it anyway"]]></title><description><![CDATA[
<p>I use the colon as EDITOR with Git when I want to do an interactive rebase combined with auto squash without having to edit the todo list.<p>I have an alias[1] for that which I call a quick interactive rebase:<p><pre><code>    riq = -c sequence.editor=: rebase --interactive
</code></pre>
[1]: <a href="https://github.com/fphilipe/dotfiles/blob/94f2ff70bade070694f5dc1317aa8f702cfdedcd/gitconfig#L45" rel="nofollow">https://github.com/fphilipe/dotfiles/blob/94f2ff70bade070694...</a></p>
]]></description><pubDate>Sun, 26 Jul 2026 09:33:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=49056287</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=49056287</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=49056287</guid></item><item><title><![CDATA[New comment by fphilipe in "Write code like a human will maintain it"]]></title><description><![CDATA[
<p>This is what has been frustrating me most lately. Even though I have a rule in my global CLAUDE.md that says:<p>> Only write comments to explain the <i>why</i> when it is not obvious from the code (rationale, gotchas, constraints). Do not comment on the <i>what</i> — well-named code already says it. Do not comment on how a framework works.<p>It still keeps adding these bad comments. When I then ask it to review the comments based on my preferences it then deletes most of them or improves them.<p>Today I asked Claude why it disrespects my preference and it said that the surrounding code was like that and it followed that style. It suggested I add this line to my global CLAUDE.md file:<p>> The comment rule above beats the style of the surrounding code: neighboring files with what-style comments are not license to write more of them, and comments carried along when porting or copying code must be re-judged against the rule, not kept for consistency.<p>Let's see if that improves things.</p>
]]></description><pubDate>Fri, 10 Jul 2026 15:22:41 +0000</pubDate><link>https://news.ycombinator.com/item?id=48861199</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=48861199</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48861199</guid></item><item><title><![CDATA[New comment by fphilipe in "Local Git remotes"]]></title><description><![CDATA[
<p>At that point you might as well use a worktree[1].<p>[1]: <a href="https://git-scm.com/docs/git-worktree" rel="nofollow">https://git-scm.com/docs/git-worktree</a></p>
]]></description><pubDate>Fri, 29 May 2026 13:48:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=48323083</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=48323083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48323083</guid></item><item><title><![CDATA[New comment by fphilipe in "Open source Kanban desktop app that runs parallel agents on every card"]]></title><description><![CDATA[
<p>These pages do look good. But they all just look the same. And I'm getting bored of them.<p>I open such a page and I immediately know it was Claude that produced it (probably end-to-end). Not that there's anything wrong with that, but it lacks soul… and that makes me kind of sad.</p>
]]></description><pubDate>Fri, 22 May 2026 20:00:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=48240819</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=48240819</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48240819</guid></item><item><title><![CDATA[New comment by fphilipe in "Open source Kanban desktop app that runs parallel agents on every card"]]></title><description><![CDATA[
<p>I wonder the same. The answer I usually get from people who do manage is that they don't look at the code – or at least not in detail.<p>Personally, I always end up tweaking something the agent produced. I wonder if I should let go of that control...</p>
]]></description><pubDate>Fri, 22 May 2026 19:54:44 +0000</pubDate><link>https://news.ycombinator.com/item?id=48240744</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=48240744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48240744</guid></item><item><title><![CDATA[New comment by fphilipe in "Show HN: I reverse engineered Apple's video wallpapers"]]></title><description><![CDATA[
<p>It features the current date and time with seconds, so it must be rendered on the fly.</p>
]]></description><pubDate>Thu, 21 May 2026 05:12:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=48218158</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=48218158</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=48218158</guid></item><item><title><![CDATA[New comment by fphilipe in "GitHub Stacked PRs"]]></title><description><![CDATA[
<p>Sure, that's possible. I can also use the GitHub app and use a Git abstraction where I don't have to understand Git at all.<p>The point is that I want to use Git, a tool and skill that is portable to other platforms.</p>
]]></description><pubDate>Tue, 14 Apr 2026 05:09:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761470</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=47761470</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761470</guid></item><item><title><![CDATA[New comment by fphilipe in "GitHub Stacked PRs"]]></title><description><![CDATA[
<p>My git config for pushing is set to push.default=current. For rebased stacks I have an alias that does this:<p><pre><code>    git --config push.default=matching push --force-with-lease --force-if-includes
</code></pre>
In other words, I force push all branches that have a matching upstream by changing my config on the fly.</p>
]]></description><pubDate>Tue, 14 Apr 2026 05:07:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761456</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=47761456</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761456</guid></item><item><title><![CDATA[New comment by fphilipe in "GitHub Stacked PRs"]]></title><description><![CDATA[
<p>I've been doing stacked PRs for ~2 years now. Thus, I don't quite see the need for this CLI. Git has had some additions in the last few years that make this work natively – specifically the --update-refs flag[1] or the rebase.updateRefs config. Combined with `git commit --fixup`, rebase.autoStash, and rebase.autoSquash rebasing stacks becomes a breeze (as long as you work off from the tip of your stack). Add in git-absorb[2] and the heavy-lifting is taken care of.<p>My biggest gripe with GitHub when working with stacks – and something that's not clarified in these docs – is whether fast-forward merges are possible. Its "Merge with rebase" button <i>always</i> rewrites the commit. They do mention that the stack needs to be rebased in order to merge it. My workaround has been `git merge --ff-only top-branch-of-stack` to merge the entire stack locally into main (or anything in between actually) and then push. GitHub neatly recognizes that each PR in the stack is now in main and marks them all as merged. If there are subsequent PRs that weren't merged it updates the base branch.<p>Having said that, it's great to see GitHub getting a proper UI for this. It's also great that it understands the intent that branch B that goes on top of branch A is a stack and thus CI runs against. I just hope that it's not mandatory to use their CLI in order to create stacks. They do cover this briefly in the FAQ[3], but it might be necessary to use `gh stack init --adopt branch-a branch-b branch-c`. On the other hand, if that removes the need to manually create the N PRs for my stack, that's nice.<p>[1]: <a href="https://git-scm.com/docs/git-rebase#Documentation/git-rebase.txt---update-refs" rel="nofollow">https://git-scm.com/docs/git-rebase#Documentation/git-rebase...</a><p>[2]: <a href="https://github.com/tummychow/git-absorb" rel="nofollow">https://github.com/tummychow/git-absorb</a><p>[3]: <a href="https://github.github.com/gh-stack/faq/#will-this-work-with-a-different-tool-for-stacking" rel="nofollow">https://github.github.com/gh-stack/faq/#will-this-work-with-...</a></p>
]]></description><pubDate>Tue, 14 Apr 2026 04:47:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=47761360</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=47761360</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47761360</guid></item><item><title><![CDATA[New comment by fphilipe in "I found a useful Git one liner buried in leaked CIA developer docs"]]></title><description><![CDATA[
<p>I have a global setting for that. Whenever I work in a repo that deviates from that I override it locally. I have a few other aliases that rely on the default branch, such as “switch to the default branch”. So I usually notice it quite quickly when the value is off in a particular repo.</p>
]]></description><pubDate>Fri, 20 Feb 2026 19:52:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=47093006</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=47093006</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47093006</guid></item><item><title><![CDATA[New comment by fphilipe in "I found a useful Git one liner buried in leaked CIA developer docs"]]></title><description><![CDATA[
<p>Here's my take on the one-liner that I use via a `git tidy` alias[1]. A few points:<p>* It ensures the default branch is not deleted (main, master)<p>* It does not touch the current branch<p>* It does not touch the branch in a different worktree[2]<p>* It also works with non-merge repos by deleting the local branches that are gone on the remote<p><pre><code>    git branch --merged "$(git config init.defaultBranch)" \
    | grep -Fv "$(git config init.defaultBranch)" \
    | grep -vF '*' \
    | grep -vF '+' \
    | xargs git branch -d \
    && git fetch \
    && git remote prune origin \
    && git branch -v \
    | grep -F '[gone]' \
    | grep -vF '*' \
    | grep -vF '+' \
    | awk '{print $1}' \
    | xargs git branch -D

</code></pre>
[1]: <a href="https://github.com/fphilipe/dotfiles/blob/ba9187d7c895e44c350f8e74d8bfbaaadbe97d6a/gitconfig#L55" rel="nofollow">https://github.com/fphilipe/dotfiles/blob/ba9187d7c895e44c35...</a><p>[2]: <a href="https://git-scm.com/docs/git-worktree" rel="nofollow">https://git-scm.com/docs/git-worktree</a></p>
]]></description><pubDate>Fri, 20 Feb 2026 16:37:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47090263</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=47090263</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47090263</guid></item><item><title><![CDATA[Hierarchy view now available in GitHub Projects]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.blog/changelog/2026-01-15-hierarchy-view-now-available-in-github-projects/">https://github.blog/changelog/2026-01-15-hierarchy-view-now-available-in-github-projects/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=46643538">https://news.ycombinator.com/item?id=46643538</a></p>
<p>Points: 1</p>
<p># Comments: 1</p>
]]></description><pubDate>Fri, 16 Jan 2026 06:13:45 +0000</pubDate><link>https://github.blog/changelog/2026-01-15-hierarchy-view-now-available-in-github-projects/</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=46643538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=46643538</guid></item><item><title><![CDATA[New comment by fphilipe in "Discussion of the Benefits and Drawbacks of the Git Pre-Commit Hook"]]></title><description><![CDATA[
<p>I'm of the opinion that Git hooks are personal. That's why they're not part of the source code itself. I make extensive use of hooks, but they're tailored to my needs.<p>Note that you can skip hooks by passing the --no-verify flag to subcommands. Comes in handy when they're slow and you know that you've just fixed the wrong formatting that the previous invocation of your pre-commit hook complained about.</p>
]]></description><pubDate>Mon, 20 Oct 2025 04:57:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=45640282</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=45640282</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45640282</guid></item><item><title><![CDATA[New comment by fphilipe in "Want to piss off your IT department? Are the links not malicious looking enough?"]]></title><description><![CDATA[
<p>In addition to making the link look shady, it adds considerable lag to opening the link.<p>I'm using Finicky[1] on Mac to rewrite the URL by extracting the original URL from the query params[2].<p>1: <a href="https://github.com/johnste/finicky" rel="nofollow">https://github.com/johnste/finicky</a><p>2: <a href="https://github.com/fphilipe/dotfiles/blob/31e3d18fe5f51b2fd86cb7f1762453c1c4779ef9/finicky.js#L4-L8" rel="nofollow">https://github.com/fphilipe/dotfiles/blob/31e3d18fe5f51b2fd8...</a></p>
]]></description><pubDate>Fri, 19 Sep 2025 13:36:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=45301530</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=45301530</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45301530</guid></item><item><title><![CDATA[New comment by fphilipe in "Beej's Guide to Git"]]></title><description><![CDATA[
<p>Not wrong, but one thing I did not spot in all the great explanations related to HEAD is that @ is an alias for HEAD that is a lot easier to type.</p>
]]></description><pubDate>Wed, 05 Feb 2025 19:21:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=42953692</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=42953692</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42953692</guid></item><item><title><![CDATA[Add a way to use webauthn without JavaScript]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/w3c/webauthn/issues/1255">https://github.com/w3c/webauthn/issues/1255</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=42650300">https://news.ycombinator.com/item?id=42650300</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 09 Jan 2025 22:06:38 +0000</pubDate><link>https://github.com/w3c/webauthn/issues/1255</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=42650300</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42650300</guid></item><item><title><![CDATA[New comment by fphilipe in "Git-cliff – Generate changelog from the Git history"]]></title><description><![CDATA[
<p>I am definitely more in the changelog-as-a-file camp. From <a href="https://keepachangelog.com/" rel="nofollow">https://keepachangelog.com/</a>:<p>> Using commit log diffs as changelogs is a bad idea: they're full of noise. Things like merge commits, commits with obscure titles, documentation changes, etc.<p>> The purpose of a commit is to document a step in the evolution of the source code. Some projects clean up commits, some don't.<p>> The purpose of a changelog entry is to document the noteworthy difference, often across multiple commits, to communicate them clearly to end users.</p>
]]></description><pubDate>Fri, 28 Jun 2024 06:40:01 +0000</pubDate><link>https://news.ycombinator.com/item?id=40818297</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=40818297</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40818297</guid></item><item><title><![CDATA[New comment by fphilipe in "Ask HN: Could you share your personal blog here?"]]></title><description><![CDATA[
<p><a href="https://phili.pe" rel="nofollow noreferrer">https://phili.pe</a><p>Did hit the front page a few times with some of my posts:<p>- <a href="http://phili.pe/posts/postgresql-on-the-command-line/" rel="nofollow noreferrer">http://phili.pe/posts/postgresql-on-the-command-line/</a> - 4th on <a href="https://news.ycombinator.com/front?day=2015-10-27">https://news.ycombinator.com/front?day=2015-10-27</a><p>- <a href="https://phili.pe/posts/timestamps-and-time-zones-in-postgresql/" rel="nofollow noreferrer">https://phili.pe/posts/timestamps-and-time-zones-in-postgres...</a> - 7th on <a href="https://news.ycombinator.com/front?day=2019-03-31">https://news.ycombinator.com/front?day=2019-03-31</a><p>- <a href="https://phili.pe/posts/using-grep-for-simple-ci-tasks/" rel="nofollow noreferrer">https://phili.pe/posts/using-grep-for-simple-ci-tasks/</a> - 29th on <a href="https://news.ycombinator.com/front?day=2022-01-14">https://news.ycombinator.com/front?day=2022-01-14</a></p>
]]></description><pubDate>Thu, 06 Jul 2023 04:26:20 +0000</pubDate><link>https://news.ycombinator.com/item?id=36611276</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=36611276</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36611276</guid></item><item><title><![CDATA[Exclusive End Dates]]></title><description><![CDATA[
<p>Article URL: <a href="http://qedcode.com/content/exclusive-end-dates.html">http://qedcode.com/content/exclusive-end-dates.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=34531281">https://news.ycombinator.com/item?id=34531281</a></p>
<p>Points: 3</p>
<p># Comments: 1</p>
]]></description><pubDate>Thu, 26 Jan 2023 13:20:46 +0000</pubDate><link>http://qedcode.com/content/exclusive-end-dates.html</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=34531281</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=34531281</guid></item><item><title><![CDATA[New comment by fphilipe in "Hardening macOS"]]></title><description><![CDATA[
<p>If you never use those apps, you can also remove the executable flag with `chmod -x` and they won’t open anymore.</p>
]]></description><pubDate>Fri, 24 Jun 2022 19:51:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=31868428</link><dc:creator>fphilipe</dc:creator><comments>https://news.ycombinator.com/item?id=31868428</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=31868428</guid></item></channel></rss>