Download PDF

Marius Waldal

Independent developer at Salamander Consulting AS

Professional Experience

August 2017Present

Independent developer

Salamander Consulting AS

After almost 6.5 years as a developer in FINN.no, the last 1.5 of which as an iOS developer on the Core Team, I'm now running my own indie consultancy company. Salamander is a member of the BrainBase network of consultants (www.brainbase.no).

My current client is Ruter AS, the leading Public Transport Authority in Norway, where I'm hired as a solutions architect on the RuterSalg team.

At my previous customer (since Oct 2017), I've architected the mobile backend based on Go microservices and Apache Kafka, running in GCP (Kubernetes). Event streaming, autonomous services, safe recovery, almost zero downtime. And fun!

I've also been focusing on the iOS app - branded for ~80 local newspapers - each with their own app in AppStore.

Early 2016Mid 2017

iOS Developer

Core Team, FINN.no

As a Java developer with sporadic exposure to iOS development, my main contribution since starting on the Core Team has been a focus on architecture. 

For many years, architectural structure has not been the forté of iOS applications, leading to the MVC pattern being mockily rebranded as "Massive View Controller" by many iOS developers. Several other patterns have been introduced to alleviate this. Coming from the Java world, I chose Uncle Bob's Clean Architecture when rewriting the FINN app's mailbox module. 

I have also done other structural changes like breaking up our very large storyboard into smaller autonomous pieces, creating a Python script that automatically generates Swift code for conveniently using storyboards in code.

20112016

Java developer

FINN.no

For my first 5 years of working at FINN.no, I worked as a senior Java developer on the ads team, working with banner display technologies. See "Projects" for more info

20082011

Senior Java consultant

Itera Consulting AS

Consultancy work for Itera (formerly Objectware) on a few different projects. See "Projects" for more info.            

20022008

Owner and Java developer

Blue Bricks Software

In 2002 I quit my job and started my own company: Blue Bricks Software. It started with me being hired to create an SMS service for a Lotus Domino application. 

After finishing the project, I was thinking: This could be made so much better and more generic, and so I started creating what would become Blue Bricks SMS. Initially, it was tied to Lotus Domino, but this soon got too restricting, so I decided to start over with a pure Java-based solution.

I worked with Blue Bricks Software for 6 years before closing up shop and going back to working as a consultant for Objectware (later Itera Consulting).

2001-2002

Lotus Domino consultant

TJ Group AS

Consultancy work within the realm of Lotus Notes/Domino

20002001

Lotus Domino consultant

Antares Service Management

Consultancy work within the realm of Lotus Notes/Domino

19972000

IT admin / Lotus Domino consultant

ConCrea AS

This is where I started my professional career. ConCrea was an IBM subsidiary, specializing in Lotus technology. I was hired to be a sysadmin, handling all of ConCrea's internal systems, including OS (Windows NT) and Lotus Notes and Domino. 

I had this responsibility for 2 years before gradually transitioning to working as a consultant like most of my colleagues.

Voluntary work

At FINN.no, I have for several years been a member of AMU (arbeidsmiljøutvalget), with a goal to constantly improve our working environment. FINN.no has consistently been ranked among the best places to work in Norway, by Great Place To Work.

For two years I served as a board member of Lotus Software Brukergruppe - a community for anyone interested in IBM Lotus software, like Notes and Domino. The board's main responsibility was a yearly member conference.

Education

1996-1997

IT Kandidat

Den Polytekniske Høgskole

I started my education at DPH in 1996, aiming for 3 years of education to become a systems engineer. However, the day before Christmas in 1996 I was involved in a car accident at the E18 highway and was therefore unable to continue my education the following semester.

While working as a part-time support engineer until I could continue mye education a year later, I was offered a job in an IBM subsidiary, and this was the start of my professional career. I have attended lots of courses and taken several certificates, but I never went back to school. This is so far back, it feels like another millennium. Oh wait, it was...

Projects

20212023

RuterSalg application - Solutions Architect

Ruter AS

As an architect on the RuterSalg team my main responsibilities have been the over-arching architectural principles in the team, and aligning these with the general architectural direction of the Ruter organization. Another important responsibility has been to participate in the coordinated effort of evaluating and improving the architectural principles for Ruter in cooperation with other tech leads and architects across Ruter. I have also worked on improving the observability of our systems through metrics and dashboards. 

In addition, I am involved in fleshing out a new architecture for the RuterKontroll app together with the RuterKontroll team.

Keywords: 

Architecture, Apache Kafka, Go, AWS, Kubernetes, containers, EKS, asynchronous architecture, event processing, distributed architecture

20172019

White label mobile news app, backend app architecture

Amedia Utvikling AS

Amedia AS is one of Norway's largest media companies, with around 80 local newspapers across the country. Amedia needed a completely new backend architecture for the mobile apps, and modernization of the white label mobile app that was individually branded for each newspaper. We designed the backed around an event-based architecture, with Apache Kafka as the central driver for handling events, and containerized Golang microservices running in GCP, orchestrated by Kubernetes.
The system has been informally load tested to easily handle 300.000 events per second on low-level hardware.

Keywords:
Go, Apache Kafka, Ruby, Swift, Objective-C, Kubernetes, Docker, GCP, Event processing

2017

P2P payment for FINN.no (Trygg betaling)

FINN.no

FINN.no has introduced a new escrow service called "Trygg betaling". This was first implemented on the web, and after a beta period it was then to be introduced into the apps as well. 

The project involved user onboarding, contracts and messaging. 

Keywords: 

Swift, Objective-C

2017

Introducing Clean Architecture into the FINN.no iOS app

FINN.no

For many years, architectural structure has not been the forté of iOS applications, leading to the default iOS version of the MVC pattern being mockily rebranded as "Massive View Controller" by many iOS developers.

Several other patterns have been introduced to alleviate this. Coming from the Java world, I chose Uncle Bob's Clean Architecture when rewriting the FINN app's mailbox module.  This means that there is no coupling between the moving parts of the application, making testing much much easier. Also, the structure is easily recognizable and enables developers new to the team to quickly get a grasp on how things work, and easily find out where in the code to look for functionality. This also greatly improves troubleshooting bugs. 

Keywords:

Swift, Clean Architecture

2016

Splitting the storyboard

FINN.no

Coming as a newcomer to a codebase, it can be hard to understand the moving parts. Especially if it is a large codebase with a fair amount of legacy code. My first stop then is the Storyboard, hoping for visual clues to the structure. However, storyboards often also suffer from the "growing out of proportions" sickness, and sometime make it less obvious how things work. 

People on the team had twice before started splitting up the storyboard, but thrown their hands up in disgust because of scope creep.

Being new to the team and needing to understand how the app worked, I chose to take on this fairly daunting task as my initial project. My experiences with this became a blog post. See link below.

Links:

http://bit.ly/mwstoryboard

Keywords:

Swift, Objective-C, Python

20112016

General development of banner technology

FINN.no

As part of the ads technology team at FINN, my primary role has been maintaining and improving the way we display ads at FINN (approx 100 million ads displayed daily), integrating with 3rd-party banner solutions like AdTech and AppNexus. With this volume, an important part of the job has been performance and scalability. 

Keywords:

Java, HTML/CSS, Node.js, Spring, Hibernate, Java EE

20112016

Folk i FINN: Enterprise iOS app

FINN.no

As FINN.no was growing at a brisk rate, keeping up with who your colleagues are and what skills they have is a challenge. 

On my own initiative, and also using a lot of my spare time, I therefore developed an iOS app for internal use. The main functionalities were employee profiles, a search for competencies/skills among employees and a bulletin board for use by the company to inform employees, and for use by teams to inform colleagues about what they are working on.

The app was later replaced by a completely new intranet that supported mobile clients.

Keywords:

Objective-C, Javascript (for backend scripting with the now defunct Parse.com)

20112016

Garðr project

FINN.no

Garðr is a library for embedding content from external sources such as advertisements or similar third party content.

My role in this project was rather small, doing some development of the project itself, but mostly being involved because my team was going to assume responsibility for this project's use at FINN.no

Technologies:

Javascript

Links:

https://gardr.github.io/docs/

https://github.com/gardr

20112016

IPGeo: IP-based geo localization of FINN users

FINN.no

One of my first projects at FINN was a service for geographically placing our users based on their IP address. The project was using bleeding edge Apache Cassandra technology at the time (having to both use beta versions not yet released publicly and even contributing to the Cassandra codebase with functionality we needed that was not yet implemented). 

The service was based on parsing our vast apache logs, crunching the data with Hadoop and Spark, using Cassandra both as storage for map/reduce jobs, and for the resulting crunched datasets.

At the time, there were no other IP-based geo localization service available in Norway that was anywhere near as accurate as IPGeo was. Not even international services.

Keywords:

Java, Cassandra, Spark, Hadoop, CQL

20092011

Self-service bank application for SSB customers

Bankenes Betalingssentral (via Itera Consulting)

Hired by SSB as a consultant working on a new self-service web application for all in-store payment machines merchants (any store offering debit card services through SSB). With this application, merchants were finally able to get near-realtime reporting on all their payment card revenues.

Keywords:

Java, JavaEE, HTML/CSS

20022009

SMS service for car service customers

Blue Bricks Software

Blue Bricks SMS was an SMS service hosting provider. The main customer was Møller Bil AS, for which I created an SMS service used for communicating with customers who had their car for service or repair. The system would automatically send SMS messages to customers when the garage set their case as completed, alerting the customers that their car was ready for pickup.

Keywords:

Java, Postgres, Hibernate, JavaEE, REST, API