Categorie archieven: Programmeren

Een Mac in het bedrijf

Bijna mijn hele werkende leven heb ik doorgebracht achter een Windows PC (die paar jaar OS/2 niet meegerekend). Thuis heb ik al jaren een Mac, maar op het werk was dat tot voor kort niet mogelijk. Een half jaar geleden kon ik echter een MacBook Pro kiezen, en dat heb ik gedaan.

De opstelling is simpel: de MacBook staat onder een monitor, waarbij ik beide schermen gebruik, en ik heb een losse muis voor de invoer. Over de muis kan ik kort zijn: het is een Logitech M705 “Marathon”, en die doet het prima. Drie jaar met een batterij is ook niet slecht (de teller staat op dit moment nog boven de 900 dagen).

OS X werkt over het algemeen goed, maar ik gebruik een paar kleine programma’s om de dag iets makkelijker door te komen. Hier zijn ze:

1Password

Wachtwoorden onthouden is voor mijn beperkte geheugen een uitdaging. 1Password houdt ze netjes voor me bij, en sychroniseert foutloos via o.a Dropbox. (Dropbox is sowieso vaak het eerste programma dat ik ergens installeer.)

De handigste feature van 1Password is de integratie met de meestgebruikte browsers: typ Cmd+backslash, en de plugin logt voor je in. Dat werkt niet altijd vlekkeloos, maar dan kun je altijd nog het wachtwoord van het clipboard plakken.

Karabiner

Het toetsenbord van de MacBook Pro is misschien wel een van de beste laptoptoetsenborden dat ik ooit gebruikt heb, maar de layout heeft 1 groot nadeel: er zit geen Control-toets aan de rechterkant. Als je, zoals ik, regelmatig de Emacs keybindings gebruikt, dan is dat superonhandig. Gelukkig kun je met Karabiner de rechter Option-toets omzetten naar Control, zodat je je vingers niet meer in moeilijke bochten hoeft te wringen. Het programma kan nog veel meer, maar dit is waar ik het voor gebruik.

Moom

Natuurlijk kun je in OS X vensters een andere grootte en plaats geven, maar ik wil dat heel precies kunnen instellen. Daar is Moom voor. Voor iedereen die secuur is, of een milde vorm van OCD heeft, is dit programma een zegening. Ga met je muis boven de groene knop van een venster hangen, en je krijgt een popup met allerlei handige opties om je venster te verplaatsen en/of een andere grootte te geven. De grootte stel je in op een raster, waar je met je muis overheen kan slepen. Ook het verplaatsen van een venster naar een ander scherm kan met 1 klik op de muis. Veel meer plezier van 10 dollar kun je niet hebben.

I’ve never made anything where it was a breeze. Maybe some developers are like that, but not me. My one gift isn’t intelligence or talent — it’s just that I keep my eye on the end zone and keep going, one strenuous yard at a time.

Brent Simmons, developer van Vesper

Eendagsbug

Als programmeur loop je regelmatig tegen problemen aan in de producten of libraries die je gebruikt. Meestal is de oplossing simpel: je typt de foutmelding die je krijgt in bij een zoekmachine, en binnen een paar tellen heb je de oorzaak gevonden. Of je gaat rechtstreeks naar Stack Overflow. Mocht dat niet helpen dan kun je de bugtracker van het product nakijken, of is, in het geval van Java open source, GrepCode je vriend.

Maar soms. Soms loop je tegen een probleem aan dat zich niet zo makkelijk gewonnen geeft. De ergste zijn degenen die ik de one hit wonders noem: je typt de foutmelding in, en precies 1 iemand heeft hetzelfde probleem gehad als jij en heeft er melding van gemaakt in een bugtracker. En dan staat er geen oplossing bij. Of, ook vervelend, er staan alleen 3 reacties van mensen die precies hetzelfde hebben gevonden.

Tegen zo’n bug liep ik gisteren aan. Het voorgaande was een lange aanloop om de oplossing hier te delen, zodat andere mensen er hun voordeel mee kunnen doen.

Bij het koppelen van onze Jenkins build server aan een nieuwe Artifactory server kreeg ik bij elke build job de volgende foutmelding:

FATAL: java.lang.IllegalArgumentException: artifactoryServer cannot be null
java.lang.RuntimeException: java.lang.IllegalArgumentException: artifactoryServer cannot be null
	at org.jfrog.hudson.maven3.extractor.MavenExtractorEnvironment.buildEnvVars(MavenExtractorEnvironment.java:151)
	at hudson.model.AbstractBuild.getEnvironment(AbstractBuild.java:852)
Caused by: java.lang.IllegalArgumentException: artifactoryServer cannot be null
	at org.jfrog.hudson.util.PublisherContext$Builder.build(PublisherContext.java:168)
	... 9 more

Ga op deze foutmelding zoeken, en je vindt welgeteld 1 relevante hit, die verwijst naar de Jenkins Jira: Issue JENKINS-14268. Zonder oplossing, natuurlijk.

Dit verhelpen bleek uiteindelijk simpel: als je de url van een Artifactory server wil wijzigen in Jenkins, doe dat dan door de oude Artifactory server configuratie te verwijderen, en vervolgens een nieuwe Artifactory server configuratie aan te maken. Ik had zelf over de oude url heengetypt, en dat gaf deze foutmelding. De vraag of dit een bug is of een gebruikersfout laat ik aan anderen over.

Weg met AltGr

Om blijer te werken is het goed om kleine dagelijkse irritaties uit de weg te ruimen. Eén van die irritaties is voor mij de AltGr-toets onder Windows. Als intensief gebruiker van toetsencombinaties verhindert deze toets me om effectief de Alt+F4 combinatie te gebruiken om een venster te sluiten. Als je dat namelijk probeert met je rechterduim op de Alt en je linkerwijsvinger op de F4, dan gebeurt er niks als de AltGr-toets in werking is.

Gelukkig is dit eenvoudig te verhelpen: zie dit Stackoverflow antwoord om de AltGr-toets dezelfde functie te geven als de Alt-toets. Vergeet niet om na afloop uit- en in te loggen, anders werkt het niet. Ik heb het registry-script in mijn Dropbox opgeslagen zodat ik het kan draaien op elke computer die ik gebruik.

In de meeste Windows-programma’s heeft de combinatie Ctrl+Alt dezelfde functie als de AltGr-toets, dus als je bijvoorbeeld een Euro-teken wilt typen dan gebruik je voortaan Ctrl+Alt+5.