About
Data:
- Full name: Ronald Alexander Crooy
- Hometown: Geldrop (near Eindhoven)
- Country: the Netherlands
- Birthyear: 1982
- Preferred occupation: software developer, entrepreneur
- Personality: open, outgoing, fun, fast-thinker, creative
- Preferred work location: remote, hybrid-remote, full-office, not too far from my house
- Motto: Strong opinions held weakly
- Highest education: Computer science Master degree
- Philosophy/religion: stoic, atheist
- LinkedIn: in/racrooy
Who is Ronald?
I love engineering, my specialty is software, but I love all types of engineering. Making things, figuring out how things work, thinking of solutions, debating about solutions, pairing up with others, but what I love about engineering mostly is the idea that we can take control and build solutions.
For me entrepeneurship is strongly tied to engineering, taking initiaitve, coming up a new idea, thinking creatively, not waiting for other to pick up tasks, these are all aspects that are as important for engineers as they are for entrepeneurs.
In general I love activities in which I can find flow, like surfing, walking with the dog in the forest, cooking, researching or learning about things, these are all activities that I can easily lose myself in.
Finally I am a parent, for me that means that I can share my knowledge and experience, something which I gladly do with colleagues if they are open to it. It means practicing patience and stoicism, the ability to let go of negative emotions quickly and focus on the good things.
Education
Master, Computer Science; Eindhoven University of Technology 2000-2008
Thesis title: Cycle Time Prediction: When Will This Case Finally Be Finished?
An adapted version, shorter and better written, was published in Lecture Notes in Computer Science, 2008, Volume 5331/2008, 319-336 · Jan 1, 2008 Link
Where I worked
Withlocals: 9 years
- fullstack developer
- software architect
- data-engineer
- CTO
I co-founded Withlocals as the sole software developer, this means I build everything initially. The first 2 years my technical co-workers were interns or freelancers, during this time our entire stack was built. I had to focus on everything, maintain everything, define architecture, solve problems and as a founder I was also involved in strategic decisions.
Later as the company grew, we were able to hire fulltime developers, and my responsibilities only increased. I kept focussing on development of the platform, but now people management was added. Since we did not have children yet, I spent most of my time working.
After the series A, I gave up the CTO role in favor of the role of Chief Software Architect, which means I could go back to doing what I did inititally and leave the meetings with managers about management to others. During this time I could again spent 95% of my time programming, architecting and doing devops.
Volt, European Data team: 2 years
- web app developer
- volounteer
As a volounteer for the political party Volt, i build a small PWA to track the distribution of posters for the German campaigns. The app was built on request, and is to this day a volounteer project of mine.
Sioux Remote Solutions: 1.5 years
- backend developer
- embedded software developer
placed via Sioux Embedded Systems
For 2 years I worked on a project that enabled connecting to machines remotely, with the purpose of gathering metrics, doing maintenance and taking control. My work involved programming in C++ and C#, and parsing lots of existing projects, documentation etc. The company did not keep developer for long as it was an in-house project of the parent company, as a result the quality of code and documention was required to be high to simplify hand-overs to new developers.
I learned how to work in a structured process, how to deal with large existing codebases that are not forever yours to maintain. Also I got to play with electronics, solder wires, connect computers to machines and visit machines on site, which was fun.
ASML: 3 years
- fullstack developer
- data-engineer
placed via Sioux Embedded Systems
At ASML I started as young developer fresh out of University, I was mentored by a bunch of older engineers of every type of background. ASML employs a great number of different type of engineers, physicists, and mechanics, and my first desk was situated next to a think tank from whom I learned a lot about everything related to engineering. I tagged along my mentors as I walked the halls, drinked coffee with stakeholders, sat in many meetings above my paygrade as a fly on the wall.
I learned how to not just build what was asked for, but what was needed, by really listening to your stakeholder and trying to place yourself in their shoes. Also, in hindsight, I learned you dont need a process in a tiny development team with experienced developers, you can just iterate and build things while talking extensively to your users.
History of my Technical Experience
At ASML I worked in PHP and Java, connecting many datasources into a single MySQL for reporting. The job was essentially to make complex down-drillable reports in Zend Framework (php) with the data that was imported hourly or daily from various sources. Essentially it was data-engineering before that name was popular.
At Sioux I worked in C# (with SQL Server) for the backend part, and C++ with a entirely custom application for the client that was running on various types of machines. I also had my first experience with electronics here.
At Sioux I got a couple days Scala training by Martin Odersky in 2012 (I think), after which I was itching to use it. At Withlocals (in 2013) I decided that Scala with Play framework was a good choice, together with Anorm+MySQL and Angular 1.x on coffeescript I build the MVP. Later we ditched coffeescript for plain Javascript (ES6) with ReactJS. Coffeescript's whitespace significance was just too sensitive for errors, and I never liked Angular. Later we switched the fronted codebase to Typescript, which I can honestly say I love.
Over the years I learned how to properly use AWS/GCP, I started with manually managed EC2 Instances, moving to AWS Elastic Beandstalk, ending in a GKE kubernetes clusters with our infrastructure as templated-yaml in a git-repo. I learned many things about devops at Withlocals.
Our Scala codebase stayed for the most part in Play Framework, we upgraded Scala versions, ending in 2.13 with the planning to move to 3.x in the future. We added some extra separate projects (micro-ish services) in Akka-http, and lately one using ZIO. All in all Scala is at this point my preferred language if I would have to build a custom thing, I use it every year when I do the advent-of-code.
Noteworty projects
Big or small, these are things I remember vividly. I am omitting a lot of things I build over the last 9 years as founder, but these things I picked out due to noteworty-ness.
2022 New Withlocals UI using NextJS
As a concept we created a brand new simple product- & checkout-page using an Api first SaaS webshop, Auth0 and Nextjs. We proved we could quickly setup a fully working replacement for the product page and checkout page while smoothly integrating with our existing Stack. We had to create a couple new API's for our partner-api, as we integrated with ourselves as if we were a partner. I was responsible for integration from NextJS with Auth0 and with our own backend, it also required various backend modifications.
Skills:
- Auth0
- Typescript
- Reactjs
- Scala
- NextJS
2021 Offline first PWA
I made an offline first PWA for Volt, it is a fully offline first app, that can be used without internet connection. It is a PWA, so it can be installed on the homescreen of your phone, and it can be used as a native app. It is also a progressive web app, so it can be used on any device, even a desktop computer. The app synchronizes with the backend when it is online, and stores all data locally in the browser. The app is used to track the distribution of posters for the German campaigns. The app was built on request, and is to this day a volounteer project of mine.
Skills:
- PWA
- Postgres
- CSS
- Typescript
- Reactjs
- Offline first
- RXDB
2020 Data engineering
I setup a data pipeline for our data team, which is now used by the whole company. The pipeline consists of a easily extendible Data export api on the backend, which is used by a kubernetes based Airflow setup which scrapes that data into bigquery and then initiates further processing using DBT.
The airflow setup runs fully in kubernetes also the tasks of all DAGs are run in kubernetes pods, meaning it is easy to scale up and down.
Skills:
- MySQL
- Scala
- Python
- Airflow
- kubernetes
- Bigquery
2019 Group tours
In order to facilitate group tours we had to make some changes to our booking system. The changes were however in the core of our booking system, and the changes were not backwards compatible. It involved splitting up one of our core domain entities into two 1-N domain entities. The project was architecturally complex, especially because we had to make sure the old system still worked. My job as architect, was to develop the changes and guide my colleagues to code in this tricky and risky part of our system.
Skills:
- Domain Driven Design
- Hexagonal Architecture
- MySQL
- Event sourcing
- Scala
2018 Pink is the new blue
A large rebranding project that included a complete redesign of our website. We created various new api's and rebuild our entire frontend stack. The new stack was in ReactJS with Typescript, and we used cordova to build a native app for Android and iOS as well as the website from a single codebase.
Skills:
- cordova
- Scala
- CSS
- Typescript
- Reactjs
2017 Moving from AWS to GCP
Due to some funding we got from Google, we moved our entire stack from AWS to GCP in a matter of months. We moved our stack from AWS Elastic Beanstalk to GPC GKE, with zero downtime due to the magic of mysql replication magic.
Our entire stack was moved quickly and fluently, again with zero downtime. The process also involved upgrading our stack to kubernetes.
Skills:
- Kubernetes
- MySQL
- GCP
- AWS
- Scala
- Redis
2016 Withlocals Originals
After various iterations we decided to build a new product. The process involved a lot of planning, as it was a mix of sending out a team to Rome, Italy to improve our pictures, shoot videos and train our local guides in the new concept.
We build the new product very quickly, starting with the changes required for our operations team, and then building the customer facing parts later. The planning required constant communication with our operations team, designers and photographers in order to make sure we could deliver the product on time. The project was a success, and it brought Withlocals product market fit.
We achieved this result by applying a kanban like process with constant communication, and a simple focus on only this and nothing else. Our goal was always clear, we understood the concept we were building and the need to to quickly build a great MVP.
Skills:
- Team leading
- Scala
- MySQL
- AWS
- CSS
- JavaScript
- Reactjs
2013 Withlocals MVP
I helped build Withlocals as co-founder, fullstack-developer, CTO.
I started as the sole technical co-founder, and we hired freelancers and interns for frontend and design. All in all we build our MVP in 5 to 6 months. In hindsight we built way too many features in our MVP, but we did have a full booking system, admin system and a complete website with extensive search features, product catalogs, and various SEO and SEA solutions in place.
Skills:
- Team leading
- Scala
- MySQL
- AWS
- CSS
- JavaScript
- CoffeeScript
- AngularJS
- CI/CD
2012 connected a parkinglot-gate to the internet
As a project for Sioux Remote Solutions i had to connect a parkinglot-gate to the internet, it involved screwdrivers, soldering irons, c++, c# and a lot of learning about hardware.
Skills:
- C++
- C#
- electrical engineering
2012 a Bugfix in C++ custom String implementation
this might sound small, but as a kid this was a moment of pride for me
I encountered, debugged, tracked down and fixed a bug in a custom String implementation in C++. The implementation had copy on write, and obviously the bug was related to multi-threading. This was in my early career, and this bug alone taught me the complexities of multi-threading and memory. Also I try not to use C++ if I can avoid it due to this experience.
Skills:
- C++
2008-2011 Data engineering pipeline
This was my first project after graduation.
I helped built (from the beta MVP) up an internal information system at ASML that combined data scraped from SAP and Team-Center-Engineering. SAP contains business and logistical information on the production proceses, and TCE contains the engineering view on the production process.
The Cerberus information system combined those two views. The project was run like a startup, where we had to continuously find users, and adapt or expand our information system to satisfy users. My job was to gather requirements, iterate over a new feature and make sure it was running smoothly. I worked on the UI, the backend, and the database synchronization pipelines to scrape the data and combine it all.
Skills:
- PHP
- MySQL
- Java
Technology skills:
Tools, languages, frameworks:
- Javascript
- Typescript
- Coffeescript
- Scala
- ScalaZ
- ZIO
- Prometheus
- SQL
- Akka
- Play Framework
- MySQL
- AWS
- Google Cloud
- Deno
- Node
- Python
- Airflow
- Bigquery
- Angular 1.x
- PHP Zend framework
- NextJS
- IPFS
- RxDB
- Postgraphile
- Postgresql
- Jenkins
- Kubernetes
- Cordova
CS Skills:
- Domain Driven Design
- Functional programming
- Object Oriented Programming
- Agile Scrum, Kanban
- Waterfall
- Data engineering
- Mobile development (cordova, PWA)
- Silent meetings
- CI/CD
More details:
Ideal working conditions:
- hybrid remote/office
- 4 day workweek
- flexible hours
- fun, social environment, very informal
- diverse team, I learned that a diverse team really enables original viewpoints
- silent meetings Silent meeting manifesto
- zero tolerance for pointless loud meetings
- high tolerance for Dutch directness, bluntness and sarcasm
Family:
- 2 kids, girls
- wife
- dog
- chickens
Human Languages:
- English (fluent)
- Dutch (native)
- German (holiday sufficient)
- French (holiday sufficient)
Sports:
- Wave-Surfing
- Wind-Surfing
- Running (yogging through the woods without deadlines or goals)
- Pencak Silat
- Ashtanga Yoga
Hobbies:
- Walking (with the dog)
- Learning/researching
- DIY/Construction
- Engineering
- Coffee
- Cooking
- Debating anything over a drink
- Parenting
Most stupid mistakes I made:
- working too many hours, too long days, and doing complex things on the way out at friday 18.00, thus making a stupid mistakes, like accidentally deleting the entire Elastic beanstalk environment causing all our servers to be removed. Although I managed to bring it all back in less than 30 minutes from backups, without any dataloss reported.
- Picking MySQL when I could have just picked Postgres
- Storing too much data in the frontend, or too much business logic for that matter.