Jesse Harlin PRO
I am a developer, musician and usergroup leader living and working in Oklahoma, US.
+
- runs a shop
- programmer 20+ years
- makes music / art / games
- <3's Ada, Dorian, Amanda
- eats his vegetables.
the-simian
( ↑ new track! ↑)
One
Codebase
For decades, developers have heard the call of madness.....
Less surface area
Improved Velocity
Better DX
Higher Quality
"Full Stack Developers"
THE DREAM
Bones of the past
Decades of trial and error...
But maybe?
Monorepos
Transpilation
ORMS
DSLs..
We can try... again...
A Product Owner Appears
Hey, I need a website
And uh, mobile app...
And I need a consistent style system
And I need it to integrate with other companies systems
Oh right, and there's gonna be like real time communication
And search.
Suddenly....
And there's more than on kind of user...
(Roar !!)
And be fassst!! (ROAR)!
And. AI.
And one small team will do it all.
Lots of AI. I think.
One
Codebase
Creation Is An Act Of Sheer Will!
This Time It'll Be Flawless!
We'll need the....
B E A S T' S D N A
B
Ok, lets break it down, what we both want...
is...
One Team. One Codebase.
E
A
S
T
'S
D
N
A
B
E
A
S
T
'S
D
N
A
is for
T
TypeScript
( Foundation )
(late 90s)
(2010s -2015)
(2015)
(~2012)
(2012)
(2016-2025)
(2017-18)
☠️ LiveScript [1995]
Briefly the name for JavaScript before it was rebranded.
Extinction: Quickly replaced by “JavaScript” in late 1995.
☠️ Flash (ActionScript) [1996–2020]
Powered interactive web animations and games.
Extinction: Ended by Adobe in 2020; browsers dropped support.
☠️ VBScript (for Web) [1996–~2010s]
Microsoft’s scripting for Internet Explorer.
Extinction: Never widely supported; died with IE’s decline.
☠️ GWT (Google Web Toolkit) [2006–~2015]
Compiled Java to JavaScript for enterprise apps.
Extinction: Overshadowed by React/Angular.
☠️ CoffeeScript [2009–2015]
Influenced many ES6 features (e.g., arrow functions).
Extinction: ES6 adoption replaced its core benefits.
🧟 Dart (Early Versions) [2011–2018]
Google’s “JS replacement,” now mainly for Flutter.
"Un-deadness": Modern Dart thrives; the browser-replacement vision faded.
☠️ PogoScript [2012–2015]
Tiny compile-to-JS language.
Extinction: Never gained traction; final commits years ago.
🧟 TypeScript v1 [2012–2015]
Early typed JS from Microsoft.
"Un-deadness": Paved the way for today’s popular TS.
🧟 ArnoldC [2014–Present?]
Esoteric language using Arnold quotes as keywords.
"Un-deadness": Pure novelty; still amuses devs occasionally.
Haxe
Clever, but....
Clever isn't always the most surviveable
GOAL:
Less Moving Parts
Offset Speed Cost of Transpilation
Plz, No Monorepos
B
E
A
S
T
'S
D
N
A
is for
B
Bun
Biome
and
Our scientists have done things which nobody's ever done before...
– Next and Remix
(describing their routers and DX)
B
E
A
S
T
'S
D
N
A
is for
E
Expo
( rowr ~! )
Our scientists have done things which nobody's ever done before...
– Tailwind and Shad CN Enjoyers
(describing their components and DX)
But why?
B
E
A
S
T
'S
D
N
A
is for
N
Nativewind
React Native Reuseables
Create Expo Stack
React Native Reanimated
B
E
A
S
T
'S
D
N
A
is for
S
Storybook
90s-2000s
Used Pojo objects; minimized direct SQL
mid 00s
Convention over configuration
'Model' in MVC
05-08
It was basically Hibernate but worse. Also super XML heavy.
07-07
Like Hibernate. Used Pojo, heavily abstracted SQL. needed tools like nHibernate profiler to use effectively
07-2010
scaffolding/microorm
Focused more on scaffolding. all this is C#-land
"less abstraction"
2015ish
Extinct, and misguided approaches to a GQL based ORM
2017
Rose from the ashes of Graphcool, a modern ORM, used DSL for defining Models, and transpilation to make a client
Listen.
I need More *and less*
SQL
in the same way that
I need More *and less*
Dinosaurs
B
E
A
S
T
'S
D
N
A
is for
D
Drizzle
Drizzlesaurus
(not you)
(thanks AI)
RAWR?
B
E
A
S
T
'S
D
N
A
is for
S
SST
( the second )
And. AI.
Lots of AI. I think.
We have....
at home
(not you)
B
E
A
S
T
'S
D
N
A
is for
A
Apollo
Graphql Codegen
But... Graphql ?
Yes. GQL Still slaps in 2025.
Makes Schema the 'rosetta stone' for types; truth
B
E
A
S
T
'S
D
N
A
is for
A
Access Control
( the second )
import { Ability, AbilityBuilder } from '@casl/ability';
// define abilities
const { can, cannot, rules } = new AbilityBuilder();
can('read', ['Post', 'Comment']);
can('manage', 'Post', { author: 'me' });
can('create', 'Comment');
// check abilities
const ability = new Ability(rules);
ability.can('read', 'Post') // true
Putting it Together in a
A New Frontend Component
Putting it Together in a
Backend Feature
with RTC
YES
BUT
+
Your app will run fast
Your build will run slow
Metro: it ain't Vite 😭
Direct communication between JavaScript and native code reduces latency and improves performance, making your app feel faster and more responsive.
YES
BUT
+
You get to use React
You don't get every last new feature (yet)
"Spared No Expense! "
"React! Our Lives Are In Your Hands, And You Have Butterfingers? "
YES
BUT
+
You get to use CSS
You don't get all of the CSS
"We have CSS at home 😿"
"Just swap the <div>'s for <Views> Bruh"
YES
BUT
+
You can use React Compiler
(now!)
Its moderately cursed.
web: {
bundler: 'metro',
output: 'single',
},
experiments: {
typedRoutes: true,
reactCompiler: true,
},
(not the compiler's fault tho...)
still worth it?
B
E
A
S
T
'S
D
N
A
Despite the tradeoffs, is the
(it depends)
B
E
A
S
T
'S
D
N
A
You will accept a more challenging web dx for an improved mobile dx
You will enjoy a lower code surface area, in exchange for some build complexity
You will enjoy a more consistent, but more limited component model
You will get the flexibility of AWS, in exchange for less white-glove DX
You will get the utility of SQL and Postgres, but its a bit off-flavor
You will still get new features; but often in a spartan state initially.
Code 'compartmentalization' is harder; but we're not here for microservices
A smaller team can do more but the individual members need more experience.
You will accept more product QA-per-feature in exchange for cross-cutting velocity.
the-simian
info@simiancraft.com
the-simian.bsky.social
By Jesse Harlin
I am a developer, musician and usergroup leader living and working in Oklahoma, US.