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.

A photo of Martin Rechsteiner

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.

DNB Mobile App
Framework Icon
A screenshot of the mobile bank on both iOS and iPadOS. On the right is a logo I made for one of the many internal frameworks we've developed. Check out the talks section for a glimpse into some of these frameworks.

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.

Blueye App Blueye Underwater Drone
The Blueye underwater drone. I helped both with the design and development of the app that is used to control the drone. The app was built for both Android and iOS using Xamarin. Photo by Blueye Robotics AS.
SpareBank1 Driv
Driv was a product by SpareBank1 that helped small business owners get an overview over their economy. I worked as the lead web developer. Made using TypeScript, React and d3.js.

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.

Flow Screenshots
Flow App Icon

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.

Starfold Screenshot
I've been working on this together with @soloy for some time now, but it's still a lot of rough edges that needs to be sorted out. If you're interested in trying it out, please reach out to me on Bluesky.

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.

Pickle Recipes Changes Pickle Recipe App
Pickle Marketing
I've re-implemented Pickle a dozen times in different languages and frameworks, but finally settled on a server-rendered approach using Phoenix LiveView and Elixir. It also has an iOS app made using Swift and SwiftUI.

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

Weavie Screenshot
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]
The Weavie logo above was created by drawing each pixel in Figma and then translated into a byte representation where each bit corresponds to a pixel. The assembly code simply moves these bytes into the frame buffer for display. On the right is a snippet of the SPI-based display driver.

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.

Composite Marketing Page
Composite Logo
A screenshot of the marketing site and logo. See more at Dribbble.

Open source

Parchment Parchment Github Stars

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.

Parchment Screenshots

swift-ts-mode swift-ts-mode Github Stars

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