droidcon NYC 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
02.07.2025 15:33 β π 6 π 0 π¬ 0 π 0
YouTube video by Kotlin by JetBrains
Writing Your Third Kotlin Compiler Plugin | Brian Norman
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.
02.07.2025 15:33 β π 3 π 0 π¬ 1 π 0
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!
02.07.2025 15:33 β π 4 π 0 π¬ 1 π 0
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.
Current schedule for Droidcon NYC stage 1: Keynote, Jake, and then me.
*gulp*
That's not intimidating at all...
15.05.2025 13:48 β π 4 π 0 π¬ 0 π 0
*I'm* speaking at Droidcon NYC?
About *Compose*?
Who approved this?!
nyc.droidcon.com/brian-norman/
02.05.2025 14:36 β π 18 π 3 π¬ 2 π 0
And it includes beta support for context parameters!
15.04.2025 15:36 β π 7 π 3 π¬ 0 π 0
Animated VectorPainter of the bird on the KotlinConf 2025 website
Animated VectorPainter of the bird on the KotlinConf 2025 website - KotlinConfBird.kt
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.
13.04.2025 17:10 β π 1 π 0 π¬ 0 π 0
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...
13.04.2025 07:28 β π 19 π 5 π¬ 0 π 0
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.
12.04.2025 21:26 β π 12 π 2 π¬ 0 π 1
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!
12.04.2025 21:06 β π 4 π 0 π¬ 1 π 0
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.
06.04.2025 23:10 β π 10 π 0 π¬ 3 π 0
Introducing Metro
I'm excited to share something new I've been working on the past few months!
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-...
03.04.2025 16:17 β π 85 π 21 π¬ 9 π 4
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!
03.04.2025 15:59 β π 3 π 0 π¬ 0 π 0
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.
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.
03.04.2025 15:59 β π 2 π 0 π¬ 1 π 0
GitHub - bnorm/storyboard: Library for building presentations using Compose Multiplatform.
Library for building presentations using Compose Multiplatform. - bnorm/storyboard
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. π€―π₯
01.04.2025 12:34 β π 15 π 1 π¬ 1 π 0
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?
01.04.2025 13:23 β π 0 π 0 π¬ 1 π 0
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.
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!
26.03.2025 16:25 β π 6 π 0 π¬ 0 π 0
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.
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.
26.03.2025 16:10 β π 40 π 2 π¬ 1 π 0
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...
26.03.2025 15:47 β π 18 π 3 π¬ 2 π 0
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...)
23.03.2025 23:10 β π 5 π 0 π¬ 1 π 0
GitHub - bnorm/storyboard: Library for building presentations using Compose Multiplatform.
Library for building presentations using Compose Multiplatform. - bnorm/storyboard
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!
23.03.2025 23:10 β π 42 π 8 π¬ 2 π 0
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!
24.02.2025 13:05 β π 3 π 1 π¬ 0 π 0
Uh oh, I think you just broke an NDA.
17.02.2025 18:02 β π 0 π 0 π¬ 1 π 0
Petition to also accept JetBrians.
06.11.2024 22:40 β π 0 π 0 π¬ 1 π 0
π§’ CEO: Dropout
π€ Host: Game Changer, Make Some Noise
πΈ he / him
The game show where the rules change every show. Hosted by Sam Reich.
gamechanger.dropout.tv
Android Software Engineer
Helping build adaptive Compose everywhere!
Developer Advocate @ JetBrains
#Kotlin since 2015
@arrow_kt maintainer
Java Platform Group @Oracle (all opinions are my own alone).
See random stuff about me at http://kevinb9n.github.io
IntelliJ IDEA β the Leading IDE for Professional Development in Java and Kotlin, by @jetbrains.com
Tips: #IntelliJIDEATips
New Features: #NewInIntelliJIDEA
Our YouTube channel: http://jb.gg/video
Dad, husband, teacher, coach, veteran. Governor of Minnesota. Working to move our state forward as #OneMinnesota.
Samβs father. Sallyβs husband. Fourth generation New Yorker. Traveling eater. Amateur cook. Software engineer. Googler. Hasn't yet won a Nobel Prize.
he/him
Software Engineer @ Google working on Jetpack Compose
Created http://adventofcode.com, http://compute-cost.com, http://anoik.is, http://was.tl/projects/; Principal Architect at https://acvauctions.com
The place to collaborate on an open-source implementation of the Java Platform and related projects Β· https://openjdk.org
Kotlin Developer Advocate @JetBrains.com | Server side, Kotlin/JVM, Spring, Ktor, IntelliJ IDEA and more
Programming Languages Researcher and Consultant
Barcelona, hiking, travelling, rock shows, movies, books, work-life balance.
Android engineer at Cash App, Block Open Source contributor. Opinions my own.
Protect, promote and advance the development of the Kotlin programming language. Learn more at kotlinfoundation.org
Kotlin is a programming language that makes coding concise, cross-platform, and fun βΒ https://kotlinlang.org/
Video tutorials http://kotl.in/video
News http://kotl.in/news
Community discussions http://kotl.in/slack