“In het ergste geval, leer je er iets van.”
Matthijs Langenberg is a --year old software engineering manager living in Enschede, The Netherlands, with his wife Shibra, their daughter and cat. He has over a decade of experience in web development, user experience design and team leadership. In his spare time, he enjoys photograpy, reading and gravel biking.
At the end of 2017 I participated in a congress called Day of the Medication Safety (Dutch: ‘Dag van de Medicatieveiligheid’). Earlier I had been involved with a project to support remote double-checks of medication administrations and repeatedly was asked by customers, if we could also support the administrative process around signing off medication charts. This sparked my curiosity.
I found myself in a large theater surrounded by nurses from all kinds of care organization. The next moment I felt proud hearing the familiar notification sounds, originating from attendees who had not muted our messenger app on their phones. During one of the talks, the audience was instructed on how they should handle paper medication charts. One after the other, nurses stood up in protest and claimed that these advices can not be put into practice.
“I regularly have to work with an outdated version of the medication chart,” one nurse said.
“Even updated medication charts contain all kind of mistakes,” said another.
“Each pharmacy uses their own print template, confusing me when I visit new patients,” a third nurse added. This is a problem worth solving, I thought, and so Ons Medicatie began.
Back in Groenlo, I pitched the idea of an electronic version of the medication chart at our monthly all-hands meeting. We often say: “If you pitch an idea, be aware there is a slight chance you are expected to execute it as well.” And that’s exactly what happened. So I began by writing a functional requirements document and presented this internally and to a few of our customers. I contacted a design and development studio to start working on an early prototype and reached out to vendors of pharmacy systems.
Gradually, a multidisciplinary team was formed with designers, developers and commercial people and together we extended the Nedap dossier to support medication administration workflows.
After five years at Nedap healthcare, my role gradually shifted from an operational role as software developer to a more managerial role. Partly because teams grew around the applications I initially worked on by myself, but also because Nedap healthcare attracted more software developers who needed proper guidance.
In this role I was responsible for hiring the right talent, holding regular one-on-one meetings and help employees setting performance goals. These responsibilities also meant I sometimes had to bring bad news, for example when I needed to let people go, who turned out not to be the best fit for the company. I can share from personal experience, it doesn’t get any easier with time.
In my full-time role as engineering manager I was responsible for three development teams and over thirty direct reports. This was only manageable due to assertive and self-reliant employees and the fact that I could depend on strong team leads in charge of day-to-day operations.
After extending the employee portal with several standalone features, I felt the need to make a bigger impact. I had noticed the use of WhatsApp within care teams for transferring patient-related information, which obviously does not comply with the GDPR rules. I set out to make a better and secure alternative.
To beat the competition, a product has to be at least ten times better than its competitor. So I wanted the barrier of use to be lower than WhatsApp. I knew tight integration with the products people were already using, was going to be the key to achieve this.
Ons Messenger facilitates group communication and direct messaging for care teams and organizations and handles over a million messages per week. I initiated and executed this project by hiring an external design agency, a development studio and by leading a four-person team.
Before the introduction of electronic health records, care professionals still used paper records for keeping track of a patient’s medical history. I helped our customers with the transition from paper, by creating a medical dossier web application, intended to be used by home health nurses and aides.
This application, as part of the employee portal, is actually a front-end for Nedap healthcare’s EHR database, written in Java. I made the necessary changes so it would respect proper HTTP caching headers (e.g.
If-None-Match). This allowed me to apply a technique called ‘Russian doll caching’ for HTML snippets, to guarantee fast response times even under high load.
The adoption of electronic health records was made a success by the ability of writing and reading medical records directly within the employee portal. Later on I coordinated the design and implementation of the medical dossier mobile app, which eventually led to the replacement of this web application.
As a side project I made an NFC-based memory game for children. This game was playable at the Nedap family day in October 2011, an open day for family and friends of Nedap employees. By using icons and characters from Nedap healthcare products, this was a fun way to boost our brand.
Ons Memory is a type of matching game. Instead of turning over two cards at a time, the player taps two cards with a mobile phone. The goal is still to find a matching pair. Completed pairs are not taken from the game, raising the difficulty level significantly.
There is an interesting background story to the Samsung phone displayed in the image below. In 2010 Nedap healthcare was facing a big challenge. Nokia, the only supplier of phones with NFC, had canceled the release of a new Nokia 6216 Classic model and also seized production of the existing Nokia 6212 Classic. With a rapidly growing business, we were in demand of a steady supply of Nokia NFC phones that could run our NFC-based time tracking application. Our backs were against the wall and we were scrambling to buy leftover bits of inventory from any place we could.
Just at the right time, Samsung released the S5230 Star-NFC, available on a limited basis for use in NFC trials. We were lucky to get hold of a few sample phones and as I had dabbled with iPhone app development before, I was asked to help in making our J2ME MIDlet compatible with the new Samsung Star NFC.
Despite hours of debugging, I could not get it to work. Our app detected the NFC tag fine, but as soon as I tried reading any of the data sectors an error occurred. I worked closely with Samsung’s software engineers in South Korea, but after weeks of mailing back and forth we did not came close to a solution. On the contrary, there was still no mutual understanding of the problem.
Time was running out and it was at that moment when Rob Schuurman, business unit manager of Nedap healthcare came to me and said: “If you think going to South Korea will give us only the slightest chance of success—just go.”
The next week I was boarding a flight to Seoul and after a bus ride to Gumi, I met in person with the Samsung engineer who I had been in contact with all the time. The next morning, we got down to business. Out of nowhere two NXP engineers showed up who had been flown in from the country’s capital. It seemed Samsung was serious about fixing this issue as well.
Using some kind of magic probing device the NXP engineers were able to snoop on the wireless connection between the phone and the NFC tag. They confirmed seeing the ‘read’ commands issued by my application. “Wait a minute”, said one of the engineers. “Isn’t this supposed to be an encrypted connection? We shouldn’t be able to see those commands in plain text at all!” The engineer from Samsung knew what to do, he opened his editor and changed the code to flow through the correct encryption routine.
The next few days were spend sightseeing in Seoul. When I landed back in Amsterdam and checked my inbox, I had just received the fixed Samsung Star firmware. A trip well worth taking.
After finishing the iO Open project, I moved into a product owner role for the employee portal. This application—written in Ruby on Rails—is used by employees of healthcare providers (mainly nurses), for tracking work hours, viewing their schedule and to check their time off balance.
To get a good understanding of the users’ needs, I visited customers and asked if I could attend their care team meetings. With me I brought a folder with printouts from the application and went through each of the pages asking for their thoughts. Learning about people’s behaviors and their intrinsic motivations is what drives me in creating good solutions and this method helped me well to get started.
One of the bigger features that I delivered was the face book (smoelenboek in Dutch). This is a place focused on the social aspects of connecting to other employees within a large organization. There is room for a short personal bio, employees can view upcoming birthdays and browse the numerous teams within the organization.
After graduating I landed a software development job at Nedap healthcare. It was Jan Hendrik Croockewit who welcomed me and posed me with a challenge. “Can you find a way to open a door lock with only a mobile phone?”, he asked. Luckily, I came prepared, I had completed a minor Health & Technology at Saxion University and knew exactly what he was talking about.
During my minor, I had learned that nurses working in home healthcare, need to enter the homes of mobility-impaired patients. They don’t want to carry around humongous keychains, it would make them a target for theft and is impractical. A key under the mat is used as a possible solution, but this is not safe and invalidates the patient’s home insurance. For Nedap healthcare’s customers, this was also a big issue, but would they have guessed that their employees were already holding the key to the solution in their hands?
Employees using Nedap apps were already equiped with NFC-capable mobile phones for time tracking purposes and my colleague Pieter Bos had figured out how to put these phones in NFC card emulation mode. We partnered with SALTO Systems who provided us with an easy installable electronic door lock cylinder that works with NFC—providing me with a good excuse for a trip to San Sebastian, Spain.
SALTO engineers had added a useful feature to their proprietary desktop software. By the use of a special API—maybe for debugging?—the SALTO card reader could respond with data it would normally write to a physical NFC tag. I wrote the software stack to take this data and transfer it onto a mobile phone. So when nurses started their shifts, our time tracking app would download the keys to their patients homes, right to their phone!
With our solution, entering the home of a mobility-impaired patient was as simple as holding your phone near the door lock. Although the high cost of ownership eventually prevented market adoption, this project was an amazing start for me at Nedap.
In 2009 I was given the opportunity to work as a software engineer in Silicon Valley. I vividly remember the moment one of my teachers at Saxion University asked me if an internship in the United States could interest me. Wondering if I might end up in a remote town in Texas, I asked him: “Where?”. He could not have given a better answer.
So off we went. Joined by my classmate and friend Siet Toorman we boarded our first transatlantic flight from Amsterdam to San Francisco and were welcomed by Arthur van Hoff, who was our mentor during our six-month stay. Together with Siet, I worked on the design and implementation of a distributed and scalable Web crawler. The ‘crawled’ web pages were analyzed to provide semantic context to the real-time stream of public tweets from the Twitter Firehose.
In our spare time we explored the Bay Area, visiting iconic places such as the Computer History Museum in Mountain View and enjoying a Highway 1 road trip to the Santa Cruz beach. I enjoyed every moment of working and living in California and I am grateful for the things I have learned from the most talented people in the field—Arthur and my colleagues David Creemer and Jens Christensen.
Not long after our internship had ended, Ellerdale Inc. was acquired by Flipboard.
During my first year at Saxion University I was looking for a part-time job to save up money for driving lessons. I had bought Dave Thomas’ Programming Ruby (yes, the original Pickaxe book) and I just fell in love with the language. Therefore I did not want to settle for a PHP job—in which I had the most experience until now—and I definitely wanted to avoid Java, a language that did not give me the same warm feeling as Ruby did when it was introduced in the curriculum.
Coincidentally one day when I was working on a blog article, I came across a job opening for a Ruby developer at Newminds B.V. and I immediately called their office. Only hours later I found myself taking the train to Hengelo for my first real job interview. The interview went really well and at one point Newminds’ CEO Erik Laarman asked me if I could show him some of my work. I said I would, only if I could borrow one of their laptops. Because I had not prepared this, I needed to open up a terminal and use SSH to connect to my server on the University campus. After entering several commands I had booted the Rails application I was currently working on. I believe Erik had already seen enough to hire me on the spot.
While working on Shopr an idea materialized to create a content management system to give shop owners control over the static content on their sites. This also gave the opportunity to host websites for small businesses in The Netherlands.
I don’t exactly remember who suggested using Windows Live Writer—I bet it was Geert, but this tool really kick-started development of Idscms. With Windows Live Writer, people had a true what you see is what you get experience: being able to edit pages on their website as if writing a Microsoft Word document (including embedding images).
My job was to debug and document the parts of the XML-RPC protocol that Windows Live Writer used to connect with WordPress, Blogger and MetaWeblog. With that documentation in place, I set out to implement the same set of API endpoints, allowing Windows Live Writer to be used for our own content management system. With this application being heavily API-based, I opted for using Merb as a more modular alternative to Rails 2. I designed this content management system to be multi-tenant as well, with the option of updating the design and general layout of each site independently.
I felt very lucky when I could turn my part-time job into a full-time internship for five months. During this time I worked on developing a Microsoft Dynamics NAV-based retail e-commerce platform combined with an in-store point of sale solution.
Together with Robin Janse (designer and ActionScript developer), we created the point of sale solution using Adobe AIR technology. While Robin worked on building the interface, I worked on an API proxy service allowing the AIR application to fetch and store information directly from the retailer’s ERP-environment.
The next challenge was connecting with hardware peripherals. Accepting input from a bar code scanner is easy, this device just emulates a keyboard, but other peripherals could not directly be controlled by the AIR application. So I came up with the solution to run a local Ruby webserver on the point of sale system, allowing the AIR application talk to the receipt printer, the cash register drawer and the payment terminal over HTTP. Experiencing the first completed debit card transaction was a magic moment, albeit requiring Ruby C extensions to make it work.
For the e-commerce platform we used Ruby on Rails to create a multi-tenant application that served multiple retailers. Each shop was customizable using a templating system and the webshop products were directly controllable from the shop owner’s ERP-environment. Robin designed and implemented each of the custom themes while I worked on the backend code to tie everything together.
In the end we realized we had bitten off more than we could chew. Nevertheless I had given it all and I am proud of the accomplishments we achieved in a relatively short time period. It would have been better to focus on either the e-commerce webshop or the point of sale solution separately. With Microsoft Dynamics NAV being a widely used ERP-solution, this would have been enough of a differentiator to turn either idea in a successful business and a better focus would have resulted in a more mature product.
My first assignment at Newminds was to help build an application for potato farmers. Together with Michel Dogger we created a Ruby on Rails application from scratch to allow farmers receive updates on quality samples that were taken by Aviko Potato, the company buying the potatoes directly from farmers. One interesting aspect was that Aviko Potato could use this application to write out a tender on which farmers could bid and respond, matching supply and demand. The technology that enabled this all came from the mind of Geert Rozendom, CTO of Newminds, he had devised a way to create a reliable connection between a Microsoft Dynamics NAV database and a Ruby on Rails application.
This was also my first encounter in web development implementing a design that had been done by an external agency. It was a hard lesson learning that the ‘over-the-wall’-approach of design and development is not the right fit for me and that making an already-signed-off design work in Internet Explorer 6 can be very frustrating (i.e. life lessons were learned).
My first Saturday job as a 16-year-old was at Ellage Electronics owned by Roel Maarsingh in Gramsbergen. I started helping out with chores in and around the company. After a few months I had begun with production assembly work, such as PCB soldering and quality control. This eventually turned into a summer job where I also worked on IT-related solutions.
One example of this is the setup of a Linux server—I selected Gentoo Linux—to provide web and email services. Roel must have really believed I knew what I was doing for putting a critical part of the communication infrastructure the hands of a teenager. Don’t worry, I eventually helped them migrate to Google Workspace. 😉
Another project I really enjoyed had to do with the fact that many of Ellage’s employees do through-hole assembly at home. When a particular job had been finished, the at-home workers called into the office to schedule a pickup of their completed work. I noticed that these calls were disruptive to the office floor and experimented with a message board—think along the lines of phpBB—to shift to an asynchronous communication style. I felt that the end result was partly successful. Although employees quickly adopted the message board, reducing the number of disruptive calls, it had always been another channel to monitor. In general, people easily fall back into old habits and usage of the message board for pickup requests declined after a few months. It was, however, satisfying to see the at-home workers connect with each other and for me to take my first steps in improving operational processes with technology.
For the course RealTime Embedded Systems our project team created an interactive videowall. This installation connects twelve VESA mounted mini-PCs with displays together over a local network. Each display shows a looping video of a person looking straight ahead. At a random intervals a broadcast event will cause two displays to ‘pair’, resulting in the two people looking at each other.
We were introduced to the Scrum framework to manage this project, which was a welcoming change after learning the more traditional waterfall and V-Model practices. But I believe it didn’t took long before I lend out my copy of Extreme Programming Explained to one of my teachers.
How we sold this project as a real-time embedded system is still a mystery today. To me an x86 machine running Windows with a Java program controlling VLC media player is neither embedded, nor real-time. I guess the teachers found the autonomous part more important. And yes, since there is no conductor of the orchestra, you can call it autonomous.
This ‘art’ installation was featured on the 2009 Saxion open days.
We were tasked to assemble an autonomous robotic car and program it in C++ to drive as fast as possible along a white line of tape laid out as a racetrack in the university hallway. This circuit was obstructed by several obstacles and we had to use an ultrasonic sonar sensor to steer around those. As a bonus assignment we were asked to transmit the driven path over a radio connection to a PC, and to plot this on a map.
When I read through the project description I immediately had the—in my mind—brilliant idea of starting right away with the radio connection and then use a Ruby program on a PC to remotely control the car. Thus effectively moving the brain to something with actual processing power and allowing a much faster software iteration cycle. Unfortunately this was not what the teachers had in mind with a real-time embedded system and I honestly think it wouldn’t have worked either as the radio connection turned out to be unreliable.
I did stress the importance of a build pipeline to my team, so instead of struggling with USB flash drives and multiple manual steps—as I saw others do—we were able to flash the software of the car with a simple press of a button.
For this high school project I created a red scanning light as can be seen on the car from Knight Rider, called KITT. Looking back at it years later, I am still proud on what I achieved by myself.
I started by taking a car’s third brake light apart and modified it in such a way that every LED can be turned on individually. By grouping the twenty-eight LEDs in four groups of seven, I could use multiplexing to address each LED using only eleven I/O pins. This meant I could use a simple PIC16F84 microcontroller to drive the lightbar.
Implementing pulse-width modulation in assembly code to achieve the correct fade-out effect was a lot of fun to do. I think I even presented the code to class using an overhead projector. Never did I see people looking more confused. 😉
This 3.5-day course given by Remco Claasen was the one of the most intense and confronting experiences I have been through in my career. It is also by far the best training I ever had. Remco has thought me an indispensable practice in life: how to assess your energy levels and to act on this. At its core this is about eliminating energy-draining activities and focussing on the things you enjoy doing most, then applying these things in a way which are benificial to the people around you. Believing that this will lead to a better and happier life.
It may sound obvious, but in reality it is undeniably hard to give in to a gut feeling telling you that you might be heading down the wrong path and to make concrete plans to change direction and fix this. Luckily Remco’s training gives you the guidance needed to make a head start in this, by writing down your mission statement.
I am proud to share my own mission statement here: “I, Matthijs Langenberg, use creativity and entrepreneurship for my own development and that of others. I am a problem solver and enjoy the appreciation I get from impacting the lives of others. I am ready to help friends and the people around me and I have fun in living a comfortable life together.”
In this year, I transitioned into a full-time leadership role at Nedap and wanted to further improve my qualities in developing people. While I initially thought my growth would be in the area of output management, I learned that I can have a much greater impact by being more open to others and by sharing what I truly feel and think with people. Even if these thoughts make me feel insecure.
Since I have studied computer engineering, a compiler course was never part of my curriculum. However I did study digital signal processing and writing assembly. In my day job, I only use high level programming languages. So I took the opportunity to follow an online course to bridge the two domains and write my own compiler by hand.
In this course, writing a full compiler including lexical analysis, parsing, type checking and code generation was satisfactorily completed. I also completed a theoretical exam in lexical analysis, parsing, syntax-directed translation, abstract syntax trees, types and type checking, intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems.
Programming is just a tool to solve problems that people perceive. The true difficulty lies in understanding the question behind the question. This can only be understood by observing instead of listening.
By following the online HCI course I have learned how to design technologies that bring people joy, rather than frustration. Using human-centered design skills, I learned principles and methods to create excellent interfaces with any technology.