diff options
| -rw-r--r-- | about.tex | 12 | ||||
| -rw-r--r-- | cv.tex | 24 | ||||
| -rw-r--r-- | education.tex | 18 | ||||
| -rw-r--r-- | experience.tex | 113 | ||||
| -rw-r--r-- | projects.tex | 11 | ||||
| -rw-r--r-- | rydholm-gustaf-cv.pdf | bin | 88430 -> 250139 bytes | |||
| -rw-r--r-- | technical.tex | 29 | ||||
| -rw-r--r-- | todo.org | 6 |
8 files changed, 98 insertions, 115 deletions
@@ -3,11 +3,11 @@ \about{ -I like to tinker with computers/software, learning about good software architecture, and -mathematics. I am captivated by the beauty of functional programming and I am going down -the rabbit hole of learning some category theory for the sake of it. My current long term -goal is to finish developing/deploy my stock trading system. In the mean time, I am -looking for work where I can enhance my functional programming skills and generate value -for the shareholders of the company. +I am a backend engineer with a passion for functional programming and building robust, +maintainable systems. Over the past five years, I have designed event-driven microservices +and cloud-native architectures, increasingly adopting functional paradigms—from +railway-oriented programming in Kotlin to studying Haskell, OCaml, and category theory. +I am seeking a role where I can work full-time in Haskell, applying functional principles +to real-world business problems while continuing to grow as an FP practitioner. } @@ -1,12 +1,12 @@ \documentclass[7pt, oneside]{article} -\usepackage[a4paper, top=0.4in, bottom=0.3in]{geometry} +\usepackage[a4paper, top=1in, bottom=0.3in]{geometry} \usepackage[english]{babel} \usepackage[T1]{fontenc} \usepackage{lmodern} \usepackage{csquotes} \usepackage{float} \usepackage{titlesec} -\usepackage{ebgaramond} +% \usepackage{ebgaramond} \usepackage{booktabs} \usepackage{siunitx} @@ -29,6 +29,7 @@ \usepackage{nicefrac} % compact symbols for 1/2, etc. \usepackage{microtype} % microtypography +\usepackage{libertine} \usepackage{fontawesome} \usepackage{environ} \usepackage{tabularx} @@ -50,7 +51,7 @@ {0em} {} -\newcommand{\ruler}[0]{\noindent{\color{gray}\rule{\textwidth}{.2pt}}\par\vspace{0.1cm}} +\newcommand{\ruler}[0]{\noindent{\color{gray}\rule{\textwidth}{.2pt}}\par\vspace{-0.8em}} \newcommand{\largesubsection}[1]{ \normalsize\selectfont\fontshape{}\textbf{#1}} @@ -81,17 +82,19 @@ \newcommand{\skills}[2]{ \fontshape{}\footnotesize\selectfont\textbf{#1} - \vspace{0.1em} + \vspace{0.4em} \\\begin{minipage}{\textwidth} \centering\fontshape{}\scriptsize\selectfont{#2} \end{minipage} } -\newcommand{\school}[2]{ +\newcommand{\school}[4]{ % Course -\fontshape{}\footnotesize\selectfont{#1}, +\fontshape{}\footnotesize\selectfont{#1}\Hquad\textbullet\Hquad % School -\fontshape{}\footnotesize\selectfont{#2} +\fontshape{}\footnotesize\selectfont\textbf{#2}\Hquad\textbullet\Hquad +\fontshape{}\footnotesize\selectfont{#3}\Hquad\textbullet\Hquad +\fontshape{}\footnotesize\selectfont{#4} } \newcommand{\projects}[1]{ @@ -110,10 +113,9 @@ \ruler \input{experience} \ruler - \vspace{-0.5cm} - \input{projects} - \ruler - \vspace{-0.5cm} + % \vspace{-0.5cm} + % \input{projects} + % \ruler \input{education} \ruler } diff --git a/education.tex b/education.tex index 58df349..9319157 100644 --- a/education.tex +++ b/education.tex @@ -1,18 +1,16 @@ \section{Education} -\vspace{-0.2cm} - -\school{\textbf{M.Sc., Electrical Engineering}} -{\textbf{KTH Royal Institute of Technology} (2013 -- 2018)} - -\begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \school{Exchange Year}{\textbf{Imperial College London} (2016 -- 2017)} -\end{itemize} +\school{M.Sc., Electrical Engineering} +{Kungliga Tekniska Högskolan (KTH)} +{Stockholm, Sweden} +{2013 -- 2018}\\ +\school{Exchange Year} +{Imperial College London} +{London, UK} +{2016 -- 2017}\\ %\school{Dalian University of Technology} %{Summer program in basic Mandarin and Chinese culture} %{2014} %{A summer program where I improved my understanding of Chinese culture and the Mandarin language.}\\ - -%\ruler diff --git a/experience.tex b/experience.tex index c4ae483..b976c13 100644 --- a/experience.tex +++ b/experience.tex @@ -1,58 +1,57 @@ \section{Experience} -\vspace{-0.2cm} -% According to Google Recruiters, use the XYZ formula - Accomplished [X] as measured by [Y], by doing [Z] \company{Software Engineer} {Nexure/Electrolux AB} {Stockholm, Sweden} {Aug 2021 -- present} { -Designed and maintained backend services for Appliance Repair Service Platforms using functional programming principles in Kotlin, supporting Sweden/NA launches and EU expansion. +Backend engineer on Appliance Repair Service platforms (Sweden, North America, EU) +within a 100+ microservice ecosystem. Primary contributor to 10+ services, introducing +functional programming patterns to Kotlin codebases. \vspace{0.25em} \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \textbf{Functional Architecture}: Implemented immutable data models and \textbf{railway-oriented} error handling in Kotlin, mirroring Haskell Either monad and patterns. - \item Event-Driven Systems: Built audit trails and transaction synchronization scripts for insurance processing (bordereau), handling 10K+ daily events – directly applicable to event sourcing. - \item Cloud-Native Infrastructure: Deployed Kubernetes services on EKS using Helm/Terraform, managing stateful PostgreSQL workloads and AWS data services (SQS/SNS). - \item Data Integrity: Optimized complex SQL queries for PostgreSQL and resolved cross-database inconsistencies. - \item Security and Auth: Engineered JWT validation libraries and permission APIs, securing microservices with Auth0. - \item \textbf{Tech Stack}: Kotlin (functional paradigms) \textbullet\ PostgreSQL \textbullet\ Kubernetes/EKS \textbullet\ AWS \textbullet\ Terraform \textbullet\ Event-Driven Architecture \textbullet\ Auth0 \textbullet\ Datadog + \item \textbf{Functional Programming:} Applied railway-oriented error handling, + immutable data models, and shared type libraries across services, bringing Haskell's + Either monad patterns to Kotlin. Emphasized type safety and composability in API design. + \item \textbf{Service Development:} Built subscription, payment, and user management + microservices with Kotlin/Ktor. Developed RESTful and WebSocket APIs with asynchronous + event processing via SQS/SNS for non-blocking workflows. + \item \textbf{Security \& Access Control:} Engineered JWT validation library for Auth0 + and permission enforcement APIs with resource-level access control, verifying user + permissions and resource ownership across services. + \item \textbf{Infrastructure:} Configured Kubernetes resources (deployments, services, + secrets, ConfigMaps) and contributed Terraform resources (SNS, SQS, ingresses) to + shared infrastructure codebase. + \item \textbf{Tech Stack}: Kotlin (Ktor) \textbullet\ PostgreSQL \textbullet\ + Kubernetes/EKS \textbullet\ AWS \textbullet\ Terraform \textbullet\ Auth0 \end{itemize} } -% \company{Software Engineer} -% {Nexure/Electrolux AB} -% {Stockholm, Sweden} -% {Aug 2021 -- present} -% { -% Designed and maintained backend services for Appliance Repair Service Platforms using functional programming principles in Kotlin, supporting Sweden/NA launches and EU expansion. -% \vspace{0.25em} -% \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] -% \item Developed \textbf{subscriptions engine} and \textbf{user management service} using \textbf{Kotlin} and \textbf{Ktor}, enabling features like recurring payments and user account management. -% \item Contributed to \textbf{Auth0 migration} of users from legacy to new platform, ensuring seamless transitions without user intervention. -% \item Developed \textbf{synchronization scripts} to update \textbf{APIs}, roles, and permissions in \textbf{Auth0}, ensuring consistency across dev, staging, and prod environments. -% \item Introduced \textbf{type library} for shared business logic across \textbf{microservices}, enhancing code consistency and maintainability. -% \item Built \textbf{JWT deserialization} library and \textbf{APIs} for permission-based checks on \textbf{HTTP} and \textbf{WebSocket} endpoints, securing all public-facing services. -% \item Introduced \textbf{railway-oriented} and \textbf{workflow-oriented programming}, improving error handling and process clarity in \textbf{microservices}. -% \item Supported two in-house platform launches in Sweden and North America for \textbf{Appliance Repair Service} features, with ongoing EU expansion. -% \item Contributed to \textbf{infrastructure} via \textbf{Terraform} for \textbf{AWS} resources (RDS, SNS, SQS). -% \item Enhanced legacy platform with \textbf{Appliance Repair Service} features, including bordereau for insurance transactions, -% tax calculation updates, and cross-database record corrections, improving system reliability. -% \item Tech stack: \textbf{Kotlin} (Ktor), \textbf{Kubernetes}, \textbf{PostgreSQL}, \textbf{MongoDB}, \textbf{Helm}, \textbf{Terraform}, \textbf{AWS}, \textbf{CI/CD}, \textbf{WebSocket}, \textbf{Auth0}, \textbf{DataDog}. -% \end{itemize} -% } - \company{Machine Learning Engineer (Cybersecurity)} {Saab AB} {Stockholm, Sweden} {Aug 2020 -- Aug 2021} { \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \textbf{Event-Driven Architecture}: Architected \textbf{Kafka-driven microservices} for sensor data ingestion and processing, replacing batch-based database fetching and improving system responsiveness. - \item \textbf{Automated Model Deployment}: Developed modular Python pipelines for training and evaluating deep learning models, enabling \textbf{automated selection} of optimal models to production. This system streamlined the transition from research to deployment. - \item \textbf{Cloud-Native Optimization}: Reduced Docker image sizes from 2GB to 73MB using multistage builds and Alpine Linux. This improved CI/CD pipeline efficiency, slashing average build times from 10–30 minutes to under 10 seconds with \textbf{Tekton}. - \item \textbf{Distributed Systems}: Engineered a \textbf{graph-based sensor fusion microservice} to correlate data across sensors, enhancing complex pattern analysis for anomaly/threat detection. - \item \textbf{DevOps Leadership}: Spearheaded development tooling practices, deploying and maintaining a private PyPI server to enforce versioning and resolve dependency conflicts, improving team productivity. - \item \textbf{Tech Stack}: Python, Kafka, Kubernetes, PostgreSQL, Redis, TensorFlow, Tekton, Docker. + \item \textbf{Event-Driven Architecture:} Architected Kafka-based microservices for + sensor data ingestion and processing, replacing batch-based database polling. Enabled + multiple services to subscribe to incoming data streams for parallel processing and + pattern analysis. + \item \textbf{Sensor Fusion System:} Developed graph-based microservice for correlating + data across heterogeneous sensor systems, enabling downstream services to perform + complex pattern analysis and anomaly detection. + \item \textbf{ML Pipeline Infrastructure:} Built modular Python pipelines for training + and evaluating deep learning models with automated metric-based model selection for + production deployment. + \item \textbf{DevOps \& Infrastructure:} Redesigned Docker build strategy across all + Python microservices, reducing image sizes from ~2GB to ~73MB using multistage builds + and Alpine base images. This eliminated persistent storage issues in self-hosted Docker + registry and reduced CI/CD build times from 10-30 minutes to seconds in Tekton. + \item \textbf{Developer Tooling:} Deployed and maintained private PyPI server for <10 + developers, eliminating circular dependencies and enforcing proper package versioning. + Significantly improved code quality and development workflow across the team. + \item \textbf{Tech Stack}: Python \textbullet\ Kafka \textbullet\ Kubernetes + \textbullet\ PostgreSQL \textbullet\ Redis \textbullet\ Tekton \textbullet\ Docker \end{itemize} } @@ -62,39 +61,9 @@ Designed and maintained backend services for Appliance Repair Service Platforms {Aug 2018 -- Aug 2020} { \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \textbf{Signal Processing}: Built simulation software for realistic radar/communication signal environments, enabling training and evaluating machine learning models for electronic warfare applications. - \item \textbf{Algorithm Research}: Researched and prototyped multiple stages of the radar warning receiver with machine learning models, focusing on improving signal classification (communication vs radar) and source grouping. - \item \textbf{Tech stack}: Python, VHDL, Signal Processing. + \item Built signal simulation software for radar and communication environments, enabling + team to train and evaluate ML models. Researched ML approaches for signal classification + under compute and data constraints. + \item \textbf{Tech Stack}: Python \textbullet\ Signal Processing \end{itemize} -} - -% \company{Machine Learning Engineer} -% {Saab AB} -% {Stockholm, Sweden} -% {Aug 2018 -- Aug 2021} -% { -% Developed machine learning solutions for defense systems, creating \textbf{data pipelines}, \textbf{machine learning models}, \textbf{microservices}, and \textbf{CI/CD workflows} for cybersecurity and electronic warfare applications. -% \vspace{0.25em} -% \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] -% \item Built \textbf{Python}-based \textbf{data pipelines}, automating dataset preprocessing for machine learning. -% \item Architected \textbf{asynchronous microservices} with \textbf{Kafka}, enabling continuous sensor data subscription and processing across services, improving system responsiveness over batch-based database fetching. -% \item Designed modular \textbf{PyTorch pipelines} for \textbf{deep learning} model training and evaluation, automating best-model selection for production deployment of trajectory prediction models. -% \item Implemented trajectory prediction models with \textbf{LSTM} and \textbf{transformer} based architectures for anomaly detection. -% \item Deployed a private \textbf{PyPI server}, enforcing versioning and resolving dependency conflicts, improving development experience for the entire team. -% \item Developed a \textbf{graph-based} \textbf{sensor fusion} microservice, enhancing complex pattern analysis for cybersecurity applications. -% \item Optimized \textbf{Docker images} from 2GB to 73MB using \textbf{multistage builds} and Alpine, reducing CI/CD build times from 10--30 minutes to under 10 seconds with \textbf{Tekton}. -% \item Researched replacing different stages of the radar warning receiver with machine learning models, enhancing classification of communication vs radar signals, improving detection of Low Probability of Intercept radar pulses. -% \item Tech stack: \textbf{Python} (Pandas, PyTorch, FastAPI), \textbf{Kafka}, \textbf{Redis}, \textbf{PostgreSQL}, \textbf{ArangoDB}, \textbf{Kubernetes}, \textbf{Helm}, \textbf{Docker}, \textbf{Tekton}, \textbf{VHDL}. -% \end{itemize} -% } - - -%\company{Master's Thesis} -%{Ericsson AB} -%{Jan 2018 -- June 2018 \qquad 6 months} -%{Stockholm, Sweden} -%{ -%Built a \textbf{natural language processing} system using a biologically %inspired machine learning algorithm, called \textbf{Hierarchical Temporal %Memory}, for detecting anomalies in system logs. Demonstrated that the system %was able to achieve similar performance to the existing system. Developed with %\textbf{Python}, \textbf{NuPIC}, and \textbf{pandas}. -%}\\ - -%\ruler +}\\ diff --git a/projects.tex b/projects.tex index 1615871..05339f9 100644 --- a/projects.tex +++ b/projects.tex @@ -3,11 +3,12 @@ \projects{ \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \href{https://github.com/aktersnurra/rag}{\textbf{Agentic AI/RAG}:} I developed a Retrieval Agumented Generation system for my local books and articles. However, I am currently refactoring it to an \textbf{agentic ai} system with \textbf{effect handlers}. - \item \href{https://github.com/aktersnurra/rag}{\textbf{Trading Robot}:} I am currently working on a algorithmic trading system with signal processing and convex optimization. I mostly done literature study and data collection so far. - \item \textbf{Unix Sysadmin:} I self host many application, such as: email, website, git server, encrypted chat server (xmpp), and calendar. - \item \textbf{Unix Ricing:} riced my unix systems with st terminal, dwm, dmenu, tmux etc - \item \textbf{neovim:} rolled my own neovim config + \item \textbf{Functional Programming Exploration:} Refactoring Python RAG system to + use effect handlers (eff package), applying algebraic effects patterns to manage I/O. + Practicing Haskell through Advent of Code and studying category theory concepts. + \item \textbf{Self-Hosted Infrastructure:} Operate personal server infrastructure + including email, XMPP chat, Git server, and website. Handle system administration, + security, and service maintenance. \end{itemize} } diff --git a/rydholm-gustaf-cv.pdf b/rydholm-gustaf-cv.pdf Binary files differindex b8de184..4aa2ebf 100644 --- a/rydholm-gustaf-cv.pdf +++ b/rydholm-gustaf-cv.pdf diff --git a/technical.tex b/technical.tex index 91ec77d..282136d 100644 --- a/technical.tex +++ b/technical.tex @@ -3,24 +3,31 @@ \skills{Programming Languages}{ \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item Haskell \textit{(Intermediate)} - \textbullet\ Kotlin \textit{(Fluent)} - \textbullet\ Python \textit{(Fluent)} - \textbullet\ OCaml \textit{(Basic)} - \textbullet\ Fennel \textit{(Proficient)} + \item \textbf{Haskell} \textit{(Intermediate)} + \textbullet\ Kotlin \textit{(Fluent)} + \textbullet\ Python \textit{(Fluent)} + \textbullet\ OCaml \textit{(Basic)} + \textbullet\ Fennel \textit{(Proficient)} + \textbullet\ SQL \textit{(Proficient)} \textbullet\ Elixir \textit{(Basic)} \end{itemize} } - \skills{Core Competencies}{ \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item \textbf{Functional Programming:} Railway-Oriented Programming, Workflow-Oriented Programming, Monads, Type Systems, Immutability, Effect Handlers, Category Theory \textit{(studying)} - \item \textbf{API Design:} RESTful APIs, \textbf{Idempotency}, Rate Limiting, Versioning - \item \textbf{Event-Driven Systems:} Kafka, SQS, Message-Passing Architectures - \item \textbf{Cloud/Infrastructure/DevOps:} Kubernetes, AWS (EKS), Terraform, Docker, Helm, Auth0, DataDog, CD/CI (Github Actions, CircleCI, Tekton) - \item \textbf{Databases:} PostgresSQL, MongoDB, Redis, Qdrant + \item \textbf{Functional Programming:} Monads, Applicatives, Functors, Railway-Oriented Programming, Workflow-Oriented Programming, Type Systems, Immutability, Effect Handlers, Category Theory \textit{(studying)} + \item \textbf{Event-Driven \& Distributed Systems:} Kafka, SQS/SNS, Message-Passing Architectures, Asynchronous Processing, Microservices + \item \textbf{Databases:} PostgreSQL, MongoDB, Redis, TimescaleDB, Complex SQL Queries, Schema Design, Data Integrity + \item \textbf{Cloud \& Infrastructure:} AWS (EKS, RDS, SNS, SQS, S3), Kubernetes, Terraform, Docker, Helm + \item \textbf{DevOps \& Tooling:} CI/CD (GitHub Actions, CircleCI, Tekton), DataDog, Auth0 \end{itemize} +}\\\\ + +\skills{Tools \& Workflow}{ + \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] + \item \textbf{Custom Unix environment:} dwm (tiling WM), st terminal, Neovim, tmux, dmenu + \item Miscellaneous: Git worktrees, Self-hosted infrastructure (email, git, XMPP), Shell scripting + \end{itemize} } % \programming{Haskell -- Familiar}{ diff --git a/todo.org b/todo.org new file mode 100644 index 0000000..c8d61d4 --- /dev/null +++ b/todo.org @@ -0,0 +1,6 @@ +* TODO fix linkedin text +- add category theory +- add mcp tools etc +- add algebraic effects + +* TODO Update cv with llm help |