Erik Onarheim's Avatar

Erik Onarheim

@erikonarheim.com.bsky.social

Fullstack dev by day ๐Ÿ’ป maintainer of @excaliburjs.com by night โš”๏ธ Co-host of @typescript.fm ๐ŸŽฎ IGDATC Board Member ๐Ÿ•น๏ธ Game dev ๐Ÿ˜ป Cat lover ๐Ÿƒโ€โ™‚๏ธ Distance runner ๐Ÿš€ Math/physics nerd ๐Ÿ‘ถ New dad

91 Followers  |  66 Following  |  36 Posts  |  Joined: 05.05.2024  |  2.0984

Latest posts by erikonarheim.com on Bluesky

This is one of my favorite podcast episodes I've ever been on. I love this conversation and the points covered: linting in 2025, performance vs. devX tradeoffs, and all sorts of interesting dives into architectures.

If you never thought you should care about your linter, this will blow your mind! ๐Ÿง 

07.08.2025 15:04 โ€” ๐Ÿ‘ 14    ๐Ÿ” 3    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 2

Thanks again @joshuakgoldberg.com for all the latest on linters!

07.08.2025 15:01 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
State of TypeScript Linting 2025 | Joshua Goldberg | Ep 29B | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 29 Joshua Goldberg (JoshuaKGoldberg.com), creator of typescript-eslint, joins us to discuss the state of linting TypeScript projects in 2025. Which linters should we pay attention to? Why are there so many?...

Today on the pod: Joshua Goldberg breaks down the latest TypeScript linters, how to pick the right one, and best practices for 2025. #typescript

07.08.2025 14:49 โ€” ๐Ÿ‘ 10    ๐Ÿ” 4    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 1
JavaScript Blazingly FAST! Lessons from a Game Engine - Erik Onarheim - NDC Oslo 2025
YouTube video by NDC Conferences JavaScript Blazingly FAST! Lessons from a Game Engine - Erik Onarheim - NDC Oslo 2025

My NDC Oslo talk is live!!! Let's Make JavaScript BLAZINGLY FAST! Lessons from a Game Engine @excaliburjs.com

www.youtube.com/watch?v=xCB9...

#gamedev #javascript #excaliburjs

06.08.2025 13:11 โ€” ๐Ÿ‘ 9    ๐Ÿ” 3    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
JavaScript Blazingly FAST! Lessons from a Game Engine - Erik Onarheim - NDC Oslo 2025
YouTube video by NDC Conferences JavaScript Blazingly FAST! Lessons from a Game Engine - Erik Onarheim - NDC Oslo 2025

Checkout my buddyโ€™s NDC talk on how to make JavaScript performant!

This is what powers ExcaliburJS as a game engine.

#gamedev #indiedev

youtu.be/xCB9cB9YZL8?...

06.08.2025 11:50 โ€” ๐Ÿ‘ 14    ๐Ÿ” 6    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Thanks, I've been very sleep deprived and that's when the good lines come out lol

06.08.2025 02:01 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Node 22.18 LTS Green Lights TypeScript for Orgs | News | Ep 29 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 29 News of the week of July 28, 2025: TS 5.9 released, Node 22.18 is the first LTS to support TypeScript, a Rust-based alternative to Next.js, plus why Laravel ain't your pappy's PHP. From the community:...

Today on the pod, Node 22.18 LTS brings TypeScript to the masses! TS 5.9, a Rust-based alternative to Next.js, Laravel Wayfinder, and top community picks. Listen: share.transistor.fm/s/5216ca1c #typescript

05.08.2025 20:26 โ€” ๐Ÿ‘ 6    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Did you know you can just say things on the internet? Like "July is National Carpet Cleaning Month"?

Welp worked on me, got my carpets cleaned haha.

05.08.2025 04:12 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I've been trying to give web components a real shot. I used to think the API 100% sucked but I've mostly come around on it. Thinking of them as "enhanced elements" rather than bespoke components has helped make their use-case click (thanks enhance.dev, great resources there @brianleroux.bsky.social)

04.08.2025 15:46 โ€” ๐Ÿ‘ 3    ๐Ÿ” 2    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0

More people should hire Rob tbh

04.08.2025 19:00 โ€” ๐Ÿ‘ 0    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Video thumbnail

Fooled around and made a ExcaliburJS level design tool that uses Excel or Google Sheets to design the level, parses it, and automagically creates your tilemap and entities for you in Excalibur!!!!

#gamedev #indiedev
@excaliburjs.com

02.08.2025 00:55 โ€” ๐Ÿ‘ 14    ๐Ÿ” 5    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I learned a ton from @lirantal.com while recording this episode! Many thanks again for joining us!

31.07.2025 16:36 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Building Secure TypeScript Applications | Liran Tal | Ep 28B | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 28 Liran Tal (lirantal.com) from Snyk joins us to dive deep into writing secure TypeScript applications. What's different compared to vanilla JavaScript security? Will schema validators fix all our woes?...

Liran Tal from Snyk shares how to build secure TypeScript apps, avoid common pitfalls, and not over-trust types or LLMs. Listen: share.transistor.fm/s/c587816d #typescript

31.07.2025 14:49 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@distraction.engineer Howdy! I'm planning on organizing a local get together for LDJAM in October for igdatc.org! Anything we should sign up for/notify/participate in?

30.07.2025 18:22 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Deno Fresh 2.0 Alpha, a BigInt Trick, and Learn TS in One Hour | News | Ep 28 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 28 News of the week of July 21, 2025: Deno Fresh 2.0 is in alpha, TS 5.9 RC has some small changes, and beware the latest eslint-config-prettier supply chain attack. From the community: learn TypeScript...

Today on the pod: Deno Fresh 2.0 alpha, TS 5.9 RC, npm linter attack, learn TS in an hour, generics, DI libs & more! share.transistor.fm/s/857c045a #typescript

29.07.2025 14:53 โ€” ๐Ÿ‘ 3    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I'm very interested, is this similar to the snowflake ids? en.wikipedia.org/wiki/Snowfla...

Looks like the code is private still? github.com/nxjosh/flake...

28.07.2025 02:58 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

My talk titled "Your GPU is a JavaScript Runtime*" just landed on YouTube! ๐Ÿ‘จโ€๐Ÿ’ป

I answer WHY and HOW we compile JS/TS to WGSL, how it improves interop for the whole ecosystem, and the added dimension of customizability it unlocks for WebGPU libraries

Video below โฌ‡๏ธ
#webgpu #typegpu #typescript

24.07.2025 19:46 โ€” ๐Ÿ‘ 7    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

I'm going to guess that the finally doesn't run in the expected order and it's false. Maybe the goto jump is considered "part" of the catch?

25.07.2025 02:01 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Introduction | Fresh docs Fresh is a full stack modern web framework for JavaScript and TypeScript developers, designed to build high-quality, performant, and personalized web applications.

The latest alpha version of fresh can be installed with:

deno -A jsr:@fresh/init@2.0.0-alpha.43

fresh.deno.dev/docs/canary/...

24.07.2025 17:31 โ€” ๐Ÿ‘ 24    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Deno 2.4 Bweets, Next.js Vuln Alert, Modern Node, and Typed Mongo | News | Ep 25 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 25 News of the week of June 30, 2025, Deno Bundle is Back in Black in 2.4! We coin the term "Bweet", Deno also gets some non-standard import attributes for text and bytes, OTEL is now stable in Deno,โ€ฆ

Today on the pod! Deno Bundle is Back in Black in 2.4! We coin the term "Bweet", Deno also gets some non-standard import attributes for text and bytes, OTEL is now stable in Deno, and Next.js has a DoS vulnerability.

Listen: share.transistor.fm/s/cee76c97

09.07.2025 15:45 โ€” ๐Ÿ‘ 3    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
Announcing TypeScript 5.9 Beta - TypeScript Today we are excited to announce the availability of TypeScript 5.9 Beta. To get started using the beta, you can get it through npm with the following command: npm install -D typescript@beta Letโ€™s tak...

TypeScript 5.9 Beta just went out! Try it in your project and let us know what you think:

devblogs.microsoft.com/typescript/a...

08.07.2025 17:46 โ€” ๐Ÿ‘ 96    ๐Ÿ” 22    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 4
Video thumbnail

stylized night sky shader i've been poking at...might be cooking up an actual game project who knows ๐Ÿ™ˆ๐Ÿซฃ #godot #gamedev #indiedev

08.07.2025 06:29 โ€” ๐Ÿ‘ 60    ๐Ÿ” 10    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Preview
ECMAScript 2025 is Ratified, Vite 7, and 6 Advanced TS Tricks | News | Ep 24 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 24 News for the week of June 23, 2025: Ecma ratifies ES2025 standard, Vite 7 is mostly deprecations, Oracle gets a free pass, and the experimental type stripping warning is... stripped... from latest Node...

Today on the pod: ES2025 is ratified, Vite 7 deprecates features, Node LTS updates, plus 6 advanced TypeScript tricks & more. Listen: share.transistor.fm/s/9502cc66 #typescript

01.07.2025 14:53 โ€” ๐Ÿ‘ 5    ๐Ÿ” 2    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

I wrote an update on our JavaScriptโ„ข cancellation effort
deno.com/blog/deno-v-...

#FreeJavaScript

28.06.2025 11:26 โ€” ๐Ÿ‘ 152    ๐Ÿ” 28    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 1
Code Snippet: 

```typescript
const query = new Query({
  // all fields are optional
  components: {
    all: [ComponentA, ComponentB] as const, // important for type safety!
    any: [ComponentC, ComponentD] as const, // important for type safety!
    not: [ComponentE]
  },
  tags: {
    all: ['tagA', 'tagB'],
    any: ['tagC', 'tagD'],
    not: ['tagE']
  }
})
```

Code Snippet: ```typescript const query = new Query({ // all fields are optional components: { all: [ComponentA, ComponentB] as const, // important for type safety! any: [ComponentC, ComponentD] as const, // important for type safety! not: [ComponentE] }, tags: { all: ['tagA', 'tagB'], any: ['tagC', 'tagD'], not: ['tagE'] } }) ```

๐Ÿงฉ New ECS feature to improve Query options just landed in main Excalibur thanks to @mattjennin.gs!

Latest alpha `npm install excalibur@next`

Queries can now take additional options to filter in/out by components or tags! This is huge for our ECS fans out there and a long requested feature!

27.06.2025 13:17 โ€” ๐Ÿ‘ 2    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Code Snippet

```typescript
import { Graph } from 'excalibur';

// Create an empty graph of strings
const graph = new Graph<string>();

// Add a few nodes with string data
const nodeA = graph.addNode("A");
const nodeB = graph.addNode("B");
const nodeC = graph.addNode("C");

// Connect nodes with bidirectional edges (default)
graph.addEdge(nodeA, nodeB);
graph.addEdge(nodeB, nodeC);
graph.addEdge(nodeC, nodeD);
graph.addEdge(nodeD, nodeE);

// Check if nodes are connected
const connected = graph.areNodesConnected(nodeA, nodeB); // true

// Get neighbors of a node
const neighbors = graph.getNeighbors(nodeA); // [nodeB]

// Find shortest path from A to C
const { path, distance } = graph.shortestPathDijkstra(nodeA, nodeC);

const aStarResults = graph.astar(nodeA, nodeB);
```

Code Snippet ```typescript import { Graph } from 'excalibur'; // Create an empty graph of strings const graph = new Graph<string>(); // Add a few nodes with string data const nodeA = graph.addNode("A"); const nodeB = graph.addNode("B"); const nodeC = graph.addNode("C"); // Connect nodes with bidirectional edges (default) graph.addEdge(nodeA, nodeB); graph.addEdge(nodeB, nodeC); graph.addEdge(nodeC, nodeD); graph.addEdge(nodeD, nodeE); // Check if nodes are connected const connected = graph.areNodesConnected(nodeA, nodeB); // true // Get neighbors of a node const neighbors = graph.getNeighbors(nodeA); // [nodeB] // Find shortest path from A to C const { path, distance } = graph.shortestPathDijkstra(nodeA, nodeC); const aStarResults = graph.astar(nodeA, nodeB); ```

๐Ÿ—บ๏ธ New Graph module to do graph data structures and algorithms with built in path finding! Thanks @mookie4242.bsky.social!

Features:

- Nodes with custom data
- Weighted, directed or undirected edges
- Position nodes in 2D space for spatial algorithms
- Built in BFS and DFS
- Path finding!

27.06.2025 13:39 โ€” ๐Ÿ‘ 5    ๐Ÿ” 1    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 1

Everyone will know all the deets soon!

24.06.2025 20:55 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
New Biome, Mocha, Jest, and k6 Releases All Kissed by TypeScript | News | Ep 23 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 23 News for the week of June 16, 2025: Biome v2 features type-aware linting without TSC, Mocha and Jest both get native ESM and TS upgrades, and Grafana Lab's k6 load testing tool... also can now run native...

Biome v2 brings type-aware linting, Mocha & Jest add native ESM/TS, k6 runs TS tests, plus tips on map/index key type safety, import maps & WebGPU. Listen: share.transistor.fm/s/48085fcd #typescript

24.06.2025 14:53 โ€” ๐Ÿ‘ 4    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Community highlights โœจ

- @lirantal.com on securing TS
- @socket.dev post on pnpm's new virtual store
- @nxjosh.bsky.social introduces TypeFire
- @cinny.bun.how shares a JIT schema validation library
- @dr-axel.de releases new ES2025 edition for Exploring JS
- @ycmjason.codes wants #ROLP to trend

17.06.2025 14:53 โ€” ๐Ÿ‘ 5    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Strip Your Own Types, New Rust-based Linter, and #ROLP is Trending | News | Ep 22 | TypeScript.fm - The Friendly Show for TypeScript Developers | Episode 22 News for the week of June 9, 2025: Node's type stripping wrapper is released as a standalone package, VoidZero is building a super fast linter, and pnpm introduces experimental virtual store for speeding...

Today on the pod: Node's type stripping wrapper is now standalone, Oxlint brings Rust speed to TS linting, pnpm gets faster, and more! share.transistor.fm/s/e55fe2aa #typescript

17.06.2025 14:53 โ€” ๐Ÿ‘ 5    ๐Ÿ” 1    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

@erikonarheim.com is following 20 prominent accounts