What's going on? »
FERDY CHRISTANT - SEP 5, 2008 (12:00:45)
Some random updates on what is keeping me busy these days:
- Soon I'll be making a business trip to Sao Paolo, Brazil for a week to visit our team there for the first time. I'm definitely look forward to this!
- Loyal readers may know that we bought a new house back in October. We've been enjoying it tremendously so far, but a few weeks ago we discovered a big issue. There has been a hidden leak in the bathroom which has now been exposed. It's a big, rotting mess really. It means we will have to redo the entire bathroom, a huge expense that we did not see coming. I cannot disclose anything more as we're in a legal case with the former inhabitants.
- In between work and the above things, I'm trying to work on project JungleDragon. It's a lot of work but I'm making steady progress. Below is a first screenshot:
![]()
I know, it's not pretty. I'm working on the back-end and outputting raw, unstyled HTML. My focus is on getting things working now. The above screenshot is what a user sees after they upload an image. Quite a lot happens during this process:
- the uploaded file is validated for size and filetype
- the exif data is read from the image
- An image entry is created in the database. The database only contains image metadata, not the image itself.
- a variety of image formats is dynamically generated, ranging from thumbs to the original image size. This was a tough nut to crack, as you cannot assume the uploaded image format, orientation (landscape or portrait) or ratio.
- image files entries are stored in the database for each image format.
- the user is rewarded with karma credits for the upload, this is also a database action.
In the screenshot, the user sees the result of the upload, along with exif data (if available) and links to the different image formats, as well as other image data, such as the name and chosen license.
Google Chrome evaluation »
FERDY CHRISTANT - SEP 3, 2008 (07:20:02 PM)
When I found out yesterday that Google was releasing its very own web browser called "Chrome", my initial thoughts were the following:
- Oh no! Not yet another browser to deal with. What's the point of another browser. Will this make my life as a web developer even more difficult?
- Yes! Finally somebody with enough power and capital to break the Microsoft dominance in this field. Not that I hate Microsoft, I just hate their peace of shit web browser, which has been holding web developers, standardization and innovation hostage for many years.
Today I've been trying out Chrome, here are some initial thoughts:
- Rendering is fine. My personal sites, as my favourite sites render fine so far. I've found out that the rendering engine is WebKit, which is cool. This means I do not have to deal with a new rendering engine.
- Google claims that the Chrome Javascript engine is way faster than any other browser, so I took it to the test. The Digg.com comments section is notorious for its heavy Javascript and slow loading times, particularly when there are a lot of comments. Indeed, the loading of the page is many times faster, based on visual feedback alone. I see this as a breakthrough. If all browsers would be this fast it would allow us to build more rich web apps that feel like a desktop app.
- The Chrome startup time is amazing! I'm used to Firefox 3 being quite fast, but Chrome on my system loads at least three times faster, it loads simply instantly.
- The Chrome page load time seems faster than anything else, but is pretty much on the same page as Firefox 3 as far as I can tell using visual feedback. It feels slightly faster.
- In terms of features, I think Google's promise of a minimal browser that gets out of the way of the user is accomplished. Although I do not really like the "most visited" panel upon opening a new tab, it feels very much like Firefox, which is good. I also like the idea of having a seperate location bar and browsing history per tab.
- One feature that I'm particularly missing are toolbars. I realize this is still a beta, but this is currently a blocking issue for me to switch. I use the Google Toolbar for my online bookmarks and the Zend toolbar for PHP debugging. I need both in Chrome. Although I'm not a big Firefox extension user, it would be great if Google would make existing Firefox extensions compatible with Chrome.
- Somewhere on a blog today I heard that Google's EULA for Chrome permits them to monitor and record anything you visit and post using Chrome. I haven't chased this down yet, but if it's true, I will never ever use this browser. Keep out of my traffic.
- On yet another blog today I heard that despite Google's claim that each tab has its own proces, and therefore cannot crash the entire browser, somebody already found a way to crash the entire browser...from a tab. Odd!
The JungleDragon wildlife fund »
FERDY CHRISTANT - AUG 28, 2008 (08:37:32 PM)
For those of you unaware of my new project Jungle Dragon, there is now a new, dedicated project page. From there you can read about the project definition, goals, and subscribe to news using RSS.
More importantly, I have established a project fund page:
Even though the project is only in a very early phase of development, this is where I will collect and publish funds to support this project. There is already a respectable amount of 800 USD in it! These funds will be used to support the project's costs, for example:
- To pay for the hosting
- To hire a graphical designer
- To pay for promotion (i.e. ads, posters)
Note that besides ordinary, voluntary Paypal donations, there are other ways in which you can help:
- By paying for a service that I offer to you. For example, by placing your ad on my site, or by me offering you email consultancy in the area of software architecture and development.
- By offering a free or discounted service to me, for example in the area of hosting, promotion, printing, you name it. Or, by offering me free information that the project can use, for example a wildlife taxonomy database.
- By promoting this project via blogging, word-of-mouth, etc.
- Anything else you can come up with.
You can read about all the details on the project fund page. I've done my own share to donate by giving ad revenue from my site to the project fund. Peletonics has donated in return for ad placement, and Jay Sikkeland has donated a very generous amount in return for email consultancy for his project.
Thanks all, and thanks in advance for any of my readers who also consider supporting this project. I cannot express how much I appreciate your help!
The PHP Exif data gotcha »
FERDY CHRISTANT - AUG 22, 2008 (07:56:28 AM)
For project Jungle Dragon, I'm currently working on the image upload form. It's quite a lot of work: validation needs to be robust, images need to be resized dynamically, and some database transactions take place. And there is this other thing: Exif data.
Exif data is image metadata that is embedded in images (JPEG and TIFF), most of the time this is set automatically by your camera, but you can also manually edit it. I needed a way to programatically read this data from an uploaded image. Luckily, this is easy enough using PHP's exif_read_data function:
$exif = exif_read_data($file_data['full_path'], 0, true);
I was obviously pleased to see this function available and started to work with it. The function returns an array of sections, where each section is also an array containing the Exif name/value pairs. Easy enough. Still, after many hours of testing I still could not read anything beyond basic Exif data (file size, width, height, etc), where I was mostly looking for more interesting data, like aperture, ISO, and flash data.
Where did I go wrong? It was Photoshop all along! See, I used Photoshop to shrink my test images that I was using to upload. I used the "Save for Web.." feature of Photoshop to save the image, not realizing that this destroys the Exif data of the image (in order to reduce the size of the image). Using Photoshop's "Save as.." feature preserves the Exif data. Upon a next test, the PHP function returned me dozens of interesting tags.
Much time was wasted, yet a valuable lesson was learned :)
Note: The next challenge to overcome is to find a bullet-proof way of reading Exif values, since it is not a standard at all, camera manufacturers freely introduce propietary tags and values.
What does IBM Lotus mean to me? »
FERDY CHRISTANT - AUG 14, 2008 (08:02:48 PM)
Ed Brill has posted a blog entry where he asks for feedback about what IBM Lotus means to us, so hereby I'll share my opinion on this topic.
So, what does IBM and/or IBM Lotus mean to me? I'll be freely mixing experience and perception here:
- Lotus Notes and Domino have a special place in my heart. They are great products, products that I worked with in the first years of my career. Products that I'm still passionate about, even though I've been slightly out of touch with the platform lately. I'm not bothered at all by the fact that IBM absorbed Lotus, maybe because I'm too young to tell the difference between both periods in time.
- To this day, I still think IBM makes the best laptops in the world, the glorious Thinkpad, even though Lenovo makes them now. I have a very positive association with this hardware and therefore disliked the "move" to Lenovo.
- IBM in general to me is a huge company with huge resources and elite scientists that mainly focus on large enterprises. As someone pointed out in the comments at Ed's site, there is not a single product or service of IBM that I use as a consumer.
- IBM in general to me is cumbersome to deal with. I remember a few years back when I had to visit their Software Catalog. We jokingly called it sixteen-step shopping at the office, not even mentioning the fact that we needed to authenticate twice and had to spend hours finding even the most basic software. Another incident is related to their shopping experience. I once had to purchase 3 Lotus Notes seats for a very small customer. I will not even begin to tell the horror I had to go through just to BUY one of their products. I'm not asking for free support here. I have money and want to spend it on them, why on earth would you make this difficult to me? This only increased the perception that IBM is interested only in big customers. Note that I actually had few interactions with IBM directly, but those were very cumbersome to say the least.This is not to say that they ARE cumbersome.
- Speaking of few interactions, my perception is that IBM is quite out of touch with the development and user community of their products. I've been working at this large enterprise for years now, and pretty much anyone in the application development teams across the world knows me by now, yet I never had any contact with IBM or a representative. Whilst I did not really need that contact anyway, the contrast with this other company, Microsoft, is huge. Since Microsoft is in, without any initiative on my side, they found me in a matter of weeks. Now they spam me to death, invite me to free seminars, send me trial software and tech magazines, involve me in internal decision making sessions, co-fund proof of concepts, and their experts drive across the country regularly just to visit us and share news and knowledge. At all times they know which internal company events take place that matter to them. All for free, without any initiative on our side. I'm not as naive to think that this isn't in the best interest of Microsoft itself. Still, the difference is too big to ignore. Microsoft understands marketing, building communities, getting buy-in and spoiling developers. In my perception, IBM does none of these things outside the boardroom, and that's my story in what once was a 120,000 seats installment. Admittedly, I'm sure I could get some support and resources from IBM if I've searched hard enough.
- Another aspect of IBM Lotus being out of touch is in the products themselves, mainly the Lotus Notes client and Designer client. This has been discussed many times, and I'm seeing great improvements now, so I won't go into this again. I'm sure you know what I mean though.
In summary, I still cherish the products that IBM Lotus produces. I do have some negative perceptions concerning the support for small customers, developers and end-users, but am also seeing great improvements in these areas, thanks to the great work of Ed and others. Although I'm not in the position to give advise to IBM, I'll still give it a try:
- Increase your reach at customers, don't limit yourself to the boardroom. Get to know the stakeholders, key developers, key internal events, etc. Support customers at all levels and increase your buy-in. Oh, and give away free stuff.
- Give the development community the credit they deserve, these are the people defending your products every day. Implement at least their most requested features in a timely manner. Provide a development experience that is not embarassing compared to other platforms, and provide free express versions of development tools.
- Continue (and enlarge) recent initiatives that bring IBM better in touch with the community, and continue to improve the user experience of end-users.
- When you advertise in the consumer space, hire someone who has a clue what a consumer is, what they want, understand and what their problems are.


