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.

A photo of Martin Rechsteiner

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.

Lace Lithography

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.

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

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.

Blueye App Blueye Underwater Drone
The Blueye underwater drone. I lead the development of the app that is used to control the drone, from early prototypes to a finished app. Built for Android and iOS. 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

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.

Flow Screenshots

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.

Starfold Screenshot
If you're interested in trying it out, please reach out to me on Bluesky.

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.

Stitchie Screenshots

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

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.

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.

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.

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.

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

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.

Static Void Screenshot
A screenshot of the game play. Static Void is built by me and @avanvik.

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 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 package for writing Swift code in Emacs. Adds support for syntax-highlighting, code-navigation and indentation using tree-sitter.

Screenshot of swift-ts-mode in Emacs

swift-ansi-picker Parchment Github Stars

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