FP Complete

Levana NFT Launch

FP Complete Corporation, headquartered in Charlotte, North Carolina, is a global technology company building next-generation software to solve complex problems.  We specialize in Server-Side Software Engineering, DevSecOps, Cloud-Native Computing, Distributed Ledger, and Advanced Programming Languages. We have been a full-stack technology partner in business for 10+ years, delivering reliable, repeatable, and highly secure software.  Our team of […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 4

This is the fourth and final post in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server Today’s post: How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 3

This is the third of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Understanding Hyper, and first experiences with Axum Today’s post: Demonstration of Tonic for a gRPC client/server How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 2

This is the second of four posts in a series on combining web and gRPC services into a single service using Tower, Hyper, Axum, and Tonic. The full four parts are: Overview of Tower Today’s post: Understanding Hyper, and first experiences with Axum Demonstration of Tonic for a gRPC client/server How to combine Axum and […]

Combining Axum, Hyper, Tonic, and Tower for hybrid web/gRPC apps: Part 1

I’ve played around with various web server libraries and frameworks in Rust, and found various strengths and weaknesses with them. Most recently, I put together an FP Complete solution called Zehut (which I’ll blog about another time) that needed to combine a web frontend and gRPC server. I used Hyper, Tonic, and a minimal library […]

Announcing Amber, encrypted secrets management

Years ago, Travis CI introduced a method for passing secret values from your repository into the Travis CI system. This method relies on encryption to ensure that anyone can provide a new secret, but only the CI system itself can read those secrets. I’ve always thought that the Travis approach to secrets was one of […]

Rust’s as_ref vs as_deref

What’s wrong with this program? fn main() { let option_name: Option<String> = Some(“Alice”.to_owned()); match option_name { Some(name) => println!(“Name is {}”, name), None => println!(“No name provided”), } println!(“{:?}”, option_name); } The compiler gives us a wonderful error message, including a hint on how to fix it: error[E0382]: borrow of partially moved value: `option_name` –> […]

Intermediate Training Courses – Haskell and Rust

I’m happy to announce that over the next few months, FP Complete will be offering intermediate training courses on both Haskell and Rust. This is a follow up to our previous beginner courses on both languages as well. I’m excited to get to teach both of these courses. More details below, but cutting to the […]

The Pains of Path Parsing

I’ve spent a considerable amount of coding time getting into the weeds of path parsing and generation in web applications. First with Yesod in Haskell, and more recently with a side project for routetypes in Rust. (Side note: I’ll likely do some blogging and/or videos about that project in the future, stay tuned.) My recent […]

Captures in closures and async blocks

This blog post is the second in the Rust quickies series. In my training sessions, we often come up with quick examples to demonstrate some point. Instead of forgetting about them, I want to put short blog posts together focusing on these examples. Hopefully these will be helpful, enjoy! FP Complete is looking for Rust […]