So you want to know more about me as software developer? If you are a software developer too, then you will find interesting posts here from me about problems I have solved or techniques and tools I find useful. Perhaps they are also useful to you?
Gogo Dirsynch is a tool for synchronizing directories. Directories to be synchronized can be located on a computer's file system or on an FTP server. Personally, I use the tool to upload new versions of various websites to FTP servers.
Click here to read about the tool and download it.
On Saturday April 22, 2023, John Castelijn and I will give a presentation called "Stop **cking About! How to write tests that need a lot of data?" at the T-DOSE conference in Geldrop.
Click here to read more about it.
Gogo Account is a bookkeeping program I wrote and have used myself as treasurer for 3 sports clubs.
Click here to read more about it and to download it.
In an ignite session of 20 sheets in 5 minutes, I will explain how you can write unit tests without mocks using Test Data Builders.
A true story: we build a web application with JSF. We use ace:dataTable
to let the user sort and filter the table rows.
One table was sorted by default, so without user interaction. Inside this table, the user could change a dropdown field. We use partial submit so that a value change listener could update the value in the database.
What we did not expect was that when one the value of one dropdown is changed, sometimes other dropdowns changes too. Only on screen, not in the database. So after refreshing the page, everything looks fine again. But this bug is very confusing to our users.
Click here to find out how I solved this problem.
John Castelijn (a colleague I worked with at SPS) and I created a presentation about how to write tests that need a lot of data. This presentation was prepared for the T-DOSE conference in Eindhoven in 2020. Due to the corona pandemic the conference was cancelled. We did not want our preparations for this presentation to be in vain. That is why we decided to record it ourselves. The advantage is that you will not be distracted by the beautiful stage in the background and you will not be disturbed by noises from the audience.
I created two videos and published them on YouTube. The videos show a music editor and a Tetris clone I wrote for MSX computers when I was a teenager. The videos contain subtitles that explain what you see.
This post shows that FreeTDS returns an space instead of an empty string when reading data from Microsft SQL Server.
This article explains how you can write tests that need a lot of data.
As announced in this post, I gave a presentation at PyData Berlin on October 10, 2019. The presentation has the title "How to write tests that need a lot of data?"
The recording of this presentation is available on YouTube. Click here to watch my presentation.
On October 10th I will explain how to write tests that need a lot of data at PyCon DE & PyData Berlin. Click here to read the abstract of my presentation.
I have built a chess game that plays chess better than me. Click here to read about it and to download it.
On Saturday May 11, 2019, I will give a presentation called "How stuff works: computer chess" at the T-DOSE conference in Eindhoven. Click here to read the abstract of my presentation.
This article explains how to use Microsoft's configuration framework to read configuration from an INI-file like this:
[logging:0]
logging:level = DEBUG
logging:format = XML
logging:output = file
logging:filename = logging.xml
[logging:1]
logging:level = WARN
logging:format = TEXT
logging:output = email
logging:mailTo = devops@yourcompany.com
In What is so wrong with TDD on quora.com Robert Martin (Uncle Bob) compares programmers not using Test-Drive Development (TDD) to accountants not using double-entry bookkeeping. Ominously he concludes this comparison with: "Of course, if an accountant tried any of these excuses, they’d be fired or jailed. That day will come for programmers too. It’s just waiting on the right disaster."
To me, what is so wrong with TDD? Nothing. TDD is a great tool to write production code and cover it completely by tests. What is wrong is people claiming TDD is the one and only way to write correct production code.
Click here to read my post.
Gogo Chess is a computer chess game that plays chess better than me. Today I publish it for the first time. The program is still under development, but you can already give it a try.
Click here to read an article about an alternative design for the Visitor Pattern.
Gogo Logbook is an electronic logbook I built for the company my wife worked for at the time. I also have used it as a private logbook myself for some time. Click here to read more about it and to dwonload it.
On Saturday April 16, 2016 I will give a presentation called "Dynamic Programming: The technique behind the diff tool explained" at NextBuild 2016 in my old home town Eindhoven.
On Wednesday June 29, 2016 I will give a workshop: "How invariants help writing loops" at the Clean Code Days 2016 in Munich. The next day I will give a presentation: "Let tests drive or let Dijkstra derive?" at the same conference.
Click here to read the abstracts of the presentations.
Triplex is a Tetris clone I have written in 1993 for MSX computers. Click here to read more about it and to download it.
On Saturday May 30, 2015 I gave a workshop called "How invariants help writing loops" at NextBuild 2015 in my old home town Eindhoven. At ProgSCon 2015 I gave the same workshop.
For people who would like to know what I have talked about click here to download a PDF containing the summary of my presentation and the exercises in case you want to practise the presented technique yourself.
On Friday April 17, 2015 I will give a workshop called "How invariants help writing loops" at ProgSCon 2015 in London. Click here to read the abstract of my presentation.
On Saturday May 30, 2015 I will give a workshop called "How invariants help writing loops" at NextBuild 2015 in my old home town Eindhoven. Click here to read the abstract of my presentation.
For those of you who did not attend my presentation at the ALE2014 in Krakow I have written down the contents of the presentation.
Click here to open a PDF with the contents of the presentation.
My presentation "Let Tests Drive or let Dijkstra Derive?" has been accepted at the unconference ALE 2014 in Krakow. Click here to read the abstract of the presentation.
This article explains how to drop all tables for a single user in an Oracle database.
ICEFaces 1.8.2 throws a NullPointerException
. The stack trace shows that the exception is thrown by:
com.icesoft.faces.component.selectinputdate.SelectInputDateRenderer.encodeEnd(SelectInputDateRenderer.java:541)
In my case it turns out that this exception was caused by two SelectInputDate
instances with the same id
.
Unfortunately, ICEFaces does not give a concise error message.
Last year I got interested in Test-Driven Design (TDD). I practice TDD every now and again during my work. In my spare time I tried to solve a few katas using TDD. Then I studies other people's solutions to the same kata and discovered most of them were incorrect!
Click here to see my solution to the Potter Kata.
Click here to read a post about how I think about Test-Driven Development and formal proofs of correctness of algorithms.
It turns out that to make the valueChangeListener
work for SelectOneMenu
, one has to add partialSubmit="true"
.
See also this link at ICESoft’s forum.
Click here to see why initSQL does not work with odjbc14.
Click here to find out why grep [0-9]+[.][0-9]+
does not
match the line "...>2.49<..."
.
Subversion supports several protocols: http, https, svn and svn+ssh. click here to see how to install Subversion on an Ubuntu server and configuring it to use the svn+ssh protocol.
When logging in on a Samba server fails from Windows 7, click here to find a solution.
Mobile devices do not have a mouse. When the user uses the touch screen to click on a button, then this click is translated to mouse events. This way existing software can still be used on a mobile device without a mouse.
When the mobile device has a barcode reader, then when a barcode is scanned, this barcode is offered to the application as if it was typed on a keyboard. And typically a key press for the enter key is added after the barcode.
But what happens if the user accidentally moved the focus from a text box to a button? If the user then scans a barcode, the key presses for the barcode are ignored, but the key press for the enter will cause a button click!
It turns out that preventing this button click is difficult in Compact Framework. This article explains how to do this.
I decided to try a new Linux distribution. Last time I installed Linux I installed it from a USB stick. I remember I needed some special software to make the USB stick bootable.
Now I discovered UNetbootin. This tool copies a Linux distribution to a USB stick and makes it bootable. It can even download any of the popular distributions for you.
UNetbootin is available for Linux, Windows and Mac OS X.
Tip: most BIOSes can only handle USB sticks formatted with the FAT file system.
If you want sudo
without entering a password, edit /etc/sudoers
and add:
username ALL=(ALL) NOPASSWD: ALL
Save, and that's that.
When you run Eclipse under Linux and the "Search in file" feature does not work, then click here to read how to solve this problem.
Click here to see how to
programmatically scroll a JScrollPane
such that a component becomes visible.
Sometimes you have to work with an old version of an Oracle database. And if you are unlucky, SQL Developer cannot connect with that database. You can use less sophisticated tools to connect to the database. How do you find the constraints on a table? This article shows how to find them using SQL queries.
Click here for a report describing the contents of the presentation given by Prof. Dr. E.W. Dijkstra in honour of the eighteenth Dies Natalis of Gewis, on July 2000. Gewis is the Eindhoven Univeristy community of mathematics and computer science students.
I wrote this report to conclude the course 'Technical Writing and Editing English' of the Software Technology program (OOTI).