Ulrik Strid

My name is Ulrik Strid, I'm a "full stack" developer from Sweden. Currently in a DevOps role working on everything from CI/CD and docker setup to backend and frontend services and up to architecture. I like open source and try to contribute where I can. My current focus on OSS has been to fill in gaps in web development using OCaml, especially around authentication.


CV

Work experience

From most recent (current) to least recent

  • Marigold - As the DevOps team lead and manager I've been leading a globally distributed team. My role included managing people, making decisions about our infrastructure and development tasks.
  • Xenit - As the first developer I've had a very varied role where I've done everything from architecture to implementation of minor tools and automations and working with kubernetes.
  • Sigma, MyTeam - Developer consultant leading frontend development.
    • I was in the "architect group" where we discussed architecture for the different projects we worked on and decided on technology we wanted to use going forward.
    • We did multiple "lunch and learns" where I talked about everything from React to ReasonML
  • Sigma, Maverick - Developer consultant and tech lead of different projects
  • Viskan distanshandel - Building e-commerce frontends for large customers in Sweden

Projects

  • Building and architecting the frontend and backend of a research tool in a small team of 2 developers.
    • We needed to build an image manipulation tool and ended up using WebGL which was challenging and needed a lot of RnD to land on.
    • The other big challenge was that we needed to do a lot of matrix calculations in the browser while still being responsive
  • Designing (code) and implementing a OpenID connect provider for Swedish and Norwegian BankID.
  • Created a customer portal with a very extendable architecture based on microservices.
    • It uses a GraphQL API to expose data to the client(s) and a mix of REST and gRPC to talk between services.
    • We're continually extending it with new services for both internal and external needs
  • Lead developer/architect for the the "control plane" of a security focused project to protect connected devices via "zero trust" and PKI
    • It's a fast moving project with a lot of moving parts which forces us to build a flexible platform
    • We're using MQTT heavily to talk to both the secure devices and the clients
    • We're leveraging the JOSE spec to create signed and encrypted messages depending on how much privacy is eneded
  • Porting Lwt Unix from libev and "custom" C code to use libuv
    • I got the possibility to get fundign via The OCaml Software Foundation to work on Lwt
Skills

Languages

  • OCaml
  • TypeScript / JavaScript
  • Nix

Others

  • Good knowledge of OpenID connect and related specs (JOSE, OAuth2)
    • I am one of 30 or so people to have built and certified a OpenID connect client.
  • Software architecture
  • Developing for Kubernetes
    • Docker
    • Manifests
    • Helm
    • Kubectl and debuging issues with it
  • Nix/NixOS
    • Packaging Software
    • Setting up reproducible dev environments
    • Configuring hardware with NixOS, both servers and workstations
Open Source

My most recent and noteable open source work has been in OCaml

My projects

  • OIDC - Certified OpenID connect client implementation and base library
  • JOSE - JavaScript Object Signing and Encryption, JWT, JWS, JWE and JWK
  • Cookie - Parsing and printing Cookies for web servers
  • Morph - A web framework
  • redemon - A filewatcher and command runner, nodemon replacement
  • reenv - A very fast dotenv replacement

Noteworthy contributions

  • Lwt
    • libuv engine
    • Start porting Lwt.Unix to use libuv
  • Esy / Reason ecosystem
    • I have spent a lot of time setting up good CI/CD with Azure Pipelinens (and to some extent Github Actions) for esy projects that is used a lot in the Reason community