About Narnach

Hi, my name is Wes Oldenbeuving. I’m an experienced full-stack developer with a focus area that covers back-end development, testing, maintenance and security. I eat technical debt for breakfast.

I’m the one you call when you have a project that requires an update but you have “some” technical debt and spotty test coverage. Hosting and maintenance are other things I can help you with.

You can hire me as a freelancer, but I prefer working as your tech partner with my team of experienced full stack developers. Team members: Rachid and Gerard. We have our office in Amersfoort, the Netherlands, but we prefer remote work and thus can work with anyone anywhere.

I’ve been using the name Narnach on the internet since 2003, so when I founded my company in 2009 it was a natural choice. It has no inherent meaning, so it is uniquely my own.

Philosophy

I believe that by working on interesting problems, you can deliver the best results for the project. That means continuous learning and expanding your skill set. It also means looking for new challenges regularly, rather than always solving the same problem.

I enjoy empowering people. That can take many forms: automating business processes so people can do more with less time; creating framework code so other developers can do more with less time; setting up proper testing infrastructure, so code becomes more reliable and developers save time debugging.

I get invested in what I do. For this reason I expect clients to be just as committed to the project as they want me to be. The alternative is sadness for everyone involved, which helps nobody.

As a Dutchman, I am honest and straight-forward in how I communicate. When I say something sounds like a good idea, I mean it. When I think something is not going to work, I’ll say so.

Open Source

As a professional open source software user, I believe that I have a moral obligation to give something back to the open source community.

I publish the source code of many internal tools on Github. These tools have helped me scratch my itches, so I hope they can be useful to others. Some of my collaborative work is published together with Gerard’s Govannon and under the umbrella of Beta Corp. Whenever I find missing features in software I use, I try to contribute back in the form of a pull request to add those missing features.

My skills

Most of my experience has been on small teams with large responsibilities. This meant I’ve had to wear a lot of “hats” that would be full job titles in larger companies, but for me it’s always just been a part of what I do.

This broad experience helps me solve a wide variety of problems and enables me to speak the same language as a lot of other professionals.

  • Back-end developer: 10+ years full-time experience with Ruby on Rails, 2-3 years of part-time experience with Elixir
  • Database Administrator: Strong SQL skills (MySQL focus), database design, database optimisation, data migrations
  • Test Engineer: Writing unit tests, functional tests, integration tests, test coverage monitoring, static analysis to improve code quality
  • Build Engineer: Run tests with each git code push, automate the build process, end goal is Continuous Integration
  • Release Engineer: Use Capistrano or similar tools to deploy code, ensure tests pass before deployment, end goal is Continuous Deployment
  • Site Reliability Engineer: monitoring server clusters for performance, bugs, security vulnerabilities and uptime; recovering from outages
  • Sales Engineer: setup sales funnel analysis, setup A/B tests, optimise campaigns
  • DevOps Engineer: combination of Build/Release/Site Reliability Engineering
  • Linux system administrator: experience with various flavors of Linux (preference: Debian, Ubuntu, historic: Gentoo, RPM hell), core skill required for DevOps
  • Software Architect: design one or more software systems to solve a problem
  • Front-end developer: can get the job done but not my favorite part of the stack
  • Business Intelligence Analyst: create custom reports for business metrics or to visualise technical stats; create cohort analyses, customer lifetime value calculations, churn analyses; create & run custom queries, create spreadsheets with visualisations and more custom calculations; automate all of this and create web-based interfaces to support non-technical colleagues to obtain all of this information without my help.
  • Consultant: a bit of a catch-all for when I’m focused more on solving problems by communicating and empowering others, rather than doing “the work” myself.

Buzzword bingo

A grab bag of things I have experience with, in case you are looking for something really specific.

  • Programming languages: Ruby, Elixir, Javascript
  • Linux server software: Nginx, Apache, HAProxy, Redis, Memched, Cron, Sphinx & much more
  • HTML: HTML, SLIM/Jade, HAML, Erb, Eex
  • CSS: CSS, SASS, SCSS
  • JavaScript: Vanilla JavaScript (ES5, ES6), CoffeeScript, jQuery, basic understanding of React
  • DevOps tools: Puppet, Ansible, Docker, Kubernetes, Bash scripts
  • Databases: MySQL, Percona, Galera Cluster, PostgreSQL
  • Version control: git (my choice since 2007)
  • APIs: creating APIs, integrating with APIs, REST, SOAP, GraphQL

Project History

Prior to my work as freelancer I worked for a startup company, starting as junior developer and exiting as lead developer. I learned a lot, but ultimately my ambition pushed me to start my own company in 2009.

Mobile Payments

From 2009 until 2018 I’ve been working with Gerard on a multi-national mobile payment solution. It’s a high-volume, high-flexibility cloud of web services, designed to account for the fact that in Telecom all the rules seem to change every 3 months. The system has gone through a number of big changes due to business success and related scaling challenges.

We turned a website of a mobile content provider with a single payments provider (2009) into a payment system with five payment providers (2010), separated the business logic into a drag & drop business logic workflow builder based on visual programming principles (2011), reinvented the core payment solution into a plugin-based service suitable for handling multiple payment providers in over a dozens countries (2012), got serious about a responsive mobile front-end solution for multiple countries, multiple content types, and multiple payment types (2013), scaled the server architecture from a single physical server to a cloud of virtual servers, to accommodate millions of page views per week from around the world (2014), extracted a content management service from the plugin-based service, to separate codebases and load balancing needs (2015), added crucial business intelligence tools such as: a cohort analysis with trend-based predictions, and automatic sales pattern-based outage detection in third party payment solutions (2016). We got good enough at monitoring and outage detection, that vendors often asked us if they themselves had an outage. After nearly a decade of working with this client we felt we were outgrowing the opportunities available with them, so we parted ways after a year-long transition period where we trained a replacement team, chosen by the client, in India.

Crowd funding

After doing some small crowd funding projects, in 2010 we developed Seeds, a crowd-funding platform for a major Dutch bank. The regular security code reviews and penetration testing were a nice form of external validation that we produced top-notch code. Working with a bank taught me that I prefer working directly with small teams and business owners, instead of having to deal with the internal politics of a very large corporation.

As a result of working on Seeds, Gerard and me got to know Arthur van de Graaf, the Netherlands foremost expert when it comes to crowd funding. We created the crowd funding platform Leanfund together with him.

Foreign Exchange

In 2012 I took a brief dive into Foreign Exchange (Forex) trading, exploring the wonderful world of candlestick charts and programmatic trading. It’s fascinating, but there’s a lot of get-rich-quick temptation and speculation in there, and not a lot of solid fundamentals.

A/B testing & advertising

In 2013 I started LeadImprove as a side-project to make it easy to run some A/B testing experiments for customers. In 2015 I repurposed it to be an in-house tool for a customer, and they hired me to turn it into a Demand Side Platform (DSP), an OpenRTB Bidder service that participates in the high-volume, high-frequency auction process that takes places whenever you would see an advertisement on your phone or anywhere on the internet. A prototype to explore the domain was built in Ruby (single process, multi-threaded, handling 800 requests/second/cpu core), after which the production version was built in Elixir (2016) to handle the 30,000 concurrent requests per second it needed to process. This taught me a lot about low level performance characteristics in Elixir.

YouTube channel

In 2015 I turned my long-time hobby of video game playing into something more practical by starting a YouTube channel where I showcase games I like, and provide strategy guides and entertainment. It monetizes itself via ad revenue, and exposes me to a different side of the games industry. After creating over 1900 videos, I can say it has given me quite some practice in public speaking and improvisational speaking.

Beta Corp

In 2017 Gerard and I started Beta Corp, along with three other freelance developers, as a logical next step in our career. We did some projects together, but in the end a collaboration of freelancers proved to be akin to a herd of cats. Beta Corp was dissolved in 2019 and will be succeeded by a new company with Gerard, me and Rachid.

2017 started with an introduction into the world of international sea freight shipping, working on a platform that makes the life of freight shipping agents a lot easier than the old process where paper and spreadsheets were the tools they had to use.

Panopta

Near the end of 2017 Beta Corp started working on our first product, Panopta, a tool to make it easier to register and process cases where privacy-sensitive information may have been leaked. We started beta testing this in January 2018 and went live just before the GDPR went into effect in May 2018. This will support companies in their GDPR EU privacy regulation compliance, and most importantly it will save them time (and thus money). We discontinued the product in 2019 because it turned out that despite it being the law, most companies don’t care about the GDPR.

I followed a training to become a Data Protection Officer (DPO) and have been studying the law and information surrounding it with an eye on offering consulting services in this space. As developer on Panopta I’ve implemented internal cryptographic chains to ensure that user data is encrypted in a way that even we as developers can not access it. Privacy of our users’ data is our top priority.