ejones's comments

ejones | 1 year ago | on: TypeScript types can run DOOM [video]

Ah nice! Well, hats off this is really impressive. As other commenters mentioned the extent to which it's documented and the restricted scope probably helped.

ejones | 1 year ago | on: TypeScript types can run DOOM [video]

Amazing work. I'm interested in the choice of WASM - presumably any target that can run DOOM could've been used? Of which there are innumerable choices I assume. Was it for symbolic reasons or genuinely the most useful target?

ejones | 1 year ago | on: Structured Outputs in the API

You might be right that they're similarly powerful. In some cases, an arbitrary output format might in and of itself be desirable. Like it might result in token savings or be more natural for the LLM. For instance, generating code snippets to an API or plain text with constraints.

And this is more esoteric, but technically in the case of JSON I suppose you could embed a grammar inside a JSON string, which I'm not sure JSON schema can express.

ejones | 1 year ago | on: Structured Outputs in the API

FWIW, llama.cpp has always had a JSON schema -> GBNF converter, although it launched as a companion script. Now I think it's more integrated in the CLI and server.

But yeah I mean, GBNF or other structured output solutions would of course allow you to supply formats other than JSON schema. It sounds conceivable though that OpenAI could expose the grammars directly in the future, though.

ejones | 1 year ago | on: Structured Outputs in the API

Similar approach to llama.cpp under the hood - they convert the schema to a grammar. Llama.cpp's implementation was specific to the ggml stack, but what they've built sounds similar to Outlines, which they acknowledged.

ejones | 4 years ago | on: Postgres wire compatible SQLite proxy

Awesome to see work in the DB wire compatible space. On the MySQL side, there was MySQL Proxy (https://github.com/mysql/mysql-proxy), which was scriptable with Lua, with which you could create your own MySQL wire compatible connections. Unfortunately it appears to have been abandoned by Oracle and IIRC doesn't work with 5.7 and beyond. I used it in the past to hack together a MySQL wire adapter for Interana (https://scuba.io/).

I guess these days the best approach for connecting arbitrary data sources to existing drivers, at least for OLAP, is Apache Calcite (https://calcite.apache.org/). Unfortunately that feels a little more involved.

ejones | 5 years ago | on: Inside a viral website

It just navigated the page itself by assigning window.location.href, which isn't subject to the same restrictions as popups.

ejones | 5 years ago | on: Arctic Code Vault Contributor

Yeah, the inclusion criteria are pretty broad:

  The snapshot will include every repo with any commits
  between the announcement at GitHub Universe on November 13th
  and 02/02/2020, every repo with at least 1 star and any
  commits from the year before the snapshot (02/03/2019 -
  02/02/2020), and every repo with at least 250 stars.
from https://archiveprogram.github.com/#arctic-code-vault

ejones | 15 years ago | on: The secrets of Node's success

Code sharing really only becomes a compelling argument if you're building browser games or something similarly interactive (i.e., really bloody interactive). In this case, you need to run the same logic on the client (to reduce latency) and on the server (to validate and actually update game state).

Otherwise, you really have no excuse for putting logic on the client. Even with something like validation, I think its much more sensible to have your renderers pump out generic validation event handlers than to reconstruct the whole model class on the client.

ejones | 15 years ago | on: LinearML:a programming language designed to write efficient parallel programs.

Indeed. Linear Lisp promises the same thing (http://www.deepdyve.com/lp/association-for-computing-machine...) and perhaps Linear Joy (http://osdir.com/ml/lang.concatenative/2005-10/msg00009.html)...

It seems that when you do that, though, and especially from looking at the tutorial, you end up with semantics that are a) fundamentally different from GC-ed semantics, and b) explicit about memory management. But perhaps it amounts to a kind of type-safe memory management?

page 1