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 […]

Mijn review van Antagonist

Mijn review op trustpilot.com: Ik ben sinds 3 jaar klant bij Antagonist en zeer tevreden. In al die tijd ben ik bij alle vragen of problemen die ik had, zeer […]

Optelsom van gebruiksonvriendelijkheid

Ik heb een paar weken geleden de PostNL Verhuisservice besteld. Bij het invullen van het bestelformulier moet je door een aantal hoepels springen om je privacy te waarborgen. Allereerst moet je bij “Ik wil specifieke bedrijven informeren over mijn adreswijziging” klikken op “Overslaan”.

Vervolgens kom je bij de stap met de misleidende titel “Speciaal voor u, als nieuwe bewoner”. 

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.

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 […]

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

Solutions, projects and directory structure

A while ago I had a discussion with a colleague on what the structure of our code repository ought to be. At the time, I couldn’t find the words to explain why I prefer one strategy over another, so I’ve given it some more thought.

In this case we’re talking about several Visual Studio Solutions (.sln) and their C++ projects (.vcxproj). If I were to choose a directory structure, my considerations would be as follows.

Ownership and containment

Solution

A solution contains projects that it may or may not own. I expect a solution like MyApplication.sln to contain a project MyApplication.vcsproj. The solution owns this project, the main project. The project could have dependencies on other projects of course. These dependencies are either specific for this project, or generic and reusable. The solution contains all projects that the projects it owns directly or indirectly depend on. I.e. My Applicaiton depends on MyApplicationLib, which in turn depends on GenericLib. The solutoin contains all three projects. It may seem obvious, but it’s quite common to find a project that depends on a library that is not included in the solution, causing a linker error unless you built this additional dependency manually beforehand. Not pretty.

MyApplication

Gebruikersnamen en wachtwoorden

Mijn top 3 van vervelendste user experiences: – websites waar je niet je eigen gebruikersnaam kunt kiezen – niet je mailadres als gebruikersnaam kunt instellen, of – je niet je […]