Sign in

Kaspars Dancis

@k7d.dev
82 followers 124 following 40 posts

Founder & CEO @whimsical.com

PostsRepliesMedia
Reposted by Kaspars Dancis
Whimsical @whimsical.com · 14/05/2026
One cool use case we're seeing with our MCP and ChatGPT app: photograph a flowchart or sketch, get a Whimsical diagram back. Editable, shareable, done. Works with sticky notes too 😉
012
Reposted by Kaspars Dancis
Whimsical @whimsical.com · 12/05/2026
Linux friends, you've waited long enough. 🐧 The Whimsical desktop app is now available on Linux. One less reason to keep your browser open. Download it here: whimsical.com/download
031
Kaspars Dancis @k7d.dev · 28/04/2026
Introducing the most powerful whiteboarding capabilities available in ChatGPT: read, create and edit diagrams and wireframes, all without leaving the conversation
000
Kaspars Dancis @k7d.dev · 31/03/2026
Guess who's back
020
Kaspars Dancis @k7d.dev · 19/06/2025
applet.dev
111
Kaspars Dancis @k7d.dev · 15/02/2025
Did LinkedIn just discover multiverse?
030
Kaspars Dancis @k7d.dev · 14/02/2025
010
Kaspars Dancis @k7d.dev · 20/12/2024
Yeap, thinking of trying Drizzle for my next experiment. I'm still not sold on `undefined` though, property not existing and property existing with undefined value is not exactly the same things. I also managed to actually get bitten by this behavior.
100
Kaspars Dancis @k7d.dev · 20/12/2024
I still ended up resorting to raw SQL for bunch of queries and schema updates because of limited SQL support. Prisma's client generation in node_modules is opaque and causes pain with deployment. And as I just learned, despite all the typing, it can still be unsafe.
000
Kaspars Dancis @k7d.dev · 20/12/2024
I've stayed away from ORMs for more than a decade but figured I'll give it a try to see if things have improved. I do appreciate the benefit of typed models, schema management and ease of use for common-case retrievals. Yet..
100
Kaspars Dancis @k7d.dev · 20/12/2024
In Prisma ORM, if some query parameter is accidentally `undefined` rather than `null`, it will be ignored, resulting in a query that returns all records. If this param is something like `userId` you can imagine the consequences.. 🤦🏻‍♂️
220
Kaspars Dancis @k7d.dev · 13/12/2024
No.
100
Kaspars Dancis @k7d.dev · 12/12/2024
The taste factor in programming is seriously underrated
201
Kaspars Dancis @k7d.dev · 11/12/2024
Adding pointer cursor to all my native app buttons like a pirate
000
Kaspars Dancis @k7d.dev · 11/12/2024
Here we go
000
Kaspars Dancis @k7d.dev · 11/12/2024
Spicy take: the trend against pointer cursor for buttons to make web-apps feel "more native" is harmful. Sure, originally the semantic meaning for pointer cursor was "link" but for average person it has long evolved into "something clickable".
010
Kaspars Dancis @k7d.dev · 10/12/2024
100
Kaspars Dancis @k7d.dev · 10/12/2024
Views in SwiftUI are objects, aren't they?
200
Kaspars Dancis @k7d.dev · 10/12/2024
For comparison, same code in SwiftUI. It's also OOP-ish, however the combo of language features and framework design achieves a better result. The logic is more logically grouped and much easier to read: gist.github.com/k7d/81109aa0...
100
Kaspars Dancis @k7d.dev · 10/12/2024
My biggest gripe with Flutter is the verbosity, which makes it hard for humans to read. This seems mostly due to Dart limitations (cost of syntax simplicity I guess) although OOP-based frameworks in general tend to have this challenge. Here's a typical example: gist.github.com/k7d/b1de9b96...
200
Kaspars Dancis @k7d.dev · 09/12/2024
For a contrast, I also tried rewriting Tomo in SwiftUI, but ended up stuck, because SwiftUI expects apps to follow specific UI patterns, and I couldn't figure out how to step outside those boundaries. Paradoxically, it was much easier to do in Flutter because it is using the older Cocoa framework.
000
Kaspars Dancis @k7d.dev · 09/12/2024
Overall, it ended up being a success. While Dart, the language, is not my cup of tea, Flutter turned out to be surprisingly robust. You can find the source code for Tomo here: github.com/k7d/tomo
github.com
GitHub - k7d/tomo: Tomo is a desktop timer app, primarily intended for the Pomodoro technique.
Tomo is a desktop timer app, primarily intended for the Pomodoro technique. - k7d/tomo
100
Kaspars Dancis @k7d.dev · 09/12/2024
This summer, while on a sabbatical, I wanted to explore the state-of-the-art of building native apps and Flutter in particular piqued my interest. While it was originally designed for mobile, the desktop support seemed quite solid by now. Anyway, I figured why not try to rewrite Tomo in Flutter?
100
Kaspars Dancis @k7d.dev · 09/12/2024
Originally I wrote it in ClojureScript, wrapped in the native webview with a custom bridge. While it worked fine, there were some odd performance issues with webview that only surfaced after a few days of usage. I never managed to get to the bottom of it.
100
Kaspars Dancis @k7d.dev · 09/12/2024
I stumbled upon the Pomodoro technique after a concussion, that forced me to take frequent breaks from the screen. While there were several Pomodoro apps available, all of them had some UX issues I no longer remember. Which led me to building Tomo.
100
Kaspars Dancis @k7d.dev · 09/12/2024
I'm open-sourcing Tomo, a Pomodoro timer app for macOS that I've been using daily for a decade. k7d.dev/tomo/
Tomo - a Pomodoro timer for macOS
162
Kaspars Dancis @k7d.dev · 07/12/2024
Had this exact feeling after moving back to Europe
000
Kaspars Dancis @k7d.dev · 06/12/2024
Fun fact, that’s about the total length of all Seinfeld episodes
000
Kaspars Dancis @k7d.dev · 06/12/2024
What
120
Kaspars Dancis @k7d.dev · 06/12/2024
Been thinking about this a bunch. Something like this might work well enough using file-only sync tonsky.me/blog/crdt-fi...
000
Kaspars Dancis @k7d.dev · 30/11/2024
Self-deprecating? :)
010
Kaspars Dancis @k7d.dev · 28/11/2024
Does this whole left/right coded model even makes sense any more? I'm increasingly convinced that it has become a tool for easily manipulating people into beliefs without much criticial thinking involved.
120
Kaspars Dancis @k7d.dev · 28/11/2024
I would go as far as say that good error messages are more important than good documentation. Unfortunately poor error messages are more common than poor documentation. I guess because it's less obvious.
010
Kaspars Dancis @k7d.dev · 28/11/2024
Been pondering about this exact switch. Ender 3 can be so fricking annoying
110
Kaspars Dancis @k7d.dev · 26/11/2024
Yes, unfortunately
000
Kaspars Dancis @k7d.dev · 26/11/2024
Spent the whole day just to get a simple JavaScript app with Postgres DB working on Google Cloud. I guess it's a skill issue but damn... no wonder @vercel.com & co can be such thriving businesses.
110
Kaspars Dancis @k7d.dev · 23/11/2024
💯 filename as code is just not a good idea
110
Kaspars Dancis @k7d.dev · 15/11/2024
Tā ir, bet Bluesky ir fundamentāli atšķirīgs no visiem pārējiem ar to ka tas ir protokola līmenī atvērts un decentralizēts (līdzīgi kā epasts), kas nozīmē ka ir daudz mazāks risks ka atsevišķi indivīdi (kā Musks vai Zuckenbervs) to var negatīvi ietekmēt
020
Kaspars Dancis @k7d.dev · 15/11/2024
Starter packs ir labs sakums blueskydirectory.com/starter-pack...
blueskydirectory.com
All - Bluesky Directory
A curated collection of all things relating to the Blue Sky social media platform.
010
Kaspars Dancis @k7d.dev · 14/11/2024
90s were fun pikuma.com/blog/jungle-...
pikuma.com
The Impact of Jungle Music in 90s Video Game Development
Jungle music was found in countless games from the early 90s. This article goes over what jungle is, where it comes from, and why it was the perfect match for PlayStation & Nintendo 64 games.
100
Kaspars Dancis @k7d.dev · 09/11/2024
@bsky.app hey! A little usability annoyance - this button keeps getting in a away when I scroll with a thumb. Is it even neccessary since you can just tap on top of screen to acieve the same? As for new content indication, that might also be more intuitive on top of screen
010
Kaspars Dancis @k7d.dev · 06/11/2024
🦋 I guess it's time
170