Hacker Newsnew | past | comments | ask | show | jobs | submit | sethcalebweeks's commentslogin

I love the idea! The creativity of (ab)using JavaScript type coersion is really neat. I did something similar using proxies to create a chainable API.

https://dev.to/sethcalebweeks/fluent-api-for-piping-standalo...

  const shuffle = (arr) => arr.sort(() => Math.random() - 0.5);
  const zipWith = (a, b, fn) => a.slice(0, Math.min(a.length, b.length)).map((x, i) => fn(x, b[i]));
  const log = (arr) => {
    console.log(arr);
    return arr;
  };

  const chain = chainWith({shuffle, zipWith, log});

  chain([1, 2, 3, 4, 5, 6, 7, 8, 9])
    .map((i) => i + 10)
    .log() // [ 11, 12, 13, 14, 15, 16, 17, 18, 19 ]
    .shuffle()
    .log() // e.g. [ 16, 15, 11, 19, 12, 13, 18, 14, 17 ]
    .zipWith(["a", "b", "c", "d", "e"], (a, b) => a + b)
    .log() // e.g. [ '16a', '15b', '11c', '19d', '12e' ]
    [0]; // e.g. '16a'


In another comment, I mentioned a vanilla JavaScript function I published in 2024 called Chute. https://github.com/gregabbott/chute

In a similar way to the featured project, Chute also uses proxies to work like a pipeline operator. But like in your reply, Chute uses a dot-notation style to chain and send data through a mix of functions and methods.

You might like to see how Chute uses proxies, as it requires no `chainWith` or similar setup step before use. Without setup, Chute can send data through global or local, top-level or nested, native or custom, unary, curried or non-unary functions and methods. It gives non-unary functions the current data at a specific argument position by using a custom-nameable placeholder variable.

The Chute page describes some more of its features: https://gregabbott.pages.dev/chute/


Location: Syracuse, NY

Remote: Yes (preferred)

Willing to relocate: No

Technologies: React, Vue, Angular, Svelte, Solid, TypeScript, Elixir, OCaml, C#, Blazor, Clojure

Résumé/CV: Senior Software Architect and Engineer with a master's in Computer Engineering and Mechanical Engineering. Founding engineer of a conversational banking startup.

Email: [email protected]


Any tips for an English speaker trying to learn Cebuano? It's demoralizing making an attempt using some online resources, and then finding out that they don't actually say it that way because of regional or even generational differences.


The term "self-hosted" is an interesting choice. It's usually used to describe the compiler of a programming language written in that same programming language. This is an IDE written in JavaScript. Cool project, though!


Keyword lists were certainly confusing as a newcomer. But, FWIW, they existed well before maps. The AST is made up of only tuples and keyword lists on top of atoms and other literals. (Actually, if I'm not mistaken, keyword lists themselves are just lists with tuples of atom/value pairs. If you dig far enough down, it's incredible just how much of the language is built on top of a tiny number of primitives. Almost every bit of syntax you can think of is probably several layers of macros.)


Keyword lists are from Erlang's history really. Erlang didn't have maps or records for a long time and used keyword lists to perform a similar function.


> Actually, if I'm not mistaken, keyword lists themselves are just lists with tuples of atom/value pairs.

You are correct. A keyword list is `[{atom, any}]`.


> I spend that time on more important things, like polish.

Ironic that Lisp is Polish Notation


I migrated from Jekyll to Astro a few weeks ago. It only took me a few hours to replicate the site, more or less. Here's the website and the post about the experience.

https://sethcalebweeks.com/til-astro-2/


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: