vrijdag, december 23, 2005
Hacker Proof
En die linkt naar deze site: https://www.scanalert.com/RatingVerify?ref=www.mindconnection.com. Vet hoor! de website die ik bezoek is 99,9 % hackersafe!
Grappig initatief maar volgens mij volkomen nutteloos. Ik geloof het namelijk niet.. Hoe kunnen ze dagelijks testen dat een site save is? Hoe weten ze dat ze alles dicht hebben zitten? Welke tests voeren ze uit? Op welke punten testen ze?
Het ziet er vooral uit als een marketingtruck ipv een serieus beveiligingsinitatief. Overigens ga ik er vanuit dat een site hacker safe is. En niet omdat er een logo op staat, maar omdat men anders de tent wel kan opdoeken..
donderdag, december 22, 2005
Mooie plaatjes
"Concept: digitaal foto-lijstje | |
Even doorgedacht op de digitale MP-3 speler gebouwd uit een laptop. De helft van de tijd hangt dat scherm aan de muur niets te doen. En dat is natuurlijk erg jammer. Wat zou er dan mooier zijn als een soort digitaal fotolijstje? Via de ethernet verbinding upload je de foto's. Met de webbased interface kun je de volgorde aangeven en de overgangen opgeven en als een soort Digiporama worden de foto's 1 voor 1 getoond. Je zou natuurlijk ook kunnen kiezen voor een diashow met afstandsbediening, of een vast foto, schilderij. Evt. kun je het nog koppelen aan een webcam en de mensen bij de deur opnemen. The sky is the limit! Ik heb nu al zin om te gaan knutselen! | |
23-05-2003" |
Mooi, strak, simpel en van Philips mooier kan niet! Tja, Eindhoven he!
woensdag, december 14, 2005
De rust van een goede planning
Het is nu 15:20 en ik ben klaar. Ik heb het op mijn sloffen gehaald. En weet je waarom? er lag een goede planning. Een planning die realistisch en goed was. Een planning die rust brengt in plaats van stress en dat is de enige goede planning.
Hoe kwam die planning zo goed?
- Voordat er een requirement geimplementeerd gaat worden wordt een gedegen tijdsinschatting gemaakt.
- Voordat een defect wordt opgelost wordt hij geanalyseerd
- Voordat je code opgeleverd wordt, wordt ie gerevieuwed (2 weten meer dan 1!)
- Voordat ik code mag wijzigen, moet ik eerst de requirements en de usecases wijzigen indien nodig.
- Voordat ik code mag opleveren Unittesten, unittesten, unittesten
- Voordat ik ook maar iets mag: testcase schrijven voor het testplan
En dat heeft tot gevolg dat ik max 50% van mijn tijd programmeer. Maar dan wel in 1 keer
goed zonder dat ik een ander deel van de code omvertrap.
Morgen is de MileStone af. Dan wordt de code bevroren, wordt er een build gemaakt en wordt er getest. Niet zomaar willekeurig, nee de testcases (+/- 500) worden uitgevoerd. Alle testen die falen worden toegewezen aan een programmeur en als daarna die fouten zijn opgelost wordt de volgende Milestone gemaakt. En dan? dan is het programma in Beta en gaat het naar een klant voor validatie testing.
Geen stress, deadline gehaald en een goed product.
Wie kan dat nou zeggen in de software wereld?
maandag, december 12, 2005
Leuk unittesten! totdat NUnit crashed!
"Fatal Execution Engine Error" van de CLR.
En dat is niet grappig. Die foutmelding betekent zoveel als: Hey er is iets misgegaan ergens in de CLR ik kap ermee!
Na veel gevloek en gezoek (ja verkeerde volgorde ;) ) ben ik achter het probleem gekomen. De foutmelding wordt gethrowed als de applicatie af wil sluiten en er nog user threads in blocked state zijn. Java killed die gewoon, .NET gooit een cryptische foutmelding. mmmm
Even een Thread.wait(0); op de juiste plaats en het probleem (lijkt?) opgelost. Mijn NUnit doet het weer :) en wat nog mooier is: door die Thread.wait(0) rond ie ineens ook al mijn testen succesvol af.
Ik ben een blije programmeur weer!
vrijdag, december 09, 2005
Vage Bug in .net Framework
De volgende code:
Double.Parse(Double.MaxValue.ToString());
Geeft een error:
System.OverflowException : Value was either too large or too small for a Double.
Toch wel apart ;)
Hier staat een oplossing. Nee, geen familie ;)
woensdag, december 07, 2005
Philips, Eindhovens trots
Philips heeft Eindhoven gemaakt tot wat het nu is. En hoewel ik eigenlijk nooit in Eindhoven gewoond heb, voelt het toch als mijn stad. Een stad waar ik trots op ben. En ook trots ben ik op Philips, op meneer Frits en wat hij voor Eindhoven betekend heeft.
Mijn opa heeft bij Philips gewerkt, mijn vader heeft bij Philips gewerkt en ik heb bij Philips gewerkt. En van iedereen die in of rond Eindhoven woont heeft wel een vader, opa, oom of tante bij Philips gewerkt. Eindhoven is Philips, Philips is Eindhoven.
De mantra: "als het geen Philips is, kan het nooit iets zijn" zit er nog goed in. En zo is bijna alle apparatuur hier in mijn huis van Eindhovense makelij.
Eindhoven, de mooiste stad van Nederland. Een stad zonder opsmuk of mooi makerij. Een stad die zich laat zien zo als het leven is. Puur, hard en gemoedelijk. Nee voor Eindhovenaren zijn geen middeleeuwse vestigingswerken nodig om zicht iets te voelen. Geen grachten, geen duur doenerij. Doe maar gewoon, dat is voor Eindhoven genoeg.
Guus Meeuwis zong al: "Dan denk ik aan brabant, want daar brand nog licht". En dat licht? dat komt uit Eindhoven, daar stonden de fabrieken de oorsprong van de groei van de mooiste stad. de stad waar in het licht in de lichttoren nooit uit zal gaan.
En juist in die stad weet PSV in een voetbalwedstrijd te winnen en de 2e ronde Champions League te halen. En weer vult mijn hart zich met trots!
En eens te meer weet ik: Eindhoven en Philips dat is iets om trots op te zijn!
maandag, december 05, 2005
Veenendaal
En geloof me dat zou ik dolgraag willen. Echter heb ik niets gezien van Veenendaal.
Ja een stukje N233 een paar rotondes, een paar verkeerslichten, een spoorwegovergang en een industrieterrein. Vanuit het kantoor kijk op een weiland met een paar paarden en op de A12. Ik denk dat je zelf wel voor kunt stellen hoe mooi dat is :)
Daarnaast weet ik helemaal niets van Veenendaal. En ik kan ook niets opzoeken. Het internet is hier goed afgeschermd. Ik mag niet hotmailen, niet gmailen, niet marktplaatsen en niet frooglen.
Ach ja, dan kom ik iig toe aan waar ik voor betaald wordt: werken...
Saai hoor!
dinsdag, november 29, 2005
06:00
6:45 zit ik in de auto en elke dag rijd ik langs mijn oude werk. Waar alle lampen nog uit zijn: luiaards! om 8:00 uur ben ik op mijn werk. Om 12:00 een half uurtje pauze en om 17:30 stap ik weer in de auto om rond 18:30 mijn lieve vriendin weer te begroeten.
Koken, eten, charmed kijken en het is al weer 20:00! Nog 2 uurtjes te gaan voordat ik weer ga slapen.
Had me een paar jaar geleden verteld dat mijn week er zo uit zou zien en ik had je voor gek verklaard ;)
dinsdag, november 22, 2005
Software maken, zo moet het!
Hoe doen ze dat? Heel simpel: ze hebben een lijst opgesteld met requirements, en hebben heel veel use-cases beschreven. Bij een use-case kunnen weer supplemental requirements horen. Elke milestone worden een aantal requirements geimplementeerd met de bijbehorende use-cases. Hiervoor wordt via de "delphi" manier een requirement ingepland: een aantal mensen schatten onafhankelijk een requirement in. Deze worden naast elkaar gelegd en beschreven. Tijdens het programmeren heeft iedereen een takenlijst. Als je een taak af hebt bied je hem ter revieuw aan aan een andere programmeur. Als hij hem geodkeurt komt hij pas in de hoofd release.
Elke nacht wordt de laatste versie uitgebracht en automatisch gebuild en ge-unit test. Lukt het builden en lukken de Unit testen dan wordt dat de nieuwe versie. Mislukt het dan blijft de versie zoals het was. Zo heb je altijd een buildende en unit-geteste versie in je source control. Daarnaast hebben ze issues, die worden toegewezen aan programmeurs voor analyse. Bij de analyse wordt bepaald wat het probleem precies is en wat er moet gebeuren om het op te lossen. Daarna wordt pas besloten of en wanneer het probleem opgelost wordt (in welke milestone).
Per usecase zijn ook testcases gedefinieerd die alle requirements afdekken. Bij elks milestone release wordt de applicatie volgens die testcases getest. Het kan zijn dat je een change request krijgt en dan moet je eerst de requirements en use-cases aanpassen. Ook dat wordt gereviewed en moet goed gekeurd worden.
Het klinkt heel ingewikkeld, maar het werkt erg soepel. Alles is vooraf gespecificeerd. Alles wordt goed getest. En zomaar wijzigen is er niet bij. Alle issues worden bijgehouden en ingepland. Zo is het project managable en enige vorm van stress heb ik nog niet gezien :) en dat terwijl de volgende milestone over 4 weken af moet zijn en het geen simpel applicatie en wijzigingen zijn. Software maken? zo moet het!
(en ja een website is ook software ;) )
Website development
Hoewel UML prima geschikt is voor OO ontwikkeling is er geen model specifiek voor web-development. Terwijl er toch een groot aantal webapplicaties ontwikkeld worden. Een van de grootste krachten van UML zijn de use-cases. Samen met de klant kun je zo op een hoog abstract niveau de functionaliteit van een systeem bepalen. En als je eenmaal die overeenstemming hebt weet je iig dat je het over hetzelfde hebt.
Nu zijn use-cases voor een website niet erg handig, het gaat vaak niet alleen om wat een gebruiker kan, maar ook waar en hoe het eruit ziet. Daarom wordt er vaak een design gemaakt. En wordt het design leidend gemaakt in het ontwikkel proces. Echter is een design vaak toereikend. Uitzonderingssituaties worden vaak niet gevonden of ontworpen. Eigenlijk zou je het moeten combineren met use-cases. En zo blijf je bezig. Er zijn verschillende tools die het mogelijk maken om een website te ontwerpen. Maar die gaan vaak uit van een statische boomstructuur waarop je componenten als tekst, plaatjes, javascript en formulieren kunt zetten. Vaak hebben ze nog een optie om onderlinge links aan te geven. Maar daar houd het al snel op. Veel te gedetailleerd en absouluut niet flexibel of handig voor dynamische sites.
Soms moet je iets simpels maken om het beheersbeer te maken. Als je op een hoog niveau naar een website kijkt is het niets anders dan een aaneenschakeling van pagina's. En elke pagina heeft content en acties die de gebruiker op deze pagina uit kan voeren. Elke actie heeft een reactie op het systeem (anders is het geen actie).
Als je op deze manier met een klant om tafel gaat zitten kun je per pagina bepalen wat er op moet komen en wat welke acties de gebruiker kan doen. Per actie beschrijf je kort wat er gebeurd. Daarna kan dit model dienst doen als bron voor het design, als uitgangspunt bij bepalen van de usecases en calculatie van de kosten.
woensdag, november 16, 2005
Wisten jullie dat?
Maar wisten jullie dat design patterns eigenlijk gebaseerd zijn op de idee-en van een echte architect?
Vast niet ;).
Zijn motto: "Je moet een gebouw laten ontwerpen door de mensen die er in moeten wonen/werken."
Ik kom hier later nog uitgebreid op terug.
'SQL' in je code, wel doen!
Maar kijk eens naar deze code:
public void Linq1()
{
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var lowNums =
from n in numbers
where n < 5
select n;
Console.WriteLine("Numbers < 5:");
foreach (var x in lowNums) {
Console.WriteLine(x);
}
}
ResultNumbers < 5:
4
1
3
2
0
Vaag he, maar wel mooi! Niet meer handmatig door je array lopen, maar gewoon zeggen wat je wilt! In C# statements.. Nu is dit nog een simpel voorbeeld maar hier: http://msdn.microsoft.com/vcsharp/future/linqsamples/ staan er nog 100 meer.
We noemen het: Linq hou het in de gaten!
Blog comments
Blijf je commentaren, suggesties en tips plaatsen!
Mocht je interressante onderwerpen voor een blog hebben, kun je me natuurlijk ook altijd mailen :)
edit: typo, tnx Jeroen ;)
Refactoring in Visual Studio 2005
Nu kun je met find & replace een boel rechttrekken, echter ben je dan nooit zeker dat je alles te pakken hebt en of de code nog goed werkt. Als je dan compiled en je krijgt 150 compile erros zakt de moed je in de schoenen. Nu heeft 1 van de grootste in de OO wereld dit probleem ook onderkend en refactoring bedacht.
En wat doet Microsoft heel slim? Ze bouwen refactoring in in Visual Studio.net 2005. In VS2005 kun je nu met een paar muisklikken bijvoorbeeld: method signatures veranderen; methods extraheren (selecteer een aantal regels code in een method, maak daar automatisch een andere method van en vervang die regels code in de originele method voor de aanroep naar de nieuwe method); variabelen hernoemen en interfaces extraheren.
Al met al een grote stap voorwaarts. Met alle andere verbeteringen van C# 2.0 kan ik alleen maar zeggen: Snel overstappen je bent het waard!
dinsdag, november 15, 2005
Attributes de verborgen kracht van C#
Via NUnit kwam ik erachter dat je ook zelf attributes kunt maken en gebruiken in je code. Zo gebruikt NUnit [TestCase] en [Test] om aan te geven dat een bepaalde class testen bevat. En welke methodes dan deze testen zijn. Maar door een gebrek aan tijd heb ik nooit meer naar gekeken. Tot nu. Bij het doorlezen van de features van C# 2.0 kwam ik deze link tegen:
http://msdn2.microsoft.com/en-us/library/z0w1kczw(en-US,VS.80).aspx
Wat blijkt, eigenlijk is het heel erg simpel. Je kunt je eigen types aanmaken en plaatsen in je code. Daarna kun je via Reflectie de attributen van een class of een method uitlezen. Wat dus erg handig is voor late-binding van code. Zo kun je makkelijk een framework maken en zorgen dat het met toekomstige DLL's kan werken zonder dat je een bepaalde interface afdwingt een erg flexibel en krachtige oplossing is. Nee zo dom zijn ze nog niet bij Microsoft ;)
Overigens vind ik de generics implementatie van C# 2.0 ook erg krachtig. Doordat je af kunt dwingen dat een Object die je gebruikt van een bepaalde base class moet zijn heb je toch de beschikking over de methods van die baseclass. Nu kun je natuurlijk zeggen dat je daar geen generics voor nodig hebt. Inderdaad door een class te maken die de baseclass gebruikt dwing je dat ook af en heb je ook beschikking over de methods van de baseclass. Echter verlies je dan weer het grote voordeel van Generics: het niet meer hoeven casten van objecten naar het juiste type (en daarmee @ runtime moet controleren of de cast valid is) Met generics kan dat allemaal @ Compiletime waarmee je fouten eerder zult zien :)
BruuD goes Vegas!
Goed voorbeeld doet goed volgen: mijn ex-collega BruuD is ook aan het bloggen geslagen: http://bruud.blogspot.com/
Graag horen we al je succesverhalen Ruud!
maandag, november 14, 2005
De frustratie van een workaround..
Het enige wat ik niet voor elkaar kreeg was het omzetten van een Single (zeg maar float) naar een integer. Uiteindelijk na heel veel denken en googlen heb ik maar een workaround geimplementeerd: Ik converteer de single naar een string. Daarna zoek ik de punt en kap alles na de punt eraf. Tot slot converteer de string naar een int. Werkte perfect totdat...
Totdat ik het programma op een andere pc ging testen. Elke keer kreeg ik de foutmelding: '"40,0000033" could not be converted to an integer'. Na ruim een uur zoeken zag ik het. Ipv een punt werd er hier een komma gebruikt als decimaal scheidingsteken. Na de method aangepast te hebben zodat hij of zocht op een punt of op een komma. Werkte alles naar behoren... Hoe een workaround frustrerend kan zijn...
p.s. Ik ben nog steeds op zoek naar een goede manier op van single naar een int te gaan...
vrijdag, november 11, 2005
C#? F#!
F# http://blogs.msdn.com/dsyme/ een nieuwe krachtige taal voor het .NET platform. Wat je ermee kan? Geen idee! Maar daar komen we wel achter!
Op je handen tellen voor gevorderden.
Tot 10 tellen op 2 handen kunnen we ook.
Maar tot 32 op 1 hand en tot 1024 op 2 handen?
Dat is op je handen tellen voor gevorderden... Rara hoe doe je dat?
(hint)
Tijd voor Tijd
Waar ik echter niet bij stil heb gestaan: soms heb je geen job. En toch moet je je tijd nuttig besteden. Na alle nieuwsites, alle strips, online games en forums bezocht te hebben wil je toch iets nuttigs doen. En wat blijkt de wereld van de informatica heeft niet stilgestaan. In de 2 jaar dat ik van school ben is er veel veranderd. Zoals de introductie van UML 2.0 en CMMi. Om nog maar te zwijgen van .NET 2.0 en Java 1.5.
Daarnaast heb ik flink veel tijd om domein kennis op te doen, en nieuwe collega's te leren kennen. Ik moet wel toegeven het vraagt een hoop discipline om bezig te blijven. Maar met een beetje geluk heb ik binnenkort een job en kan ik weer doen waar ik voor aangenomen ben: programmeren.
In de tussentijd kan ik in mijn hoofd rustig de applicaties analyseren die ik nog wil bouwen en denken aan "the movies" die vandaag in de winkel ligt (Kopen!). En natuurlijk mijn blog vullen met posts als deze ;)
maandag, november 07, 2005
Mindmapper
Surfend over het internet kwam ik echter op dit tooltje uit: http://www.mindjet.com/eu/products/index.php MindMapper! Hiermee kun je je gedachten en brainstorm sessies visualiseren! Ik moet zeggen het ziet er interressant uit. Ik ga het zeker proberen!
donderdag, oktober 20, 2005
Let's go to the movies
Binnenkort kom er een briljant spel op de markt. En omdat ik bang ben dat ik niet iedereen er genoeg mee lastig gevallen heb ga ik er toch ook maar even over bloggen.
De naam: “the movies” een echte “the sims” killer. Je begint in de jaren 20 van de vorige eeuw en je speelt de baas over een filmstudio. Daar het schrijven van scripts, het bouwen van sets en het aannemen van mensen maak je films. Met deze films verdien je respect en als het goed is ook geld. Daarmee kun je je studio verder uitbreiden. Tot en met het jaar 2005.
Je kunt de scripts automatisch laten genereren maar je kunt ze ook zelf maken, en het mooiste: inclusief lip-sync en ondertiteling. Daarna kun je ze als avi exporteren en op het web zetten. Zie hier: armed and rabid. Daarnaast hebben ze een leuk tooltje uitgebracht om alvast acteurs te ontwerpen: starmaker. Erg grappig om daar mee aan de gang te gaan.
Ik kan iig niet wachten
donderdag, september 15, 2005
Linkmania
Hier een overzicht van andere links die ik tegenkwam de afgelopen dagen:
- Een vette stoere hoorn voor je mobiele telefoon! Bling Bling!
- http://www.allasp.net/enterkey.aspx --> verhaal over de enter key in .net webapplicaties. Wat vaak een probleem is. Meerdere buttons, meerdere webcontrols welke event wordt gefired wanneer je op enter klikt? allasp.net lost het op!
- The Six Dumbest Ideas in Computer Security (en deze)
- http://www.google.com/ig de google variant van www.start.com. Waarom nemen dit soort bedrijven geen webdesigners in dienst? Yahoo doet het blijkbaar via: http://my.yahoo.com
- Gat in de markt #5: gratis bezoekers statistieken: nedstat helpt hun handel om zeep met popups. mystats.nl is te lelijk, wie vult het gat?
- offline rekeningen overzicht hou je uitgaven bij met dit handige programma en je internet bankieren!
Lego
Heb jij het kind nog in je? Was jij vroeger al de lego-koning van de klas? Dan is dit echt iets voor jou!: www.legofactory.com. Je download het 3D lego bouw programma . Je klikt en sleept een prachtig bouwwerk bij elkaar, met alle mogelijke blokjes die je maar kunt verzinnen, en daarna bestel je het! Je krijgt de steentjes thuis gestuurd en de bouw instructie is te downloaden in PDF formaat. Dat noem ik nog eens een service! En iedereen kan daarna je model downloaden. Wat dacht je bijvoorbeeld van de BigBen?
De mooiste ontwerpen worden als lego doos ontsterfelijk. Doe het niet voor jezelf! doe het voor je kinderen!
zaterdag, september 03, 2005
blogverslaafd
Welkom bij mij 1e blog op blogger.com. Hoewel dit mijn 1e post is hier ben ik ondertussen al redelijk blogverslaafd. Bij mijn huidige werkgever heb ik het record. En de nummer 2 is mijlenver verwijderd. Echter ga ik wisselen van werkgever en ik wil toch blijven bloggen.
Daarom deze nieuwe blog.
Come back anytime!