Posts

Showing posts with the label the-software-that-i-love

[TSTIL] Mendix Cloud v4 - Part 2 - How to launch a complicated product

Image
[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2018 - Mendix Cloud v4 - Part 2 - How to launch a complicated product Note : This was a multi-year mega project (at least for my standards) and ran from about 2015 till 2018 when I left Mendix. It's still one of my proudest professional achievements. If you haven't yet, read part 1 about Cloud v4 . During 2017/2018 our team was doing a lot of things at the same time: Handle the operational fires in Mendix Cloud v1/v2/v3. Add new hardware with 50%-100% YoY growth, as well as handle all kinds of customer requests, like resizing VMs or adding more storage. These were all manual operations by our engineers. Migrate v1/v2 apps to v3 to ensure standardization. Build v4 which would make everything standard, scalable and self-service. It would be the solution to solve the chaos from v1/v2/v3. Fires? What fires? Running a 24/7 hosting operation for custome...

[TSTIL] Dat Narrenschip

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2005 - Dat Narrenschip Around 2005 I started creating a website for my friend Jaap who deals in antique maps at datnarrenschip.nl I wrote most of this here: see How we ended up owning a framing shop next :  2005 - Porting an Atari tax program to Delphi previous :  2004 - The HP 49g

[TSTIL] The WaterRower Camera

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2021 - The WaterRower Camera I was getting more and more heavy during this period, almost reaching 90kg / 200lbs. I never exercised but I had bought a rowing machine with a water tank because I wanted to exercise, in principle. The machine was bought in 2019 just before the pandemic and during the boring early pandemic months it was a welcome way to distract myself. For some weeks I started rowing like a maniac but of course it wasn't sustainable. The machine started collecting dust. It had a small "workout computer" displaying the stats, but it was very dumb and not connected to anything. For some reason I thought it would be a good idea to measure my stroke speed, depth, and power more closely. The (black) elastic band is wound up around a cylinder. By painting the cylinder white and tracking with a camera how much black/white pixels are v...

[TSTIL] Mendix Cloud v4 - Part 1 - How it got started

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2016 - Mendix Cloud v4 - Part 1 - How it got started We had been building a big new cloud for a year or two, but we did not have a name. I was the Product Manager for "it". Should we call it the Real Mendix Cloud? The Scalable Mendix Cloud? The Next-Gen Mendix Cloud? Or a brand name like e.g. Heroku, HP Helion, IBM BlueMix were doing. After brainstorming with Roald it dawned on me that this was actually our 4th generation cloud offering. Why not simply call it v4? Customers had always had lots of confusion on where their apps were hosted. They called it "the Mendix Cloud", the "Achiel Cloud" or the "Hans Cloud". If we now said "you are on v2" or v3, and you need to go to v4 because of X, that'd be a pretty simple explanation. I really liked the simplicity of the v4 name and pushed for it. No one had a ...

[TSTIL] Buildpacks for Docker

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2015 - Buildpacks for Docker As I got more familiar with buildpacks and docker, I figured out that we can use buildpacks to create runnable docker images. Not just droplets that you can only run in Cloud Foundry, but plain old docker images. It only took about 100 lines of bash! I still love the elegance of it: https://github.com/jtwaleson/buildpacks-for-docker next :  2015 - Mendix2Java previous :  2015 - certinator

[TSTIL] FDA Crawler

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2021 - FDA Crawler Some industries see a lot of competition even though there's not a lot of commercial traction yet. There the battles are fought not over customers and revenue, but over patents and certifications. With easee we were operating in a similar environment. It was very important for me as CTO / product person to figure out what our competitors were doing. One of the tools that I developed for this is the FDA crawler. It scrapes the FDA API for product and company registrations and serializes it in a git repository. Every week the script runs and with the git history you can see exactly if there are any created, updated or deleted listings. Any new company or product category is instantly visible. Well, sort of, because the database is only updated manually once every couple of weeks. We typically see news via a google alert weeks before i...

[TSTIL] decrypt.py

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2012 - Decrypt.py With my new python skills I created a funny little program called decrypt.py. I had done some hard disk recovery for a friend, and found it a bit ironic that the end result was so bland. It just said "19783 files recovered". In movies it's always way more dramatic. My creation brings the drama back to boring things. It takes input, shows garbled text on the screen and slowly reveals the original content. You can view a demo on the  github page . It only took a couple of hours to build, but the main thing about decrypt.py is that it got me really hooked on Hacker News. I had discovered it a couple of months before, but had never posted anything. Now with this post I reached the top spot for a couple of hours (I think?) and saw the comments and upvotes coming in. It was very addictive. I've reached the top place a couple ...

[TSTIL] Snapp

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2010 - Snapp Stephanie's uncle Rob had a small design / marketing agency in Amersfoort, together with Bart. They contacted me to create a web-based "company personality test". A bit like 16 personalities / MBTI but then for companies. I liked the idea and could use the money, so I went ahead and said yes. The basic concept was to get companies back in touch with their core to brand themselves more effectively. E.g. you might discover that your company is a true "pioneer" or "peace keeper". If you're in touch with your personality, it should give you a sort of compass for your actions and for how to communicate more effectively. It was about 12 questions and you had to drag and drop your 3 favorite answers per question. Then you got 1 of 12 different personalities at the end. After the test they could help you create a...

[TSTIL] QMS Integrity Checker

[ This is a part of "The Software That I Love", a series of posts about Software that I created or had a small part in ] 2020 - QMS Integrity Checker When we set out to get external certification for our product, we were in a bit of a bind. There's a whole bunch of international standards that have to be followed, and we had almost no experience with these. For Software Medical Devices there's at least ISO 13485, ISO 14971 and IEC 62304. The ISO 13485 is interesting, as it's a set up of requirements for forming a "Quality Management System" (QMS). Why is it interesting? Well, there's many ways of achieving high quality products, and I believe strongly in "move fast and break things". That's a good approach in general and many companies are successful with it (Facebook, SpaceX). It takes guts though. The failures will happen, and you need people with a high risk-tolerance to accept them. One of the reasons SpaceX can pull it off, but NAS...

[TSTIL] Cowboy e-Bike Remote Control

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2022 - Cowboy e-Bike Remote Control In early 2021 I was a bit down. It was winter, some team members had just quit and I needed to distract myself. Due to covid lockdowns and boredom I gained more weight and drank more. I needed exercise (yes I had a water rower but I was too lazy to use it. I had to cycle every day so a bicycle would be a good idea). I started looking at e-bikes, because having experienced the rentals on a trip to Berlin I was sold. It makes cycling even more fun, and you end up taking the bike for most of your trips. The two options were the VanMoof S3 and the Cowboy V3. The Cowboy won. Less quality issues, sleeker look & minimalistic approach. I love this bike. It brings a smile to my face whenever I step on it. Sometimes the smile turned upside down because my phone would not connect to bluetooth though. Stephanie also uses the bi...

[TSTIL] easee RemoteControl

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] easee RemoteControl The easee wizard engine was quite cool, and we used it to structure the code for our online eye exam. It executes whatever you see on your computer screen. It was not all good though. At some point in the exam your smartphone is paired using a websocket. The code for sending the phone what to display was a bit ugly. I had an inkling that there was a cleaner solution. We ended up with a special Vue component called "RemoteControl". This component has three props: - remoteComponent - remoteProps - callback When you use the RemoteControl component, a couple of store methods are called. These will serialize the remoteComponent, remoteProps and the callback and send them over the websocket. At the other side the specified component is displayed with the props. A special prop for the callback function is created too, so the user in...

[TSTIL] The easee Diff Viewer

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2019 - The easee Diff Viewer Medical Devices need an IFU document. The "Instructions For Use". It's called the User Manual in the normal world. The consumerisation and digitalization of healthcare blurs the contrast between the Medical Device world and the normal world. When is the last time you looked at the user manual for an app on your phone? Do most apps even have one? Probably not. The User Interface should be be self-explanatory. Why would it be different for a healthcare app? Having an IFU is kind of a ridiculous requirement if no one will ever look at it. As far as I know, even the regulators won't take more than a cursory glance for low-risk healthcare solutions. With easee we decided that the UI is the IFU, and for purely regulatory reasons we needed to create a PDF document out of it to show to the regulators. But how? Doing ...

[TSTIL] Packing all mxruntimes in git

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2016 - Packing all mxruntimes in git One of the things that made the buildpack slow, was that it had to download and unpack the whole Mendix Client and Mendix Runtime when building the container image. Over time these got dependencies got bigger and bigger. The images were bloated and needed time to transfer over the network. We needed a way to add a "cache" to our Cloud Foundry clusters, so that the buildpack could just copy the files from disk. We would not even have to include the dependencies in the final image. That would be a lot faster because the apps themselves were usually pretty small. Storing all the hundreds of runtime versions in the cache of every server was going to take up a lot of disk space though, we needed something more clever. I realized that most versions were minor updates and that a lot of files were shared between mult...

[TSTIL] Stacky Bird

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2013 - Stacky Bird The year 2013 was tumultuous. We were doing lots of projects at work, we moved to a fancier office on the Gedempte Zalmhaven, and I was secretly interviewing at Facebook. My personal life was about to be upended too, as we figured out that Stephanie was pregnant in February/March. Coming home one Friday night there was a surprise pregnancy test on my desk. Two thoughts fired like rocket ships in my brain, in opposite directions. One was happy and excited, the other scared of the responsibility and the stress. My facial expression was switching between them for a couple of seconds. Then I realized the nice thing to do for Stephanie was to focus on the first rocket. She must have seen the hint of horror in my eyes though, and it makes sense. Any good parent should be at least a bit afraid about having kids and it is a giant responsibility...

[TSTIL] newnode.py

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2011 - newnode.py At Utrecht University I had done a dual BSc. degree in Computer Science and Cognitive Artificial Intelligence. Most if it was technical but I had done plenty of courses in the humanities as well. Some psychology, history of philosophy and Arabic. I was also lucky enough to have joined a book club where we read the classics. I made great friends there. One of them invited me to an honours program in Rhetoric in Amsterdam. That class had about 30 students, and Alexander Klöpping was one of them. I remember that he flew to NYC to get the first iPad and then talked about it on national television in "De Wereld Draait Door". He was in a very different world from all the other students and it was really cool to see.  When I started working life I knew I was going to miss the humanities. I registered for an evening program for a BA in...

[TSTIL] Access2Mendix

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2012 - Access2mendix I'm not sure how this project got handed to me. Maybe we were a bit desperate to find new revenue, and in that search, someone had realized that a lot of enterprises used mini-apps built on Microsoft Access. Microsoft Access was installed on most systems because it was bundled with Office, and it allowed mildly technical users to build apps. Going through proper IT processes involved layers of red-tape so lots of people had built lots of solutions with Access. As I hated red-tape too I understood those people very well. They were what was called "shadow-IT". These apps were stored on some shared folder which only a couple of people knew about, and no one knew how to maintain it. Lots of processes were going through these "unofficial" apps and this was seen as a problem, because IT was not in control. With Mendi...

[TSTIL] The too clever scheduling service

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2016 - The too clever scheduling service In Mendix Cloud v4 we only wanted to use fault-tolerant services. So no single VMs, but "services" that were "web-scale", "clustered" and "horizontally scalable". Most services we created were request based. So a request would come in, and the service would respond. Simple. We built everything according to the 12-factor app architecture and ran apps on Cloud Foundry. On the AWS side we used lambda and SQS. This was our toolbox for the new architecture. One service that was not request-based was the backup service. Every night we had to create backups. Users didn't trigger this backup creation, we had to trigger it ourselves. If you use a traditional VM, you'd set up a cron job and you're done. In our new world this was somehow considered bad, but we had no tools i...

[TSTIL] Mendix2Java

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2015 - Mendix2java Roald called me up one day and said we had a problem. We were about to close a major deal with a large company that I can't name here, but the sales process was stuck at the last stage. Roald was co-founder and pretty important and he never called me, so that was interesting. He's an interesting character: driven, business focused, and very smart. He's unbeatable at the interplay of tech and sales. He's very confrontational, so I had to get used to him in the first couple of years, but after that I deeply respected him. He's confrontational because he cares. I think the respect was mutual because he called me in this crisis, and we worked together quite a bit when I was a PM. This almost-customer was stuck on vendor lock-in. Building things on any platform is risky because it's expensive to migrate off of it. The...

[TSTIL] Certinator

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2015 - Certinator My brain is different from that of most people. This is a bit exaggerated, but I either understand something completely or I'm very confused. A coworker recently said that I somehow "know what I don't know". This is a blessing and a curse. A blessing because when I get it I am able to see bugs or solutions in the blink of an eye. A curse because I'm kind of useless and doubt everything until I understand a topic 100%. Both `git` and SSL/TLS were topics that I didn't get for a long time. When I learned the git commands I was useless, but once I learned the data structures I became a git expert overnight. It's a beautiful idea brilliantly executed. SSL/TLS was the same. In the Mendix Cloud, customers needed to add custom domains for their apps. As we were enterprisey, this had to be HTTPS but no low-code devel...

[TSTIL] mxplient

[ This is a part of " The Software That I Love ", a series of posts about Software that I created or had a small part in ] 2012 - mxplient The Mendix core had three parts: - The MxModeler (IDE) - The MxClient (Powering the app in the browser) - The MxRuntime (Powering the back-end and managing the database) I was in the Cloud team and used a Mendix app for the Cloud Portal. As we needed to automate a lot with external scripts, I needed an API in the app. Mendix had no REST functionality yet, and being Python fanatics we didn't want to touch XML WebServices. Then I realized the app already had an API. In the browser UI, I was doing all these actions I needed to automate, and those actions went to the Runtime as HTTP requests. Using the browser debugger I discovered the undocumented API that the MxClient and MxRuntime used. I proposed just making this API public, but the Mendix core teams were very against this. Who did this junior engineer think he was? Michiel Kalkman was...