<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: lukehoban</title><link>https://news.ycombinator.com/user?id=lukehoban</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 20 Jun 2026 19:21:38 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=lukehoban" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by lukehoban in "Tracking Copilot vs. Codex vs. Cursor vs. Devin PR Performance"]]></title><description><![CDATA[
<p>I do agree there is a balance here, and that the ideal point in the spectrum is likely in between the two product experiences that are currently being offered here.  There are a <i>lot</i> of benefits to using PRs for the review and iteration - familiar diff UX, great comment/review feedback mechanisms, ability to run CI, visibility and auth tracked natively within GitHub, etc.  But Draft PRs are also a little too visible by default in GitHub today, and there are times when you want a shareable PR link that isn't showing up by default on the Pull Requests list in GitHub for your repo. (I frankly want this even for human-authored Draft PRs, but its even more compelling for agent authored PRs).<p>We are looking into paths where we can support this more personal/private kind of PR, which would provide the foundation within GitHub to support the best of both worlds here.</p>
]]></description><pubDate>Mon, 09 Jun 2025 04:01:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=44221328</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=44221328</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44221328</guid></item><item><title><![CDATA[New comment by lukehoban in "Tracking Copilot vs. Codex vs. Cursor vs. Devin PR Performance"]]></title><description><![CDATA[
<p>(Disclaimer: I work on coding agents at GitHub)<p>This data is great, and it is exciting to see the rapid growth of autonomous coding agents across GitHub.<p>One thing to keep in mind regarding merge rates is that each of these products creates the PR at a different phase of the work. So just tracking PR create to PR merge tells a different story for each product.<p>In some cases, the work to iterate on the AI generated code (and potentially abandon it if not sufficiently good) is done in private, and only pushed to a GitHub PR once the user decides they are ready to share/merge. This is the case for Codex for example. The merge rates for product experiences like this will look good in the stats presented here, even if many AI generated code changes are being abandoned privately.<p>For other product experiences, the Draft PR is generated immediately when a task is assigned, and users can iterate on this “in the open” with the coding agent. This creates more transparency into both the success and failure cases (including logs of the agent sessions for both). This is the case for GitHub Copilot coding agent for example. We believe this “learning in the open” is valuable for individuals, teams, and the industry. But it does lead to the merge rates reported here appearing worse - even if logically they are the same as “task assignment to merged PR” success rates for other tools.<p>We’re looking forward to continuing to evolve the notion of Draft PR to be even more natural for these use cases.  And to enabling all of these coding agents to benefit from open collaboration on GitHub.</p>
]]></description><pubDate>Mon, 09 Jun 2025 01:53:37 +0000</pubDate><link>https://news.ycombinator.com/item?id=44220828</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=44220828</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44220828</guid></item><item><title><![CDATA[New comment by lukehoban in "GitHub Copilot Coding Agent"]]></title><description><![CDATA[
<p>Yes. This is a really key part of why Copilot coding agent feels very different to use than Copilot agent mode in VS Code.<p>In coding agent, we encourage the agent to be very thorough in its work, and to take time to think deeply about the problem. It builds and tests code regularly to ensure it understands the impact of changes as it makes them, and stops and thinks regularly before taking action.<p>These choices would feel too “slow” in a synchronous IDE based experience, but feel natural in a “assign to a peer collaborator” UX.  We lean into this to provide as rich of a problem solving agentic experience as possible.<p>(I’m working on Copilot coding agent)</p>
]]></description><pubDate>Mon, 19 May 2025 18:06:26 +0000</pubDate><link>https://news.ycombinator.com/item?id=44032802</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=44032802</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44032802</guid></item><item><title><![CDATA[New comment by lukehoban in "GitHub Copilot Coding Agent"]]></title><description><![CDATA[
<p>As peer commenters have noted, coding agent can be really good at improving test coverage when needed.<p>But also as a slightly deeper observation - agentic coding tools really do benefit significantly from good test coverage. Tests are a way to “box in” the agent and allow it to check its work regularly.  While they aren’t necessary for these tools to work, they can enable coding agents to accomplish a lot more on your behalf.<p>(I work on Copilot coding agent)</p>
]]></description><pubDate>Mon, 19 May 2025 17:54:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=44032662</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=44032662</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=44032662</guid></item><item><title><![CDATA[Pulumi ESC (Environments, Secrets and Configuration) GA]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.pulumi.com/blog/pulumi-esc-ga/">https://www.pulumi.com/blog/pulumi-esc-ga/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41584021">https://news.ycombinator.com/item?id=41584021</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 18 Sep 2024 18:57:47 +0000</pubDate><link>https://www.pulumi.com/blog/pulumi-esc-ga/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=41584021</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41584021</guid></item><item><title><![CDATA[James Bjorken, 90, Dies; Physicist Who Helped Prove That Quarks Exist]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.nytimes.com/2024/08/30/science/james-bjorken-dead.html">https://www.nytimes.com/2024/08/30/science/james-bjorken-dead.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41414110">https://news.ycombinator.com/item?id=41414110</a></p>
<p>Points: 7</p>
<p># Comments: 2</p>
]]></description><pubDate>Sun, 01 Sep 2024 03:47:21 +0000</pubDate><link>https://www.nytimes.com/2024/08/30/science/james-bjorken-dead.html</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=41414110</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41414110</guid></item><item><title><![CDATA[Pulumi Copilot]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.pulumi.com/blog/pulumi-copilot/">https://www.pulumi.com/blog/pulumi-copilot/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40665331">https://news.ycombinator.com/item?id=40665331</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 13 Jun 2024 02:24:53 +0000</pubDate><link>https://www.pulumi.com/blog/pulumi-copilot/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=40665331</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40665331</guid></item><item><title><![CDATA[Secrets and Configuration for Software Engineers – Pulumi ESC]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.pulumi.com/blog/esc-software-engineering/">https://www.pulumi.com/blog/esc-software-engineering/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=40587538">https://news.ycombinator.com/item?id=40587538</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 05 Jun 2024 17:07:45 +0000</pubDate><link>https://www.pulumi.com/blog/esc-software-engineering/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=40587538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40587538</guid></item><item><title><![CDATA[New comment by lukehoban in "Einsum for Tensor Manipulation"]]></title><description><![CDATA[
<p>I played around with the idea of a language motivated by this same thought process last year: <a href="https://github.com/lukehoban/ten">https://github.com/lukehoban/ten</a>.<p>* Succinct syntax and operators tailored to AI model definition<p>* Fully statically typed tensors, including generic functions over tensor dimension and batch dimensions (...)<p>* First-class hyper-parameters, model parameters and model arguments for explicit model specification<p>* Einops-style reshaping and reductions - tensor dimensions are explicit not implicit</p>
]]></description><pubDate>Sat, 27 Apr 2024 20:24:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=40183151</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=40183151</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40183151</guid></item><item><title><![CDATA[New comment by lukehoban in "Ask HN: Show me your half baked project"]]></title><description><![CDATA[
<p>Ten Language<p><a href="https://github.com/lukehoban/ten">https://github.com/lukehoban/ten</a><p>Ten is a statically typed tensor programming language for defining AI models.<p>Ten has the following features: (1) Succint syntax and operators tailored to AI model definition (2) Fully statically typed tensors, including generic functions over tensor dimension and batch dimensions (...) (3) First-class hyper-parameters, model parameters and model arguments for explicit model specification (4) EinOps-style reshaping and reductions - tensor dimensions are explicit not implicit<p>Example (a functional GPT2 implementation):<p><pre><code>    Gelu(x: {...}) -> {...}:
        return 0.5 * x * (1 + Tanh(0.7978845608 * x + 0.044715 * x**3))    

    SoftMax[N](x: {...,N}) -> {...,N}:
        exp_x = Exp(x - Max(x))
        return exp_x / Sum(exp_x)    

    LayerNorm[S,E]|g:{E},b:{E}|(x:{S,E}) -> {S,E}:
        mean = Mean(x)
        variance = Var(x)
        return g * (x - mean) / Sqrt(variance + 1e-5) + b    

    Linear[N,K]|w:{N,K},b:{K}|(x:{...,N}) -> {...K}:
        return x@w + b    

    FFN[S,E]|c_fc, c_proj|(x:{S,E}) -> {S,E}:
        a = Gelu(Linear[E,E*4]|c_fc|(x))
        return Linear[E*4,E]|c_proj|(a)    

    Attention[Q,K,N,V](q:{...,Q,K}, k:{...,N,K}, v:{...,N,V}, mask:{Q,N}) -> {...,Q,V}:
        return Softmax[N](q @ Transpose[N,K](k) / Sqrt(K) + mask) @ v    

    MHA[H,S,E,K]|c_attn, c_proj|(x:{S,E}) -> {S,E}:
        q, k, v = Linear[E,E*3]|c_attn|(x) {S,(3,H,K) -> 3,H,S,K}
        causal_mask = (Tri[S]() - 1) * 1e10
        out = Attention[S,K,S,K](q, k, v, causal_mask) {H,S,K -> S,(H,K)}   
        return Linear[E,E]|c_proj|(out)    

    Transformer[H,S,E]|mlp, attn, ln_1, ln_2|(x:{S,E}) -> {S, E}:
        y = x + MHA[H,S,E,E/H]|attn|(LayerNorm[S,E]|ln_1|(x))
        return y + FFN[S,E]|mlp|(LayerNorm[S,E]|ln_2|(y))    

    GPT2[H,S,E,B,V]|wte, wpe, blocks|(inputs:{S}) -> {S,V}:
        x = wte.[inputs] + wpe.[Range[S]()]
        z = for i in 0...B: x, y -> Transformer[H,S,E]|blocks.[i]|(y)
        return LayerNorm[S,E]|ln_f|(z) @ Transpose[V,E](wte)
</code></pre>
Status: Working prototype, but lots more I'd love to do to bring this to life (README has more details of future thoughts/plans).</p>
]]></description><pubDate>Fri, 13 Oct 2023 03:35:14 +0000</pubDate><link>https://news.ycombinator.com/item?id=37866289</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37866289</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37866289</guid></item><item><title><![CDATA[New comment by lukehoban in "Pulumi ESC: Easy and Secure Environments, Secrets and Configuration"]]></title><description><![CDATA[
<p>Great suggestion!  We haven't yet integrated ESC into Pulumi AI, but it's something we'll be looking into. Great opportunity to really make it easy to get started with ESC.</p>
]]></description><pubDate>Tue, 10 Oct 2023 16:40:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=37834383</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37834383</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37834383</guid></item><item><title><![CDATA[New comment by lukehoban in "Pulumi ESC: Easy and Secure Environments, Secrets and Configuration"]]></title><description><![CDATA[
<p>Agreed that YAML (and JSON) can be difficult to manage at large scale. This is actually a big part of why Pulumi ESC exists, to be able to decompose large YAML/JSON configuration files into smaller logical and composable units.<p>As you note, intellisense and error squiggles can also help a lot here - both for ensuring references to other environments are correct, and to get checking for your dynamic secrets providers. We’ve added the Monaco editor (from VS Code) into the Pulumi Cloud console to make it easier to offer these features in the very near future.<p>We also offer a preview pane to make it easy to play interactively validate your environments documents while working on them directly in the console.<p>Lots more coming for providing an even richer experience working with environments in Pulumi ESC.</p>
]]></description><pubDate>Tue, 10 Oct 2023 13:50:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=37832083</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37832083</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37832083</guid></item><item><title><![CDATA[Pulumi raises $41M to grow IaC platform]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.geekwire.com/2023/cloud-startup-pulumi-raises-41m-from-madrona-nea-to-grow-infrastructure-as-code-platform/">https://www.geekwire.com/2023/cloud-startup-pulumi-raises-41m-from-madrona-nea-to-grow-infrastructure-as-code-platform/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37760932">https://news.ycombinator.com/item?id=37760932</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 04 Oct 2023 04:41:16 +0000</pubDate><link>https://www.geekwire.com/2023/cloud-startup-pulumi-raises-41m-from-madrona-nea-to-grow-infrastructure-as-code-platform/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37760932</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37760932</guid></item><item><title><![CDATA[New comment by lukehoban in "The saga of the Closure compiler, and why TypeScript won"]]></title><description><![CDATA[
<p>Closure compiler was actually one of the biggest influences on the design of TypeScript, and even the early motivation for the approach that TypeScript took.<p>From <a href="https://medium.com/hackernoon/the-first-typescript-demo-905ea095a70f" rel="nofollow noreferrer">https://medium.com/hackernoon/the-first-typescript-demo-905e...</a>:<p>> There were many options already available, but none seemed to be resonating well with a broad enough section of the market. Internally at Microsoft, Script# was being used by some large teams. It let them use C# directly instead of JavaScript, but as a result, suffered from the kind of impedance mismatch you get when trying to stand at arms length from the runtime model you are really programming against. And there was Google’s Closure Compiler, which offered a rich type system embedded in comments inside JavaScript code to guide some advanced minification processes (and along the way, caught and reported type-related errors). And finally, this was the timeframe of a rapid ascendancy of CoffeeScript within the JavaScript ecosystem — becoming the first heavily used transpiled-to-JavaScript language and paving the way for transpilers in the JavaScript development workflow. (Aside — I often explained TypeScript in the early days using an analogy “CoffeeScript : TypeScript :: Ruby : C#/Java/C++”, often adding — “and there are 50x more C#/Java/C++ developers than Ruby developers :-)”)<p>> What we quickly discovered we wanted to offer was a “best of all worlds” at the intersection of these three — a language as close as possible to JavaScript semantics (like CoffeeScript) and syntax (like Closure Compiler) but able to offer typechecking and rich tooling (like Script#).</p>
]]></description><pubDate>Fri, 29 Sep 2023 02:22:30 +0000</pubDate><link>https://news.ycombinator.com/item?id=37698574</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37698574</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37698574</guid></item><item><title><![CDATA[The AI Challenge Is Cloud, Not Code]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.pulumi.com/blog/mlops-the-ai-challenge-is-cloud-not-code/">https://www.pulumi.com/blog/mlops-the-ai-challenge-is-cloud-not-code/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37357538">https://news.ycombinator.com/item?id=37357538</a></p>
<p>Points: 3</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 02 Sep 2023 00:28:17 +0000</pubDate><link>https://www.pulumi.com/blog/mlops-the-ai-challenge-is-cloud-not-code/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37357538</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37357538</guid></item><item><title><![CDATA[TypeScript Origins: The Documentary (Trailer)]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.youtube.com/watch?v=k30v8Kn9mMg">https://www.youtube.com/watch?v=k30v8Kn9mMg</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37331708">https://news.ycombinator.com/item?id=37331708</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Thu, 31 Aug 2023 02:16:15 +0000</pubDate><link>https://www.youtube.com/watch?v=k30v8Kn9mMg</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37331708</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37331708</guid></item><item><title><![CDATA[Untyped Lambda Calculus, Church Numerals, and the Y Combinator in Go]]></title><description><![CDATA[
<p>Article URL: <a href="https://lukehoban.com/posts/untyped-lambda-calculus/">https://lukehoban.com/posts/untyped-lambda-calculus/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=37194068">https://news.ycombinator.com/item?id=37194068</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Sat, 19 Aug 2023 22:40:14 +0000</pubDate><link>https://lukehoban.com/posts/untyped-lambda-calculus/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=37194068</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37194068</guid></item><item><title><![CDATA[New comment by lukehoban in "Converting Full Terraform Programs to Pulumi"]]></title><description><![CDATA[
<p>> The self hosted backend does have plenty of wringles though like not supporting the same stack name across different projects with the same backend URL contrary to how the hosted backend works.<p>Just a note that we did add support for projects to the self-hosted backend a few months ago, which does bring the self-hosted and managed backends into alignment here.<p><a href="https://www.pulumi.com/blog/project-scoped-stacks-in-self-managed-backend/" rel="nofollow noreferrer">https://www.pulumi.com/blog/project-scoped-stacks-in-self-ma...</a></p>
]]></description><pubDate>Tue, 13 Jun 2023 18:32:47 +0000</pubDate><link>https://news.ycombinator.com/item?id=36314702</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=36314702</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36314702</guid></item><item><title><![CDATA[RFC: Go Generics in the Pulumi SDK]]></title><description><![CDATA[
<p>Article URL: <a href="https://github.com/pulumi/pulumi/discussions/13057">https://github.com/pulumi/pulumi/discussions/13057</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36142303">https://news.ycombinator.com/item?id=36142303</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Wed, 31 May 2023 18:49:03 +0000</pubDate><link>https://github.com/pulumi/pulumi/discussions/13057</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=36142303</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36142303</guid></item><item><title><![CDATA[Pulumi AI: The Fastest Way to Discover, Learn, and Build Infrastructure as Code]]></title><description><![CDATA[
<p>Article URL: <a href="https://www.pulumi.com/blog/pulumi-ai/">https://www.pulumi.com/blog/pulumi-ai/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=35742725">https://news.ycombinator.com/item?id=35742725</a></p>
<p>Points: 7</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 28 Apr 2023 15:44:11 +0000</pubDate><link>https://www.pulumi.com/blog/pulumi-ai/</link><dc:creator>lukehoban</dc:creator><comments>https://news.ycombinator.com/item?id=35742725</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=35742725</guid></item></channel></rss>