Shawn Rainbow's Avatar

Shawn Rainbow

@shawnrainbow.bsky.social

Android Dev, Kotlin Multiplatform Enthusiast, Math PhD

22 Followers  |  123 Following  |  48 Posts  |  Joined: 22.11.2024  |  2.4538

Latest posts by shawnrainbow.bsky.social on Bluesky

There are a lot of benefits of building for local-first offline-only. Offline apps are severely underrated. You don't need a server for most things (terms might vary; we're building different things, too).

30.10.2025 21:22 โ€” ๐Ÿ‘ 9    ๐Ÿ” 2    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
Preview
Release 2.3.0 ยท google/ksp What's Changed KSP1 has been deprecated #2657 KSP is now independent of Kotlin Versions #2658 Full Changelog: 2.2.20-2.0.4...2.3.0

KSP is now independent of Kotlin versioning!

github.com/google/ksp/r...

25.10.2025 18:45 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Geodesics on spheres are always arcs of great circles. Geodesics on a cylinder can be segments of spirals, though.

Geodesics are (in one definition, at least) the shortest distance paths between two points on a surface.

23.10.2025 07:34 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I personally keep all my app modules together in an app folder (so technically they are submodules of :app), and also stick a kmp :app:shared module in there as the entry point for all of the platforms. Then everything else is just pure kmp modules (no "shared" prefix needed)

22.10.2025 18:08 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

๐Ÿ˜ข

11.10.2025 16:48 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0
a checkbox on a website that says "keep me logged in"

a checkbox on a website that says "keep me logged in"

There are three kinds of lies: lies, damned lies, and

29.09.2025 14:42 โ€” ๐Ÿ‘ 43    ๐Ÿ” 8    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 0

Y'all gotta stop buying smart TVs, so they stop making them. There is literally nothing appealing about them.

My TV doesn't show me ads when I'm just turning it on. It can't be ruined by a software update. It turns on and off when I want it to. It immediately responds to all inputs.

24.09.2025 03:56 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

I wonder if "Accessibility" would be less of an afterthought, and more people would be interested in it, if we renamed it "Best Practices"

20.09.2025 22:26 โ€” ๐Ÿ‘ 22    ๐Ÿ” 5    ๐Ÿ’ฌ 3    ๐Ÿ“Œ 1
Magic the Gathering card with text "Exquisite Blood. Whenever an opponent loses life, you gain that much life"

Magic the Gathering card with text "Exquisite Blood. Whenever an opponent loses life, you gain that much life"

Magic the Gathering card with text "Sanguine Bond. Whenever you gain life, target opponent loses that much life."

Magic the Gathering card with text "Sanguine Bond. Whenever you gain life, target opponent loses that much life."

The very first infinite combo I discovered on my own while building decks in Magic the Gathering

19.09.2025 20:47 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Which is all to say that @johnoreilly.dev is right here, but it applies 100x more when someone raises an issue about clarity and confusion.

If someone says they don't understand a process, then the documentation of that process needs to be created or updated, etc.

19.09.2025 16:19 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

After thinking about it for another minute or two, I realized he couldn't be wrong. A piece of code is confusing if someone reads it and is confused, which was the case here. Objectively, he had to be right to at least some degree.

19.09.2025 15:57 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Early in my career, I wrote a piece of code that I thought was the most beautiful idiomatic piece of Kotlin code one could write. My manager commented in the code review that it was confusing.

My gut reaction was that he was wrong and probably too entrenched into Java idioms still...

19.09.2025 15:52 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

It always seemed insane to me that I was in the minority in grad school for preferring whiteboards. When I asked people why they preferred chalk, they would often tell me that whiteboards are messy? Like... messier than chalk?

08.09.2025 18:01 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Neat. What defines a "valid" location? Not within a distance of r from any other point?

05.09.2025 19:26 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Model holding a concept version of the Project Ara phone. It features a number of modules in colored plastic or metal, a camera, and a simple display screen for the back.

Model holding a concept version of the Project Ara phone. It features a number of modules in colored plastic or metal, a camera, and a simple display screen for the back.

I'm sad that Project Ara never came to be. The idea of modularity for a phone was a cool idea. Definitely get why it never went anywhere, but dang it would have been cool.

The idea was you buy a phone chassis and then modules that give features, storage, extra battery, etc.

31.08.2025 15:01 โ€” ๐Ÿ‘ 125    ๐Ÿ” 9    ๐Ÿ’ฌ 13    ๐Ÿ“Œ 0

Birth cerificate: born Jan 01, 1970 at midnight on null island to parents "" and "".

29.08.2025 15:54 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Arguments and return values of your service methods should be models and not services.

Constructor injected objects should be services (most of the time).

The "glue" in this article is going to include the things that do actually take services as arguments/return values (like your DI framework).

23.08.2025 09:12 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Services/injectables should have their own unit tests.

Models/newables are tested implicitly by the unit tests of the services they're used in, and thus shouldn't need their own unit tests.

23.08.2025 09:09 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Knowing this difference is important if you are trying to write clean testable code w/ dependency injection:

Services/injectables should always be injected as a dependency where they are used and you should use test doubles where they are injected.

Models/newables should never use test doubles

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

To add to the nomenclature of this short article:

I have also seen "value classes" defined as "models", "entities", and "newables"

"Service objects" would equivalently be "services" or "injectables"

23.08.2025 09:01 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Lol, it's me at a punk show.

23.08.2025 08:54 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

That's a really interesting bug. I don't think I fully understand why the objects aren't instantiated when the companion object is instantiated, though. Seems like a language bug rather than a dev-side bug to me.

21.08.2025 17:16 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

The biggest trick the devil ever pulled is to call LLMs โ€œartificial intelligence.โ€

19.08.2025 15:43 โ€” ๐Ÿ‘ 1198    ๐Ÿ” 202    ๐Ÿ’ฌ 38    ๐Ÿ“Œ 8
Forklifts Require Training Sleepwalking into labor collapse

Wrote a lot of thoughts on junior developers, AI, and what I strongly feel is going to become the defining challenge of our industry's next generation.

www.zacsweers.dev/forklifts-re...

18.08.2025 18:17 โ€” ๐Ÿ‘ 65    ๐Ÿ” 28    ๐Ÿ’ฌ 7    ๐Ÿ“Œ 8
Preview
Email is Easy Everyone knows what an email address is, right?

Email addresses are very simple, and you will score highly in this quiz.

e-mail.wtf

17.08.2025 17:15 โ€” ๐Ÿ‘ 279    ๐Ÿ” 132    ๐Ÿ’ฌ 41    ๐Ÿ“Œ 52

This is a very well written article that explains what LLMs (and Machine Learning algorithms in general) actually are. Highly recommended read for anyone who actually uses these tools (most people).

14.08.2025 23:39 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

This picture just made me realize how great the design of Star Destroyers are.

05.08.2025 16:17 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Kind of insane, since Metro's not even at 1.0... But it is pretty damn good and is my current default choice already (with an extremely bright future)

18.07.2025 01:11 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
Post image

It's here! (as is the new Lorde album, btw)

27.06.2025 05:45 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0
โ€œThe Sparkโ€ - Kabin Crew & Lisdoonvarna Crew
YouTube video by The Kabin Studio โ€œThe Sparkโ€ - Kabin Crew & Lisdoonvarna Crew

It's been over a year and this song still goes 100x harder than it has any right to (The Spark by Kabin Crew, aka a bunch of Irish preteens):

youtu.be/njE3EknkkBY?...

16.06.2025 01:26 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@shawnrainbow is following 20 prominent accounts