Twoppl

Archive for the ‘Stage’ Category

Changing habits

  • Filed under: Stage
Tuesday
Jun 10,2008

Een oude vos verleert zijn kunstjes niet. Zeker niet als ze zo stug zijn als mij. Echter, mijn ogen zullen ook eens moeten opengaan, alhoewel het soms wat traag gaat.

De week begon met een opdracht omtrent die sitemapgenerator die ik vorige week geschreven heb. Ik heb hem moeten integreren op de admin en heb er een cronjob voor moeten aanmaken. Eens geintegreerd in de admin heb ik er een excellexporter aan gekoppeld.

Als kers op de taart werd er een ajax toggle aan gebouwd. De ajax toggle laat toe om snel te zeggen welke items in de sitemap staan en welke niet.

Ook heb ik een foutje er uitgehaald. De vorige versie appende elke keer de resultaten, maar verwijderde niet de resultaten die niet meer op de site aanwezig waren. Na het schrijven van een korte timestamp comparer werkte alles perfect.

Rond het midden van de week mocht ik mijn stoute schoenen aandoen, mij wapenen met putty en htaccess en op botjacht gaan. We hadden enkele projecten die enorm veel errorpaginas vertoonden ( 6gb traffic alleen al aan errorpages ).

Net zoals elk probleem, is een probleem meestal een cascade van een klein probleem dat zich verergert naargelang de tijd vordert. Ik noem dit shacka’s law.

((unknown problem ^ time ) + ((current problem + (number of problems * problem)) * time)) / (knowledge - panic)

Bleek dus dat er een bot naar fouten was aan het zoeken. Na wat ip’s te hebben gepingd op whois bleek dat het een of ander wonky domein was van een spambot dat op een duitse server stond. Deze hebben we dus maar geblokt. Omdat een probleem echter nooit alleen komt, bleek dat ook de yahoo indexing engine ( slurp! ) ergens zijn eigen staart achterna aan het hollen was en dus bleef loopen. Deze hebben we dan maar disabled via de robots.txt file daar hij nu toch al alles had geindexeerd.

Maar de tijden veranderen, dat is zeker. Dus om op mijn originele punt terug te komen, ik zelf zal moeten verdergroeien en losbreken van mijn oude gewoontes. En dit proces is op vlak van cakephp vorige week begonnen.

Ik moest de uploadr app bouwen, maar ben van 0 begonnen, en deze keer volledig op de cake manier. En eens je veel hebt gevloekt, wat vooruitgang boekt en dan nog genoeg vloekt om zelfs een boek van herman brusselmans te doen blozen, merk je eigenlijk dat je al een hele applicatiebackend hebt geschreven waar je nu anders nog vast zat in het mundane werk van basic css schrijven etc…

Cake fijn noemen vind ik nog te vroeg, maar het begint mij elke dag meer aan te staan. Mss is cake niet het framework voor mij, maar het is zeker een stap in de goede richting.

The last few devcycles

  • Filed under: Stage
Tuesday
Jun 3,2008

Zalig zomerweer. Het schooljaar loopt zo langzaam op zijn einde en daarmee ook mijn stage.

Daarom wordt het uiteraard niet minder interessant. De week begon meteen met een interessante opdracht omtrent een theming engine voor een project.

De bedoeling was om volledig met javascript enkele voorbeeldthemes te tonen, en het theme on the fly aan te passen als een theme geselecteerd werd. Bijkomstig was er ook de custom theme optie die de gebruiker toelaat om de hex waarden in te geven of om per element een color picker tevoorschijn te toveren.

De snelheid en overzichtelijkheid waarmee dit gebeurde doet het me nogmaals eens zeggen: Thank you Jquery.

Uiteraard heb ik weer wat stukjes moeten bijcoden aan enkele projecten en hier en daar add-ons coden.

Toen begon het echte werk. Ik heb een custom made crawler moeten schrijven die een volledige site zou indexeren. Het nut van de crawler is om het proces van sitemaps genereren te vergemakkelijken. De class kan dan als een cronjob draaien en zo alle sitemaps updaten zonder dat dat voor elk project moet gebeuren.

Dat dit niet zo simpel is om te schrijven, wist ik al eerder, maar het niveau van abstractie dat ik heb moeten toepassen voor deze class, heeft me wel doen verbazen. je kan niet rekenen op een vast patroon, daar alles uniek is op zijn eigen manier. Een zeer leerrijke ervaring dus.

Tegen het einde van de week was de crawler klaar en volledig up and running. Ik heb me er dan op toegelegd om een excell exporter te koppelen aan de crawler. Dit laat toe om de resultaten op te slaan in een excell werkblad.

Daarna begon ik aan een gui upgrade van een ander project. In dit project kan de klant onder andere ads plaatsen op de site. deze ads kunnen dan een titel en een omschrijving meekrijgen. Het nadeel was echter dat we een volledig overzichtelijke lijst wouden behouden, maar omdat we ook de images wouden tonen, zaten weer met een probleem.

Dat probleem heb ik weerom opgelost met jquery. Als met nu over een ad hovert, dan verschijnt er met een mooi effectje de afbeelding die bij die ad hoort. Dit is makkelijker voor het doelpubliek, en overzichtelijker daar we onze lijst kunnen behouden.

The ghost in the shell

  • Filed under: Stage
Monday
May 26,2008

Weer een leerrijke week. Bij een webbedrijf houdt niet alleen in dat je webtalen moet beheersen, maar soms komt er de oddjob servermanagement bij.

Nu, ik beheerde al even de server hier, maar blijkbaar leer je dus elke dag wat nieuws bij. Een van de dingen die ik geleerd heb is shell scripten, en veel trucs en tips ivm de linux shell die ik nog niet kende. Toen ik een e-book las over de shell ( die ook een introductie gaf van de meest gebruikte commando’s en gebruiken ), leerde ik onder andere de simpele commando’s zoals pwd ( print working directory ), en grep ( tekst filteren ).

Nu, deze commando’s zijn niet de meest nodige commando’s bij dagelijks serverbeheer, maar vb piping wel. Piping is het meest handige commando dat ik bijgeleerd heb. Piping gebeurt mbhv het | symbool, en laat ons toe commandos te chainen en zo output onderling te redirecten.

Een voorbeeld hiervan kan zijn als we een directory openen en alleen de bestanden willen zien met een .gz extensie. Dan kunnen we gewoon het commando ls -l | grep *.gz uitvoeren en dan krijgen we mooi een lijst voorgeschoteld met alle bestanden met een .gz extensie.

Nu komen we dan ook aan bij het andere dat ik geleerd heb, nl. shell scripten. We weten allemaal dat we php kunnen uitvoeren vanaf de commandline, en als we echt weten wat we doen, dan kunnen we ook php shell scripts creeëren. Dit is an sich wel leuk, maar een deftig bash script werkt in mijn ogen nog altijd sneller met minder code, en dat de code een rare syntax heeft ( voor mij toch sinds ik van php af kom ), nemen we er maar bij.

Ik wil geen holy wars starten, maar het is gekend dat in de linux wereld er nogal een hevige discussie is van nano vs vi[m] vs emacs. ik ben lange tijd nano gebruiker geweest, maar ik heb gemerkt dat nano tekort schiet als men met grote scripts bezig is. Daarom dat ik eindelijk de tijd heb genomen om vi te leren. Vi is een leuk programma moet ik toegeven, eens dat je er mee leert werken toch.

Het shell script dat ik geschreven heb heeft als nut om een volledige dump te maken van een gekozen database, alle acties te loggen, en dan de dump met het log door te mailen naar een opgegeven emailadres. Er is ook een cleanup functie voorzien.

Ik heb hieruit geleerd dat shell scripts eigenlijk nog een krachtige taal zijn an sich omdat ze controlestructuren voorzien. Dat dit van niet zo een hoog niveau is dan andere talen, is te begrijpen, maar het maakt het leven toch weer dat beetje leuker. Het enige waar ik nog op vloek soms is de switch syntax die er als volgt uitziet:

while [ “$1″ != “” ]; do
case $1 in
-du | –dbuser ) shift
dbuser=$1
;;
-dp | –dbpass ) shift
dbpass=$1
;;
-ma | –mailtoaddress ) shift
mailto=$1
;;
-db | –database ) shift
database=$1
;;
-bd | –backupdir ) shift
backupdir=$1
;;
-ca | –cleanupafter ) shift
cleanupafter=true
;;
esac
shift
done

De bovenstaande code gaat een voor een alle parameters af die meegegeven werden aan het commando en bindt die aan de interne variabelen. De while samen met de switch zorgt ervoor dat de commandos niet op een vaste vollegorde moeten worden gezet.

Buiten leren shell scripten, heb ik ook aan enkele projecten meegewerkt, en weer les gegeven aan iemand die een basis site moest kunnen bouwen.

Mundane work and bridges

  • Filed under: Stage
Wednesday
May 21,2008

Stille weken, zo zijn er ook. Vorige week was dus een stille week in de meest gewone zin van het woord. Ik kon ook gewoon zeggen dat vorige week maar gewoontjes was maar dat kan gewoonweg niet voldoen.

Woordspelingen terzijde, vorige week was gevuld met wat meer mundaan coding werk, zoals in een bestaand systeem een secure password recovery sollution inbouwen. Ook heb ik in verscheidene projecten wat addons moeten coden of maintenance work moeten verrichten.

Vanaf woensdag werd het echter spannender. We kregen de opdracht om van begin tot eind een volledige site te bouwen en het moest op het einde van de week af zijn. Sinds Yoeri zelf donderdag en vrijdag op cursus was, was dit een project dat ik samen met Luigi moest uitwerken. Flying solo, maar wel nog met Jan om op terug te vallen in gevallen van nood.

Daar ik dit blog altijd de week na de gebeurtenissen update, laat mij toe te zeggen dat het project successvol afgerond is. Het heeft me enorm veel bijgeleerd over de symbiosis designer/coder. Alhoewel de cases bij c-md ons vooral leren samen te werken, duren de cases meestal te lang zodat men in een beurtrollen patroon vervalt. Wat ik hiermee bedoel is dat eerst een deel gedesigned wordt, dan een deel gecode, en dan weer design. Het project dat ik hier bij Yappa heb afgewerkt verschilt hiermee door het feit dat er tegelijkertijd gedesignet werd en gecode.

Je kan het vergelijken met de Viaduc de Millau brug in Zuid Frankrijk, waar men aan beide kanten begon te bouwen en mekaar tegenkwam in het midden. Dat er niet teveel afwijking mag zijn in het midden, zorgde voor extra spanning, alhoewel de voldoening erna wel veel hoger is.

Dus zelfs als een week traag begint, is er altijd genoeg om bij te leren week na week.

Adhere to the standards

  • Filed under: Stage
Tuesday
May 13,2008

Encodingproblemen teisterden al wat langer de scripts op Yappa. Niet dat het schering en inslag was of een echte zware impact had, maar ze zorgden soms wel voor wat irritatie.

Nu echter niet meer. Weg zijn de dagen van de speciale characters met het & teken, want alles draait nu centraal op utf8, zoals:

  • Databaseconnecties zelf zijn utf8 encoded
  • Alle databases zijn utf8 encoded, inclusief de velden
  • Nieuwe databases vanaf nu aan zijn ook utf8
  • Alle scripts en websites zijn utf8
  • Ook xml documenten ea. zijn utf8
  • Als laatste heb ik ook alle editors ingesteld zodat ze standaard hun files in utf8 encoden

Dit vermindert het aantal problemen voor als een editor al utf8 is maar de andere nog niet en er dan sommige tekens verkeerd geformat worden.

Voor de databases om te schakelen naar utf8 heb ik een script geschreven dat alle databases, hun tabellen en hun velden nakijkt en deze omschakelt naar utf8 ( idem voor de collatie ).

Hierbuiten heb ik ook enkele projecten helpen afwerken, en hetzelfde utf8 systeem toegepast op een externe ( live ) server.

Ook heb ik geholpen met een debuggingsessie van een script dat gewoon voor een zoekactie elke keer een timeout kreeg. Dit was uiteraard een zeer uitgebreide zoekactie, maar als we een zoekactie deden, dan kregen we als we op de server inloggen met putty en top uitvoerden toch al 200% processorusage voor mysql ( nee dit is geen typo het is een dualcore systeem ).

Dat debuggen was moeilijker daar het gedeelte dat we moesten debuggen extern geschreven was en dus niet onze eigen code was. Yoeri heeft echter het probleem opgelost door indexes te implementeren in de verschillende tabellen.

Als laatste heb ik nu voorgesteld om een van de kleine problemen bij yappa op te lossen, nl. documentatie. Ik heb voorgesteld om dit op te lossen met phpdoc, zodat we mooie chm’s kunnen genereren als we willen, wat integratie in de bestaande editors toelaat. Experimenten hiermee zijn voor volgende week gepland en integratie indien het vruchtbare resultaten voortbrengt.

The short week

  • Filed under: Stage
Monday
May 5,2008

Het was maar een kort weekje en eerlijk gezegd vloog het wel voorbij. Ik heb de basis gelegd van de upload applicatie die ik eerder heb uitgedacht ( ik ben van 0 begonnen ). ik vind het vooral handig dat ik nu mijn schema heb dat ik mooi kan opvolgen wat de development tijd versnelt.

De rest van de week heb ik verdergeholpen met het afwerken van enkele projecten, en het testen van deze projecten. Ook heb ik weer enkele maintenance classes geschreven en een paar admin panel components.

Ik heb onder andere een component geschreven die toelaat om de zoekresultaten van een project bij te houden en dan zo statistieken te genereren wat een duidelijke meerwaarde is voor de klant. Voor de rest heb ik ook enkele hotfixes geschreven voor het adminpaneel dat door middel van regex ( regular expressions ) lege tags opzoekt en deze cleant zodat de inputvelden geen raar gedrag vertonen ( weer een meerwaarde voor de eindgebruiker ).

Ik heb ook enkele eindgebruikers een mini opleiding gegeven van hoe ze het cms ( niet het yappa cms maar een drupal cms ) moeten gebruiken. Dit was vooral een aangename ervaring daar ik hier weer heel veel uit heb geleerd qua usability. Vooral de denkmethode van een pc leek viel me meteen op. Je kan gewoon zien hoe een gebruiker denkt die niet gewoon is om met web applicaties te werken. Zeer leerrijk dus.

Monday
Apr 28,2008

Weer een week, weer een verhaal.

Het was een redelijke rustige week. De week bestond voornamelijk uit het gebruikelijke werken aan verscheidene projecten.

Ik heb onder andere voor een project een component moeten schrijven in de admin die toelaat alle orphaned uploads op te zoeken en te deleten. Een andere functie was het legen van de cache.

Dit was zeer interessant daar ik nieuwe handige php commandos leerde ivm het behandelen van files en folders. Noem het de karma manier om het tao der programmatie te benaderen, maar alles leidt tot alles en alles is onlosmakelijk verbonden in de onopgeloste queeste naar meer kennis.

Wat ik hiermee bedoel is dat alles altijd meer dan eens zijn nut bewijst en dit des te meer bij kennis. Het 2de deel van de week bestond dan ook weer uit het analyseren van een probleemstelling. Deze keer moest ik een heel schema uitdenken en tekenen van hoe ik een applicatie zou bouwen binnen het cakephp framework.

Nu zijn jullie waarschijnlijk aan het denken waarom ik eerder over karma praatte. Wel dit omdat de applicatie die ik moest uitdenken, een upload applicatie is en dat ik deze later ook daadwerkelijk ga moeten bouwen.

Het denken zelf ging redelijk vlot en eens ik het rudimentaire schema voor mij had kon ik beginnen met de aanvulling. Het is altijd slecht om eerst alle models volledig uit te werken en dan de controllers volledig etc. Ik vind het persoonlijk beter om eerst rudimentair de models te maken, de controllers en de dan al benodigde views. Dan is het makkelijker om een overzicht te creeëren en kan je zo makkelijker de lijn in alles zien. Vooral wanneer je de dag erna terug komt en alles zit niet meer zo fris in je hoofd.

En dan begint het leukste werk, features bedenken en scrappen wat niet past, want de applicatie moet lean and mean zijn, niet bloated and tame.

We’ve got a situation here

  • Filed under: Stage
Thursday
Apr 24,2008

Ze willen ons platgooien. Nee niet op het internet, maar letterlijk. Ze willen het yappa gebouw met de grond gelijk maken. Onderstaande is een uittreksel van het hbvl

Sint-Truiden heeft als eerste stad haar grenzen laten afbakenen door de provincie. Dat plan ligt ter inzage in het stadhuis. Iedereen die wil, kan nog tot 12 mei bezwaar indienen. Een van de knelpunten zijn tien panden aan de Tiensesteenweg. Privéhuizen, appartementen en handelshuizen zoals Lucas Creativ, Publi Royal, Zonnestudio Sun Equipe en Aldi liggen in de Molenbeekvallei.

“Die mensen moeten bezwaar indienen”, zegt sp.a-voorzitter Filip Moers. “Want hun huis of winkelpand zit in groene zone, daar mag je dus niet bouwen.”

Voor die panden is ook geen onteigeningsplan voorzien. Met andere woorden, eigenaars krijgen 20 jaar de tijd om op te krassen, zonder vooruitzicht op compensaties. “Ik begrijp dat die mensen een probleem hebben”, zegt Sylvain Sleypen, gedeputeerde voor Ruimtelijke Ordening (sp.a).
“Met hun bezwaren wil ik dan ook rekening houden. Ze kunnen vragen of hun huis zonevreemd wordt, de regels daarvoor zijn tegenwoordig erg soepel. Volgende week gaan we trouwens in Sint-Truiden een krantje verspreiden met meer uitleg over de afbakening.”

~Het Belang van Limburg

Dit is niet goed. Alle implicaties voor Yappa terzijde vind ik dit weer een straf staaltje politiek. Ik vraag mij af wie hier weer baat bij heeft dat deze gebouwen worden afgebroken. We zullen moeten afwachten wat er gaat gebeuren, maar zoals het nu staat worden deze gebouwen binnen 20 jaar platgegooid, en mogen er geen verbouwings of renovatieworken worden uitgevoerd.

One more time, do the yap

  • Filed under: Stage
Monday
Apr 21,2008

Weer een week vol interresante projecten.

Ik draai nu al enkele weken mee in de yappamachine, en ik ik leer elke dag wel iets nieuw bij. Zo heb ik vorige week mijn weg geleerd met uniform voor een project dat afgewerkt moest worden. Uniform is een speciale css die geschreven is voor formulieren zodat het web eindelijk eens zou afstappen van table formlayouts.

Uniform werkt wel zeer handig eens ik vertrouwd geraakte met alle css classes ( dat en veel kijken naar eerder gemaakte uniforms ).

Ook heeft Yoeri mij meegenomen naar een klant, om zo wat praktijkervaring op te doen omtrent het omgaan met klanten. Door recente gebeurtenissen in het c-md stagebeuren, voel ik mij genoodzaakt de namen van projecten niet te noemen, echter mijn stagecoordinatoren kunnen mij ten alle tijden om meer informatie verzoeken. Bij de klant moest ik vooral luisteren en notities maken. De bedoeling was om eerst een feel te krijgen van wat de klant wil, voor ik een conclusie trek. Het project bestaat uit een interne applicatie die ervoor zorgt ervoor dat de externe filialen bestellingen kunnen maken bij het hoofdfiliaal om hun winkels te vullen.

Het huidige systeem maakt nog gebruik van pen en papier en slorpt gewoon teveel tijd op. De bedoeling van de applicatie is dat alles geautomatiseerd verloopt en dat het hoofdfiliaal een overzicht behoudt. Hierdoor komt veel kostbare tijd vrij die voor andere doeleinden kan genuttigd worden.

Eens terug van de klant, had ik nog wat werk voor het eerdergenoemde project dat afgewerkt moest worden.

De laatste dag van de week had ik de hele namiddag om wat research en denkwerk te verrichten omtrent het project. Het doel was dat ik niet dacht aan de code, maar puur aan het project. Ik heb een non technische overview van het project moeten maken voor de bedrijfsleider, dewelke geinclude werd bij de offerte. Ook heb ik een basis structuur uitgedacht van de applicatie ( niet qua code, maar qua implementatie in het bedrijf ), de databasestructuur, en ook wat schetsen en ideeën gemaakt qua ui design.

Het meeste schrijfwerk ( met de hand, en niet het toetsenbord ), werd gespendeerd aan het uitdenken van de structuur, maar het meeste creatieve werk werd verricht op vlak van ui design. Zo heb ik gedacht over de mensen van de distrubutie, dewelke gewoon orderforms moeten hebben en algemeen ook pc leken zijn. Ik heb wat de balans moeten vinden tussen mijn hardware, mijn software, en mijn ( ja ik heb er een ) designerkant. Het eerste wat ik deed was meteen de programeerzijde afsluiten, omdat dat pas voor later was. Ik begon dus wat te schetsen, en na het idee voor oversized knoppen op een touchscreen, ging mijn idee uit naar radial menu’s. Radial menu’s leken mij de ideale keuze, daar ze intuitief werken. Echter toen ik wat menuitem’s aan het bedenken was voor in het menu, viel het me op dat ik eigenlijk een zeer leeg menu zou heben.

Deze conclusie rijker, dacht ik wat verder na. Noem me minimalistisch, maar had de distributie eigenlijk wel een pc nodig. Het zou perfect passen binnen de lijnen van het project om de pc te schrappen, en te vervangen door een alternatief. Dus het nieuwe idee is om een wireless printserver te installeren waar een goedkope usb printer op gehangen zal worden, dewelke de leverformulieren afdrukt wanneer nodig.

Op deze manier stroomlijn ik niet alleen de hele operatie, ook spaar ik hierdoor uit op extra kosten, elimineer ik user error op de distributielaag, en blijft het project nog redelijk manageable.

Ik heb vorige week vooral geleerd dat ik mij soms eens moet neerzetten, stoppen en denken. Maar al te vaak vloog ik in projecten en begon van het begin al te programmeren. Deze projecten bracht ik allemaal tot een goed einde, daar niet van, maar ik realiseer nu dat op het begin wat (langer) denken al snel zijn vruchten afwerpt eens je halverwege de devcycle bent.

I love the smell of monday morning

  • Filed under: Stage
Tuesday
Apr 15,2008

It smells like victory.

Er zit een drukke week op, maar eerst leuker nieuws. Ik wens hierbij Yoeri nog eens een gelukkige verjaardag, en nog veel jaren erbij.

Nu vraag je je misschien af van waarom ik over maandagochtend praat, alhoewel het ondertussen al dinsdag is. Wel dit omdat ik gisteren een snipperdag had voor het foodweekend project in orde te krijgen en dus is vandaag mijn maandag van de week.

We hebben ook beslist om toch cake te blijven gebruiken, en onze kennis uit te breiden om zo meer cake te leren zodat we een hoger % van cake gebruiken. In the long run is dit een viabele oplossing.

Persoonlijk, vooral op vlak van programmeren en vastgeroest wezen zijn in mijn eigen methoden van doen en werken, ben ik aan het veranderen. Ik nam vroeger niet snel iets aan als het niet door mij was gemaakt en vond vaak opnieuw het wiel uit om hetzelfde resultaat te bereiken. Daar ik bij Yappa andere code moest gebruiken ( en een hoop bijleren ), heb ik zo een glimmer licht gezien.

Vanaf de eerste dag ben ik in contact gekomen met mvc frameworks, jquery, uniform, en andere ongein die ik daarvoor niet gebruikte of weigerde te gebruiken. Het zal wel een combinatie geweest zijn van wat hubris en, euh, laten we het maar bij hubris houden.

Ik moet wel zeggen, frameworks zijn tof, maar een framework als cake zou ik nooit gebruiken, gewoon om het feit dat het veel te groot is. Wat ik mijzelf wel nog ooit eens zie doen, is zelf eens een miniframework schrijven om kennis op te doen van hoe die dingen werken aan de binnenkant.

Wat ik nog niet heb opgezocht, maar waar ik momenteel veel aan het denken ben over hoe dat zou werken, is een functie binnen een functie aanroepen navenant een parameter die wordt meegegeven. vb als ik aan de functie selectcontroller de parameter users meegeef dat hij de functie users inlaadt. An sich is dat simpel te doen met een switch, maar er moet een manier zijn om het te doen zonder. Je zegt nu dan ook, maar waarom ga je niet kijken? Wel simpelweg om het feit dat als ik niet ga kijken wel degelijk moet nadenken over de code wat ik denk dat het zou moeten zijn.

Ook hebben we vorige week een teambuilding exercise gedaan. Ons middagmaal bestond uit pizza’s. Niet zomaar pizzas uit de aldi waar bij bovenop leven, maar versgemaakte pizza’s. Alles was vers, het deeg en de saus. Het was een plezante ervaring, en vooral een vullende. Hier nog het resultaat