Sign in

Brian Norman

@bnorm.dev
131 followers 55 following 31 posts

I do the clickety-clackety that make the computer go brrr! @KotlinLang.org compiler developer at @JetBrains.com; all opinions are my own.

PostsRepliesMedia
Brian Norman @bnorm.dev · 28/09/2026
My experience with Control Resonant so far: Pet a dog, Sang karaoke, Did laundry. 10/10
Dylan Faden - the protagonist of Control Resonant - pets a dog. Buildings in the background are at weird angles, like reality is warped, and Dylan and the dog are not obeying the laws of gravityDylan Faden sings karaoke in a blue lit room while people dance in front of him. These people are "possessed" by a karaoke speaker sitting on a small table next to Dylan and cannot stop dancing until Dylan finishes the song.

The lyrics "Just be what you want to be..." being sung by Dylan are along the bottom of the screen.Dylan Faden stands in his boxer briefs in a laundromat. A man behind Dylan in the laundromat is floating with his head tilted back at an unnatural angle. Monsters controlled by The Hiss are lurking outside the laundromat, kindly waiting to attack until after Dylan is done with his laundry.
000
Brian Norman @bnorm.dev · 04/06/2026
I talked about all of this recently at KotlinConf '26. The recording isn't available quite yet, but here are the slides. deck.bnorm.dev/kc26 And if you want to dive deep, there is a KEEP with all the technical details. github.com/Kotlin/KEEP/... The future is bright for power-assert!
deck.bnorm.dev
KotlinConf 2026
000
Brian Norman @bnorm.dev · 04/06/2026
But why a runtime library? It fixed: array content in diagrams, multiline string handling, and excessive vertical space. It unblocks: diffs, local variables in diagrams, and non-assert use cases. And assertion libraries can support power-assert out-of-the-box, without custom Gradle config!
100
Brian Norman @bnorm.dev · 04/06/2026
5 years ago, while it was still a third-party compiler plugin, I realized power-assert needed a runtime library: github.com/bnorm/kotlin... 3 years ago I started experimenting with how that could work: github.com/bnorm/kotlin... Now power-assert is both first-party and has a runtime library! 🎉
100
Brian Norman @bnorm.dev · 04/06/2026
Kotlin 2.4.0 ships with a HUGE power-assert update I've been slowly working on for *years*. It's the culmination of efforts I started before joining JetBrains. It's subtle from the user's perspective, but it helped fixed a bunch of problems and unblocks tons of future improvements! 🚀
kotlinlang.org
Power-assert compiler plugin | Kotlin
1124
Brian Norman @bnorm.dev · 16/05/2026
Ugh, this is soo cool! May I use this on the title slide of my KotlinConf talk? 🥺 With credit, of course. My whole presentation is written in Compose, so this would be perfect!
130
Brian Norman @bnorm.dev · 30/03/2026
Couldn't sleep. Wrote a KEEP.
github.com
Power-Assert Explanation · Kotlin KEEP · Discussion #478
We are excited to share this design proposal, which includes many improvements to the Power-Assert compile plugin! This proposal hopes to improve many key problem areas by providing ways to directl...
122
Brian Norman @bnorm.dev · 27/01/2026
Large fascist the size of a small fascist leaves MN.
030
Brian Norman @bnorm.dev · 17/01/2026
We're done being Minnesota Nice to ICE. Get the fuck out of our city.
startribune.com
Opinion | Minnesotans seem to be done playing ‘Minnesota Nice’
We appear to be developing a new state ethos, encapsulated by Minneapolis Mayor Jacob Frey's recent use of the F-bomb to denounce ICE, Shannon Gibney writes.
031
Reposted by Brian Norman
Jesse Wilson @swank.ca · 15/01/2026
publicobject.com
Rounds.app
In 2012, I published an Android score pad app named Rounds to the Play Store. I was quite proud of it! It used an iPod click wheel-style score entry UI and balanced capability with simplicity. Rounds’...
0131
Brian Norman @bnorm.dev · 07/01/2026
I'm fucking exhausted.
mprnews.org
Live updates: Minneapolis confirms name of woman shot by ICE agent
Renee Good, 37, was identified as the woman shot and killed Wednesday morning by an ICE agent in south Minneapolis. ICE said Good was shot while trying to run over agents with her car. Mayor Jacob Fre...
010
Brian Norman @bnorm.dev · 14/12/2025
A Rounds update?!
010
Reposted by Brian Norman
Kotlin by JetBrains @kotlinlang.org · 14/11/2025
⚡ The Kotlin Power-assert is now available for 🪶 Maven! The plugin makes debugging easier with detailed failure messages and no extra libs needed. Enable it in the <plugin> section of `kotlin-maven-plugin` in your `pom.xml`. Read more in the docs 👇 kotl.in/wtpugg
kotl.in
Power-assert compiler plugin | Kotlin
091
Reposted by Brian Norman
Kirill Rakhman @rakhman.info · 29/08/2025
Blogged - Kotlin: Emerging Patterns with Context Parameters rakhman.info/blog/kotlin-... #programming #dev @kotlinlang.org
rakhman.info
073
Brian Norman @bnorm.dev · 02/07/2025
Speaking of slides, for DroidCon NYC, I presented "(Re)creating Magic(Move) with Compose"! I talked about how I've been writing all of my presentations recently with Compose, but still wanted MagicMove from Keynote. A fun talk exploring diff algorithms of all things: deck.bnorm.dev/dcnyc25
deck.bnorm.dev
droidcon NYC 2025
050
Brian Norman @bnorm.dev · 02/07/2025
For KotlinConf, I presented "Writing Your Third Kotlin Compiler Plugin". This talk was about much of my current (and future!) work in the Kotlin compiler. A recording is already available: youtu.be/9P7qUGi5_gc and I've made my slides available as well: deck.bnorm.dev/kc25.
youtube.com
Writing Your Third Kotlin Compiler Plugin | Brian Norman
YouTube video by Kotlin by JetBrains
120
Brian Norman @bnorm.dev · 02/07/2025
I had the wonderful opportunity to speak at two conferences recently: KotlinConf and DroidCon NYC! As a speaker, it's always fun to share something I'm passionate about with people. And as an attendee, chatting with all the fantastic developers in these communities is just the best!
130
Brian Norman @bnorm.dev · 15/05/2025
Current schedule for Droidcon NYC stage 1: Keynote, Jake, and then me. *gulp* That's not intimidating at all...
Droidcon NYC schedule for Stage 1 showing the first 3 talks: "You're Not an Android Developer Anymore" by Stacy Devino, "KMP with non-Kotlin languages" by Jake Wharton, and "(Re)creating Magic(Move) with Compose" by Brian Norman.
050
Brian Norman @bnorm.dev · 02/05/2025
*I'm* speaking at Droidcon NYC? About *Compose*? Who approved this?! nyc.droidcon.com/brian-norman/
2183
Brian Norman @bnorm.dev · 15/04/2025
And it includes beta support for context parameters!
A "All The Things" meme with the text "CONTEXT PARAMETER ALL THE THINGS" along the top.
073
Brian Norman @bnorm.dev · 13/04/2025
Animated VectorPainter: gist.github.com/bnorm/d326ab... Pulled the SVG from the website, ran it through a converter to Compose, and then manually added the animation. Animated values are based on a Transition, so it is all synced with the presentation as a child transition.
gist.github.com
Animated VectorPainter of the bird on the KotlinConf 2025 website
Animated VectorPainter of the bird on the KotlinConf 2025 website - KotlinConfBird.kt
010
Reposted by Brian Norman
Simon Vergauwen @vergauwensimon.bsky.social · 13/04/2025
Omg, I love this 😍 I think this convinced me to try it! Really amazing showcase of alternative use-cases for Compose and #Kotlin power assert at the same time 😄👏👏 If you don’t know about power assert check it out here, kotlinlang.org/docs/power-a...
kotlinlang.org
Power-assert compiler plugin | Kotlin
0195
Brian Norman @bnorm.dev · 12/04/2025
Not from this weekend, but I have to brag about this slide: I defined a list of code samples which are each highlighted by Storyboard using an ANTLR parser, and each transition is completely automatic thanks to a "MagicText" Composable. LaunchedEffect to loop though samples and done.
0122
Brian Norman @bnorm.dev · 12/04/2025
This weekend's Storyboard project: prototyping a presentation companion website which allows sending live reactions that rise from the bottom right of the slide. I also get a count of each reaction type for the last 15 seconds in the assistant window. It's kinda dumb ... ... but I love it so much!
140
Reposted by Brian Norman
Kirill Rakhman @rakhman.info · 10/04/2025
blog.jetbrains.com/kotlin/2025/...
blog.jetbrains.com
Update on Context Parameters | The Kotlin Blog
Context parameters will be replacing context receivers in Kotlin, with version 2.2.0 featuring them as Beta. We are committed to providing an easy migration between both features, including dedicated ...
1185
Brian Norman @bnorm.dev · 07/04/2025
For my project this weekend, I implemented a slider so I can seek through the animations of my slides. This is thanks to Storyboard being built on top of SeekableTransitionState.
3100
Reposted by Brian Norman
Zac Sweers @zacsweers.dev · 03/04/2025
A palette cleanser for your timeline today: Introducing Metro! Metro is a compiler-plugin-based dependency injection framework that draws heavy inspiration from Dagger, Anvil, & Kotlin-Inject. www.zacsweers.dev/introducing-...
zacsweers.dev
Introducing Metro
I'm excited to share something new I've been working on the past few months!
88320
Brian Norman @bnorm.dev · 03/04/2025
I think the exciting thing for both frameworks is that it's all Compose when you get to the slide content. What libraries you use from there is completely up to you! I avoid integrating my utilities directly with Storyboard, because I want someone else to build something better I can use instead!
020
Brian Norman @bnorm.dev · 03/04/2025
Compose hot-reload is *so* easy to integrate. The only complexity happens if you want to preserve presentation position when slide/step count changes. But if you are just fiddling with the content of slides, there's nothing special you should need to do.
github.com
deck.bnorm.dev/kotlinconf2025/story/src/jvmMain/kotlin/main.desktop.kt at main · bnorm/deck.bnorm.dev
Repository for hosting deck.bnorm.dev. Contribute to bnorm/deck.bnorm.dev development by creating an account on GitHub.
110
Reposted by Brian Norman
Sebastian Sellmair @sellmair.dev · 01/04/2025
I just had one of the coolest calls in quite some time with @bnorm.dev. We wanted to talk about a potential issue, but then drifted into him explaining his project, github.com/bnorm/storyboard, to me. I wish he had shown me this before I started preparing for my next talk. 🤯🔥
github.com
GitHub - bnorm/storyboard: Library for building presentations using Compose Multiplatform.
Library for building presentations using Compose Multiplatform. - bnorm/storyboard
0141
Brian Norman @bnorm.dev · 01/04/2025
I've actually seen it! I think we started on our projects around the same time? But I was pretty much done with my first presentation when you announced it. They are quite similar, but do have a few key differences which I think are useful. Maybe comes down to preference?
000
Brian Norman @bnorm.dev · 26/03/2025
Oh hey, look! PeekSource. I wrote that too! What a trip down memory lane. These were some of my first open source contributions. Can't say enough good things about @swank.ca, @egorand.dev, and Jake. They welcomed an absolute newbie and mentored him in the ways of open source. Thank you!
github.com
kotlinx-io/core/common/src/PeekSource.kt at 0329b9d0ebbf614634f48d9f69b1e14350d4d7e2 · Kotlin/kotlinx-io
Kotlin multiplatform I/O library. Contribute to Kotlin/kotlinx-io development by creating an account on GitHub.
060
Brian Norman @bnorm.dev · 26/03/2025
Open source is so cool! 7 years ago I made a big change to UTF-8 processing in okio. I moved on to other things. Meanwhile, kotlinx-io copies a lot of code from okio (with approval, nothing shaddy). I then join the Kotlin team. Today I found the same code I wrote for okio, comments and all. Wild.
github.com
kotlinx-io/core/common/src/internal/-Utf8.kt at 0329b9d0ebbf614634f48d9f69b1e14350d4d7e2 · Kotlin/kotlinx-io
Kotlin multiplatform I/O library. Contribute to Kotlin/kotlinx-io development by creating an account on GitHub.
1402
Reposted by Brian Norman
Márton Braun @zsmb.co · 26/03/2025
We know that publishing a library to Maven Central is a nontrivial quest. Take this guide to aid you on your journey! www.jetbrains.com/he...
2173
Brian Norman @bnorm.dev · 23/03/2025
Today I created a webpage with an embedded presentation that follows an active one. Thinking about using this to reveal additional content as the presentation progresses. Though maybe this would just be too distracting? But look at that awesome animation! (Stolen from the KotlinConf website...)
140
Brian Norman @bnorm.dev · 23/03/2025
Wanted to share a project I've been working on for the last year: github.com/bnorm/storyboard It's a library for building presentations in #kotlin and Compose! I've built a couple presentations using it, and I'm really excited about the potential!
github.com
GitHub - bnorm/storyboard: Library for building presentations using Compose Multiplatform.
Library for building presentations using Compose Multiplatform. - bnorm/storyboard
2407
Brian Norman @bnorm.dev · 24/02/2025
Want to know something cool? The multiple output values for interactive scripts is thanks to the same code transformation behind Power-Assert. That's how it can display a before and after result. So cool to see that technology find its way into unexpected places!
031
Brian Norman @bnorm.dev · 17/02/2025
Uh oh, I think you just broke an NDA.
100
Brian Norman @bnorm.dev · 06/11/2024
Petition to also accept JetBrians.
100