I really enjoy working with Akka Typed

This is a bit of a meta-post.

When I first moved from Java to Scala (after several other languages, I started young), it was like a dream. Type-safety, elegance, a breath of functional style, and power, to name a few. It was like, out of a triangle where you can always only have two things, Scala somehow managed to have all three. It had everything I ever liked in a language, and I could fully live out my creativity in writing beautiful code, including all those abstract things that I had learned over the years from books and the like - because the language gave me that flexibility that I was waiting for.

Then I came across [classic Akka] Actors, and Akka Streams, which opened up another new world. Classic Actors were then the best paradigm that I knew, but still, I felt there was room for improvement. Something still felt a bit clumsy.

Now I’m starting to use Typed Actors, and it feels like it has taken everything that was learned from classic Actors, and perfected it. All those clumsinesses are gone. It offers insane flexibility. It feels like, an actor can utilize every level of complexity and every pattern that Scala itself offers. An actor can be a simple function. It can be a complex object. It can be functional. It can be object-oriented. It can be both. It can consist of a class. One actor can even consist of multiple classes. It can utilize classes AND functions. It can be mutable, entirely immutable, a Finite-state-machine. …you get my point. There are no limits to how you can express yourself in this framework. You can express your thoughts into code rather freely.

In any other language/paradigm that my limited knowledge affords, a function will always be a function, and a class instance will always be a class instance. An actor… can be anything (transparently).

When I start writing an actor, I don’t have to think far ahead. I start simple, refactor, and let it grow. An actor comes into being organically.

On top of that, I have supervision / fault-tolerance, persistence, remoting / clustering (incl. sharding, singletons, routers etc), and if that’s not enough, Akka Streams, without which I also could not live as a programmer (I have written a Scala Graph based DSL on top of Akka Streams). Not to forget, gRPC for inter-service communication.

I feel like, this is the ultimate toolkit for programming. I don’t know of anything that even comes close. No other language + framework can compare to this combination.

17 Likes

Thanks a lot for the kind words and for the added detail, this is what makes open source worth it :slight_smile:

Regards,

Roland

3 Likes

Thanks for the positive feedback. I’m glad to hear that you like Akka Typed and other parts of the Akka toolkit.

2 Likes

Looking forward to your PRs to akka/akka :)

2 Likes

this is what makes open source worth it :slight_smile:

Not to forget accelerated development, more eyes and exposure, etc… :wink:

But no, I’ve benefited tremendously from this project, without being required to return anything.

Looking forward to your PRs to akka

There have been one or two, but unfortunately it stands in no comparison to how much I have used the framework. In reality paid work and other [personal] profit-oriented projects generally end up taking priority over voluntary contributions most of the time. I’ve actually thought about seeking employment at Lightbend (if the opportunity exists is another question) but what has been stopping me is that I enjoy the flexibility of working on my own projects using Akka too much, which I think I’d have to give up for the most part.

Sounds like what I had gone thru - worked on whole lot of other languages, Java for over 10 years and then moved on to Scala/Play/Akka/Slick … Made a huge difference.

Yeah, for me python was always the most beautiful to look at, and Java the best one for practical reasons such as type safety.

Python is “nice syntax” + “practical” (big community etc)

Java is “practical” + “type safe”

Scala is “nice syntax” + “practical” + “type-safe” + “functional stuff” +“powerful” (powerful type system, immutability, pattern matching, case classes, advanced features, etc)

And then add the Akka stack on top of that.

1 Like

We are now using Scala interface to MongoDB, Play Framework and tieing in Mongo Async calls to Play async calls. They fit in so well, it’s a breeze - tie in case classes to Mongo Json. Problem with java is mutable classes which cause a lot of issues - especially when you have a large team. All that go away using immutable types.

1 Like