De demo van mod4j gaf mij de indruk dat het vooral bedoeld is om de java ontwikkelaar te ontlasten. Je gebruikt hier een DSL en hoeft niet meer zelf de noodzakelijke java boilerplate code te schrijven voor zaken die toch vrij standaard zijn. Een oplossing voor een typisch java probleem.
Wat ik interessant vond was de stelling dat je de kwaliteit van de code waarborgt, doordat je met een DSL minder kan: je kunt alleen binnen de kaders van het specifieke domein mee ontwikkelen. Ontwikkelaars kunnen niet helemaal wild gaan als in een multi purpose programmeertaal.
Daar kan ik me wel in vinden. Waar ik me minder in kan vinden is dat dit een oplossing is voor het gebrek aan goede programmeurs. Gesteld werd dat je nu ook met minder goede programmeurs, waar er blijkbaar veel meer van zijn, aan de slag kunt.
Maar technologie is geen vervanging voor skills of ervaring. Er zijn simpelere oplossingen om kwaliteit te waarborgen. Bijvoorbeeld de code review of de extreme versie hiervan: pair programming.
Hiermee kun je ook een consistente kwaliteit afdwingen, maar wat veel belangrijker is: je gaat het gesprek aan en je leert van elkaar.
Overigens vind ik het goed en minder goed criterium een beetje arbitrair. Door het not-invented-here syndroom heb je al gauw de neiging om iemand anders code minder goed te vinden. Kreeg van de week van een klant te horen dat we haantjes gedrag vertoonden en dat het het project geen goed had gedaan.
Eigenlijk zou je als je de beste programmeur in het team bent moeten vertrekken en zoeken naar een beter team waarin je weer de slechtste bent. Het houd je bescheiden, en je blijft door leren.
De upgrade van Leopard naar Snow Leopard ging niet zonder problemen.
Met Java ging het mis, omdat Snow Leopard alleen Java 6.0 meelevert en ons project Java 5.0 nodig heeft.
Intellij start default in 64 bits mode op, waar de performance aanzienlijk minder van is dan de 32 bits mode.
Mijn UMTS dongle werkte niet meer.
Hier volgen mijn fixes. Opstarten in 32 bits mode:
Om terug te gaan naar java5 vond ik de volgende instructies op oneswarm:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cd/tmp/
curl -o java.1.5.0-leopard.tar.gz http://www.cs.washington.edu/homes/isdal/snow_leopard_workaround/java.1.5.0-leopard.tar.gz
tar-xvzf java.1.5.0-leopard.tar.gz
#Move it to your System java folder (password needed)sudomv 1.5.0 /System/Library/Frameworks/JavaVM.framework/Versions/1.5.0-leopard
#Tell OS X that java 5 actually is java 5cd/System/Library/Frameworks/JavaVM.framework/Versions/sudorm 1.5.0
sudoln-s 1.5.0-leopard 1.5.0
sudorm1.5sudoln-s 1.5.0 1.5#Open Java Preferences
open "/Applications/Utilities/Java Preferences.app"
Voor de UMTS dongle moest ik nieuwe drivers installeren, nadat ik de oude drivers eerst weggehaald had. De instructies daarvoor vond ik bij edziardo:
Dit jaar weer eens langs kingsofcode.nl geweest een developers conferentie gericht op webdevelopers. Ik ben wel geen pure webdeveloper, maar ach. De dag begon wat vroeg en Aral Balkan moest ons wel even wakker maken, door ons mee te laten zingen met het Microsoft bashen. Of dat nodig was, het bashen, weet ik niet. Als mensen zich comfortabel voelen bij het gebruiken van windows, laat ze in hun waarde. Aan de andere kant zijn het webdevelopers die zich elke dag in allerlei bochten moeten wringen om hun website IE 6.0 compatible te maken. Ik kan me enige frustratie wel voorstellen. De rest van de dag was wel vrij Microsoft-loos.
De spreker had verder wel een goede boodschap. Technisch gezien zijn onze producten commodities geworden en waar je je mee kunt differentieren is user experience. Zorg ervoor dat de gebruikers een 'delightful' experience hebben. In de eerste plaats ervoor zorgen dat je gebruikers niet gefrustreerd raken bij gebruik van je applicatie en daarna nog een extra stap doen. Die extra stap kan heel subtiel zijn, zoals een logo dat een game of life patroon is en een webpagina met parallax effect bij resizen.
De stap verder is ook gewoon ontdekken wat we kunnen met de hedendaagse technologie en dan een stap verder nemen. De anologie met de film. Eerst was het gewoon een registratie van real life, wat voor de beginperiode van de film indrukwekkend genoeg was om mensen naar de theater te trekken. Maar daarna werd het kunst. Wat foto's gemaakt met Apple photobooth werden getoond. Blijkt dat je daar wel wat mooie dingen mee kunt maken. De kunstenares was duidelijk geinspireerd. Maar inspiratie alleen is niet genoeg, hard werken is ook belangrijk. De foto's heeft ze kunnen maken door duizenden foto's te maken, waardoor ze de mogelijkheden en beperkingen van haar tool heeft leren kennen.
In het tweede praatje van Francisco Tolmasky kwamen we wat meer down to earth, hoewel ook hier wat wow momenten waren. Het doel van Cappucino en Objective-J is om een desktop like experience te leveren met web applicaties. We hebben het dan over applicaties als googledocs. Wat men heeft gedaan is de Apple Cocoa api te pakken en deze voor het web te implementeren. Hierdoor kun je gewoon XCode interface builder gebruiken. Dit kan tricky zijn. Microsoft heeft ook winforms concepten gebruikt voor webforms, maar je zit altijd met het probleem van leaky abstractions. Na de demo in XCode haalde de spreker dat ook een beetje aan, hoewel hij er niet echt diep op inging. Maar als alternatief is er dus Atlas om interfaces te bouwen.
Jorn van Dijk had het over standaarden in webapplicaties. Iedereen bedenkt nu zelf zijn file upload interface, wat het voor de gebruiker niet makkelijker maakt. Er is een initatief om een zet van guidelines op te stellen naar voorbeeld van de Apple guidelines. Belangrijk is dat het guidelines zijn en geen wetten, waardoor mensen nog steeds hun creativiteit kwijt kunnen.
Praatje over couchdb is een beetje langs me heen gegaan. Nadeel van je macbook bij je hebben met wifi verbinding. Ging er een beetje vanuit dat ik wel alle informatie op internet of via anderen erover kan vinden als ik het nodig heb. Het koppel van Thomas Fuchs en Amy Hoy gaven een presentatie over javascript performance. Javascript is (nog) niet mijn ding, en ook hier kan ik ongetwijfeld de informatie wel elders vinden als ik het nodig heb.
Het praatje van een van Chris Wanstrath van Github lag wel meer in mijn straatje. Grappig is dat hij versiebeheer aan leken uitlegt al een soort wikipedia. Iedereen kan wat aanpassen en je kunt de wijzigingen van mensen bekijken. Versiebeheer vergelijkt hij dus meteen met een collaboration tool.
Daarna wat verteld over de groei van versiebeheer, van rcs, naar cvs, naar subversion en nu git. En daarna wat patronen opgenoemd om te werken met Git:
anarchy: iedere ontwikkelaar heeft zijn eigen versie van de repository
enlightened one: er is een canonical repository, iemand bepaald welke changes gepulled worden
luitenants: changes voor deelgebieden gaan eerst naar de trusted luitenants die bepalen wat erin komt
centrale server: de traditionele manier van werken met centrale server
De tool dwingt je nergens toe, het zijn afspraken die je maakt met anderen. Opvallend vond ik het advies om voor elke issue een apart branch te maken en je repositories op meerdere plekken te verspreiden, niet alleen op github. Overigens is Chris nog te spreken in Amsterdam vandaag.
Geoffrey Grosenbach was er ook voor een praatje over rails. Ik kan me daar geen echte highlights meer van herinneren, vermoeidheid begon toe te slaan. Praatje van een voormaligie CWI onderzoeker, die aan de bron stond van python, was op zich wel interessant als ook het praatje van voormalig digg architect, maar de stoelen in Tuschinsky waren een beetje te comfortabel geworden om nog goed op te letten.
Naast de praatjes was er natuurlijk ook nog het sociaal gebeuren eromheen. Kingsofcode trekt ook buitenlanders naar Amsterdam en er schijnt vanaf zondagavond elke nacht wel door gefeest te zijn. Half slapend zag je mensen binnenkomen en vertellen in welke tenten ze allemaal zijn geweest en waar ze nog mee moeten 'experimenteren' while in Amsterdam. De hele buzz eromheen was natuurlijk te volgen op Twitter.
Een ontwikkelaar op een Mac, dat heb ik nog nooit gezien.
Steeds die verbaasde gezichten en misschien wel tijd om een keer voor eens en voor altijd uit te leggen waarom ik op een Mac werk. Ik ben in elk geval niet de enige.
Wat heb ik aan een Mac als software developer? In de eerste plaats heb ik een waslijst aan programmeertalen en tools waaronder:
C/C++: hierin worden besturingssystemen als Windows, Linux en OS X geschreven
Java: momenteel de meest populaire programmeertaal en de taal die men op school onderwijst
Python: programmeertaal met roots in Amsterdam, wordt heel veel door Google gebruikt
PHP: de huistaal van Yahoo en nog steeds de belangrijkste taal op het web
Perl: een andere veel gebruikte taal op het web
Ruby/Ruby on Rails: is nog upcoming, maar is wat je een disruptive technology zou kunnen noemen in de Java wereld
Objective C: de taal waarin Mac desktop en iPhone applicaties gebouwd worden
CVS en Subversion: versiebeheer tools voor je projecten
Apache httpd: nog steeds de meest gebruikte webserver op het internet
XCode: een ontwikkelomgeving te vergelijken met Visual Studio Professional
Deze worden zonder extra kosten meegeleverd en ondersteund, dus ook met patches en security updates. Geen serieuze database, maar ik kan nog wel Oracle, PostgreSQL of Mysql downloaden en installeren. Dit is vooral mogelijk omdat het OS X besturingssysteem gebaseerd is op een Unix kernel.
Wel leuk al die tools die ik tot mij beschikking hebt, maar voor wie ontwikkel ik dan mijn software? Hoe krijg ik brood op de plank?
In de eerste plaats zijn er de bedrijven met Java server applicaties op zware Unix omgevingen als Solaris, AIX en HP/UX. Denk aan banken, telecom bedrijven, e.d. Maar ook overheidsorganen die tegenwoordig veel met Open Source en dus Linux doen. OS X is Certified Unix en ik hoef als ontwikkelaar geen rekening te houden met verschillen tussen Windows en Unix. Met XWindows kan ik zo met een GUI op de Unix omgevingen inloggen zonder speciale Windows/Unix integratie software. Dit doe ik nu dagelijks op mijn Macbook, Java server software schrijven voor Solaris machines.
Maar de Mac is ook geschikt voor het bouwen van innovatieve web toepassingen, lees: 'the next web 2.0 social network thingy'. Denk aan Digg, Twitter, Wakoopa, Netlog, enz. Linux/BSD is meestal het hosting platform en de mac sluit daar goed op aan. Zelf werk ik aan Ruby on Rails web applicaties voor o.a. webshops en startups. De applicaties hosten we dan op een Linux Debian omgeving.
Ik kan natuurlijk ook gewoon software voor het mac platform zelf schrijven. Dit is een kleinere markt, maar het groeit wel gestaag en een niche markt kan ook winstgevend zijn. Heb er nog geen ervaring mee, maar met XCode schijnt het vrij makkelijk te zijn om een goed uitziende applicatie te bouwen.
And last but not least: de iPhone en de iPod Touch. Dit is een totaal nieuwe markt waar we nog veel innovatie kunnen verwachten. Heb me al aangemeld voor de iPhone Developers Program en ben benieuwd wat allemaal mogelijk is straks.
Maar software ontwikkeling op de mac mag dan hel leuk zijn en niet veel kosten, overstappen heeft wel een prijs:
Je kunt geen .Net applicaties meer ontwikkelen. Als je web applicaties bouwt heb je de reeds genoemde alternatieven, voor Windows desktop applicaties wordt het moeilijker.
The cost of change. Als je vooral Windows gewend bent is zowel de GUI van OS X, als de Unix shell een drempel.
Het is moeilijker bij te blijven. Er zijn geen cursussen, er is geen roadmap, je moet allemaal zelf de communities in de gaten houden.
Moet je investeren in zo een overstap of blijf je bij Windows? Windows blijft voorlopig wel pre-installed op nieuwe pc's en blijft het grootst. Maar laat je geen mooie kansen liggen als je je alleen op windows blijft focussen? Voor mij is in elk geval een heel nieuwe wereld geopend sinds ik ben overgestapt.