Backend software engineer
I build reliable services and explain the engineering behind them.
I am Cody Morterud, a senior software engineer based in Michigan. My work centers on backend systems, distributed workflows, cloud services, storage reliability, and codebases that remain understandable as they grow.
Engineering Focus
Backend Systems
Building .NET Service Fabric and gRPC systems, Java Spring Boot REST APIs, AWS ECS and Lambda services, and storage infrastructure.
Distributed Reliability
Owning on-call systems, tracing failures across service boundaries, preserving state consistency, and reducing noisy alerts.
Engineering Leverage
Improving test suites, CI pipelines, diagnostics, automation, and design documentation so teams can move with confidence.
Recent Work
Microsoft - Senior Software Engineer
OneDrive and SharePoint storage reliability
Designed .NET async producer-consumer upload frameworks, fixed thread-local async state bugs, reduced test runtime by 75%, and served as on-call.
Microsoft - Software Engineer II
Stateful services for AI infrastructure
Owned Service Fabric and gRPC microservices for lab provisioning, machine allocation, workflow orchestration, transactions, and recoverable distributed workflows.
Capital One - Software Engineer
AWS microservices and API performance
Owned Java Spring Boot REST services on ECS, ran zero-downtime releases, improved latency by 20%, and migrated an EC2 application to Lambda.
Technical Breadth
Beyond production backend work, I have studied and built across lower-level systems, networking, security, compilers, machine learning, and high-performance computing.
Operating Systems
User-level thread scheduling, context switching, mutexes, condition variables, virtual memory, copy-on-write, page tables, swap, and page replacement.
Networking
Distance-vector routing, BGP and SDN simulations, Mininet topologies, autonomous systems, router namespaces, and protocol failure scenarios.
Security & Cryptography
AES, PBKDF2, HMAC verification, elliptic-curve arithmetic, modular inverses, point compression, and applied security exercises.
Compilers & Analysis
LLVM passes, reaching-definition analysis, liveness analysis, fuzzing, delta debugging, datalog, and statistical debugging.
Machine Learning
Q-learning, decision trees, bagged random trees, trading strategy evaluation, market simulation, CNNs, autoencoders, and data visualization.
Parallel Computing
MPI-style collectives, CUDA list ranking, Chapel terasort, memory allocation, performance scripts, and cluster-oriented workflows.
Web Systems
Flask and SQLite applications, REST-style APIs, React frontends, static deployment, search-oriented service pages, and a basic HTTP server.
Writing
Writings on software engineering, algorithms, security, distributed-system resilience, and software design.
-
Distance Vector Routing and Distributed State
Introduction Distance vector routing is a routing algorithm where each node only knows about its neighbors and the costs advertised by those neighbors. The project I worked on simulated a network of nodes running Bellman-Ford.... -
Parallel List Ranking with OpenMP and CUDA
Introduction List ranking is the problem of assigning each node in a linked list its distance from the head of the list. For example, suppose the list is represented by an array of next pointers:... -
User-Level Threads and Backend Services
Introduction A user-level thread library implements threading without relying on the kernel to schedule each logical thread. The project I built exposed thread creation, yield, join, mutexes, and condition variables. The interesting part was not... -
Builder Pattern in C++
Introduction The builder pattern is the usage of a public static inner class to facilitate construction of objects with many member variables, especially of the same type. The key advantages of using the builder pattern... -
Single Responsibility Principle for Functions
Introduction You’re writing a function. When should you break the function up? Is this function too long? Who cares? This may be a little bit of a subjective topic, but in my junior opinion, a... -
Spring Retry Aspect Oriented Programming
Introduction Let’s say you have a microservices architecture, where the failure of an unknown system can cause the failure of your system, paraphrased from Leslie Lamport. This means that errors, or bad responses from other... -
An Introduction to Hidden Markov Models
Introduction A Hidden Markov Model, or HMM is a special case of a Bayesian Network. In the Bayesian Network representation above of a first-order HMM, there are three hidden states, and three observations. \(A\), \(B\),... -
Diffie Hellman Example with Python
Introduction Diffie Hellman key exchange is a method of constructing a shared secret between two parties. A shared secret is something that can be used as a key to conduct symmetric encryption, such as AES.... -
Genetic Algorithm Example in C#
Genetic Algorithms are used to solve optimization problems where there exists a function to evaluate the fitness of a particular potential solution. For example, finding the value of a random bitstring given a fitness function... -
Factory Pattern in C++
The factory pattern is part of a class of design patterns called creational design patterns, and the point of the factory pattern is to remove the explicit instantiation of a class out of a user’s... -
Dependency Injection in C++
This website is named after Dependency Injection because it was the first design pattern I was introduced to in my career. The usefulness of Dependency Injection is in that the implementation of a class is... -
RSA Encryption and Decryption Example by Python
RSA stands for Rivest, Shamir, and Adleman. The most common usage of RSA is the cryptosystem, one of the first asymmetric cryptosystem. By asymmetric, I mean that the key to encrypt and the key to... -
Integrating GPG with Git on Ubuntu Linux
Over the course of 3 years studying Computer Science, I have made heavy use of Bash and Git. Just last semester, I took a course called Introduction to Cryptography where I learned about secure systems,... -
The First Blog Post
def say_hello(): print("Hello everybody!") say_hello() #=> prints 'Hello everybody!' to STDOUT. Welcome to my blog! I hope you can find something useful here. I am just starting out a blog to connect with other people...
subscribe via RSS