Page 56 meme
- Grab the nearest book.
- Open it to page 56.
- Find the fifth sentence.
- Post the text of the sentence in your journal along with these instructions.
- Don’t dig for your favorite book, the cool book, or the intellectual one: pick the CLOSEST.
Second, the actions performed when a button is pressed are expressed at the wrong level; they are not a feature of the button but a feauture of the juxebox that uses the button. – Programming Ruby - The Pragmatic Programmer’s Guide
Wat is de max?
Enkele maanden terug lanceerde ik isdemax.be. Het project heeft een RSS feed en is redelijk populair. Momenteel zijn er 878 dingen de max, en zijn er 13240 stemmen voor dingen die de max zijn.
Nu vroeg ik me af wat de dag van vandaag allemaal de max is, en vooral, wat het meest de max is.
Alltime de max:
- lopen met evy: 1717 votes
- shnitsel: 865 votes
- jan: 735 votes
- defvs blog: 589 votes
- dieter: 566 votes
- plus oneindig: 553 votes
- mr t: 507 votes
- music for life: 502 votes
- clo: 412 votes
- werken bij marlon: 377 votes
Vooral de laatste tijd de max
- group policy management: 37 votes
- elien: 24 votes
- tijsverkoyen: 19 votes
- denemarken: 10 votes
- turkije: 10 votes
- junit4: 10 votes
- tofolo: 6 votes
- wallie: 6 votes
- mijn lief hans: 5 votes
- pletski: 5 votes
Persoonlijke favorieten
- ruige sex: 1 votes
- dev comma uw de max pagina: 1 votes
- typ hier wa ge in de plaats wilt: 1 votes
- een lief dat verse soep komt brengen als je ziek bent: 22 votes
- jezus had heel wat apostelen waarmee hij door vreemde landen reisde om de blijde boodschap te verkondigen aan de mensen die daar misschien helemaal niet om gevraagd hadden dus op den duur zijn ze daar mee gestopt en dat: 25 votes
- tis nie waar ze defv is niet de max bram: 1 votes
Factr
Zoals elk bedrijf schrijft CR Solutions ook facturen uit. Tot voor kort werd dit manueel gedaan (in Word, in ons geval), maar hoe meer facturen we moesten maken, hoe tijdrovender dit werd voor Jens. Zo tijdrovend zelf, dat hij ons vroeg, pleitte, smeekte, eiste om een facturatiepakket te maken op maat van CR Solutions.
Hoezo op maat van CR Solutions? Wij zijn veeleisende mensen, dus:
- wij wilden een makkelijke API hebben om aan te spreken vanaf het Control Panel,
- wij wilden onze eigen template kunnen gebruiken voor de factuur,
- wij wilden een eenvoudige manier om wederkerende facturen aan te maken.
Simpele vereisten, zou je denken, maar je vind zo’n pakket niet zo makkelijk. Dus zijn we er maar zelf aan begonnen!
Uit contact met kennissen en klanten hierover blijkt dat wij niet de enige waren met die nood. Blijkbaar was hier dus een markt voor. Na een hoop aanpassingen aan het basis-systeem van CR Solutions zijn we nu bijna klaar om Factr uit te rollen voor het grote publiek.
Bijna, want we zijn er nog niet helemaal! Momenteel maken enkele bedrijven er reeds gebruik van, maar ieder bedrijf gebruikt zo’n software anders. Daarom zijn we op zoek naar enkele bedrijven die het beu zijn handmatig te factureren en heel graag Factr zouden willen gebruiken. Wij kijken om je klanten-bestand en een paar settings te importeren, en helpen je op weg met het systeem. Jij geeft ons feedback wat er beter kan, en helpt zo Factr groeien.
Zie je dit zitten? Stuur dan snel een mailtje naar ikwilfactr@crsolutions.be met je info, en wij kijken om je een zo goed mogelijke facturatie-ervaring te geven!
iPhone 3G: Gebruik & Beperkingen
Ik heb mijn iPhone 3G ondertussen een kleine 2 maand, en ik ben er over het algemeen heel tevreden van. Geweldige gebruikers-interface, functionaliteit zoals ik ze (meestal) zou willen, it just works.
Maar wat doe ik nu hoofdzakelijk met deze veredelde GSM? Wel, enkele dingen:
- Bellen & SMSen (Wie had dat gedacht!)
- Muziek & Podcasts beluisteren
- Snel door m’n mail gaan, en kort antwoorden waar mogelijk.
- Snel door m’n feeds gaan, en aanduiden welke de moeite zijn om uitgebreid te lezen.
Voor mij is het een toestel voor als ik op de baan ben, dat ik naast mijn laptop gebruik, en hier zit het grootste gebrek van de iPhone.
In de perfecte wereld zou ik op m’n laptop een webblog aan het lezen zijn, of een youtube filmpje aan het bekijken. Op een bepaald moment zou blijken dat ik door moet, ik zou kiezen voor “Ga door op m’n iPhone”, en het geheel van de huidige pagina zou openen in m’n iPhone Safari.
Een ander voorbeeld is dat ik naar de nieuwe Metallica CD ben aan het luisteren op m’n iPhone, ik kom toe op het werk, en kies “Ga door op m’n laptop” en m’n laptop begint de muziek te spelen, zonder kinks of niets.
Dat is voor mij echte mobility. Dat is wat ik wil van m’n apparaten, geen losstaande zaken maar samenhangende apparaten die samenwerken om mijn leven te vereenvoudigen!
Manga Avatar
Ik ben 2 weken naar Schotland geweest (waarover later fotos en meer), en blijkbaar heb ik ondertussen iets hip gemist: de manga avatar. Ik heb dan maar meteen m’n schade ingehaald en er mij een aangemaakt!

Lijkt hij wat op mij?
Zelf je avatar maken kan op faceyourmanga.com
Gentse Feesten - Programma
Na veel prutsen op de Gentse Feesten site om het programma deftig weer te geven per dag, dankzij collega Bram hier per dag het volledige schema:
Donderdag 24 Juli
Vrijdag 25 Juli
Zaterdag 26 Juli
Zondag 27 Juli
Maandag 28 Juli
Hoe gemakkelijk!
Laat mij gerust!
Ik ben heel tevreden met mijn huidige Internet provider, ik heb geen nood aan draadloos Clearwire internet, ik ben niet geïnteresseerd in digitale TV, mijn GSM abonnement wordt geregeld door mijn werk, ik heb geen nood aan stikkers van het rode kruis, ik moet geen stilo van vredeseilanden hebben, Amnesty International heeft me minder nodig dan ze denken, de zeehonden op Antarctica laten me koud (pun intended), en neen, ik moet uw aansteker van 5€ niet hebben, laat mij allemaal gewoon met rust!
Als ik in de auto zit voor de rode lichten, op een terrasje zit te genieten van het goede weer en een pintje, in de Veldstraat aan het winkelen ben, in de Fnac aan het kopen ben, op de Gentse Feesten rondloop, op mijn gemak thuis een filmpje aan het kijken ben, laat mij gewoon met rust!!!
PS: als je lid bent van de Scouts/Chiro/KLJ/… en rondkomt met appelsienen of marsepein ben je altijd welkom!
Reservoir Dogs - Intro
Na een gesprek over films deze middag met Joren nog eens de intro van Reservoir Dogs opgezocht.
Dit is voor mij echt wel DE intro der intro’s.. Geeft me iedere keer zin de volledige film te bekijken..
All things Ruby
I used to have 1 blog where I talked about everything I cared about, which was a mix of personal messages (“I’ve seen a movie” and “I’ve bought Guitar Hero III”) and technical messages (Rails Plugins, Akismet Bugs, …). I also mixed English and Dutch in those articles.
It came to a point where my friends and family (not-techies) started complaining that I did too much technical blogging, whilst the people who read my blog for the technical posts got annoyed by my personal blabbering.
No more! From now on all my technical blogging will move here. All in English, nothing dumbed down. My personal life and everything around it will stay on my original blog. That way I hope to keep my “fanbase” happy.
So if you’re here only for my Ruby/Rails/Tech content, hurry over and subscribe to workswithruby.com!
It’s a hard job to maintain 1 blog with useful posts.. Let’s see what 2 blogs give ;-)
History Meme
Gezien bij atog en toch wel benieuwd naar mijn history meme:
odd:~ jan$ history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head
152 git
41 ssh
37 wget
34 ls
29 cd
23 mtr
20 ping
19 git-svn
14 ruby
10 telnet
Really tells a lot about my working day :-)
ActiveRecord DeepClone Plugin

ActiveRecord::Base already has an implementation of a “shallow” clone. From it’s documentation:
# Returns a clone of the record that hasn't been assigned an id yet and # is treated as a new record. Note that this is a "shallow" clone: # it copies the object's attributes only, not its associations. # The extent of a "deep" clone is application-specific and is therefore # left to the application to implement according to its need.
And this implementation is fine by default. However, in a few application I’ve seen myself writing the same deep-clone code over and over again. When I take a look at all those implementations, my needs are quite the same most of the time, cloning some associations, and excluding (clearing) some attributes.
For this I’ve written the DeepClone plugin, which allows you to do just that, including associations and excluding attributes. A real-life example:
class Invoice < ActiveRecord::base has_many :invoice_items belongs_to :client def to_param iid # InvoiceID, eg IV08002 end end
The application needed a way to copy an invoice, including all it’s invoiceitems, but not the iid, or the clientid. The plugin makes this really easy.
@invoice = Invoice.find_by_iid('IV08001') @new_invoice = @invoice.clone :include => :invoice_items, :except => [:iid, :client_id]
Which does exactly what I need. The plugin repository can be found at http://github.com/DefV/deep_cloning/tree/master
When you’re on Rails Trunk, you can install the plugin with:
script/plugin install git://github.com/DefV/deep_cloning.git
Ik kan niet bloggen want..
..ik wil dat tys me contacteert op een “andere” manier
miauwkes!
ActiveRecord::Base.find :last
At last! The latest Ruby on Rails changeset has something I’ve always missed.. find :last.
This new functionality adds a whole lot logic for me. For example
Find the last inserted client
Client.find(:last)
Find the last edited subject
Subject.find(:last, :order => 'modified_at')
This is a lot more readable then
Subject.find(:first, :order => 'modified_at DESC')
The last code makes me interpret the result of the order, I don’t immediately see what I’m requesting, with the last example I immediatly see I’m taking the last modified subject.
Great stuff! This is the reason I’m on Rails Edge

