HNHacker News
TopNewBestAskShowJobs

emmanueloga_

2,860 karma · joined November 16, 2013

Software Engineer @ Crunchyroll

https://emmanueloga.com

https://lobste.rs/~emmanueloga

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

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

submissionscomments
emmanueloga_··on Deus Ex
thx! asked exactly this in a another thread right here :-)
emmanueloga_··on Deus Ex
I was thinking "that's really good writing", so I search lead writer for Deus Ex, points to [1]. Makes me want to read a book from her, but seems like she mostly writes for games, afaict.

EDIT: I had the wrong writer. Sheldon Pacotti was the lead writer of the original Deus Ex (2000). He wrote the AI dialogue, so the Morpheus quote is almost certainly his. Chris Todd and Austin Grossman also wrote for the game. Mary DeMarle wrote the later prequels (Human Revolution, Mankind Divided).

Pacotti has more books on his site [2]. Anyone familiar?

EDIT 2: Someone recommended Demiurge in this very post!

The linked article calls Deus Ex "pulp, not prophecy." I think "pulp" is a method, not a statement about quality (not sure if the author of the article has the same thing in mind).

I also love the pulpy/noir dialogue in Max Payne first games (1, 2). What are other games with good writing like this? (not necesary pulp)

--

1: https://www.mobygames.com/person/39957/mary-c-demarle/

2: https://sheldonpacotti.com

emmanueloga_··on YuE2 · Frontier Music with Symbolic Planning
This video is the perfect answer to your concern: https://www.youtube.com/shorts/R6c_yJZYEQ4
emmanueloga_··on Elevators
looks very well made, but I still prefer https://en.wikipedia.org/wiki/Elevator_Action !
emmanueloga_··on Show HN: Opening lines of famous literary works
Would it be hard to translate to Spanish? I'd love to share with some friends that love books but don't speak English!
emmanueloga_··on Separate the Cord from the Device
Right! [0] Apparently there are not many standard connectors like these, but I found at least one [1] ...

0: https://www.zojirushi.com/blog/design-explained-our-easy-rel...

1: https://www.mcmaster.com/products/breakaway-magnetic-connect...

emmanueloga_··on Show HN: Axe – A 12MB binary that replaces your AI framework
The excessive size of Go binaries is a common complain. I last recall seeing a related discussion on Lobsters [1]. Who knows, maybe the binary could be shrunk a bit? IMHO 12mb binary size is not that big of a deal.

--

1: https://lobste.rs/s/tzyslr/reducing_size_go_binaries_by_up_7...

emmanueloga_··on F# 10
good point, could be some 10 years ago now, I think...
emmanueloga_··on F# 10
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.

emmanueloga_··on Everyone’s building “async agents,” but almost no one can define them
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.

emmanueloga_··on Message Queues: A Simple Guide with Analogies (2024)
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.

emmanueloga_··on Show HN: Browser-based interactive 3D Three-Body problem simulator
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?
emmanueloga_··on Bundler Belongs to the Ruby Community
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.
emmanueloga_··on Page Object (2013)
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

emmanueloga_··on Ripple – A TypeScript UI framework that takes the best of React, Solid, Svelte
How about... inlining children:

    const age = 40;
    const children = [<div ~ "Moe" />, <div ~ "Larry"/>, <div ~ "Curly" />];
    return <div age ~ children />;
Rationale: single child elements are ubiquitous in web dev, but most JSX formatters will require 3 lines of code even if there's a single child.
emmanueloga_··on Malicious versions of Nx and some supporting plugins were published
I just found that someone posted a showHN for an utility to solve this issue [1].

I think this reinforces the idea that is something that could be built into verdaccio.

--

1: https://news.ycombinator.com/item?id=44891786

emmanueloga_··on Malicious versions of Nx and some supporting plugins were published
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.

emmanueloga_··on Perfect Freehand – Draw perfect pressure-sensitive freehand lines
Explanation of what this does:

https://github.com/steveruizok/perfect-freehand/tree/main?ta...

emmanueloga_··on Airbrush art of the 80s (2015)
TIL about the Scanimate [1] [2].

--

1: https://en.wikipedia.org/wiki/DVNO#Music_video

2: https://www.youtube.com/watch?v=i1aT_CqhyQs

emmanueloga_··on Vanilla JavaScript support for Tailwind Plus
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.
emmanueloga_··on Writing is thinking
There's been a lot of work in this area but no definitive answer, and few constructed languages speakers [1]. I imagine the wins may be marginal, similar to the wins in dvorak vs qwerty typing.

--

1: https://en.wikipedia.org/wiki/Linguistic_relativity#Artifici...

emmanueloga_··on TrendWeight v2 Has Launched
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/

emmanueloga_··on Don't animate height
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/

emmanueloga_··on NativeJIT: A C++ expression –> x64 JIT (2018)
Looks similar to https://github.com/kobalicek/mathpresso
emmanueloga_··on Coding agents have crossed a chasm
Took me a while to find this [1]: "We’re building the next-gen operating system for AI agents."

--

1: https://sdsa.ai/

emmanueloga_··on Show HN: hcker.news – an ergonomic, timeline-based Hacker News front page
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

emmanueloga_··on Material 3 Expressive
"I understood that the poet's work wasn't in the poetry; it was in inventing reasons for the poetry to be admirable. Naturally, that ulterior work altered the piece for him—but not for anyone else."

  - J. L. Borges, El Aleph [1]
--

1: https://www.goodreads.com/quotes/8699659-comprend-que-el-tra...

emmanueloga_··on Ask HN: What are good high-information density UIs (screenshots, apps, sites)?
Chrome debugger tools? htop? visidata [1]? Clicker games are interesting in that they start bare and end up filling the screen with controls. Rerun visualizations come to mind too [2].

--

1: https://www.youtube.com/watch?v=N1CBDTgGtOU

2: https://rerun.io/viewer

emmanueloga_··on Nnd – a TUI debugger alternative to GDB, LLDB
Cool! I did not know about that book. Added to [1]. :-)

--

1: https://github.com/munificent/craftinginterpreters/issues/92...

emmanueloga_··on Is outbound going to die?
Looks great, is it comparable to Monica [1] or is it more business oriented?

--

1: https://github.com/monicahq/monica

Page 1 of 34Next →