Skip to main content


Hey look! I write technically

Guide to InteractiveX in Kotlin

    I was just peeking at Kotlin to see if they supported asynchronous generators. I wasn't expecting much, because when I was making InteractiveX implementations for PHP and Hack last year, Kotlin coroutines weren't publicly documented. Man, I got way more than I bargained for. I knew even just looking at this title to this guide in kotlinx.coroutines:

    Guide to reactive streams with coroutines


      The maximum is in the middle

      There's a spectrum in the Reactive world. On one side, there's ReactiveX (abbreviated as Rx). On the other side, there is InteractiveX (abbreviated as Ix). For some implementations to see the difference, we can look at the former's many friends — Reactive Streams, Reactor, Flowable — and the latter's more meager and nascent friendbase — really just Kotlin channels for now. Theoretically though, the difference between the two is concise but deep.

      How to make a ReactiveX

      • Project_writeup
      • Reactive
      • Software

      I was tipped off to Reactive Frameworks from @Robert Harvey on a long-winded StackExchange question of mine for what "reactive databases" were called. I was infatuated with Hack's elegant async API and let me tell you it absolutely expanded my world in all the right ways.

      Why ReactiveX operators are hard to make and InteractiveX operators aren't

        Full-featured reactive stream libraries, like Rx, come with a very large set of operators to create, transform, combine and otherwise process the corresponding streams. Creating your own operators with support for back-pressure is notoriously difficult.

        Coroutines and channels are designed to provide an opposite experience. There are no built-in operators, but processing streams of elements is extremely simple and back-pressure is supported automatically without you having to explicitly think about it.

        from Kotlin's guide to reactive channels

        Logo sketches: Shard

          My logo already uses forced perspective to create an illusion, so why not really force it a little harder? Shard splits polygons at random vertices and carefully hurls them in front of a camera where they appear like the original. That is... until you put a spin on them!

          Logo sketches: Trace

          While designing some branding around my personal logo, I noticed the following in-spiral that felt like it was leading somewhere interesting: