diff options
| -rw-r--r-- | .vale.ini | 0 | ||||
| -rw-r--r-- | about.tex | 13 | ||||
| -rw-r--r-- | cv.tex | 100 | ||||
| -rw-r--r-- | education.tex | 20 | ||||
| -rw-r--r-- | experience.tex | 98 | ||||
| -rw-r--r-- | general.tex | 18 | ||||
| -rw-r--r-- | projects.tex | 37 | ||||
| -rw-r--r-- | rydholm-gustaf-cv.pdf | bin | 342085 -> 88430 bytes | |||
| -rw-r--r-- | technical.tex | 220 |
9 files changed, 257 insertions, 249 deletions
diff --git a/.vale.ini b/.vale.ini new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/.vale.ini diff --git a/about.tex b/about.tex new file mode 100644 index 0000000..f772eca --- /dev/null +++ b/about.tex @@ -0,0 +1,13 @@ +\section{About} +\vspace{-0.2cm} + + +\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. +} + @@ -1,6 +1,5 @@ -\documentclass[6pt, oneside]{article} -\usepackage[a4paper, total={6.5in,8.75in}, top=0.4in, bottom=0.3in, left=0.4in, right=0.4in]{geometry} -\usepackage[utf8]{inputenc} % Change according your file encoding +\documentclass[7pt, oneside]{article} +\usepackage[a4paper, top=0.4in, bottom=0.3in]{geometry} \usepackage[english]{babel} \usepackage[T1]{fontenc} \usepackage{lmodern} @@ -9,6 +8,10 @@ \usepackage{titlesec} \usepackage{ebgaramond} +\usepackage{booktabs} +\usepackage{siunitx} +\usepackage{xcolor} + \usepackage{enumitem} \usepackage[export]{adjustbox} \usepackage{fancyhdr} @@ -47,7 +50,7 @@ {0em} {} -\newcommand{\ruler}[0]{{\color{gray}\rule{12cm}{.2pt}\vspace{0.1cm}}} +\newcommand{\ruler}[0]{\noindent{\color{gray}\rule{\textwidth}{.2pt}}\par\vspace{0.1cm}} \newcommand{\largesubsection}[1]{ \normalsize\selectfont\fontshape{}\textbf{#1}} @@ -55,73 +58,64 @@ \newcommand{\smallsubsection}[1]{ \small\selectfont\fontshape{}\textbf{#1}} +\newcommand{\about}[1]{% + {\scriptsize #1}% Apply small font to content +} + +\newcommand{\Hquad}{\hspace{0.4em}} + \newcommand{\company}[5]{ % Job Title -\fontshape{}\footnotesize\selectfont\textbf{#1} +\fontshape{}\footnotesize\selectfont\textbf{#1}\Hquad\textbullet\Hquad % Company name -\\\fontshape{}\footnotesize\selectfont{#2} +\fontshape{}\footnotesize\selectfont{\textbf{#2}} \Hquad\textbullet\Hquad % Location, Duration -\\{\fontshape{}\scriptsize\selectfont{#3, #4}}\vspace{0.1cm} +\fontshape{}\footnotesize\selectfont{#3 \textbullet\Hquad #4}\vspace{0.1cm} % Description % According to Google Recruiters, use the XYZ formula - Accomplished [X] as measured by [Y], by doing [Z] -\\\begin{minipage}{12cm} +\\\begin{minipage}{\textwidth} \fontshape{}\scriptsize\selectfont{#5} \end{minipage} +\vspace{0.8em} } -\newcommand{\school}[4]{ -% School -\fontshape{}\footnotesize\selectfont\textbf{#1} -% Course -\\\fontshape{}\footnotesize\selectfont{#2} -% When -\\{\fontshape{}\scriptsize\selectfont{#3}}\vspace{0.1cm} -% Description -\\\begin{minipage}{12cm} -\fontshape{}\scriptsize\selectfont{#4} -\end{minipage} -} +\newcommand{\skills}[2]{ + \fontshape{}\footnotesize\selectfont\textbf{#1} + \vspace{0.1em} + \\\begin{minipage}{\textwidth} + \centering\fontshape{}\scriptsize\selectfont{#2} + \end{minipage} + } -\newcommand{\project}[3]{ -% Name -\fontshape{}\footnotesize\selectfont\textbf{#1} -% When -\\{\fontshape{}\scriptsize\selectfont{#2}}\vspace{0.1cm} -% Description -\\\begin{minipage}{12cm} -\fontshape{}\scriptsize\selectfont{#3} -\end{minipage} +\newcommand{\school}[2]{ +% Course +\fontshape{}\footnotesize\selectfont{#1}, +% School +\fontshape{}\footnotesize\selectfont{#2} } -\newcommand{\programming}[2]{ -% level -\raggedright\fontshape{}\scriptsize\textbf{#1}\vspace{0.07cm}\\ -% languages -\begin{minipage}{5.1cm} -\fontshape{}\scriptsize\selectfont{#2}\vspace{0.1cm} +\newcommand{\projects}[1]{ +\begin{minipage}{\textwidth} +\fontshape{}\scriptsize\selectfont{#1} \end{minipage} - } \begin{document} \begin{samepage} { -\input{title} - \begin{minipage}[t]{0.63\textwidth} - \input{experience} - \vspace{-0.5cm} - \input{education} - \vspace{-0.5cm} - \input{projects} - \end{minipage} - \hspace{.02\linewidth} -\framebox[1.12\width][l]{ - \hspace{0.05cm} - \begin{minipage}[t]{0.27\textwidth} - \input{technical} - \vspace{0.2cm} - \input{general} - \end{minipage}} - } + \input{title} + \input{about} + \ruler + \input{technical} + \ruler + \input{experience} + \ruler + \vspace{-0.5cm} + \input{projects} + \ruler + \vspace{-0.5cm} + \input{education} + \ruler +} \end{samepage} \end{document} diff --git a/education.tex b/education.tex index 634c53f..58df349 100644 --- a/education.tex +++ b/education.tex @@ -1,20 +1,14 @@ \section{Education} \vspace{-0.2cm} -\school{KTH Royal Institute of Technology} -{Master of Science in Electrical Engineering} -{2013 -- 2018} -{ -Undergraduate and graduate course within electrical engineering.} -\ruler +\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{Imperial College London} -{Electrical and Electronic Engineering} -{2016 -- 2017} -{ -Exchange year during my M.Sc. -} -\ruler %\school{Dalian University of Technology} %{Summer program in basic Mandarin and Chinese culture} diff --git a/experience.tex b/experience.tex index 4d6b38b..c4ae483 100644 --- a/experience.tex +++ b/experience.tex @@ -7,57 +7,87 @@ {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 Develop and maintain microservices for payments and subscriptions. - \item Take part in architectural design discussions. - \item Participate in the code review process. - \item Contribute to the infrastructure with updates to k8s resources and AWS resource management via Terraform. - \item Monitor logs for bugs in different environments, e.g. staging and production. + \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 \end{itemize} -\vspace{0.5em} -Keywords: Microservices, Kubernetes, Infrastructure, Helm, CI/CD, Kotlin, Spring, AWS, Terraform -\vspace{0.5em} } -\ruler -\company{Machine Learning Engineer (Cyber Security)} -{Saab} +% \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 Created data mining pipelines for extracting, cleaning, and creating datasets for machine learning models, i.e. train/test sets. - \item Was a driving force in making the system more asynchronous using message passing between microservices, by deploying and maintaining a Kafka instance. This improve the architecture by allowing multiple services to subscribe to incoming sensor data and process the information, instead of fetching the data from databases in batches. - \item Developed a modular pipeline for training and evaluating deep learning models with different architectures and/or losses. Automatic extraction of the best model based on user defined metric, ready for serving. - \item Built and deployed deep learning models for multi-modal trajectory predictions in production. - \item Took initiative and deployed and maintained a private Python Package Index (PyPI) for all developers. Greatly improving the development workflow, e.g. forcing versioning, and reducing/eliminating cross dependencies between on-premise developed Python packages. - \item Developed a graph algorithm for sensor fusion. Deployed it as a microservice listing to incoming sensor data. This enabled more complex pattern analysis in downstream services. - \item Reduced the docker image size of the Python microservices from ~2 GB to ~73 MB by utilizing multistage builds and alpine base images. - \item Built pipelines for CI/CD and packages deployment in Tekton. - \item With my docker images and pipelines we where able to reduce the average build times from ~10-30 minutes down to seconds, mostly thanks to improved caching capabilities. + \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. \end{itemize} -\vspace{0.5em} -Keywords: Deep Learning, Python, Microservices, Kubernetes, Infrastructure, Helm, CI/CD -\vspace{0.5em} } -\ruler -\company{Machine Learning Engineer (Electronic Warfare)} -{Saab} +\company{Machine Learning Engineer (Surveillance)} +{Saab AB} {Stockholm, Sweden} {Aug 2018 -- Aug 2020} { \begin{itemize}[topsep=0pt,parsep=0pt,partopsep=0pt,leftmargin=10pt,labelwidth=6pt,labelsep=4pt] - \item Built simulation software for generating realistic signal environments with both radar and/or communication signals. Implemented the most common signal encoding for communications, as well as basic to SOTA radar modulations. This enabled the team to develop and evaluate different machine learning models and ideas. - \item Researched machine learning models in different stages of the radar warning receiver, with regards to compute and data limitations. - \item Held in several presentations of machine learning papers in a company reading group. - \item Shared the knowledge of implementing and using machine learning to multiple business areas within Saab. + \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. \end{itemize} -\vspace{0.5em} -Keywords: Deep Learning, Signal Processing, Python, VHDL -\vspace{0.5em} } -\ruler + +% \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} diff --git a/general.tex b/general.tex deleted file mode 100644 index a069307..0000000 --- a/general.tex +++ /dev/null @@ -1,18 +0,0 @@ -\section{General Skills} -\vspace{-0.25cm} - -\programming{Languages}{ -\noindent\begin{tabularx}{5.1cm}{@{}ll} - \tabitem Swedish -- native & \tabitem English -- C2 -\end{tabularx} -} - -%\scriptsize\textbf{Driving License:} B\vspace{0.1cm} - -\vspace{0.1cm} - -% \smallsubsection{Interests} - -% {\scriptsize Friends, programming, squash, opera, art, food} - -% \vspace{0.2cm} diff --git a/projects.tex b/projects.tex index 09f7480..1615871 100644 --- a/projects.tex +++ b/projects.tex @@ -1,34 +1,13 @@ \section{Personal Projects} \vspace{-0.2cm} -% According to Google Recruiters, use the XYZ formula - Accomplished [X] as measured by [Y], by doing [Z] -\project{Unix Sysadmin} -{Ongoing} -{ -I self host many application, such as: email, website, git server, encrypted chat server (xmpp), and calendar. -\vspace{0.5em} -} -\ruler - -\project{\href{https://github.com/aktersnurra/text-recognizer}{Text Recognizer}} -{Ongoing} -{ -Reimplemented the \href{https://fullstackdeeplearning.com/}{Full Stack Deep Learning course} with best practices in Python. -I started this project to develop the best structure for PyTorch projects. -But now it keeps me motivated to experiment with new architectures and read up on the latest research developments, -e.g. self supervised learning, vision transformers, multi-modal models. -\vspace{0.5em} -Keywords: PyTorch, PyTorch Lightning, Hydra, Nox, Poetry, Pyenv, Python -\vspace{0.5em} +\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 + \end{itemize} } -\ruler -\project{Trading Robot} -{Ongoing} -{ -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. -\vspace{0.5em} -% \\\\ -% Keywords: Nomad, Nats, Event-Based Design -} -\ruler diff --git a/rydholm-gustaf-cv.pdf b/rydholm-gustaf-cv.pdf Binary files differindex 6297b0c..b8de184 100644 --- a/rydholm-gustaf-cv.pdf +++ b/rydholm-gustaf-cv.pdf diff --git a/technical.tex b/technical.tex index 541fdff..91ec77d 100644 --- a/technical.tex +++ b/technical.tex @@ -1,110 +1,126 @@ \section{Technical Skills} -\vspace{-0.25em} -\subsection{Programming} -\vspace{-0.25em} +\vspace{-0.2em} -\programming{Haskell -- Familiar}{ -Just started picking up haskell and I find it incredibly inspiring. +\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)} + \textbullet\ Elixir \textit{(Basic)} + \end{itemize} } -\programming{Rust -- Familiar}{ -Limited experience, written some web-services for work. -} - -\programming{Python -- Fluent}{ -Used it for almost a decade; web services, scientific computing, you name it. -} - -\vspace{-1em} -\subsection{Scripting} -\vspace{-0.25em} - -\programming{shell -- Proficient}{ -Used it for various small task, e.g. adding functionality to my operating system. -} - -\programming{lua -- Fluent}{ -Used extensively while configuring neovim and creating plugins. -} - -\programming{fennel -- Proficient}{ -I rewrote my neovim config since I wanted to learn the lisp syntax. -} - -\vspace{-1em} -\subsection{Markup} -\vspace{-0.25em} - -\programming{\LaTeX -- Fluent}{ -Mastered it during my university years. -} - -\programming{HTML -- Familiar}{ -Working knowledge, I used it for my personal website. -} -\vspace{-1em} -\subsection{Databases \& Message Brokers} -\vspace{-0.25em} - -\programming{NoSQL -- Intermediate}{ -I have experience with both mongodb and redis. -} - -\programming{SQL -- Intermediate}{ -I have experience working with postgresql and timescaledb. -} - -\programming{Kafka -- Intermediate}{ -Deployed and maintained a kafka instance in a private cloud. +\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 + \end{itemize} } -\vspace{-1em} -\subsection{Machine Learning} -\vspace{-0.25em} - -\programming{PyTorch -- Proficient}{ -Used extensively for $+6$ years. -} -\programming{PyTorch Lightning -- Proficient}{ -Used with PyTorch for $+3$ years. -} - -\vspace{-1em} -\subsection{Miscellaneous} -\vspace{-0.25em} - -\programming{Git -- Proficient}{ -I have used git for +8 years and I host my own \href{https://git.gustafrydholm.xyz}{git server}. -} - -\programming{Kubernetes -- Experienced}{ -I have worked with Kubernetes since 2019, self-hosted and at cloud providers. -} - -\programming{Terraform -- Intermediate}{ -Used it at work for updating infrastructure and deploying k8s. -} - -\programming{Containers -- Proficient}{ -I have in depth knowledge of the concept. I work with Docker daily, and I enjoy building the most efficient Dockerfiles possible, e.g. multi-stage builds. -} - -% \programming{Service Mesh -- Familiar}{ -% Used extensively at work and at home. +% \programming{Haskell -- Familiar}{ +% Just started picking up haskell and I find it incredibly inspiring. % } - -\programming{CI/CD pipelines -- Proficient}{ -Experience with Tekton, CircleCI, GitHub actions. -} - -\programming{Architecture}{ -I adhere by the \href{http://www.linfo.org/unix_philosophy.html}{unix} and \href{https://suckless.org/philosophy/}{suckless} philosophy. -I found the book \textit{Tao of Microservices} to be really inspiring, as he presents a framework to design microservices from first principles. -} - -\programming{Operating Systems}{ -I use Artix Linux, OpenBSD, and macOS. -} - -\vspace{-0.9em} +% +% \programming{Rust -- Familiar}{ +% Limited experience, written some web-services for work. +% } +% +% \programming{Python -- Fluent}{ +% Used it for almost a decade; web services, scientific computing, you name it. +% } +% +% \vspace{-1em} +% \subsection{Scripting} +% \vspace{-0.25em} +% +% \programming{shell -- Proficient}{ +% Used it for various small task, e.g. adding functionality to my operating system. +% } +% +% \programming{lua -- Fluent}{ +% Used extensively while configuring neovim and creating plugins. +% } +% +% \programming{fennel -- Proficient}{ +% I rewrote my neovim config since I wanted to learn the lisp syntax. +% } +% +% \vspace{-1em} +% \subsection{Markup} +% \vspace{-0.25em} +% +% \programming{\LaTeX -- Fluent}{ +% Mastered it during my university years. +% } +% +% \programming{HTML -- Familiar}{ +% Working knowledge, I used it for my personal website. +% } +% +% \vspace{-1em} +% \subsection{Databases \& Message Brokers} +% \vspace{-0.25em} +% +% \programming{NoSQL -- Intermediate}{ +% I have experience with both mongodb and redis. +% } +% +% \programming{SQL -- Intermediate}{ +% I have experience working with postgresql and timescaledb. +% } +% +% \programming{Kafka -- Intermediate}{ +% Deployed and maintained a kafka instance in a private cloud. +% } +% +% \vspace{-1em} +% \subsection{Machine Learning} +% \vspace{-0.25em} +% +% \programming{PyTorch -- Proficient}{ +% Used extensively for $+6$ years. +% } +% \programming{PyTorch Lightning -- Proficient}{ +% Used with PyTorch for $+3$ years. +% } +% +% \vspace{-1em} +% \subsection{Miscellaneous} +% \vspace{-0.25em} +% +% \programming{Git -- Proficient}{ +% I have used git for +8 years and I host my own \href{https://git.gustafrydholm.xyz}{git server}. +% } +% +% \programming{Kubernetes -- Experienced}{ +% I have worked with Kubernetes since 2019, self-hosted and at cloud providers. +% } +% +% \programming{Terraform -- Intermediate}{ +% Used it at work for updating infrastructure and deploying k8s. +% } +% +% \programming{Containers -- Proficient}{ +% I have in depth knowledge of the concept. I work with Docker daily, and I enjoy building the most efficient Dockerfiles possible, e.g. multi-stage builds. +% } +% +% \programming{CI/CD pipelines -- Proficient}{ +% Experience with Tekton, CircleCI, GitHub actions. +% } +% +% \programming{Architecture}{ +% I adhere by the \href{http://www.linfo.org/unix_philosophy.html}{unix} and \href{https://suckless.org/philosophy/}{suckless} philosophy. +% I found the book \textit{Tao of Microservices} to be really inspiring, as he presents a framework to design microservices from first principles. +% } +% +% \programming{Operating Systems}{ +% I use Artix Linux, OpenBSD, and macOS. +% } +% +% \vspace{-0.9em} |