FP Complete

Monads and GATs in nightly Rust

This blog post was entirely inspired by reading the GATs on Nightly! Reddit post by /u/C5H5N5O. I just decided to take things a little bit too far, and thought a blog post on it would be fun. I want to be clear from the start: I’m introducing some advanced concepts in this post that rely […]

Understanding Cloud Software Deployments

Application development has changed drastically in the past decade. Client-side applications used to be just that: client-side. Desktop applications used to be self-contained. They sat in sharp contrast to web applications, which inherently required some hybrid of server- and client-side programming. But the world has changed. Whether it’s for automated cloud backup, more advanced server-side […]

Error handling is hard

This blog post will use mostly Rust and Haskell code snippets to demonstrate its points. But I don’t believe the core point is language-specific at all. Here’s a bit of Rust code to read the contents of input.txt and print it to stdout. What’s wrong with it? fn main() { let s = std::fs::read_to_string(“input.txt”).unwrap(); println!(“{}”, […]

An ownership puzzle with Rust, async, and hyper

Most of the web services I’ve written in Rust have used actix-web. Recently, I needed to write something that will provide some reverse proxy functionality. I’m more familiar with the hyper-powered HTTP client libraries (reqwest in particular). I decided this would be a good time to experiment again with hyper on the server side as […]

Deploying Rust with Windows Containers on Kubernetes

A few years back, we published a blog post about deploying a Rust application using Docker and Kubernetes. That application was a Telegram bot. We’re going to do something similar today, but with a few meaningful differences: We’re going to be deploying a web app. Don’t get too excited: this will be an incredibly simply […]

A Paradigm Shift is Key to Competing

It used to be that being technically mature was thought to be a good thing; now, that view is not so cut and dried.  As you look at topics like containerization, cloud migration, and DevOps, it is easy to see why young companies get to claim the term “Cloud Native.” At the same time, those […]

DevOps in the Enterprise: What could be better? What could go wrong?

Is it Enterprise DevOps or DevOps in the enterprise?  I guess it all depends on where you sit.  DevOps has been a significant change to how many modern technology organizations approach systems development and support.  While many have found it to be a major productivity boost, it represents a threat in “BTTWWHADI” evangelists in some […]

Collect in Rust, traverse in Haskell and Scala

There’s a running joke in the functional programming community. Any Scala program can be written by combining the traverse function the correct number of times. This blog post is dedicated to that joke. In Rust, the Iterator trait defines a stream of values of a specific type. Many common types provide an Iterator interface. And […]

Cloud for Non-Natives

Does this mean if you weren’t born in the cloud, you’ll never be as good as those who are? When thinking about building from scratch or modernizing an existing technology environment, we tend to see one of a few different things happening: Staff will read up, and you will try it on your own. Managers […]

Rust: Of course it compiles, right?

I recently joined Matt Moore on LambdaShow. We spent some time discussing Rust, and one point I made was that, in my experience with Rust, ergonomics go something like this: Beginner: oh cool, that worked, no problem Advanced beginner: wait… why exactly did that work 99 other times? Why is it failing this time? I’m […]