diff options
| author | Sacha Chua <sacha@sachachua.com> | 2026-09-12 22:07:04 -0400 |
|---|---|---|
| committer | Sacha Chua <sacha@sachachua.com> | 2026-09-12 22:07:04 -0400 |
| commit | b6297e7af2c1aee0bdd59b30731a3cdd89f51552 (patch) | |
| tree | 30b0b4666678bfee9e224460d941a72678727780 /2026/talks | |
| parent | f3f9b71a10b599f84117d007e5f81eec9d429b38 (diff) | |
| download | emacsconf-wiki-b6297e7af2c1aee0bdd59b30731a3cdd89f51552.tar.xz emacsconf-wiki-b6297e7af2c1aee0bdd59b30731a3cdd89f51552.zip | |
add hutch
Diffstat (limited to '2026/talks')
| -rw-r--r-- | 2026/talks/hutch.md | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/2026/talks/hutch.md b/2026/talks/hutch.md new file mode 100644 index 00000000..b438dc73 --- /dev/null +++ b/2026/talks/hutch.md @@ -0,0 +1,59 @@ +[[!meta title="hutch: code reviews for the mildly disenfranchised"]] +[[!meta copyright="Copyright © 2026 Akshay Gupta"]] +[[!inline pages="internal(2026/info/hutch-nav)" raw="yes"]] + +<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing --> +<!-- You can manually edit this file to update the abstract, add links, etc. ---> + + +# hutch: code reviews for the mildly disenfranchised +Akshay Gupta (he/him) - Pronunciation: "UCK-shay", IRC: kitallis, Bluesky: repartee.party Homepage: <https://kitallis.in> E-mail: mail@kitallis.in, <mailto:mail@kitallis.in> + +[[!inline pages="internal(2026/info/hutch-before)" raw="yes"]] + +We're here today, roughly 500 days <https://en.wikipedia.org/wiki/List_of_large_language_models#2025> in, and coding agents are genuinely more productive than, previously, instructed <https://www.youtube.com/watch?v=U_cSLPv34xk>. They are now driving much of our daily work, helping us organize, process information and be more useful overall, and, with this brainwave of an opening, I present yet another attempt at wedging large languages, agents, coding harnesses etcetera inside our beloved buffers, or something. + +But hopefully, an unseemly angle to consider, first. + +I continue to hand-write and often, hand-commit code. I prefer the pedagogical aspect of AI more than the task completing automaton aspects. The latter has driven all sorts of explosion of tooling around not just writing, but reviewing code too. Like review agents jumping in, before your colleagues do, and plopping gobs of logorrhea across twenty pull requests before you have had a chance to wake up and look at your phone. This works, sometimes, for some people. But if you're like me, you still have people looking at code before they are deployed to users, and for that, it's overall better if you respect those people and their time. + +This is where hutch slides in. + +hutch <https://github.com/adjaecent/magit-hutch> is a Magit-induced, buffer-local interface over LLM review output. Instead of the review living on code-forges as comments for everyone to see, it appears patch-shaped (usually) within Magit's transient blocks and can be triaged and applied directly within emacs, **before** you commit and push. + +Here's an example workflow: + +Imagine you've just finished implementing a function. Before committing, you ask hutch to review the diff through the Magit buffer. You get a new actionable buffer back: + + src/infirmary.rb + @@ ... + - def eligible?(user) = user.age >= 18 && user.age < 18 + + def eligible?(user) = user.age >= 18 && user.age < 65 + + [hutch] This condition can literally never be true + [hutch] Did you mean `user.age < 65`? + [hutch] apply suggestion? [y]es [n]o [e]dit + +You can now accept, reject, or investigate each suggestion without leaving the Magit workflow. If the suggestions are useful, hutch can turn them into patches and apply; if it's nonsense, you dismiss it right there. None of it leaves your safe space. + +The talk walks through how it works and when it doesn't: + • tour of the workflow: how to use hutch, when to use hutch, how to approve and reject things + • patches over comments: hutch biasing outputs towards actionable items, rather than just prose + • tools: guardrails, every agent loop earning its keep, gptel's state-machine + • evals: how does it stack up against other external tooling on recognized benchmarks + • dead-on-arrival: where it fails and why this is only useful if you work in a specific niche way +This is a Magit and review-workflow talk that happens to involve an LLM, it doesn't purport any arguments about whether you should or shouldn't use AI with emacs. + +**Note:** The hutch package is available on MELPA <https://melpa.org/#/hutch>. + +About the speaker: + +Modern day aesthetically-relevant hacker. Long-time Clojure and Ruby programmer, reluctant polyglot by way of building high-throughput backends. Recently wound-down my startup Tramline, a mobile release orchestration tool, now kept alive as open source. Emacs and Magit are my daily drivers. + + + +[[!inline pages="internal(2026/info/hutch-after)" raw="yes"]] + +[[!inline pages="internal(2026/info/hutch-nav)" raw="yes"]] + + |
