Henrik Nordvik

Senior Consultant


Aspiring to be a full stack engineer. Currently most experienced with working with Java backend services, with a passion for performance tuning.

Worked on large and mission critical software projects on the Java stack, with distributed and clustered applications and integration between applications in a microservice architecture. Experience with developing, testing and deploying applications in an automated way.

In my spare time I work on various hobby projects to learn new technologies, from Javascript to x86 assembly. Currently looking into Scala, Apache Spark and React.

Work experience

Work experience
Aug 2011 - Present

Senior Consultant, Java Developer

Visma Consulting

Norwegian Tax Administration (2012 - present)
I worked on a project for the Norwegian Tax Administration where we modernized the applications stack from a COBOL/PL/SQL-based one to a Java and web-service stack, which later evolved into a RESTful microservice architecture. The project's mission was to collect new tax information, store it and make it available for tax calculations, reporting and other analysis.

  • Responsibility of implementing and maintaining the main storage system containing billions of documents with tax information, with focus on resiliency, high availability and high performance.
  • Assigned to the team responsible for improving the performance of the whole application suite. Improved the performance of the critical path ten fold by writing code for locating bottlenecks between web services, profiling the hotspots and improving the code, data structures and database interaction, which allowed us to go in production with good margins on performance.
  • Created custom tools to monitor the health of our applications, and to get insights on how they are being used and how they are performing.
  • Tracked down and fixed low performing queries and optimized them using the correct indices, rewriting, using query hints, and tuning the database.
  • Reduced heap memory usage by compressing objects that are currently not in use but which need fast random access using protostuff serialization and snappy.
  • Implemented and evolved RESTful APIs through major revisions while maintaining backwards compatibility.
  • Wrote extensive test suites with automated unit tests, integration tests, deployment tests, performance tests and backwards compatibility tests.
  • Designed and built a clustered search solution using Elasticsearch to efficiently search through terabytes of data. The data was a denormalized view based on several sources, which were updated in near real-time when data from the sources changed. Responsible for managing the cluster through upgrades and implementing techniques to reindex data while achieving high availability.
  • Improved the search latency by an order of magnitude by optimizing the queries and routing the search to the correct parts of the index.

Technologies used: Java, JAX-RS 2.0 (Jersey), Guice, JDBC, SQL, Jetty, Apache Curator, Zookeeper, Oracle, Elasticsearch, Hazelcast, Akka, JUnit, AssertJ, Mockito, Maven, Bash, Jenkins, HTML5, Javascript, React, Yourkit, Metrics.

Norwegian Labour and Welfare Administration (2011 - 2012)
Worked on the main system which case workers used to process applicants and follow up cases. System was based on an Oracle DB, with both PL/SQL and Java-code accessing it.

  • Improved the performance of the system to handle more concurrent users and a faster experience by optimizing the application code, the SQL layer and the database itself.
  • Identified time-consuming parts of the application and moved them out of the critical path and onto a queue for asynchronous processing.
  • Rewrote parts of the system to be able to scale horizontally. Current system used a single machine and was reaching the limit of what it could handle. We moved piece by piece off to different servers which could be scaled independently to reduce the load on the overloaded machine.

Technologies used: Java, SQL, Spring MVC, JPA, Oracle 11g, PL/SQL, WebLogic, Maven.

Aug 2007 - May 2011

Teaching Assistant

Norwegian University of Science and Technology (NTNU)

Was a teaching assistant in the following courses:

Image processing and graphics (C++)
Programming 101 (Java)
Procedural and object oriented programming (C++)
Algorithms and data structures (Python)


2006 - 2011

Master's degree in Computer Science

Norwegian University of Science and Technology (NTNU)

Wrote master thesis on sentiment analysis of movie reviews and tweets. Compared unsupervised methods based on dictionaries with supervised methods such as Naive Bayes and SVM.

2009 - 2010

Exchange program for 4th year of Master's degree

University of California, San Diego

Favorite class projects:

  • Implementing a top ranking compiler for a subset of C++ in Java, with syntactical and semantic checking and generation of SPARC assembly.
  • Implementing a ray-tracer in C++ with global illumination based on photon mapping, accelerated data structures (BVH) and monte-carlo path tracing.
  • Created tools in C for monitoring performance of applications on Linux. Measured for instance effect of L1 cache, memory latencies, throughput and latencies of disks and network and overhead of procedure calls, system calls, context switching and creating new processes.
  • Created a parallel solver for solving large sudoku puzzles with pthreads and MPI in C.



Introduction to Data Science, Coursera

Introductory course on how to manipulate and analyze data with both in SQL and Map-Reduce, then create a statistical model and simple supervised machine learning in R.

Functional Programming Principles in Scala, Coursera

Course on functional programming principles, with focus on immutability, recursion and how to combine it with object oriented programming with Scala.

Principles of Reactive Programming, Coursera

Course on asynchronous, event driven programming techniques, with focus on futures, streams and actor model.