james

james

@morrissey.ai

Building software (currently all things Kotlin) & breaking software (all things infosec) while absorbing a responsible amount of caffeine, craft beer and techno. Relentless curiosity. Play, dig, learn, build, repeat.

250 followers244 following47 posts

Spent my weekend playing with this FM synth. Bought primarily as a music learning toy for my daughter, I knew it was a functional synthesizer, but didn't realise how good it would be. 6 operators, 12 voice, step sequencer, arpeggiator. Under $70 and looks stunning. Me: "is it my turn again yet?" 😂

Maybe obvious: lighting *really* matters. Something was making me feel inexplicably tired in my home office on some days, had to take my laptop to a room with natural light to get anything done. Recently changed lights from 2300K warm to high-CRI 4500K natural LEDs and it has been life changing 💡🎉

Something no one ever told me about becoming a parent is how deeply special it would be to witness the bond form between my toddler and my dog. No words 🥹

In July '22 I was on a mission to see if I could use a little known "Compose for Desktop" (now known as Compose Multiplatform) to build a robust & accurate syntax highlighting editor – on top of BasicTextField – and it went surprisingly well! 🧵

View full thread

I've since moved on to other things that consume my spare time (incl. small humans) so never finished my editor, but it was a really fun side project and I was recently reminded of it, so decided to tell the story here to hopefully encourage others to: <continued>

1. learn new things – I learned tons about editor data structures & performance, and even more about Compose 2. file feature requests – the Compose team are listening and are always interested in hearing about use cases that Compose doesn't yet support Alright, end rant. Go build something cool!

In July '22 I was on a mission to see if I could use a little known "Compose for Desktop" (now known as Compose Multiplatform) to build a robust & accurate syntax highlighting editor – on top of BasicTextField – and it went surprisingly well! 🧵

View full thread

The obvious solution was to not use BasicTextField and to write my own text field implementation from scratch, but that comes with a lot of extra work, maintenance, and you don't get to build on top of the amazing work already done by the Compose team. <continued>

In July '22 I was on a mission to see if I could use a little known "Compose for Desktop" (now known as Compose Multiplatform) to build a robust & accurate syntax highlighting editor – on top of BasicTextField – and it went surprisingly well! 🧵

View full thread

The only problem: edit performance left a lot to be desired.. and editing, it turns out, is a pretty important part of a text editor :D In Compose v1.1, updating the value of a text field meant replacing the text altogether... <continued>

This meant even a single char update in a 1,500 line file caused Compose update the entire text field value. For small files, performance was fine, but as the text grew, updates became exponentially slower and keystrokes were unbearably laggy. <continued>

In July '22 I was on a mission to see if I could use a little known "Compose for Desktop" (now known as Compose Multiplatform) to build a robust & accurate syntax highlighting editor – on top of BasicTextField – and it went surprisingly well! 🧵

Back then, Compose was at v1.1x and not as performant as it is now, but I still ended up with a POC that imported the same grammars used by VSCode (TextMate), and could analyse and highlight very large files across many languages with relatively good performance... <continued>

Gradle: "hold my jvmargs"

james@morrissey.ai

some personal news: I have decided to recklessly neglect build performance and throw an M4 at it instead. I will not be taking questions at this time. (but seriously, very excited to finally upgrade my personal laptop)

some personal news: I have decided to recklessly neglect build performance and throw an M4 at it instead. I will not be taking questions at this time. (but seriously, very excited to finally upgrade my personal laptop)

You are up to date.