Page 56 meme

written by Jan on December 22nd, 2008 @ 01:52 PM

  • 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?

written by Jan on December 3rd, 2008 @ 02:21 PM

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:

Vooral de laatste tijd de max

Persoonlijke favorieten

Full of myself

written by Jan on October 28th, 2008 @ 10:05 AM

Factr

written by Jan on October 9th, 2008 @ 10:43 PM

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

written by Jan on September 22nd, 2008 @ 10:49 AM

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

written by Jan on August 20th, 2008 @ 06:28 PM

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!

Avatar

Lijkt hij wat op mij?

Zelf je avatar maken kan op faceyourmanga.com

Gentse Feesten - Programma

written by Jan on July 24th, 2008 @ 02:15 PM

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!

written by Jan on July 17th, 2008 @ 11:12 AM

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

written by Jan on May 26th, 2008 @ 10:09 PM

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

written by Jan on April 22nd, 2008 @ 04:19 PM

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

written by Jan on April 17th, 2008 @ 09:59 AM

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 :-)

De Neveneffecten

written by Jan on March 27th, 2008 @ 10:50 PM

ActiveRecord DeepClone Plugin

written by Jan on March 27th, 2008 @ 09:19 PM

Dolly

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..

written by Jan on March 14th, 2008 @ 10:57 AM

..ik wil dat tys me contacteert op een “andere” manier

miauwkes!

ActiveRecord::Base.find :last

written by Jan on March 12th, 2008 @ 11:49 PM

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

Options:

Size