Sign in

Johannes Schickling

@schickling.dev
4.5K followers 278 following 432 posts

Building a local-first music app overtone.pro with @livestore.dev. Host @localfirst.fm. DX Effect. Founded @prisma.io. schickling.dev

PostsRepliesMedia
Johannes Schickling @schickling.dev · 01/08/2026
I've been using my custom CRM for a few months now, and it's been working really well for me. The key unlock is to let agents automatically maintain, so data never goes stale again.
110
Johannes Schickling @schickling.dev · 01/08/2026
I finally built my own self-driving, personal CRM. After many failed attempts and trying a lot different tools/products, I finally ended up with a system/approach I like built on top of Notion. The best part: It auto-updates, so data never goes stale.
160
Johannes Schickling @schickling.dev · 08/10/2025
Heading to ViteConf in Amsterdam where I'll speak about "Building native-grade web apps with synced data". If you're there, come and say hi!✌️
0221
Johannes Schickling @schickling.dev · 29/05/2025
Very excited to announce that I'll partner with @redwoodjs.com over the coming months to improve Cloudflare worker support for @livestore.dev
2374
Johannes Schickling @schickling.dev · 21/05/2025
Very excited for next week!
2290
Johannes Schickling @schickling.dev · 01/05/2025
I didn't not expect that building the devtools messaging protocol for @livestore.dev would turn out to be one of the most difficult parts to build. In order to support reliable and efficient messaging (supporting transferables), I ended up building a local networking protocol called "Webmesh".
1131
Johannes Schickling @schickling.dev · 14/04/2025
Event-driven design is highly underutilized. It's the right architectural approach for many systems and applications but often it's too inconvenient to do. I'm trying to fix that with @livestoredev by making the right thing easy.
2403
Johannes Schickling @schickling.dev · 11/04/2025
I'm really happy with my M1 Max (32gb RAM) overall but man, Cursor is so memory hungry...
5130
Johannes Schickling @schickling.dev · 09/04/2025
Once you hit an a `shouldNeverHappen`, you automatically can debug interactively.
0110
Johannes Schickling @schickling.dev · 09/04/2025
I highly recommend using a helper function like `shouldNeverHappen` instead of throwing errors directly in your code (only applies to defects/panics). It's an easy way to make your code more readable and improve DX by automatically opening the debugger during dev.
6356
Johannes Schickling @schickling.dev · 05/04/2025
Highly recommend checking out this talk by John De Goes from last years Effect conference. www.youtube.com/watch?v=Ei6V...
041
Johannes Schickling @schickling.dev · 01/04/2025
I'm very excited to announce that I'll be speaking at @viteconf.org about building native-grade web apps with local-first data. I'll share lessons learned and what it takes to build high-performance web apps from working on Overtone over the past 4 years.
1183
Johannes Schickling @schickling.dev · 26/03/2025
Cursor/VSCode tip: I just changed the default view mode to "tree" for VSC/Cursor search results / source control items. (Should have done this years ago.)
1161
Johannes Schickling @schickling.dev · 18/01/2025
That's where @effect-ts.bsky.social shines. I'm using it for this particular use case extensively in various projects where the same code is used across web/node/service workers. Even natively supports transferable objects (i.e. moving memory instead of copying). Here is an example schema:
191
Johannes Schickling @schickling.dev · 16/01/2025
Increasingly impressed how Cursor/AI isn't just making me more productive but helps resolve non-trivial bugs with ease. Yesterday, I was facing a gnarly memory corruption bug in a SQLite WASM build. Cursor with GPT4o one-shotted the solution.
1140
Johannes Schickling @schickling.dev · 15/01/2025
If it's consoling for you, my day has mostly involved nested pointers in the SQLite C/WASM binding and starring at binary buffers. Also: Cursor helped me to write a lot of C code which was really fun actually.
110
Johannes Schickling @schickling.dev · 04/01/2025
I rarely use Blender myself but I greatly appreciate the colossal and continuous effort to develop it as free software. The world needs more of this!
010
Johannes Schickling @schickling.dev · 17/12/2024
TIL (and painful reminder): You need to close WebSocket connections with a code for a Node process/thread to properly exit.
2190
Johannes Schickling @schickling.dev · 08/12/2024
Combined with automatic Otel tracing this is a real cheat code. Love it when tooling "just works".
060
Johannes Schickling @schickling.dev · 08/12/2024
Gave property based testing a first try today. Absolutely magical in combination with Effect Schema. Bonus: The Effect vitest integration provides fast-check support out of the box.
2171
Johannes Schickling @schickling.dev · 24/10/2024
It’s very hard to build reliable offline support for products that are not architected local-first. Very excited to see this effort. 🙌
000
Johannes Schickling @schickling.dev · 17/10/2024
I'm wearing it as a badge of honor! 🎖️ www.youtube.com/watch?v=qHSI5rxTp_Q…
000
Johannes Schickling @schickling.dev · 17/10/2024
It's so over
110
Johannes Schickling @schickling.dev · 08/09/2024
git as app sync engine While thinking more about app syncing it occurred to me that git, the sync engine we use on a daily basis could also be used as a data sync system for some "small apps". I want to explore this idea for @livestoredev to sync the eventlog via git.
000
Johannes Schickling @schickling.dev · 06/09/2024
Happy Bandcamp Friday to anyone who celebrates 🎧
100
Johannes Schickling @schickling.dev · 03/09/2024
Link to blog post and classification table: mattweidner.com/2024/06/04/server-a…
000
Johannes Schickling @schickling.dev · 27/08/2024
Of CORS this API doesn't set the right headers... 🤦
000
Johannes Schickling @schickling.dev · 25/08/2024
Much better already.
100
Johannes Schickling @schickling.dev · 25/08/2024
Goal for the day: Speed up Overtone boot time by starting web workers concurrently.
100
Johannes Schickling @schickling.dev · 23/08/2024
I'm relying a lot on local app-specific metrics to build @overtone_app which helps me understand what's happening. Here for example I'm seeing that while interacting with the Spotify API, I've hit the rate limit. Instead of having to dig through dozens API requests in the…
000
Johannes Schickling @schickling.dev · 21/08/2024
Most apps should use a sync engine instead of doing RPC. It's more clear to me now than ever before: This will become the new default for future app development. Gets rid of massive amounts of complexity and empowers frontend developers. @linear is a great example of this.
000
Johannes Schickling @schickling.dev · 10/08/2024
Working on simplifying the app data layer with @livestoredev. Having a database on the client you can trust removes >90% of the complexity of most apps with over-complicated API layers.
000
Johannes Schickling @schickling.dev · 07/08/2024
Very excited for next week's @localfirstfm episode with @Mappletons 😊 We've talked about home cooked software, the idea of barefoot developers and how AI complements local-first in making end-user programming a reality. Subscribe if you haven't yet! ✔︎
000
Johannes Schickling @schickling.dev · 26/06/2024
Phew. Glad I didn’t give in to the urge to build my own presentation tool on top of Figma. Finally! 😅 twitter.com/schickling/status/17953…
000
Johannes Schickling @schickling.dev · 17/06/2024
Poor man's dark mode 🤷
000
Johannes Schickling @schickling.dev · 12/06/2024
What's harder than "offline-support"? Making sure that apps work well in bad network conditions. I'm using an old school app called "Network Link Conditioner" (which ships as a macOS settings tab) to test and harden my tools and apps for bad connectivity.
100
Johannes Schickling @schickling.dev · 10/06/2024
Hard to beat the feeling when reaching 0 TypeScript errors after a massive refactor. 😌 @EffectTS_ giving me the confidence that when it compiles, it works. ✅
000
Johannes Schickling @schickling.dev · 28/05/2024
My current workaround:
000
Johannes Schickling @schickling.dev · 14/05/2024
Just recorded this little performance demo of @overtone_app while working on my talk for @localfirstconf. Near-zero query latency enables a magical UX.
000
Johannes Schickling @schickling.dev · 13/05/2024
Shipping self-updating PWAs with Vite has never been easier. 🔥
100
Johannes Schickling @schickling.dev · 01/04/2024
TFW you're building another query builder
000
Johannes Schickling @schickling.dev · 22/03/2024
One of many reasons why apps like Notion should be completely local-first.
100
Johannes Schickling @schickling.dev · 08/03/2024
One of the local-first killer features is automatic data syncing. Similarly how React freed developers from manual view rendering/maintenance, local-first sync engines free developers from manually fetching and pushing data. This unlocks global reactive data.
000
Johannes Schickling @schickling.dev · 04/03/2024
Really excited about an upcoming @localfirstfm episode with @rsms. Going deep on various topics including software quality, data model tradeoffs & more.
000
Johannes Schickling @schickling.dev · 23/02/2024
000
Johannes Schickling @schickling.dev · 23/02/2024
100
Johannes Schickling @schickling.dev · 23/02/2024
So excited to have @jdegoes at Effect Days in Vienna sharing how ZIO has inspired Effect.
100
Johannes Schickling @schickling.dev · 15/02/2024
Will I go to React jail for this?
000
Johannes Schickling @schickling.dev · 26/01/2024
This week in a nutshell...
000
Johannes Schickling @schickling.dev · 29/12/2023
👋 @GitHubNext Copilot keeps dragging down performance in VSC for me making it by far the slowest extension (of the 86) I've installed.
000