Sep 03

With the new OAuth requirement on the Twitter API, posting your recipe tip from the KookJij app to your twitter is currently broken. I’m working on a fix, so there should be an update available soon.

Aug 26

Today the Passie voor Horeca app is free today due to the monthly AppEvent free app of the day.

Tagged with:
Aug 18

SvH made a promo video for the “Passie voor Horeca” app I made for them, take a look:

YouTube Preview Image
Tagged with:
Aug 05

KookJij is vandaag gratis in verband met de AppEvent-actie tijdens de maand augustus! Bezoek voor meer informatie over gratis applicaties in de komende dagen!

Om KookJij gratis te krijgen kun je rechts op ‘t App icon klikken..

Tagged with:
Jun 14

This weekend KookJij v 1.3 got accepted in the App store.

Updates in this version:

  • A shake function: ShakeJij, this option will detect a shake gesture from the iPhone and display a bunch of random recipes based on the category selected
  • A twitter post option: At the top of every recipe there’s a new button allowing to post the name+url to the recipe directly to twitter.
  • Better and smoother loading of the images in the UITableViewCell, should be a bit faster and have a nicer look since images now have a fade-in effect.
  • KookJij v1.3

    May 12

    Specifically one that can handle more then 4GB of RAM..

    Don’t get me wrong, I have a nice setup here, with a 24″ iMac, a 2nd 24″ screen, and a Tritton See2 xtreme USB video adapter for a 3rd 21″ screen.. (to the devs of this device: Update your damn drivers to be Snow leopard 10.6.3 compatible and support 1920×1200 resolution for gods sake, I bought this thing because it had OSX support)

    But with 2 Firefox windows open (each having about 12 tabs open), Xcode, the iPhone simulator, Mozilla thunderbird, sometimes Photoshop to review the work my designer’s cooked up for my apps AND Parallels for Paint Shop Pro 6 (hey I’m a programmer, not a designer.., it’s what I learned to work with back in my Windows years ;-) ), 4GB seriously isn’t enough!

    If I leave my iMac running for a few days, I put it in sleep mode inbetween, the memory usage becomes quite high. After a week or so it starts some serious swapping. I just had to reboot because I was swapping 1.8GB to disk, you have any idea how slow your Mac becomes when it does that ? When you look at funny YouTube video’s of cats jumping in boxes, it stutters and hiccups madly. If my poor iMac could moan under the stress, it most certainly would!

    So either I need one of these semi-new 27″ widescreen iMacs that support up to 8GB of RAM, or I need (want?) a spiffy Mac Pro that also handles more then 2 screens properly..

    Apr 22

    For a project I’m currently working on, I needed to show a ‘Load more’ cell when there were >25 results, this is not a basic 1-2-3 on how to fill tablecells with data, so below code is assuming you already have that and it’s left out

    In my code I will fetch a maximum of 25 results (which can be less) and stick this into an array. If the array count is 25, we have to add an extra cell, to do this we increase the count by one:

    - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
            NSLog(@"Setting numberOfRowsInSection to %i",[self.localJsonArray count]);
            if ( [jsonArray count] < 25 ) {
                    return [self.localJsonArray count];
            } else {
                    return [self.localJsonArray count] + 1;

    Next we populate the tablecells, we fill it with data from the index, and we look if we’re still working with data or are at the +1 we defined above:

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
            static NSString *CellIdentifier = @"Cell";
            ImageCell *cell = (ImageCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
            if (indexPath.row != [localJsonArray count] ) { // As long as we haven’t reached the +1 yet in the count, we populate the cell like normal
                    if (cell == nil) {
                            cell = [[[ImageCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
                    NSDictionary *itemAtIndex = (NSDictionary *)[self.localJsonArray objectAtIndex:indexPath.row];
                    [cell setData:itemAtIndex];
            } // Ok, all done for filling the normal cells, next we probaply reach the +1 index, which doesn’t contain anything yet
            if ( [jsonArray count] == 25 ) { // Only call this if the array count is 25
                    if(indexPath.row == [localJsonArray count] ) { // Here we check if we reached the end of the index, so the +1 row
                            if (cell == nil) {
                                    cell = [[[ImageCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
                            // Reset previous content of the cell, I have these defined in a UITableCell subclass, change them where needed
                            cell.cellBackground.image = nil;
                            cell.titleLabel.text = nil;
                            // Here we create the ‘Load more’ cell
                            loadMore =[[UILabel alloc]initWithFrame: CGRectMake(0,0,362,73)];
                            loadMore.textColor = [UIColor blackColor];
                            loadMore.highlightedTextColor = [UIColor darkGrayColor];
                            loadMore.backgroundColor = [UIColor clearColor];
                            loadMore.font=[UIFont fontWithName:@"Verdana" size:20];
                            loadMore.font=[UIFont boldSystemFontOfSize:20];
                            loadMore.text=@"Load More..";
                            [cell addSubview:loadMore];
            return cell;

    And voila, cell #26 is the ‘Load more’ cell, next we start detecting if it’s that cell that’s being selected:

    - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
            if ( [jsonArray count] == 25 ) { //  Only call the function if we have 25 results in the array
                    if (indexPath.row == [localJsonArray count] ) {
                            NSLog(@"Load More requested"); // Add a function here to add more data to your array and reload the content
                    } else {
                           NSLog(@"Normal cell selected"); // Add here your normal didSelectRowAtIndexPath code
            } else {
                           NSLog(@"Normal cell selected with < 25 results"); //  Add here your normal didSelectRowAtIndexPath code

    Note that I’m working with 2 arrays here, jsonArray and localJsonArray, the jsonArray is what I fill with new results, i.e. 1-25 26-50, the localJsonArray is what’s being filled more and more, so on every ‘Load More’ selection, the localJsonArray will grow with +25 if there’s >= 25 items to load.

    Tagged with:
    Apr 05

    Now as it happens to be, I’m from The Netherlands and somehow Steve Jobs (or rather his marketing department) forgot to add our country to the known release dates (gives a certain feeling of Deja-Vu since the same happened with the iPhone).

    While setting up a twitter account yesterday to post blog updates, I stumbled on two companies giving away free iPads. Basically if you tweet a post about it you enter the draw to win one.

    In the left corner we have, who are about to give away their 5th iPad today.

    And in the right corner I just stumbled upon Ambrosia Software giving away 4 free iPads and a software pack on it.

    Fine, now let’s win that iPad so I can start porting my already released KookJij app on it while the rest of the country awaits the official release :-)

    Tagged with:
    Apr 05

    For one of my projects, I needed the makeiPhoneRefMovie executable which is normally only available on OSX. This program will make a .mov index file referencing various movies (.3gp, .m4v) for various available bandwidths and will compile under Linux (Tested on Debian and CentOS 5 64-bit), it’s based on the original source by Apple and some functions (mostly the OSSwapHostToBigInt32 unctions that aren’t known on Linux) merged together.

    Extract and compile with cc -o makeiPhoneRefMovie -g makeiPhoneRefMovie.c


    # ../makeiPhoneRefMovie
    usage: ../makeiPhoneRefMovie foo-low.3gp foo-high.m4v
         creates with a special-purpose iPhone ref movie
         the other files need not exist; they're just embedded as URLs
    Tagged with:
    preload preload preload