Tuesday, January 20. 2009Selling my domains
I've decided to sell my domains. I've all registered these with the intention to create something interesting. So basically these are all or have been business ideas of mine.
My tender auction-ish site idea. Where all kinds of tenders can be made available. You've got a job to do? Sell your contract to the highest (or in this case lowest) bidder. Sort of making the tender process availble for the common folk. - contractveiling.nl - contractveiling.com - gotender.nl Me and my girlfriend had the idea to write a book about cutting back on your impact to the environment. Sort of like a diet. - hetmilieudieet.nl - milieudieet.nl My domains for a job-offer site. GeekRecruit and JobFoo would be geared towards technical jobs. Foo being a popular with computer programmers. - carrierematch.com - geekrecruit.com - jobfoo.com A site for location based data. For instance data used for google maps type applications. - geocontent.nl A site for mashups and web2.0 type activities. Public API's, REST like interfaces, anything mash-able :) - mashed.nl - mashedpotato.nl We, my brother and I, had the idea to create a whiskey review site. We were into whiskey and this seemed like a good way to receive free booze. - nosingandtasting.co.uk - nosingandtasting.com All of these were meant to serve as a Poker home game organizer. We had the idea that it would grow into a social-network site for poker players. You'd be able to group with your friends and be able to easily organize home games. - pokenizer.nl - pokenizer.com - pokernizer.nl - pokernizer.com - cardgameplanner.com I've registered these for an viral site idea we had at Fabrique. But they were never used. Might be nice gay porn site address? Or something like CollegeHumor - nietvoormeisjes.nl - verbodenvoormeisjes.nl So if you're interested in any of these domains. Mail me at martijn [at] madcat.nl and make me an offer. Saturday, September 15. 2007Peopleware considered harmful.
To the uninitiated; Peopleware (the book) is the bible of software development management. Its short, to the point and after more then 20 years later still very relevant. If you're high up the corperate ladder of some software building business and you havent read Peopleware, buy it now. I'll wait here.
HURRY! (Here I'll help you: @ Amazon.com, @ Computercollectief) To sumarize:
"Dude! if this is such a great book then why is it considered harmful?". Well, it has a bit of depressing after effect on the people in the trenches; the actual software developers. Because after reading this book, you're eyes will be opened. You will be able to see the corperate dysfunction in all its evil glory. And worst of all, you can never go back to that blisfull ignorant state. This book will make you angry, I'm sure of it. I've been talking (and getting angry) about this with a good friend of mine for a while now, swapping war stories of how bad the work enviroment has been and what needs to change to get motivation and job satisfaction back. The problem is that sooner or later you will go "fuckem" and end up becomming a passionless corperate drone (or worse; quit). As soon as this happens the company has lost. It cannot be repaired. Every attempt will look like disception. Its a trust issue. If the trust is gone, its not comming back. Its like finding out your (boy|girl)friend has been cheating on you. How can you trust them again? Its just not going to happen. You need to catch it before this happens. Reading peopleware excelerates this process. It will make you go "aargh! fuckem" a lot quicker. Because after reading this book, you will actually know how to do your managers job. You don't of course, but this book will make you think you can. Thats why its considered harmful. Before you say anything; I'm not preaching that you should just tough it out and stick by your employer whatever happens. If you're not happy at work then talk about it as soon as possible. And if that doesn't work or nothing ever changes, leave damnit! Thursday, September 13. 2007Three laws of software development
On one of the last pages of the Dangerous book for boys there is a list of books which every boy should read. Having read none, except of course The Hitchhiker's Guide to the Galaxy, which is considered required reading if you're ever to join the club of nerd.
So my quest this summer was to read up on my classics. I've so far read "Brave new world", "Lord of the flies", "Of mice and men", "Animal farm", "I Robot" and "The Foundation series". I've never been much of a fantasy or sci-fi man but after the first foundation book I was sold. The minute I came home I ordered the lot of them. I finished "Foundation's Edge" today and on my way home something struck me. I was thinking how we software/web/whatever-developers deal with ethics at work. Will you write software for weapons industry? Will you write code to block free speech? Dealing with these questions are all personal. But Asimov can help. I find the three laws of robotics apply to engineering (software in this case) just as well as they do to robots. 1. Software may not injure a human being or, through inaction, allow a human being to come to harm. 2. Software must obey orders given to it by human beings except where such orders would conflict with the First Law. 3. Software must protect its own existence as long as such protection does not conflict with the First or Second Law. The third law sticks out as it does not apply as well to software as it does to "hardware" (robots). But in a way it does work when you consider security. "Software must protect itself against haxoring as long as such haxoring does not conflict with the first or second law". These laws are, of course, very hard to maintain. How can anyone be sure if your code, open source and free software especially, isn't used for evil? But then again as long as code is not self-aware, the keeper of the laws should be us humans. We, as developers, have an obligation to do the right thing when it comes to "instructions" we create. Sunday, January 28. 2007PHP Throwdown is over
"Who'll join me!" I exclaimed when the news of a 24 hour 'lets see what can be done with php'-competition was announced. 3 brave colleges answered the call.
And so began what was to be a long day of code, sleep deprivation and caffeine. We, the 'hot pink crusaders', signed up for the PHP Throwdown competition and desided to create a game. A planetarion-ish game called 'Incursion'. Mark and I actually graduated on a c / c++ / ncurses version of this game and we've since played with the idea of porting it to the web. And this competition, so it seemed, was a great chance to revitalize the concept. The 'new' Incursion took 4 people 24 hours to get to a point that it nearly worked. It never made it beyond the suck phase though. It was a good exercise and we had lots of fun trying. There was just not enough time. I believe I've spent a total of 7 hours trying to get some kind of battle calculation algorithm working. I had to 'invent' this from scratch and it proved to be extremely difficult during the wee hours. I got it working about an hour before the competition ended. A bit too late. Our plan was to get something 'playable' before halftime and then just fix the bugs and tweak it so that it would be enjoyable to play. We never had a chance :). The code we checked in at the end is full of fatal errors for which we just lacked the time to fix. Also, security wise, its quite a mess. We've made sure to filter all data going through Smarty but if register_globals is on, it will be easy to by-pass the 'dispatcher' file and go straight to the controllers which are wide open for all the world to see because none of us had the time to include a .htaccess that would prevent said access. Oh well. Now we have to wait for the judging to commence. The judging of our application is based on the following criteria:
Oh boy. My predictions are.. Code Readability & Docs I say; 3 out of 5 points. We started out fine, trying to create a bit of structure, trying to be verbose. But that quickly faded into a code frenzy trying to get stuff working as fast as possible. So I give us 3 points. Instalation and Configuration 3 points. We actually made an effort to create a database creation script and config file. The only thing needed for installation is a php 5.1 and higher, mysql 4, the cron and a little fiddling in the config. Functionality 5 out of 20 points. Well the app barely works. So what it does, it does badly. I predict not very many points in this category. Performance 4 out of 5 points. It's not fast, but its certainly not slow either. Incursion is made for 'smaller' groups of people. So some performance loss might happen when a lot of users are playing. The battle code for instance, does a lot of work. Error handling & Security 5 out of 15 points. We have basically no error handling and security isn't much better. But if you have register_globals Off and close down all the private directories it should be pretty air-tight. So perhaps 5 points is a bit too low. UI/Appearance 2 out of 5 points. Our UI sucks. Its very very basic. We've changed the way it looks a couple of time and we lacked the design-skill to make it look pretty. Basically we needed a hands on designer dude. But we didn't have anyone. Ever seen coders create a UI. Yeah.. thats how it looks. The tabs are nice though but there is just a sense of unity missing. Accessibility/Standards Compliance 4 out of 5 points. We tried to adhere to the standards as much as possible. We tried making the html output conform with XHTML Transitional and CSS. But having done virtually no compliance/validation checks I can't say how we did. Also, the HTML is a mess. Did I say that already? Code Innovation/Creativity 10 out of 30 points. Did we innovate? I don't know. We have some nice pieces of code, but the whole 'planetarion' concept is not very innovative. The thing where we differ from planetarion is that its made for small fast-pased games. We tried to make it into a 'planetarion for LAN gaming' kind of game where you can join a lobby and the administrator will start the game. The winner will then be determined by having the highest score. Which means having the most kills. What might also be innovative is the way we handle the battles, since we designed this from scratch. Let me show you how its done (I'm quite proud of this, so bear with me):
When they attack the 'attacking' fleet fires first, after which the defending fleet (if they are still standing) fire back. In Incursion this happens once after which the fleets return home. Every unit has a weakness and strength against certain types of units. The attackers targets its 'strength' the its 'not strength, not weakness unit' and after that his 'weakness'. It also incurs a penalty for the amount of shots that hit target based on the type of unit it prefers. The bonuses: Shots that 'hit' based on its strength are 80% +- random(0..10)% amount of total shots. Shots that 'hit' based on its weakness are 30% +- random(0..10)% amount of total shots. Shots that 'hit' everything else are 50% +- random(0..15)% amount of total shots. So basically, you always miss a few shots. 10 Marines fire 10 shots each. They prefer 'light' units so the 'light'-typed units of the opponent are targeted first. In this case the 'Marines' and the 'Commandos'. The amount of shots that hit target are: (80 + 5)% of a 100 shots = 85 Shots hit in total for all marines shooting. The attacking marines target the opponents marines who have a collective 30*5=150 total defense. So 85 shots hit 150 of total defense. This results in a total 65 defense left on the opponents side. 85 damage also means 85/5 losses on the opponents side, resulting in 17 dead and 30-17=13 marines left to see another day. In this case all the 'hitting' shots are absorbed by the total defense of all the opponents marines. However! there is a possibility that the amount of damage being dealt exceeds the total defense the opponent provides. When this happens the 'hitting' shots will be transfered to hit the next group of units. In this case the 'Commandos' and going trough the same process as before. After the marines fire, our commandos get a shot and everything goes through the motions again. There. Thats what I spent the last 24 hours on trying to figure out. Last but not least, quality. Overall quality of the app 3 out of 10 points. I try to spend a lot of my time approving quality in code-bases and of the app in general. But in 24 hour, how much quality control can you have? If there are any sacrifices to save time, you bet it will be quality that pay's the price. Anyhow, this post has become quite long enough. Let me just say that I've had lots of fun competing and hope I'll be around long enough to be able do it again. Just not within a month or two. Tuesday, January 23. 2007Tracer bullet style recruiting
I hate browsing trough job descriptions. Why? Well, let me tell you. First and foremost, they don't tell you what you want to know. What I want to know is "What will it be like working at your toko" and none of the descriptions focus on that.
Questions like the following are mostly left unanswered: Whats the environment like? Is it going to be the 'corporate grind'? Personally I have some sort of fear working for 'large' companies. I've never actually worked at those large corporate monoliths, but I imagine a very impersonal style and lots of unifomity. Frankly that scares the living shit out of me. What will I be working on? Specifics please! Because "You will be implementing Initech's strategy on the web" doesn't tell me squat. What that does tell me is that there is a large chance developers will be treated as coporate drones and being micromanaged till they break. I bet turnover is pretty high eh? Nobody wants to be doing the bidding of whomever without having a little creative input. A feeling of personal accomplishment is very important and your company better have some sort of system in place to maximize this with your staff. What kind of individual are you looking for? Character specifics. Are you looking for evangelists, dreamers, readers, pragmatic folk or loyal followers? Personally I'd be looking for pragmatic readers. Those that get the job done while improving all the time. Job description never reveal this. Either companies don't think it matters or they just want to cast the widest net. I bet those companies get all the "mediocre" people and never the free electrons. If you want to hire smart people, have a smart job description. Meta data matters. How's nice is the location are surrounding area? I've recently been to a job interview where the actual location of there office put me off the job, even before I entered the building. The appearance they have on the web was very nice. Yet the location of their office was really depressing. I don't like working at a company where you get depressed even before you enter the building. If you're going to tell the world that you're a young and dynamic company with a playful spirit, then make sure the surroundings reflect that. How are the working conditions? Will there be a lot of noise? On average; how many people on a team? What 'development methologies' are being used? How great will you're personal input be? How are skunk works handled and thought of? How about training courses? What about conferences? How does the company handle personal development? These things are usually answered in your first face-to-face job-interview, but wouldn't it be nice if you had these answers before you actually send out your resume? Why haven't I focused on the hard requirements? Well, because they don't really matter now do they. The "x years of experience needed" or "Expertly skilled in Java or C#" doesn't tell you squat. It only weeds out the 'starters', but beyond that its just fluff. People send in their resumes anyway. They don't care if they're qualified. Its just spam. I call this tracer-bullet-style job-hunting. Just fire lots of resumes and hope one bites. Next to that recruiters contact people with absolutely no experience just as easily. I've had dozens of emails like this:
I've never done C# or .NET and its certainly not on my resume. Honestly, why the hell would you contact me? What, for heavens sake, were the criteria for selecting me out of the immense list of 'actual' C# / .NET developers? Was it the "experienced web developer" thing? Was that it? Did that make you hot? Not only poor developer folk are using ye old tracer bullet to look for new work but the recruiters are firing that shit right back at them. The problem with this is that there is too much white noise. You can't possibly find the sweet spots, the companies that actually fit your personal taste. Because the information needed to select said companies is missing. If you ask me "why can't I get any good recruits". Then my answer would be "because they can't hear you through all the noise". You might be the greatest company to work for, but if you provide only hard criteria, you'll never find the good people. Companies like Google, SourceGear and FogCreek don't get the best people because they select on hard criteria. They get the best people trough word of mouth and the knowledge that meta data concerning your company matters more then just the amount of years you've put into Java. The next web 2.0 startup I'm hoping to see is a recruiting site which puts meta-data first on both sides of the equation; the people looking for a job and the companies looking for people. And then go from there. Monday, January 8. 2007Using smarty to prevent HTML injection.
You know that strange thing that when you have to explicitly handle output filtering, things will inevitably go wrong? Well I do.
You see, I've been using Smarty as my templating buddy for some time now but once in a while I get bitten in the ass by me not handling output filtering and thus having HTML injection 'holes' in my applications. The problem starts with the fact that I have to 'work' to get filtering included. What I actually want is filtering to be 'on by default', so that I can shut it off when needed. That way the default is 'safe' (there are always other way to get compromised of course) except in those cases that I explicitly turn the filtering off. I want Smarty to do my filtering! "But Smarty already does this!" I hear you say, and I'd have to agree. Except Smarty does this by providing the "escape" modifier. But I don't want to write '|escape:"html"' after every bloody variable I use in my templates. I want Smarty to filter the little buggers by default. I know what you're thinking. "No no no, you've got it all wrong. You should handle filtering at the logic layer and not at the presentation layer". Well.. then you'd be wrong. Since HTML (and Javascript) injection is only present in the presentation layer I want my presentation layer to handle the filtering. I can't really be bothered at the logic layer, since the problem does not exists there. I do, however, need to filter the input at the logic part of my code, but thats another story. So what needed to be done was, reverse the way you handle escaping in Smarty. This means variables need to be escaped by default and can be 'unescaped' using the newly crafted 'unescape' modifier. Ok, so how exacly does one handle this. Well, Smarty has a hand full of usefull API hooks with which you can 'plug' into the compiling process. I chose to use a 'postfilter' to process the template vars and encode them before they end up in the template. You could also use a pre-filter since they both do their stuff after the all the variables are assigned and before the output is actually shown. I chose postfilter because this is the last possible point in the compilation process before the variables are forged into the template and pushed out to whatever device is doing the request. So how does this look, code-wise:
Ok so now that the filters are in place, we need to test the stuff. The php file:
The template file: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Output filter test</title> </head> <body> {$str1} <br/> {$str2} <br/> {$str1|unescape} <ul> {foreach from=$list1 item=item} <li>{$item}</li> {/foreach} </ul> <br/> {$list2.a.b.c} <br/> {$list2.a.b.c|unescape} </body> </html> And voila, the output is nicely escaped and safe by default. Oh the joy of carelessness. I can't really show you a demo since I'm too lazy to set one up, so you need to test this for yourself. Using this has some obvious advantages and some disadvantages. Unicode support, for instance, is an issue. Though htmlspecialchars can handle charset conversion quite nicely, it has to be provided. So you have to know the exact charset you are sending out for this to function like it should. It defaults to ISO-8859-1 so the not-so-internationalized applications can use this whithout worries. Another thing which might be annoying is that all the HTML you use in variables will inadvertally be escaped. One place where we've had this problem is when dealing with language files. In some places we used HTML inside the language strings, these got escaped as well. Whoops! Also performance could be slow when handling large sets of data. So you would need to do some benchmarking before putting stuff like this in production. UPDATE: After reading some discussion on this very problem I've noticed another issue with my implementation. Doing this: {if $var eq 'foo'} // stuff {/if} Is doing a comparison on an encoded value and could possibly go wrong. Then again, this will probably not happen as long as you're not comparing to any 'weird' variables which contain quotes or other unholy characters. WHO DOES THAT ANYWAY. Also my implementation does not function in sync with the current 'escape' functionality using options like html, htmlall, url etc for describing the type of escaping to be used. A possible solution for the use of escaped vars in expressions would be changing the post-filter a bit. Instead of looping through all the template vars we could preg_replace the echo code in the actual compiled template. Personally I think that would be quite a gross hack. Not even thinking about the implications when using other modifiers. I like my first implementation better even though it requires an extra function and even though its not complete. The stuff I read on the smarty forum gives some me hope that Smarty is going to have output escaping functionality of its own. Which is good and saves me the time hacking 'nice-yet-not-quite-right' solutions to these problems. Tuesday, November 21. 2006Pass by Reference in PHP5.
Since the release of PHP5, the object model has changed. While it 'fixes' a lot of 'wrongs' I still get confused as to the how it should be used and what the result should be.
My biggest gripe is that the 'where should references be defined' part is not enforced. By example:
This confuses me. Which of these implementations is preferable over the other? Should I just pick one and 'not worry be happy'? Why isn't one of these enforced. I would say that the second implementation is the 'prefered way', because it doesn't force the reference on you, and leaves the choice of $var being a reference to the person using the function. Even more confusing is the fact that the following also works without a hitch:
I know the manual states:
But its still confusing nonetheless. In my opinion E_STRICT should give me a notice (at least) to inform me of my questionable behaviour. But it doesn't, it just ignores me and goes on its merry way. Wednesday, November 8. 2006Gijzeling bij de NS.
De NS. Die maatschappij die die vrolijke gele bananen gevuld met dat chagerijnige volk het hele land door stuurt. Die maatschappij die het niet zo nodig vond het 'seinen-beheer-computer-systeem' dubbel uit te voeren, waardoor het treinhart van nederland vele uren uitgeschakeld was. Die maatschappij die altijd op tijd is. U kent ze wel. De nederlandse spoorwegen.
Deze maatschappij wist mij vandaag te verblijden met wat spam met de titel 'Kerstshoppen met NS Internationaal'. Aangezien dit mij natuurlijk geen fuck kan schelen, zocht ik met mijn 'opt-out'-getrainde oog naar de miniscule letters waar vermeld stond hoe men zich kan uitschrijven.
"Mooi" dacht ik. Ik stel het inderdaad niet op prijs. Dus wil ik ook zo snel mogelijk mijn email adres verwijderen uit het 'bestand' van de NS. Bij 'klik hier' klikte ik dan ook 'daar'. Een normaal bedrijf zou hier een pagina plaatsen met een tekst in de vorm van: Klik hier om uit te schrijven voor de nieuwsbrief. Maar niet de NS. Nee de NS doet het op haar manier. Evil. De NS laat zich hier van haar duistere kant zien. Het volgende presenteerde zich op mijn scherm: Let vooral op de 'verplichte velden'. Als ik namelijk de vinkjes ontvink en klik op 'Opslaan' vertelt de NS site mij doodleuk 'Dude, screw you!'. De NS wil dus eerst weten hoe ik heet en waar ik woon in ruil voor het uitschrijven en zoals je al kunt raden ben ik dat natuurlijk niet van plan. Want zo kan de NS mij in plaats van spam gewoon een folder sturen. Krijgen ze toch nog wat ze willen. Soort gijzeling van prive gegevens als het ware. Ik vraag me af welke 'genius' dit verzonnen heeft. Vraag me ook af of 'klant vriendelijkheid' op het lijstje van te implementeren features stond. Ik zit dit nu in een soort van deadlock. Ik wil geen spam, ik wil geen folders en ik wil de NS geen gegevens geven die ze in mijn ogen nergens voor nodig hebben. Wat ik wel wil is een keuze. Maar die biedt de NS niet. Het is kiezen tussen 'the lesser of two evils'. Jammer hoor.. heel jammer! UPDATE: Net de NS even gebeld. In de hoop dat een 'mens' mij beter kan helpen dan een applicatie. NS: hallo dit is een systeem en kost 10 ct p/m bla bla keuzes bla bla NS: Ik: Ik wil dat mijn email adres verwijderd wordt uit het systeem. NS: Dat is prima, wat is uw postcode en adres Ik: (wtf?!) Nou dat is het hem juist, dat gaat jullie geen moer aan, ik wil gewoon dat het verwijderd word NS: [geiriteerd] OH! nou dan kan ik niets voor u doen! Ik: (wtf++) Maar dat soort gegevens hebben jullie toch niet nodig, hoe moeilijk kan het zijn, ik wil gewoon het adres verwijderd hebben NS: [geiriteerd] Nou u vind dat het ons geen moer aan gaat, dus .. dag meneer NS: [klik] piep piep piep Ik: WTF! Het moet toch niet veel gekker worden. Volgens mij gaat dit ook tegen de nieuwe Telecommunicatie wet in. Want je moet ten alle tijden kunnen uitschrijven zonder extra informatie. Uit artikel 11.7 van de wet: (bedankt optinoptout.nl)
Hier staat nergens iets in dat ik mijn gegevens aan de NS moet verstrekken om zo van de spam af te komen. Sterker nog ik vraag me ook af of de NS het volgende kan bewijzen, aangezien ze gegevens vragen die ze eigenlijk al moesten weten alvorens mij spam te sturen. Uit dat zelfde artikel:
Want zover ik weet, heb ik hier nooit om gevraagd. Monday, October 30. 2006Recruiters :/
I go through these "i've got something but aint tellin" reactions like I go through spam. Ruthlessly. In my opinion; recruiters are lazy. The main reason I don't react to offers like this, is that its the recruiter's job to contact me with anything interresting, not the other way arround. I'm not spending my energy on her commision, forget it. If you want me to give you any kind attention, then bring this stuff to me like you're supposed to. Explain the jobs to me, tell me which companies you're working for. TELL ME SOMETHING, ANYTHING FFS. No.. they rather have me call them to ask what kind of jobs they've got. So I have to actually spend money on some vague assumption that there 'might' be something interresting. Well, no thanks, I'd rather poke my eyes out with a spoon. I'll just as easy go to the gazillion online job boards, where I can contact the companies directly, doing it my way. The whole 'carrot and stick' routine that a lot of recruiting companies are using is getting old. Very old. Fortunatly I'm not the only one with these sentiments: From Joel:
From Andrei:
Friday, June 23. 2006Grill your applicants!
After I read Terry Chay's post about "PHP Coders", I wondered about what skill you would possibly need to call yourself a "professional" webdeveloper. I, for one, believe that there is a lot more to it then PHP/HTML/CSS/Javascript skill alone. So this is my addition to the "Grill your applicants!" question pool.
Mine are mostly about all the stuff non-php-javascript-html-css. Has she ever worked with high traffic websites? How does one administer those? What can you do to speed up websites on both Win as Linux systems? How does one secure a Linux box? How does one work with a linux box securely? How well does she work the command line? Does she know shellscripting? Perl? Python? bash? Does she know vim or emacs or any ohter texteditor via commandline? How do you prevent data coruption? How do you handle data coruption? How do you set up backup systems? And in what situation is one backup setup preferable to the other? How do you make sure your data is transfered safely? What about webservers? Has she ever administered Apache or IIS?. Has she ever compiled PHP? Could he tell me why Apache2 is not preferable for PHP and why Apache1.3 is? Does she know how to secure a apache server? How do you tune apache? Could she tell me how DNS servers work? Could she tell me how HTTP works? How about database servers? Is she a phpmyadmin kinda girl (red flag!)? or does she use the command line? Has she ever installed and administered MySQL? How does one tune a MySQL server? How about PostgreSQL? What other database server does she have experience with? What are the specific defining features off both database servers? What are the situations for which you choose the one over the other? Why does or doesn't oracle suck for the web? When should you use sqllite, when should you use something else? How do MySQL indexes work? How do you optimize MySQL queries? How does PostgreSQL autovacuum work? Why is it useful? How does MySQL replication work? What does myisamchk do? Also, Coding in general. What are best pratices when coding websites? Has she ever used version control? What kind? Why are those useful? Which editors does she use? Does she know how to write Unit-tests? Does she know how to write maintainable code? Does she know unicode? How do you handle internationalisation? Doing webdevelopment is more then just pure coding skill. I value the whole "webdeveloper enviroment work experience" greatly. I, for one, would very much like to be sure that when the shit hits the fan (and it always hits.. badly too) that she would be able to handle the crisis accordingly. If you haven't had to simultaniously reinstate a mysql backup while making sure you're other database slaves arent crumbling under the extra load and handling multiple phone calls as to "WHY THE FUCKING SITE AINT WORKIN!" while your boss is stomping behind you because "WE'RE LOSING MONEY HERE DAMNIT! FIX IT NOW!".... Then you aint no webdeveloper. Wednesday, June 21. 2006Adreswijzing
Heuh! weer een voorbeeld van "usability gone bad". Dit keer bij http://www.hi.nl.
Zoals sommigen weten ben ik sinds kort verhuisd. Dus, dacht ik, "laat ik mijn hi abbonnement maar is overzetten". Vol goede moed ga ik naar de hi.nl site. "Whoa! paars!" is mijn eerste reactie. "Klantenservice" zie ik staan, daar moet ik vast zijn. Het eerst wat me opvalt is de overweldigende keuze aan opties en geen zoek functie. De zoek functie is wel, maar het is niet in een klap duidelijk waar je moet zijn. Een kant en klare "zoek hier je shit" invulveld zou geen overbodige luxe zijn. "Zoeken naar de zoek functie" geeft een raar gevoel. Aangezien ik geen zin heb die hele lijst door te lezen (ondanks dat mijn antwoord daar, bij nader inzien, gewoon tussen staat) ga ik direct naar het zoeken. Macht der gewoonte denk ik. Ik voer "adreswijziging" in en klik op zoek. "1 Antwoorden gevonden" zegt de site. "Online diensten regelen". Niet bepaald wat ik zoek. Mag ik de mensen van KPN er aan helpen herinneren dat een zoek functie die niet functioneerd een van de grootste usability ergenissen is. Ondanks dat het antwoord uitkomt op de plek die ik eigenlijk nodig heb, klik ik er niet op. Om de simpele reden dat er niet staat wat ik zoek, zelfs al heb ik het gevonden. Daarnaast is het ronduit zielig dat google met "adreswijziging site:www.hi.nl" wel precies vind wat ik wil hebben. Uiteindelijk kom ik op de juiste plek terecht. Er verschijnt een mooie popup met daarin het formulier. Jammer van de popup denk ik gelijk. Goed, met popups kan ik leven, ik moet immers alleen even een adreswijziging doorvoeren. Een paar dingen in het formulier vallen me op: Ten eerste: De postcode velden zijn kut. Ik haat het werkelijk om in een bepaald formaat strings in te voeren. "9999ZZ is graag hoe wij het willen" krijg ik te horen van hi. Oh! Sinds wanneer gaan we bij het maken van een site, waar mensen zelf hun shit kunnen regelen, uit van hoe het_bedrijf het graag wil hebben? Misschien zou je dat eens om moeten draaien en moeten kijken naar hoe de klant het wil. Misschien zou je het zo kunnen maken dat het niet mogelijk is om fouten te maken; select boxes bijv. Of misschien is een "niet zo stricte input parser" een goed idee. Ten tweede: Na het invullen van het formulier krijg ik dit: "De verhuisdatum moet minimaal 5 dagen in de toekomst en op een werkdag (maandag t/m vrijdag) vallen.". WTF!? Dus ik mag niet verhuizen in het weekend? En ik mag niet al verhuisd zijn? Dit is gewoon lachwekkend. Nou valt het allemaal wel mee, het zijn immers kleine puntjes die net even niet lekker werken. Die "kleine puntjes" worden echter snel grote irritaties. Dit is vooral zo met feature creep. Ik ken de geschiedenis van de hi site niet zo goed, maar het voelt aan als een oude site die over de jaren veel aanpassingen heeft gehad. Hi zou er goed aan doen een keer flink de bezem door de klantenservice heen te halen. Maar ja, als je vast zit aan een CMS (althans zo lijkt het) is dat misschien erg lastig. Over Search valt nog wel wat te zeggen: Jakob Nielsen: Mental Models For Search Are Getting Firmer, Search and You May Find, Search: Visible and Simple 37signals: the 37signals E-Commerce Search Report En uiteraard: http://www.google.nl/search?q=Search+usability Tuesday, May 16. 2006Klantvriendelijke Caiway
Je zult het niet geloven maar mijn lokale kabel boer heeft een klantvriendelijke, no nonsense benadering. Althans .. dat zegt de site. Maar zoals iedereen weet is de realiteit vaak anders.
Nou is dit natuurlijk geen wereldschokkend nieuws, aangezien je dit in de maatschappij van vandaag kan verwachten. Veel van de bedrijven waar je zaken mee doet interreseren zich niet in haar klanten. Als ze maar wat aan je verdienen is het best, verder moet je gewoon je muil houden. Het voelt aan als; "Dat wij dingen als support / klantvriendelijk op onze site zetten, betekend natuurlijk niet dat we er ook echt iets aan doen".. "WEET JE WEL HOEVEEL DAT KOST". Het ergste van allemaal is nog wel dat we er gewoon niets aan kunnen of willen doen. Het is tegenwoordig algemeen geaccepteerd dat je behandeld word als 'lastig', terwijl jij, als klant geld komt brengen. Ik moet er bij zeggen dat ik zelf ook schuldig ben aan het "oh.. laat maar gaan" gedrag. Het word weer is tijd voor een goeie punk beweging. Een collectief "dit pikken we gvd niet meer". Want we worden steeds vaker slecht behandeld terwijl we er niets aan doen. Hoe ik hier zo bij kom? Nou, dat zal ik eens haarfijn uitleggen. Ik ben, wat voor velen als een schok zal komen, Caiway gebruiker van het eerste uur. Ik heb zelfs nog met die ranzige coax/seriele crap-ass modems gewerkt. En dat alles(!) met plezier. Moeilijk voor te stellen, ik weet het, maar de afgelopen jaren heb ik een prima aansluiting gehad. Aangezien ik best tevreden was met de prijs / snelheid van Caiway, besloot ik voor mijn nieuwe woning ook een Caiway abbonement te nemen. Een internet junkie als ik moet natuurlijk een beetje bandbreedte hebben, dus ik besloot om maar gelijk het snelste abbonnement in de buurt te nemen. WANT JA! Je moet toch iets. Dus ik naar de caiway site...
Ok... dus ik invullen.. alles ingevuld. Klik "OK".
Oh humm.. Goed, je bent een internet provider. "INTERNET" provider.... Waarom moet ik dan (in godsnaam) een brief in een envelop stoppen, naar de brievenbus lopen en de brief erin stoppen, als jullie net zo goed online, zonder dat ik uit mijn stoel hoef te komen, dat zelfde formuliertje kunnen verwerken? Leg me dat is uit. En kom niet met "ja maar, ja maar" Jullie zijn een INTERNET TOKO, laat is zien dat je er verstand van hebt. We kunnen tegenwoordig ALLES via het internet bestellen. Van dildos tot voer. Alleen een connectie met dit befaamde internet gaat via papier. Sorry hoor, maar aan mensen zoals ik, die dit soort dingen voor hun beroep maken, is dat moeilijk uit te leggen. Maar Goed! dit kan ik nog wel hebben. Zei het zo.. dan zei het zo. Een paar dagen later krijg ik vier(!) brieven thuis. Misschien dachten ze, "allemaal aparte brieven sturen is makkelijk dan 1 pakket". Kan het me moeilijk voorstellen, maar het is hun geld, dus het zal wel. In een van van deze brieven vind ik:
Ok.. prima, dan bellen we even. Koerier: "Hallo, u belt voor een modem" Ik: "Ja inderdaad! Zou je deze toevallig kunnen afleveren op mijn kantoor adres?" Koerier: "Wat is uw postcode?" Ik: "Van mijn kantoor of van de plek waar ik dat ding ga aansluiten?" Koerier: "Wat is uw postcode?" Ik: "Uhh... XXXX BC?" Koerier: "Nee de postcode waar de brief naar toe is gestuurd" Ik: "Oooh! .. XXXX CG!" Koerier: "Ben u martijn Ik: "Ja inderdaad! He maar, zou dat ding ook op mijn kantoor adres kunnen worden geleverd?" Koerier: "In poortugaal?" Ik: "Nee... rotterdam" Koerier: "We leveren niet in rotterdam" Ik: "Oh .. lekker is dat.. maar jullie kunnen hem toch gewoon hier brengen?" Koerier: "We leveren niet in rotterdam" .... Nou je kan begrijpen hoe dit eindigde. Het komt er op neer dat ik de hele dag thuis moet blijven om te wachten op een modem die net zo makkelijk op kantoor (wat overgens vanuit Naaldwijk, dichterbij is) afgeleverd kan worden. Nu moet ik (de klant) vrij nemen, zodat het bedrijf dat mij de goederen leverd, waar ik al voor betaald heb, niet hoeft uit te wijken naar Rotterdam. WEET JE WEL WAT DAT KOST! JE ZOU OOK FF EEN KLEIN BEETJE MOEITE KUNNEN DOEN ZODAT IK, DE KLANT, NIET DOOR HOEPELS MOET SPRINGEN OM TE KRIJGEN WAAR IK (FFS) AL VOOR BETAALD HEB. Er staat toch "klantvriendelijke, no nonsense benadering"?. Zouden jullie me uit kunnen leggen in hoeverre dit betrekking heeft op mij? WANT DIT IS NIET ERG FUCKING KLANTVRIENDELIJK (als je mij vraagt) Ik zat er nog over na te denken om misschien over te stappen naar Digitale telefoon van caiway, maar ik denk dat hier nog maar even mee wacht. Tuesday, April 25. 2006Nosing and Tasting
Thomas and I sure enjoy a good (single malt) whisky now and then. Over time I've built up a nice repository of bottles from which I regularly take my pick. My collection is now about 15 bottles. Which might not be much compared to you "whisky-veterans" but considering the price of whisky in general, I'd say its pretty damn impressive.
Being such a fan of whisky my brother and I had the briliant idea of making a 'nosing and tasting' web site. From which we would review whisky's and report whisky news. As with all good ideas we've run into a few problems. The biggest of them all is, and many bloggers/web publishers would surely acknowledge this, time. I for one haven't got the time to catch up on all the whisky news. My brother seems to have the very same problem *gasp*. This brings us to a dilemma; "Were do we get the time to write stuff for the site?". A basic answer would be: "err .. fuck it, don't have the time? Don't do it". Which is, sadly, true. BUT! Since we're not ready to give up on our whisky-blog. I therefore put out a request to those which are willing and capable to provide some content. The very least you could contribute is to send us an email pointing us in the right direction. In time, when I'm done with moving to my new house and when the world stops spinning so fast, I will try to be more involved and provide more useful content. Next to that I came to develop a great respect for those who are capable of writing something interesting every day of the week. My hat is off to you.
Posted by Martijn Gorree
at
20:13
Monday, March 20. 2006Aangifte met hindernissen.
Vandaag dacht ik "laat ik maar is aangifte doen van mijn verloren portomonee". Zoals een goede nerd ben ik gaan zoeken naar de aangifte mogelijkheden via het internet. En jawel hoor! Politie Rijnmond heeft zowaar een site waar men aangifte kan doen via het web.
Mijn dag kon niet meer stuk, gewoon lekker achter je scherm, even wat formpjes invullen en klaar! "HOE MOEILIJK KAN HET ZIJN" hoorde ik mezelf denken. Stom! stom! stom! Zoals iedereen waarschijnlijk al kan vermoeden is de site, zacht gezegt, een typisch geval van jammer. Ik begon goed; Eerste pagina:
"Nou komt dat even mooi uit" dacht ik. "Ik bespaar zelfs moeite EN tijd". Ik werd helemaal warm van binnen. Tweede pagina:
Lijstje doorgenomen, "verloren portomonee" staat er niet bij. "Vet!" dacht ik, kan ik mooi aangifte doen via de site. Kan ik zometeen fijn mijn bespaarde tijd en moeite ergens anders voor gebruiken. Pagina drie:
We weten het nou wel. "BRENG ME DE FORMULIEREN" ging door mijn gedachten. Ik zit klaar om ze er in te stampen. Kan ik daarna mooi aan de slag met mijn bespaarde tijd en moeite. Pagina vier:
Uh oh. De eerste tekenen van een door "eerste jaars punicken voor beginners en part time web developer" gemaakte site. "Ach, zal zon vaart wel niet lopen" dacht ik. De meeste sites waarbij staat "werkt alleen met IE" werken stiekem toch in Firefox. "HOE ERG KAN HET ZIJN" dacht ik nog. Tegen de "waarschuwing" in ben ik op mijn dooie gemak de formulieren met Firefox in gaan vullen. Klik, tikkerdetik, klik, tikker, klik, bijna klaar, klik klik, tikkerdetik, laatste pagina!. "Klik hier om uw shit te versturen". GHAH! Victorious! Mijn trouwe browser heeft zich er dapper doorheen gewerkt. Nog een enkele klik en ik ben klaar!.... klik... HTTP Error 404. Page not found. Fuck... Daar gaat mijn zuur verdiende tijd en moeite. Uiteindelijk heb ik mijn aangifte kunnen doen. Via IE. Bah ... Ik voelde me vies ... Firefox / Konqueror / Opera / Safari gebruikers opgelet. Justitie mag jullie niet. Stelletje hippies! Met jullie nep-browsers en fop-OS-en. BAH! Sleep je Open-Source/OSX reet maar naar het bureau waar je lekker fomuliertjes mag invullen. GA MAAR SCHRIJVEN! MET EEN PEN! Niet alleen het feit dat justitie eist dat je een Microsoft powered product moet gebruiken is erg. De formulieren die men in moet vullen getuigen niet van enige kwaliteit. Vooral de usability laat erg te wensen over. Er zit te veel javascript-achtige schmuck in. Alsof de site mijn invoer kinderachtig corrigeerd. "NEE 'PORTOMONEE' MAG JE NIET IVULLEN! FOEI! HET IS 'OVERIGE', SNAP JE DAT DAN NIET" Of: "WAT! MEER DAN 60 CHARS VOOR JE BESCHRIJVING! NIKS NIET! WE GAAN NIET SPECIAAL VOOR JOU MEER BYTES RESERVEREN! WIE DENK JE WEL GVD NIET WIE JE BENT!". Daar zit je dan, met tranen in je ogen "Maar oom agent, ik kon er niets aan doen!" De site voelt aan als een stage-opdracht en zo ziet het er ook uit. Ik kan me niet voorstellen dat een commercieel bedrijf dit aflevert. Nou... wacht even, eigenlijk wel. Dit is waarschijnlijk weer zoiets wat voor veel te veel belastings-pegels in elkaar is geprutst. Jammer hoor, erg fucking jammer. Mochten er ambtenaren zijn die dit toevallig lezen en denken "pff!". Laat ik ze dan even herinneren aan "Richtlijnen voor de toegankelijkheid en duurzaamheid van overheidswebsites". Dus geen gezeik van "dat wist ik niet". Je wist het wel. Thursday, October 20. 2005We made a new one. (thank god)
Since I started working at TBlox I always thought that the old website was way too crappy for any professional company. No wait, I can do better. It was so ugly that if any living organism viewed the thing, a small kitten would die. So we, madcat "protectors of kittens worldwide", took on the incredible job of ridding the world of the hidious beast we call "the old site".
Ok. Enough metaphorical bollocks. So we made a site again. Whoopee! I was about damn time too. So for all you interested folk: the new and improved TBlox site. The site still kinda jabs in your face. But at least its a lot more spiffy then the old one. We have yet to do the 'About' page but so far I'm quite pleased with the result. Our goal was to create something 'simple', so that we wouldn't have much trouble with IE. Because we all know that XHTML / CSS and Internet Explorer don't go well together. I'm happy to say; it worked. I could not, however, completely avoid using CSS hacks, so I ended up with a very reasonal amount of two. I tried to be as semantic as posible when it came to constructing the HTML and made it a primary goal to make the basterd validate. That, to my complete suprise, actually worked as well. The only problem that rests is that I use a cookie to set the language (Who doesn't). Now the problem lies not with the actual cookie but with the way I set it. I chose to use javascript. The problem is that when googlebot shows his magic face, that 'he' will not be able to see past the default language(Dutch), because google can't execute javascript. So, thats still a little thorn in the eye and should be fixed some time. Anyway, just an update to show you that I'm not dead.
(Page 1 of 2, totaling 19 entries)
» next page
|
Calendar
QuicksearchCategoriesArchivesSyndicate This Blog |
|||||||||||||||||||||||||||||||||||||||||||||||||