On rediscovering painting

When I was a child, I was once asked to create a painting for a church. I don’t recognize exactly what the event was, but I ended up creating a painting of a huge colorful mosque. After secondary school, I followed an art class and during my studies in Computer Science and Engineering, I also once took up a painting class. Although painting hasn’t been a constant hobby of mine, I do return to it from time to time. In the past year, I did quite a few paintings from photographs, as gifts for friends or friends of friends.

Continue reading

LEDWall prototype 1

A year or so ago, my partner and I said to eachother “Wouldn’t it be cool to create a LED wall for our living room?”. We then set about to buy an Arduino and some required components for the first prototype. It took a while for us to actually get started, but my phone tells me that on the 7th of June I sent my technogeeky friends a photo over WhatsApp of my breadboard experiment:

arduino

beardboard


Continue reading

Build dependencies and hardcoded paths to shared network drives

Frankly, I’m surprised that I can’t find more blog posts on this topic.

I can’t imagine that I’m the only software engineer who has encountered dependency management of the form “it’s somewhere on the K: drive”. And yet, when I search online, I can’t find anyone griping about this. All I can find is this one blog post by Sonatype that goes on to advertise their Nexus repository manager.

In this case, we use environment variables for all our builds.. or so I thought. Last week, I encountered one project that was making an exception and doing its own thing: It was explicitly calling a tool on the K: drive and linking against libraries on that drive. Not only that, it didn’t use environment variables but hardcoded the path to the network drive in the build script and VS project settings.

Continue reading

Expressing ownership in a solution

I prefer expressing the difference between project a solution owns and projects it does not own (dependencies) with the help of Visual Studio’s solution folders. It’s a trick I didn’t come up with myself, I’ve deftly stolen it from a former colleague.

There are four categories:

  • The main project (in most cases a library or application)
  • Other projects the solution owns, that the main project depends on.
  • Test projects
  • Dependencies: projects the solution does not own

beforeafter



For a little dummy project like this it seems like a lot of overhead, but I’ve experienced that the list of dependencies can become quite large and the number of test projects grows with the number of projects under 1. and 2. What I like most about this approach, is that if you consistently apply this across your solutions, you always know what to expect when opening a solution; at a glance you’ll see what it’s all about. All in all I find it worthwhile to apply this grouping.

Category Posts in Custom Menu now works with wp_nav_menu_item_custom_fields hook

A issue that occurred has been fixed with some help from other plugin developers. This problem was that WordPress doesn’t have a hook to add fields to the Appearance > Menus page. I used to fix this by just overriding the function that created this page, but this way of working means more risk of conflicts with WordPress (updates / changes to the markup) and other plugins (only one can ultimately create the HTML that way). Thanks to the plugin author of Max Mega Menu, who pointed out a workaround other plugin developers have been using, this is no longer such an issue. I intended to implement their suggestion for some time now, and today I got around to it.

In the next release, my plugin now supports the wp_nav_menu_item_custom_fields hook and should be compatible with other plugins. See original support question here: Is there any way to use this with Max Mega Menus?

Those who need this functionality right away can grab the latest development version at the plugin page on WordPress.org

Contrafreeloading

“Jensen discovered (and many subsequent experiments confirmed) that many animals — including fish, birds, gerbils, rats, mice, monkeys, and chimpanzees — tend to prefer a longer, more indirect route to food than a shorter, more direct one. That is, as long as fish, bids, gerbils, rats, mice, monkeys, and chimpanzees don’t have to work too hard, they frequently prefer to earn their food. In fact, among all the animals tested so far the only species that prefer the lazy route is — you guessed it — the commendably rational cat.”

— Dan Ariely, The Upside of Irrationality (62)

Project management quadriliteral

Laatst had ik een interessant gesprek met een oud-studiegenoot, die aangaf onder druk te staan om een product af te leveren van hoge kwaliteit, binnen te korte tijd en met te weinig resources. De bekende driehoek van tijd-geld-kwaliteit. Tijdens ons gesprek poneerde ik de stelling dat wanneer er geen concessies gedaan worden op tijd, geld of kwaliteit, er een concessie moet worden gedaan op een vierde parameter: verantwoordelijkheid.

Continue reading

Volgende week

Ik heb een rare kronkel in mijn hoofd.

Stel, het is zaterdag en de eerste dag van de maand. Ik zeg: “Zullen we volgende week woensdag afspreken?”  Op welke dag van de maand wil ik dan met je afspreken?

Ik denk, volgens mijn vriend als enige persoon op de wereld, aan de 5e. En ja, ik weet dat we daar de prima uitdrukking ‘aanstaande woensdag’ voor hebben, maar toch is volgende week woensdag voor mij, in dit geval, hetzelfde. In mijn hoofd begint de week namelijk op maandag, en ‘volgende week’ is dus ‘de week van eerstvolgende maandag’.

Anderen hanteren juist ‘volgende week’ = ‘vandaag plus zeven dagen’ en bedoelen dus de 12e.

Zijn er meer mensen die geen dynamische maar een statische week hanteren bij de term ‘volgende week’? Vandaag maar eens een vergelijkend onderzoek onder mijn collega’s doen 😀

Het is vandaag woensdag. Wanneer is volgens jou ‘volgende week maandag’? Nu we het er toch over hebben, wanneer is ‘maandag over twee weken’? Toch fijn dat we datums hebben. De 5e dus, tot dan!

Solutions, projects en mappen structuur

Laatst had ik met een collega een discussie over hoe de structuur van onze code repository dient te zijn. Op dat moment kon ik niet zo snel beantwoorden waarom ik voor- danwel tegenstander van een bepaalde indeling ben, dus heb ik er nog eens over nagedacht.

In dit geval gaat het om verschillende Visual Studio Solutions (.sln) en hun C++ projecten (.vcxproj). Als ik een indeling zou moeten maken, zijn mijn afwegingen als volgt.

Ownership en containment

Solution

Een solution bevat projecten waarvan hij al dan niet owner is. Bij een solution als MyApplication.sln, verwacht ik een project MyApplication.vcxproj. De solution is owner van dit project, het hoofdproject. Het project kan daarnaast nog dependencies hebben op andere projecten. Deze dependencies zijn ofwel specifiek voor dit project, ofwel generiek en herbruikbaar. De solution bevat alle projecten waarvan de projecten waar hij eigenaar van is direct of indirect afhankelijk zijn. D.w.z. MyApplication is afhankelijk van MyApplicationLib, welke op haar beurt weer afhankelijk is van GenericLib. De solution bevat alle drie deze projecten. Dat lijkt heel voor de hand liggend, maar het komt nogal eens voor dat een project afhankelijk is van een library die niet in de solution is opgenomen, waardoor een linker error optreedt tenzij je de dependency handmatig vantevoren los bouwt. Niet fraai.

MyApplication

Continue reading