HN user

shiny

173 karma
Posts19
Comments80
View on HN

https://lemire.me/blog/2020/12/01/interview-by-adam-gordon-b...

Daniel Lemire details how he was able to massively speed up json parsing by thinking from first principles.

TLDL: he removed all abstractions and coded directly for the hardware.

Great interview. Makes me want to learn assembly programming (perhaps ARM64 since that seems to be the latest hotness thanks to the M1).

I also enjoyed this interview on the upcoming JIT/AOT for the BEAM: https://thinkingelixir.com/podcast-episodes/017-jit-compiler...

Awesome, thanks a ton. Sounds like your lib would be perfect for me. Also, kudos to somehow typing that on your phone.

Looks like I need to incorporate encoders/decoders into my scheme. I might just steal that code outright.

Thanks for the Zapatos rec, that looks perfect.

fyi, my current generic method sigs looks like:

  export const makeRequest = <Name extends keyof Endpoints>(
    _name: Name,
    method: Endpoints[Name]['method'],
    path: Endpoints[Name]['path'],
    props: {
      data: Endpoints[Name]['clientSends'];
      onSuccess: (json: Endpoints[Name]['serverResponds']) => void;
      onError: (json: any) => void;
    }
  ) => { // ...
Dropping all of these typing shenanigans and going back to Elixir/Phoenix is always half-tempting, but I will soldier on for now...

I'm working on a similar thing, tho I don't intend to extract it into a library (yet). I was inspired by Gary Bernhardt's blog post [1] and video [2].

I have an endpoints.ts file, shared between client/server, which has something like:

  export type Endpoints = {
    createProduct: {
      path: '/api/products.json';
      method: 'POST';
      clientSends: { name: string };
      serverResponds: ProductJSON;
    };
  }
The client can do `makeRequest('createProduct', ...)` and the Express server can use `registerEndpoint('createProduct', ...)` which must adhere to the schema defined above.

TypeScript's structural typing helps a lot here.

Of course, I can "lose" typing through things like raw SQL queries (working on a mini db helper library to help with that), but so I'll have to validate that the endpoints return what they say they do through tests (probs using io-ts).

I'm just getting started (coming from Rails). Not sure what the "correct" way to do this is, but my approach works so far. Would also be nice to have a generic way to create REST endpoints for a given resource, but meh.

[1] https://www.executeprogram.com/blog/porting-to-typescript-so...

[2] https://www.youtube.com/watch?v=GrnBXhsr0ng

To anyone just reading comments, this is referring to the old BEAM/C compiler, not the new JIT.

I'm in the same spot. I still use & love Rails, but having adopted TypeScript & VS Code (w/ React) for the front-end, I find myself missing those luxuries when I switch back to Ruby/Rails/Vim.

I'm leaning towards a full TypeScript stack for my next project. The idea of sharing types & code between client & server is incredibly seductive. But there's no Rails for TS/Node, so I know it's going to be a shit show assembling all of my chosen libraries into a cohesive whole.

Although looking at your previous comment, perhaps I should give Kotlin / Ktor a try?

Aside from the standard Rogan / Harris / Ferriss...

The Bike Shed

Developer on Fire

Travel Like a Boss

Invest Like a Boss

Tangentially Speaking

The James Altucher Show

Digital Communion

Another potential concern is that it runs through some good farmland, which CA has some of the best of in the world.

I would love to have an HSR along the coast however. When I was in Taiwan it was amazing being able to get to the bottom of the island in a couple hours.

Man, thank you so much for creating this. You should find some way to monetize it. I thought I had a decent grasp of SQL before, but this is what really helped me grok it ... especially the consistent 'everything is table' lesson.

Oh and I had an idea for practicing deletions/insertions/updates & other behavior that you couldn't do on web: create an Electron app that uses a local db. I'd buy that in a heartbeat.

Man, that keyboard sounds really bad. Can anyone with the new MBP confirm it's as noisy as that video makes it sound, even after you adapt to it? As a Vim user, a noisy keyboard scares the hell out of me.

I'd say: network network network. Meet people that work at companies that might want freelancers.

Or look on remote job boards and email those companies directly. If you're just beginning, be willing to work for a bit less to get your foot in the door.

Yeah, and as a developer it really behooves me to be able to run Xcode and the iOS simulator. Plus every team seems to use Macs nowadays, and it certainly helps to be on the same platform as everybody else.

Finally, I already have a couple apps in the App Store that I'd have to abandon if I switched to something else. So I'm kinda stuck.

the final option has always been and will always been to migrate away

That's why I brought up the accelerating rate of expansion of space ... everything will be moving away from us so quickly that eventually we'll run out of places to migrate to.