Hi, I'm Martin
I'm a software engineer based in Oslo.
I work as a Senior Staff Engineer at DNB, where I lead the iOS app team. These days, my focus is primarily on iOS development, though I've worked a lot with web development over the years. I usually prefer compiled, statically typed languages like Swift and Rust, but I'm also passionate about dynamic languages like Lisp and Elixir. With a background as a designer, I really enjoy building polished, well-crafted user interfaces. I love 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
DNB
Senior Staff Engineer • Tech Lead iOS
DNB is the largest bank in the Nordics. At DNB, I work as the lead iOS developer, building the mobile banking apps for iOS and iPadOS. I'm responsible for setting the technical vision and ensuring alignment across the app developers. I've 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
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/Metalab
Product Designer • iOS Developer
MetaLab is a product design agency that collaborates with major industry brands. During my time there, I worked as a UI designer on various projects, including the re-launch of their invoicing tool, Ballpark. I later started working on their project management tool called Flow, which was later split into a separate company. At Flow, I was responsible for designing and developing the iOS apps, as well as developing new product ideas for the web-application.
Check out my 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.
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 mostly transitioning over to Starfold.
Weavie
github.com/rechsteiner/weavie
Weavie is a tiny physical weaving pattern machine, created using only 32-bit ARM assembly. I wanted to delve deeper into embedded development and assembly programming, and building a weaving pattern editor felt like a fun challenge. I usually learn best when I have a concrete project to work on. Equipped with a 6-button keyboard, Weavie lets you to edit weaving patterns directly on a 2.7" LCD screen. It’s built for the STM32 microcontroller, but it also includes its own emulator based on Rust and Unicorn, which lets you run it locally. You can check out the full source code here
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 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.
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 actively 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 tree-sitter based major-mode for Swift in Emacs, with support for font-locking, imenu and indentation. If you're not an Emacs user, this sentence probably made no sense. If you end up trying it out, please let me know if you find any issues.
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 ExperiencesTrondheim Developer Conference· 2017
- Blueye Robotics - Behind the scenes (Interview)