@ilyasut
Note framing of this statement:
- participation (their decision, I only 'participated')
- board's actions (their actions, not mine)
- intended (only my intentions matter, not actions)
This is a recognition of negative fallout and a refusal to take responsibility for it.
For those interested in fault-tolerance, HA, distributed systems, reliability, resiliency, and durable execution, I'm delighted to announce we're planning a big event for the release of open source Golem 1.0!
Golem is a durable computing platform that runs your serverless
As a functional programmer interested in performance, I've long been troubled by the amount of garbage that functional programming generates.
Every time we want to apply a modification to a structure, we have to copy the structure (sharing as much substructure as possible), and
Boss: Why should I let you choose <programming language>?
Go: So the developers you hire when I rage-quit over lack of proper generics and result enums can instantly take over and maintain my code.
Haskell: So we can intimidate our intellectually weak competitors who dared
Three years ago, Scala developer Jon Pretty (
@propensive
) was hit by serious allegations, and many in the Scala community publicly condemned him or signed an open letter aimed at destroying his open source legacy and his career, and making him permanently unemployable.
I was
A Statement
I am a Scala developer and speaker who was cancelled three years ago. Yesterday I attended the High Court in London to hear an apology from several prominent members of the Scala community for making untrue claims about me on 27 April 2021. I sued them for libel, and
Loom vs Go vs Rust: How much memory do you need to run anywhere from 1 to 10 million concurrent tasks?
Great summary below, with some surprising findings (nice job, C#!).
Programming languages to watch:
- Rust: closest to 'commercial Haskell/Scala'
- Roc: the FP you love with the perf you need
- Zig: a different take on C++ alternative
- Nim: like D but actually wants to win
- Grain: FP targeting WASM natively
What languages you watching?
Why your big co will lose to a startup:
1. Organizational debt. You can't gather, learn from & execute on market data quickly.
2. Tech debt. You ignored countless engineers, now your tech asset has become a liability.
3. Personnel. You lost all the people who could fix 1 & 2.
After 3 years in development and 312 contributors, I'm excited to announce that ZIO is ready for 1.0! 🎉
Join us online for the official launch party, next Monday at 2pm! We will be recognizing contributors and toasting to a bright future! ❤️🥂
Decided to give
@algoraio
(open source bounties) a spin for a passion project of mine: Speakers in Technology.
If you want to support Tech Speakers and earn some $$$ while you're at it, then check out these tickets with open source bounties!
"Scala is failing because of bad marketing."
Bad take. Nokia had great marketing, but they lost smart phone wars because of product. ChatGPT had no marketing at all, but hit 1 million users in 5 days.
"Scala is failing because of monads."
Bad take. Developers don't avoid Java
Twitter should rewrite all the Golang services to Scala on grounds that anyone who cannot understand sum types and parametric polymorphism isn't sufficiently hard core. 😉
Twitter should rewrite the Scala parts in something with a proven track record like Golang and definitely don’t get tempted to try another hipster language.
Language success is impossible to predict and can’t be chosen merely on technical merit (they’re social constructs)
Hot take: If Devin can replace you, you're not a software engineer. 🌶️
If you think LLM-based approaches are months away from replacing engineers, you need to update your mental model of AI (cause it's broke).
Devin is a cute trick for raising $$, but the real work lies ahead.
Just blogged, "A Splendid Scala Journey," a reflection on my long and wonderful journey with Scala.
I encourage all Scala developers to reflect on their own journey and find their own path to positivity.
It's time to re-invent functional programming.
Aggressively focus on tackling the hardest problems with composition & stellar ergonomics.
Make ordinary developers insanely productive & joyful.
THIS, not category theory, is the new face of functional programming.
I'm gonna come out of the closet & say it...
What functional programming needs is not a million unopinionated libraries with fancy types & jargon.
What FP needs is a powerful, industry-focused, opinionated framework that gives developers superpowers.
We need the Spring of FP.
3 years. 🗓️
316 contributors. 🧑🤝🧑
Endless type parameters and release candidates. 😂
ZIO 1.0 has finally arrived. 💪
Discover the joy and productivity of next-level concurrent programming in Scala. 🎉
Good functional programmers think better about software and systems, in any language and paradigm--not innately, but through exposure to and experience with composition, legal states, and orthogonality.
AKA, "Learn Haskell so you write better Java."
If null is a $1B mistake, then async is a $10B mistake.
Developers got stuck in "synchronous is slow" when they should have embraced "threads should be cheap".
So instead they reinvented really awful "cheap threads" without any understanding of what they were doing.
Nim, Rust, and Zig all target systems-level programming, with different takes on memory management:
Nim - Let the GC ensure you don't leak memory
Rust - Prove to the compiler you don't leak memory
Zig - Prove to yourself you don't leak memory
Q: Why doesn't Cognition Labs just hire Devin, its own AI software engineer?
A: Because Devin is a toy fundraising gimmick, a literal joke--many breakthroughs and years or decades away from replacing a real software engineer, down a different evolutionary track than LLMs.
If you're building a database , OS, or other systems-level infrastructure, choose Rust.
If you're not building those things, choose not-Rust.
Rust is the better C we've all been hoping for. But most companies have NO BUSINESS writing programs in C, or even in a better C.
My experience is that both Scala and Rust are very complex languages.
At least with Rust, you can say, 'Yeah, boss, but our whole backend runs in 40 MB, starts in 1 ms, and will never have a null pointer error.'
@balajis
Vice: All tech companies want to violate your privacy.
Also Vice: Here are full names & quotes for a private conversation recorded in secret without consent.
Guess privacy doesn't apply to those who dare to critique big media. 🙄
Programming is often compared to mechanical & electrical engineering.
A better analogy is performing poorly-defined complex surgery on an alien life form with largely unknown anatomy along with 20 other surgeons without killing the almost-dead patient who is on life support.
Early access now available for Zionomicon, a brand new book from myself and
@adamfraser
that aims to turn you into a master of concurrent programming in Scala.
Discover how to build composable, type-safe apps that are resilient, responsive, and elastic!
Few things are as irritating as managers who think engineers are as interchangeable as nuts and bolts.
Some engineers are connectors, mentors, and leaders. Others are 10x or 100x engineers.
Treating them like nuts & bolts is a ticket to mediocrity.
Giant news: Golem is now 100% open source! 😱
Read more from my blog post:
Come discover the power that durable computing gives you to build bulletproof apps with simplicity. 🎉
Happy to share my thoughts on Scala 3 adoption!
Scala 3 was originally called Dotty, which was positioned as a separate, research-only compiler, without any intention to make the compiler the next version of Scala.
In fact, every time folks would worry about the radical changes
After a decade of research & development, thanks to the tireless efforts of
@odersky
, EPFL, & other contributors, Scala 3 has launched! 🎉🚀
Thanks to all who made this tremendous milestone possible! 🙏❤️
Excited for the future of functional Scala? 😉
Two news outlets in the same city can't always agree on what happens on the street.
Yet any two people from anywhere in the world can agree which accounts hold how much BTC.
Regardless of the many valid criticisms of crypto, this is an achievement of astounding proportions.
It's painfully obvious that most programming language designers do not spend their days writing micro-services and data pipelines.
As a result, we have lots of fancy features no one uses, and lack native support for serialization, migration, type-safe generic data, & much more.
ZIO HTTP 3.0, the FIRST release under the ZIO organization, has just hit Maven! 🎉🕺
Everything you'd expect from a ZIO lib:
- Super Fast
- Innovative
- Developer-friendly
- Millions of RCs before release! 😉
Meet the hottest Scala HTTP lib! 👇
Next year, it will have been 20 years since
@odersky
began working on the Scala programming language at EPFL.
Scala forever changed FP on the JVM, and these two decades of feedback, evolution, and innovation now culminate in Scala 3.
2021 is going to be a great year for Scala!
Learn about Meta’s new tool for handling NullPointerException (NPE) errors in Java code at scale. Here’s how we developed
#Nullsafe
, & how this tool has helped significantly reduce our overall number of NPE errors & improved developer productivity.
Unpopular truth: Bing chat, like ChatGPT, doesn't think, doesn't feel, and doesn't want anything at all, because it isn't alive.
Bing chat is just a fancy auto-complete giving users statistically likely completions based on training data.
There is no rise of the machines story.
As the author of BlueEyes, one of the earliest Scala web frameworks (inspired by Ruby's Sinatra), I made a decision that would come to impact later generations of Scala web frameworks, including Spray, Akka, http4s, and ZIO HTTP.
A decision that I now believe to be a mistake.
I am delighted to announce the launch of
@GolemCloud
, a new cloud platform for deploying immortal, reactive, invincible workers. 🎉
Built on durable computing, Golem Cloud lets you create reliable, resilient, scalable cloud apps faster than ever before.
For years, I’ve become accustomed to “costly abstraction” in Scala.
Take a wrapper (newtype) structure like:
case class Box[A](value: A)
A simple local expression like `Box(42).value` has much more overhead than you would think:
1. Allocation of 12 bytes on the heap for Box
Go is a brilliant solution to the problem of adding engineers with a random background to a project and having them be immediately productive without creating terrible messes due to inexperience.
I am honored to announce that, in recognition of our open source work,
@zivergetech
has been selected by
@goodcover
to build a next-gen OSS framework for long-running, fault-tolerant workflows.
Great things ahead for Scala, ZIO, & fans of FP!💥💪👇
My acclaimed keynote from earlier this month, "What Scala Can Learn from Rust", has JUST been released today:
What do you think YOUR language can learn from Rust? What do you think Rust can learn from other languages??
Share your thoughts below! 👇
The programming language Go has proven beyond all doubt that familiar, simple boilerplate is no impediment to adoption.
Functional programmers should learn carefully from this, wisely weighing the pros and cons of using 'fancy' techniques to eliminate boilerplate.
Functional programming doesn't need new languages, new effect systems, or new monad tutorials.
To win, FP needs killer libraries, which deliver compositional, type safe, ergonomic solutions to real problems.
I want to win. Do you?
Just blogged, 'An Introduction to Functional Design'.
You've heard of object-oriented design. But what's functional design, and how can you use it to solve real world problems?
Find out more below! 👇
#scala
#fp
Modern programmers would not be able to write usable applications for an 8080 with 1 MB total RAM.
They write barely usable mobile apps today, and that's with 6 cores running at 3.4 Ghz each and 6 GB RAM.
Kids these days!
Moore's precept is doing well: computing power increases and gets cheaper over time. But the quality of software can either deliver these gains or cancel them. I am using a few mobile applications that have latencies of several seconds per interaction. Get better programmers.
Too much mainstream media has devolved into tabloid trash, no longer conferring status or legitimacy.
The high-status move is to take
@balajis
' sage advice, follow
@Tesla
's playbook, and build your own media.
"Why Effect Is More Important Than ZIO"
My latest talk, just published on YouTube, talks about effect systems and growing new OSS technologies & communities.
What I say may surprise you. Don't miss it! 👇
A monad is formed by any generic data type (internal DSL) that models both return values and sequential computation.
Though few developers using monads actually understand this, monads represent an embedding of imperative programming into purely functional programming.
Beginning functional programmers ask, "What is this strange abstraction 'Monad'?" whose answer could only satisfy a mathematician.
Instead, they should ask, "Which concrete data types have the Monad structure, and what specific problems does this structure help you solve?"
Postmodernism has recently infected software engineering with comforting ideas, which are nonetheless false, and if you want an exceptional career in programming, you will reject them.
1/10
Protip for API design: because IDEs and text editors auto-complete primarily by prefix, variations of a method should be distinguished through suffixes.
Bad:
foreach, parForeach, boundedForeach
Good:
foreach, foreachPar, foreachBounded
More secure and faster than Circe, ZIO JSON features powerful, compositional encoders and decoders, and blazing fast single-line derivation powered by Magnolia.
This is the JSON library you were always looking for. Now available via snapshot releases!
Things I'm enjoying about Rust so far:
Tooling. Cargo is an amazing build tool & package manager; Rust-analyzer is rock-solid, working on cross-platform code bases for days on end; and the compiler has fantastic linting & actionable errors.
OSS Ecosystem. There are multiple
Another unpopular opinion: most designers of functional programming languages would benefit more day to day from working on large enterprise software than compilers.
Unpopular programming opinion: most programmers would benefit more day to day from learning a functional language than something very low level like C or ASM
ZIO CLI, already a formidable solution to building command-line applications, is getting support for OAuth2, so you can build authenticated command-line applications in just a couple lines of code! 🎉
In functional Scala, 'map' should be called 'to', and 'contramap' should be called 'from'.
e.g.:
people. map(_.age)
vs
people. to(_.age)
encoder. contramap(Email(_))
vs
encoder. from(Email(_))
Fight me! 😉
Just blogged, 'Supporting Martin Odersky & Other Scala OSS Developers'.
Travis Brown's behavior is completely unacceptable, and by attacking more than just me, he crossed a line.
Resilient: Your system can gracefully and correctly handle errors from other systems.
Robust: Your system can gracefully and correctly handle errors from inside itself.
Reliable: Your system is both resilient and robust.
Scala 3's extension method syntax has changed quite a few times, but I could not be happier where it ended up.
These are the extension methods we've all been waiting for! 🎉
Functional programming language features absorbed into mainstream:
- lambdas / anonymous functions (10 years)
- immutable data (5 years)
- pattern matching (now)
Our evil plan to improve all programming languages is working. 😉
If you don't have any hard skills, you're not an engineer.
If you don't have any soft skills, you're an engineer who could benefit from communication training.
Ergo, hard skills are more important.
Wonderful news, folks! 😱
A Scala developer accepted our offer and will soon be hard at work bringing 'backend WASM' to Scala! 🎉💪
This is far more significant than Scala Native for the future of the Scala programming language.
Thanks to all who spread the bounty offer! 🙏
I will offer a time-limited $20k bounty to whoever improves Scala's WASM support to target WASI and the component model 0.2 ("backend WASM").
The failing Scala Center can't stop me from investing into Scala this time. 😜
I'm astounded and grateful for ZIO's success. 🙏
400+ contributors. Fortune 500 users. Ports to half a dozen programming languages.
Now, a year after ZIO 1.0, we are delighted to give you a taste of what's next in ZIO 2.0 M1! 💥🎉
Get it hot! 🔥👇
In many ways, Rust is very similar to Scala, and no, I'm not talking about the drama! 😆
Let's see if I can teach you Scala developers the basics of Rust in 10 tweets! 🤔
Ready? Let's go! 👇
Literal billions were lost on the Crowdstrike bug, but your manager or coworkers will say, 'Nah, we don't need Rust, we're doing just fine with <unsafe language>'.
Your time will come, trust me. 😜
Functional programmers rightly criticize Spring, for a lack of algebraic structure, type safety, and compositionality.
But to see the drawbacks without understanding why Spring so popular is to miss the forest for the trees.
Technologies are not all good nor all bad, but a mix.
The big news that
@adamfraser
announced at this morning's
@FunScala2021
keynote is that ZIO 2.0's adaptive scheduler automatically learns where your code blocks and shifts it to the blocking thread pool. 🎉😱🕺
Literally so many companies are hiring for functional Scala developers like crazy, it's never been a better time to get paid to write purely functional code. 💪
"Why can't John just ignore Scala's weaknesses and let the language die in peace."
Because Scala is a powerful language with unrealized commercial potential, and I want to see it flourish, not wither.
Afraid you're stuck with me for now. 😉
This is exactly where Scala ZIO landed:
- typed error channel for recoverable, expected errors
- untyped error channel for non-recoverable, unexpected errors
It's a very simple idea, yet has a profoundly positive impact on error management.
Took us decades to figure out!
After many years with Rust, I'm allergic to exceptions.
Rust's error handling is far from perfect, but Result types + panics is intuitive and safe. We communicate possible errors via the API.
"API + unstable list of possible exceptions" gives me anxiety--too many past scars.
For the past year, I’ve told you something big is coming.
A radical shift in the way we build reliable distributed systems.
On August 23rd, it’s time to unwrap the 1.0 edition of our contribution to durable computing.
Don't miss it--join me below!
Hot off the press:
@deusaquilus
announces at ZIO Hackathon 2021 that Quill is moving over to the ZIO organization, and rebranding as ZIO Quill, with better integration than ever before. 🎉❤️💪
You can't judge the seniority of a developer by what they know. You have to look at their skills.
Highly senior developers can debug anything and maintain anyone else's code.
You get there with practice, not book knowledge.