Michel Bøje Randahl Nielsen
Software developer, passionate about Functional Programming
michelrandahl@proton.me / Addr.: Holte, Denmark / GitHub / Codeberg / LinkedIn
Profile
Software Developer specialized in functional programming for everything from custom ETL jobs and applications running in the cloud, to fullstack software development. I especially enjoy creating simple, robust and maintainable solutions using languages such as PureScript, F# and Clojure.
Recently, I’ve begun exploring embedded systems development with Rust.
Work Experience
- Independent study and working on my own projects (Aug 2023 - Present)
Expanding my knowledge into embedded systems and electronics, with the goal of developing a commercial eurorack module. Additionally I have explored UX prototyping of eurorack modules using PureScript. During this timeframe I have been learning about and worked with a broad array of topics:
- Learning Rust, with a focus on Embedded Rust
- Open source code contributions for embedded Rust Embassy library, in particular for the STM32 TSC driver (Touch Sensing Controller)
- Studying embedded systems topics (SPI, I2C, DAC, ADC, ARM NVIC and Interrupts, logging in embedded, debugging embedded code, etc.)
- Experimenting with Eurorack module UX prototyping using PureScript Halogen to model the module and interactions in a web-app
- Developing skills in PCB design using KiCAD
- Gaining experience in component selection and sourcing from mouser
- Exploring PCB manufacturing processes with Aisler and PCBWay
- Expanding my knowledge with and gaining more confidence in electronics by assembling, soldering and flashing/programming DIY eurorack kits and premade PCBs with self-sourced components
- Technologies summary: Rust, Embedded Rust, Rust framework: RTIC, Rust library: Embassy, PureScript, PureScript framework: Halogen, KiCAD, PCB Design, STM32
- Key competencies gained: Practical experience with reading hardware documentation and datasheets, Increased confidence with low-level programming, Hands-on exposure to electronic design and prototyping, Basic understanding of component selection and PCB design and manufacturing processes, Experience with contributing to open source
- Software developer and DevOps @ Criipto (Dec 2021 - Aug 2023)
At Criipto, an E-ID solutions broker, I:
- Worked on Stripe integration and billing systems
- Developed audit logging systems for e-ID usage
- Worked on demo applications and prototypes
- Maintenance of the Account management/configuration platform
- Writing ETL jobs
- Assisted with data warehouse and support for accounting tasks
- Various DevOps related tasks like writing Bicep definitions (Infrastructure as Code) and setting up automated testing and deployment with GitHub Actions
- Technologies summary: F#, C#, NodeJS, React, TypeScript, Azure, Bicep, Stripe, GitHub Actions
- Key competencies gained: Increased security awareness for software development and DevOps as well as daily IT usage, Experience with payment systems integration, Further practical exposure to cloud infrastructure automation
- Software developer @ Skatteministeriet / UFST (udviklings og forenklingsstyrelsen) (Jan 2017 - Nov 2021)
At Skatteministeriet/UFST, I contributed to the modernizing of Danish property valuation and taxation. My main contributions included:
- Developing backend code in Clojure for caseworker applications
- Implementing various custom ETL jobs (Extract, Transform, Load)
- Worked with Event Sourcing and API implementations
- Creating user-activated data processing applications for non-technical staff
- Assisting with DevOps and OpsSec
- Minor contributions to the caseworker frontend in ClojureScript
- Technologies summary: Clojure, ClojureScript, AWS, Event Sourcing, PostgreSQL, Cassandra, Terraform, Git, GitHub, Docker, Bash, Jenkins
- Key competencies gained: Extensive experience with code reviewing, Pair programming, Collaboration using Git and Github, Working in a large-scale government project, Collaborative development in cross-functional teams, Working under a Scrum organization, Developing and maintaining applications for cloud, Exposure to CVE reports
- Intern and part time Software developer @ Noitso (Feb 2013 - Aug 2014)
Noitso was a small, versatile software development company specializing in financial technology solutions and custom software development:
- Co-developed a new CRM solution with primary focus on application and database design, and providing ongoing user support
- Prototyping and maintenance of software
- Technologies summary: C#, Java, Javascript, HTML5, MSSQL, ASP MVC
- Key competencies gained: First-hand experience with customer-facing software development and support
Education
- Msc in Computer Science and Engineering @ DTU (Feb 2014 - Oct 2016)
Studying topics such as Fault Tolerant Systems, Parallel Programming, Data Mining, Stochastic Simulation and Formal Software Engineering
- BEng Information Technology @ DTU (Sep 2009 - Feb 2014)
Learning fundamentals of Computer Science and modern software development, hands-on software development projects in teams, introduction to Machine Learning and Artificial Intelligence, and light studies of digital electronics, embedded systems and low level programming
- Internship: at Noitso
- Thesis: I implemented an ANN (Artificial Neural Network) based system for controlling lighting in houses in a predictive manner based on movement patterns registered by PIR sensors
Technical Competences
- Programming languages
Over the past 15 years, spanning university studies as well as professional work, I’ve worked with and studied a diverse range of programming languages. However I’ve particularly deepened my expertise in functional programming through self study and personal projects.
- Proficient: Clojure, Python, F#
- Active Focus: Rust, PureScript
- Intermediate: JavaScript, NodeJS, C#, Java
- Limited exposure through coursework, self study, or occasional use: Lua, Bash, uLisp, Haskell, TypeScript, Elm, Idris, Elixir, Scala, Prolog, VHDL, C
- Databases
Extensive experience with SQL databases, and some exposure to NoSQL:
- MSSQL, PostgreSQL, Sqlite: Proficient in querying, table design, and database integration with application code
- Cassandra: Familiarity with NoSQL concepts and distributed databases
- Cloud & DevOps
While my focus mainly has been on application development and writing code, I have also obtained knowledge and experience with various DevOps and Cloud topics:
- GitHub Actions: Automated testing and deployment
- AWS: ECS, Fargate, Lambda, CloudFormation, CloudWatch, SNS, SQS, S3
- Azure: Bicep, Functions, Blob/Table/Queue storage, WebJobs
- Misc.: Docker, Jenkins, Makefiles, Terraform
- Security
Especially my time at Criipto expanded my security awareness:
- Ensuring that all my computers are encrypted and maintaining a rigorous weekly system update routine for all devices to ensure optimal security
- Awareness of OWASP Top Ten security risks and their relevance in software development
- Experience identifying and mitigating security vulnerabilities by analyzing CVE reports, implementing recommended fixes through dependency updates, and validating changes through testing
- Development environment
- Strong preference for Linux, which I have been using as my daily driver for the past 10 years. Currently running NixOs, which I enjoy for its declarative nature, easy package/system rollbacks, reliable package management, and reproducible development environments through nix flakes
- Extensive experience with terminal-based tools, favoring such tools for their simplicity, reliability, efficiency, and ease of automation through shell scripting
- Proficient with Git and GitHub, which I have used almost on a daily basis for the past many years, for collaborative projects as well as solo and hobby projects
Speaking and Writing
Native Danish and proficient in English
Beyond Code
- Playing music, especially Synthesizers, Samplers and Eurorack
- DIY Electronics. I have assembled and soldered and sometimes programmed 20+ different Eurorack DIY kits and PCBs with self sourced components, furthermore have I designed and built my own rack system to hold and power the modules. I also generally like fixing things in my home instead of discarding items the moment something stops working. Since childhood I have enjoyed disassembling and investigating electronics, although it is only recently that I have started to understand things and gain some intuition about it
- Nature. I enjoy being out in nature, whether it be working on my laptop outdoors, or taking long walks or going for running in the forest or kayaking on the lakes