Articles feature image
John A De Goes bio photo

John A De Goes

Twitter LinkedIn Github

Articles

2023

A Splendid Scala Journey

My heartfelt thoughts, reflections, and notes on my 15 year Scala journey, and on what's next for me

New Scala Build Tool

Scala needs a new build tool to replace the aging SBT, but that new build tool needs to learn from mistakes of the past, rather than repeat them

Scala Resurrection

Scala's market may not grow any larger unless we take action to address the challenges the language faces

2022

Native Config Lands in ZIO 2.0

With logging and metrics already baked in, configuration was inevitable

ZIO 2.0 Released

After almost 2 years in development, ZIO 2 is ready to change the world of functional programming

2021

Supporting Martin Odersky & Other Scala OSS Developers

Travis Brown may have left Scala, but his pattern of online abuse won't stop until enough people stand up to him

Improving the Scala Community Through Personal Action

It is possible to improve the Scala community not by pointing fingers, but by being the change we want to see in the community

Improvements to the ZIO Organization

The ZIO organization needs to use its strong position in the Scala community to bind together all Scala developers for a common good

2020

An Introduction to Functional Design

Functional design is a framework for using functional programming to solve every day problems, without jargon or fancy techniques

ZIO 1.0 Released

After 3 years and more than 300 contributors, my pet project has finally grown up

Effect Tracking Is Commercially Worthless

Effect tracking is not a non-goal for commercial software development; the real reasons to use functional effect systems lie elsewhere

A Brief History of ZIO

A brief history that explains the purpose of ZIO and how it relates to similar libraries in the Scala ecosystem

A Developer's Guide to Surviving the Coronapocalypse

The COVID-19 pandemic is rapidly changing the world, and these changes will impact developers everywhere

2019

A Glossary of Functional Programming

Functional programming has a bit of jargon, but that doesn't have to stop you from understanding core concepts

The False Hope of Managing Effects with Tagless-Final in Scala

Using tagless-final to manage effects has seen some buy-in in the Scala community, but the benefits are questionable and the drawbacks significant

Why I'm Stepping Back from Scalaz

After more than two years of evangelizing Scalaz, I'm stepping back, and here's why.

Type Classes: When To Use Them, When To Avoid Them

Type classes offer powerful capabilities, but knowing when to use them and when to avoid them is not simple.

ZIO & Cats Effect: A Match Made in Heaven

ZIO is a compelling effect type for working with the great Cats Effect ecosystem.

The Functional Scala Concurrency Challenge

A fun little challenge to improve your skills using FP for concurrency.

Testing Incrementally with ZIO Environment

Environmental effects let you easily, quickly, and incrementally build tesable services.

Beautiful, Simple, Testable Functional Effects for Scala

Tagless-final has given us testable functional effects, but at great cost. Now ZIO provides an easier way.

Thread Pool Best Practices with ZIO

Thread pool management used to be hard; with ZIO, it's now free.

High-Performance Functional Programming Through Effect Rotation

Vertical composition of effects, like monad transformers, don't perform very well. Rotate effects for higher performance.

2018

Using ZIO with Tagless-Final

ZIO's new bifunctor design works beautifully with tagless-final style, with or without modifications.

Data Modeling in FP vs OOP

A post that examines whether or not object-oriented programming is better suited to data modeling than functional programming.

Scala Wars: FP-OOP vs FP

Modeling effects in Scala with pure FP provides compelling advantages over FP-OOP alternatives.

Bifunctor IO: A Step Away from Dynamically-Typed Error Handling

Too long has sloppy, imprecise error handling been the norm in effect systems. Time for precision—time for bifunctor IO!

No More Transformers: High-Performance Effects in Scalaz 8

Scalaz 8 eschews monad transformers, which have proven themselves to be impractical in Scala.

Will The Real Blockchain Stack Please Stand Up?

Successful blockchain applications won't be built on top of blockchain platforms.

FCOP Nears 1.0 Release

See how the release candidate for FCOP 1.0 compares to other common codes of conduct.

Everything You Know About the Blockchain Is Wrong

Prepare to unlearn everything you have learned to discover what blockchain is really about.

2017

There Can Be Only One...IO Monad

Effect monads are proliferating in Scala, but unlike many other data structures, more effect monads are not necessarily a good thing.

Why I'm Excited About Scalaz 8

Scalaz 8 builds on a long-tradition of pushing the boundaries of pure functional programming in Scala.

Data Structures Are Antithetical to Functional Programming

Writing code that expects concrete data structures inhibits code reuse.

Balaji Srinivasan: Saying Goodbye to One of Twitter's Brightest

In an instant, @baljis deleted all of his tweets and left Twitter, which has left everyone wondering why.

2016

A Beginner-Friendly Tour through Functional Programming in Scala

An educational experiment that strips away jargon and develops some functional machinery from first-principles

Descriptive Variable Names: A Code Smell

Polymorphic code is more likely to be correct than monomorphic code

FIOL Code of Professionalism (FCOP)

Introducing FCOP, a code of conduct for professional communities

Modern Functional Programming: Part 2

The onion architecture may be the future of large-scale FP

Twitter's Fucked

The Twitter product is defective, broken beyond all hope of repair

Destroy All Ifs — A Perspective from Functional Programming

Replace conditionals with lambdas for simpler code that's more powerful

Post-LambdaConf 2016

There is a place in this world for a conference inclusive of all peaceful diversity

Final Statement on the LambdaConf Controversy

We want professional ethics and a great FP conference

Personal Thoughts on the LambdaConf Controversy

Maybe the best answer is different conferences for different communities

Wrestling With Inclusion at LambdaConf

How far is too far when it comes to including people with different beliefs?

Is LambdaConf For Conservative Christians, Too?

Thoughts on living together in a world filled with diversity.

2015

A Modern Architecture for FP

Death to IO monads: FP has better tools that point the way towards the future.

Dear Engineer: So, You Wanna Become an Entrepreneur?

Lots of engineers have gone from coding to business-building, but it's not an easy transition.

Five Weird Tricks to Incite Hatred and Piss Off Everyone

Too much love in the world? Follow these five easy tricks to inflaming emotions and making enemies.

2014

Stop Being "Nice" and Just Tell the Fucking Truth Already

Telling the truth, even if it's unpleasant, can sometimes be the nicest thing you can do for someone.

10 Lessons I Learned from Doing My First Real Startup

Personal and business lessons learned from my experiences funding, growing, and selling Precog.

Newtypes Aren't As Cool As You Think

Why newtyping that next data type may not buy you as much as you think it does.

Haskell's Type Classes: We Can Do Better

Ideas on how to fix some of what's wrong with type classes.

Sorry, Fanboys, There Will Be No Rise of the Machines

While popular among some entrepreneurs and sci-fi writers, the machines ain't ever gonna rise.

The Rise (and Fall?) of NoSQL

NoSQL is exploding in popularity, with serious ramifications for the entire database industry.

Functional Programming Isn't the Answer

Functional programming is a means to an end, not an end in itself.

First Post

No content here, please ignore.