Hi, I'm Martin
I'm a software engineer based in Bergen.
I work as a Senior Software Engineer at Lace Lithography. I enjoy working across the stack, from embedded systems and native apps to web applications. I'm passionate about learning new things and often find myself exploring new programming languages, tinkering with tools, or diving into the endless rabbit hole of customizing Emacs.
Work
Lace Lithography
Senior Software Engineer
Lace is on a mission to develop a brand new lithography system. I work on the instrumentation team, where we build tools for instrumenting and calibrating the hardware.
DNB
Senior Staff Software Engineer • Tech Lead iOS
DNB is the largest bank in the Nordics. At DNB, I worked as the lead iOS developer, building the mobile banking apps for iOS and iPadOS. I was responsible for setting the technical vision and ensuring alignment across the app developers. I helped scale the codebase from a greenfield project into a large monorepo of multiple apps, organized into modular, domain-specific package. It's a modern codebase built using SwiftUI and the latest Swift concurrency features.
EGGS Design
Senior Developer • Consultant
EGGS is a consultancy that helps companies build new products and services. During my time there I worked on a range of different project with everything from native apps using Swift, web projects using TypeScript and cross-platform apps using React Native and Xamarin.
Flow
iOS Developer • Product Designer
At Flow, I was an iOS developer and designer for a project management tool built for small teams. I helped design and develop Flow Chat from early prototypes through launch, and shipped new features for the core iOS task management app. I also contributed product design work across both the iOS app and web platform.
See LinkedIn for a complete overview of my work experience.
Projects
Starfold
Starfold is an ongoing project to build a rich-text org-mode editor for iOS. Org-mode is an Emacs package for note-taking and task management that uses a plain text format. With Starfold, you can view and edit these files in a rich-text environment, blending free-text editing with structured operations such as indentation, collapsing, and drag-and-drop. The core of the editor is built with Rust, while the app is built using UIKit, TextKit 2 and Core Animation to achieve smooth animations, fluid gestures and great scroll performance.
Stitchie
Stitchie is an app for designing knitting patterns that I'm currently building with @soloy. It's built to be fast and responsive, and handles massive patterns effortlessly. The editor's core is implemented in Rust and compiled to WebAssembly, with a custom WebGPU renderer. Everything is made from scratch with zero third-party dependencies.
Weavie
github.com/rechsteiner/weavie
Weavie is a tiny physical weaving pattern machine, created using only 32-bit ARM assembly. It has a small keyboard, which can be used to create weaving patterns on a small LCD screen. It’s built for the STM32 microcontroller, but you can also run it locally using its own emulator. You can check out the full source code here
setup_display__gpio_clocks: // Next we need to enable the GPIOC pin that we'll use for // Chip Select and the GPIOB pins for SCK and MISO. Setting // bit 1 and 2 in the RCC_AHB1ENR register will activate the // GPIO C/B ports. ldr r1, =RCC_AHB1ENR ldr r0, [r1] orr r0, r0, #0b110 str r0, [r1] setup_display__spi2_clock: // Enable the clock for SPI2 by updating the 14 bit in the // RCC_APB1ENR register. ldr r1, =RCC_APB1ENR ldr r0, [r1] orr r0, r0, (0b1 << 14) str r0, [r1]
Pickle
pickle.no
Pickle is my personal recipe app, and has worked as a playground for testing new technology throughout the years. It's a minimalistic recipe app for storing and developing your own recipes, with a focus on fermentation. It let's you track fermentation progress, make notes and collaborate with other people. It's been my main recipe app for many years, although these days I'm transitioning over to using Starfold.
Composite
Composite was an iOS app for creating interactive prototypes using Photoshop. It automatically connected to Photoshop and converted the documents into interactive, gesture based prototypes. We created Composite as part of our own company Panes Software, trying to improve the state of prototyping tools at the time.
The idea behind Composite was to allow designers to create prototypes directly in Photoshop and stream the changes to your iPhone in real-time. If you moved a button, the hotspots would immediately be moved inside the app. Composite used (or maybe misused) a feature of Photoshop called Layer Comps to achieve this. Each screen would be it's own Layer Comp, which you could link to by just renaming your layers. Being a native app, the prototypes ended up feeling just like other native apps, with proper back-swipe gestures and scrolling.
Static Void
github.com/rechsteiner/void
A game where you navigate through space by programming spaceships. Built in Rust with a custom entity-component system and its own programming language and interpreter. It's not much of a game yet, but hoping to turn it into something playable one day.
Open source
Parchment
github.com/rechsteiner/Parchment
Parchment is an open-source iOS library for creating paged views with a menu that scrolls along with the content. It's a battle-tested library used by thousands of apps, that I've maintained since 2016. It's a highly flexible library that supports both UIKit and SwiftUI, with a focus on providing smooth, flicker-free gestures and animations.
swift-ts-mode
github.com/rechsteiner/swift-ts-mode
A package for writing Swift code in Emacs. Adds support for syntax-highlighting, code-navigation and indentation using tree-sitter.
swift-ansi-picker
github.com/rechsteiner/swift-ansi-picker
A tiny package for adding interactive selection to Swift based CLI applications, designed to use with ANSI-supported terminals.
Talks
- Banking on testing (Slides)- Swift & Friends Oslo · July 01, 2024
- Foundation over features (Slides)- CocoaHeads Oslo · February 13, 2020
- Coordinators and deep linking (Slides)- CocoaHeads Oslo · February 13, 2020
- Introduction into Elm (Slides)- ReactJS Norway · March 09, 2017
- Designing Underwater Experiences- Trondheim Developer Conference· 2017
- Blueye Robotics - Behind the scenes (Interview)