Het heeft me altijd gefascineerd: hacker worden. Mensen met een bijzondere houding ten opzichte van de maatschappij. Zij die alles vrijwillig delen, streven naar vakmanschap en geobsedeerd zijn met het oplossen van problemen. 

Maar hoe sluit ik mij aan bij deze elite? Welke stappen moet ik ondernemen om de juiste mindset te ontwikkelen en een bijdrage te leveren? Tijd om uitgebreid op onderzoek uit te gaan en gaandeweg mijn ervaringen te delen voor andere geïnteresseerden. 

Ik zal de serie regelmatig updaten met nieuwe ervaringen. Ik weet nog niet in wat voor vorm, maar het lijkt me belangrijk om ergens de algehele stappen vast te leggen. Daarbij geeft het mij ook een houvast, een openbare verantwoording en een extra reden om de discipline op te brengen. 

Het referentiekader

Wanneer ik het heb over hacker worden, dan bedoel ik een 'goede' hacker, en geen cracker. Geen inbreker, geen sloper, maar een Bob de Bouwer :). 

Ik ga me verdiepen in hacken binnen het kader van programmeren/computers/netwerken. Hacken kan in allerlei vormen, maar zelf heb ik de meeste affiniteit met de IT.

Mijn uitgangspositie is 1 jaar ervaring met Javascript, 3 jaar PHP, CSS & HTML, 5 jaar SEO (zoekmachineoptimalisatie), en een beetje QBASIC uit mijn kinderjaren voordat een gameverslaving mijn jeugd een andere richting gaf :). 

Tijd voor een constructieve houding. Tijd om een hacker te worden. 

Het begin

Ik begin bij de meest voor de hand liggende plek: googlen op 'how to become a hacker'. Ik pak resultaat nummer 1 en start het avontuur bij: http://www.catb.org/esr/faqs/hacker-howto.html. De klassieke HTML layout prikkelt mij gelijk en zet gelijk de toon: functie over vorm. 

De auteur heeft een gedegen, formele stijl die mij aanspreekt. Tevens een auteur van de 'Jargon File', een hacker thesaurus. Daarnaast waardeer ik de alghele houding die hackers wordt toegeschreven. Het is precies die houding waar ik graag naartoe wil. Ik besluit dat dit mijn vertrekpunt wordt. 

Houding

Een probleem oplossen staat centraal: andere mensen helpen met hun centrale vraag: 'hoe word ik een hacker'. Houding en competentie zijn de sleutelwoorden. Samengevat in:

  1. vrijheid is goed. 
  2. automatiseer saaie, herhalende problemen en deel je oplossing
  3. wees bereid hard te werken, discipline op te bouwen 
  4. los problemen op en haal er een kick uit
  5. wees genereus
  6. haal plezier uit het benutten van je intelligentie
  7. verveling is evil - hackers zien overal een uitdaging in, je vervelen geeft aan dat je niet goed bezig bent
  8. houding is geen alternatief voor hard werken - vakmanschap is waar het om draait, zo voeg je waarde toe

Ik denk dat ik vooralsnog punt 4, 5 en 6 redelijk doe en aan de rest hard moet werken. Vooral hard werken vermijd ik regelmatig door te verdwalen in YouTube en games. Ontspanning hoort bij het leven, maar heeft bij mij teveel de overhand. Teveel ontspanning zorgt voor te weinig vakmanschap en te weinig stappen. 

Een van de grootste problemen voor mij om op te lossen is dan ook: hoe waarborg ik discipline. Hoe bouw ik de gewoonte op om in mijn vakgebied te shinen. Ik ga hier meerdere dingen voor uitproberen denk ik, maar eerst maar eens de basis van deze gids uitlezen :).

Skillset

Houding is geen alternatief voor competentie. Ik herhaal het voor mezelf. Het blijft de meest lastige uitdaging. Hard werken is moeilijk. En juist daarmee kunnen we onszelf onderscheiden. Gericht hard werken, is natuurlijk nog veel beter.

1. Leer programmeren

Geen verrassing, maar wel met handige vertrekpunten. Python heeft de grootste voorkeur van de auteur. Een mooie taal om als eerste op te pakken. Bronnen:

  1. Tutorial #1 via de Python-website
  2. Tutorial #2 via de Python-website
  3. Tutorial #3 via Computer Science Circles

Leren programmeren is gewoon hard werken. Niets meer en niets minder. Veel lezen, en vooral veel schrijven. Zonder frameworks, gewoon low-level aan de bak. Begrijpen hoe bepaalde problemen dienen te worden opgelost en waarom. Mijn eigen achtergrond-kennis met PHP en Javascript zal wellicht wat gaan helpen, maar mijn kunde kan nog vele malen beter dus ik ben benieuwd naar Python als taal. 

Als grondslag voor je ontwikkeling als programmeur wordt aangeraden vijf 'fundamentals' aan te leren qua talen:

  1. Python
  2. C/C++
  3. Java
  4. Perl
  5. LISP

Deze programmeertalen hebben het landschap gevormd en bieden diverse invalshoeken qua programmeren die van onschatbare waarde zijn voor het vormen van een compleet inzicht. Je moet leren problemen op te lossen, en door iets van allerlei kanten te kunnen bekijken, gaat dit beter. 

De beste hackers zijn autodidact. Je kan slechts een beetje leren uit boeken. Lees vooral andermans code en schrijf code. Dat is het mantra. Er wordt nog een tip gegeven richting een van de beste hackers binnen Google, Peter Norvig, 'Teach Yourself Programming in Ten Years'. 

Daarnaast biedt de auteur ook nog een eigen kijk op het leren van hacken, via 'How to Learn Hacking'.

Openbare code is tegenwoordig eenvoudig te vinden, dus dat is geen barrière meer voor je educatie :). Denk hierbij bijvoorbeeld aan https://github.com.

2. Zorg voor een Unix-installatie, leer & gebruik het 

Unix is het besturingssysteem van het internet. Om het internet echt te kunnen begrijpen, moet je Unix begrijpen. Pak een Linux-installatie en start met klooien. C, LISP, Python & Perl staan er standaard al op. Wees niet bang, probeer het uit. 

[Note to self: voeg dit toe aan de to-do lijst, bouw je vorige laptop om tot Linux-PC :)]

Bronnen:

  1. The Loginataka
  2. The Art of Unix Programming
  3. How I Learned Linux (geschreven door iemand die op een blog alle lessen heeft bijgehouden)
  4. Linux.org
  5. Ubuntu - de aangeraden Linux-distributie voor beginners
  6. Basics of Unix and the Internet

3. Leer het World Wide Web gebruiken en ga met HTML aan de slag

HTML is de basis van het normale internet. Als je nog geen andere programmeertalen kent dan is dit een mooi vertrekpunt. Leer niet alleen, maar klooi gelijk wat aan. Bouw een eigen homepage. Voeg waar mogelijk waarde toe en publiceer het. Deel jouw invalshoek.

4. Leer Engels

Engels is de voertaal binnen de hacker-community. Voor je commentaar binnen code, voor het voeren van discussies op de fora. Leer goed Engels te schrijven in ieder geval. 

Er lijkt een correlatie te zijn tussen zorgvuldig Engels schrijven en zorgvuldig denken, dus wie weet verbetert het een het ander. 

Status

Hacker zijn draait om geven. Een cultuur die gefundeerd is op delen en vrijwillig afstaan. Status wordt dan ook hiervandaan afgeleid. Dit staat haaks op onze normale cultuur, waar fysieke aantrekkelijkheid, geld en macht de boventoon voert. 

Manieren om bij te dragen als hacker:

  1. Schrijf open-source software
  2. Help met testen/debuggen
  3. Publiceer nutttige informatie/documentatie
  4. Draag bij aan de infrastructuur als vrijwilliger 
  5. Dien de hacker-cultuur en probeer het verder te ontwikkelen

Samenvatting 

Pfoe, dat is aardig wat! Genoeg te doen en te leren, dat is duidelijk. De eerste stappen die ik ga ondernemen na vandaag zijn:

  1. Een werkende Linux-versie opzetten. Ik kies waarschijnlijk voor Ubuntu, hier heb ik in het verleden ook wel eens wat mee aangeklooid. 
  2. 'How to learn hacking' lezen van dezelfde auteur.
  3. Essay lezen van Peter Norvig
  4. Python tutorials volgen en zelf wat kleine applicaties schrijven

De diverse stappen verdienen weer aanvullende artikelen verwacht ik, dus ik documenteer deze nadat ik ze heb voltooid. Ik zal deze tzt linken.

Mocht je vragen hebben of meer willen weten, mail mij gerust via daan@daan.onl.

Laatste datum van update: 30 april 2017