Erlend Hamberg, Software Developer in Oslo, Norway
Erlend Hamberg

Software Developer in Oslo, Norway

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.
Erlend is now available for hire




Oslo, Norway



Preferred Environment

Git, Vim Text Editor, Unix

The most amazing...

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


  • Software Engineer

    2014 - 2016
    • Worked on the back-end of the music marketing web app,, 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 (
    • 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
    • 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?

    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

    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

    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

    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), Domain-specific Languages (DSLs), F#, Python, Java, Idris, OCaml
  • Tools

    Vim Text Editor, Git, GCC, LaTeX, Ansible
  • Platforms

    Linux, MacOS, iOS, Unix
  • Other

    Embedded Software, Embedded Systems, Formal Methods
  • Paradigms

    Functional Programming
  • Storage

  • Frameworks

  • Libraries/APIs



  • Master of Science Degree in Computer Science
    2006 - 2011
    NTNU - Trondheim, Norway

To view more profiles

Join Toptal
Share it with others