HN user

emmanueloga_

2,851 karma

Software Engineer @ Crunchyroll

https://emmanueloga.com

https://lobste.rs/~emmanueloga

https://mastodon.gamedev.place/@EmmanuelOga

https://bsky.app/profile/emmanuel-oga.bsky.social

Posts25
Comments1,147
View on HN
ewal.dev 12mo ago

TrendWeight v2 Has Launched

emmanueloga_
2pts1
github.com 2y ago

Show HN: Deploy highly available infra to EC2 with Docker-compose and CDK

emmanueloga_
4pts0
www.vpsbenchmarks.com 2y ago

Review and Compare VPS Servers

emmanueloga_
1pts1
templ.guide 2y ago

Using React with Templ

emmanueloga_
2pts0
dbmx.net 2y ago

Tkrzw-RPC: high availability key-value store

emmanueloga_
1pts1
www.youtube.com 2y ago

Taskflow: A Parallel and Heterogeneous Task Programming System Using Modern C++ [video]

emmanueloga_
1pts0
labs.la.utexas.edu 3y ago

Buss Lab and Evolutionary Psychology at the University of Texas

emmanueloga_
1pts0
en.wikipedia.org 3y ago

Ask HN: State of Automatic Text Summarization

emmanueloga_
2pts2
news.ycombinator.com 5y ago

Talks and Tutorials from David Beazley

emmanueloga_
4pts0
ajdust.github.io 5y ago

tfbvis: Visualizing TechEmpower benchmarks beyond requests per second

emmanueloga_
2pts7
news.ycombinator.com 5y ago

Shiro Kawai: Schemer, Lisper, Actor

emmanueloga_
90pts21
www.youtube.com 6y ago

The Language of the Language: Comparing compiler construction in Clojure and F#

emmanueloga_
6pts1
medium.com 7y ago

The Evolution of Decision Tables

emmanueloga_
1pts0
sarabander.github.io 10y ago

HTML5 and EPUB3 Version of “Structure and Interpretation of Computer Programs”

emmanueloga_
1pts0
www.gecode.org 11y ago

Modelling and Programming with Gecode – constraint-based system [pdf]

emmanueloga_
2pts0
java-performance.com 11y ago

Java performance tips

emmanueloga_
2pts0
en.wikipedia.org 11y ago

Although binary search is straightforward, the details can be tricky

emmanueloga_
2pts1
web.archive.org 11y ago

RPC and Its Offspring: Convenient, yet Fundamentally Flawed (2009) [pdf]

emmanueloga_
3pts1
fastarray.appspot.com 11y ago

ELI – A System for Programming with Arrays

emmanueloga_
43pts28
www.ok.ctrl.titech.ac.jp 11y ago

Markerless Interactive Augmented Reality with a Projector and a Color Camera

emmanueloga_
2pts0
www.youtube.com 11y ago

Look-and-Say Numbers featuring John Conway [video]

emmanueloga_
13pts2
www.truevalhalla.com 12y ago

True Valhalla Online Income Report #025 – May 2014 (VGS)

emmanueloga_
2pts0
www.emmanueloga.com 12y ago

Fun with Google's AppScript Cleaning up Gmail emails by host

emmanueloga_
1pts0
www.cubrid.org 12y ago

All new CUBRID 9.2.0 with new SQL support, performance improvements, and more

emmanueloga_
2pts1
elehack.net 12y ago

Minimum Viable Research

emmanueloga_
1pts0
F# 10 5 months ago

good point, could be some 10 years ago now, I think...

F# 10 5 months ago

I got into OCaml for a while, which naturally led me to try F#. What pushed me away back then was that the tooling lagged behind C#, especially in VS Code, and the C#/F# interop wasn’t as ergonomic as I expected. I liked the idea of using F# for the core and C# around the edges, but it didn’t feel smooth in practice. This was years ago, so maybe the tooling has improved since.

I’ve always wondered whether tighter integration with C# would have led to broader adoption, though that might have changed the character of the language.

How about framing this in terms of two orthogonal axes the article doesn’t name: concurrency (actors) and continuity (durable execution).

* Durable execution: long‑running, resumable workflows with persistence, replay, and timeouts.

* Actors: isolated entities that own their state and logic, process one message at a time, and get concurrency by existing in large numbers (regardless of whether the runtime uses threads, async/await, or processes under the hood).

Combine the two and you get a "Durable actor", which seems close to what the article calls an “async agent”: a component that can receive messages, maintain state, pause/resume, survive restarts, and call out to an LLM or any other API.

And since spawning is already a primitive in the actor model, the article’s "subagent" fits naturally here too: it’s just another actor the first one creates.

I’ve been thinking that defaulting to durable execution over lower‑level primitives like queues makes sense a lot of the time, what do you think?

A lot of the "simple queue" use cases end up needing extra machinery like a transactional‑outbox pattern just to be reliable. Durable‑execution frameworks (DBOS/Temporal/etc.) give you retries, state, and consistency out of the box. Patterns like Sagas also tend to get stitched together on top of queues, but a DE workflow gives you the same guarantees with far less complexity.

The main tradeoff I can think of is latency: DE engines add overhead, so for very high throughput, huge fan‑out, or ultra‑low‑latency pipelines, a bare‑bones queue + custom consumers might still be better.

Curious where others draw the line between the two.

Tried writing an electrostatic particle simulator in Turbo Pascal 7 with BGI as a teen, a handful of particles before it crawled. Then saw a galaxy collision sim on a CD-ROM magazine disc handling thousands of bodies smoothly. Thought it was assembly tricks.. now I'm sure it's algorithmic (avoiding N**2 runtime) but never dug into the specifics. Are charges vs gravity sims essentially the same n-body problem?

I haven't used ruby in more than a decade, but I remember there was always some controversy around the corner. Up next: Zed Shaw comes out from his cave, joins forces with the mummy of _why to combat DHH's anti-woke agenda.

Page Object (2013) 10 months ago

Page Object Models trade off clarity for encapsulation. Concrete example [1]. They can make tests look "cleaner" but often obscure what's actually happening. For example:

    await page.getStarted(); // what does this actually do?
vs
    await page.locator('a', { hasText: 'Get started' }).first().click();
    await expect(page.locator('h1', { hasText: 'Installation' })).toBeVisible();
The second version is explicit and self-documenting. Tests don't always benefit from aggressive DRY, but I've seen teams adopt POMs to coordinate between SDETs and SWEs.

--

1: https://playwright.dev/docs/pom

I wonder if anyone use https://verdaccio.org/ to vendor packages?

In theory for each package one could:

* npm install pkg

* npm pack pkg

* npm publish --registry=https://verdaccio.company.com

* set .npmrc to "registry=https://verdaccio.company.com/ when working with the actual app.

...this way, one could vet packages one by one. The main caveat I see is that it’s very inconvenient to have to vet and publish each package manually.

It would be great if Verdaccio had a UI to make this easier, for example, showing packages that were attempted to install but not yet vetted, and then allowing approval with a single click.

In real projects I typically group the classes in a way that makes it easier to read, something like this:

    <div class={tw(
      "block",
      "transform transition-all",
      "bg-white ring-1 ring-black/5 rounded-xl shadow-2xl",

      "max-w-3xl mx-auto overflow-hidden",

      "group-data-closed/dialog:opacity-0",
      "group-data-closed/dialog:scale-95",

      "group-data-enter/dialog:duration-300",
      "group-data-enter/dialog:ease-out",

      "group-data-leave/dialog:duration-200",
      "group-data-leave/dialog:ease-in"
    )}>
        ...
    </div>
I currently do this manually but it would be nice to have some tooling to automate that kind of format.

I'm a fan of the app, one of those rare web apps that have been reliably there for more than 10 years and "just works". Today I found out it has been refreshed and its source released [1].

Congrats Erv Walter for the launch of v2 and thank you for making the app and source available!

For those who haven't seen this before, this is a free web app that makes it easy to chart a moving average of the weight measured with smart scales (Withings/Fitbit), following the ideas on John Walker's "The hacker diet" [2].

--

1: https://github.com/ervwalter/trendweight

2: https://www.fourmilab.ch/hackdiet/

Not just height, anything that causes continuous repaints can become expensive. Search for "jank free" to find more resources on the subject, or check this oldish website [1].

--

1: http://jankfree.org/

I like it! Suggestions:

* Clarify relationship with https://hckrnews.com/

* Don't put the settings in localStorage, use URL params. That has a lot of usability improvements including being able to share the state, bookmark it, and heads up the current state. Use Rison [1] for the URL params to make it nice to read.

* The settings overview is too terse. What does something like "Timeline, Top 20, Day, Comments"? Maybe you could turn that into a concise natural language sentence.

--

1: https://github.com/kou64yama/rison2?tab=readme-ov-file

The article suggests running Kuzu in a FastAPI frontend for network access. A caveat: production Python servers like Uvicorn [1] typically spawn multiple worker processes.

A simple workaround is serving HTTP through a single process language like Go or JavaScript, since Kuzu has bindings for both. Other processes could access the database directly in read-only mode for analysis [2].

For better DX, the ideal would be Kuzu implementing the Bolt protocol of Neo4J directly in the binary, handling single-writer and multi-reader coordination internally. Simpler alternative: port the code from [3] to C++ and add a `kuzu --server` option.

--

1: https://fastapi.tiangolo.com/deployment/server-workers/#mult...

2: https://docs.kuzudb.com/concurrency/#scenario-2-multiple-pro...

3: https://github.com/kuzudb/explorer/tree/master/src/server

From my perspective, the article seems primarily focused on promoting React Server Components, so you could mention that at the very top. If that’s not the case, then a clearer outline of the article’s objectives would help. In technical writing, it’s generally better to make your argument explicit rather than leave it open to reader interpretation or including a "twist" at the end.

An outline doesn't have to be a compressed version, I think more like a map of the content, which tells me what to expect as I make progress through the article. You might consider using a structure like SCQA [1] or similar.

--

1: https://analytic-storytelling.com/scqa-what-is-it-how-does-i...