HN user

clessg

6,375 karma

Full-stack engineer in Moncton, Canada. Focused primarily on Elixir/Phoenix/LiveView nowadays. Also JavaScript/TypeScript, React, Svelte, Go, Postgres, MySQL, and PHP. Dabble in Rust and Zig sometimes (but never for anything serious, of course).

Contact: chris <at> crystala <dot> io

Posts427
Comments218
View on HN
phaser.io 3mo ago

Phaser 4

clessg
6pts0
github.com 4mo ago

QuickBEAM: JavaScript Runtime for the BEAM VM

clessg
1pts0
kaplayjs.com 8mo ago

Kaplay.js: The fun and open source game library for HTML5 Games

clessg
3pts0
elixir-language-tour.swmansion.com 9mo ago

Elixir Language Tour

clessg
2pts0
yukipixels.itch.io 10mo ago

BoldPixels: A free pixel art font

clessg
3pts0
www.phoenixframework.org 11mo ago

Phoenix LiveView 1.1 Released

clessg
15pts2
www.bbc.com 1y ago

Mexican Navy Ship Crashes into New York City's Brooklyn Bridge

clessg
13pts0
popcorn.swmansion.com 1y ago

Popcorn: Run Elixir in WASM

clessg
145pts27
en.wikipedia.org 1y ago

Trinitite

clessg
7pts0
www.nytimes.com 1y ago

Tracking the Ancestry of Corn Back 9k Years (2010)

clessg
2pts0
fly.io 1y ago

AI GPU Clusters, from Your Laptop, with Livebook

clessg
62pts1
911realtime.org 1y ago

9/11 in Realtime

clessg
61pts12
dockyard.com 1y ago

LiveView Native Is Here

clessg
4pts0
www.cbsnews.com 1y ago

Boeing Starliner, leaving its crew behind, lands in New Mexico

clessg
80pts75
blog.appsignal.com 1y ago

Scaling Your Phoenix App in Elixir with Flame

clessg
4pts1
www.tubefilter.com 2y ago

In lawsuit, Logan Paul argues Coffeezilla defamed him with CryptoZoo criticism

clessg
1pts1
tylerbarker.com 2y ago

LiveView Is Not a Zero-JS Framework, It's a Zero-Boring-JS Framework

clessg
3pts0
elixir-lang.org 2y ago

Elixir 1.17 released: set-theoretic types in patterns, durations, OTP 27

clessg
495pts163
notes.eatonphil.com 2y ago

Implementing MVCC and major SQL transaction isolation levels

clessg
3pts0
dashbit.co 2y ago

Web apps have client and server state

clessg
8pts0
dashbit.co 2y ago

Elixir and Machine Learning in 2024 so far: MLIR, Arrow, structured LLM, etc.

clessg
260pts63
meijer.ws 2y ago

Improve your Dev Stack with process-compose

clessg
1pts0
hexdocs.pm 2y ago

Experimental gradual set-theoretic types in Elixir

clessg
4pts0
twitter.com 2y ago

Elixir 1.17 type inference of struct and map fields

clessg
6pts0
blog.brettbeatty.com 2y ago

Match Operator Guards in Elixir

clessg
3pts0
blog.vjeux.com 2y ago

Pokemon Red/Blue Map

clessg
4pts0
elixir-lang.org 2y ago

Elixir v1.16 Released

clessg
12pts4
blog.appsignal.com 2y ago

What's New in Elixir 1.16

clessg
2pts0
hexdocs.pm 2y ago

Burrito: Cross-platform, single-binary Elixir deployments

clessg
2pts0
www.youtube.com 2y ago

The Oldest Voices We Can Still Hear [video]

clessg
2pts0

Today, everyone's dad work at Nintendo. ¯\_(ツ)_/¯

I just so happen to run an old online fan made Pokemon game where people can be banned for misbehavior (e.g. cheating). Let's just say I can confirm this sentiment.

Inspectors General have a special provision in the law regarding removal or relocation:

The removal procedure for presidentially appointed IGs is found in Title 5, Section 403(b), which reads in part An Inspector General may be removed from office by the President. If an Inspector General is removed from office or is transferred to another position or location within an establishment, the President shall communicate in writing the substantive rationale, including detailed and case-specific reasons for any such removal or transfer to both Houses of Congress (including the appropriate congressional committees), not later than 30 days before the removal or transfer. Nothing in this subsection shall prohibit a personnel action otherwise authorized by law, other than transfer or removal.

So it's illegal because he didn't notify Congress in advance. That statute was enacted in 2022 specifically to prevent abuses of power such as this.

But at that mechanistic level, so does the President. He isn’t personally escorting her out of the office.

Fair enough, I strongly hope a good number of folks within the government show a backbone and resist unlawful or abusive orders however they can. Unfortunately those same people can easily be fired and replaced with somebody appropriately loyal (as is already happening). So, unfortunately, I'm not terribly optimistic.

Popular backlash seems to be fairly effective so far at least, so there is some hope. (For example the federal funding freeze which ended almost immediately after a flurry of confusion and outrage. Allegedly ended, anyway - it's not exactly clear in reality.)

Correct me if I'm wrong, but aren't the courts essentially powerless to enforce? If memory serves, the judicial branch merely interprets the law and Constitution, but they lack an enforcement mechanism - it is up to the Executive Branch (the president) to administer and enforce the law. If they decide they don't feel like listening to the courts, it's unclear anybody could actually do anything. (Other than impeachment perhaps? But of course that isn't going to happen anytime soon.)

Besides, even if they did have the power to enforce the law, I can't say I exactly trust the Supreme Court to even try reining in Trump (except in minor ways) based on their recent track record. But who knows.

Svelte 5 Released 2 years ago

Exciting, I love Svelte! Does anybody have experience with both Vue and Svelte? It's been a while since I used Vue but it seems like both frameworks have converged quite a bit over the years. With this release I'm particularly curious now: why would somebody pick one over the other?

I'd normally never say something like this, but: seek therapy, man. Seriously. This is not normal. It will end badly for so many people, including yourself. It may not be too late.

Yeah, the LSP situation remains a sore point, which is deeply unfortunate. One of the big reasons I like Gleam! Luckily, there are new contenders popping up to hopefully solve the issues with elixir-ls: try https://github.com/elixir-tools/next-ls or https://github.com/lexical-lsp/lexical. They might give a better experience. In fact, the creator of Elixir recently started directly sponsoring next-ls, so it's probably a safe enough bet.

By the way, the official Elixir website recommends using Homebrew to install it. But almost everyone in the Github issues and comments says ASDF is the way to go.

The Elixir website is right. Just use Homebrew until you find a real need for asdf or similar tools. It's far simpler.

asdf (or mise[0]) is merely a way to manage different runtime versions between various projects, you would use it the same way as one might use rbenv/rvm, nvm/n, pyenv, or even Docker/nix, and so on. You don't need it until you have several ongoing projects requiring different runtime versions. If you reach that point, great! It'll be worth the effort then, and it isn't difficult.

Personally, I just use Homebrew Elixir for easy ad-hoc access to iex/livebook. If I truly need reproducible environments, devbox[1] (a sort of nix wrapper) is nice and extremely straightforward.

Tl;dr: Just use Homebrew. If your requirements expand beyond that, you probably have far more challenging problems than installing asdf (or whatever).

[0] https://mise.jdx.dev/dev-tools/comparison-to-asdf.html

[1] https://www.jetify.com/devbox

I assume they mean Python doesn't do so by default (nor in a lightweight fashion). You can certainly use all cores with any programming runtime if you just run multiple OS processes. Indeed, that's how you implement multi-core on Ruby and Node as well. Although even then, the cores themselves aren't necessarily being fully utilized, even if you're ostensibly using all cores.

We appreciate your insightful comment about the benefits of HTTP ETag. It's indeed a powerful mechanism for optimizing web performance and reducing bandwidth usage. Thank you for sharing your expertise on this topic!

That's because it isn't really generating a weak ETag. From the article:

You could make the `calculateETag` function format-agnostic, so the hash stays the same if the JSON format changes but the content does not. The current `calculateETag` implementation is susceptible to format changes, and I kept it that way to keep the code shorter.

They seem to agree, a true weak ETag implementation would probably be trickier and require more code :P I'd be fascinated to see how that might work in practice, though.

WhatsApp Outage 2 years ago

I was about to say something nearly identical to this, but couldn't have put it better than you did! In this specific scenario, I think the joke was in good taste and might even spawn some serious discussion and questioning (as seems to be the case already).

In fact, I came to this thread wondering if such a comment (about Erlang) would be made, and I was not disappointed. I am an Elixir (/Erlang/Gleam/BEAM/OTP) fanboy and WhatsApp is basically the canonical example of OTP's strengths, so perhaps I should be outraged! But I am not, and that says a lot about the quality of the joke (it's not a "Reddit-style" joke - it actually makes one think). It's fun and enlightening to consider the ways in which Erlang's reliability guarantees can be hamstrung by (presumably) external factors such as DNS/hardware/BGP, and a good reminder that things are messier than just which language or platform one chooses.

Anyway, yes. I would distinguish between enlightening jokes that arouse curiosity, and Reddit-style low-quality "humor" and trolling.

Gnome 45 3 years ago

I will never use it again.

Use it again! It's much better now. I promise. Not perfect, but pretty nice. Cohesive integration could be better, but it's getting there. I swear.

(Been on Unix ~18 years, whatever "Unix" even means nowadays, or Windows for a decisive portion of my adolescence, and occasionally beyond... unfortunately.)

Go, Gnome!

Svelte 5: Runes 3 years ago

Principle of charity, perhaps they're just referring to how much easier & ergonomic it's becoming over time! ;)

A little off-topic, but how are Godot web/HTML5 exports nowadays (if anybody has recent experience)? I recall having quite a number of issues with them in earlier versions of Godot 4. Fingers crossed, Godot looks really nice!

As a Canadian, trying to wrap my head around this whole kerfuffle reminds me of an old South Park episode (https://www.youtube.com/watch?v=JeWn3Sso2RE). Naturally. Slightly abbreviated:

So... What exactly does Canada want?

We want ... more ... moneh.

[dramatic pause]

Yeah, more moneh!

More money from where?

How-how 'bout the Internet! The internet makes lots of moneh. So give us some of that moneh!

Yeah, give us internet moneh!

One small note: It looks like the 'Mix standalone' runtime option was removed late last year. Instead, you can use `Mix.install/2` pointing to your project directory:

  Mix.install(
    [
      {:my_app, path: Path.join(__DIR__, ".."), env: :dev}
    ],
    config_path: :my_app,
    lockfile: :my_app
  )
(The above snippet assumes a notebook located within a `notebooks/` directory, as per the article.)

Alternatively, you can connect to a running instance, e.g. a Phoenix project:

  $ elixir --sname my-app --cookie cookie -S mix phx.server
  $ LIVEBOOK_DEFAULT_RUNTIME=attached:my-app:cookie livebook server
Godot 4.1 3 years ago

I haven't seen it mentioned yet, so does anybody have experience comparing Phaser with Godot (for 2d games)?

I love the "enshittification" moniker that's been going around lately. I feel it nicely encapsulates the nature of what's been happening the last few years in particular. I wonder who coined the term? I don't recall seeing it used until pretty recently. Taking a quick glance, it seems like it might've been this article? https://www.wired.com/story/tiktok-platforms-cory-doctorow/

I sure do yearn for the days of "Extinguish" though, it seems wondrous compared to what's happening nowadays. At least if they extinguished their platforms, many others would jump in to fill the void left behind, and hopefully do a better job at it. Better yet, the world will ~~objectively~~ arguably be better off! Thanks for taking one for the team, Tumblr.

Thanks for that, that was a lot more informative on the specs (minus the usual marketing fluff, but hey!). Here are some key details that were missing from the original article:

a powerful 8-core CPU with four performance cores and four efficiency cores

a 10-core GPU

a 16-core Neural Engine

M2 delivers 100GB/s of memory bandwidth and supports up to 24GB of fast unified memory (pretty sure the base is 8GB, but it doesn't explicitly say)

up to a 6K external display (via the Thunderbolt ports, no mention of 2+ externals afaict)

a 3.5mm headphone jack

up to 500 nits of brightness and support for 1 billion colors

I'm still running a 2020 M1 MBP and this looks pretty similar, so I'm considering making the jump. Am I missing anything important? I mostly like my current MBP but I would really appreciate a larger screen and actual function keys, ideally without shelling out $3k+. Any ideas what I would gain or lose by making the switch? Are there better options?

but it also removes the case of hacking up something in 10 days and suffering the consequences for the next 30 years

Ha, I thought this sounded distressingly familiar!

"In September 1995, a Netscape programmer named Brandan Eich developed a new scripting language in just 10 days. It was originally named Mocha, but quickly became known as LiveScript and, later, JavaScript."