Top all-time · #1527
Andrew Lock
Personal blog · andrewlock.netprogrammingweb
Andrew Lock's personal blog at andrewlock.net covers programming and web. Since 2018, 47 different Hacker News readers have linked it 64 times, most often “Working with stacked branches in Git is easier with –update-refs (2022)”. It is still writing: the last post was on 2026-10-20, and you can follow it by feed.
Too few sampled comments (25) to say how often HN recommends it.?
Why HN links it
HN readers link Andrew Lock's .NET blog for practical posts on git stacked branches and rebase --update-refs, and on C# topics such as strongly typed IDs, AsyncLazy with ConcurrentDictionary, and new .NET features.
- Recommended for · 5 comments
- Praised as helpful on ConcurrentDictionary, good on stacked git branches, and a great source of new .NET features.
Summarised by Claude from a sample of 25 HN comments that link here. Each comment is marked recommending, critical or neutral (citing without judging); how this works.
Hi, my name is Andrew, or ‘Sock’ to most people. This blog is where I share my experiences as I journey into ASP.NET Core.
Most-linked posts?
- Working with stacked branches in Git is easier with –update-refs (2022)16 people · 17 mentions · first linked 2022-11-23
- Using strongly-typed entity IDs to avoid primitive obsession (Part 1)3 people · 3 mentions · first linked 2019-04-09
- Why is string.GetHashCode() different each time I run my program in .NET Core?2 people · 3 mentions · first linked 2018-12-11
- Adding simple email address obfuscation for your blog (2020)2 people · 2 mentions · first linked 2020-04-30
- Closed class hierarchies (Exploring the .NET 11 preview – Part 4)2 people · 2 mentions · first linked 2026-07-01
What Hacker News says?
Neat page from David Fowler. I didn't know about that one. Thank you. To further explain why you want to use an AsyncLazy (or Lazy for synchronous programming) when working with ConcurrentDictionary I find this article to be helpful: https://andrewlock.net/making-getoradd-on-concurrentdictiona...
Comment linking /making-getoradd-on-concurrentdictionary-thread-safe-using-lazy/
on “Ask HN: What are some cool but obscure data structures you know about?”Submitted Understanding the Worst .NET Vulnerability as a story · 197 points
HN discussionGit recently added a --update-refs option to rebase that makes dealing with this scenario a lot easier. This post does a good job explaining how to use it: https://andrewlock.net/working-with-stacked-branches-in-git-...
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “Extremely Linear Git History”Submitted Fixing an old .NET Core native library loading issue on Alpine as a story · 68 points
HN discussionYou can interactively rebase after the fact while preserving merges even. I usually work these days on stacked branches, and instead of using —-fixup I just commit with a dumb message. git rebase -i --rebase-merges --keep-base trunk This lets me reorganize commits, edit commit messages, split work into new branches, etc… When I add --update-refs into the mix it lets me do what I read are the biggest workflow improve…
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “Jujutsu for busy devs”Submitted Working with stacked branches in Git is easier with –update-refs (2022) as a story · 65 points
HN discussion- Daniel Lemire: https://lemire.me/blog/ - Andrew Lock: https://andrewlock.net/ - Steve Gordon: https://www.stevejgordon.co.uk/ - Scott Helme: https://scotthelme.co.uk/ - Phil Haack: http://haacked.com/
Comment linking /
on “Ask HN: Great Blogs by Programmers”Submitted Companies complaining .NET moves too fast should just pay for post-EOL support as a story · 3 points
HN discussionAnother related effect of this is Protocol Ossification [0] which happens when implementers of a public API/Protocol surface area take implicit dependencies on common but not standardized behaviors of the API/Protocol implementation. That being said, you can take proactive steps to defeat this. For example, the default Hash for strings in .NET is randomly seeded each time a process starts[1] in order to strongly dis…
Comment linking /why-is-string-gethashcode-different-each-time-i-run-my-program-in-net-core/
on “Hyrum’s Law in Golang”Submitted Running .NET in the browser without Blazor as a story · 3 points
HN discussion> - Somehow reviewers never seem to like the stack of PRs, my experience is they always react with disdain and/or confusion. Are people sending multiple branches of the stack for review at once? It should only ever be the "bottom" branch out-for-review at any time. > - Namely there would be review comments on the first PRs that then cause a cascade of merge conflicts in the follow-on PRs This can still happen in the…
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “I kind of like rebasing”Submitted A Quantum RNG for .NET: The quantum measurement problem and many-worlds approach as a story · 3 points
HN discussionSure you can! In fact you can do magic on stacked branches with `rebase --update-refs` that you can't do with merge: https://andrewlock.net/working-with-stacked-branches-in-git-...
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “I kind of like rebasing”Submitted Closed class hierarchies (Exploring the .NET 11 preview – Part 4) as a story · 2 points
HN discussionI was reading this the other day when I came across this feature because I’m stacking PRs recently which I don’t usually do https://andrewlock.net/working-with-stacked-branches-in-git-... Another commenter posted this link which was a bit more succinct https://blog.hot-coffee.dev/en/blog/git_update_refs/ There isn’t much to it though, you just go to the branch and run git rebase with the update refs flag.
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “Stacked Diffs with git rebase —onto”Submitted dotNET (OK, C#) gets union types as a story · 2 points
HN discussionIf it helps, here's a related blog post but with a C# slant: https://andrewlock.net/using-strongly-typed-entity-ids-to-av... The author refers to using primitives everywhere as "primitive obsession", and proposed using types instead.
Comment linking /using-strongly-typed-entity-ids-to-avoid-primitive-obsession-part-1
on “Parsix: Parse Don't Validate”Submitted Working with stacked branches in Git (Part 1) as a story · 2 points
HN discussion> At least when the controllers are all classes I can unit test them. So I've literally just jumped into this world, having never touched asp.net or similar before. I looked into how to test the controller side of things, and came across this[1] post arguing that unit testing controllers weren't as useful as integration testing them. Integration testing would definitely be useful, and something I will do, but I assu…
Comment linking /should-you-unit-test-controllers-in-aspnetcore/
on “Minimal APIs at a glance in .NET 6”Submitted Working with stacked branches in Git is easier with –update-refs as a story · 2 points
HN discussion> How does the runtime know if you can “Deconstruct” an object? It implicit based on whether the object implements the appropriate method? Based on what I have read below, it's implicit; there's very little that the runtime has to know - it happens at compile time, with the compiler looking for a method with the name "Deconstruct" and the right type signature, and plugging that in during the compile. The compiler al…
Comment linking /deconstructors-for-non-tuple-types-in-c-7-0/
on “Tuples goodness in .NET 4.7.1”Submitted Rendering Blazor components to a string: Exploring the .NET 8 preview – Part 9 as a story · 2 points
HN discussionIf I understood you correctly, you want to propagate changes in a branch to other branches that depend on it? Then --update-refs is for you[1]. That way, you only need to update the "latest" branch. [1] https://andrewlock.net/working-with-stacked-branches-in-git-...
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “GitHub Stacked PRs”Submitted Working with stacked branches in Git is easier with –update-refs as a story · 2 points
HN discussionRebasing a stack of branches in git can also be pretty simple, with --update-refs. There's a good article here: https://andrewlock.net/working-with-stacked-branches-in-git-...
Comment linking /working-with-stacked-branches-in-git-is-easier-with-update-refs/
on “Show HN: ggc – A terminal-based Git CLI written in Go”Submitted Super-charging 'Git rebase' with 'Git absorb' as a story · 2 points
HN discussionAnd dotnet run can now run single files of C# code, with the ability to import other projects and packages if needed. #!/usr/bin/dotnet run https://devblogs.microsoft.com/dotnet/announcing-dotnet-run-... https://andrewlock.net/exploring-dotnet-10-preview-features-...
Comment linking /exploring-dotnet-10-preview-features-1-exploring-the-dotnet-run-app.cs/
on “Stop Designing Languages. Write Libraries Instead (2016)”Submitted Using strongly-typed entity IDs to avoid primitive obsession (Part 1) as a story · 2 points
HN discussionYou specified working with web and .NET Core (now just called .NET). Given the scope of modern .NET I don't think I can recommend a single book, but I've tried to order this in how I see them as most to least impactful for a dev. For web dev specific guidance it's hard to beat ASP.NET Core in Action by Andrew Lock. Check out Lock's blog too at https://andrewlock.net , it's a great source of new features happening in…
Comment linking /
on “Ask HN: Modern C# book for experienced developers?”Submitted Handy Docker commands for local development as a story · 2 points
HN discussion