Christian Heilmann

Author Archive

The future is hybrids – how JavaScript can purify pure CSS solutions

Monday, September 4th, 2006

Over the last few months there were more and more requests on mailing lists and articles published how you can achieve functionality with pure CSS that was traditionally achieved with JavaScript. This post will explain why that is an interesting concept, but hopefully make you aware of the benefits of JavaScript enhanced solutions versus pure CSS solutions.

I have to thank a lot of people I asked in the research for this, foremost James Edwards, John Resig and Andrew Dupont. I’ve also given a short presentation – PDF -96KB on the same topic at the Barcamp in London last weekend.

First of all let’s investigate how pure CSS solutions became so popular. (more…)

Barcamp London

Sunday, September 3rd, 2006

Just finished the first day at Barcamp London (it feels very odd to be in the office during the weekend and not working on products). I had very much fun and met some interesting new faces while hearing good presentations of seasoned presenters. My personal contribution so far was a quick talk I knocked together on the tube towards barcamp about JavaScript versus CSS and there will be a follow-up article/blog post on this soon. For now, you can download the PDF of the talk – 96KB but without the dancing and singing it is only half the fun.

I am too knackered now to write more, so stay tuned :-)

[tags]BarCamp, BarCampLondon, BarCampLondon06[/tags]

On vacation now

Friday, August 25th, 2006

I am now on vacation till next Friday to go to Paris. No comments will make it through, but I promise to answer what accumulates.

Shortening strings to a fixed length in JavaScript

Friday, August 25th, 2006

I have this function I’ve used for quite a long time to shorten a string to a fixed amount of characters without breaking in between words:

function constrain(str,n){
var words = str.split(' ');
var resultstr = '';
for(var i = 0; i < words.length; i++ ){
if((resultstr + words[i] + ' ').length>=n){
resultstr += '…';
break;
}
resultstr += words[i] + ' ';
}
return resultstr;
}
ately that it can get really slow with massive strings in Internet Explorer. This is a well-known issue and the solution is to use arrays instead of concatenating strings.

This made me realise how convoluted the above example is and that it is much easier to do the same with an array:

function constrain(str,n){
if(str.length > n){
var s = str.substr(0, n);
var words = s.split(' ');
words[words.length-1] = '';
str = words.join(' ') + '…'
}
return str;
}

You send a string and the amount of characters wanted as parameters and the function returns the string with the right lenght followed by a “...”.

Another way to work around the MSIE issue of slow concatenation is to use thea string builder.

[tags]string concatenation webdevtrick[/tags]

More newsagent fame and a devastating review

Tuesday, August 22nd, 2006

I guess you have to take the good with the bad…

This morning I found out that there is a new issue of NET Magazine with an adequately loud mouthed orange man on the cover that features my opinion piece where I am Captain Obvious to the rescue and talk about the biggest trick in successful web development. I guess my free copy is in the mail…

My elevation of seeing my mugshot that big (No, it is not vanity that made me happy but knowing I can send this to my family and they’ll be proud as punch although they don’t know English or anything about computers) got a big dent though when I checked My book’s page on Amazon.com and found a new devastating review adding to the very positive one that’s been there for ages. I am really not sure how to react to something like that as I hate disappointing people and cannot really understand what that reviewer was on about. It is not as if there wasn’t enough material on the web to check the book before you buy it, and I spent a long time making sure that the web site for the book has all the code neatly sorted and easy for you to try out. You just cannot please anybody I guess, and I hope that not too many people get discouraged from giving the book a try. Writing a JavaScript book for beginners that does cover Ajax was a balancing act, I guess I’ll have to expect more of that.