Software Architect | Scala Lover | Creator of Caliban and Shardcake

Joined June 2007
81 Photos and videos
Pinned Tweet
Do you like Caliban? Or maybe Shardcake? Enjoyed OSS contributions I’ve done over the years? Have I helped you on Discord? I’ve just setup a GitHub Sponsor page so if you’d like to give a little back or encourage future contributions, head up to github.com/sponsors/ghostdog… 🙏
2
19
56
7,628
Anyone interested in having Caliban server work on Scala.js/Native?
2
2
3
893
Been a while since I spent time on Shardcake, but I am cooking some nice improvements.
12
482
Released as part of Proteus 0.4.0: github.com/ghostdogpr/proteu…
Reimplemented the zio/fs2 grpc backends in Proteus without depending on zio-grpc/fs2-grpc. That gave a nice performance boost to the zio one! Ox is still the fastest but not by far. I'm hoping to use kyo-compat later if it gets support for streams. github.com/ghostdogpr/proteu…
2
15
1,158
Reimplemented the zio/fs2 grpc backends in Proteus without depending on zio-grpc/fs2-grpc. That gave a nice performance boost to the zio one! Ox is still the fastest but not by far. I'm hoping to use kyo-compat later if it gets support for streams. github.com/ghostdogpr/proteu…
1
5
42
3,212
Trying to build a new lib with support for ZIO/CE/Ox by abstracting over the effect type but it's proving difficult as I need fork, queues, resources, promises, etc. Abstracting over Ox is also tricky due to its eager nature (sometimes needs () => F[A]). Should I: (1/2)
1
8
915
- core using Java concurrency primitives integrations on the edges (using unsafe run for effects) - CE core drop Ox (ZIO ok via interop) - ZIO core drop the other 2 - effect-free core and duplicate all effectful parts x3 - keep going despite the code complexity
1
2
533
@Krever01 this is similar to questions you had recently, I think you went for CE core. @adamwarski you managed this quite incredibly in sttp/tapir, curious if you have a take on this.
4
2
565
Just released proteus-diff, a CLI that compares .proto files and splits breaking changes into wire vs source compat axes. Renumbering fields? wire-breaking, source-safe. Renaming? the opposite. ~250ms on 6k messages 🚀 ghostdogpr.github.io/proteus…

4
25
971
Deployed a first component using PureLogic to prod today. This is a view of the profiler (blur intentional) showing how clean the stack is compared to monadic effects. We already found something to optimize 😄
1
3
36
1,528
New blog post answering a question I was asked a couple weeks ago! Let's see how we can use PureLogic to model event-sourced domain logic in direct style while ensuring that state changes and emitted events always stay in sync. blog.pierre-ricadat.com/even…
9
22
1,134
Pierre Ricadat retweeted
Another @scalarconf by-product! :) Awesome to see #Ox & direct-style making its way Proteus :) Check out the project - Tapir-like gRPC endpoints!
Released version 0.2.0 of Proteus with a new direct-style gRPC backend for Ox, with streaming support! Based on my initial testing, it is pretty fast! 🚀 Thanks @adamwarski for the idea and the help 🙏 Release notes: github.com/ghostdogpr/proteu…
1
12
966
Pierre Ricadat retweeted
A new, code-first Protobuf library for Scala! Think of it as a Tapir for gRPC services. 👌 Read the full article from @ghostdogpr to learn why he built it and the benefits it brings. 👇 blog.pierre-ricadat.com/prot…
5
32
921
Released version 0.2.0 of Proteus with a new direct-style gRPC backend for Ox, with streaming support! Based on my initial testing, it is pretty fast! 🚀 Thanks @adamwarski for the idea and the help 🙏 Release notes: github.com/ghostdogpr/proteu…
2
26
1,464
Attending @scalarconf was exhilarating. Great talks, lots of food for thought, and most of all, meeting and talking to many great people. There’s a lot of innovation going on in Scala right now, this is exciting. I leave with a lot of ideas. The coming months are gonna be busy!
5
30
811
That was quite compelling! Makes me wonder if I should try to migrate Caliban derivation to Hearth 🤔
1
15
660
One thing I forgot to mention in my talk/blog is the care I put in having great error messages in Proteus. If you decode an invalid payload you’ll get details on the exact path and field causing the error.
1
19
497