willem.com

Programming on Willem's Blog

Linking Lemmid Store with kitchens

Integrating with external systems that you don't control

June 12, 2020
Designing backend servers to connect with external services is challenging as you need to take into account unreliability and unpredictability.

As part of the food ordering app I am building, I needed to design a reliable way to link the app to external systems. These external systems are beyond my direct control and include different checkout registers, kitchen management systems and ticket printers. Read along for more on designing for the unknown and unreliable.

Scalable application design without magic

Leveraging client computing power for high performance with many users

May 11, 2020
I needed to design a scalable backend infrastructure that could handle lots of concurrent users. I did this by leveraging the client's computing power having it handle most of the user interaction workload.

As part of the online food ordering app I'm building, I needed to design a scalable backend infrastructure that could handle lots of concurrent users. Scalability is considered a hard problem to tackle. Often it's presented like it's something magical, done by million dollar companies using secret tools. But, there is no such thing as magic, or is there?

Designing an interface for a food ordering page

Striking a balance between powerful options and mobile usability

May 1, 2020
Designing a food ordering page is surprisingly challenging because of the many variables that need to be accommodated on a very small screen.

Online ordering pages are more important than ever before. The COVID-19 virus, the resulting lockdowns and the social distancing rules have emphasised the need for a well-designed webshop user interface. This is surprisingly hard to get right!

Designing and implementing a (micro) payment system

Monetising my blog with coffee, Apple Pay and Mollie

Mar. 25, 2020
Designing and implementing a micro payment system with an emphasis on simplicity. Read about how I did it in this post.

Online payments are now more important than ever as businesses are disrupted by the COVID-19 virus. It drives my customers to seek new ways to make money online. I designed and implemented a (micro)payment system. This post is about achieving simplicity by solving complex challenges.

Monolithic vs Microservices software architecture

Choosing the right design for your app development

Mar. 3, 2020
This week I flew to Gothenburg to talk about enterprise software architecture, read along to learn about choosing the right architecture for your app development

This week I flew to Gothenburg to meet people from a large international shipping company, talking about the development of enterprise level software. During the meeting there were various experts in the room, one of them asked me on choosing the right software architecture (for big, complex, enterprise level apps). A very good question, well worthy for a blog post.

Multi-Window support in your iPad app

Native development for iPadOS

Oct. 7, 2019
Take advantage of the improved support for multiple windows on iPadOS by implementing new UI concepts enabling different use cases for your app.

Last month Apple released iPadOS, the first dedicated operating system for iPad. It differs from iOS with its support for the larger iPad screen, including multi / split screen windows. I develop apps and it was time to take advantage of these new possibilities that iPadOS offers.

Dig for dummies

Explaining an highly useful network tool

May 24, 2019
Learn how to use the dig command to query domain name servers to find the source of network problems, IP-addresses, hostnames, mail servers and related info.

When you're building websites, apps or email services you may run into domain names and their configurations. When everything is working as it should, most of this is invisible. But when troubleshooting a domain name configuration, it may be necessary to dig a little deeper... read along to learn how!

Understanding the security concerns in shared hosting

Considering open ports and unused network facing services

Feb. 28, 2019
People pay me to hack them, provided I'll explain how I did it. Read along to learn how hackers use security holes to hack your app, webshop or website!

People pay me to hack them, provided I'll explain how it was done, so future hacks can be prevented. As security consultant, I scan for weaknesses in my clients' apps, webshops and websites. Very often a hack starts by exploiting a security hole that is visible remotely. Read along to learn how hackers find security holes and what you can do to secure them.

Optimising images for the web and performance

Reduce filesize with jpegoptim, optipng, pngcrush and pngquant

Sep. 26, 2018
Make your website faster by optimising the images. This posts explains how you can do this.

One way to make your website faster is to make it smaller. Not with tiny fonts, but with less bytes! More than half the weight of an average website is because of images. Yet very few people optimise their images for the web and performance, time to find out how much bytes you can safe!

Cyber security: 5 easy tips to protect your server against hackers

Server hardening best practices for Windows and Linux

Mar. 10, 2018
These 5 practical cyber security measures will improve the safety of server, website and data.

This week one of my clients was hacked and asked me for emergency assistance to help secure their server infrastructure. It was a web server that ran WordPress websites on Apache (with PHP/MySQL), including a few webshops with customer data. This hack could easily have been prevented with the following best practices, is your server secure?

Tablet as main computer

Comparing the Microsoft Surface Pro to iPad Pro

Mar. 7, 2018
I have been using a tablet as my main computer for quite some time now. In this blog post I share you my experience on using Surface Pro and iPad Pro to get my work done.

For the past few weeks I have been using the Microsoft Surface Pro as my main computer. It's a modern tablet computer that can be used as laptop with the type cover. With the Surface Pen, it's a versatile PC that works in a lot of different ways. Time to find out if it's any good and how it compares to my other tablet computer, iPad Pro.

Updating Snake '97

About the challenges of developing a wildly popular game

Feb. 21, 2018
This month I bit the bullet big time: I redesigned the game engine of the wildly popular Snake '97 game. Read about the design challenges in this blog post.

Few years ago my brother threw a beer on my iPhone in an Amsterdam bar. The poor thing didn't like the Dutch brew as much as I do: it died. While waiting for a new phone to arrive, I used an old one that couldn't do anything but texting, calling and... Snake! The idea for Snake '97 was born and this month it was time to update the wildly popular game.

Clouds below my floor

Building a little datacenter in my basement

Aug. 31, 2017
Building a little datacenter in my basement utilising a very fast internet connection.

At my home I have this crazy fast optical internet connection. It is a 600MB up and down fibre connection which directly arrives in my home (no copper cables involved). It's like a private internet highway. Reason enough to find out if I could do something to make better use of all this speedy fiber galore...

The day I killed my LAN

Turned off my local network and went 4G only

July 31, 2017
I killed my office LAN and went 4G only. Saves a lot of clutter, energy and money.

Today I called my provider to quit my office's ADSL internet subscription, I don't need it anymore. I have turned off my local area network and switched my workflow onto mobile internet only. The simplicity and savings actually surprised me so much, that I made blog post for it.

Programming on Apple Watch

Serious about crazy experiments

Feb. 16, 2017
Programming with VIM over SSH on Apple Watch using a bluetooth keyboard

Over the past years I have been no stranger to crazy experiments, but this time I really wanted to push it into the extreme: programming on an Apple Watch. Would it be possible to actually write code on such a tiny device? Why even bother? This post is about the case for crazy experiments, and why you should try too!

iPad Pro next to my primary machine

Using it with Apple Pencil as a creative powerhouse

Jan. 30, 2017
Using iPad Pro with Apple Pencil next to my computer to form a create powerhouse

I wanted see if I can find something better than my old fashioned pencil and paper that I use for designing software as professional developer. I knew iPad Pro from my test last summer, figuring out if it could replace my primary development machine. While it may not be able to completely replace my thrustworthy ThinkPad, it turned out to be a totally different story when it comes to paper.

iPad Pro as primary computer

testing iOS as primairy development platform

Aug. 15, 2016
Is the time right to use an iPad as primary development platform to get some real work done?

The lack of physical clutter, distracting branding, or blinking LED's makes the iPad Pro a textbook example of minimal design. My despiction of distraction explains my interest in using the iPad Pro as only computer to test if it is up to the task. Is Apple's latest effort on iOS enough to enable it to do serious development work?

Building the blog... in style!

Developing on a 20-year old computer with 16MB RAM and Windows 98

June 23, 2016
Find out if it is possible to turn a computer from the 90s into a modern development machine.

One must be a bit crazy to come up with the idea to build a blog (as in: actual programming) on an old 486 laptop with just 16MB RAM. I happen to be that crazy: I took my very first laptop from the 90s and decided to find out if it was possible to turn it into a development machine.

All blog posts
Using nmap to scan a hosting server, identifying network facing services and open ports
Using nmap to scan a hosting server, identifying network facing services and open ports
I began using the ruler and color
I began using the ruler and color
The Smart Keyboard has a very nice tactile feel, but lacks certain keys (like ESC, HOME, END)
The Smart Keyboard has a very nice tactile feel, but lacks certain keys (like ESC, HOME, END)
Toshiba T2130CT laptop with a 75Mhz Intel 486 processor and a whopping 16MB RAM (that is megabytes!)
Toshiba T2130CT laptop with a 75Mhz Intel 486 processor and a whopping 16MB RAM (that is megabytes!)
Test image, containing solid colours, photographic and textual content
Test image, containing solid colours, photographic and textual content
Never thought I would be happy to see this: the Windows 98 boot screen!
Never thought I would be happy to see this: the Windows 98 boot screen!
The kickstand is a clever piece of design and engineering, being both functional and sturdy.
The kickstand is a clever piece of design and engineering, being both functional and sturdy.
iPad Pro + Apple Pencil replacing paper
iPad Pro + Apple Pencil replacing paper
Clouds below my floor: my little basement datacenter.
Clouds below my floor: my little basement datacenter.
Ken Ferry explaining the design of multiple window support for iOS during WWDC 2019
Ken Ferry explaining the design of multiple window support for iOS during WWDC 2019
Averaging 3.4 milliseconds in pinging Google. That's fast, datacenter fast.
Averaging 3.4 milliseconds in pinging Google. That's fast, datacenter fast.
Deceptively simple: the resulting food ordering page
Deceptively simple: the resulting food ordering page
Inspecting quality: left original, right pngquant
Inspecting quality: left original, right pngquant
Once a hacker knows what software your website uses, its easy to lookup known security holes using databases like cvedetails.com
Once a hacker knows what software your website uses, its easy to lookup known security holes using databases like cvedetails.com
Windows on iPad is possible using Remote Desktop
Windows on iPad is possible using Remote Desktop
Functional roles in the lifecycle of an iPadOS app (WWDC 2019, Steve Holt, Apple)
Functional roles in the lifecycle of an iPadOS app (WWDC 2019, Steve Holt, Apple)
Though a hatch near my front door I have access to the space below the floor.
Though a hatch near my front door I have access to the space below the floor.
Updating... updating... updating... updating...
Updating... updating... updating... updating...

More Programming on Willem's Blog

All blog posts