Categorie: Geen categorie
Bij Pronamic hebben we als richtlijn dat we alles strict in het Engels programmeren. Stagiairs leren we daarom ook altijd om in het Engels te programmeren. Toch zijn er op internet ook vele voorbeelden te vinden waarin Nederlandse naamgeving wordt gebruikt in de code. Waarom heeft Engels dan bij ons de voorkeur? Ik ben voor de aardigheid eens op zoek gegaan naar goede argumenten. Al snel kwam ik een artikel tegen uit het boek “Het beste van PHP en MySQL“.
Engels of Nederlands
Amerikaans Engels is de voertaal onder programmeurs. Ook de meeste PHP-ontwikkelaars gebruiken Engels. Als je echter PHP-script alleen voor jezelf schrijft of als je in een team met alleen Hollanders en Vlamingen werkt, zijn er goede redenen om Nederlands te gebruiken.
Wanneer je Nederlands gebruikt voor alle namen die je zelf kunt kiezen, wordt broncode beter leesbaar. Het verschillen tussen Engelstalige termen uit PHP en zelfgekozen namen in dan direct zichtbaar. Dat is de reden waarom ik in dit boek vaker Nederlands gebruik dan Engels: het maakt de voorbeelden veel duidelijker als PHP nieuw voor je is.
De kans op naamconflicten neemt drastisch af als je Nederlands gebruikt. Als je Engels gebruikt voor bijvoorbeeld een functie die je zelf definieert, bestaat altijd het risico dat je per ongeluk een bestaande PHP-functie gebruikt. Naamconflicten kunnen ook voorkomen met andere talen die je in PHP gebruikt: HTML, CSS, SQL, HTPT, MIME, XML enzovoort gebruiken allemaal Engels.
Natuurlijk moet je niet overdreven vasthouden aan het Nederlands. Hoewel databank en gegevensbank foutloos Nederlands zijn, zeggen en schrijven ontwikkelaars altijd database. Het Nederlands kent al helemaal geen bruikbaar synoniem van query. In zulke gevallen kun je naamconflicten voorkomen door verschillende woorden of een samenstelling met Nederlands te gebruiken. Maak dan van
Ward van der Put$database
en$query
bijvoorbeeld$database_met_producten
en$selectiequery
.
In een boek zoals deze is het denk ik ook prima om Nederlandse code voorbeelden te gebruiken. Lezers kunnen op die manier waarschijnlijk sneller zaken herkennen. Het argument om Nederlands te gebruiken om naamconflicten te voorkomen vind ik wat minder sterk. Voor dat probleem zijn er in PHP denk ik namespaces geïntroduceerd.
Al met al nog niet hele sterke argumenten om wel of niet in het Engels of Nederlands te programmeren. Ik ben daarom verder gaan zoeken en kwam o.a. de volgende vragen / topics tegen:
- Software Engineering Stack Exchange: “Do people in non-English-speaking countries code in English?”
- Quora: “Is it better learning programming in English or in my native language (Portuguese)?”
- DEV Community: “Do you feel comfortable learning in your own language or do you prefer English? (For non English-native speakers)”
Velen geven aan dat Engels de voorkeur heeft, maar om programmeren te leren je moedertaal wel fijn kan zijn.
DomQ (een Fransman) noemde nog wel de volgende aandachtspunten:
• I speak the language that the target audience will most likely understand. When coding open-source software with a global ambition, I use English. For less widely useful stuff (for instance, my Emacs configuration file), I might use French.
• I acknowledge the fact that not everyone will master English. In that perspective, using my mother tongue might actually make my code more accessible instead of less (in the example above, nobody cares about an umpteenth .emacs, except if it happens to be written in a language that they understand).
• Better to write good French than bad English. I actively discourage my subordinates from writing half-assed English especially where concision matters, eg in docstrings and version control commit messages.
https://softwareengineering.stackexchange.com/a/1764
Mattias Kihlström (een Zweed) noemde volgende argumenten om Engels te gebruiken:
• Allmost all programming languages I have ever used have been written in English (mixing languages would make the code harder to read for me)
• Most popular frameworks and third party extension are written in English (again, mixing languages would only be a distraction)
• Swedish characters (åäö) are usually not allowed when naming variables and functions
• If the other team members are from different countries we can still collaborate
• If I need support from a platform vendor it is is much easier for them to help me if they can understand my code
• It is easier to outsource support
https://softwareengineering.stackexchange.com/a/1687
Ik sluit me persoonlijk aan bij de argumenten van Mattias, dat zijn denk ik ook de redenen waarom we bij Pronamic in het Engels programmeren.
Mocht je zelf ook nog goede redenen hebben om in het Engels of juist in het Nederlands te programmeren dan hoor ik ze graag. Laat daarom gerust een reactie achter.
Gitlabber
Als webontwikkelaar maak ik veel gebruik van Git en diensten zoals GitHub, GitLab en Bitbucket. Ook bij Pronamic maken we hier intensief gebruik van. Alle WordPress plugins en thema’s die we ontwikkelen staan keurig in een eigen Git repository. We hebben inmiddels dan ook een archief met duizenden repositories. Het komt soms voor dat we alle repositories moeten doorzoeken. Het kan dan een hele klus om alle repositories te clonen. Gelukkig zijn er tools zoals https://github.com/gabrie30/ghorg en https://github.com/ezbz/gitlabber die daarbij kunnen helpen (via https://stackoverflow.com/questions/29099456/how-to-clone-all-projects-of-a-group-at-once-in-gitlab). Ik ben vandaag eens aan de slag gegaan met gitlabber
.
ASCII kunst met FIGlet en TOIlet
Voor de nerds 🤓, ASCII kunst met FIGlet en TOIlet:
FIGlet

figlet Pronamic
Er zijn veel FIGlet fonts beschikbaar, deze kun je bekijken via het showfigfonts
commando. En op http://www.figlet.org/fontdb.cgi is ook een lijst te vinden van fonts.

figlet -f shadow Pronamic
TOIlet
TOIlet werkt vergelijkbaar met FIGlet maar heeft coole kleuren filters 🦄🌈.

toilet Pronamic --filter gay
TOIlet kan ook overweg met FIGlet fonts:

toilet -d $(figlet -I 2) -f standard Pronamic --filter metal
Het subcommando figlet -I 2
geeft de standaard FIGlet font map terug zodat TOIlet weet waar de FIGlet fonts te vinden zijn.
Bronnen
Bij Pronamic maken we binnen WordPress projecten veel gebruik van Composer, PHPUnit en andere tools. Om het aanroepen van scripts te vereenvoudigen maken we ook wel gebruik van Composer scripts. In plaats van bijvoorbeeld vendor/bin/phpunit
te typen kunnen we dan composer phpunit
gebruiken.
{
"name": "…",
"description": "…",
"config": {
"sort-packages": true
},
"require": {
"php": ">=5.6.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"scripts": {
"phpunit": "vendor/bin/phpunit"
}
}
Nadeel daarvan was echter dat composer phpunit
geen kleuren output gaf. Terwijl het aanroepen van vendor/bin/phpunit
wel een kleuren output gaf. Dit terwijl in het PHPUnit configuratie bestand phpunit.xml.dist
wel colors="true"
stond. Na een kleine zoektocht kwam ik de oorzaak en oplossing tegen op Stack Overflow:
I added
Haralan Dobrev – https://stackoverflow.com/questions/27024298/keep-color-output-when-running-scripts-on-composer#comment44218731_27024464--colors=always
from PHPUnit master (4.6) branch which did the trick. It seems PHPUnit actually detects it is called through another scripts and suppresses the colors itself.
{
"name": "…",
"description": "…",
"config": {
"sort-packages": true
},
"require": {
"php": ">=5.6.0"
},
"require-dev": {
"phpunit/phpunit": "^5.7"
},
"scripts": {
"phpunit": "vendor/bin/phpunit --colors=always"
}
}
Hoe we dit bij Pronamic in gebruik hebben is bijvoorbeeld te zien in de WordPress pay core bibliotheek:
https://github.com/wp-pay/core

Disney emoji quiz
- 🔎🐠
Finding Nemo (Op zoek naar Nemo) - 🏴☠️⚓️🏝
Pirates of the Caribbean - 🐝🐛🐌🐞🐜
A Bug’s Life - 🦁🐗🐘🌅👑
The Lion King (De Leeuwenkoning) - 👹🕯🕑🌹✨👩🏻🦰
Beauty and the Beast (Belle en het Beest) - 🐶🍝🐶🎹🎁
Lady en de Vagebond (Lady and the Tramp) - 👾🎮🔨👊🍭🏅
Wreck-It Ralph - 🐠🐚🐟🔱🐙🌊🧜♀️
The Little Mermaid (De kleine zeemeermin) - 🐭🎪👂🐘
Dumbo (Dombo) - 👦🏼👴🏻🏠🎈⬆️
Up - ☃️👸😨
Frozen - 🐍🐻🧒📖
The Jungle Book (Jungle Boek) - 📖🤠👢🌵🚀👨🚀🍕
Toy Story - 💯1️⃣🐶
101 Dalmatians (101 Dalmatiërs) - 🧞👳♂️🕌👩🏻❤️
Aladdin - ❄️🍎💎7️⃣
Snow White and the Seven Dwarfs (Sneeuwwitje en de zeven dwergen) - 🚕⚡️🚗🚙💨🏁⛽
Cars - 👵🏻💇🏼♀️🐴🤴🏻🏰
Tangled (Rapunzel) - 👠👗🎀🤴🏻🎃✨
Cinderella (Assepoester) - 👸💋🐸🎶✨
The Princess and the Frog (De prinses en de kikker) - 🦌❄️⛸🐰
Bambi - 🤥🦗👴🏻
Pinocchio (Pinokkio) - 👦🏻🧚♀️🏴☠️
Peter Pan - 🦊👦🏻🏹🌳
Robin Hood - 🐭🍽🧀👨🍳
Ratatouille
Bron:
Het migreren van WordPress websites kan vaak erg snel gerealiseerd worden met behulp van SSH en enkele commando’s. Hieronder een aantal commando’s die hierbij van pas komen:
rsync --archive --verbose --compress --exclude-from=/data/www/example.com/public_html/.gitignore [email protected]:/home/user/domains/example.com/private_html/ /data/www/example.com/public_html/.
rsync --archive --verbose --compress --rsh='ssh -p 18765' /Users/remco/Downloads/example.com/ [email protected]:/home/user/public_html/.
mysqldump --host=123.456.789.0 --user=user_wp --password=******** --databases db_wp > /data/www/example.com/databases/db_wp.sql
mysql --host=123.456.789.0 --user=user_wp --password=******** mysql --execute="DROP DATABASE db_wp; CREATE DATABASE db_wp;"
mysql --host=123.456.789.0 --user=user_wp --password=******** db_wp < /data/www/example.com/databases/db_wp.sql
find /data/www/example.com/public_html/wp-content/uploads -type d -exec chmod 775 {} \;
find . -type d -exec chmod 755 {} +
curl http://*.s3.amazonaws.com/site.zip --output site.zip
unzip site.zip -d site
Webontwikkelaars die werken met cPanel en Let’s Encrypt zijn ongetwijfeld wel eens de volgende melding tegen gekomen:
There was a problem installing the certificate. Please contact support for more information.
Het kan soms lastig om te achterhalen wat precies het probleem was. Vaak kan de support afdeling van de hostingleverancier je dan verder op weg helpen. Als je SSH-toegang hebt tot het betreffende hosting pakket kun je vaak ook via die weg zelf achterhalen waar het fout gaat. Voordat je binnen cPanel het Let’s Encrypt certificaat installeert maak je dan via SSH verbinding. Vervolgens roep je daar het volgende commando aan:
tail -f ~/.letsencrypt/logs/letsencrypt.log
Op die manier krijg je realtime alle nieuwe logs binnen je terminal te zien. Vervolgens ga je via cPanel het Let’s Encrypt installeren en hou je je terminal in de gaten. Wat ik vaak voorbij zien komen is dat de DNS-records voor de betreffende domeinnaam niet goed zijn ingesteld. In de logs zijn dan vaak de volgende meldingen terug te zien:
example.com (http-01): urn:acme:error:unauthorized :: The client lacks sufficient authorization :: Invalid response from http://example.com/.well-known/acme-challenge/...
Als WordPress webontwikkelaar bij Pronamic maak ik veel gebruik van de Mac OS schermafbeelding functionaliteit (cmd ⌘
+ shift ⇧
+ 4
» spatie
). Voornamelijk voor blog berichten, support en documentatie doeleinden komt deze functionaliteit goed van pas. Wat ik minder mooi vind is de schaduw rondom schermafbeeldingen van Mac OS applicatie vensters. Na een zoektocht via Google blijkt dit eenvoudig uitgeschakeld te kunnen worden. Door het uitvoeren van de volgende commando in de terminal is dit uit te schakelen:
defaults write com.apple.screencapture disable-shadow -bool true
Hierna zal SystemUIServer
herstart moeten worden om de wijziging actief te maken:
killall SystemUIServer
Schermafbeelding met venster schaduw 
Schermafbeelding zonder venster schaduw
Uiteraard kan de schaduw ook weer ingeschakeld worden:
defaults write com.apple.screencapture disable-shadow -bool false
Bron: http://osxdaily.com/2011/05/23/disable-shadow-screen-shots-mac/
Helaas is op het adres waar ik woon geen TV kabel beschikbaar dus zijn we aangewezen op internet via de telefoonlijn. Hiervoor heb ik jaren gebruik gemaakt van het KPN Internet Thuis Instap pakket. Dit pakket heeft een download snelheid van 20 Mbit/s en een upload snelheid tot 2 Mbit/s.
Als webdeveloper merk ik zo nu en dan toch dat de 20 Mbit/s niet heel snel is. Vandaag ben ik daarom overgestapt naar het Alles-in-1 Standaard pakket van KPN. Dit pakket heeft een download snelheid van 60 Mbit/s en een een upload snelheid tot 6 Mbit/s. Bij het bestellen stond echter wel de volgende opmerking:
Op dit adres is de maximaal haalbare internetsnelheid 36 Mbit/s down en 6 Mbit/s up.
Ik ben erg benieuwd of na de upgrade, die pas over een paar weken actief zal zijn, mijn internetsnelheid is verbeterd. Ik heb daarom de snelheid even gemeten met een aantal tools:
Speedtest.net
Speedtest.net geeft momenteel een download snelheid van 8,66 Mb/s en een upload snelheid van 1,41 Mb/s.
http://www.speedtest.net/my-result/5537965661
Speedtest.nl
KPN Speedtest
KPN Speedtest geeft momenteel een download snelheid van 12,56 Mbps en een upload snelheid van 1,54 Mbps.
Ik ben erg benieuwd of na de upgrade de download snelheid in de buurt komt van de 36 Mbit/s. Zodra de upgrade door KPN is uitgevoerd zal ik dit bericht voorzien van een update.
Update 13 juni 2017
Het is alweer een aantal maanden geleden dat ik de update maakte van KPN Internet Thuis Instap naar Alles-in-1 Standaard. Vandaag even een update betreffende de internet snelheden die ik nu bereik. Vandaag bereikte ik een download snelheid van 11,29 Mbps en een upload snelheid van 0,76 Mbps. Helaas dus vrijwel geen verbetering terwijl ik wel meer betaal per maand.