Erlend Hamberg, Developer in Oslo, Norway
Erlend is available for hire
Hire Erlend

Erlend Hamberg

Verified Expert  in Engineering

Software Developer

Location
Oslo, Norway
Toptal Member Since
October 4, 2015

Erlend has a large range of experience in software development, having worked on projects from kernel driver development to web apps. He is most proficient on the back-end side of things and knows how important the behind-the-scenes foundation is for a good product. He has industry experience with C, C++, Haskell, and Erlang and is not at all afraid of learning new technologies or languages that may be well-suited for a problem domain.

Availability

Part-time

Preferred Environment

Git, Unix, Doom Emacs

The most amazing...

...piece of software I've built is a distributed chat server with probabilistic synchronization of state between nodes.

Work Experience

Back-end Engineer (Consultant)

2019 - 2022
Remarkable
  • Reduced cloud costs for document storage and backups by 75%.
  • Created an expandable back-end API with continuous deployment to GCP.
  • Added document synchronization integration with Dropbox and Google Drive.
Technologies: Go, Google Cloud Platform (GCP)

Software Engineer

2014 - 2016
Soundrop
  • Worked on the back-end of the music marketing web app, show.co, whose campaigns are seen by hundreds of thousands of end users.
  • Implemented a payment and subscriptions system using Braintree as the service provider.
  • Wrote microservices in Erlang and Haskell using REST and WebSocket RPC for inter-service communication.
  • Co-wrote an efficient, scalable chat system whose synchronization algorithm was presented at the Commercial Users of Functional Programming conference (CUPF) in 2014.
  • Integrated logging and error reporting to our systems using services such as Rollbar.
Technologies: Erlang (OTP), PostgreSQL, Haskell, Erlang

Software Engineer

2013 - 2014
Telenor Comoyo
  • Worked on moving payment in-house as a PCI-DSS compliant service provider.
  • Maintained and improved the payment and subscriptions system.
  • Led a team of interns in creating a proof-of-concept mobile banking app for the Malaysian market.
Technologies: Python, Java

R&D Intern

2013 - 2013
Galois Inc.
  • Worked on the Ivory language (http://ivorylang.org).
  • Helped develop features for a Haskell EDSL for building high-assurance, embedded software for microcontrollers.
  • Developed a run-time verification library for ensuring that a given set of temporal logic invariants held.
  • Wrote a GCC compiler plugin that allowed variables in C code to be instrumented and monitored at run-time.
Technologies: Formal Methods, Domain-specific Languages (DSLs), GCC, Haskell

Engineer

2011 - 2013
ARM
  • Developed Linux drivers for the Mali-400 series GPUs.
  • Worked with customers such as Samsung to resolve issues with new and existing hardware products.
  • Added support for new kernel features as they were adopted by Android and Tizen.
  • Did QA work in preparation of releases of our drivers to customers.
  • Worked on confirming and analyzing bug reports from QA testing from customers and reports from customers' end users.
Technologies: C, Linux

Talk: What's wrong with Java's type system?

Talk given at JavaZone 2015 about type system features: What are the actual shortcomings of Java's type system, and how does it compare to languages with more advanced type systems such as Scala, F#, OCaml and Haskell? How can these languages get type safety – often without having to use any type declarations at all?

iOS/Apple Watch app: How Much?

http://gethowmuch.com
Smart currency converter for iPhone and Apple Watch that knows which country you are in without requiring a data connection by doing reverse geocoding on an embedded encoding of world borders.

All parts are written in Swift except for the reverse geocoder that is written in C.

9m Unicode URL shortener

http://9m.no
URL shortener web-app utilizing the full unicode spectrum of characters to create short links. Back-end written in Haskell using Scotty for the HTTP layer and Persistent for storage.

SimpleEA

http://hackage.haskell.org/package/SimpleEA
Haskell library for creating evolutionary algorithms, e.g. for optimization or search problems. Has comprehensive documentation including a tutorial.

Talk: Probabilistic Synchronization of States Between Independent Nodes

https://www.youtube.com/watch?v=imjdhT6DqSs
Talk given at CUFP 2014 about weak, eventual consistency: In a distributed system with nodes that receive broadcast events and that each have an up-to-date history, a problem arises when a node is restarted: Did it lose any events while it was down? If so, we need to get this history from another node that hopefully is synchronized in order to reply to future requests with the correct history.

Languages

C, Haskell, Elm, C++, Swift, Erlang, ML Programming Language, Embedded C, Erlang (OTP), Rust, Domain-specific Languages (DSLs), F#, Python, Java, Idris, OCaml, Go

Tools

Vim Text Editor, Git, GCC, LaTeX, Ansible

Platforms

Linux, MacOS, iOS, Unix, Google Cloud Platform (GCP)

Other

Embedded Software, Embedded Systems, Formal Methods

Paradigms

Functional Programming

Storage

PostgreSQL

Frameworks

Yesod, Doom Emacs

Libraries/APIs

React

2006 - 2011

Master of Science Degree in Computer Science

NTNU - Trondheim, Norway

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring