all repos — h3rald @ 30e0d83d11af833c3305d4995573bc244c6280f6

The sources of https://h3rald.com

Regenerated content.
h3rald h3rald@h3rald.com
Fri, 14 Aug 2009 13:55:12 +0200
commit

30e0d83d11af833c3305d4995573bc244c6280f6

parent

0e7c2c1e3f010871f2018d2016e9fc21410733cf

119 files changed, 5988 insertions(+), 6026 deletions(-)

jump to
M content/articles/10-reasons-why-i-didnt-update-my-blog.textilecontent/articles/10-reasons-why-i-didnt-update-my-blog.textile

@@ -45,103 +45,103 @@ - writing

type: article toc: true ----- -_"It has been a while since my last post, sorry about that"_ -I read this sentence (or something along those lines) on many blogs on the Internet, including mine. As a matter of fact, I actually didn't write a meaningful post on my blog for a long time and no, probably this is not going to change that either. - -Yesterday I started thinking *why* this happens, not only to me but to a lot of other non-professional bloggers. A professional blogger &emdash; for what I can tell &emdash; is someone like Michael Arrington or Gina Trapani: someone who has the luck (or course) to be able to just blog for a living. - -I don't blog for a living: my site is self-sustaining via a few very unobtrusive ads, just that. I have a full time job, and I blog in my spare time about my interests, without even trying to make "proper" money from my site. There's nothing wrong with it: I believe there are some other people in my condition, and that's quite normal. - -That being said, let's examine the ten most common reasons why I (and you too, maybe) end up not updating my blog, _even when I have time to do so_.h3. Someone already blogged about it - -This is very irritating. I am obsessed with original content. I want to write about something other people _never_ (or hardly ever) wrote about. As a consequence, I often find myself googling the same topic I'm planning my blog post on, and I _obviously_ often get quite a few results, too! - -I actually wanted to title this very post "The Blogger's Block", but I immediately thought of putting that very title into Google, just to see if someone else already blogged about it. Sure they did! Not original at all, tough luck. -It also happened a few weeks ago: I wanted to write about the current state of tech news sites and Antonio Cangiano comes up with a similar "post":http://antoniocangiano.com/2008/05/29/random-thoughts-on-social-sites/. Very interesting indeed, but quite annoying as well! - -OK scrap that, think about something else... - -This can potentially go on for days, and the only solution is of course trying not to worry about it, and just write the damn thing (that's what I did to write this post). - -h3. I didn't research enough on the subject - -This happens tipically with reviews, round-ups, etc. Things I actually enjoy writing, but which may be easily subject to (harsh) criticism unless ou do them right. -I wanted to write a review of the new Treo 750 I bought. I've been using for a while, I learnt a few interesting hacks etc. etc. Unfortunately the 3G iPhone came out, so everyone is all hyped up about it. Too bad that I, being Italian and living in Italy, I never actually touched the damn thing! -What has that got to do with my Treo 750? Well, it would be nice to write a review of a Windows Mobile 6 phone comparing to the upcoming Apple wonder, wouldn't it? - -The solution to this would be trying to limit the scope of your post: screw Apple, let's just focus on my Treo 750 and on the amazing amount of programming languages I can use on it! - -h3. After researching for X days, I realized it was all a waste of time - -This happens with big articles. I once thought about writing a comprehensive article about all the possible ways to deploy a Ruby on Rails web site. Cool, isn't it? I started researching about all the most esoteric lightweight web servers, about JRuby, Glassfish, IronRuby, ... A lot of things. And new solutions kept coming up, and with them more and more posts, and then even entire books on the subjects. - -Very frustrating. I abandoned the whole thing, because there was simply no reason to go on researching: it was all a waste of time. - -How to fix this? Again, reduce the scope of your article so that you are able to reduce the time you spend researching about it. Or maybe try to get paid to write it, so that even if there's plenty of articles about the same subject, at least you have a concrete purpose to write yours. - -Erhm, yes, by the way, keep an eye on "SitePoint":http://www.sitepoint.com in the next few days/weeks, OK? - -h3. I only write when I'm inspired, and now I'm not - -Very, very common. I normally think about a very cool article to write in the evening, or early in the morning, or whenever I don't have access to a computer or the Internet. -Of course I don't forget about it, but by the time I have a chance to actually write it, I really don't fancy doing so. Oh, the irony! -It happened today, actually, during my lunch break: I was supposed to write this post but I didn't feel like it. I lost my inspiration and all my artistic verve, so no, it can't be done. Tough luck, wait until next time. - -How did I solve this? Well, I started writing the post in my coffee break: there was no way to finish it in time, of course, but at least I started it. -I also saved it to my PDA and continued writing it when I had a chance. Eventually, I managed to finish it during my lunch break, the next day. - -Try to write _whenever you are inspired_. If you are not inspired in your lunch break, do some work in your lunch break and then write when, in an hour or so, probably, you feel like writing again. - -h3. This won't make Digg's front page - -Digg, Reddit, DZone, you name it. They are all excellent free tools for promoting your content. Don't tell me you never wrote a post _for the sake of making the front page_ of one of those sites. I did, I confess. -I didn't make Digg's front page in a while, and I'm probably never going to make it again. The reason? When it comes to promoting the right content in a fair way Digg *sucks*. As a consequence, 80% of the articles which appear on Digg *suck*. I'm sure you'll be able to forgive my French when I say that *Digg utterly sucks*. - -No matter how clever your story may be, unless you're backed up by a swarm or an active community willing to Digg your story, you simply aren't going to make it. When is the last time a proper programming article made it to Digg? I don't remember, probably way before I unsubscribed to the Digg's Technology feed, about a year or so ago. - -Just write for the sake of writing. Don't even submit your story to Digg (unless you're writing about the iPhone, of course, then you may have a chance): post it to a less-known site, maybe, or to Reddit, instead. You won't get as much traffic, granted, but you also won't get tons of idiots writing pointless crap on your site and you won't risk a server crash. If it's destiny, then some good soul will post it to Digg, but nobody will digg it. That's just life, I'm afraid. - -h3. It has been too long since my last post: the next one will have to make up for it - -This happens when you start feeling guilty because you didn't post in a long time. - -_"My next post is going to be superb, long, interesting and everyone will start flocking back to my blog!"_ - -Wrong. First of all because statistically people just don't "flock back" because you bestowed them of one interesting post (you have to keep up, too), and second because by doing so your mind will automatically discard all those bits of things you wanted to write about, but you never did because you're waiting for that special _next post_ which will be _so much better_ and will bring your blob back to -spam- life. - -It happened, it happened... again, all you have to do is just post all the tidbits you need, while you're preparing your big shot: your blog will remain "fresh" and more people will enjoy your interesting posts, whenever they'll come. - -h3. Nobody gives a damn, anyway - -I didn't want to upset my younger audience by using a nasty f-word in the title, but that's exactly how it feels like it, sometimes. -I went to Rome last week, did you know? I twittered about it, you *ought* to know! And of course you'll all be waiting for the usual 10-page-long article on my awesome vacation. Like when I "went to London":http://www.h3rald.com/articles/incomplete-guide-to-london, remember? -No, sadly not everyone may be interested in this crap. So I probably won't post about it: who cares? When you start thinking like this, you may stop posting for weeks: not everyone may be interested in everything you post, and I believe that's normal. -Especially for a blog like mine, which is deliberately open to all my interests: programming, technology, travelling, etc. That's why most blogs try to be themed: they write about a particular subject, even a single programming project, and they (try to) do it well. The trade-off is that a themed blog may run out of posts amazingly quickly, if you're not carefula and if you're not 100% devoted to your blog's theme. -A themed blog will build up a faithful audience, like when I was writing almost exclusively about CakePHP: a lot of PHP programmers where flocking here daily. Then things "went wrong":http://www.h3rald.com/blog/42 and I really couldn't be bothered to write about the same crap. Which leads us to the next topic... - -h3. If I write about this, a large chunk of my audience is going to be upset - -This applies especially to themed blogs: if you're a well-known Firefox addict, you can't suddenly start writing about "Opera":http://www.h3rald.com/articles/firefox-lovers-guide-to-opera, praising its speed and the features it offers out-of-the box! -If you take a side, you'd better stick to it, if you want your audience to stick to you: the ten people who happen to read this blog are probably quite shocked by the amount of times I "changed side": from CakePHP and PHP to Rails and Ruby, from Firefox to Opera (well, wait until my next SitePoint article comes out, at least...). Probably they are not the same people who read this blog a year or so ago. - -In the end, it's entirely up to you: if you are prone to radically change our opinion (and this happen in technology, much more than in politics), which involves changing the whole theme of your blog, maybe you should consider not having a themed blog at all. -And if you don't feel 100% sure you want a themed blog, you definitely shouldn't go for a themed domain name, or you may end up abandoning it afterwards. And when that happens, unless you're writing damn cool posts like "Why":http://redhanded.hobix.com/, it's going to hurt your audience. On the other hand, if you're sure you'll get ten times more visitors, go for it. -No, h3rald.com stays... I may end up raving about Safari at some point within the next ten years though, don't be upset! - -h3. I'm not an expert on the subject, so I shouldn't blog about it - -This is a common problem I have when I try to write about something I don't know extensively enough. When I started to learn Ruby, I was eager to start writing about it: it seemed just too cool to be true! -I thought about writing a longish post on learning Ruby from scratch, but then I realized it wouldn't have been a great idea: I was just starting to learn a new language, I didn't know all the nitty-gritty and writing about it to teach others was going to be a bit presumptuous, maybe! -Instead, I opted for a lighted "10 reasons to learn Ruby":http://www.h3rald.com/articles/10-reasons-to-learn-ruby article, clearly stating in the first paragraph that I was just a noob getting excited about his new toy. It worked, actually: people seemed to enjoy it, and I was partially excused for the few mistakes I made here and there. -You don't have to be an expert to blog about something: you just have to be totally honest about what you know, and what you don't know. - -h3. There are a lot of professional bloggers out there, and I'm not one of them - -Finally, this can be summarized in two words: inferiority complex. "Proper" blogs fire out 10+ posts _per day_, and I don't even write ten points in _a month_! Again, those a professional bloggers: they live for blogging (and make an awful lot of money out of it), and they most likely have someone else blogging for them, too! -Think of TechCrunch or LifeHacker, for example: they have a small legion of talented writers working for them &emdash; even if Michael Harrington does rant about Twitter about three times a week himself, though. -At the end of the day, what matters is the _quality_ of your posts. Not the length minf, the Quality. I personally think that non-professionals (I said "non-professionals", not "amateurs"!) are _allowed_ to write about once a week, if they can provide good content, that is. - -But you still do have to write _at least_ once a week (OK, let's make it ten days), otherwise either you're justified (you genuinely don't have time) or you may be a victim of one of these common fears. Watch out, and happy blogging! - - - +_"It has been a while since my last post, sorry about that"_ +I read this sentence (or something along those lines) on many blogs on the Internet, including mine. As a matter of fact, I actually didn't write a meaningful post on my blog for a long time and no, probably this is not going to change that either. + +Yesterday I started thinking *why* this happens, not only to me but to a lot of other non-professional bloggers. A professional blogger &emdash; for what I can tell &emdash; is someone like Michael Arrington or Gina Trapani: someone who has the luck (or course) to be able to just blog for a living. + +I don't blog for a living: my site is self-sustaining via a few very unobtrusive ads, just that. I have a full time job, and I blog in my spare time about my interests, without even trying to make "proper" money from my site. There's nothing wrong with it: I believe there are some other people in my condition, and that's quite normal. + +That being said, let's examine the ten most common reasons why I (and you too, maybe) end up not updating my blog, _even when I have time to do so_.h3. Someone already blogged about it + +This is very irritating. I am obsessed with original content. I want to write about something other people _never_ (or hardly ever) wrote about. As a consequence, I often find myself googling the same topic I'm planning my blog post on, and I _obviously_ often get quite a few results, too! + +I actually wanted to title this very post "The Blogger's Block", but I immediately thought of putting that very title into Google, just to see if someone else already blogged about it. Sure they did! Not original at all, tough luck. +It also happened a few weeks ago: I wanted to write about the current state of tech news sites and Antonio Cangiano comes up with a similar "post":http://antoniocangiano.com/2008/05/29/random-thoughts-on-social-sites/. Very interesting indeed, but quite annoying as well! + +OK scrap that, think about something else... + +This can potentially go on for days, and the only solution is of course trying not to worry about it, and just write the damn thing (that's what I did to write this post). + +h3. I didn't research enough on the subject + +This happens tipically with reviews, round-ups, etc. Things I actually enjoy writing, but which may be easily subject to (harsh) criticism unless ou do them right. +I wanted to write a review of the new Treo 750 I bought. I've been using for a while, I learnt a few interesting hacks etc. etc. Unfortunately the 3G iPhone came out, so everyone is all hyped up about it. Too bad that I, being Italian and living in Italy, I never actually touched the damn thing! +What has that got to do with my Treo 750? Well, it would be nice to write a review of a Windows Mobile 6 phone comparing to the upcoming Apple wonder, wouldn't it? + +The solution to this would be trying to limit the scope of your post: screw Apple, let's just focus on my Treo 750 and on the amazing amount of programming languages I can use on it! + +h3. After researching for X days, I realized it was all a waste of time + +This happens with big articles. I once thought about writing a comprehensive article about all the possible ways to deploy a Ruby on Rails web site. Cool, isn't it? I started researching about all the most esoteric lightweight web servers, about JRuby, Glassfish, IronRuby, ... A lot of things. And new solutions kept coming up, and with them more and more posts, and then even entire books on the subjects. + +Very frustrating. I abandoned the whole thing, because there was simply no reason to go on researching: it was all a waste of time. + +How to fix this? Again, reduce the scope of your article so that you are able to reduce the time you spend researching about it. Or maybe try to get paid to write it, so that even if there's plenty of articles about the same subject, at least you have a concrete purpose to write yours. + +Erhm, yes, by the way, keep an eye on "SitePoint":http://www.sitepoint.com in the next few days/weeks, OK? + +h3. I only write when I'm inspired, and now I'm not + +Very, very common. I normally think about a very cool article to write in the evening, or early in the morning, or whenever I don't have access to a computer or the Internet. +Of course I don't forget about it, but by the time I have a chance to actually write it, I really don't fancy doing so. Oh, the irony! +It happened today, actually, during my lunch break: I was supposed to write this post but I didn't feel like it. I lost my inspiration and all my artistic verve, so no, it can't be done. Tough luck, wait until next time. + +How did I solve this? Well, I started writing the post in my coffee break: there was no way to finish it in time, of course, but at least I started it. +I also saved it to my PDA and continued writing it when I had a chance. Eventually, I managed to finish it during my lunch break, the next day. + +Try to write _whenever you are inspired_. If you are not inspired in your lunch break, do some work in your lunch break and then write when, in an hour or so, probably, you feel like writing again. + +h3. This won't make Digg's front page + +Digg, Reddit, DZone, you name it. They are all excellent free tools for promoting your content. Don't tell me you never wrote a post _for the sake of making the front page_ of one of those sites. I did, I confess. +I didn't make Digg's front page in a while, and I'm probably never going to make it again. The reason? When it comes to promoting the right content in a fair way Digg *sucks*. As a consequence, 80% of the articles which appear on Digg *suck*. I'm sure you'll be able to forgive my French when I say that *Digg utterly sucks*. + +No matter how clever your story may be, unless you're backed up by a swarm or an active community willing to Digg your story, you simply aren't going to make it. When is the last time a proper programming article made it to Digg? I don't remember, probably way before I unsubscribed to the Digg's Technology feed, about a year or so ago. + +Just write for the sake of writing. Don't even submit your story to Digg (unless you're writing about the iPhone, of course, then you may have a chance): post it to a less-known site, maybe, or to Reddit, instead. You won't get as much traffic, granted, but you also won't get tons of idiots writing pointless crap on your site and you won't risk a server crash. If it's destiny, then some good soul will post it to Digg, but nobody will digg it. That's just life, I'm afraid. + +h3. It has been too long since my last post: the next one will have to make up for it + +This happens when you start feeling guilty because you didn't post in a long time. + +_"My next post is going to be superb, long, interesting and everyone will start flocking back to my blog!"_ + +Wrong. First of all because statistically people just don't "flock back" because you bestowed them of one interesting post (you have to keep up, too), and second because by doing so your mind will automatically discard all those bits of things you wanted to write about, but you never did because you're waiting for that special _next post_ which will be _so much better_ and will bring your blob back to -spam- life. + +It happened, it happened... again, all you have to do is just post all the tidbits you need, while you're preparing your big shot: your blog will remain "fresh" and more people will enjoy your interesting posts, whenever they'll come. + +h3. Nobody gives a damn, anyway + +I didn't want to upset my younger audience by using a nasty f-word in the title, but that's exactly how it feels like it, sometimes. +I went to Rome last week, did you know? I twittered about it, you *ought* to know! And of course you'll all be waiting for the usual 10-page-long article on my awesome vacation. Like when I "went to London":http://www.h3rald.com/articles/incomplete-guide-to-london, remember? +No, sadly not everyone may be interested in this crap. So I probably won't post about it: who cares? When you start thinking like this, you may stop posting for weeks: not everyone may be interested in everything you post, and I believe that's normal. +Especially for a blog like mine, which is deliberately open to all my interests: programming, technology, travelling, etc. That's why most blogs try to be themed: they write about a particular subject, even a single programming project, and they (try to) do it well. The trade-off is that a themed blog may run out of posts amazingly quickly, if you're not carefula and if you're not 100% devoted to your blog's theme. +A themed blog will build up a faithful audience, like when I was writing almost exclusively about CakePHP: a lot of PHP programmers where flocking here daily. Then things "went wrong":http://www.h3rald.com/blog/42 and I really couldn't be bothered to write about the same crap. Which leads us to the next topic... + +h3. If I write about this, a large chunk of my audience is going to be upset + +This applies especially to themed blogs: if you're a well-known Firefox addict, you can't suddenly start writing about "Opera":http://www.h3rald.com/articles/firefox-lovers-guide-to-opera, praising its speed and the features it offers out-of-the box! +If you take a side, you'd better stick to it, if you want your audience to stick to you: the ten people who happen to read this blog are probably quite shocked by the amount of times I "changed side": from CakePHP and PHP to Rails and Ruby, from Firefox to Opera (well, wait until my next SitePoint article comes out, at least...). Probably they are not the same people who read this blog a year or so ago. + +In the end, it's entirely up to you: if you are prone to radically change our opinion (and this happen in technology, much more than in politics), which involves changing the whole theme of your blog, maybe you should consider not having a themed blog at all. +And if you don't feel 100% sure you want a themed blog, you definitely shouldn't go for a themed domain name, or you may end up abandoning it afterwards. And when that happens, unless you're writing damn cool posts like "Why":http://redhanded.hobix.com/, it's going to hurt your audience. On the other hand, if you're sure you'll get ten times more visitors, go for it. +No, h3rald.com stays... I may end up raving about Safari at some point within the next ten years though, don't be upset! + +h3. I'm not an expert on the subject, so I shouldn't blog about it + +This is a common problem I have when I try to write about something I don't know extensively enough. When I started to learn Ruby, I was eager to start writing about it: it seemed just too cool to be true! +I thought about writing a longish post on learning Ruby from scratch, but then I realized it wouldn't have been a great idea: I was just starting to learn a new language, I didn't know all the nitty-gritty and writing about it to teach others was going to be a bit presumptuous, maybe! +Instead, I opted for a lighted "10 reasons to learn Ruby":http://www.h3rald.com/articles/10-reasons-to-learn-ruby article, clearly stating in the first paragraph that I was just a noob getting excited about his new toy. It worked, actually: people seemed to enjoy it, and I was partially excused for the few mistakes I made here and there. +You don't have to be an expert to blog about something: you just have to be totally honest about what you know, and what you don't know. + +h3. There are a lot of professional bloggers out there, and I'm not one of them + +Finally, this can be summarized in two words: inferiority complex. "Proper" blogs fire out 10+ posts _per day_, and I don't even write ten points in _a month_! Again, those a professional bloggers: they live for blogging (and make an awful lot of money out of it), and they most likely have someone else blogging for them, too! +Think of TechCrunch or LifeHacker, for example: they have a small legion of talented writers working for them &emdash; even if Michael Harrington does rant about Twitter about three times a week himself, though. +At the end of the day, what matters is the _quality_ of your posts. Not the length minf, the Quality. I personally think that non-professionals (I said "non-professionals", not "amateurs"!) are _allowed_ to write about once a week, if they can provide good content, that is. + +But you still do have to write _at least_ once a week (OK, let's make it ten days), otherwise either you're justified (you genuinely don't have time) or you may be a victim of one of these common fears. Watch out, and happy blogging! + + +
M content/articles/10.textilecontent/articles/10.textile

@@ -12,66 +12,66 @@ - politics

type: article toc: true ----- -!>http://www.berluscastop.it/v_imag/sodom1.gif! - -Another five years have passed and here we go again: General Elections time! -Today and tomorrow Italy -must- should vote for a new government, and the choice is _again_ between two main contenders to the Prime Minister's -throne- chair: - -- "Romano Prodi":http://news.bbc.co.uk/1/hi/world/europe/299254.stm -- "Silvio Berlusconi":http://news.bbc.co.uk/1/hi/world/europe/3034600.stm - -Just today I was reading an interesting article titled "_'The End of Silvio's Show?'_":http://service.spiegel.de/cache/international/spiegel/0,1518,409538,00.html in which the author examines the possibility that Berlusconi's five years of subtle pseudo-dictatorship may end in favour the former president of European Commission Romano Prodi. - -_Who are they?_ - -*Silvio Berlusconi* -!>http://www.consapevolezza.it/notizie/gen-mar-2002/imgs/berlusconi_corna_5.jpg! - -I can't imagine someone asking this question, at least I can't think of anyone who doesn't know Silvio Berlusconi as the icon of the latest _national oddity_. -Forthose who need their memory refreshed, here's a small collection of links featuring him: - -* "BBC NEWS Profile":http://news.bbc.co.uk/1/hi/world/europe/3034600.stm -* "Wikipedia Page":http://en.wikipedia.org/wiki/Silvio_Berlusconi about him -* "An Italian Story":http://www.economist.com/displaystory.cfm?story_id=587107 - An article written in 2001 published by the Economist, _before_ he was elected Prime Minister -* "Fit to run Italy?":http://www.economist.com/displaystory.cfm?story_id=593654 - Another article by the Economists explaining why Berlusconi should _not_ lead the Italian Government -* "Meglio coglioni che mafiosi":http://grabbyeducational.blogspot.com/ - Italian blog against Berlusconi (warning: profanity). -* "Basta 2006 - Geocities":http://www.geocities.com/basta2006/ - a comprehensive directory of websites dedicated to Berlusconi, a really good resource. - -There are millions more. In particular, I'd like to add one more: "The Empire of Silvio Berlusconi":http://www.consapevolezza.it/notizie/gen-mar-2002/impero_berlusconi.asp, which features an image taken from an Italian magazine listing (roughly) everything owned (the image is dated 2002) by our current (for now) Prime Minister, such as: - -* Mediaset Television (100%) - which includes three national channels -* Medusa Film (100%) - Movie productions -* Milan A.C. (99%) - Football team -* Edilnord (63%) - Real Estate -* Blockbuster (51%) - Video retal shops -* Mondadori Spa (48%) - Biggest Italian editorial company -* Mediolanum (35.5%) - Financial sociaty - banks, insurances etc. - -Nice, isn't it? Of course he had to give those societies to some trusted administrators before becoming Prime Minister... but let's not talk about this... - - -*Romano Prodi* -!>http://upload.wikimedia.org/wikipedia/en/thumb/0/04/Prodi.jpg/200px-Prodi.jpg! - -Perhaps not as well known abroad as Silvio, but was recently the President of the European Commission for a while. Here are some (more serious) links about him: - -* "European Commission Archives":http://europa.eu.int/comm/archives/commission_1999_2004/prodi/index_en.htm -* "eitb24's profile of Romano Prodi":http://www.eitb24.com/portal/eitb24/noticia/en/international-news/centre-left-candidate--profile-of-romano-prodi-?itemId=D23503&cl=%2Feitb24%2Finternacional&idioma=en -* "Answers.com on Romano Prodi":http://www.answers.com/topic/romano-prodi -* "New York Times archives about Romano Prodi":http://topics.nytimes.com/top/reference/timestopics/people/p/romano_prodi/index.html?inline=nyt-per - -Known as "The Professor" for his education... - -bq. _"He graduated in economics at Milan's Catholic University in 1961 and did postgraduate studies at the London School of Economics. He also spent a year as visiting professor at Harvard in 1974"_ -_("Prodi's BBC profile":http://news.bbc.co.uk/1/hi/world/europe/299254.stm)_ - -...Romano Prodi is the candidate proposed by the current Italian opposition, grouping roughly all the center-left parties. He's the one who pushed Italy - as President of the European Commission - to accept the Euro as new currency, back in the day, and also the one who was blamed for than after a few months when the _Euro effect_ occurred: prices went higher and didn't seem to be an _exact conversion_ from Lire to Euro. He was chubby enough ("mortadella" is one of his most recurring nicknames) to be quickly appointed as scapegoat for the unpleasant situation. - -!<http://www.dsmirandola.it/sg/img/berlusconi_corna.jpg! - -Besides that, if someone asks me what's the difference between the two candidates, I'll answer: one is a politician and devoted all his life to Politics, while the other partly devoted only the last 10-years-or-so to politics because it seemed to be _a cool and worthwhile investment_... - -_*Who am going to vote?*_ - -Well, one thing is sure: I don't want Silvio to win again, I don't want Italy to be publicly ridicolized abroad all the time that muppet opens his mouth or simply does something _he_ thinks is funny... - +!>http://www.berluscastop.it/v_imag/sodom1.gif! + +Another five years have passed and here we go again: General Elections time! +Today and tomorrow Italy -must- should vote for a new government, and the choice is _again_ between two main contenders to the Prime Minister's -throne- chair: + +- "Romano Prodi":http://news.bbc.co.uk/1/hi/world/europe/299254.stm +- "Silvio Berlusconi":http://news.bbc.co.uk/1/hi/world/europe/3034600.stm + +Just today I was reading an interesting article titled "_'The End of Silvio's Show?'_":http://service.spiegel.de/cache/international/spiegel/0,1518,409538,00.html in which the author examines the possibility that Berlusconi's five years of subtle pseudo-dictatorship may end in favour the former president of European Commission Romano Prodi. + +_Who are they?_ + +*Silvio Berlusconi* +!>http://www.consapevolezza.it/notizie/gen-mar-2002/imgs/berlusconi_corna_5.jpg! + +I can't imagine someone asking this question, at least I can't think of anyone who doesn't know Silvio Berlusconi as the icon of the latest _national oddity_. +Forthose who need their memory refreshed, here's a small collection of links featuring him: + +* "BBC NEWS Profile":http://news.bbc.co.uk/1/hi/world/europe/3034600.stm +* "Wikipedia Page":http://en.wikipedia.org/wiki/Silvio_Berlusconi about him +* "An Italian Story":http://www.economist.com/displaystory.cfm?story_id=587107 - An article written in 2001 published by the Economist, _before_ he was elected Prime Minister +* "Fit to run Italy?":http://www.economist.com/displaystory.cfm?story_id=593654 - Another article by the Economists explaining why Berlusconi should _not_ lead the Italian Government +* "Meglio coglioni che mafiosi":http://grabbyeducational.blogspot.com/ - Italian blog against Berlusconi (warning: profanity). +* "Basta 2006 - Geocities":http://www.geocities.com/basta2006/ - a comprehensive directory of websites dedicated to Berlusconi, a really good resource. + +There are millions more. In particular, I'd like to add one more: "The Empire of Silvio Berlusconi":http://www.consapevolezza.it/notizie/gen-mar-2002/impero_berlusconi.asp, which features an image taken from an Italian magazine listing (roughly) everything owned (the image is dated 2002) by our current (for now) Prime Minister, such as: + +* Mediaset Television (100%) - which includes three national channels +* Medusa Film (100%) - Movie productions +* Milan A.C. (99%) - Football team +* Edilnord (63%) - Real Estate +* Blockbuster (51%) - Video retal shops +* Mondadori Spa (48%) - Biggest Italian editorial company +* Mediolanum (35.5%) - Financial sociaty - banks, insurances etc. + +Nice, isn't it? Of course he had to give those societies to some trusted administrators before becoming Prime Minister... but let's not talk about this... + + +*Romano Prodi* +!>http://upload.wikimedia.org/wikipedia/en/thumb/0/04/Prodi.jpg/200px-Prodi.jpg! + +Perhaps not as well known abroad as Silvio, but was recently the President of the European Commission for a while. Here are some (more serious) links about him: + +* "European Commission Archives":http://europa.eu.int/comm/archives/commission_1999_2004/prodi/index_en.htm +* "eitb24's profile of Romano Prodi":http://www.eitb24.com/portal/eitb24/noticia/en/international-news/centre-left-candidate--profile-of-romano-prodi-?itemId=D23503&cl=%2Feitb24%2Finternacional&idioma=en +* "Answers.com on Romano Prodi":http://www.answers.com/topic/romano-prodi +* "New York Times archives about Romano Prodi":http://topics.nytimes.com/top/reference/timestopics/people/p/romano_prodi/index.html?inline=nyt-per + +Known as "The Professor" for his education... + +bq. _"He graduated in economics at Milan's Catholic University in 1961 and did postgraduate studies at the London School of Economics. He also spent a year as visiting professor at Harvard in 1974"_ +_("Prodi's BBC profile":http://news.bbc.co.uk/1/hi/world/europe/299254.stm)_ + +...Romano Prodi is the candidate proposed by the current Italian opposition, grouping roughly all the center-left parties. He's the one who pushed Italy - as President of the European Commission - to accept the Euro as new currency, back in the day, and also the one who was blamed for than after a few months when the _Euro effect_ occurred: prices went higher and didn't seem to be an _exact conversion_ from Lire to Euro. He was chubby enough ("mortadella" is one of his most recurring nicknames) to be quickly appointed as scapegoat for the unpleasant situation. + +!<http://www.dsmirandola.it/sg/img/berlusconi_corna.jpg! + +Besides that, if someone asks me what's the difference between the two candidates, I'll answer: one is a politician and devoted all his life to Politics, while the other partly devoted only the last 10-years-or-so to politics because it seemed to be _a cool and worthwhile investment_... + +_*Who am going to vote?*_ + +Well, one thing is sure: I don't want Silvio to win again, I don't want Italy to be publicly ridicolized abroad all the time that muppet opens his mouth or simply does something _he_ thinks is funny... +
M content/articles/12.textilecontent/articles/12.textile

@@ -11,74 +11,74 @@

type: article toc: true ----- -The time has come. The times when I used to meander around reading stuff on the Net and writing about whatever I wanted are over. Incidentally, the world may end, _your_ laptop could explode and I could knock at your door in a few minutes asking for money, imagine that! -Nothing of the above, alright, bad joke, but sooner or later the time to _start doing something_ comes, at some point you ought to start making some real money. It's time to settle down, my fiance&eacute; are eager to get our own independence, move to our new house (which we're still doing up) etc. etc. Fair enough. I spent the last five months wasting my time looking for a job, a _proper_ job having something to do with IT(Information Technology) and finally something seems to be possible. - -_Either nothing or everything_ - I may even say that: now I have to face a difficult choice between two job proposals that seem both fairly interesting. -_"Go wherever you can get more bucks, you nutter!"_ - Well, there's more to it. -Let's examine now the two similar but yet different realities I have to choose from. Maybe you'll never be in my situation, but I hope this can help at least those who experienced or could experience something similar someday. - -_*Working under Uncle Bill's wing*_ -!>http://base--/img/pictures/genova.jpg! Not Microsoft. No, not directly at any rate. I've recently been contacted by a well known multi-national company which does almost anything ranging from computers, phones, electrical stuff to huge self-aware robots designed to conquer new worlds... Not quite, but let's just say that this image contributes to give an idea of a Corporate-type reality. - -_Preliminaries_ -I happen to be an Italian whose English skills go a bit beyond the _"Hello, me Italian and like to do friendship with you"_, I applied in the above (un)mentioned company as _Software Tester_ and got contacted twenty days afterwards about a possible position as _Technical Writer_. It makes perfect sense. Well, at any rate I was pleased and I went to the pre-selection which was something like a pre-GCSE English test with a bunch of "technical" questions ("What does HTTP mean?"...). -Thanks to our Merciful God I passed it (and thus avoided endless teasing by my British fiance&eacute;), and they wanted to have a proper interview with me today. -I went there and came back a few hours ago, and I think it wasn't too bad, let's say I may stand good chances but as normally happens in such companies in the end it was just something like _Thank you for coming, we'll call you by the end of April_. Although I mentioned that I recently had some other job offer obviously they couldn't give a damn: as any other big company, they need to interview all the possible candidates to be sure they pick the right one, and that's fair enough. - -_The job_ -In the remote eventuality they decide to take me on board, I'd be part of a Documentation Team in charge of writing technical documents, manuals and silly jokes - perhaps - about some semi-classified huge internal semi-intelligent corporate framework. -Now, although some people may already start to feel bored even at thinking about a job like that, I think this role would fit me perfectly. I love writing. I love researching. I love crating documentations, howtos, reports and any other boring (for other people) stuff! And they want me to write in English, not in Italian, which is - it may sound weird - a true relief for me. -At the interview I had a chance to talk about my "articles":http://base--/articles/ and they seemed interested in this activity of mine... I even mentioned my "CakePHP article":http://base--/articles/view/cakephp/ and they say they're gonna check it out. Oh well, this site's stats are always one Firefox tab away from my current main browsing tab, so you can bet I'll be tracking that. - -_The contract and the salary_ -_Classified_. They didn't say anything, as usual, but presumably it should be a permanent (or semi-permanent) contract with all the contributions, health insurance, taxes etc. paid. And free cookies. Yum! -Salary... well, it shouldn't be too bad, anyway. - -_PROs_ - -* I'll be doing something I really enjoy: writing in English -* Steady job, steady contract, more security -* Corporare Environment -* I can show off with my friends who are still studying pointless stuff and tell them I'm working for <company name removed> - -_CONs_ - -* There's a risk I'll lose my individuality -* The salary could be lower than expected - at least initially -* They'll get back to me at the end of this month, and I have to give an answer to someone else before that -* My friends and fiance&eacute; will probably hassle me to give them free goodies they think I'll get from the company - - -_*Working in a 'cool place', and fly high*_ -!>http://base--/img/pictures/lambruschini.jpg! Nope, sorry, the "Cake Software Foundation":http://www.cakefoundation.org/ unfortunately is not hiring. The alternative is a small company in my city, Genoa, which recently merged with a slightly bigger company based in Milan, which _might_ merge with a big national company involved in producing some successful (here in Italy and even abroad, a little bit) TV programs. Network involved are Italy's national channels, good ol' pal Berlusconi's channels, Sky Italy and (drums) MTV. -Cool, innit? What do they do? Well, interaction between mobile phones and TV through software and networks. Polls, SMS chat services, WAP application downloads, "take matey out of Big Brother's house", SMS/MMS blind dates related to some well known TV programs, tele-voting at Sanremo Festival etc. etc. - -_Preliminaries_ -Their first interview was the most unusual I've ever had, and I "already wrote":http://base--/blog/view/9/ about it: they even asked me to solve a riddle. Then they wanted to meet me again and showed me how they work in two different areas (see next section). They are really chilled out, friendly, they seem alright, even the main boss who deals with the company's financial side, which is always a plus. -By the way, they already offered me the job, and I'll have to give an answer next Tuesday - that's the bad part. - -_The Job_ -The Lead Developer of the company apparently seemed satisfied enough with my knowledge and Java skills. A first possibility for mewould be working for them as full-time Java Developer. Coding. Wake up, go to work, Code for eight hours, go home, sleep/other things, wake up, go to work... -It would be a good experience, and other people would choose this immediately over anything else. Coding what? Parsing algorythms for the SMS we receive, data manipulation, storage, re-formatting etc. etc. -The other possibility which they suggested after noticing my ability to write and research would be 2nd Level Help Desk. Get dozens of technical emails every day, file reports, notify developers when something goes wrong, propose solutions, implement solutions, monitor the systems and even execute queries on the production server on the fly, in real time (eeek!). -This could sound boring/annoying/scary but since I'm a freak I think it's an interesting prospective. Perhaps not as qualifying as being a Java Developer, perhaps not. - -_The contract and the salary_ -1200-1250 (or more) &euro;/month, after tax. Which in my country is considered a more-than-reasonable pay, especially for a first job. Differnt form of contract, from consultant-with-VAT to renewable yearly projects, which is probably what I'd go for. Contributions/taxes paid, kind of, holidays and other vacancies included, kind of. - -_PROs_ - -* Perhaps better salary -* I know exactly what they offer, they told me their offer in detail -* Chilled out environment -* Perhaps I can sneak and read my desperate friends' SMS when they try to pull birds - -_CONs_ - -* Less steady contract, less security -* I'll hardly ever use my English skills, perhaps -* They NEED a yes or no by next tuesday -* My friends will probably hassle me to spy on other people's SMS traffic and/or make them win TV contests - +The time has come. The times when I used to meander around reading stuff on the Net and writing about whatever I wanted are over. Incidentally, the world may end, _your_ laptop could explode and I could knock at your door in a few minutes asking for money, imagine that! +Nothing of the above, alright, bad joke, but sooner or later the time to _start doing something_ comes, at some point you ought to start making some real money. It's time to settle down, my fiance&eacute; are eager to get our own independence, move to our new house (which we're still doing up) etc. etc. Fair enough. I spent the last five months wasting my time looking for a job, a _proper_ job having something to do with IT(Information Technology) and finally something seems to be possible. + +_Either nothing or everything_ - I may even say that: now I have to face a difficult choice between two job proposals that seem both fairly interesting. +_"Go wherever you can get more bucks, you nutter!"_ - Well, there's more to it. +Let's examine now the two similar but yet different realities I have to choose from. Maybe you'll never be in my situation, but I hope this can help at least those who experienced or could experience something similar someday. + +_*Working under Uncle Bill's wing*_ +!>http://base--/img/pictures/genova.jpg! Not Microsoft. No, not directly at any rate. I've recently been contacted by a well known multi-national company which does almost anything ranging from computers, phones, electrical stuff to huge self-aware robots designed to conquer new worlds... Not quite, but let's just say that this image contributes to give an idea of a Corporate-type reality. + +_Preliminaries_ +I happen to be an Italian whose English skills go a bit beyond the _"Hello, me Italian and like to do friendship with you"_, I applied in the above (un)mentioned company as _Software Tester_ and got contacted twenty days afterwards about a possible position as _Technical Writer_. It makes perfect sense. Well, at any rate I was pleased and I went to the pre-selection which was something like a pre-GCSE English test with a bunch of "technical" questions ("What does HTTP mean?"...). +Thanks to our Merciful God I passed it (and thus avoided endless teasing by my British fiance&eacute;), and they wanted to have a proper interview with me today. +I went there and came back a few hours ago, and I think it wasn't too bad, let's say I may stand good chances but as normally happens in such companies in the end it was just something like _Thank you for coming, we'll call you by the end of April_. Although I mentioned that I recently had some other job offer obviously they couldn't give a damn: as any other big company, they need to interview all the possible candidates to be sure they pick the right one, and that's fair enough. + +_The job_ +In the remote eventuality they decide to take me on board, I'd be part of a Documentation Team in charge of writing technical documents, manuals and silly jokes - perhaps - about some semi-classified huge internal semi-intelligent corporate framework. +Now, although some people may already start to feel bored even at thinking about a job like that, I think this role would fit me perfectly. I love writing. I love researching. I love crating documentations, howtos, reports and any other boring (for other people) stuff! And they want me to write in English, not in Italian, which is - it may sound weird - a true relief for me. +At the interview I had a chance to talk about my "articles":http://base--/articles/ and they seemed interested in this activity of mine... I even mentioned my "CakePHP article":http://base--/articles/view/cakephp/ and they say they're gonna check it out. Oh well, this site's stats are always one Firefox tab away from my current main browsing tab, so you can bet I'll be tracking that. + +_The contract and the salary_ +_Classified_. They didn't say anything, as usual, but presumably it should be a permanent (or semi-permanent) contract with all the contributions, health insurance, taxes etc. paid. And free cookies. Yum! +Salary... well, it shouldn't be too bad, anyway. + +_PROs_ + +* I'll be doing something I really enjoy: writing in English +* Steady job, steady contract, more security +* Corporare Environment +* I can show off with my friends who are still studying pointless stuff and tell them I'm working for <company name removed> + +_CONs_ + +* There's a risk I'll lose my individuality +* The salary could be lower than expected - at least initially +* They'll get back to me at the end of this month, and I have to give an answer to someone else before that +* My friends and fiance&eacute; will probably hassle me to give them free goodies they think I'll get from the company + + +_*Working in a 'cool place', and fly high*_ +!>http://base--/img/pictures/lambruschini.jpg! Nope, sorry, the "Cake Software Foundation":http://www.cakefoundation.org/ unfortunately is not hiring. The alternative is a small company in my city, Genoa, which recently merged with a slightly bigger company based in Milan, which _might_ merge with a big national company involved in producing some successful (here in Italy and even abroad, a little bit) TV programs. Network involved are Italy's national channels, good ol' pal Berlusconi's channels, Sky Italy and (drums) MTV. +Cool, innit? What do they do? Well, interaction between mobile phones and TV through software and networks. Polls, SMS chat services, WAP application downloads, "take matey out of Big Brother's house", SMS/MMS blind dates related to some well known TV programs, tele-voting at Sanremo Festival etc. etc. + +_Preliminaries_ +Their first interview was the most unusual I've ever had, and I "already wrote":http://base--/blog/view/9/ about it: they even asked me to solve a riddle. Then they wanted to meet me again and showed me how they work in two different areas (see next section). They are really chilled out, friendly, they seem alright, even the main boss who deals with the company's financial side, which is always a plus. +By the way, they already offered me the job, and I'll have to give an answer next Tuesday - that's the bad part. + +_The Job_ +The Lead Developer of the company apparently seemed satisfied enough with my knowledge and Java skills. A first possibility for mewould be working for them as full-time Java Developer. Coding. Wake up, go to work, Code for eight hours, go home, sleep/other things, wake up, go to work... +It would be a good experience, and other people would choose this immediately over anything else. Coding what? Parsing algorythms for the SMS we receive, data manipulation, storage, re-formatting etc. etc. +The other possibility which they suggested after noticing my ability to write and research would be 2nd Level Help Desk. Get dozens of technical emails every day, file reports, notify developers when something goes wrong, propose solutions, implement solutions, monitor the systems and even execute queries on the production server on the fly, in real time (eeek!). +This could sound boring/annoying/scary but since I'm a freak I think it's an interesting prospective. Perhaps not as qualifying as being a Java Developer, perhaps not. + +_The contract and the salary_ +1200-1250 (or more) &euro;/month, after tax. Which in my country is considered a more-than-reasonable pay, especially for a first job. Differnt form of contract, from consultant-with-VAT to renewable yearly projects, which is probably what I'd go for. Contributions/taxes paid, kind of, holidays and other vacancies included, kind of. + +_PROs_ + +* Perhaps better salary +* I know exactly what they offer, they told me their offer in detail +* Chilled out environment +* Perhaps I can sneak and read my desperate friends' SMS when they try to pull birds + +_CONs_ + +* Less steady contract, less security +* I'll hardly ever use my English skills, perhaps +* They NEED a yes or no by next tuesday +* My friends will probably hassle me to spy on other people's SMS traffic and/or make them win TV contests + Here's where I stand. I can't complain, alright, but I must choose and act carefully. I'll sleep on it.
M content/articles/13.textilecontent/articles/13.textile

@@ -12,15 +12,15 @@ - writing

type: article toc: true ----- -Too right. Enough being a lazy writer, it's time to seriously produce something. I could sit here and pretend that long blog posts can make up for the lack of new articles, but I'd like to write something _proper_ and new. Judging by the latest stats people come here hoping to find either a blog _entirely_ devoted to CakePHP or some CakePHP related content. Well, actually they can "find":http://base--/tags/CakePHP/ quite a bit, but I'd like to be able to sport more Cake-related articles, bookmarks, and posts. My main problem is that I could add ten bookmarks about Cake right away, but the _latest addition_ showed on the front page would feature only bookmarks, which would be bad (yes, I do worry about silly things). At the moment this blog is the second easiest way to provide fresh content frequently enough to encourage visitors to come back, but articles could be even better. - -!<http://base--/img/pictures/baking_bear.png! - -Without further ado, I hereby announce that _I am working on some new articles on CakePHP_, at least one. I'd like to write something technical about CakePHP's advanced features, because that's where the current documentation is lacking, at the moment: associations, caching, some advanced components... they are topics which seem to interest those bakers who already baked their first cake and are now looking for some more icing. - -Interested? Good! Sadly, that's not what I'm going to write now, at least not the first article I'll be releasing. Please stop calling me names, there's no need to say that I'm just a lazy coward who doesn't want to get his hands dirty and write some tough stuff. And stop pulling those sad faces! Think about... new bakers. There are new people learning about Cake and I know there are, I just discovered "one":http://www.480x.com/2006/04/12/eureka/ yesterday almost by chance: he seems to be really enthusiastic about Cake, judging by his "latest post":http://www.480x.com/2006/04/13/eureka-part-deux/ (OK, nevermind the pic). -Those people are mostly more-or-less experienced PHP programmers who want to find an answer to all their development problems and annoyance. Well, my good friends, the answer lies in Cake. Cake can save us all and bestow powerful blessings of Good PHP Design and Well-structured Programming upon our messy spaghetti code! - -I almost considered writing a humorous article about Cake, but luckily I changed my mind. My old "CakePHP article":http://base--/articles/view/cakephp/ is already a few months old and was written when Cake was in pre-beta. I feel it's time for a more up-to-date howto and introduction to our framework, something maybe not as lenghty but easily readable by almost anyone interested in starting to learn about Cake. - +Too right. Enough being a lazy writer, it's time to seriously produce something. I could sit here and pretend that long blog posts can make up for the lack of new articles, but I'd like to write something _proper_ and new. Judging by the latest stats people come here hoping to find either a blog _entirely_ devoted to CakePHP or some CakePHP related content. Well, actually they can "find":http://base--/tags/CakePHP/ quite a bit, but I'd like to be able to sport more Cake-related articles, bookmarks, and posts. My main problem is that I could add ten bookmarks about Cake right away, but the _latest addition_ showed on the front page would feature only bookmarks, which would be bad (yes, I do worry about silly things). At the moment this blog is the second easiest way to provide fresh content frequently enough to encourage visitors to come back, but articles could be even better. + +!<http://base--/img/pictures/baking_bear.png! + +Without further ado, I hereby announce that _I am working on some new articles on CakePHP_, at least one. I'd like to write something technical about CakePHP's advanced features, because that's where the current documentation is lacking, at the moment: associations, caching, some advanced components... they are topics which seem to interest those bakers who already baked their first cake and are now looking for some more icing. + +Interested? Good! Sadly, that's not what I'm going to write now, at least not the first article I'll be releasing. Please stop calling me names, there's no need to say that I'm just a lazy coward who doesn't want to get his hands dirty and write some tough stuff. And stop pulling those sad faces! Think about... new bakers. There are new people learning about Cake and I know there are, I just discovered "one":http://www.480x.com/2006/04/12/eureka/ yesterday almost by chance: he seems to be really enthusiastic about Cake, judging by his "latest post":http://www.480x.com/2006/04/13/eureka-part-deux/ (OK, nevermind the pic). +Those people are mostly more-or-less experienced PHP programmers who want to find an answer to all their development problems and annoyance. Well, my good friends, the answer lies in Cake. Cake can save us all and bestow powerful blessings of Good PHP Design and Well-structured Programming upon our messy spaghetti code! + +I almost considered writing a humorous article about Cake, but luckily I changed my mind. My old "CakePHP article":http://base--/articles/view/cakephp/ is already a few months old and was written when Cake was in pre-beta. I feel it's time for a more up-to-date howto and introduction to our framework, something maybe not as lenghty but easily readable by almost anyone interested in starting to learn about Cake. + Baking lessons. Yes, that's it. I'm currently writing an article divided in ten lessons which could potentially turn casual cowboy coders into (apprentice) bakers. That could be easy for those already enlightened by OOP(Object Oriented Programming) and MVC(Model-View-Controller), and perhaps more difficult for others: at any rate, I'll try my best.
M content/articles/17.textilecontent/articles/17.textile

@@ -11,16 +11,16 @@ - cakephp

type: article toc: true ----- -Gustavo Carreno just "announced":http://groups.google.com/group/cake-php/browse_thread/thread/4e13231cc383b9bb/6414184c1058fadb#6414184c1058fadb a new release of the "CakePHP Offline Manual":http://cakeforge.org/frs/?group_id=53&release_id=82. Personally I was extremely happy to download this new release because it finally contains documentation and howtos related to CakePHP's Model Associations, which is perhaps one of the most used _advanced_ CakePHP features. -So I'll have no excuses not to learn how to use them, great... - -The manual is available in the following formats: - -* Windows compressed HTML (.chm) -* PDF -* HTML (multiple pages or single page) - -Furthermore, the CakePHP API is also available for download in .chm format, thanks to Mladen Mihajlovic. - -Well done guys. Really useful for people like me who are on dialup sometimes :) +Gustavo Carreno just "announced":http://groups.google.com/group/cake-php/browse_thread/thread/4e13231cc383b9bb/6414184c1058fadb#6414184c1058fadb a new release of the "CakePHP Offline Manual":http://cakeforge.org/frs/?group_id=53&release_id=82. Personally I was extremely happy to download this new release because it finally contains documentation and howtos related to CakePHP's Model Associations, which is perhaps one of the most used _advanced_ CakePHP features. +So I'll have no excuses not to learn how to use them, great... + +The manual is available in the following formats: + +* Windows compressed HTML (.chm) +* PDF +* HTML (multiple pages or single page) + +Furthermore, the CakePHP API is also available for download in .chm format, thanks to Mladen Mihajlovic. + +Well done guys. Really useful for people like me who are on dialup sometimes :)
M content/articles/18.textilecontent/articles/18.textile

@@ -11,59 +11,59 @@

type: article toc: true ----- -Once upon a time I used "BBcode":http://en.wikipedia.org/wiki/BBCode. "CyberArmy":http://base--/bookmarks/view/cyberarmy and all its affiliated sites adopted it as _de-facto_ standard for forums and articles, so consequently more or less all my articles are bbcoded. -I could copy and paste the _BBcodeHelper_ I coded for this site, and it could be quite an interesting read for some people... well, tough luck: today I'd like to talk about "Textile":http://base--/bookmarks/view/textile-reference/ instead, which now I consider _the answer_ to all text formatting problems. - -If what I wrote up to here doesn't make sense to you, I'm rambling about the apparent necessity and the undeniable need of web developers, content managers, and writers to use something else other than HTML for adding style and formatting text. What's wrong with HTML? Nothing, it's just too "tiresome" to use: you have to remember to close all tags, break lines, use the @<strong>@ tag every time you want *bold text*, etc. etc. -Some people even freak out when you tell them that they have to use HTML in their text: "it's just _waaaaaay too difficult_ to learn and use" ...things like that. - -Whether you are scared to learn HTML, you don't want to, or you know it but you're too lazy to seriously thinking about manually use a markup language to write your article, I can say that you'll definitely become addicted to Textile. What? _"WYSIWYG(What You See is What You Get) HTML editors?"_ - C'mon, let's at least _try_ to be serious :) -Why BBcode doesn't help enough? Well, simply because I don't see why <code>[i]this[/i]</code> is easier than @<i>this</i>@: unless you have a particular phobia for angular brackets, it seems quite similar to me! - -What about @_this_@ instead? You use only two additional characters instead of seven. SEVEN. If I only want italcized text I honestly can't imagine myself using more than two extra characters. It's natural. It's human. - -!<http://base--/img/pictures/pear2.gif! - - Precisely. Textile is a _"Humane web text generator(TM)"_, it's simple, elegant and produces standard compliant XHTML code. "Dean Allen":http://www.textism.com/about/ should be worshipped by entire generations of web developers for inventing something so easy to use and so _elegant_ at the same time. Maybe not worshipped, but for sure respected. -I won't copy and paste the extremely useful "TextileHelper":http://cakeforge.org/projects/textilehelper/ for CakePHP either, simply because it's 4085 lines long and it would be pointless: you can just get it and use it. - -I'll just include some examples of textile formatting... - -| *Textile Code* | *Result* | -| @*text*@ | *bold* text | -| @_text_@ | _italicized_ text | -| <code>@text@</code> | @fixed width@ text| -| @"text":url@ | "linked":http://base--/ text | -| @!path/to/image!@ | image | - - -These are just some trivial examples. With textile you can also format text blocks, add custom CSS code and even float images or text! Tables? Sure, how do you think I created the table above? - -<pre><code> -| *Textile Code* | *Result* | -| @*text*@ | *bold* text | -| @_text_@ | _italicized_ text | -| <code>@text@<code>| @fixed width@ text| -| @"text":url@ | "linked":http://base--/ text | -| @!path/to/image!@ | image | -</code></pre> - -The simplest and most intuitive way possible! - -Regardless, Textile is not perfect and may have some quirks, at least the CakePHP helper: the_undefined pointed out in a "blog post":http://www.thinkingphp.org/2006/03/22/textile-a-personal-love-of-mine/ that external links are opened in the same window, so he provided a patch to the textile helper to handle this situation. -I also noticed that sometimes empty @style=""@ and @class=""@ attributed are generated, which don't do any particular harm, but they are not needed either... so here's a quick fix to improve your Textile experience in CakePHP: You can use this function ideally in your customized textile helper, @$data@ should be the return value of TextileHelper's @process()@ method. - -<pre><code> -function _fixTextile($data) -{ - $patterns = array( '/http://base--/', - '/style=""/', - '/class=""/', - '/ >/'); - $replaces = array($this->base, - '', - '', - '>'); - return preg_replace($patterns, $replaces, $data); -} +Once upon a time I used "BBcode":http://en.wikipedia.org/wiki/BBCode. "CyberArmy":http://base--/bookmarks/view/cyberarmy and all its affiliated sites adopted it as _de-facto_ standard for forums and articles, so consequently more or less all my articles are bbcoded. +I could copy and paste the _BBcodeHelper_ I coded for this site, and it could be quite an interesting read for some people... well, tough luck: today I'd like to talk about "Textile":http://base--/bookmarks/view/textile-reference/ instead, which now I consider _the answer_ to all text formatting problems. + +If what I wrote up to here doesn't make sense to you, I'm rambling about the apparent necessity and the undeniable need of web developers, content managers, and writers to use something else other than HTML for adding style and formatting text. What's wrong with HTML? Nothing, it's just too "tiresome" to use: you have to remember to close all tags, break lines, use the @<strong>@ tag every time you want *bold text*, etc. etc. +Some people even freak out when you tell them that they have to use HTML in their text: "it's just _waaaaaay too difficult_ to learn and use" ...things like that. + +Whether you are scared to learn HTML, you don't want to, or you know it but you're too lazy to seriously thinking about manually use a markup language to write your article, I can say that you'll definitely become addicted to Textile. What? _"WYSIWYG(What You See is What You Get) HTML editors?"_ - C'mon, let's at least _try_ to be serious :) +Why BBcode doesn't help enough? Well, simply because I don't see why <code>[i]this[/i]</code> is easier than @<i>this</i>@: unless you have a particular phobia for angular brackets, it seems quite similar to me! + +What about @_this_@ instead? You use only two additional characters instead of seven. SEVEN. If I only want italcized text I honestly can't imagine myself using more than two extra characters. It's natural. It's human. + +!<http://base--/img/pictures/pear2.gif! + + Precisely. Textile is a _"Humane web text generator(TM)"_, it's simple, elegant and produces standard compliant XHTML code. "Dean Allen":http://www.textism.com/about/ should be worshipped by entire generations of web developers for inventing something so easy to use and so _elegant_ at the same time. Maybe not worshipped, but for sure respected. +I won't copy and paste the extremely useful "TextileHelper":http://cakeforge.org/projects/textilehelper/ for CakePHP either, simply because it's 4085 lines long and it would be pointless: you can just get it and use it. + +I'll just include some examples of textile formatting... + +| *Textile Code* | *Result* | +| @*text*@ | *bold* text | +| @_text_@ | _italicized_ text | +| <code>@text@</code> | @fixed width@ text| +| @"text":url@ | "linked":http://base--/ text | +| @!path/to/image!@ | image | + + +These are just some trivial examples. With textile you can also format text blocks, add custom CSS code and even float images or text! Tables? Sure, how do you think I created the table above? + +<pre><code> +| *Textile Code* | *Result* | +| @*text*@ | *bold* text | +| @_text_@ | _italicized_ text | +| <code>@text@<code>| @fixed width@ text| +| @"text":url@ | "linked":http://base--/ text | +| @!path/to/image!@ | image | +</code></pre> + +The simplest and most intuitive way possible! + +Regardless, Textile is not perfect and may have some quirks, at least the CakePHP helper: the_undefined pointed out in a "blog post":http://www.thinkingphp.org/2006/03/22/textile-a-personal-love-of-mine/ that external links are opened in the same window, so he provided a patch to the textile helper to handle this situation. +I also noticed that sometimes empty @style=""@ and @class=""@ attributed are generated, which don't do any particular harm, but they are not needed either... so here's a quick fix to improve your Textile experience in CakePHP: You can use this function ideally in your customized textile helper, @$data@ should be the return value of TextileHelper's @process()@ method. + +<pre><code> +function _fixTextile($data) +{ + $patterns = array( '/http://base--/', + '/style=""/', + '/class=""/', + '/ >/'); + $replaces = array($this->base, + '', + '', + '>'); + return preg_replace($patterns, $replaces, $data); +} </code></pre>
M content/articles/23.textilecontent/articles/23.textile

@@ -11,75 +11,75 @@

type: article toc: true ----- -CakePHP is THE perfect PHP framework, so _we_ don't need anything else. Oh well, no. I personally love CakePHP, but I do believe other PHP frameworks can be interesting and maybe even useful, so today I thought I'd have a look at the "Simfony Project":http://base--/bookmarks/view/simfony/. This framework seems to be mentioned here and there on the Net in many different ways, someone said it can do wonders, some said it's more advanced, others said something like _"qcodo sucks.. cake stinks.. symfony rocks!!!!!"_, so it OUGHT TO be pretty cool, definitely. - -!<http://base--/img/pictures/symfony.gif! _Know thy enemy_ someone said (OK, bad joke), so let's have a look at this interesting alternative to CakePHP. _No dude, not another MVC-like, pseudo-Rails, AJAX-worshipping framework!_ Yes, another one. Actually Symfony is more than that: while people _can_ say CakePHP is similar to RoR for some features and for the strong MVC architecture, Symfony chose another road. Yes, MVC is still there, but the first thing I noticed after reading their "beginners' tutorial":http://www.symfony-project.com/tutorial/my_first_project.html was that one of the things which Symfony seems to use quite regularly (and Cake doesn't)is code generators. Things like executing @symfony propel-build-sql@ or even @symfony propel-generate-crud frontend post Post@ from command line to generate your code automagically, which CakePHP - except for our little _bake_ script - doesn't use. -_See? Simfony is MUCH better and MUCH more advanced than Cake!_ No, hang on a minute... I just listed one thing which Symfony has more than Cake, is there any more? Yes, there is, for now: i18n - internationalization. Symfony comes with native multi-lingual support and Cake doesn't - yet - although there are rumors that i18n for Cake 2.0 is _almost done_. This is not speculation, re-read the sentence: First off I'm referring to Cake _2.0_ (which means it will take a while) and also I read it in the "Cake 2.0 ToDo List":https://trac.cakephp.org/wiki/Proposals/2.0ToDoList. - -One of the most recurring and yet pointless critiques to CakePHP from Symfony enthusiasts is that the sites developed with CakePHP look terrible. I perfectly agree, look at "this":http://www.h3rald.com/ and tell me if the developer is not a complete and hopeless idiot when it comes to design and look 'n' feel! -I do agree that some CakePHP sites (mine, mainly) don't look too good, and probably the Cake Software Foundation should pay me to put it offline. I also agree that the Symfony website looks nice and is more pleasant to the eye than CakePHP's, but I do hope that the old "design contest" doesn't get forgotten... - -!>http://base--/img/pictures/askeet.gif! The Symfony team also did something truly remarkable: a comprehensive tutorial, an advent calendar, some great free source code to download and a fully functional Web 2.0-compliant online application _all in one_. I'm referring to "Askeet":http://base--/bookmarks/view/askeet/, a Symfony-powered website which has been built from scratch using the framework and its development is well documented in "twenty-four tutorials":http://www.symfony-project.com/askeet. In one move these guys made an interesting website, some useful documentation and self promotion... what can I say: for next Christmas we'd better chain PHPnut, gwoo, nate & the others to their chairs, close them in a small room and force them to code something like that in twenty-four days. -If I were to mention something which Symfony did well I'd certainly say the "documentation":http://www.symfony-project.com/content/documentation.html. Screencasts, tutorials, advent calendars, a book, a wiki, API etc. etc. All done, and all good, I must admit that. The good news is that CakePHP is slowly catching up, and now the "manual":http://manual.cakephp.org looks pretty decent. - -OK, enough flattering and let's talk about something I didn't like about Symfony. I downloaded the thing and it turns out it's 1.2MB in size, _a hell of a framework!_ After extracting the beast I had a look inside and found three directories: @data@, @lib@ and @bin@. Not bad. I opened @bin@ and found the three magic symfony scripts, alright; I opened @data@ and found nine directories, I opened @lib@ (the real deal) and found 25 directories! These guys maybe never heard of something called _"an organized directory structure"_, or perhaps I'm just too used to Cake's logic and essentiality. -Browsing around I found something like 247 .dat files defining country names and currencies in all the languages of the world, script.aculo.us and prototype libraries, javascript calendars and other wonders... Weeeeheee! -The good thing is that Symfony seems to include pretty much everything you'd ever need, the bad thing is that _personally_ I will never use any of the thirteen Chinese-related .dat files in th i18n directory. This philosophy is exactly the opposite to Cake: at first i got pissed off when I noticed that CakePHP doesn't include prototype by default, but then I realized that if they started include _everything_ you _might_ need _someday_ we'd end up like... like Symfony, with 1.2MB of stuff 500KB of which - at least - will most likely not be of any use for the average developers. - -The other dangerous consequence of including more and more stuff is the so called _widget-temptation_: If you include script.aculo.us you MUST show off and offer some weird toy someone _may_ use... well, Symfony seems to go in that direction, and someone compared it to component-driven frameworks like eZ Publish rather than more general-purposes projects. I'm sure the "admin generator":http://www.symfony-project.com/content/book/page/generator.html can be damn handy, but what happens if I'm a terribly annoying guy who'd like to tweak it and change it so that it fits _my_ needs? In Cake... well, there's nothing "official" included in the core, and when you find a third-party helper or component you feel you can take a look and poke around, extend it, or change it totally. It's all up to the developers and their needs: personally think that widgets are useful, but some times people like a bit more flexibility. - -So the overall impression of Symfony is that - regardless its arguable, self-proclaimed, _enterprise-ready_ status - it is rather complex, with a steep(er) learning scheme which doesn't justify the extra features. - -From the "My first Symfony project":http://www.symfony-project.com/tutorial/my_first_project.html tutorial: - -bq. So, the weblog will handle posts, and you will enable comments on them. Edit the file sf_sandbox/config/schema.xml and paste the following configuration: -<small> -<pre><code> -<?xml version="1.0" encoding="UTF-8"?> -<database name="propel" defaultIdMethod="native" noxsd="true"> - <table name="weblog_post" phpName="Post"> - <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> - <column name="title" type="varchar" size="255" /> - <column name="excerpt" type="longvarchar" /> - <column name="body" type="longvarchar" /> - <column name="created_at" type="timestamp" /> - </table> - - <table name="weblog_comment" phpName="Comment"> - <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> - <column name="post_id" type="integer" required="true" /> - <foreign-key foreignTable="weblog_post"> - <reference local="post_id" foreign="id"/> - </foreign-key> - <column name="author" type="varchar" size="255" /> - <column name="email" type="varchar" size="255" /> - <column name="body" type="longvarchar" /> - <column name="created_at" type="timestamp" /> - </table> -</database> -</code></pre> -</small> -This code is longer to read than to explain: It describes two tables Post and Comment. - -NO! Sorry, no. This is NOT simple. It is logic, clear and makes perfect sense, it's not that I'm retarded and I can't write or read XML files, it's just unnecessary. You create this and then call the slave-script to create the model and the corresponding database table... This is exactly the _enterprise_ way of doing things CakePHP made me forget. _Convention over configuration_. Not hundreds of configuration files. - -But there's more: you can even configure your views with some simple @.yml@ (!) file: -<pre><code> -default: - http_metas: - content-type: text/html; charset=utf-8 - metas: - title: The best weblog ever - robots: index, follow - description: symfony project - keywords: symfony, project - language: en -</code></pre> - -Sure, it's good. It helps, and it's certainly useful, but I'd rather code a custom component to do the same thing with a few arrays. Again, this is arguable. -Validation is done through .yml files, and you can configure your administrator backend through a .yml file too! Cake has .ini-based ACL, and that's about it: if I don't want to use them I don't use them. -Clearly you probably don't have to edit all settings in the configuration files, but I just don't like the approach, personally. - -Oddly enough, Symfony's slogan seems to be "professional web tools for lazy folks"... - +CakePHP is THE perfect PHP framework, so _we_ don't need anything else. Oh well, no. I personally love CakePHP, but I do believe other PHP frameworks can be interesting and maybe even useful, so today I thought I'd have a look at the "Simfony Project":http://base--/bookmarks/view/simfony/. This framework seems to be mentioned here and there on the Net in many different ways, someone said it can do wonders, some said it's more advanced, others said something like _"qcodo sucks.. cake stinks.. symfony rocks!!!!!"_, so it OUGHT TO be pretty cool, definitely. + +!<http://base--/img/pictures/symfony.gif! _Know thy enemy_ someone said (OK, bad joke), so let's have a look at this interesting alternative to CakePHP. _No dude, not another MVC-like, pseudo-Rails, AJAX-worshipping framework!_ Yes, another one. Actually Symfony is more than that: while people _can_ say CakePHP is similar to RoR for some features and for the strong MVC architecture, Symfony chose another road. Yes, MVC is still there, but the first thing I noticed after reading their "beginners' tutorial":http://www.symfony-project.com/tutorial/my_first_project.html was that one of the things which Symfony seems to use quite regularly (and Cake doesn't)is code generators. Things like executing @symfony propel-build-sql@ or even @symfony propel-generate-crud frontend post Post@ from command line to generate your code automagically, which CakePHP - except for our little _bake_ script - doesn't use. +_See? Simfony is MUCH better and MUCH more advanced than Cake!_ No, hang on a minute... I just listed one thing which Symfony has more than Cake, is there any more? Yes, there is, for now: i18n - internationalization. Symfony comes with native multi-lingual support and Cake doesn't - yet - although there are rumors that i18n for Cake 2.0 is _almost done_. This is not speculation, re-read the sentence: First off I'm referring to Cake _2.0_ (which means it will take a while) and also I read it in the "Cake 2.0 ToDo List":https://trac.cakephp.org/wiki/Proposals/2.0ToDoList. + +One of the most recurring and yet pointless critiques to CakePHP from Symfony enthusiasts is that the sites developed with CakePHP look terrible. I perfectly agree, look at "this":http://www.h3rald.com/ and tell me if the developer is not a complete and hopeless idiot when it comes to design and look 'n' feel! +I do agree that some CakePHP sites (mine, mainly) don't look too good, and probably the Cake Software Foundation should pay me to put it offline. I also agree that the Symfony website looks nice and is more pleasant to the eye than CakePHP's, but I do hope that the old "design contest" doesn't get forgotten... + +!>http://base--/img/pictures/askeet.gif! The Symfony team also did something truly remarkable: a comprehensive tutorial, an advent calendar, some great free source code to download and a fully functional Web 2.0-compliant online application _all in one_. I'm referring to "Askeet":http://base--/bookmarks/view/askeet/, a Symfony-powered website which has been built from scratch using the framework and its development is well documented in "twenty-four tutorials":http://www.symfony-project.com/askeet. In one move these guys made an interesting website, some useful documentation and self promotion... what can I say: for next Christmas we'd better chain PHPnut, gwoo, nate & the others to their chairs, close them in a small room and force them to code something like that in twenty-four days. +If I were to mention something which Symfony did well I'd certainly say the "documentation":http://www.symfony-project.com/content/documentation.html. Screencasts, tutorials, advent calendars, a book, a wiki, API etc. etc. All done, and all good, I must admit that. The good news is that CakePHP is slowly catching up, and now the "manual":http://manual.cakephp.org looks pretty decent. + +OK, enough flattering and let's talk about something I didn't like about Symfony. I downloaded the thing and it turns out it's 1.2MB in size, _a hell of a framework!_ After extracting the beast I had a look inside and found three directories: @data@, @lib@ and @bin@. Not bad. I opened @bin@ and found the three magic symfony scripts, alright; I opened @data@ and found nine directories, I opened @lib@ (the real deal) and found 25 directories! These guys maybe never heard of something called _"an organized directory structure"_, or perhaps I'm just too used to Cake's logic and essentiality. +Browsing around I found something like 247 .dat files defining country names and currencies in all the languages of the world, script.aculo.us and prototype libraries, javascript calendars and other wonders... Weeeeheee! +The good thing is that Symfony seems to include pretty much everything you'd ever need, the bad thing is that _personally_ I will never use any of the thirteen Chinese-related .dat files in th i18n directory. This philosophy is exactly the opposite to Cake: at first i got pissed off when I noticed that CakePHP doesn't include prototype by default, but then I realized that if they started include _everything_ you _might_ need _someday_ we'd end up like... like Symfony, with 1.2MB of stuff 500KB of which - at least - will most likely not be of any use for the average developers. + +The other dangerous consequence of including more and more stuff is the so called _widget-temptation_: If you include script.aculo.us you MUST show off and offer some weird toy someone _may_ use... well, Symfony seems to go in that direction, and someone compared it to component-driven frameworks like eZ Publish rather than more general-purposes projects. I'm sure the "admin generator":http://www.symfony-project.com/content/book/page/generator.html can be damn handy, but what happens if I'm a terribly annoying guy who'd like to tweak it and change it so that it fits _my_ needs? In Cake... well, there's nothing "official" included in the core, and when you find a third-party helper or component you feel you can take a look and poke around, extend it, or change it totally. It's all up to the developers and their needs: personally think that widgets are useful, but some times people like a bit more flexibility. + +So the overall impression of Symfony is that - regardless its arguable, self-proclaimed, _enterprise-ready_ status - it is rather complex, with a steep(er) learning scheme which doesn't justify the extra features. + +From the "My first Symfony project":http://www.symfony-project.com/tutorial/my_first_project.html tutorial: + +bq. So, the weblog will handle posts, and you will enable comments on them. Edit the file sf_sandbox/config/schema.xml and paste the following configuration: +<small> +<pre><code> +<?xml version="1.0" encoding="UTF-8"?> +<database name="propel" defaultIdMethod="native" noxsd="true"> + <table name="weblog_post" phpName="Post"> + <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> + <column name="title" type="varchar" size="255" /> + <column name="excerpt" type="longvarchar" /> + <column name="body" type="longvarchar" /> + <column name="created_at" type="timestamp" /> + </table> + + <table name="weblog_comment" phpName="Comment"> + <column name="id" type="integer" required="true" primaryKey="true" autoIncrement="true" /> + <column name="post_id" type="integer" required="true" /> + <foreign-key foreignTable="weblog_post"> + <reference local="post_id" foreign="id"/> + </foreign-key> + <column name="author" type="varchar" size="255" /> + <column name="email" type="varchar" size="255" /> + <column name="body" type="longvarchar" /> + <column name="created_at" type="timestamp" /> + </table> +</database> +</code></pre> +</small> +This code is longer to read than to explain: It describes two tables Post and Comment. + +NO! Sorry, no. This is NOT simple. It is logic, clear and makes perfect sense, it's not that I'm retarded and I can't write or read XML files, it's just unnecessary. You create this and then call the slave-script to create the model and the corresponding database table... This is exactly the _enterprise_ way of doing things CakePHP made me forget. _Convention over configuration_. Not hundreds of configuration files. + +But there's more: you can even configure your views with some simple @.yml@ (!) file: +<pre><code> +default: + http_metas: + content-type: text/html; charset=utf-8 + metas: + title: The best weblog ever + robots: index, follow + description: symfony project + keywords: symfony, project + language: en +</code></pre> + +Sure, it's good. It helps, and it's certainly useful, but I'd rather code a custom component to do the same thing with a few arrays. Again, this is arguable. +Validation is done through .yml files, and you can configure your administrator backend through a .yml file too! Cake has .ini-based ACL, and that's about it: if I don't want to use them I don't use them. +Clearly you probably don't have to edit all settings in the configuration files, but I just don't like the approach, personally. + +Oddly enough, Symfony's slogan seems to be "professional web tools for lazy folks"... + It all depends on what you need. For _my_ needs I chose CakePHP, and "here's why":https://trac.cakephp.org/wiki/Cake/About.
M content/articles/26.textilecontent/articles/26.textile

@@ -12,125 +12,125 @@ - frameworks

type: article toc: true ----- -When I first tried Ruby on Rails I was literally amazed by the _generator_ script. Yes, I was young and inexperienced then (six/seven months ago), but you must admit that getting a controller, a model, all the basic views generated automatically by - -@rails script/generator scaffold Posts@ - -is not a bad thing. Especially if the same script allows you to create model, views and controller separately and other things. "Symfony":http://www.symfony-project.com/ and PHP on Trax already tried to port this functionalities, with mixed results. What about Cake? Oh well, yes, we do have something like that... something rather different, but still something: the @bake.php@ script. -This cute little thing is located in the @cake/scripts/@ folder and can be used - hear, hear - from command line. You can run Ruby and Perl scripts, so yes, you can actually run PHP from command line, although it's not its primary purpose. - -!http://base--/img/pictures/bake.jpg! - -Cool then, let's open a *nix shell, Windows command prompt, etc. etc., go into the @cake/scripts/@ folder and run: - -@php bake.php@ - -Assuming that the php executable is in your _PATH_ environment variable - if not, either you add it or you'll have to type something like: - -@D:SERVERphpphp.exe bake.php@ - -depending on where your php executable is. You'll be be greeted by a "CAKEPHP BAKE" text, and then you'll be asked a few questions. One thing to realize before proceeding any further: bake.php is _not_ a generator, not in the traditional "Rails" sense, anyway. It's rather a handy but more verbose dialogue-based configuration script - which will also generate _something_ eventually if you provide all the necessary details. -A different approach, which may be good or bad according to your taste: personally I think we should also have something faster to use, like a Rails generator, and I opened a "ticket":https://trac.cakephp.org/ticket/768 about it, but let's see what bake.php can do, for now. - -The answer is... nearly anything. It annoying enough to please, but if you follow its directions it can do a prettu decent job in the end, it's far from being sentient, but let's say it's smart enough for a script. First of all if you try it out on a fresh Cake install it will notice that you haven't configured your database yet, so it will ask for a hostname, username, password, database name etc. etc. and generate your @app/config/database.php@ for you, not a bad start. - -Once that's done - and it won't go on unless you configure a (MySQL only?) database - you can proceed with the rest. You can start creating either a controller, model or view; I tried a @Posts@ controller, for example. The script then asks quite a few questions: - -* The controller's name -* Whether it will use other models besides posts -* Whether you want to include any helper -* Whether you want to include any component -* Whether you want to generate the base CRUD methods - -Then finally it generates the damn thing. The result is good enough: - -<small> -<pre><code> -<?php -class PostsController extends AppController -{ - //var $scaffold; - var $name = 'Posts'; - - function index() - { - $this->set('data', $this->Post->findAll()); - } - - function add() - { - if(empty($this->params['data'])) - { - $this->render(); - } - else - { - if($this->Post->save($this->params['data'])) - { - $this->flash('Post saved.', '/posts/index'); - } - else - { - $this->render(); - } - } - } - - function edit($id) - { - if(empty($this->params['data'])) - { - $this->set('data', $this->Post->find('Post.id = ' . $id)); - } - else - { - if($this->Post->save($this->params['data'])) - { - $this->flash('Post saved.', '/posts/index'); - } - else - { - $this->set('data', $this->params['data']); - $this->validateErrors($this->Post); - $this->render(); - } - } - } - - function view($id) - { - $this->set('data', $this->Post->find('Post.id = ' . $id)); - } - - function delete($id) - { - $this->Post->del($id); - $this->redirect('/posts/index'); - } - - function postList() - { - $vars = $this->Post->findAll(); - foreach($vars as $var) - { - $list[$var['Post']['id']] = $var['Post']['name']; - } - - return $list; - } -} -?> -</code></pre> -</small> - -It's more or less the same with models and views: it will still ask a lot of questions and in the end generate the thing. -This behaviour is more advanced than a standard generator, you can include helpers and components already, if you want, but do you _really_ want that? For models it even asks if you want to include particular associations and validation rules! Personally, I'd rather a generator script which generates something _immediately_ and accepts maybe some parameters to further customization, like: - -@php bake.php scaffold Posts@ -@php bake.php controller Posts@ -@php bake.php model Posts@ -@php bake.php model Posts@ -@php bake.php controller Posts helper +Html -Time,Javascript@ -@php bake.php model Posts assoc +hasMany comments,tags@ - +When I first tried Ruby on Rails I was literally amazed by the _generator_ script. Yes, I was young and inexperienced then (six/seven months ago), but you must admit that getting a controller, a model, all the basic views generated automatically by + +@rails script/generator scaffold Posts@ + +is not a bad thing. Especially if the same script allows you to create model, views and controller separately and other things. "Symfony":http://www.symfony-project.com/ and PHP on Trax already tried to port this functionalities, with mixed results. What about Cake? Oh well, yes, we do have something like that... something rather different, but still something: the @bake.php@ script. +This cute little thing is located in the @cake/scripts/@ folder and can be used - hear, hear - from command line. You can run Ruby and Perl scripts, so yes, you can actually run PHP from command line, although it's not its primary purpose. + +!http://base--/img/pictures/bake.jpg! + +Cool then, let's open a *nix shell, Windows command prompt, etc. etc., go into the @cake/scripts/@ folder and run: + +@php bake.php@ + +Assuming that the php executable is in your _PATH_ environment variable - if not, either you add it or you'll have to type something like: + +@D:SERVERphpphp.exe bake.php@ + +depending on where your php executable is. You'll be be greeted by a "CAKEPHP BAKE" text, and then you'll be asked a few questions. One thing to realize before proceeding any further: bake.php is _not_ a generator, not in the traditional "Rails" sense, anyway. It's rather a handy but more verbose dialogue-based configuration script - which will also generate _something_ eventually if you provide all the necessary details. +A different approach, which may be good or bad according to your taste: personally I think we should also have something faster to use, like a Rails generator, and I opened a "ticket":https://trac.cakephp.org/ticket/768 about it, but let's see what bake.php can do, for now. + +The answer is... nearly anything. It annoying enough to please, but if you follow its directions it can do a prettu decent job in the end, it's far from being sentient, but let's say it's smart enough for a script. First of all if you try it out on a fresh Cake install it will notice that you haven't configured your database yet, so it will ask for a hostname, username, password, database name etc. etc. and generate your @app/config/database.php@ for you, not a bad start. + +Once that's done - and it won't go on unless you configure a (MySQL only?) database - you can proceed with the rest. You can start creating either a controller, model or view; I tried a @Posts@ controller, for example. The script then asks quite a few questions: + +* The controller's name +* Whether it will use other models besides posts +* Whether you want to include any helper +* Whether you want to include any component +* Whether you want to generate the base CRUD methods + +Then finally it generates the damn thing. The result is good enough: + +<small> +<pre><code> +<?php +class PostsController extends AppController +{ + //var $scaffold; + var $name = 'Posts'; + + function index() + { + $this->set('data', $this->Post->findAll()); + } + + function add() + { + if(empty($this->params['data'])) + { + $this->render(); + } + else + { + if($this->Post->save($this->params['data'])) + { + $this->flash('Post saved.', '/posts/index'); + } + else + { + $this->render(); + } + } + } + + function edit($id) + { + if(empty($this->params['data'])) + { + $this->set('data', $this->Post->find('Post.id = ' . $id)); + } + else + { + if($this->Post->save($this->params['data'])) + { + $this->flash('Post saved.', '/posts/index'); + } + else + { + $this->set('data', $this->params['data']); + $this->validateErrors($this->Post); + $this->render(); + } + } + } + + function view($id) + { + $this->set('data', $this->Post->find('Post.id = ' . $id)); + } + + function delete($id) + { + $this->Post->del($id); + $this->redirect('/posts/index'); + } + + function postList() + { + $vars = $this->Post->findAll(); + foreach($vars as $var) + { + $list[$var['Post']['id']] = $var['Post']['name']; + } + + return $list; + } +} +?> +</code></pre> +</small> + +It's more or less the same with models and views: it will still ask a lot of questions and in the end generate the thing. +This behaviour is more advanced than a standard generator, you can include helpers and components already, if you want, but do you _really_ want that? For models it even asks if you want to include particular associations and validation rules! Personally, I'd rather a generator script which generates something _immediately_ and accepts maybe some parameters to further customization, like: + +@php bake.php scaffold Posts@ +@php bake.php controller Posts@ +@php bake.php model Posts@ +@php bake.php model Posts@ +@php bake.php controller Posts helper +Html -Time,Javascript@ +@php bake.php model Posts assoc +hasMany comments,tags@ + Bah... just some random thoughts. How about custom-made generators ("Rails-inspired":http://wiki.rubyonrails.org/rails/pages/AvailableGenerators)?
M content/articles/27.textilecontent/articles/27.textile

@@ -11,57 +11,57 @@ - cakephp

type: article toc: true ----- -Right after my "last blog post":http://base--/blog/view/26 I decided to log on #cakephp on irc.freenode.org as usual, and gwoo pops in and says "h3raLd, you didn't review rdBaker yet!" -That's right, I didn't yet, so I may as well do it today. - -I remember hearing about rdBaker months ago, waaay before CakePHP 1.0, way before the RCs, I remember someone mentioning it on CakePHP user group in right after the bake.php script was created. _"How about having an online baking utility?"_ - and that's precisely what rdBaker is, a more PHP-ish version of bake.php, which runs like any other PHP scripts: in your browser. - -This cute little thing is obviously available for free on "CakeForge":http://cakeforge.org/frs/?group_id=13&release_id=74 and is part of "gwoo":http://www.rd11.com 's "rdOpenSource":http://cakeforge.org/projects/rdos/ project which includes various other Cake-powered applications. -I personally recommend new (and old) bakers to download them and play with them, try to understand how they were coded, because they can really teach you _a lot_ on how to code a CakePHP application or website properly. - -So anyway, get your copy of rdBaker, unzip it and have a look at the @README.txt@ file for the installation instructions: - -<quote> -1. Place rdBaker in the root along side /cake_install/app. -2. chmod /cake_install/rdBaker/tmp to 0777 -3. launch http://localhost/cake_install/rdBaker/ -</quote> - -Not too hard, innit? - -!http://base--/img/pictures/rdbaker.jpg! - -Good. So you try accessing something like @http://localhost/php/test/cakephp/cake_test/rdBaker/@ (that's on my own local WAMP server) and you'll get a nice page asking you to "supply your ingredients" via a simple form. -Unlike its command line cousin, rdBaker doesn't require you to fill in _all_ the fields, but just the full path to the save directory (which is normally already filled in) and of course the name of the model (Post, User, Comment). -Then you can select the type of output and choose whether you want to generate an empty controller, a scaffolded one or the _full_ option including all the most common CRUD(Create, Retrieve, Update, Delete) methods. -Finally - if you like - you can enter any association or valitation rules for your model, then press the _Bake it!_ button and voil&aacute;, in you'll find three directories (controllers, models and views) in your save directory containing all the MVC(Model View Controller) entities you need regarding a particular model: - -<pre><code> - rdBaker Result Array -( - [0] => notes_controller.php created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpcontrollers - [1] => note.php created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpmodels - [2] => index.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes - [3] => add.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes - [4] => edit.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes - [5] => view.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes -) -</code></pre> - -But there's more! By checking the appropriate checkbox, you can get all the stuff packed in a zip file! - -Not bad at all, and fast as well. - -Now the bad things... -The script works fine, but there's something which could be improved, perhaps: - -* If you choose to put everything in a zip file, the file will be named "baked_by_rdBaker.zip" - not a big deal, but maybe it could be personalized according to the model name entered. -* Regardless you want to add validation rules to your model or not, you'll _always_ find some validation rules for a _title_ and _body_ field. I checked and they are hardcoded in the template file (rdBaker/views/helpers/templates/full/model.txt): -<pre><code> - var $validate = array( - 'title'=>VALID_NOT_EMPTY, - 'body'=>VALID_NOT_EMPTY); -</code></pre> -* In the baked index.thtml view, there will always be a column named "Title". This, again, is hardcoded in the template. - -Other than these things, everything seems to work fine. A really nice script! +Right after my "last blog post":http://base--/blog/view/26 I decided to log on #cakephp on irc.freenode.org as usual, and gwoo pops in and says "h3raLd, you didn't review rdBaker yet!" +That's right, I didn't yet, so I may as well do it today. + +I remember hearing about rdBaker months ago, waaay before CakePHP 1.0, way before the RCs, I remember someone mentioning it on CakePHP user group in right after the bake.php script was created. _"How about having an online baking utility?"_ - and that's precisely what rdBaker is, a more PHP-ish version of bake.php, which runs like any other PHP scripts: in your browser. + +This cute little thing is obviously available for free on "CakeForge":http://cakeforge.org/frs/?group_id=13&release_id=74 and is part of "gwoo":http://www.rd11.com 's "rdOpenSource":http://cakeforge.org/projects/rdos/ project which includes various other Cake-powered applications. +I personally recommend new (and old) bakers to download them and play with them, try to understand how they were coded, because they can really teach you _a lot_ on how to code a CakePHP application or website properly. + +So anyway, get your copy of rdBaker, unzip it and have a look at the @README.txt@ file for the installation instructions: + +<quote> +1. Place rdBaker in the root along side /cake_install/app. +2. chmod /cake_install/rdBaker/tmp to 0777 +3. launch http://localhost/cake_install/rdBaker/ +</quote> + +Not too hard, innit? + +!http://base--/img/pictures/rdbaker.jpg! + +Good. So you try accessing something like @http://localhost/php/test/cakephp/cake_test/rdBaker/@ (that's on my own local WAMP server) and you'll get a nice page asking you to "supply your ingredients" via a simple form. +Unlike its command line cousin, rdBaker doesn't require you to fill in _all_ the fields, but just the full path to the save directory (which is normally already filled in) and of course the name of the model (Post, User, Comment). +Then you can select the type of output and choose whether you want to generate an empty controller, a scaffolded one or the _full_ option including all the most common CRUD(Create, Retrieve, Update, Delete) methods. +Finally - if you like - you can enter any association or valitation rules for your model, then press the _Bake it!_ button and voil&aacute;, in you'll find three directories (controllers, models and views) in your save directory containing all the MVC(Model View Controller) entities you need regarding a particular model: + +<pre><code> + rdBaker Result Array +( + [0] => notes_controller.php created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpcontrollers + [1] => note.php created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpmodels + [2] => index.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes + [3] => add.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes + [4] => edit.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes + [5] => view.thtml created and written. Look in D:SERVERwwwphptestcakephpcake_testtmpviews/notes +) +</code></pre> + +But there's more! By checking the appropriate checkbox, you can get all the stuff packed in a zip file! + +Not bad at all, and fast as well. + +Now the bad things... +The script works fine, but there's something which could be improved, perhaps: + +* If you choose to put everything in a zip file, the file will be named "baked_by_rdBaker.zip" - not a big deal, but maybe it could be personalized according to the model name entered. +* Regardless you want to add validation rules to your model or not, you'll _always_ find some validation rules for a _title_ and _body_ field. I checked and they are hardcoded in the template file (rdBaker/views/helpers/templates/full/model.txt): +<pre><code> + var $validate = array( + 'title'=>VALID_NOT_EMPTY, + 'body'=>VALID_NOT_EMPTY); +</code></pre> +* In the baked index.thtml view, there will always be a column named "Title". This, again, is hardcoded in the template. + +Other than these things, everything seems to work fine. A really nice script!
M content/articles/29.textilecontent/articles/29.textile

@@ -12,12 +12,12 @@ - writing

type: article toc: true ----- -Yes, I know, I've been slaking a little bit, and haven't posted on my blog in a while. Well, I actually _didn't_ slack at all in these days getting ready to start my job, looking for a damn fitted kitchen for my house and... writing more articles. - -Nothing special, and nothing too technical, to be honest, but equally interesting. First of all I updated my "An IE Lover's Guide to Firefox":http://base--/articles/view/ie-lovers-guide-to-firefox/ a little bit and people at SpreadFirefox.com and "FirefoxFacts":http://www.firefoxfacts.com/ liked it. Glad to hear that, unfortunately some guy who wrote about "Firefox Myths":http://mywebpages.comcast.net/SupportCD/FirefoxMyths.html wasn't too impressed, but at any rate he read it anyway. - -OK, this wasn't a new article at all, but "this one":http://base--/articles/view/the-internet-philosopher/ is fresh, at least. It's about a Swedish guy who decided to emigrate to India pursuing an ideal: writing for his own opinions and ideas. And he gets paid for that too! After reading more about him on his "website":http://base--/bookmarks/view/ropix I decided to write something about him. An interesting and rather unusual read. Pity that some sections of his homepage are in Swedish only. - -Finally, yesterday I felt inspired and decided to write "another roundup":http://base--/articles/view/social-bookmarking-services featuring ten popular social bookmarking websites. Trying all those services was fun, with a few exceptions of course. The bad news is that there are already various reviews about social bookmarking sites and thus the Digg folk doesn't seem to be particularly interested in "reading another one":http://digg.com/software/Ten_popular_social_bookmarking_services_reviewed, but hey! After all I can't expect of getting dugg for every roundup I write, can't I? - +Yes, I know, I've been slaking a little bit, and haven't posted on my blog in a while. Well, I actually _didn't_ slack at all in these days getting ready to start my job, looking for a damn fitted kitchen for my house and... writing more articles. + +Nothing special, and nothing too technical, to be honest, but equally interesting. First of all I updated my "An IE Lover's Guide to Firefox":http://base--/articles/view/ie-lovers-guide-to-firefox/ a little bit and people at SpreadFirefox.com and "FirefoxFacts":http://www.firefoxfacts.com/ liked it. Glad to hear that, unfortunately some guy who wrote about "Firefox Myths":http://mywebpages.comcast.net/SupportCD/FirefoxMyths.html wasn't too impressed, but at any rate he read it anyway. + +OK, this wasn't a new article at all, but "this one":http://base--/articles/view/the-internet-philosopher/ is fresh, at least. It's about a Swedish guy who decided to emigrate to India pursuing an ideal: writing for his own opinions and ideas. And he gets paid for that too! After reading more about him on his "website":http://base--/bookmarks/view/ropix I decided to write something about him. An interesting and rather unusual read. Pity that some sections of his homepage are in Swedish only. + +Finally, yesterday I felt inspired and decided to write "another roundup":http://base--/articles/view/social-bookmarking-services featuring ten popular social bookmarking websites. Trying all those services was fun, with a few exceptions of course. The bad news is that there are already various reviews about social bookmarking sites and thus the Digg folk doesn't seem to be particularly interested in "reading another one":http://digg.com/software/Ten_popular_social_bookmarking_services_reviewed, but hey! After all I can't expect of getting dugg for every roundup I write, can't I? + That's about it. And what about the CakePHP article I promised "long ago":http://base--/blog/view/13/ to CakePHP beginners? It's done, written and ready to be published! Unfortunately the magazine I submitted it to is taking quite a bit to review it and - most important - to tell me whether they'll publish it or not. Let's hope for the best.
M content/articles/31.textilecontent/articles/31.textile

@@ -12,84 +12,84 @@ - tutorial

type: article toc: true ----- -Tutorials are great, articles are helpful, manuals are essential and the API is your best friend, but there's still something missing there... Unfortunately podcasts are not yet available, but the CakePHP team is proud to announce the creation of two "screencasts":http://cakephp.org/pages/screencasts in an effort to help new bakers familiarizing with CakePHP's concepts. -This is old news now, the screencasts section came together with the "site overhaul":http://base--/blog/view/24 but I only got a chance to take a look at them (one of them only, to be totally honest) recently, and so here's a spoil... erhm, a _detailed_ description of John Anderson's screencast about the "Blog Tutorial":http://manual.cakephp.org/chapter/18. - -!<http://base--/img/pictures/CakePHP_1.0.png! - -There's something I'll never do: a screencast. Recording every mouse movement, every word or piece of code typed in half an hour? No way! And what happens if I mistype something? People will keep pointing out the fact that I was starting to type @</h2>@ to close a @</h1>@ tag, or that I waited an eternity like five full seconds before deciding what to do. I guess I'm quite paranoid... John did it, and he did it well. Using just bash, vim and Safari he was able to record an excellent 30-minutes screencast featuring the blog tutorial. -Before people start complaining that the blog tutorial should be completed in fifteen minutes, keep in mind that John's screencast is meant to show everything clearly to new users, via a trial and error approach if necessary. - -Here's what happens in the screencast, nothing new if your read the blog tutorial, but still interesting, especially if you're new to Cake. Unfortunately there's no audio, but the video talks by itself and John will occasionally write some comments here and there. - -_*0:01 - 5:00*_ - -* SVN checkout to get the latest CakePHP version -* make app/tmp writeable -* execute queries (table posts) -* insert some test posts -* create database config file: modify 3 lines of database.php -* CakePHP is now able to connect to database -* create app/models/post.php model -* create posts_controller.php [John uses Vim as preferred PHP editor] -* try to access /posts/, error: missing method index() -* create function index() in postscontroller.php able to fetch posts -* refresh, missing index view -* create index.thtml displaying the raw posts array - -_*5:01 - 10:00*_ - -* index.thtml: display posts with table and foreach iteration -* add hyperlink in index.thtml to view posts -* access /posts/view/1 -> missing method view() -* add view() method in postscontroller.php -* create view.thtml to display -* Raw view post with pre tags and print_r() - -_*10:01 - 15:00*_ - -* display post properly with @<p>@ tags -* add link in index.thtml to add a post -* missing method -> add() -* add add() in controller -* missing view [trial and error, trial and error...] -* create add.thtml, using the Html Helper to create input tags easily - -_*15:01 - 20:00*_ - -* add.thtml (continued) -* testing add form -* view added post -* start adding another (for validation purposes) [stop before submitting] -* modify post.php model, valid_not_empty for title and body -* modify view to trigger validation @$html->tagErrorMsg()@ -* test: no body, message displayed -* test: no title, message displayed -* add another post, everything works -* [pause: five seconds] -* back to the controller, create delete() function - -_*20:01 - 25:00*_ - -* delete function (continued) -* add "Actions" table column in index.thtml, with link delete post -* delete two posts -* take a breath -* add link in index.thtml to edit post -* refresh page, mouse over edit links... -* back to controller, add edit function [we learnt abour CakePHP errors alright] - -_*25:01 - 27:38*_ - -* pause, 5 sec [should I write edit.thtml from scratch] -* copy add.thtml as edit.thtml -* change just the title and form action -* [pause: 3 sec] -* test edit link -* edit a post -* move around, switch views -* edit config/routes.php -* set default route to posts/index -* refresh - all done! - -That's it. All in a 40MB .mov file. Download it from "here":http://www.archive.org/download/CakePHP_BlogTutorialJohn/BlogTutorial.mov. +Tutorials are great, articles are helpful, manuals are essential and the API is your best friend, but there's still something missing there... Unfortunately podcasts are not yet available, but the CakePHP team is proud to announce the creation of two "screencasts":http://cakephp.org/pages/screencasts in an effort to help new bakers familiarizing with CakePHP's concepts. +This is old news now, the screencasts section came together with the "site overhaul":http://base--/blog/view/24 but I only got a chance to take a look at them (one of them only, to be totally honest) recently, and so here's a spoil... erhm, a _detailed_ description of John Anderson's screencast about the "Blog Tutorial":http://manual.cakephp.org/chapter/18. + +!<http://base--/img/pictures/CakePHP_1.0.png! + +There's something I'll never do: a screencast. Recording every mouse movement, every word or piece of code typed in half an hour? No way! And what happens if I mistype something? People will keep pointing out the fact that I was starting to type @</h2>@ to close a @</h1>@ tag, or that I waited an eternity like five full seconds before deciding what to do. I guess I'm quite paranoid... John did it, and he did it well. Using just bash, vim and Safari he was able to record an excellent 30-minutes screencast featuring the blog tutorial. +Before people start complaining that the blog tutorial should be completed in fifteen minutes, keep in mind that John's screencast is meant to show everything clearly to new users, via a trial and error approach if necessary. + +Here's what happens in the screencast, nothing new if your read the blog tutorial, but still interesting, especially if you're new to Cake. Unfortunately there's no audio, but the video talks by itself and John will occasionally write some comments here and there. + +_*0:01 - 5:00*_ + +* SVN checkout to get the latest CakePHP version +* make app/tmp writeable +* execute queries (table posts) +* insert some test posts +* create database config file: modify 3 lines of database.php +* CakePHP is now able to connect to database +* create app/models/post.php model +* create posts_controller.php [John uses Vim as preferred PHP editor] +* try to access /posts/, error: missing method index() +* create function index() in postscontroller.php able to fetch posts +* refresh, missing index view +* create index.thtml displaying the raw posts array + +_*5:01 - 10:00*_ + +* index.thtml: display posts with table and foreach iteration +* add hyperlink in index.thtml to view posts +* access /posts/view/1 -> missing method view() +* add view() method in postscontroller.php +* create view.thtml to display +* Raw view post with pre tags and print_r() + +_*10:01 - 15:00*_ + +* display post properly with @<p>@ tags +* add link in index.thtml to add a post +* missing method -> add() +* add add() in controller +* missing view [trial and error, trial and error...] +* create add.thtml, using the Html Helper to create input tags easily + +_*15:01 - 20:00*_ + +* add.thtml (continued) +* testing add form +* view added post +* start adding another (for validation purposes) [stop before submitting] +* modify post.php model, valid_not_empty for title and body +* modify view to trigger validation @$html->tagErrorMsg()@ +* test: no body, message displayed +* test: no title, message displayed +* add another post, everything works +* [pause: five seconds] +* back to the controller, create delete() function + +_*20:01 - 25:00*_ + +* delete function (continued) +* add "Actions" table column in index.thtml, with link delete post +* delete two posts +* take a breath +* add link in index.thtml to edit post +* refresh page, mouse over edit links... +* back to controller, add edit function [we learnt abour CakePHP errors alright] + +_*25:01 - 27:38*_ + +* pause, 5 sec [should I write edit.thtml from scratch] +* copy add.thtml as edit.thtml +* change just the title and form action +* [pause: 3 sec] +* test edit link +* edit a post +* move around, switch views +* edit config/routes.php +* set default route to posts/index +* refresh - all done! + +That's it. All in a 40MB .mov file. Download it from "here":http://www.archive.org/download/CakePHP_BlogTutorialJohn/BlogTutorial.mov.
M content/articles/32.textilecontent/articles/32.textile

@@ -12,30 +12,30 @@ - tools

type: article toc: true ----- -Since in these days (and even more in near future) I'm really writing a lot I thought it would be good to share my thoughts on some writing programs and tools I started using for writing these blog posts, articles, and more. - -I'm going to examine a few applications which I find useful for different tasks, since I recently came to the conclusion that I cannot use the same editor for everything I write: some magazines require a .doc document, others want just plain text, my site uses the truly excellent "textile":http://http://www.textism.com/ markup, zZine Magazine used BBcode, other site use their own "proprietary" styles and so on. One could just give up and use Notepad - or better, "Notepad++":http://notepad-plus.sourceforge.net/uk/site.htm - for everything, while someone else like me might opt for various applications according to the task. - -One of the few essential requirements for a _writer_ is some spell checking functionality. Sad but true, this is enough to leave the most popular multi-purpose programming editor out: programmers don't need a spell checker, a highlighter for their favourite language is more than enough. -I will not mention all the applications I tried to find the Perfect Editor, and I'll just focus on the programs I ended up using in the end. Some may be well known, others may not, anyway, here we go. - -!<http://base--/img/pictures/wp/bill.jpg! - -"Word 2007 Beta 2":http://www.microsoft.com/office/preview/default.mspx - Yes, I know that OpenOffice is free and OO Writer works great, but perhaps at work you'll be asked to use MS Word. Some editors may require that as well, and their templates may not be correctly rendered by OpenOffice, so in the end you'll still have to use Redmond's most popular Word Processor - _if you have it_. If you got it with your laptop (I didn't) or your auntie gave you 300$ to buy it you're all set, but if you don't? -Oh well, yes, OpenOffice is the right choice perhaps, but at least until February 2007 uncle Bill lets you try the bleeding (quite literally) edge of all the commercial word processors: Word 2007 beta 2. You can download the whole Office Suite (and more) for free, "run":http://www.microsoft.com/office/preview/beta/overview.mspx. I did it yesterday and well, it's nice to try this brand-new piece of eye candy. the interface is completely new, you won't find the usual drop down menu but with some imagination you'll manage to save/create/open a new document by clicking on the big roundy Office logo on the top left corner. More user friendly? Perhaps, once you get used to it. It STILL doesn't have a tabbed interface, so you STILL have to clutter your taskbar if you want to keep more than one document open. -At any rate, it does the job, exactly in the same way as it did in the previous versions. -I use it if people ask me to, and for writing stuff which doesn't need to be formatted with a particular markup or style but rather look nice and have pictures embedded. - -!>http://base--/img/pictures/wp/writely.gif! - -"Writely":http://base--/bookmarks/view/writely/ - Now this is much more fun. A _online_, AJAX-powered word processor recently acquired by Google. IT's currently in closed beta, but I was lucky enough to get an account before they closed registrations and I can invite people to use it. -It's nice. It's nice if you have to work with MS Word documents or create PDF files, and it supports the most essential features offered by desktop word processors, plus some more, really convenient functionalities. -It can import MS Word documents pretty well and also any kind of text file, so that you can edit it online anytime and anywhere. You can star, tag, archive, edit and delete your documents in a really easy way and - which is one of its killer features - you can grant access to certain documents to collaborators for editing or viewing. Other word processors out there offer similar features, but Writely is by far the nicest to use and perhaps even the more advanced. I recently wrote a couple of articles about CakePHP (coming soon-ish to some online magazines near you) and then gave access to gwoo and PhpNut for editing, so that they could check the code snippets, in particular: it was a success. Magazine editors were happy and impressed as well. -Another really wonderful feature is _version support_. I discovered this recently: when you edit a document and save it, Writely automatically creates a new version of it, storing the old ones as well, so that you can even compare them to highlight differences if you wish: a great feature to keep track of the editing process and know exactly who edited which. When I noticed it that was it, Writely has become my online _repository_ for my articles and writings. - -!<http://base--/img/pictures/wp/cream.png! - -"Cream":http://base--/bookmarks/view/cream-editor - I discovered this a while ago, and it's perhaps the most multi-purpose editor out there. It's built on top of Vim (respect+) but it has a friendlier interface by default, and that's exactly what I'm using right now for typing this post. The reasons are simple: it supports ANY kind of file format and any character encoding. There's an highlighter for everything, including BBcode and textile, and of course you can make your own. It also includes spell checking on-the-fly which is missing in many simple editors. -Whenever I have to write something which requires some particular formatting or markup I use Cream, it does the job pretty well, and whenever I feel brave I can always switch to "expert" view and challenge my vi skills ;) - +Since in these days (and even more in near future) I'm really writing a lot I thought it would be good to share my thoughts on some writing programs and tools I started using for writing these blog posts, articles, and more. + +I'm going to examine a few applications which I find useful for different tasks, since I recently came to the conclusion that I cannot use the same editor for everything I write: some magazines require a .doc document, others want just plain text, my site uses the truly excellent "textile":http://http://www.textism.com/ markup, zZine Magazine used BBcode, other site use their own "proprietary" styles and so on. One could just give up and use Notepad - or better, "Notepad++":http://notepad-plus.sourceforge.net/uk/site.htm - for everything, while someone else like me might opt for various applications according to the task. + +One of the few essential requirements for a _writer_ is some spell checking functionality. Sad but true, this is enough to leave the most popular multi-purpose programming editor out: programmers don't need a spell checker, a highlighter for their favourite language is more than enough. +I will not mention all the applications I tried to find the Perfect Editor, and I'll just focus on the programs I ended up using in the end. Some may be well known, others may not, anyway, here we go. + +!<http://base--/img/pictures/wp/bill.jpg! + +"Word 2007 Beta 2":http://www.microsoft.com/office/preview/default.mspx - Yes, I know that OpenOffice is free and OO Writer works great, but perhaps at work you'll be asked to use MS Word. Some editors may require that as well, and their templates may not be correctly rendered by OpenOffice, so in the end you'll still have to use Redmond's most popular Word Processor - _if you have it_. If you got it with your laptop (I didn't) or your auntie gave you 300$ to buy it you're all set, but if you don't? +Oh well, yes, OpenOffice is the right choice perhaps, but at least until February 2007 uncle Bill lets you try the bleeding (quite literally) edge of all the commercial word processors: Word 2007 beta 2. You can download the whole Office Suite (and more) for free, "run":http://www.microsoft.com/office/preview/beta/overview.mspx. I did it yesterday and well, it's nice to try this brand-new piece of eye candy. the interface is completely new, you won't find the usual drop down menu but with some imagination you'll manage to save/create/open a new document by clicking on the big roundy Office logo on the top left corner. More user friendly? Perhaps, once you get used to it. It STILL doesn't have a tabbed interface, so you STILL have to clutter your taskbar if you want to keep more than one document open. +At any rate, it does the job, exactly in the same way as it did in the previous versions. +I use it if people ask me to, and for writing stuff which doesn't need to be formatted with a particular markup or style but rather look nice and have pictures embedded. + +!>http://base--/img/pictures/wp/writely.gif! + +"Writely":http://base--/bookmarks/view/writely/ - Now this is much more fun. A _online_, AJAX-powered word processor recently acquired by Google. IT's currently in closed beta, but I was lucky enough to get an account before they closed registrations and I can invite people to use it. +It's nice. It's nice if you have to work with MS Word documents or create PDF files, and it supports the most essential features offered by desktop word processors, plus some more, really convenient functionalities. +It can import MS Word documents pretty well and also any kind of text file, so that you can edit it online anytime and anywhere. You can star, tag, archive, edit and delete your documents in a really easy way and - which is one of its killer features - you can grant access to certain documents to collaborators for editing or viewing. Other word processors out there offer similar features, but Writely is by far the nicest to use and perhaps even the more advanced. I recently wrote a couple of articles about CakePHP (coming soon-ish to some online magazines near you) and then gave access to gwoo and PhpNut for editing, so that they could check the code snippets, in particular: it was a success. Magazine editors were happy and impressed as well. +Another really wonderful feature is _version support_. I discovered this recently: when you edit a document and save it, Writely automatically creates a new version of it, storing the old ones as well, so that you can even compare them to highlight differences if you wish: a great feature to keep track of the editing process and know exactly who edited which. When I noticed it that was it, Writely has become my online _repository_ for my articles and writings. + +!<http://base--/img/pictures/wp/cream.png! + +"Cream":http://base--/bookmarks/view/cream-editor - I discovered this a while ago, and it's perhaps the most multi-purpose editor out there. It's built on top of Vim (respect+) but it has a friendlier interface by default, and that's exactly what I'm using right now for typing this post. The reasons are simple: it supports ANY kind of file format and any character encoding. There's an highlighter for everything, including BBcode and textile, and of course you can make your own. It also includes spell checking on-the-fly which is missing in many simple editors. +Whenever I have to write something which requires some particular formatting or markup I use Cream, it does the job pretty well, and whenever I feel brave I can always switch to "expert" view and challenge my vi skills ;) + That's pretty much what I use for writing articles, posts, and other documents... I tried other alternatives like RoughDraft or similar programs but I'm now really happy with these three applications. Commercial "writer's programs"? There are some out there, but who wants to spend 40$ or more for something which offer less than MS Word when you can use OpenOffice and Writely for free?
M content/articles/34.textilecontent/articles/34.textile

@@ -14,72 +14,72 @@ - review

type: article toc: true ----- -Someone recently added a comment to my article about "Rails-inspired PHP frameworks":http://base--/articles/rails-inspired-php-frameworks/ pointing out that I forgot another Rails-like framework, in my round-up. He obviously posted a link to this rather mysterious Rails port in PHP and spam or not, I'd like to thank this guy for letting me know of the existance of "Akelos":http://base--/bookmarks/view/akelos-framework, a new PHP framework which seems simply too good to be true. - -!<http://base--/img/pictures/frameworks/akelos_framework.png! - -Let me just spend a few words more before writing more about it though. First off, it's not available yet. OR at least it doesn't seem to be: the author is planning to release his work to the Open Source community but... well, he's a bit concerned about the current "PHP Framework War": he wouldn't like to end up like "Subway":http://subway.python-hosting.com/ or just be slagged off by those merciless reviewers who enjoy write round-ups and comparisons about frameworks. "Bermi Ferrer":http://www.bermi.org/page/about_me is "just" a talented PHP developer who decided to create his own framework and he really enjoyed doing so, nothing more, nothing less. - -_"I considered other PHP ports of Ruby on Rails, but we could not find all we needed on them. One feature that I needed on the core was internationalization and Unicode support, so I decided to roll my own framework trying to keep most of the original rails interface so most of its documentation could work for it."_ - -Where did I hear that? Nothing new: it's always the same story of frameworks not being as we want them to be etc., it's human. And yes, it's _*another*_ attempt to port Ruby on Rails to PHP, and a damn good one -- or so it seems. - -<small>Before proceeding any further, I'd like to write a short warning for a few people who may or may not want to pop in and start commenting about the Rails-is-better-than-any-PHP-clone issue: *If I see a single comment slagging off this framework (or any other) only because it's a port of Rails to PHP, it will be deleted, may it be David Heinemeier Hansson himself*. Stop it, no seriously, I think it will be counter productive for Rails in the end: I really like RoR and I love the way it works, and yes, I think Ruby is definitely the best language to do that sort of things, EVERYBODY KNOWS THAT. Please, please, save us poor PHP developers the usual preaching.</small> - -!>http://base--/img/pictures/frameworks/bermi_ferrer.png! - -Right, back to Akelos now. Curious as I am I immediately checked out the official page and all i found was a pretty long list of features which made me dribble, literally... ooops! - -Let's just quote the most juicy ones, shall we? - -Active Record ["Model"] - -* Associations -* Callbacks -* *Transactions* -* *Finders* [ @$Project->findFirstBy('language AND start_year:greater', 'PHP', '2004');@ ] -* Versioning -* ... - -Action Controller ["Controller"] - -* Filters -* Pagination -* Mime Type -* Mime Response -* *Code Generation* -* Response handler -* ... - -Action View ["View"] - -* *Templates (using Sintags)* -* Web 2.0 javascript using prototype and script.aculo.us -* Helpers -* Partials -* *Template Compilers* -* ... - -And then more Akelos-only goodies: - -* *Multilingual Models and Views* -* *Locale alias integrated on URLS (example.com/spanish will load the es_ES locale)* -* Database migrations using DB Designer files -* *Pure PHP support for Unicode (no extensions required)* -* *Unit Tested source code* -* Code Generators -* Built in XHTML validator -* Automated locale management -* *Clean separation from HTML and Javascript using CSS event selectors.* -* Ajax file uploads -* *AFLAX integration* -* Dojo Rich Text Editor -* Format converters -* File handling using SFTP for shared host running Apache as user nobody (as most CPanel server do) -* *Distributed sessions using databases* - -Impressed? I was, honest. And I'm talking as a CakePHP fanatic here, and I must say that if this framework can really offer all this _and_ -- and this is what really matters -- is also as simple as Cake to learn and well performing... well, this is definitely going to be quite a promising player in the "PHP Framework War" (but is not a real war, is it?), although the author is quite worried about that: - -_"I'm also concerned about the PHP Framework war, I don't want to play that game. Building this Framework was a great experience, it works great for me and it has helped me to become a better programmer so I don't want to spend my time discussing about if this is better or not than other solutions. That's the reason I'll first look for great developers interested in the Framework to help me releasing it."_ - +Someone recently added a comment to my article about "Rails-inspired PHP frameworks":http://base--/articles/rails-inspired-php-frameworks/ pointing out that I forgot another Rails-like framework, in my round-up. He obviously posted a link to this rather mysterious Rails port in PHP and spam or not, I'd like to thank this guy for letting me know of the existance of "Akelos":http://base--/bookmarks/view/akelos-framework, a new PHP framework which seems simply too good to be true. + +!<http://base--/img/pictures/frameworks/akelos_framework.png! + +Let me just spend a few words more before writing more about it though. First off, it's not available yet. OR at least it doesn't seem to be: the author is planning to release his work to the Open Source community but... well, he's a bit concerned about the current "PHP Framework War": he wouldn't like to end up like "Subway":http://subway.python-hosting.com/ or just be slagged off by those merciless reviewers who enjoy write round-ups and comparisons about frameworks. "Bermi Ferrer":http://www.bermi.org/page/about_me is "just" a talented PHP developer who decided to create his own framework and he really enjoyed doing so, nothing more, nothing less. + +_"I considered other PHP ports of Ruby on Rails, but we could not find all we needed on them. One feature that I needed on the core was internationalization and Unicode support, so I decided to roll my own framework trying to keep most of the original rails interface so most of its documentation could work for it."_ + +Where did I hear that? Nothing new: it's always the same story of frameworks not being as we want them to be etc., it's human. And yes, it's _*another*_ attempt to port Ruby on Rails to PHP, and a damn good one -- or so it seems. + +<small>Before proceeding any further, I'd like to write a short warning for a few people who may or may not want to pop in and start commenting about the Rails-is-better-than-any-PHP-clone issue: *If I see a single comment slagging off this framework (or any other) only because it's a port of Rails to PHP, it will be deleted, may it be David Heinemeier Hansson himself*. Stop it, no seriously, I think it will be counter productive for Rails in the end: I really like RoR and I love the way it works, and yes, I think Ruby is definitely the best language to do that sort of things, EVERYBODY KNOWS THAT. Please, please, save us poor PHP developers the usual preaching.</small> + +!>http://base--/img/pictures/frameworks/bermi_ferrer.png! + +Right, back to Akelos now. Curious as I am I immediately checked out the official page and all i found was a pretty long list of features which made me dribble, literally... ooops! + +Let's just quote the most juicy ones, shall we? + +Active Record ["Model"] + +* Associations +* Callbacks +* *Transactions* +* *Finders* [ @$Project->findFirstBy('language AND start_year:greater', 'PHP', '2004');@ ] +* Versioning +* ... + +Action Controller ["Controller"] + +* Filters +* Pagination +* Mime Type +* Mime Response +* *Code Generation* +* Response handler +* ... + +Action View ["View"] + +* *Templates (using Sintags)* +* Web 2.0 javascript using prototype and script.aculo.us +* Helpers +* Partials +* *Template Compilers* +* ... + +And then more Akelos-only goodies: + +* *Multilingual Models and Views* +* *Locale alias integrated on URLS (example.com/spanish will load the es_ES locale)* +* Database migrations using DB Designer files +* *Pure PHP support for Unicode (no extensions required)* +* *Unit Tested source code* +* Code Generators +* Built in XHTML validator +* Automated locale management +* *Clean separation from HTML and Javascript using CSS event selectors.* +* Ajax file uploads +* *AFLAX integration* +* Dojo Rich Text Editor +* Format converters +* File handling using SFTP for shared host running Apache as user nobody (as most CPanel server do) +* *Distributed sessions using databases* + +Impressed? I was, honest. And I'm talking as a CakePHP fanatic here, and I must say that if this framework can really offer all this _and_ -- and this is what really matters -- is also as simple as Cake to learn and well performing... well, this is definitely going to be quite a promising player in the "PHP Framework War" (but is not a real war, is it?), although the author is quite worried about that: + +_"I'm also concerned about the PHP Framework war, I don't want to play that game. Building this Framework was a great experience, it works great for me and it has helped me to become a better programmer so I don't want to spend my time discussing about if this is better or not than other solutions. That's the reason I'll first look for great developers interested in the Framework to help me releasing it."_ + Really, this will be an interesting project to check out, once it goes open source, and yes, I really wish Bermi all the best. Good luck, "Akelos Framework":http://www.bermi.org/projects/akelos_framework.
M content/articles/39.textilecontent/articles/39.textile

@@ -13,22 +13,22 @@ - review

type: article toc: true ----- -The so-called "AJAX Start Pages" are not a new concept anymore, and like for almost any other offspring of Web 2.0 there is more than one to chose from. Hence the increasing number of comparative reviews on the Web nowadays (Yes, I'm guilty of that too). I soon learnt that for any "good and useful thing" on the web there are at least _n_ clones: consider for example social bookmarking, community-powered news sites, php frameworks... -And no, you can't use the word clone because it has a strong negative connotation nowadays so let's just say that whenever someone comes up with a new idea, others examine it, process it and in a few weeks (days?) some _very, very similar application_ comes out, and it's _better_ than the previous one. -Now, I don't know exactly whether "NetVibes":http://www.netvibes.com/ was one of the first AJAX Start Pages created or not, but at any rate - in my very, very, very humble opinion, is the most advanced and the most usable of "the lot":http://www.techcrunch.com/2005/12/07/ajax-desktops-wont-stop/, and an essential tool for lazy folks like me who want to keep up-to-date with what's going on without having to visit dozen of websites everyday. - -!<http://base--/img/pictures/netvibes.jpg! - -I can see people jumping up and down shouting "Pageflakes is better", "Protopage kicks a$$" etc. etc. Well, yes, probably, as you like: different people like different things, and when it comes to AJAX Start Pages there's really a lot to choose from: 3spots has an excellent (and complete, I believe) "list":http://3spots.blogspot.com/2006/03/ajax-or-flash-startpages-or-homepages.html of all the start pages currently available on the Net, so yes, you can try them out yourself and make out your mind :) - -I made up my mind long ago after experimenting a few of those. Why Netvibes? OK, let's see: - -# *Fast to load*: Netvibes is fast. Relatively fast, of course, for sure is not as fast as a plain, old-style html page, but I think it's perhaps one of the fastest AJAX start pages ever created. As they "pointed out":http://blog.netvibes.com/?2006/08/17/75-the-future-of-netvibes, with a 15 million investment performance can only get better... -# *Tabbed pages*: After tabbed browsing, tabs within a single page seem to gain popularity. Netvibes allows you to create more than one page to prevent cluttering and general chaos: you can create a tab for CakePHP feeds, one for some cute AJAX widgets you'll never use, another for al that Web 2.0 rubbish you'll never read -- that's what I do at least. -# *Smart Google Module*: Finally Netvibes has a _proper_ Google search module, which enable users to search with Google and view results _on Netvibes_ instead of opening up a browser tab. -# *RSS done right*: Their RSS reader is nice: by clicking on a feed title it opens up a _virtual window_ inside the page with the whole story and a menu with links to the other stories included in the feed. This is the most convenient way to read whole articles like TechCrunch's ones without leaving the page (and without loading the heavy TechCrunch UI). -# *Public API for modules*: For those who - unlike me - has some proper free time and would like to develop their own module, the "Netvibes Mini Module API":http://eco.netvibes.com/developers/ is public... -# *Ecosystem* : Netvibes "Ecosystem":http://eco.netvibes.com/ includes hundreds of modules and podcasts and thousands of feeds and tabs which can be integrated into any Netvibes page with a single click. Some of my favourites: "XE":http://eco.netvibes.com/modules/3492/xe.com-currency-converter Currency Converter, "Quick Translator":http://eco.netvibes.com/modules/3709/quick-translator, "Google Map":http://eco.netvibes.com/modules/6776/google-map "Daily Cartoons":http://eco.netvibes.com/modules/91/daily-cartoons and "Bitty Browser":http://eco.netvibes.com/modules/6/bitty-browser. -CakePHP feeds? "Loads":http://eco.netvibes.com/?type=all&q=cakephp! - +The so-called "AJAX Start Pages" are not a new concept anymore, and like for almost any other offspring of Web 2.0 there is more than one to chose from. Hence the increasing number of comparative reviews on the Web nowadays (Yes, I'm guilty of that too). I soon learnt that for any "good and useful thing" on the web there are at least _n_ clones: consider for example social bookmarking, community-powered news sites, php frameworks... +And no, you can't use the word clone because it has a strong negative connotation nowadays so let's just say that whenever someone comes up with a new idea, others examine it, process it and in a few weeks (days?) some _very, very similar application_ comes out, and it's _better_ than the previous one. +Now, I don't know exactly whether "NetVibes":http://www.netvibes.com/ was one of the first AJAX Start Pages created or not, but at any rate - in my very, very, very humble opinion, is the most advanced and the most usable of "the lot":http://www.techcrunch.com/2005/12/07/ajax-desktops-wont-stop/, and an essential tool for lazy folks like me who want to keep up-to-date with what's going on without having to visit dozen of websites everyday. + +!<http://base--/img/pictures/netvibes.jpg! + +I can see people jumping up and down shouting "Pageflakes is better", "Protopage kicks a$$" etc. etc. Well, yes, probably, as you like: different people like different things, and when it comes to AJAX Start Pages there's really a lot to choose from: 3spots has an excellent (and complete, I believe) "list":http://3spots.blogspot.com/2006/03/ajax-or-flash-startpages-or-homepages.html of all the start pages currently available on the Net, so yes, you can try them out yourself and make out your mind :) + +I made up my mind long ago after experimenting a few of those. Why Netvibes? OK, let's see: + +# *Fast to load*: Netvibes is fast. Relatively fast, of course, for sure is not as fast as a plain, old-style html page, but I think it's perhaps one of the fastest AJAX start pages ever created. As they "pointed out":http://blog.netvibes.com/?2006/08/17/75-the-future-of-netvibes, with a 15 million investment performance can only get better... +# *Tabbed pages*: After tabbed browsing, tabs within a single page seem to gain popularity. Netvibes allows you to create more than one page to prevent cluttering and general chaos: you can create a tab for CakePHP feeds, one for some cute AJAX widgets you'll never use, another for al that Web 2.0 rubbish you'll never read -- that's what I do at least. +# *Smart Google Module*: Finally Netvibes has a _proper_ Google search module, which enable users to search with Google and view results _on Netvibes_ instead of opening up a browser tab. +# *RSS done right*: Their RSS reader is nice: by clicking on a feed title it opens up a _virtual window_ inside the page with the whole story and a menu with links to the other stories included in the feed. This is the most convenient way to read whole articles like TechCrunch's ones without leaving the page (and without loading the heavy TechCrunch UI). +# *Public API for modules*: For those who - unlike me - has some proper free time and would like to develop their own module, the "Netvibes Mini Module API":http://eco.netvibes.com/developers/ is public... +# *Ecosystem* : Netvibes "Ecosystem":http://eco.netvibes.com/ includes hundreds of modules and podcasts and thousands of feeds and tabs which can be integrated into any Netvibes page with a single click. Some of my favourites: "XE":http://eco.netvibes.com/modules/3492/xe.com-currency-converter Currency Converter, "Quick Translator":http://eco.netvibes.com/modules/3709/quick-translator, "Google Map":http://eco.netvibes.com/modules/6776/google-map "Daily Cartoons":http://eco.netvibes.com/modules/91/daily-cartoons and "Bitty Browser":http://eco.netvibes.com/modules/6/bitty-browser. +CakePHP feeds? "Loads":http://eco.netvibes.com/?type=all&q=cakephp! + Enough?
M content/articles/40.textilecontent/articles/40.textile

@@ -41,12 +41,12 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com :id: 125 :body: |- - This book has been canceled, so it will never be available. - - For more information on the reasons for this, see: - - -- "http://www.h3rald.com/blog/42":http://www.h3rald.com/blog/42 - + This book has been canceled, so it will never be available. + + For more information on the reasons for this, see: + + -- "http://www.h3rald.com/blog/42":http://www.h3rald.com/blog/42 + -- "http://www.h3rald.com/blog/too-many-cooks-take-2":http://www.h3rald.com/blog/too-many-cooks-take-2 date: 2006-11-02 05:25:00 +01:00 tags:

@@ -55,24 +55,24 @@ - writing

type: article toc: true ----- -Despite all my efforts to keep the whole thing quiet for the time being, a few days ago I entered the words "CakePHP Recipes" in Google and discovered - to my astonishment - that my new book about the CakePHP framework is already for (pre)sale in many popular online bookstores. - -Up to now I never made any formal announcement myself (although the Cake Software Foundation already did, months ago), nor gave out any juicy details about it, but maybe now the time has come to post something more about it. Yes, I am indeed writing a book about the CakePHP framework, and yes, you can already buy it but no, you can't phisically get it simply because it's still in progress (miracles of the modern publishing industry!). - -!<http://base--/img/cakephp-recipes/cover.jpg! - -I'd like to point out that I'm not the _only_ author of the book: all the code examples and snippets included in the book is provided by the Cake Software Foundation staff, in the person of Larry E. Masters and Garrett J. Woodworth mainly, who will also act as technical editors and first reviewers of the book, together with other trusthworthy CakePHP core developers. -It is our intent to produce an enjoyable and yet very useful book which will hopefully help CakePHP enthusiasts to use the framework in real-world situations: the book will not focus on theory but on practice, by providing a lot of interesting "recipes" on how to implement a particular functionality in a CakePHP web application. - -Why should you get it? Here are some reasons: - -* It is a book written _by_ programmers _for_ programmers -* All the code included in the book has been created and tested by the creators of the framework -* Part of all the revenues generated by the book (including royalties) will go to the Cake Software Foundation, and hopefully contribute to improve our already excellent framework. - -Very special thanks to "Peachpit Press":http://www.peachpit.com/ for giving me and the Cake Software Foundation this chance to - -More to come... - - -bq. *UPDATE*: This book "has been canceled":http://www.h3rald.com/blog/42 and therefore will NEVER be available in bookshops or online stores. +Despite all my efforts to keep the whole thing quiet for the time being, a few days ago I entered the words "CakePHP Recipes" in Google and discovered - to my astonishment - that my new book about the CakePHP framework is already for (pre)sale in many popular online bookstores. + +Up to now I never made any formal announcement myself (although the Cake Software Foundation already did, months ago), nor gave out any juicy details about it, but maybe now the time has come to post something more about it. Yes, I am indeed writing a book about the CakePHP framework, and yes, you can already buy it but no, you can't phisically get it simply because it's still in progress (miracles of the modern publishing industry!). + +!<http://base--/img/cakephp-recipes/cover.jpg! + +I'd like to point out that I'm not the _only_ author of the book: all the code examples and snippets included in the book is provided by the Cake Software Foundation staff, in the person of Larry E. Masters and Garrett J. Woodworth mainly, who will also act as technical editors and first reviewers of the book, together with other trusthworthy CakePHP core developers. +It is our intent to produce an enjoyable and yet very useful book which will hopefully help CakePHP enthusiasts to use the framework in real-world situations: the book will not focus on theory but on practice, by providing a lot of interesting "recipes" on how to implement a particular functionality in a CakePHP web application. + +Why should you get it? Here are some reasons: + +* It is a book written _by_ programmers _for_ programmers +* All the code included in the book has been created and tested by the creators of the framework +* Part of all the revenues generated by the book (including royalties) will go to the Cake Software Foundation, and hopefully contribute to improve our already excellent framework. + +Very special thanks to "Peachpit Press":http://www.peachpit.com/ for giving me and the Cake Software Foundation this chance to + +More to come... + + +bq. *UPDATE*: This book "has been canceled":http://www.h3rald.com/blog/42 and therefore will NEVER be available in bookshops or online stores.
M content/articles/41.textilecontent/articles/41.textile

@@ -11,6 +11,6 @@ - website

type: article toc: true ----- -As a few of you might have noticed, I decided to disable comments on all the sections of this site, as a temporary measure against spam. - +As a few of you might have noticed, I decided to disable comments on all the sections of this site, as a temporary measure against spam. + Hopefully I'll try implementing something more effective and less drastic soon, but meanwhile this seems the quickest way to get rid of approx 600-800 spam comments per week.
M content/articles/42.textilecontent/articles/42.textile

@@ -52,13 +52,13 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com :id: 18 :body: |- - Believe me, if you asked me months ago I would have contributed to expand Cake's documentation and write more articles about it quite willingly. - - But as I said, at the moment I'd like to contribute to other projects where I'm actually appreciated. - - I know Cake lacks of documentation, but the Cake Team lost a writer and contributor four months ago, and I'm sure things won't improve if they keep dealing with people in the same way. - - I know I keep going on about this, and I know I sound quite offensive sometimes, but I'm sure at least some of you can understand how this can be a "hot topic" for me. + Believe me, if you asked me months ago I would have contributed to expand Cake's documentation and write more articles about it quite willingly. + + But as I said, at the moment I'd like to contribute to other projects where I'm actually appreciated. + + I know Cake lacks of documentation, but the Cake Team lost a writer and contributor four months ago, and I'm sure things won't improve if they keep dealing with people in the same way. + + I know I keep going on about this, and I know I sound quite offensive sometimes, but I'm sure at least some of you can understand how this can be a "hot topic" for me. I'd be glad to see Cake moving forward and "make it", although I will *not* do anything anymore to make that happen. - :date: 2007-07-08 23:56:34 +02:00 :author: anon

@@ -73,8 +73,8 @@ :author: Dan

:url: "" :id: 20 :body: |- - What a shame... I was really looking forward to that book! - + What a shame... I was really looking forward to that book! + Btw, the new site design looks good... - :date: 2007-07-09 05:26:37 +02:00 :author: Fabio Cevasco

@@ -88,14 +88,14 @@ :author: Manny

:url: "" :id: 32 :body: | - I just came across your post. - - That totally sucks because cake's doc's SUCK huge. I would have considered using cake since people have been going on about how good it is because it's based on Rails. - - BTW, I don't have time to spend shifting through their API or searching newsgroup or dealing with some of the unfriendly "bakers". There's a huge difference between 1.1 and 1.2. - - I'm going to checkout Symfony. - + I just came across your post. + + That totally sucks because cake's doc's SUCK huge. I would have considered using cake since people have been going on about how good it is because it's based on Rails. + + BTW, I don't have time to spend shifting through their API or searching newsgroup or dealing with some of the unfriendly "bakers". There's a huge difference between 1.1 and 1.2. + + I'm going to checkout Symfony. + - :date: 2007-08-11 04:35:14 +02:00 :author: Joan Piedra

@@ -133,15 +133,15 @@ - writing

type: article toc: true ----- -I am sorry to announce that my upcoming book, CakePHP Recipes, will not be published anymore. As a matter of fact, it wasn't finished because some of the people involved failed to comply with the terms of their contract in delivering material which was suitable for publication. - -To quote an email I received from my publisher a few days ago, - -_"[...] The Cake Software Foundation has informed us they are withdrawing from the CakePHP Recipes project, and returning the advances they've received. This means we can no longer count on them for support, nor can we package the book as an official title._ - -_After careful consideration, we have determined that this renders the book no longer viable for us. So, regrettably we must cancel your contract as well. Please understand that we have no quarrel with your performance; you have been responsive and communicative for the entire time. [...]"_ - -This is a huge disappointment to me, in particular because I am not responsible for the cancellation. It was going to be my very first book to be published, and due to someone else's misjudgement and lack of motivation it will never be available to the readers. -I do not want to put the blame the whole Cake Software Foundation for this: nearly every person involved in the project did his best in reviewing parts of the book or offering me support. Regrettably this wasn't enough: unfortunately it seems that someone didn't like the idea of me writing the book and kept doubting not only my coding skills but also my ability as a writer all along. - +I am sorry to announce that my upcoming book, CakePHP Recipes, will not be published anymore. As a matter of fact, it wasn't finished because some of the people involved failed to comply with the terms of their contract in delivering material which was suitable for publication. + +To quote an email I received from my publisher a few days ago, + +_"[...] The Cake Software Foundation has informed us they are withdrawing from the CakePHP Recipes project, and returning the advances they've received. This means we can no longer count on them for support, nor can we package the book as an official title._ + +_After careful consideration, we have determined that this renders the book no longer viable for us. So, regrettably we must cancel your contract as well. Please understand that we have no quarrel with your performance; you have been responsive and communicative for the entire time. [...]"_ + +This is a huge disappointment to me, in particular because I am not responsible for the cancellation. It was going to be my very first book to be published, and due to someone else's misjudgement and lack of motivation it will never be available to the readers. +I do not want to put the blame the whole Cake Software Foundation for this: nearly every person involved in the project did his best in reviewing parts of the book or offering me support. Regrettably this wasn't enough: unfortunately it seems that someone didn't like the idea of me writing the book and kept doubting not only my coding skills but also my ability as a writer all along. + It is sad to see how certain individuals fail to understand the importance of marketing and public relations not only when working on a team project but also in ordinary life, but it is truly disappointing to see how the thoughts and opinions of a single individual affect the work of a whole team.
M content/articles/43.textilecontent/articles/43.textile

@@ -13,25 +13,25 @@ - writing

type: article toc: true ----- -My fianc&eacute;e keeps telling me that too many cakes are not good for me, and I never listen: I always liked cakes! I *did* like the CakePHP(TM)[1] framework too, once, and I *did* write "some articles":http://www.h3rald.com/projects/view/cakephp-herald about it in the past, and I believe at least a bunch of Bakers found them useful, especially at the time. -I do believe the Cake(TM) Software Foundation[1] quite liked having their framework featured on popular websites like php|architect and SitePoint, and I believe that I contributed - to some extent - to make it one of the most popular frameworks available for the PHP programming language. - -Unfortunately though someone decided that two of such articles and my personal website were no longer worth a mention on CakePHP official website frontpage. To me, this makes sense since the two CakePHP-related series which are being published by IBM are much more up-to-date than my articles, and thus deserve such a mention instead. - -Oddly enough, I took a screenshot of the CakePHP website just yesterday _"by chance"_ and my articles were still there: - -!http://www.h3rald.com/img/pictures/cake-promo/cakephp-08032007.png! - -...while this morning they weren't anymore: - -!http://www.h3rald.com/img/pictures/cake-promo/cakephp-09032007.png! - -Of course I can't provide any proof that I took the screenshot yesterday, and of course I don't have any proof of the fact that someone in CSF may have thought that due to my recent "bad behavior":http://www.h3rald.com/blog/view/42/ my articles didn't deserve to be publicized anymore. I am confident that the Cake Software Foundation always does its best in keeping its site up-to-date, and I am glad that yesterday's accident reminded them that there were far better articles which needed to be featured on their site. At least I _finally_ did something good for the community! - - -Sarcasm apart, I feel I owe an apology for blowing this whole thing out of proportions: I disclosed embarassing details about our past project which - for the sake of the framework - should have never been made public, perhaps. -I want all of you to know that I still think that CakePHP is the best PHP framework ever made and I genuinely think that Larry E. Master did outstanding work in all this time, along with the rest of CSF members and contributors. Best of luck for your future editorial and development projects. - -Since now my contributions are no longer "officially recognized", I think I'd better to move on devoting my attention to something else. - +My fianc&eacute;e keeps telling me that too many cakes are not good for me, and I never listen: I always liked cakes! I *did* like the CakePHP(TM)[1] framework too, once, and I *did* write "some articles":http://www.h3rald.com/projects/view/cakephp-herald about it in the past, and I believe at least a bunch of Bakers found them useful, especially at the time. +I do believe the Cake(TM) Software Foundation[1] quite liked having their framework featured on popular websites like php|architect and SitePoint, and I believe that I contributed - to some extent - to make it one of the most popular frameworks available for the PHP programming language. + +Unfortunately though someone decided that two of such articles and my personal website were no longer worth a mention on CakePHP official website frontpage. To me, this makes sense since the two CakePHP-related series which are being published by IBM are much more up-to-date than my articles, and thus deserve such a mention instead. + +Oddly enough, I took a screenshot of the CakePHP website just yesterday _"by chance"_ and my articles were still there: + +!http://www.h3rald.com/img/pictures/cake-promo/cakephp-08032007.png! + +...while this morning they weren't anymore: + +!http://www.h3rald.com/img/pictures/cake-promo/cakephp-09032007.png! + +Of course I can't provide any proof that I took the screenshot yesterday, and of course I don't have any proof of the fact that someone in CSF may have thought that due to my recent "bad behavior":http://www.h3rald.com/blog/view/42/ my articles didn't deserve to be publicized anymore. I am confident that the Cake Software Foundation always does its best in keeping its site up-to-date, and I am glad that yesterday's accident reminded them that there were far better articles which needed to be featured on their site. At least I _finally_ did something good for the community! + + +Sarcasm apart, I feel I owe an apology for blowing this whole thing out of proportions: I disclosed embarassing details about our past project which - for the sake of the framework - should have never been made public, perhaps. +I want all of you to know that I still think that CakePHP is the best PHP framework ever made and I genuinely think that Larry E. Master did outstanding work in all this time, along with the rest of CSF members and contributors. Best of luck for your future editorial and development projects. + +Since now my contributions are no longer "officially recognized", I think I'd better to move on devoting my attention to something else. + fn1. "CakePHP" and "Cake" _seems_ to be registered trademarks of the Cake Software Foundation Inc. I'm not sure if I'm allowed to use them in this blog -- If anyone has any problem with it, please let me know.
M content/articles/9.textilecontent/articles/9.textile

@@ -11,15 +11,15 @@

type: article toc: true ----- -Today I had my _n^th^_ job interview. Yes, I'm getting used to them by now, and it's becoming quite entertaining: if they _paid_ me for just take interviews I'd do that for all my life quite happily! -But since that's not going to happen I'd better get a move on and find a so called _real job_. Actually this time it wasn't the usual complete waste of time and this company _nearly_ made me a proper offer: they're gonna see me again next week, so let's hope for the best. - -The interview was one of the best ever, no doubts. They were friendly enough, they seemed to like me enough and they were even entertaining enough... one thing which actually _never_ happened to me before: they asked me to solve a sort of pseudo-IQ-test(an annoying semi-pointless riddle, in other words), and here's a rough translation from Italian, the comments within square brackets are mine: - -bq. _You're alone in a pitch black room [...nice intro, eh?] and the only thing you have are two fuses of different length and a lighter [thank God for that, now it's all much better]. You know that both the fuses can burn in exactly one hour each, although there's no proportional law which bonds the lenght of the fuses to the time necessary to burn them; how can you measure 45 minutes, exactly?_ - -I solved that, eventually, and I got the job! Weheee! - -No, more or less, but not quite... I'm gonna see them again, and evaluate their offer along with the other(s). - +Today I had my _n^th^_ job interview. Yes, I'm getting used to them by now, and it's becoming quite entertaining: if they _paid_ me for just take interviews I'd do that for all my life quite happily! +But since that's not going to happen I'd better get a move on and find a so called _real job_. Actually this time it wasn't the usual complete waste of time and this company _nearly_ made me a proper offer: they're gonna see me again next week, so let's hope for the best. + +The interview was one of the best ever, no doubts. They were friendly enough, they seemed to like me enough and they were even entertaining enough... one thing which actually _never_ happened to me before: they asked me to solve a sort of pseudo-IQ-test(an annoying semi-pointless riddle, in other words), and here's a rough translation from Italian, the comments within square brackets are mine: + +bq. _You're alone in a pitch black room [...nice intro, eh?] and the only thing you have are two fuses of different length and a lighter [thank God for that, now it's all much better]. You know that both the fuses can burn in exactly one hour each, although there's no proportional law which bonds the lenght of the fuses to the time necessary to burn them; how can you measure 45 minutes, exactly?_ + +I solved that, eventually, and I got the job! Weheee! + +No, more or less, but not quite... I'm gonna see them again, and evaluate their offer along with the other(s). + The solution of the riddle? NO CHANCE! Go and figure it out, it's not hard.
M content/articles/akelos-interview.textilecontent/articles/akelos-interview.textile

@@ -14,105 +14,105 @@ - frameworks

type: article toc: true ----- -I "already":http://www.h3rald.com/blog/34 "covered":http://www.h3rald.com/blog/38 the Akelos PHP framework in the past, but for those who don't know it, Akelos seems to be one of the few "Rails-inspired PHP frameworks":http://www.h3rald.com/articles/rails-inspired-php-frameworks still worth mentioning, besides CakePHP and Symphony of course. - -I recently has a look at their recently-relaunched <a href="http://www.akelos.org/">community website</a> and I noticed this phrase: - -bq. "Being port of Ruby on Rails to PHP Akelos is also optimized for programmer happiness and sustainable productivity" - -Bermi Ferrer, Akelos creator, openly admits the framework is a port of Ruby on Rails to PHP, an attempt to help _"Ruby on Rails developers who need to code in PHP"_, among others. Of course Akelos is not Rails, simply because Ruby is (thank God for that!) not PHP, however I decided to find out more, and I asked Bermi a few questions, which he promptly answered.<h4><em>There are a lot of frameworks for PHP, perhaps too many: why did you decide to create Akelos rather than using one of the existing ones?</em></h4> - -<p>I started coding <a href="http://www.akelos.org/">Akelos</a> back in 2004 for our internal developments. At that time I only found very few frameworks out there like <a href="http://www.mojavi.org/">Mojavi</a> and <a href="http://ez.no/">eZ Publish</a>. These frameworks were not my ideal of an <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile development</a> environment, so I decided to brew my own solution.</p> - -<p>After reading <a href="http://www.martinfowler.com/books.html">Patterns of Enterprise Application Architecture</a> it was clear to me the kind of framework I wanted <a href="http://www.akelos.org/">Akelos</a> to become, so I started to implement some of the design patterns from the book into Akelos.</p> - -<p>During the summer of 2005 I had a look into other PHP frameworks like <a href="http://www.cakephp.org/">CakePHP</a>, <a href="http://phpontrax.com/">PHP on Trax</a>, and <a href="http://www.bennolan.com/biscuit/">Biscuit</a> but none of them was more complete or easier to use than what Akelos was already at that time.</p> - -<p>Then I used <a href="http://www.rubyonrails.org/">Rails</a> for one small personal project and immediately found that <a href="http://www.akelos.org/">Akelos</a> interfaces, conventions and philosophy were close to the Rails approach. <a href="http://api.rubyonrails.org/files/vendor/rails/activerecord/README.html">Rails ActiveRecord</a> implementation was impressive, better than mine and much much better than other existing PHP implementations, so I first ported the ActiveRecord code using <a href="http://adodb.sourceforge.net/">PHP AdoDB</a> as the database abstraction layer.</p> - -<p>After that point, whenever I had a problem to solve while coding my customers applications I turned to Rails and they usually had the most elegant solution available. So I did like the idea of digging into Rails code to learn more Ruby and bringing Rails magic to the PHP world. It also helped the fact that Rails inline documentation is excellent so it could be easily adapted for Akelos.</p> - - -<h4><em>What&#8217;s new since last time I posted about Akelos?</em></h4> - -<p>The biggest change is the direction that the project has taken. Until now we have not dedicated time to promote Akelos, we just used it for our internal projects and we have been adding features as needed without a fixed roadmap or advocacy.</p> - -<p>Now this has changed. More and more developers are using Akelos and contributing functionalities they miss from Rails. After some serious contribution proposals and many developers telling us how much they like Akelos, we decided to take the time to build a nice community site which includes <a href="http://forum.akelos.org/">forums</a>, a <a href="http://wiki.akelos.org/">wiki</a>, a new <a href="http://www.akelos.org/docs/tutorials/booklink">tutorial</a> and <a href="http://www.akelos.org/screencasts">a screen-cast</a>.</p> - -<p>There are also some improvements like:</p> - -<ul> -<li>Sintags, now accepts ruby-like calls to helper methods from the views.</li> -<li>Action Webservice, a component for creating and consuming Web Services easily.</li> -<li>Action Mailer, which allows you to receive and send (directly or in delayed mode) emails from within your application. (this is almost ready to ship)</li> -<li>Acts as tree behavior for Models.</li> -<li>Many performance improvements.</li> -<li>Many small contributions and bug fixes.</li> -<li>Code base reduced from 16MB to 9MB.</li> -</ul> - -<h4><em>From the new site, it seems that Akelos is - or aims to be - a port of Rails for PHP. Is that true? Do you aim to target Rails developers as possible users of the framework in situations in which &#8220;they have no choice&#8221; but to use PHP instead of Ruby?</em></h4> - -<p>Akelos has ported many Ruby on Rails components keeping their interfaces and functionality whenever it was feasible to port the Ruby code to PHP. It might be considered a port in the sense of functionality, but there are some Rails strengths that rely on the Ruby language and that are impossible to port to PHP. However, Ruby developers will find that Akelos is the PHP framework with is the closest to Rails.</p> - -<p>On the other hand, many PHP developers have moved to Ruby because PHP lacked a hyper-productive and fun-to-use framework like Rails for building complex applications. That is no longer the case, and those who excel at PHP can start being productive from day one by using Akelos. In this way, Akelos target users are those who already know PHP and need to build complex applications that can run on almost any cheap shared hosting using a solid foundation based on good coding practices and widely accepted conventions.</p> - -<h4><em>What Rails features are missing in Akelos?</em></h4> - -<p>A standalone webserver like WebBrick, RJS, has and belongs to many through associations, string/number/date extensions and Active Resource.</p> - -<p>Ruby-powered features like modules, runtime class overriding and blocks will never be available in Akelos.</p> - -<p>Scaffolds in Akelos work by generating code, I found quite useless to enable $scaffold = true; and have magic functionality that you can&#8217;t modify, so I decided not to invest my time on that one.</p> - -<h4><em>I noticed quite a few generators available for Akelos, do they work as a Rails developer may expect them to work?</em></h4> - -<p>The ones that are available do pretty much the same as in RoR.</p> - -<h4><em>How does Akelos compare to other similar PHP frameworks like, say, CakePHP? What features does Akelos offer which Cake doesn&#8217;t offer and vice-versa?</em></h4> - -<p>I&#8217;m not aware of Cake&#8217;s functionalities. At the time I started porting Rails my feelings about CakePHP were that they missed the simplicity point in favor of architectural discussions that lead to confusing code, but that was long ago.</p> - -<p>Akelos (and Rails) do not implement ACL like Cake does, as that is a business logic component that varies too much from one case to other, it has no place inside the framework.</p> - -<p>Akelos is built with internationalization in its core. You can even internationalize your Models by prefixing the column name with the locale.</p> - -<p>I think that Cake only has an act_as_tree behavior on models while Akelos has Tree, Nested Set, and List. Akelos also implements handy features from Rails like <a href="http://en.wikipedia.org/wiki/Optimistic_concurrency_control">optimistic locking</a>, <a href="http://www.martinfowler.com/eaaCatalog/lazyLoad.html">lazy loading</a>, <a href="http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html">table inheritance</a>, counters, automatic transactions, really powerful validations, calculations&#8230;, and I think most of these advanced features are still missing on Cake, but maybe I'm wrong.</p> - -<h4><em>Did you include unit tests for all the framework classes?</em></h4> - -<p>The main components are fully unit tested, and no new code or patch gets into the trunk without unit tests.</p> - -<h4><em>Did you or someone do any performance test or benchmarks on Akelos already?</em></h4> - -<p>During the last month a lot of code was refactored to improve performance with the help of <a href="http://xdebug.org/">Xdebug</a>, <a href="http://kcachegrind.sourceforge.net/">Kcachegrind</a> and <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">ab</a>. We significantly improved the performance in one of our most complex intranet applications, a <a href="http://www.basecamphq.com/">basecamp</a>-like system.</p> - -<p>Akelos also implements caching at many levels, so it&#8217;s very easy to increase performance as we did with a new CMS that can handle +200 requests per second using <a href="http://www.apache.org/">Apache</a> in a cheap shared server environment.</p> - -<h4><em>Why should a PHP developer choose Akelos over another PHP framework?</em></h4> - -<p><a href="http://www.akelos.org/docs/tutorials/booklink#mvc">Akelos MVC implementation</a> and <a href="http://www.akelos.org/docs/tutorials/booklink#workflow">workflow</a> are really easy to understand.</p> - -<p>In Akelos all the methods and interfaces are thoroughly selected, so whenever you need to do something you just need to type what you think. Default options are selected with care so you don&#8217;t need to set any configuration unless you want to modify the default behavior.</p> - -<p>Coding multilingual applications, building complex relationships within models, distributing databases changes within your development team, building Ajax interfaces, unit testing your code and many other common tasks for PHP developers are really simple to accomplish when using Akelos.</p> - -<p>Akelos is designed to work on PHP4 and PHP5 and it comes with an easy web installer you can adapt for your application. It has functions for working with files and directories in common situations when the web server runs as a different user.</p> - -<p>And one of the main reasons for choosing Akelos is that it makes coding fun and lets you focus on solving user problems rather than wasting your time in repetitive technical annoyances. When coding with other developers the <em>convention over configuration philosophy</em> helps everybody to understand exactly how everything works and where to find things.</p> - -<h4><em>Is there any website using Akelos already?</em></h4> - -<p>The <a href="http://www.thechemicalbrothers.com/">Chemical Brothers</a> new website which has been developed by <a href="http://www.3ev.com/">3rd Eye Vision (3ev)</a> is using Akelos. </p> - -<p>The <a href="http://www.akelos.org/">Akelos.org</a> site is running a CMS named Editam which we will release as Open Source in a near future.</p> - -<p>Some small websites like <a href="http://www.fundaciocaixacarlet.com/">Fundacio Caixa Carlet</a> and many intranet/extranet sites that we&#8217;ve been coding during the last 2 years.</p> - -<h4><em>What are your future plans for Akelos? Anything new on the way?</em></h4> - -<p>A new manual, and a better API interface are the main priorities right now.</p> - -<p>Continuing bringing Rails functionality as needed.</p> - -<p>Releasing our sister project Editam CMS which will help developers who need to add functionality on the top of a CMS using a solid MVC framework like Akelos.</p> +I "already":http://www.h3rald.com/blog/34 "covered":http://www.h3rald.com/blog/38 the Akelos PHP framework in the past, but for those who don't know it, Akelos seems to be one of the few "Rails-inspired PHP frameworks":http://www.h3rald.com/articles/rails-inspired-php-frameworks still worth mentioning, besides CakePHP and Symphony of course. + +I recently has a look at their recently-relaunched <a href="http://www.akelos.org/">community website</a> and I noticed this phrase: + +bq. "Being port of Ruby on Rails to PHP Akelos is also optimized for programmer happiness and sustainable productivity" + +Bermi Ferrer, Akelos creator, openly admits the framework is a port of Ruby on Rails to PHP, an attempt to help _"Ruby on Rails developers who need to code in PHP"_, among others. Of course Akelos is not Rails, simply because Ruby is (thank God for that!) not PHP, however I decided to find out more, and I asked Bermi a few questions, which he promptly answered.<h4><em>There are a lot of frameworks for PHP, perhaps too many: why did you decide to create Akelos rather than using one of the existing ones?</em></h4> + +<p>I started coding <a href="http://www.akelos.org/">Akelos</a> back in 2004 for our internal developments. At that time I only found very few frameworks out there like <a href="http://www.mojavi.org/">Mojavi</a> and <a href="http://ez.no/">eZ Publish</a>. These frameworks were not my ideal of an <a href="http://en.wikipedia.org/wiki/Agile_software_development">Agile development</a> environment, so I decided to brew my own solution.</p> + +<p>After reading <a href="http://www.martinfowler.com/books.html">Patterns of Enterprise Application Architecture</a> it was clear to me the kind of framework I wanted <a href="http://www.akelos.org/">Akelos</a> to become, so I started to implement some of the design patterns from the book into Akelos.</p> + +<p>During the summer of 2005 I had a look into other PHP frameworks like <a href="http://www.cakephp.org/">CakePHP</a>, <a href="http://phpontrax.com/">PHP on Trax</a>, and <a href="http://www.bennolan.com/biscuit/">Biscuit</a> but none of them was more complete or easier to use than what Akelos was already at that time.</p> + +<p>Then I used <a href="http://www.rubyonrails.org/">Rails</a> for one small personal project and immediately found that <a href="http://www.akelos.org/">Akelos</a> interfaces, conventions and philosophy were close to the Rails approach. <a href="http://api.rubyonrails.org/files/vendor/rails/activerecord/README.html">Rails ActiveRecord</a> implementation was impressive, better than mine and much much better than other existing PHP implementations, so I first ported the ActiveRecord code using <a href="http://adodb.sourceforge.net/">PHP AdoDB</a> as the database abstraction layer.</p> + +<p>After that point, whenever I had a problem to solve while coding my customers applications I turned to Rails and they usually had the most elegant solution available. So I did like the idea of digging into Rails code to learn more Ruby and bringing Rails magic to the PHP world. It also helped the fact that Rails inline documentation is excellent so it could be easily adapted for Akelos.</p> + + +<h4><em>What&#8217;s new since last time I posted about Akelos?</em></h4> + +<p>The biggest change is the direction that the project has taken. Until now we have not dedicated time to promote Akelos, we just used it for our internal projects and we have been adding features as needed without a fixed roadmap or advocacy.</p> + +<p>Now this has changed. More and more developers are using Akelos and contributing functionalities they miss from Rails. After some serious contribution proposals and many developers telling us how much they like Akelos, we decided to take the time to build a nice community site which includes <a href="http://forum.akelos.org/">forums</a>, a <a href="http://wiki.akelos.org/">wiki</a>, a new <a href="http://www.akelos.org/docs/tutorials/booklink">tutorial</a> and <a href="http://www.akelos.org/screencasts">a screen-cast</a>.</p> + +<p>There are also some improvements like:</p> + +<ul> +<li>Sintags, now accepts ruby-like calls to helper methods from the views.</li> +<li>Action Webservice, a component for creating and consuming Web Services easily.</li> +<li>Action Mailer, which allows you to receive and send (directly or in delayed mode) emails from within your application. (this is almost ready to ship)</li> +<li>Acts as tree behavior for Models.</li> +<li>Many performance improvements.</li> +<li>Many small contributions and bug fixes.</li> +<li>Code base reduced from 16MB to 9MB.</li> +</ul> + +<h4><em>From the new site, it seems that Akelos is - or aims to be - a port of Rails for PHP. Is that true? Do you aim to target Rails developers as possible users of the framework in situations in which &#8220;they have no choice&#8221; but to use PHP instead of Ruby?</em></h4> + +<p>Akelos has ported many Ruby on Rails components keeping their interfaces and functionality whenever it was feasible to port the Ruby code to PHP. It might be considered a port in the sense of functionality, but there are some Rails strengths that rely on the Ruby language and that are impossible to port to PHP. However, Ruby developers will find that Akelos is the PHP framework with is the closest to Rails.</p> + +<p>On the other hand, many PHP developers have moved to Ruby because PHP lacked a hyper-productive and fun-to-use framework like Rails for building complex applications. That is no longer the case, and those who excel at PHP can start being productive from day one by using Akelos. In this way, Akelos target users are those who already know PHP and need to build complex applications that can run on almost any cheap shared hosting using a solid foundation based on good coding practices and widely accepted conventions.</p> + +<h4><em>What Rails features are missing in Akelos?</em></h4> + +<p>A standalone webserver like WebBrick, RJS, has and belongs to many through associations, string/number/date extensions and Active Resource.</p> + +<p>Ruby-powered features like modules, runtime class overriding and blocks will never be available in Akelos.</p> + +<p>Scaffolds in Akelos work by generating code, I found quite useless to enable $scaffold = true; and have magic functionality that you can&#8217;t modify, so I decided not to invest my time on that one.</p> + +<h4><em>I noticed quite a few generators available for Akelos, do they work as a Rails developer may expect them to work?</em></h4> + +<p>The ones that are available do pretty much the same as in RoR.</p> + +<h4><em>How does Akelos compare to other similar PHP frameworks like, say, CakePHP? What features does Akelos offer which Cake doesn&#8217;t offer and vice-versa?</em></h4> + +<p>I&#8217;m not aware of Cake&#8217;s functionalities. At the time I started porting Rails my feelings about CakePHP were that they missed the simplicity point in favor of architectural discussions that lead to confusing code, but that was long ago.</p> + +<p>Akelos (and Rails) do not implement ACL like Cake does, as that is a business logic component that varies too much from one case to other, it has no place inside the framework.</p> + +<p>Akelos is built with internationalization in its core. You can even internationalize your Models by prefixing the column name with the locale.</p> + +<p>I think that Cake only has an act_as_tree behavior on models while Akelos has Tree, Nested Set, and List. Akelos also implements handy features from Rails like <a href="http://en.wikipedia.org/wiki/Optimistic_concurrency_control">optimistic locking</a>, <a href="http://www.martinfowler.com/eaaCatalog/lazyLoad.html">lazy loading</a>, <a href="http://www.martinfowler.com/eaaCatalog/singleTableInheritance.html">table inheritance</a>, counters, automatic transactions, really powerful validations, calculations&#8230;, and I think most of these advanced features are still missing on Cake, but maybe I'm wrong.</p> + +<h4><em>Did you include unit tests for all the framework classes?</em></h4> + +<p>The main components are fully unit tested, and no new code or patch gets into the trunk without unit tests.</p> + +<h4><em>Did you or someone do any performance test or benchmarks on Akelos already?</em></h4> + +<p>During the last month a lot of code was refactored to improve performance with the help of <a href="http://xdebug.org/">Xdebug</a>, <a href="http://kcachegrind.sourceforge.net/">Kcachegrind</a> and <a href="http://httpd.apache.org/docs/2.0/programs/ab.html">ab</a>. We significantly improved the performance in one of our most complex intranet applications, a <a href="http://www.basecamphq.com/">basecamp</a>-like system.</p> + +<p>Akelos also implements caching at many levels, so it&#8217;s very easy to increase performance as we did with a new CMS that can handle +200 requests per second using <a href="http://www.apache.org/">Apache</a> in a cheap shared server environment.</p> + +<h4><em>Why should a PHP developer choose Akelos over another PHP framework?</em></h4> + +<p><a href="http://www.akelos.org/docs/tutorials/booklink#mvc">Akelos MVC implementation</a> and <a href="http://www.akelos.org/docs/tutorials/booklink#workflow">workflow</a> are really easy to understand.</p> + +<p>In Akelos all the methods and interfaces are thoroughly selected, so whenever you need to do something you just need to type what you think. Default options are selected with care so you don&#8217;t need to set any configuration unless you want to modify the default behavior.</p> + +<p>Coding multilingual applications, building complex relationships within models, distributing databases changes within your development team, building Ajax interfaces, unit testing your code and many other common tasks for PHP developers are really simple to accomplish when using Akelos.</p> + +<p>Akelos is designed to work on PHP4 and PHP5 and it comes with an easy web installer you can adapt for your application. It has functions for working with files and directories in common situations when the web server runs as a different user.</p> + +<p>And one of the main reasons for choosing Akelos is that it makes coding fun and lets you focus on solving user problems rather than wasting your time in repetitive technical annoyances. When coding with other developers the <em>convention over configuration philosophy</em> helps everybody to understand exactly how everything works and where to find things.</p> + +<h4><em>Is there any website using Akelos already?</em></h4> + +<p>The <a href="http://www.thechemicalbrothers.com/">Chemical Brothers</a> new website which has been developed by <a href="http://www.3ev.com/">3rd Eye Vision (3ev)</a> is using Akelos. </p> + +<p>The <a href="http://www.akelos.org/">Akelos.org</a> site is running a CMS named Editam which we will release as Open Source in a near future.</p> + +<p>Some small websites like <a href="http://www.fundaciocaixacarlet.com/">Fundacio Caixa Carlet</a> and many intranet/extranet sites that we&#8217;ve been coding during the last 2 years.</p> + +<h4><em>What are your future plans for Akelos? Anything new on the way?</em></h4> + +<p>A new manual, and a better API interface are the main priorities right now.</p> + +<p>Continuing bringing Rails functionality as needed.</p> + +<p>Releasing our sister project Editam CMS which will help developers who need to add functionality on the top of a CMS using a solid MVC framework like Akelos.</p>
M content/articles/apache2-upgrade.textilecontent/articles/apache2-upgrade.textile

@@ -23,8 +23,8 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com/ :id: 193 :body: |- - Wow, looks like I was lucky! The guy I spoke to was smart enough to figure out the problem in less than 3 minutes, I must say. - + Wow, looks like I was lucky! The guy I spoke to was smart enough to figure out the problem in less than 3 minutes, I must say. + @t12345: Out of curiosity, which VPS host are you going for? - :date: 2008-01-02 13:55:41 +01:00 :author: t12345

@@ -52,34 +52,34 @@ - rails

type: article toc: true ----- -Yesterday I got a rather annoying early Christmas present: when visiting my site, I noticed that the raw source code of my dispatch.fcgi file (yes, I'm on shared hosting with FastCGI, for now) was displayed "as it is" instead of being interpreted. - -After the initial moment of anger and stress (I immediately realized it was BlueHost's fault, not mine), I opened two tickets and went to bed, hoping to see everything solved in the morning. - -Unluckily it wasn't the case, so I posted on BlueHost forum trying to be as polite as possible complaining because the issue wasn't being dealt with. It turns out that for such issues you're supposed to use the "Live Chat" feature instead of the tickets, so that's what I did. - -After a quick chat with "Christian", it turns out that BlueHost decided to perform a server upgrade "silently" upgrading to Apache2, PHP5, MySQL4.1, etc. etc. -Cool, pity that nobody told me that! - -I was expecting some sort of PHP upgrade (not that I care like that), which was supposed to happen according to the last BlueHost newsletter: - -<blockquote> -<em>"To alleviate any issues in the future with certain scripts that only run on one -version of PHP we have developed the ability to run PHP4 and PHP5 on the same server -simultaneously. This will be rolled out to all users in the next couple of weeks. Some -servers already have this ability while most will see it in the next two weeks."</em> -</blockquote> - -But... hang on? Does it say anything about migrating to Apache2? I don't think so! What's worse, is that quite a few things changed with Apache2, in particular the way FastCGI handlers are declared: - -<% highlight :text do %> -# Apache 1.3: -AddHandler fastcgi-script .fcgi - -# Apache 2: -AddHandler fcgid-script .fcgi -<% end %> - -See? Different. This is due to the fact that "@mod_fcgid@ is used instead of @mod_fastcgi@ on Apache 2":http://wiki.rubyonrails.org/rails/pages/Debian+mod_fastcgi+Notes. - +Yesterday I got a rather annoying early Christmas present: when visiting my site, I noticed that the raw source code of my dispatch.fcgi file (yes, I'm on shared hosting with FastCGI, for now) was displayed "as it is" instead of being interpreted. + +After the initial moment of anger and stress (I immediately realized it was BlueHost's fault, not mine), I opened two tickets and went to bed, hoping to see everything solved in the morning. + +Unluckily it wasn't the case, so I posted on BlueHost forum trying to be as polite as possible complaining because the issue wasn't being dealt with. It turns out that for such issues you're supposed to use the "Live Chat" feature instead of the tickets, so that's what I did. + +After a quick chat with "Christian", it turns out that BlueHost decided to perform a server upgrade "silently" upgrading to Apache2, PHP5, MySQL4.1, etc. etc. +Cool, pity that nobody told me that! + +I was expecting some sort of PHP upgrade (not that I care like that), which was supposed to happen according to the last BlueHost newsletter: + +<blockquote> +<em>"To alleviate any issues in the future with certain scripts that only run on one +version of PHP we have developed the ability to run PHP4 and PHP5 on the same server +simultaneously. This will be rolled out to all users in the next couple of weeks. Some +servers already have this ability while most will see it in the next two weeks."</em> +</blockquote> + +But... hang on? Does it say anything about migrating to Apache2? I don't think so! What's worse, is that quite a few things changed with Apache2, in particular the way FastCGI handlers are declared: + +<% highlight :text do %> +# Apache 1.3: +AddHandler fastcgi-script .fcgi + +# Apache 2: +AddHandler fcgid-script .fcgi +<% end %> + +See? Different. This is due to the fact that "@mod_fcgid@ is used instead of @mod_fastcgi@ on Apache 2":http://wiki.rubyonrails.org/rails/pages/Debian+mod_fastcgi+Notes. + The fix was easy, of course, and now my site is up and running again (and actually running faster)... but, I wonder, why the hell wasn't I informed? Is it acceptable? It sounds like I might end up on a VPS sooner than expected, unless BlueHost doesn't roll out some new exciting feature soon, as I think it might...
M content/articles/boolean-search.bbcodecontent/articles/boolean-search.bbcode

@@ -12,104 +12,104 @@ - google

type: article toc: true ----- -These days, it is necessary to use a search engines to find the information you want. When the World Wide Web was smaller, search engines weren't an essential websurfing tool, but once the Web started growing exponentially, and hosting literally billions of documents and files, even normal searches aren't enough to find important information, especially when it is not readily available. So, I'm going to show you a more powerful way to search.[b]Learning how to search[/b] - -Imagine yourself in the shoes of someone who has never used the Internet before. That's pretty rare nowadays, but it does happen. Take my dad, for example, who recently asked me something like "Where can I find a map of the Internet?". I explained that there wasn't any such thing because the Web is too dynamic to be mappable, and that's why we use search engines. - -I introduced him to Google [1], and he has since started to use search engines regularly. He didn't have much luck on his first few tries, but eventually he learned how to search properly. - -Searching the web is easy (just type in a word and hit enter), but finding stuff can be tricky, especially if you don't know enough about a subject to narrow your search down. Most people (including myself) tend to find what they're looking for only after multiple searches: we start with a general item, check the results, and restrict the next search based on what we learned from the previous one. While this is generally successful, every once in a while you will find yourself oging in circles. - -Let's look at a sample situation: I want to learn Ruby on Rails [2] and I want a free host to try it out. So, I go on Google and type something like: - -[i]ruby on rails free hosting[/i] - -I immediately find various blog entries referring to a project that aims to offer free hosting to try out the Ruby-based framework "Rails Playground". [3] It seems to be the perfect solution - they offer, completely free, enough space to try out Rails. It's a pity they recently decided to close new account registration, so now the whole thing is useless. - -Variants of the search query mentioned above bring up stuff related to Rails Playground. The project became so well-known that almost every Rails-related blog mentioned it at some point as the only place offering free hosting supporting Rails. Since it is useless now, is there a way to prevent Google (or other search engines) from displaying Rails Playground related results? Yes! - -You would need something like this: - -[i]rails free hosting -playground -railsplayground[/i] - -In this new query I excluded the words "playground" and "railsplayground" using a minus sign before them so I would find other results that didn't refer to the project. In the end, I didn't actually find any other free hosting that supported rails, but I did find the following: - -- a company which offers free rails hosting for testing purposes (until they officially launch their service) -- a guy who offered some space on his private server for testing rails (no longer available) - -Although I didn't find anything equivalent to Rails Playground, I didn't waste time either going in circles or scrolling through tons of pages trying to find something else. Actually, most people know how to exclude (or include) words in Google searches but they rarely do it. Furthermorte, most people don't know that there are many more search functions available on almost all the popular search engines. These functions, like the minus sign, are called Boolean operators. - - -[b]A few words about Boolean algebra: [/b] - -Boolean searches get their name from George Bool[4], the inventor of Boolean algebra[5], which is a particular algebraic structure involving three fundamental operators: AND, OR and NOT. If you attended any math class or course you should be already familiar with it. If not, here is a short summary of some of the concepts I will discuss in upcoming sections. - -Using Boolean searches (rather than Boolean algebra), the expressions A, B, C, etc. can be considered words, and "A &lt;Boolean operator B" can be considered search queries. - -- A AND B: pages must contain both words A and B. -- A OR B: pages must contain either the word A or the word B -- NOT A: pages must not contain the word A - -Trivial. Now let's see some more examples: - -- (A OR B) AND (NOT C): here I used brackets to create nesting, which causes expressions within brackets to be carried out before the rest, so the query means: "search for pages containing either A or B but which do not contain C". - -- (A OR (C AND D)) AND (NOT (F OR G)): similar but more complex than the previous: "search for pages containing either A or both C and D. Additionally, only F or G can be present, or neither of them". - -In some applications, like electrical circuits, NOR, NAND and XOR operators are also used to express Not OR, Not AND and eXclusive OR. As for search engines, only some of them support the XOR operator. A XOR B means that pages can contain either A but not B or B but not B. - - -[b]Boolean search and Google[/b] - -After reading this you might want to try typing Boolean expressions like "(food AND for) AND (cats OR DOGS) AND (NOT birds)" into a search engine, but that won't work. A Boolean expression typed "as is" rarely works on a search engine (it isn't supported because it's considered to be not user friendly enough). Google in particular adopted a more intuitive way[6] of performing Boolean searches. - -For starters, you almost always perform a Boolean search when searching something on Google simply because they decided (like most major search engines have) to automatically include the AND operator unless OR is specified. - -Searching the phrase "food for dogs" actually corresponds to "food AND for AND dogs" (using the proper Boolean expression). Presumably, this was done to prevent the search engine from delivering too many (and usually inconsistent) results. The other possibility (the default in MySQL's FULLTEXT boolean search[7]) would be to use the OR operator by default. Thus, searching for "food for dogs" might deliver results about food for cats, other pets, or even food in general. - -To improve the precision of their searches, Google also implements automatic exclusion for common words (like "for" in the example below). However, on occasion, a common word needs to be included in a search. To be fair,usually you will find what you are looking for, even with common words excluded. Nevertheless, to force Google to include a word, just add a plus symbol before it, like "+for". - -Similarly, a minus in front of a word (rails free hosting -playground -railsplayground) forces Google to exclude a word from the search query: in other words, the minus sign is Google's version of the Boolean NOT operator. -In order to transform the Boolean expression that I used at the start of this chapter - (food AND for) AND (cats OR DOGS) AND (NOT birds) - into a proper query accepted by Google, I have to write: "food for" "cats OR dogs" -birds. The OR operator [i]must[/i] be specified, and anything in parentheses roughly corresponds to quotation marks because Google searches for the exact phrase enclosed in the quotation marks (also evaluating an OR operator, if present). - -The biggest limitation of Google when it comes to Boolean searches is the lack of support for nested expressions. Something like (food AND (NOT for)) AND (cats OR dogs) AND (NOT birds) cannot be translated into something like [i]"food -for" "cats OR dogs" -birds[/i] because Google will not evaluate the "-" operator if it is enclosed in quotation marks. Something more complex like: - -[i]((food AND for) AND (cats OR DOGS) AND (NOT birds)) OR ((stuff AND for) AND (goats OR horses) AND (NOT (cows OR bulls)))[/i] - -cannot be translated into a Google-friendly query. Normal people probably won't ever do that complicated a search, but you never know... - - -[b]All the other search engines, strategies and conclusions[/b] - -There are various articles (see [8][9][10]) about how Boolean search has been implemented in various major search engines and AltaVista[11], AlltheWeb[12] and MSN Search[13] seem to support Boolean search features better than Google. All of them support the standard Boolean operators, as well as the "+" and "-" symbols, but apparently only MSN Search[13] seems to support full Boolean search queries with nesting: I actually managed to execute my previous complex example: - -[i]((food AND for) AND (cats OR DOGS) AND (NOT birds)) OR ((stuff AND for) AND (goats OR horses) AND (NOT (cows OR bulls)))[/i] - -and I got some decent results. The only (understandable) exception is that I had to specify +for to have the word "for" included. - -Although Boolean search is useful, it is not the only way to get relevant results as quickly as possible. Additional thinking is required to prepare a query properly. In everyday life, you won't really use heavily nested queries, simply because other methods are more effective. If you're interested in learning how to search I'd recommend a very informative article available at Waikato University[14]. - -I found out that a mix between making multiple search attempts and using basic Boolean queries (word exclusion in particular) can deliver pertinent results fairly readily. Suppose you've heard something regarding a person named Halley who contributes to an IT-related community and that someone mentioned the word "kernel" when talking about him, and you remember that it wasn't referring to Linux. You could come up with something like: - -Halley kernel -Linux - -Et voila': Halley's CyberArmy Profile[15] appears as the first search result in Google! If you typed just [i]Halley[/i] you wouldn't have found the right one right away; you would probably get more information about the Halley's Comet or the astronomer Sir Edmund Halley. If you typed [i]kernel Halley[/i] you'd have found something about Kernel Halley on zZine first and then on CyberArmy lower down in the search results. - -Boolean search can be useful, but it must not be abused. Google's decision to implement only partial Boolean support without standard Boolean operation was probably the best choice to achieve both pertinent results and user-friendliness. - -[b]Notes and further resources[/b] -[1] Google Inc.: [url]http://www.google.com/[/url] -[2] Ruby on Rails framework: [url]http://www.rubyonrails.org/[/url] -[3] Ruby Playground: [url]http://www.railsplayground.com/[/url] -[4] George Bool, Wikipedia Page: [url]http://en.wikipedia.org/wiki/George_Boole[/url] -[5] Boolean Algebra, Wikipedia Page: [url]http://en.wikipedia.org/wiki/Boolean_algebra[/url] -[6] Google Help on Advanced Search: [url]http://www.google.com/help/refinesearch.html[/url] -[7] MySQL FULLTEXT boolean search: [url]http://dev.mysql.com/doc/mysql/en/fulltext-boolean.html[/url] -[8] Search engines that implement boolean search (outdated): [url]http://searchenginewatch.com/facts/article.php/2155991[/url] -[9] Boolean Searching on the Internet: [url]http://library.albany.edu/internet/boolean.html[/url] -[10] How to choose a search engine or directory: [url]http://library.albany.edu/internet/choose.html#logic[/url] -[11] AltaVista Special Search Terms: [url]http://www.altavista.com/help/search/syntax[/url] -[12] AlltheWeb Query Language: [url]http://alltheweb.com/help/faqs/query_language#2[/url] -[13] MSN Search: [url]http://search.msn.com/[/url] -[14] "The Assignment Process: Search Strategies": [url]http://www.waikato.ac.nz/library/learning/g_strategies.shtml[/url] -[15] Halley's CyberArmy Profile: [/url]http://www.cyberarmy.net/~Halley/[/url] +These days, it is necessary to use a search engines to find the information you want. When the World Wide Web was smaller, search engines weren't an essential websurfing tool, but once the Web started growing exponentially, and hosting literally billions of documents and files, even normal searches aren't enough to find important information, especially when it is not readily available. So, I'm going to show you a more powerful way to search.[b]Learning how to search[/b] + +Imagine yourself in the shoes of someone who has never used the Internet before. That's pretty rare nowadays, but it does happen. Take my dad, for example, who recently asked me something like "Where can I find a map of the Internet?". I explained that there wasn't any such thing because the Web is too dynamic to be mappable, and that's why we use search engines. + +I introduced him to Google [1], and he has since started to use search engines regularly. He didn't have much luck on his first few tries, but eventually he learned how to search properly. + +Searching the web is easy (just type in a word and hit enter), but finding stuff can be tricky, especially if you don't know enough about a subject to narrow your search down. Most people (including myself) tend to find what they're looking for only after multiple searches: we start with a general item, check the results, and restrict the next search based on what we learned from the previous one. While this is generally successful, every once in a while you will find yourself oging in circles. + +Let's look at a sample situation: I want to learn Ruby on Rails [2] and I want a free host to try it out. So, I go on Google and type something like: + +[i]ruby on rails free hosting[/i] + +I immediately find various blog entries referring to a project that aims to offer free hosting to try out the Ruby-based framework "Rails Playground". [3] It seems to be the perfect solution - they offer, completely free, enough space to try out Rails. It's a pity they recently decided to close new account registration, so now the whole thing is useless. + +Variants of the search query mentioned above bring up stuff related to Rails Playground. The project became so well-known that almost every Rails-related blog mentioned it at some point as the only place offering free hosting supporting Rails. Since it is useless now, is there a way to prevent Google (or other search engines) from displaying Rails Playground related results? Yes! + +You would need something like this: + +[i]rails free hosting -playground -railsplayground[/i] + +In this new query I excluded the words "playground" and "railsplayground" using a minus sign before them so I would find other results that didn't refer to the project. In the end, I didn't actually find any other free hosting that supported rails, but I did find the following: + +- a company which offers free rails hosting for testing purposes (until they officially launch their service) +- a guy who offered some space on his private server for testing rails (no longer available) + +Although I didn't find anything equivalent to Rails Playground, I didn't waste time either going in circles or scrolling through tons of pages trying to find something else. Actually, most people know how to exclude (or include) words in Google searches but they rarely do it. Furthermorte, most people don't know that there are many more search functions available on almost all the popular search engines. These functions, like the minus sign, are called Boolean operators. + + +[b]A few words about Boolean algebra: [/b] + +Boolean searches get their name from George Bool[4], the inventor of Boolean algebra[5], which is a particular algebraic structure involving three fundamental operators: AND, OR and NOT. If you attended any math class or course you should be already familiar with it. If not, here is a short summary of some of the concepts I will discuss in upcoming sections. + +Using Boolean searches (rather than Boolean algebra), the expressions A, B, C, etc. can be considered words, and "A &lt;Boolean operator B" can be considered search queries. + +- A AND B: pages must contain both words A and B. +- A OR B: pages must contain either the word A or the word B +- NOT A: pages must not contain the word A + +Trivial. Now let's see some more examples: + +- (A OR B) AND (NOT C): here I used brackets to create nesting, which causes expressions within brackets to be carried out before the rest, so the query means: "search for pages containing either A or B but which do not contain C". + +- (A OR (C AND D)) AND (NOT (F OR G)): similar but more complex than the previous: "search for pages containing either A or both C and D. Additionally, only F or G can be present, or neither of them". + +In some applications, like electrical circuits, NOR, NAND and XOR operators are also used to express Not OR, Not AND and eXclusive OR. As for search engines, only some of them support the XOR operator. A XOR B means that pages can contain either A but not B or B but not B. + + +[b]Boolean search and Google[/b] + +After reading this you might want to try typing Boolean expressions like "(food AND for) AND (cats OR DOGS) AND (NOT birds)" into a search engine, but that won't work. A Boolean expression typed "as is" rarely works on a search engine (it isn't supported because it's considered to be not user friendly enough). Google in particular adopted a more intuitive way[6] of performing Boolean searches. + +For starters, you almost always perform a Boolean search when searching something on Google simply because they decided (like most major search engines have) to automatically include the AND operator unless OR is specified. + +Searching the phrase "food for dogs" actually corresponds to "food AND for AND dogs" (using the proper Boolean expression). Presumably, this was done to prevent the search engine from delivering too many (and usually inconsistent) results. The other possibility (the default in MySQL's FULLTEXT boolean search[7]) would be to use the OR operator by default. Thus, searching for "food for dogs" might deliver results about food for cats, other pets, or even food in general. + +To improve the precision of their searches, Google also implements automatic exclusion for common words (like "for" in the example below). However, on occasion, a common word needs to be included in a search. To be fair,usually you will find what you are looking for, even with common words excluded. Nevertheless, to force Google to include a word, just add a plus symbol before it, like "+for". + +Similarly, a minus in front of a word (rails free hosting -playground -railsplayground) forces Google to exclude a word from the search query: in other words, the minus sign is Google's version of the Boolean NOT operator. +In order to transform the Boolean expression that I used at the start of this chapter - (food AND for) AND (cats OR DOGS) AND (NOT birds) - into a proper query accepted by Google, I have to write: "food for" "cats OR dogs" -birds. The OR operator [i]must[/i] be specified, and anything in parentheses roughly corresponds to quotation marks because Google searches for the exact phrase enclosed in the quotation marks (also evaluating an OR operator, if present). + +The biggest limitation of Google when it comes to Boolean searches is the lack of support for nested expressions. Something like (food AND (NOT for)) AND (cats OR dogs) AND (NOT birds) cannot be translated into something like [i]"food -for" "cats OR dogs" -birds[/i] because Google will not evaluate the "-" operator if it is enclosed in quotation marks. Something more complex like: + +[i]((food AND for) AND (cats OR DOGS) AND (NOT birds)) OR ((stuff AND for) AND (goats OR horses) AND (NOT (cows OR bulls)))[/i] + +cannot be translated into a Google-friendly query. Normal people probably won't ever do that complicated a search, but you never know... + + +[b]All the other search engines, strategies and conclusions[/b] + +There are various articles (see [8][9][10]) about how Boolean search has been implemented in various major search engines and AltaVista[11], AlltheWeb[12] and MSN Search[13] seem to support Boolean search features better than Google. All of them support the standard Boolean operators, as well as the "+" and "-" symbols, but apparently only MSN Search[13] seems to support full Boolean search queries with nesting: I actually managed to execute my previous complex example: + +[i]((food AND for) AND (cats OR DOGS) AND (NOT birds)) OR ((stuff AND for) AND (goats OR horses) AND (NOT (cows OR bulls)))[/i] + +and I got some decent results. The only (understandable) exception is that I had to specify +for to have the word "for" included. + +Although Boolean search is useful, it is not the only way to get relevant results as quickly as possible. Additional thinking is required to prepare a query properly. In everyday life, you won't really use heavily nested queries, simply because other methods are more effective. If you're interested in learning how to search I'd recommend a very informative article available at Waikato University[14]. + +I found out that a mix between making multiple search attempts and using basic Boolean queries (word exclusion in particular) can deliver pertinent results fairly readily. Suppose you've heard something regarding a person named Halley who contributes to an IT-related community and that someone mentioned the word "kernel" when talking about him, and you remember that it wasn't referring to Linux. You could come up with something like: + +Halley kernel -Linux + +Et voila': Halley's CyberArmy Profile[15] appears as the first search result in Google! If you typed just [i]Halley[/i] you wouldn't have found the right one right away; you would probably get more information about the Halley's Comet or the astronomer Sir Edmund Halley. If you typed [i]kernel Halley[/i] you'd have found something about Kernel Halley on zZine first and then on CyberArmy lower down in the search results. + +Boolean search can be useful, but it must not be abused. Google's decision to implement only partial Boolean support without standard Boolean operation was probably the best choice to achieve both pertinent results and user-friendliness. + +[b]Notes and further resources[/b] +[1] Google Inc.: [url]http://www.google.com/[/url] +[2] Ruby on Rails framework: [url]http://www.rubyonrails.org/[/url] +[3] Ruby Playground: [url]http://www.railsplayground.com/[/url] +[4] George Bool, Wikipedia Page: [url]http://en.wikipedia.org/wiki/George_Boole[/url] +[5] Boolean Algebra, Wikipedia Page: [url]http://en.wikipedia.org/wiki/Boolean_algebra[/url] +[6] Google Help on Advanced Search: [url]http://www.google.com/help/refinesearch.html[/url] +[7] MySQL FULLTEXT boolean search: [url]http://dev.mysql.com/doc/mysql/en/fulltext-boolean.html[/url] +[8] Search engines that implement boolean search (outdated): [url]http://searchenginewatch.com/facts/article.php/2155991[/url] +[9] Boolean Searching on the Internet: [url]http://library.albany.edu/internet/boolean.html[/url] +[10] How to choose a search engine or directory: [url]http://library.albany.edu/internet/choose.html#logic[/url] +[11] AltaVista Special Search Terms: [url]http://www.altavista.com/help/search/syntax[/url] +[12] AlltheWeb Query Language: [url]http://alltheweb.com/help/faqs/query_language#2[/url] +[13] MSN Search: [url]http://search.msn.com/[/url] +[14] "The Assignment Process: Search Strategies": [url]http://www.waikato.ac.nz/library/learning/g_strategies.shtml[/url] +[15] Halley's CyberArmy Profile: [/url]http://www.cyberarmy.net/~Halley/[/url]
M content/articles/cakephp-overview.textilecontent/articles/cakephp-overview.textile

@@ -13,6 +13,6 @@ - tutorial

type: article toc: true ----- -_"There are many frameworks available for the PHP programming language nowadays, and especially a lot of RAD (Rapid Application Development) frameworks which aim to make web development faster, less tedious and more organized. CakePHP was one of the first frameworks to port the RAD philosophy - which became so popular after Ruby on Rails - to the PHP programming language. CakePHP v1.0 is now one of the most popular and intuitive solutions for PHP programming, let's discover why..."_ - +_"There are many frameworks available for the PHP programming language nowadays, and especially a lot of RAD (Rapid Application Development) frameworks which aim to make web development faster, less tedious and more organized. CakePHP was one of the first frameworks to port the RAD philosophy - which became so popular after Ruby on Rails - to the PHP programming language. CakePHP v1.0 is now one of the most popular and intuitive solutions for PHP programming, let's discover why..."_ + "Read the full article":http://hades.phparch.com/ceres/public/article/index.php/art::cakephp::overview on "php|architect article repository":http://hades.phparch.com/artemis/main/
M content/articles/concatenative-020.textilecontent/articles/concatenative-020.textile

@@ -13,34 +13,34 @@ - concatenative

type: article toc: true ----- -Version 0.2.0. of the "Concatenative":/concatenative DSL has been "released":http://rubyforge.org/frs/?group_id=8068&release_id=33575. - -Here are some highlights from the changelog: - -* Implemented new combinators: -** binrec -** split -** twodip -** threedip -* Performance improvements: -** Stack is never copied. -** No symbol/string conversion when processing words. -* Pseudo-namespace support (e.g. :kernel/:while and :math/:factorial) -* ~ and <= operators to unquote and define words, respectively. -* No more uppercase words! - -Oddly enough, I realized that it is possible to defined methods named after reserved words like "while" or "if", so now all the concatenative words (combinators) in @kernel.rb@ are now defined _without_ a leading undersore. Similarly, there's no real need to use UPPERCASE symbols, so as a result, method lookup is significantly faster and will use less resources. - -Here's how the lookup works. Say you have the following program: - -<% highlight :ruby do %> -[[1,2,3], [4.5.6], :concat] -<% end %> - -If @:concat@ has been defined by the user (@:concat <= [...]@), that definition will be used, otherwise the @Concatenative::Kernel@ combinator @concat@ will be called. If you want to use the corresponding Ruby method, all you have to do is specifying the arity explicitly using the @|@ operator. - -To remove any ambiguity, it is now possible to specify the _namespace_ of a word explicitly, e.g. :kernel/:concat or :ruby/concat. The @/@ operator simply concatenates the two symbols together (@:"kernel/concat"@) and sets the namespace (@:kernel@) and name (@:concat@) of the new symbol. @:kernel@ and @:ruby@ are not meant to be used when defining new words, but you can use anything else you like, for example :math/:factorial or :local/:a, etc. - -As I pointed out in the "first article":/articles/concatenative-programming-in-ruby about concatenative, even with the new performance improvement a concatenative program still runs slower than a standard Ruby program, but at least now you won't run out of stack space (the _Ruby_ stack, in this case) too soon. - +Version 0.2.0. of the "Concatenative":/concatenative DSL has been "released":http://rubyforge.org/frs/?group_id=8068&release_id=33575. + +Here are some highlights from the changelog: + +* Implemented new combinators: +** binrec +** split +** twodip +** threedip +* Performance improvements: +** Stack is never copied. +** No symbol/string conversion when processing words. +* Pseudo-namespace support (e.g. :kernel/:while and :math/:factorial) +* ~ and <= operators to unquote and define words, respectively. +* No more uppercase words! + +Oddly enough, I realized that it is possible to defined methods named after reserved words like "while" or "if", so now all the concatenative words (combinators) in @kernel.rb@ are now defined _without_ a leading undersore. Similarly, there's no real need to use UPPERCASE symbols, so as a result, method lookup is significantly faster and will use less resources. + +Here's how the lookup works. Say you have the following program: + +<% highlight :ruby do %> +[[1,2,3], [4.5.6], :concat] +<% end %> + +If @:concat@ has been defined by the user (@:concat <= [...]@), that definition will be used, otherwise the @Concatenative::Kernel@ combinator @concat@ will be called. If you want to use the corresponding Ruby method, all you have to do is specifying the arity explicitly using the @|@ operator. + +To remove any ambiguity, it is now possible to specify the _namespace_ of a word explicitly, e.g. :kernel/:concat or :ruby/concat. The @/@ operator simply concatenates the two symbols together (@:"kernel/concat"@) and sets the namespace (@:kernel@) and name (@:concat@) of the new symbol. @:kernel@ and @:ruby@ are not meant to be used when defining new words, but you can use anything else you like, for example :math/:factorial or :local/:a, etc. + +As I pointed out in the "first article":/articles/concatenative-programming-in-ruby about concatenative, even with the new performance improvement a concatenative program still runs slower than a standard Ruby program, but at least now you won't run out of stack space (the _Ruby_ stack, in this case) too soon. + If you have any issues to report, feature requests, etc., feel free to use "GitHub":http://github.com/h3rald/concatenative/issues to do so.
M content/articles/concatenative-programming-in-ruby.textilecontent/articles/concatenative-programming-in-ruby.textile

@@ -20,8 +20,8 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com :id: 2696 :body: |- - It _is_ Reverse Polish Notation. Yes, normally concatenative languages are fairly low level, but not always: Factor is an example of modern, higher level concatenative language, for instance. - + It _is_ Reverse Polish Notation. Yes, normally concatenative languages are fairly low level, but not always: Factor is an example of modern, higher level concatenative language, for instance. + Obviously you won't start using Concatenative for your next web application, but it could be a good way to look into concatenative programming. I'll try to improve performance a little bit, but unfortunately certain optimization won't be possible due to the very nature of Ruby (especially for what concerns recursion). date: 2009-03-28 07:24:00 +01:00 tags:

@@ -31,147 +31,147 @@ - programming

type: article toc: true ----- -A while ago, I sat down examining a few "alternative programming languages":http://www.h3rald.com/articles/10-programming-languages I might decide to learn someday. Each of those languages has its own peculiarities, and I didn't choose them randomly, I chose them based on their popularity, power, paradigm and how actively they are developed. - -I included "Factor":http://factorcode.org/ as the only representative for _concatenative programming_, an interesting way to write programs, but seldom used in "recent" languages (except for Factor and a few others). - -h3. The Joy of concatenative programming - -If you have absolutely no clue on what I'm talking about, you should consider looking at the home page for the "Joy Programming Language":http://www.latrobe.edu.au/philosophy/phimvt/joy.html, or maybe just the "overview":http://www.latrobe.edu.au/philosophy/phimvt/joy/j00ovr.html: it should be enough to tikle your curiosity. - -Joy is often considered the _canonical_ concatenative programming language: a basic &mdash;but working&mdash; implementation of a simple programming language to illustrate the fundamentals of concatenative programming. Joy looks like this: - -@2 3 + dup *@ - -This simple programs computes the sum of 2 and 3, pushes it on the stack, duplicates it (using the @dup@ combinator) and then multiplies the two values, obtaining 25 as a result. - -Let's slow down a second. Here's what happens, exactly: - -|_. Element entered |_. Stack contents| -| 2 | [2] | -| 3 | [2 3] | -| + | [5] | -| dup | [5 5] | -| * | [25] | - -Got it? Let's take it one step further. When you enter @dup@ and then @*@, you are effectively computing the square of a number, so we can define the function @square@ simply as: - -@square == dup *@ - -In Ruby, this would be: - -<% highlight :ruby do %> -def square(x) - x*x -end -<% end %> - -What's unusual here? &mdash; Simple, there are no _variables_ involved. Joy doesn't need any explicit variable or _formal parameters_ of any sort. - -There's more. Take the following code: - -@[1 2 3 4] [dup *] map@ - -The @map@ combinator expects a list and a _quoted program_ (the same one used to compute the square) and produces a new list containing the result of that program applied to each element of the original list. Basically the equivalent of: - -<% highlight :ruby do %> -[1,2,3,4].map { |e| e*e } -<% end %> - -Do you notice anything different? &mdash; Yes, Joy doesn't need blocks or lambdas either, it uses _quoted programs_ instead, which are nothing but slightly fancier lists (or arrays, as you like). - -Let's recap then, Joy doesn't need of: - -* lambda functions or blocks (quotation does the trick) -* explicit parameters (everything you need is on the stack) -* variable assignments (same as above) -* explicit recursion (provided you can use combinators like linrec, primrec, binrec, etc.) - -I would consider this one of the best examples of _programming minimalism_: an incredibly simple syntax, a very small set of rules, but a good deal of power. - -h3. Ruby objects on the stack - -After reading about Joy, I realized that implementing something similar in Ruby would be an interesting mini-project (let's say a week of lunch breaks) to understand more about concatenative programming. It would also be pointless, too: a stack-based programming language implemented on top of one of the most high-level programming languages you can find isn't going to be fast, is it? Nevertheless, it would still be interesting. - -Ruby offers everything you need to build a Joy-like DSL: - -* You can use arrays as ...arrays, but also as quoted programs, and to model the stack itself. -* You can use integers, strings, etc. as themselves -* You can use Symbols as functions (we'll get to this in a minute) - -If you think about the following expression in postfix notation: - -@2 2 +@ - -We _could_ translate it into infix notation (@2 + 2@), because Ruby supports it, but it's not general enough. What you could do is this though: - -<% highlight :ruby do %>2.send(:+, 2)<% end %> - -Message sending. I can see all the SmallTalk sympathizers drooling already. Well yes, In Ruby, _everything_ is an object, so _everything_ has a receiver and maybe some parameters. In other words, every method call can be reduced to the following syntax: - -<% highlight :ruby do %>receiver.send(method, *params)<% end %> - -In this way, it is safe to assume that everything has a receiver, which could be understood as a function parameter, and may have 0 or more parameters. Take the following then: - -<% highlight :ruby do %>[2, 2, :+]<% end %> - -It's not too different from Joy, and it's still Ruby code. All you have to do is use something to do the following: - -* Take an array, and examine each item: -** If it's an object (non-Symbol), then push it on top of the stack. -** If it's a Symbol, then do something different, i.e.: -*** Find its receiver and its parameters and call a method. -*** Manipulate something on the stack. - -In this case, we have to find :+'s receiver and its parameter and we're sorted. - -Unfortunately Ruby's @arity@ method isn't that reliable. For example: @"test".instance_method(:sub).arity@ returns -1, while it should return "2" to be useful. So we have no choice but find a way to pass the method's arity explicitly, in some cases. - -For example like this: - -<% highlight :ruby do %> -["Ciao, Fabio", /Ciao/, "Hello", :sub|2] -<% end %> - -If we define a | operator for the Symbol class, it's not too bad after all. It's heavy, but in this way we can use _any_ Ruby method in postfix notation. - -h3. Introducing the Concatenative Ruby DSL - -"Concatenative":/concatenative is a simple Ruby DSL for concatenative programming. You can write concatenative programs inside ordinary Ruby arrays and execute them by calling either @Array#execute@ or @Kernel#concatenate@, like this: - -<% highlight :ruby do %> -require 'concatenative' - -concatenate( - 10, - [0, :==], - [1, :+], - [:dup, 1, :-], - [:*], - :linrec - ) -<% end %> - -This simple program calculates the factorial of 10. As you can see, no matter how unusual it may look, it is perfectly valid Ruby code and it is equivalent to the following Joy code: - -<code> -10 [0 =] [1 +] [dup 1 -] [*] linrec -</code> - -Granted, Joy looks better, but that's the tradeoff for not writing a parser for Joy syntax, after all. -Looking at the code above, there are a few things to keep in mind when programming with Concatenative: - -* You are using Ruby arrays, so you have to use commas, at least -* functions, operators and combinators (let's just call them _words_) are available as Ruby symbols -* The arity of all Ruby infix operators has been already set to "1" by concatenative using the @set_arity@ method (which simply stores the arity of a particular symbol in a constant hash) -* You can specify explicit arities using the | operator (@:gsub|2@, or @:join|1@) -* Unless the arity has been specified, an arity of 0 is assumed. -* You can define your own concatenative functions using the @Symbol#<=@ method, which expects a quoted concatenative program. - -h3. Performance issues - -In its current form, Concatenative can be very slow, as show the "benchmarks" provided in the /examples folder, especially if you use recursive combinators. This is understandable because everything is implemented in pure Ruby, which is totally unsuitable for low level stuff. - -If you are interested, you are more than welcome to submit patches and suggestions to improve Concatenative's performance, or, if you feel brave enough, you could help me create a C extension instead: things would become much faster then. - +A while ago, I sat down examining a few "alternative programming languages":http://www.h3rald.com/articles/10-programming-languages I might decide to learn someday. Each of those languages has its own peculiarities, and I didn't choose them randomly, I chose them based on their popularity, power, paradigm and how actively they are developed. + +I included "Factor":http://factorcode.org/ as the only representative for _concatenative programming_, an interesting way to write programs, but seldom used in "recent" languages (except for Factor and a few others). + +h3. The Joy of concatenative programming + +If you have absolutely no clue on what I'm talking about, you should consider looking at the home page for the "Joy Programming Language":http://www.latrobe.edu.au/philosophy/phimvt/joy.html, or maybe just the "overview":http://www.latrobe.edu.au/philosophy/phimvt/joy/j00ovr.html: it should be enough to tikle your curiosity. + +Joy is often considered the _canonical_ concatenative programming language: a basic &mdash;but working&mdash; implementation of a simple programming language to illustrate the fundamentals of concatenative programming. Joy looks like this: + +@2 3 + dup *@ + +This simple programs computes the sum of 2 and 3, pushes it on the stack, duplicates it (using the @dup@ combinator) and then multiplies the two values, obtaining 25 as a result. + +Let's slow down a second. Here's what happens, exactly: + +|_. Element entered |_. Stack contents| +| 2 | [2] | +| 3 | [2 3] | +| + | [5] | +| dup | [5 5] | +| * | [25] | + +Got it? Let's take it one step further. When you enter @dup@ and then @*@, you are effectively computing the square of a number, so we can define the function @square@ simply as: + +@square == dup *@ + +In Ruby, this would be: + +<% highlight :ruby do %> +def square(x) + x*x +end +<% end %> + +What's unusual here? &mdash; Simple, there are no _variables_ involved. Joy doesn't need any explicit variable or _formal parameters_ of any sort. + +There's more. Take the following code: + +@[1 2 3 4] [dup *] map@ + +The @map@ combinator expects a list and a _quoted program_ (the same one used to compute the square) and produces a new list containing the result of that program applied to each element of the original list. Basically the equivalent of: + +<% highlight :ruby do %> +[1,2,3,4].map { |e| e*e } +<% end %> + +Do you notice anything different? &mdash; Yes, Joy doesn't need blocks or lambdas either, it uses _quoted programs_ instead, which are nothing but slightly fancier lists (or arrays, as you like). + +Let's recap then, Joy doesn't need of: + +* lambda functions or blocks (quotation does the trick) +* explicit parameters (everything you need is on the stack) +* variable assignments (same as above) +* explicit recursion (provided you can use combinators like linrec, primrec, binrec, etc.) + +I would consider this one of the best examples of _programming minimalism_: an incredibly simple syntax, a very small set of rules, but a good deal of power. + +h3. Ruby objects on the stack + +After reading about Joy, I realized that implementing something similar in Ruby would be an interesting mini-project (let's say a week of lunch breaks) to understand more about concatenative programming. It would also be pointless, too: a stack-based programming language implemented on top of one of the most high-level programming languages you can find isn't going to be fast, is it? Nevertheless, it would still be interesting. + +Ruby offers everything you need to build a Joy-like DSL: + +* You can use arrays as ...arrays, but also as quoted programs, and to model the stack itself. +* You can use integers, strings, etc. as themselves +* You can use Symbols as functions (we'll get to this in a minute) + +If you think about the following expression in postfix notation: + +@2 2 +@ + +We _could_ translate it into infix notation (@2 + 2@), because Ruby supports it, but it's not general enough. What you could do is this though: + +<% highlight :ruby do %>2.send(:+, 2)<% end %> + +Message sending. I can see all the SmallTalk sympathizers drooling already. Well yes, In Ruby, _everything_ is an object, so _everything_ has a receiver and maybe some parameters. In other words, every method call can be reduced to the following syntax: + +<% highlight :ruby do %>receiver.send(method, *params)<% end %> + +In this way, it is safe to assume that everything has a receiver, which could be understood as a function parameter, and may have 0 or more parameters. Take the following then: + +<% highlight :ruby do %>[2, 2, :+]<% end %> + +It's not too different from Joy, and it's still Ruby code. All you have to do is use something to do the following: + +* Take an array, and examine each item: +** If it's an object (non-Symbol), then push it on top of the stack. +** If it's a Symbol, then do something different, i.e.: +*** Find its receiver and its parameters and call a method. +*** Manipulate something on the stack. + +In this case, we have to find :+'s receiver and its parameter and we're sorted. + +Unfortunately Ruby's @arity@ method isn't that reliable. For example: @"test".instance_method(:sub).arity@ returns -1, while it should return "2" to be useful. So we have no choice but find a way to pass the method's arity explicitly, in some cases. + +For example like this: + +<% highlight :ruby do %> +["Ciao, Fabio", /Ciao/, "Hello", :sub|2] +<% end %> + +If we define a | operator for the Symbol class, it's not too bad after all. It's heavy, but in this way we can use _any_ Ruby method in postfix notation. + +h3. Introducing the Concatenative Ruby DSL + +"Concatenative":/concatenative is a simple Ruby DSL for concatenative programming. You can write concatenative programs inside ordinary Ruby arrays and execute them by calling either @Array#execute@ or @Kernel#concatenate@, like this: + +<% highlight :ruby do %> +require 'concatenative' + +concatenate( + 10, + [0, :==], + [1, :+], + [:dup, 1, :-], + [:*], + :linrec + ) +<% end %> + +This simple program calculates the factorial of 10. As you can see, no matter how unusual it may look, it is perfectly valid Ruby code and it is equivalent to the following Joy code: + +<code> +10 [0 =] [1 +] [dup 1 -] [*] linrec +</code> + +Granted, Joy looks better, but that's the tradeoff for not writing a parser for Joy syntax, after all. +Looking at the code above, there are a few things to keep in mind when programming with Concatenative: + +* You are using Ruby arrays, so you have to use commas, at least +* functions, operators and combinators (let's just call them _words_) are available as Ruby symbols +* The arity of all Ruby infix operators has been already set to "1" by concatenative using the @set_arity@ method (which simply stores the arity of a particular symbol in a constant hash) +* You can specify explicit arities using the | operator (@:gsub|2@, or @:join|1@) +* Unless the arity has been specified, an arity of 0 is assumed. +* You can define your own concatenative functions using the @Symbol#<=@ method, which expects a quoted concatenative program. + +h3. Performance issues + +In its current form, Concatenative can be very slow, as show the "benchmarks" provided in the /examples folder, especially if you use recursive combinators. This is understandable because everything is implemented in pure Ruby, which is totally unsuitable for low level stuff. + +If you are interested, you are more than welcome to submit patches and suggestions to improve Concatenative's performance, or, if you feel brave enough, you could help me create a C extension instead: things would become much faster then. + At any rate, feel free to play with it. You can get the source from "GitHub":http://github.com/h3rald/concatenative/tree/master, you can get the gem from "RubyForge":http://rubyforge.org/projects/concatenative/ and you can submit ticket through "GitHub":http://github.com/h3rald/concatenative/issues as well.
M content/articles/design-patterns-in-ruby-review.textilecontent/articles/design-patterns-in-ruby-review.textile

@@ -17,156 +17,156 @@ - books

type: article toc: true ----- -!>/files/design_patterns_in_ruby.jpg! - -I finally got my hands on a shiny new copy of _Design Patterns in Ruby[1]_. The book itself is not brand new and it was already widely praised by many different people online, so I wanted to take a look for myself. - -To my surprise, the book is a hardcover edition, which makes it look more professional and more durable than the average programming book[2]. It's also smaller and shorter than the average programming book[2] (340 pages), which makes it much easier to carry around and less intimidating to read. It's also _not_ meant to be a reference book, so it is actually pleasant an easy to read all in one go, as you'll soon find out. - -What is it about? &mdash; well, design patters in the Ruby language of course. But it's not the usual brainwash of programming theory you would expect by a typical book on patters, it has _plenty_ of examples of real code. When I say _real code_ I don't mean the usual Dog/Cat/Horse/&lt;insert animal here&gt; classes or juke-box simulations which don't work at all etc. etc., I mean actual snippets from well known Ruby applications, like RubyGems, FXRuby and, of course, Rails. -OK well, there's an exception perhaps: Russ _did_ include a few wild life simulations (ponds with frogs and similar), but it's only for your own good, and for the sake of tradition. - -Anyhow, let's start from the beginning...h3. Part I: Patters and Ruby - -The first part of the book serves as a general introduction to the other two parts. If you know the basics of both design patterns and Ruby, you can safely skip this as you won't find anything of overwhelming interest here. - -Personally I really liked *Chapter 1* though, "Building better Programs with Patterns", in which Russ does a great job in summarizing the original GoF book[3] into four points:: - -* _Separate our the things that change from those that stay the same._ -* _Program to an interface, not an implementation._ -* _Prefer composition over inheritance._ -* _Delegate, delegate, delegate._ - -Also, although it does not come from the Design Patterns book but from building real systems, the author adds the YAGNI (You Ain't Gonna Need It) principle[4] as a reminder to resist the temptation of implementing things which _may_ be needed _later on_, even if they are not needed right now. -The chapter ends with an outline of the patterns which will be presented throughout the book: 14 out of the original 23 patterns by the Gand of Four will be discussed in Part II and 3 bonus "Ruby-only" patterns will be examined in Part III, as a special treat. - -*Chapter 2* (_Getting started with Ruby_) feels perhaps a bit out of place. As others pointed out[5], why does a book on advanced Ruby programming techniques include a 35-page-long introduction on the Ruby language? The answer was given by Russ himself in an interview[6]: - -<blockquote> -"The reason that I included the introductory chapter about Ruby in there was to make the book accessible to folks with little or no Ruby background. -Now honestly, I don’t think that you could come to my book with no background in Ruby and walk away from it an expert Ruby programmer &mdash; it’s not really that kind of introductory book. -But I do think that someone with experience in other languages could read my book and come away knowing about Ruby, understanding what all the shouting is about." -</blockquote> - -I admit, I skipped this chapter during my first reading because I was eager to move on to the main part of the book, but I did read it afterwards (I had to write this review after all!). It's quite a nice introduction aimed at the average .NET/Java developer: Russ provides a step-by-step presentation of the main features of the language while holding the reader by hand when something weird or scary comes about: - -<blockquote> -The slightly strange-looking syntax in this code is actually a tip-off something deep and important: In Ruby, everythng &mdash; and I mean _everything_ &mdash; is an object. -</blockquote> - -Of course Chapter 2 won't turn you into a Ruby guru, but it definitely fulfills one of the author's goals: bringing developers of other languages closer to Ruby, and give them a tiny taste of how Ruby can be _wickedly powerful_. - -h3. Part II: Patterns in Ruby - -Part II constitutes the bulk of the book, describing 14 GoF patterns in 220 pages. The patterns covered are the following: - -* Template Method -* Strategy -* Observer -* Composite -* Iterator -* Command -* Adapter -* Proxy -* Decorator -* Singleton -* Factory Method -* Abstract Factory Method -* Builder -* Interpreter - -Why not covering all 23? Well, because to be honest, they are rarely used in Ruby. Furthermore, in some cases some of the ones examined in the book may feel a bit _unnatural_ to the average Rubyist: how many times did you ever think about using an External Iterator when @each@ is normally available as default internal iterator for any Array-like class? - -Each chapter in this part is devoted to a particular pattern and it is organized in more or less the same way, as outlined in the following sections. - -h4. Introduction and Personal Anecdotes - -Most chapters start with a personal anecdote involving the author: it may be a memory related to his first job at the local grocery store (Chapter 8), or about the day he decided to buy his son a bike (Chapter 14): - -<blockquote> -"I remember the day we bought my son his first bike." [...] I spent hours trying to pull together a minor junkiard of parts according to instructions that would have baffled the entire National Security Agency. As it turned out, picking the bike was the easy part: putting it together was the real challenge. -</blockquote> - -This was used to introduce the Builder pattern, and how to use it to configure objects which include different logical parts. -Personally I find this technique particularly useful to introduce a particular problem from a different, more mundane prospective instead of starting off with an abstract theorethical description of the pattern itself. -The anecdote is then followed by the description of the actual programming problem for which the specific pattern will be used. - -h4. Description of the Pattern and Initial Implementation - -An initial implementation of the pattern in Ruby will be provided more or less immediately after the introduction of each chapter, often accompanied by a simple UML diagram. -This implementation normally has quite a few conceptual flaws, which are then examined and corrected step-by-step the chapter to obtain a more "Ruby-friendly" solution. - -h4. A More Rubyfied Version of the Pattern - -The final implementation of each pattern is often very different from the initial attempt, and it may contain quite a lot of Ruby-specific code. The author does an excellent job in suggesting pattern implementations which often use blocks, @Proc@ objects or method redefinitions when needed, to make the code more succint and more readable at the same time, as all Ruby code should be. - -By doing so, even people who are still learning Ruby will understand how to use some very useful Ruby idioms which can be a bit difficult to grasp otherwise. - -h4. Using and Abusing &lt;Pattern&gt; - -Patterns are often overused and misused, and some people normally end up wondering if they should be used at all, after all. This section (present as a matter of fact in _every_ chapter of part II an III) examines the pitfalls of the pattern and the most common mistakes developer make when applying it. -It is by far the most useful section of each chapter, and that's what I'll be reading and re-reading every time I'm thinking about using a particular pattern in my code. As a matter of fact, these sections make you realize that _every_ pattern has its own inherent flaws and dangers, and that it is far from being a Silver Bullet. Even when you're _supposed_ to use a pattern to accomplish something, be aware that _something nasty_ can happen unless you're extra careful: this, perhaps, is the true Golden Rule conveyed throughout the whole book. - -h4. &lt;Pattern&gt;s in the Wild - -This is another very interesting section which is included in every chapter of part II and III. After describing what a pattern does, how it _can_ be used and how it _should_ be used, you'll finally find some interesting examples taken from real world applications. -By "real world application" I mean something like ActiveRecord[7] (Observer, Command, Adapter, ...), DRb[8] (Proxy) or FXRuby[9] (Composite), for example, i.e. important programs and libraries which are used in production environments. -Personally, I was really glad to find such examples in this book: it definitely helps you feeling design patterns as something more practical and useful than pure software architecture theories. - -h4. Wrapping it Up - -"Wrapping it Up" is the title of the last section of each chapter of Part II and III. It's basically a summary of the whole chapter and thus a useful way to recap the most important concepts. I found this section particularly useful when using the book as a design pattern reference, after reading it for the first time: this section provides a quick and essential overview of each pattern -- and the most important DOs and DON'Ts, too. - -h3. Part III: Patterns for Ruby - -By the time you get to Part III you'll definitely feel that Ruby can do _more_. Some of the Ruby implementation of certain patterns described in the book make extensive use of blocks and Proc objects, and the @method_missing@ method (although potentially dangerous unless extra care is taken) gives us a more immediate way to obtain delegation, for example when creating Proxies. -Also the fact that objects can be modified at runtime by adding and removing methods "as needed" seems quite an underused feature in traditional patterns, simply because those patterns were first conceived for languages which are very different from Ruby and are perhaps less _liberal_ than Ruby when it comes to dynamic features[10]. - -These particular Ruby features can be used (and abused, of course) to implement more Ruby-esque patterns, such as the ones included in this part of the book: - -* Internal Domain-Specific Languages -* Meta-Programming -* Convention Over Configuration - -These are just examples, of course some may complain because the Active Record or ORM pattern are missing, but this is understandable as it may be considered too specific compared to the others. -Each pattern is examined in detail, and I particularly like way the DSL pattern was described: Chapter 16 explains how to develop a simple but effective Ruby DSL from scratch for creating file backups. This can be particularly useful for people who never tried creating DSLs before, but also for developers who tried, but want to improve their skills. - -Chapter 18 (Convention Over Configuration) is sufficiently clear and detailed, perhaps even too much if you already know how Rails was developed (and all the hype which follwed). - -On the other hand, I was a bit disappointed by Chapter 17 (Meta-Programming). Maybe it's because I built up extremely high expectations about it while reading the rest of the book, but it just felt too short and not detailed enough for my liking. If I had to write such a chapter (which would have been actually very hard), I would have started from an excellent post by Ola Bini[11] which introduces _eleven_ meta-programming techniques, and built up content and examples from there. The only reason why -- I think -- Russ didn't do it in his book was length/balance constraint: a _properly detailed_ chapter about meta-programming in Ruby could easily take up over forty pages! - -h3. The Verdict - -As I said in the beginning: this is not meant to be a complete, in-depth, reference book on everything you may want to know about design patterns in Ruby. That's why, as a matter of fact, you can actually read this book all the way through without getting utterly bored. Russ uses an informal, yet appropriate style to turn potentially complex, theorethical computer science principles into easy-to-understand, _useful_ tools which can truly improve the way you code. - -The whole book flows very very nicely. I actually recommend reading this book in sequence, without skipping chapters, because each pattern is described in a way that is somehow linked to the following ones, so that you can understand and learn about the pros and cons of each one in a more natural and useful way. - -OK, I would have loved to see Part III as long as Part II, probably, but overall I'm very, very satisfied of what the book taught me. The only problem is that it also made me suddenly realize all the naive design mistakes I've been making when coding in Ruby, so I'll now feel compelled to fix at least some of them... - -Definitely a worthwhile read, I just hope to see more books like this, or even a second edition of this one soon! - -h3. Notes - -fn1. "Design Patterns in Ruby":http://www.informit.com/store/product.aspx?isbn=0321490452 by Russ Olsen, Addison Wesley Professional, 2007. - -fn2. Think of "Programming Ruby: The Pragmatic Programmer's Guide, 2nd Ed.":http://www.pragprog.com/titles/ruby by Dave Thomas with Chad Fowler and Andy Hunt, Pragmatic Programmers, 2004. - -fn3. "Design Patterns: Elements of Reusable Object-Oriented Software":http://www.informit.com/store/product.aspx?isbn=0201633612, by By Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides (a.k.a. the _Gang of Four_), Addison Wesley Professional, 1994. - -fn4. For more information on the YAGNI principle, visit "You're NOT gonna need it":http://www.xprogramming.com/Practices/PracNotNeed.html, Ronald E Jeffries. - -fn5. See "Design Patterns in Ruby, a review":http://on-ruby.blogspot.com/2007/12/design-patterns-in-ruby-review.html, _On Ruby_blog. - -fn6. See "Russ Olsen Interview":http://on-ruby.blogspot.com/2008/01/russ-olsen-interview.html, _On Ruby_blog. - -fn7. "ActiveRecord":http://ar.rubyonrails.com/ is an implementation of the Object-Relational Mapping (ORM) pattern used by the Ruby on Rails framework. - -fn8. Distributed Ruby, see "Intro to DRb":http://chadfowler.com/ruby/drb.html by Chad Fowler. - -fn9. "FXRuby":http://www.fxruby.org/, a graphical toolkit written in Ruby. - -fn10. This can be a good or bad thing depending on the way you look at it, and what you want to use the language for. The fact that Ruby is dynamically typed makes it easier to do things which are totally impossible in C++ or Java, but it also introduces a whole new set of potential dangers. - -fn11. "Ruby Metaprogramming Techniques":http://ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html, Ola Bini: Programming Language Synchronicity. - - +!>/files/design_patterns_in_ruby.jpg! + +I finally got my hands on a shiny new copy of _Design Patterns in Ruby[1]_. The book itself is not brand new and it was already widely praised by many different people online, so I wanted to take a look for myself. + +To my surprise, the book is a hardcover edition, which makes it look more professional and more durable than the average programming book[2]. It's also smaller and shorter than the average programming book[2] (340 pages), which makes it much easier to carry around and less intimidating to read. It's also _not_ meant to be a reference book, so it is actually pleasant an easy to read all in one go, as you'll soon find out. + +What is it about? &mdash; well, design patters in the Ruby language of course. But it's not the usual brainwash of programming theory you would expect by a typical book on patters, it has _plenty_ of examples of real code. When I say _real code_ I don't mean the usual Dog/Cat/Horse/&lt;insert animal here&gt; classes or juke-box simulations which don't work at all etc. etc., I mean actual snippets from well known Ruby applications, like RubyGems, FXRuby and, of course, Rails. +OK well, there's an exception perhaps: Russ _did_ include a few wild life simulations (ponds with frogs and similar), but it's only for your own good, and for the sake of tradition. + +Anyhow, let's start from the beginning...h3. Part I: Patters and Ruby + +The first part of the book serves as a general introduction to the other two parts. If you know the basics of both design patterns and Ruby, you can safely skip this as you won't find anything of overwhelming interest here. + +Personally I really liked *Chapter 1* though, "Building better Programs with Patterns", in which Russ does a great job in summarizing the original GoF book[3] into four points:: + +* _Separate our the things that change from those that stay the same._ +* _Program to an interface, not an implementation._ +* _Prefer composition over inheritance._ +* _Delegate, delegate, delegate._ + +Also, although it does not come from the Design Patterns book but from building real systems, the author adds the YAGNI (You Ain't Gonna Need It) principle[4] as a reminder to resist the temptation of implementing things which _may_ be needed _later on_, even if they are not needed right now. +The chapter ends with an outline of the patterns which will be presented throughout the book: 14 out of the original 23 patterns by the Gand of Four will be discussed in Part II and 3 bonus "Ruby-only" patterns will be examined in Part III, as a special treat. + +*Chapter 2* (_Getting started with Ruby_) feels perhaps a bit out of place. As others pointed out[5], why does a book on advanced Ruby programming techniques include a 35-page-long introduction on the Ruby language? The answer was given by Russ himself in an interview[6]: + +<blockquote> +"The reason that I included the introductory chapter about Ruby in there was to make the book accessible to folks with little or no Ruby background. +Now honestly, I don’t think that you could come to my book with no background in Ruby and walk away from it an expert Ruby programmer &mdash; it’s not really that kind of introductory book. +But I do think that someone with experience in other languages could read my book and come away knowing about Ruby, understanding what all the shouting is about." +</blockquote> + +I admit, I skipped this chapter during my first reading because I was eager to move on to the main part of the book, but I did read it afterwards (I had to write this review after all!). It's quite a nice introduction aimed at the average .NET/Java developer: Russ provides a step-by-step presentation of the main features of the language while holding the reader by hand when something weird or scary comes about: + +<blockquote> +The slightly strange-looking syntax in this code is actually a tip-off something deep and important: In Ruby, everythng &mdash; and I mean _everything_ &mdash; is an object. +</blockquote> + +Of course Chapter 2 won't turn you into a Ruby guru, but it definitely fulfills one of the author's goals: bringing developers of other languages closer to Ruby, and give them a tiny taste of how Ruby can be _wickedly powerful_. + +h3. Part II: Patterns in Ruby + +Part II constitutes the bulk of the book, describing 14 GoF patterns in 220 pages. The patterns covered are the following: + +* Template Method +* Strategy +* Observer +* Composite +* Iterator +* Command +* Adapter +* Proxy +* Decorator +* Singleton +* Factory Method +* Abstract Factory Method +* Builder +* Interpreter + +Why not covering all 23? Well, because to be honest, they are rarely used in Ruby. Furthermore, in some cases some of the ones examined in the book may feel a bit _unnatural_ to the average Rubyist: how many times did you ever think about using an External Iterator when @each@ is normally available as default internal iterator for any Array-like class? + +Each chapter in this part is devoted to a particular pattern and it is organized in more or less the same way, as outlined in the following sections. + +h4. Introduction and Personal Anecdotes + +Most chapters start with a personal anecdote involving the author: it may be a memory related to his first job at the local grocery store (Chapter 8), or about the day he decided to buy his son a bike (Chapter 14): + +<blockquote> +"I remember the day we bought my son his first bike." [...] I spent hours trying to pull together a minor junkiard of parts according to instructions that would have baffled the entire National Security Agency. As it turned out, picking the bike was the easy part: putting it together was the real challenge. +</blockquote> + +This was used to introduce the Builder pattern, and how to use it to configure objects which include different logical parts. +Personally I find this technique particularly useful to introduce a particular problem from a different, more mundane prospective instead of starting off with an abstract theorethical description of the pattern itself. +The anecdote is then followed by the description of the actual programming problem for which the specific pattern will be used. + +h4. Description of the Pattern and Initial Implementation + +An initial implementation of the pattern in Ruby will be provided more or less immediately after the introduction of each chapter, often accompanied by a simple UML diagram. +This implementation normally has quite a few conceptual flaws, which are then examined and corrected step-by-step the chapter to obtain a more "Ruby-friendly" solution. + +h4. A More Rubyfied Version of the Pattern + +The final implementation of each pattern is often very different from the initial attempt, and it may contain quite a lot of Ruby-specific code. The author does an excellent job in suggesting pattern implementations which often use blocks, @Proc@ objects or method redefinitions when needed, to make the code more succint and more readable at the same time, as all Ruby code should be. + +By doing so, even people who are still learning Ruby will understand how to use some very useful Ruby idioms which can be a bit difficult to grasp otherwise. + +h4. Using and Abusing &lt;Pattern&gt; + +Patterns are often overused and misused, and some people normally end up wondering if they should be used at all, after all. This section (present as a matter of fact in _every_ chapter of part II an III) examines the pitfalls of the pattern and the most common mistakes developer make when applying it. +It is by far the most useful section of each chapter, and that's what I'll be reading and re-reading every time I'm thinking about using a particular pattern in my code. As a matter of fact, these sections make you realize that _every_ pattern has its own inherent flaws and dangers, and that it is far from being a Silver Bullet. Even when you're _supposed_ to use a pattern to accomplish something, be aware that _something nasty_ can happen unless you're extra careful: this, perhaps, is the true Golden Rule conveyed throughout the whole book. + +h4. &lt;Pattern&gt;s in the Wild + +This is another very interesting section which is included in every chapter of part II and III. After describing what a pattern does, how it _can_ be used and how it _should_ be used, you'll finally find some interesting examples taken from real world applications. +By "real world application" I mean something like ActiveRecord[7] (Observer, Command, Adapter, ...), DRb[8] (Proxy) or FXRuby[9] (Composite), for example, i.e. important programs and libraries which are used in production environments. +Personally, I was really glad to find such examples in this book: it definitely helps you feeling design patterns as something more practical and useful than pure software architecture theories. + +h4. Wrapping it Up + +"Wrapping it Up" is the title of the last section of each chapter of Part II and III. It's basically a summary of the whole chapter and thus a useful way to recap the most important concepts. I found this section particularly useful when using the book as a design pattern reference, after reading it for the first time: this section provides a quick and essential overview of each pattern -- and the most important DOs and DON'Ts, too. + +h3. Part III: Patterns for Ruby + +By the time you get to Part III you'll definitely feel that Ruby can do _more_. Some of the Ruby implementation of certain patterns described in the book make extensive use of blocks and Proc objects, and the @method_missing@ method (although potentially dangerous unless extra care is taken) gives us a more immediate way to obtain delegation, for example when creating Proxies. +Also the fact that objects can be modified at runtime by adding and removing methods "as needed" seems quite an underused feature in traditional patterns, simply because those patterns were first conceived for languages which are very different from Ruby and are perhaps less _liberal_ than Ruby when it comes to dynamic features[10]. + +These particular Ruby features can be used (and abused, of course) to implement more Ruby-esque patterns, such as the ones included in this part of the book: + +* Internal Domain-Specific Languages +* Meta-Programming +* Convention Over Configuration + +These are just examples, of course some may complain because the Active Record or ORM pattern are missing, but this is understandable as it may be considered too specific compared to the others. +Each pattern is examined in detail, and I particularly like way the DSL pattern was described: Chapter 16 explains how to develop a simple but effective Ruby DSL from scratch for creating file backups. This can be particularly useful for people who never tried creating DSLs before, but also for developers who tried, but want to improve their skills. + +Chapter 18 (Convention Over Configuration) is sufficiently clear and detailed, perhaps even too much if you already know how Rails was developed (and all the hype which follwed). + +On the other hand, I was a bit disappointed by Chapter 17 (Meta-Programming). Maybe it's because I built up extremely high expectations about it while reading the rest of the book, but it just felt too short and not detailed enough for my liking. If I had to write such a chapter (which would have been actually very hard), I would have started from an excellent post by Ola Bini[11] which introduces _eleven_ meta-programming techniques, and built up content and examples from there. The only reason why -- I think -- Russ didn't do it in his book was length/balance constraint: a _properly detailed_ chapter about meta-programming in Ruby could easily take up over forty pages! + +h3. The Verdict + +As I said in the beginning: this is not meant to be a complete, in-depth, reference book on everything you may want to know about design patterns in Ruby. That's why, as a matter of fact, you can actually read this book all the way through without getting utterly bored. Russ uses an informal, yet appropriate style to turn potentially complex, theorethical computer science principles into easy-to-understand, _useful_ tools which can truly improve the way you code. + +The whole book flows very very nicely. I actually recommend reading this book in sequence, without skipping chapters, because each pattern is described in a way that is somehow linked to the following ones, so that you can understand and learn about the pros and cons of each one in a more natural and useful way. + +OK, I would have loved to see Part III as long as Part II, probably, but overall I'm very, very satisfied of what the book taught me. The only problem is that it also made me suddenly realize all the naive design mistakes I've been making when coding in Ruby, so I'll now feel compelled to fix at least some of them... + +Definitely a worthwhile read, I just hope to see more books like this, or even a second edition of this one soon! + +h3. Notes + +fn1. "Design Patterns in Ruby":http://www.informit.com/store/product.aspx?isbn=0321490452 by Russ Olsen, Addison Wesley Professional, 2007. + +fn2. Think of "Programming Ruby: The Pragmatic Programmer's Guide, 2nd Ed.":http://www.pragprog.com/titles/ruby by Dave Thomas with Chad Fowler and Andy Hunt, Pragmatic Programmers, 2004. + +fn3. "Design Patterns: Elements of Reusable Object-Oriented Software":http://www.informit.com/store/product.aspx?isbn=0201633612, by By Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides (a.k.a. the _Gang of Four_), Addison Wesley Professional, 1994. + +fn4. For more information on the YAGNI principle, visit "You're NOT gonna need it":http://www.xprogramming.com/Practices/PracNotNeed.html, Ronald E Jeffries. + +fn5. See "Design Patterns in Ruby, a review":http://on-ruby.blogspot.com/2007/12/design-patterns-in-ruby-review.html, _On Ruby_blog. + +fn6. See "Russ Olsen Interview":http://on-ruby.blogspot.com/2008/01/russ-olsen-interview.html, _On Ruby_blog. + +fn7. "ActiveRecord":http://ar.rubyonrails.com/ is an implementation of the Object-Relational Mapping (ORM) pattern used by the Ruby on Rails framework. + +fn8. Distributed Ruby, see "Intro to DRb":http://chadfowler.com/ruby/drb.html by Chad Fowler. + +fn9. "FXRuby":http://www.fxruby.org/, a graphical toolkit written in Ruby. + +fn10. This can be a good or bad thing depending on the way you look at it, and what you want to use the language for. The fact that Ruby is dynamically typed makes it easier to do things which are totally impossible in C++ or Java, but it also introduces a whole new set of potential dangers. + +fn11. "Ruby Metaprogramming Techniques":http://ola-bini.blogspot.com/2006/09/ruby-metaprogramming-techniques.html, Ola Bini: Programming Language Synchronicity. + +
M content/articles/efficient-ruby-code-shortcut-review.textilecontent/articles/efficient-ruby-code-shortcut-review.textile

@@ -14,8 +14,8 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com/ :id: 205 :body: | - Matthew: if you can give me your email address (e.g. via your next comment, it won't be displayed publicly) I'll put you in contact with one of AW editor, and she'll try sorting out your problem. I'm sure you'll get your PDF pretty fast... - + Matthew: if you can give me your email address (e.g. via your next comment, it won't be displayed publicly) I'll put you in contact with one of AW editor, and she'll try sorting out your problem. I'm sure you'll get your PDF pretty fast... + date: 2008-01-21 05:47:00 +01:00 tags:

@@ -25,57 +25,57 @@ - books

type: article toc: true ----- -!>/files/efficient_ruby_shortcut.jpeg! - -The second shortcut from Addison-Wesley Professional series I'm going to review is called "Writing Efficient Ruby Code":http://www.informit.com/store/product.aspx?isbn=0321540034. A very promising title, especially considering that this book is only 50 pages long. - -As usual, this shortcut can be intended as a sort of programmer-friendly detailed cheatsheet: like the other ones in this series it sports a monitor-friendly landscape layout and does not go to deep into the details unless strictly necessary to understand a particular concept. - - -h3. The Author - -"Dr. Stefan Kaes":http://railsexpress.de/blog/, the author, contributed a lot to improve Ruby on Rails' performance by refactoring portions of its core and try to "get maximum speed out of performance-critical sections of code". This short but interesting shortcut groups together a lot of performance tweaks, tips and tricks but also some "anti-patterns" Kaes was able to identify through his career as programming teacher Ruby software consultant and key Rails contributor. - -h3. The Contents - -Like with the previously-covered "Mongrel shortcut":/articles/mongrel-shortcut-review, _Writing Efficient Ruby Code_ always goes straight to the point when it comes to identify problems. The first one mentioned is of course that the _Ruby Interpreter is Slow_, most people are aware of that, due to their direct experience or because this argument is normally used by non-Rubyists to argue the language's usability in commercial projects. What you may not know is why that is so, and that's where the first part of this book comes into play. - -bq. _"Ruby is a highly dynamic language: Almost all language entities are first-class citizens in that they can be created, changed, and destroyed at runtime. This comprises classes, modules, methods, constants, and class and instance variables. Only local variables are second-class citizens in Ruby: Whether a name refers to a local variable is determined at parse time._ - -This makes Ruby extremely flexible, but also more complex. Whever you use a name to refer to an object, Ruby has to search for the object it refers to, and this costs in terms of processing time. - -As a matter of fact, one of the most recurring tips in the book to improve code performance is the following: - -p=. *Method calls are expensive, use variables directly when possible.* - -Keep this in mind: @self.something@ is _not_ the same as @@something@. The end result is the same, but the first way costs more in terms of performance because Ruby has to look up the method name. -Similarly, *local variables _should_ be introduced as a way to "cache" the result of method calls*. Often you may feel "guilty" to introduce a new variable and keep calling the same method over and over: this should definitely be avoided. - -Other useful tips include, for example: - -* Use syntax constructs (e.g. assignments) as expressinons. Use evaluation precedences. -* Use interpolated strings @"... #{string_variable}"@ (there's also no performance difference if constant strings are used between @"@ or @'@) -* Use operators which update the data structure without copying it (when possible). Use @update@ or @merge@ to update hashes. -* Iterating using @for a in A@ is slightly faster than performing the same iteration using @each@, (it is the opposite in Ruby 1.9 though) -* do not use @return@ unless you have to -* test in order of expected case frequency -* Use parallel assignment (@a, b = 5, 6@) where applicable -* If a module gets included in only one other class (or module), it’s preferable to open the class instead. - -I deliberately chose not to elaborate any further on the tips listed above because otherwise I'll give a big chunk of the contents of the book itself. If you know Ruby enough, you may already know why such reccommendations make sense, but if you don't, _Writing Efficient Ruby Code_ can be a short but very interesting read. - -h3. The Good - -For each of the 30 "coding patterns" (and consequent anti-patterns) described in the book, the author does a great job explaining the reasons of doing something in a particular way, also through examples and benchmarks, where possible. - -Furthermore, this _shortcut_ can really be useful to grasp a few difference between Ruby 1.8.5, 1.8.6 and 1.9 in terms of performance: not all the patters apply to all Ruby implementations, and when that's the case it is clearly stated. - -h3. The Bad - -My only complaint about the book is probably the lack of details and more "specialized" patterns. Everything (except for a few Rails-specific tips) normally apply to Ruby _as a whole_, without going deeply to analyze specific libraries or third-party gems. As a result, once you get the general idea, some of the patters may seem pretty obvious or a logic consequence of others. - -It is also true that this is meant to be a _shortcut_, not a comprehensive analysis on code optimization techniques which can be applied to specific cases: something like this would require much more than 50 pages! - -h3. The Bottom Line - +!>/files/efficient_ruby_shortcut.jpeg! + +The second shortcut from Addison-Wesley Professional series I'm going to review is called "Writing Efficient Ruby Code":http://www.informit.com/store/product.aspx?isbn=0321540034. A very promising title, especially considering that this book is only 50 pages long. + +As usual, this shortcut can be intended as a sort of programmer-friendly detailed cheatsheet: like the other ones in this series it sports a monitor-friendly landscape layout and does not go to deep into the details unless strictly necessary to understand a particular concept. + + +h3. The Author + +"Dr. Stefan Kaes":http://railsexpress.de/blog/, the author, contributed a lot to improve Ruby on Rails' performance by refactoring portions of its core and try to "get maximum speed out of performance-critical sections of code". This short but interesting shortcut groups together a lot of performance tweaks, tips and tricks but also some "anti-patterns" Kaes was able to identify through his career as programming teacher Ruby software consultant and key Rails contributor. + +h3. The Contents + +Like with the previously-covered "Mongrel shortcut":/articles/mongrel-shortcut-review, _Writing Efficient Ruby Code_ always goes straight to the point when it comes to identify problems. The first one mentioned is of course that the _Ruby Interpreter is Slow_, most people are aware of that, due to their direct experience or because this argument is normally used by non-Rubyists to argue the language's usability in commercial projects. What you may not know is why that is so, and that's where the first part of this book comes into play. + +bq. _"Ruby is a highly dynamic language: Almost all language entities are first-class citizens in that they can be created, changed, and destroyed at runtime. This comprises classes, modules, methods, constants, and class and instance variables. Only local variables are second-class citizens in Ruby: Whether a name refers to a local variable is determined at parse time._ + +This makes Ruby extremely flexible, but also more complex. Whever you use a name to refer to an object, Ruby has to search for the object it refers to, and this costs in terms of processing time. + +As a matter of fact, one of the most recurring tips in the book to improve code performance is the following: + +p=. *Method calls are expensive, use variables directly when possible.* + +Keep this in mind: @self.something@ is _not_ the same as @@something@. The end result is the same, but the first way costs more in terms of performance because Ruby has to look up the method name. +Similarly, *local variables _should_ be introduced as a way to "cache" the result of method calls*. Often you may feel "guilty" to introduce a new variable and keep calling the same method over and over: this should definitely be avoided. + +Other useful tips include, for example: + +* Use syntax constructs (e.g. assignments) as expressinons. Use evaluation precedences. +* Use interpolated strings @"... #{string_variable}"@ (there's also no performance difference if constant strings are used between @"@ or @'@) +* Use operators which update the data structure without copying it (when possible). Use @update@ or @merge@ to update hashes. +* Iterating using @for a in A@ is slightly faster than performing the same iteration using @each@, (it is the opposite in Ruby 1.9 though) +* do not use @return@ unless you have to +* test in order of expected case frequency +* Use parallel assignment (@a, b = 5, 6@) where applicable +* If a module gets included in only one other class (or module), it’s preferable to open the class instead. + +I deliberately chose not to elaborate any further on the tips listed above because otherwise I'll give a big chunk of the contents of the book itself. If you know Ruby enough, you may already know why such reccommendations make sense, but if you don't, _Writing Efficient Ruby Code_ can be a short but very interesting read. + +h3. The Good + +For each of the 30 "coding patterns" (and consequent anti-patterns) described in the book, the author does a great job explaining the reasons of doing something in a particular way, also through examples and benchmarks, where possible. + +Furthermore, this _shortcut_ can really be useful to grasp a few difference between Ruby 1.8.5, 1.8.6 and 1.9 in terms of performance: not all the patters apply to all Ruby implementations, and when that's the case it is clearly stated. + +h3. The Bad + +My only complaint about the book is probably the lack of details and more "specialized" patterns. Everything (except for a few Rails-specific tips) normally apply to Ruby _as a whole_, without going deeply to analyze specific libraries or third-party gems. As a result, once you get the general idea, some of the patters may seem pretty obvious or a logic consequence of others. + +It is also true that this is meant to be a _shortcut_, not a comprehensive analysis on code optimization techniques which can be applied to specific cases: something like this would require much more than 50 pages! + +h3. The Bottom Line + Read it, re-read a few bits of it to make sure you grasp the most important concepts, and keep its table of contents in front of you as a reminder when refactoring your code!
M content/articles/firefox3-revealed.textilecontent/articles/firefox3-revealed.textile

@@ -15,27 +15,27 @@ - books

type: article toc: true ----- -When the SitePoint staff asked me to write an article summing up all the new features of Firefox 3, I gladly accepted: I wrote about Firefox before, and I thought it was just going to be a 2-3 hours job maximum. -After diving deeper into Firefox 3 development, reading dozens of different blogs and scouting Mozilla's web sites, I realized I was wrong: Firefox 3 introduced _a lot_ of new things, and keeping track of all of them, I admit, was quite a hard task. - -Nevertheless, I wrote the article and delivered it to SitePoint in time fore the release, but my editor "complained" that 8,300+ words was about 3 times over the minimum requirements for a feature article! -_"I don't really think that people can read the whole thing online"_ &mdash;, he said, and I somehow agreed. - -In the end, they decided to pack my "article" into a 30-pages PDF eBook which can be downloaded _absolutely free of charge_ from SitePoint web site as well, so here it is: - - -!</files/ff3-revealed.png! - -<br /><br /> -<span style="font-size: 1.5em;"> *"Firefox 3 Revealed":http://firefox.s3.sitepoint.com/ff3-revealed.zip* </span> - -If you prefer though, you can still read the article directly on SitePoint, "here":http://www.sitepoint.com/article/firefox-3-whats-new-whats-hot. - -This guide aims to give you a comprehensive overview of virtually _all_ the new features and improvements introduced by Firefox 3. - -<br /><br /> - -I would like to thank the whole SitePoint staff for giving me the opportunity to write this eBook, and in particular *"Matthew Magain":http://magain.com/blog/* for his help and support (and for creating the PDF on a Sunday evening!). -Additionally, I would also like to thank the Mozilla Development Team for their awesome job with Firefox 3 and everyone else who made this eBook possible. - -*Update:* Feel free to *"digg":http://digg.com/software/FireFox_3_Revealed_Free_ebook_from_SitePoint* this eBook! +When the SitePoint staff asked me to write an article summing up all the new features of Firefox 3, I gladly accepted: I wrote about Firefox before, and I thought it was just going to be a 2-3 hours job maximum. +After diving deeper into Firefox 3 development, reading dozens of different blogs and scouting Mozilla's web sites, I realized I was wrong: Firefox 3 introduced _a lot_ of new things, and keeping track of all of them, I admit, was quite a hard task. + +Nevertheless, I wrote the article and delivered it to SitePoint in time fore the release, but my editor "complained" that 8,300+ words was about 3 times over the minimum requirements for a feature article! +_"I don't really think that people can read the whole thing online"_ &mdash;, he said, and I somehow agreed. + +In the end, they decided to pack my "article" into a 30-pages PDF eBook which can be downloaded _absolutely free of charge_ from SitePoint web site as well, so here it is: + + +!</files/ff3-revealed.png! + +<br /><br /> +<span style="font-size: 1.5em;"> *"Firefox 3 Revealed":http://firefox.s3.sitepoint.com/ff3-revealed.zip* </span> + +If you prefer though, you can still read the article directly on SitePoint, "here":http://www.sitepoint.com/article/firefox-3-whats-new-whats-hot. + +This guide aims to give you a comprehensive overview of virtually _all_ the new features and improvements introduced by Firefox 3. + +<br /><br /> + +I would like to thank the whole SitePoint staff for giving me the opportunity to write this eBook, and in particular *"Matthew Magain":http://magain.com/blog/* for his help and support (and for creating the PDF on a Sunday evening!). +Additionally, I would also like to thank the Mozilla Development Team for their awesome job with Firefox 3 and everyone else who made this eBook possible. + +*Update:* Feel free to *"digg":http://digg.com/software/FireFox_3_Revealed_Free_ebook_from_SitePoint* this eBook!
M content/articles/from-firefox-to-deer-park.bbcodecontent/articles/from-firefox-to-deer-park.bbcode

@@ -13,36 +13,36 @@ - review

type: article toc: true ----- -On May 31st 2005 the Mozilla Foundation silently released the Deer Park browser... no, it's not another name change for Firefox, but the codename they gave to the long-awaited 1.1 release of the free, famous, award-winning browser. Actually what we have for now is just a non-feature complete developer preview release of the new milestone, the first alpha release, in other words. The alpha release nevertheless seems to be fully functional and already useable.ETAs for the actual stable version are not given as usual, but we should expect another alpha candidate soon hopefully (They wrote "June" on the [url=http://www.mozilla.org/projects/firefox/]roadmap[/url], and we're already in July). Anyhow, this developer-oriented preview release can be [url=http://www.mozilla.org/projects/firefox/]downloaded[/url] and installed on Windows, Linux, and Mac OS X systems plus eventually, [url=http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/deerpark/alpha1/contrib/]Solaris and others[/url]. The decision of using the codename Deer Park instead of naming the release Firefox 1.1 alpha 1 or something of the like was made to avoid the havoc which occurred before the official release of Firefox 1.0 (which was codenamed "Phoenix" by the way,) when some websites offered a late preview release as the actual new version to download. -This time when you install and run the program the Firefox name has been substituted with Deer Park Alpha 1, so for example Deer Park is used in the browser's title bar and in the "About Deer Park Alpha 1" menu under "Help". The icon they used for this testing release is not even the usual firefox icon - it represents a plain blueish globe with no fox whatsoever. They have definitely put in effort this time to avoid confusion. - -Furthermore, when the browser is installed it does not overwrite your existing firefox installation, simply because (on windows) it's installed under a directory named "Deer Park Alpha 1". As a side note, the process is "firefox.exe", so you cannot run Firefox and Deer Park at the same time: you'll just open another window of the browser which is already running. Having said this, let us now examine what is new in this developer's release. - -[b]Fixed bugs[/b] -Like any other Firefox Release, Deer Park comes with several [url=http://www.squarefree.com/burningedge/releases/1.1a1.html][b][i]Bug Fixes[/i][/b][/url]. On the official changelog there are many bugs reported to be fixed, sometimes they are hardly noticeable but I experienced some of them when browsing some websites and also when creating applications myself: - -- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=103638]103638[/url] - Targets with same name in different windows open in wrong window with javascript. -- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=97283]97283[/url] - Mouse wheel scrolling does not work for elements such as div using overflow - auto or scroll. -- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=251986]251986[/url] - Keyboard scrolling does not work for elements such as div using overflow - auto or scroll. -- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=245829]245829[/url] - Download manager progress and title do not update correctly, wrong number of files and percentage after finishing or cancelling a download. - -These are in my opinion the most notable of the notable bugs which have been fixed in this release. I was particularly relieved when I noticed that all the issues regarding scrolling divs or similar elements had been resolved. Also, it must be noted that Deer Park seems overall slightly faster than Firefox 1.0.4 (Note: I also have a Pentium II, that is why I could notice that probably). The speed increase is most probably caused by the base for Deer Park being the Mozilla 1.8 Beta 2 code, which is almost 1 year newer than what used for Firefox 1.0. - - -[b]New Features[/b] -Although announced as a non-feature complete release, it comes with some new and useful features. The new feature list includes nothing too extraordinary for now and they are all somehow minor changes but they really do represent some improvements. Perhaps the two most obvious features introduced with this release are the [i][b]Sanitize Deer Park[/b][/i] and the [i][b]Report Broken Sites[/b][/i] functions. The first one is accessible through the Tools menu and basically allows you to delete the Browsing History, Saved Form Information, Saved Passwords, Download History, Cookies and Cache. Actually you can accomplish the same feat via Options->privacy, but with Sanitize you need just one click. Convenience I suppose? - -The Report Broken Sites feature is reachable via the Help menu and basically starts a short wizard that you can use when you notice something wrong with a website. You just have to provide the url of the website, the problem you experienced (Browser not supported, cannot login, plugin not installed, other content missing, odd behaviou, odd appearence, etc.) and an optional description and email and then the report will be submitted to the Mozilla Deleopers. - -Additional features included are also [i]Image thumbnails as Tab icons[/i], used when viewing a single image with firefox, not a shocking feature really but it's just a little (tiny) bit of eyecandy I guess. Furthermore, when you try accessing an FTP server anonymously and that server doesn't allow anonymous access, you are prompted to provide appropriate credentials (before it just didn't let you in)... another little improvement, which probably will not change your life, but it's nice to know that it's there. - -Another more notable feature only for linux and mac users though allows changes made in the Preferences menu to be applied immediately without restarting your system. Using Windows on the other hand, they improved the option interface with a more extensive use of tabbed interfaces, and also additional options concerning tabbed browsing (BUT in my opinion the [url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox]tabbrowser preferences[/url] extension is still necessary to achieve certain behaviours). - -Regarding something more technical, among the so-called developers features there are various improvements regarding CSS support, in particular CSS2's [url=http://www.w3.org/TR/CSS21/generate.html#quotes-specify]quotes nesting[/url] and even some new CSS3 (!) features, like [url=http://www.w3.org/TR/css3-multicol/]Multi-column layouts[/url] the :only-child selector, overflow-x and overflow-y properties and even various new [url=http://www.w3.org/TR/css3-ui/#cursor]cursors names[/url]. -Even more news from Mozilla suggests that Deer Park already supports some functions for resolution-independent scalable vector graphics (SVG 1.1), but it's obviously just experimental, and even scriptable bitmap drawing surface ([url=http://developer-test.mozilla.org/docs/Drawing_Graphics_with_Canvas][/url]). Last but not least, even support for [url=http://www.w3.org/MarkUp/Forms/]Xforms[/url] is already possible in Deer Park through a [url=http://www.mozilla.org/projects/xforms/]related project/extension[/url]. - - -[b]Final Thoughs[/b] -Again the Mozilla Foundation - with this fully functional but yet incomplete preview release,- seem to be always improving their foundations, and always offering support for new technologies and features before others. This release has certainly seen some great improvements, on the other hand hardly anything changes for website developers with this release. It is without a doube that websites are viewed better with Deer Park than with Firefox 1.0.4 or IE or any other browser for that matter. But it is impossible to even start planning at this stage for the development of a publicly accessible site using for example SVG graphics and Xforms, as visitors using other browsers will not be able to see any "magic" in them, or perhaps even view them at all. - +On May 31st 2005 the Mozilla Foundation silently released the Deer Park browser... no, it's not another name change for Firefox, but the codename they gave to the long-awaited 1.1 release of the free, famous, award-winning browser. Actually what we have for now is just a non-feature complete developer preview release of the new milestone, the first alpha release, in other words. The alpha release nevertheless seems to be fully functional and already useable.ETAs for the actual stable version are not given as usual, but we should expect another alpha candidate soon hopefully (They wrote "June" on the [url=http://www.mozilla.org/projects/firefox/]roadmap[/url], and we're already in July). Anyhow, this developer-oriented preview release can be [url=http://www.mozilla.org/projects/firefox/]downloaded[/url] and installed on Windows, Linux, and Mac OS X systems plus eventually, [url=http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/deerpark/alpha1/contrib/]Solaris and others[/url]. The decision of using the codename Deer Park instead of naming the release Firefox 1.1 alpha 1 or something of the like was made to avoid the havoc which occurred before the official release of Firefox 1.0 (which was codenamed "Phoenix" by the way,) when some websites offered a late preview release as the actual new version to download. +This time when you install and run the program the Firefox name has been substituted with Deer Park Alpha 1, so for example Deer Park is used in the browser's title bar and in the "About Deer Park Alpha 1" menu under "Help". The icon they used for this testing release is not even the usual firefox icon - it represents a plain blueish globe with no fox whatsoever. They have definitely put in effort this time to avoid confusion. + +Furthermore, when the browser is installed it does not overwrite your existing firefox installation, simply because (on windows) it's installed under a directory named "Deer Park Alpha 1". As a side note, the process is "firefox.exe", so you cannot run Firefox and Deer Park at the same time: you'll just open another window of the browser which is already running. Having said this, let us now examine what is new in this developer's release. + +[b]Fixed bugs[/b] +Like any other Firefox Release, Deer Park comes with several [url=http://www.squarefree.com/burningedge/releases/1.1a1.html][b][i]Bug Fixes[/i][/b][/url]. On the official changelog there are many bugs reported to be fixed, sometimes they are hardly noticeable but I experienced some of them when browsing some websites and also when creating applications myself: + +- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=103638]103638[/url] - Targets with same name in different windows open in wrong window with javascript. +- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=97283]97283[/url] - Mouse wheel scrolling does not work for elements such as div using overflow - auto or scroll. +- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=251986]251986[/url] - Keyboard scrolling does not work for elements such as div using overflow - auto or scroll. +- [url=https://bugzilla.mozilla.org/show_bug.cgi?id=245829]245829[/url] - Download manager progress and title do not update correctly, wrong number of files and percentage after finishing or cancelling a download. + +These are in my opinion the most notable of the notable bugs which have been fixed in this release. I was particularly relieved when I noticed that all the issues regarding scrolling divs or similar elements had been resolved. Also, it must be noted that Deer Park seems overall slightly faster than Firefox 1.0.4 (Note: I also have a Pentium II, that is why I could notice that probably). The speed increase is most probably caused by the base for Deer Park being the Mozilla 1.8 Beta 2 code, which is almost 1 year newer than what used for Firefox 1.0. + + +[b]New Features[/b] +Although announced as a non-feature complete release, it comes with some new and useful features. The new feature list includes nothing too extraordinary for now and they are all somehow minor changes but they really do represent some improvements. Perhaps the two most obvious features introduced with this release are the [i][b]Sanitize Deer Park[/b][/i] and the [i][b]Report Broken Sites[/b][/i] functions. The first one is accessible through the Tools menu and basically allows you to delete the Browsing History, Saved Form Information, Saved Passwords, Download History, Cookies and Cache. Actually you can accomplish the same feat via Options->privacy, but with Sanitize you need just one click. Convenience I suppose? + +The Report Broken Sites feature is reachable via the Help menu and basically starts a short wizard that you can use when you notice something wrong with a website. You just have to provide the url of the website, the problem you experienced (Browser not supported, cannot login, plugin not installed, other content missing, odd behaviou, odd appearence, etc.) and an optional description and email and then the report will be submitted to the Mozilla Deleopers. + +Additional features included are also [i]Image thumbnails as Tab icons[/i], used when viewing a single image with firefox, not a shocking feature really but it's just a little (tiny) bit of eyecandy I guess. Furthermore, when you try accessing an FTP server anonymously and that server doesn't allow anonymous access, you are prompted to provide appropriate credentials (before it just didn't let you in)... another little improvement, which probably will not change your life, but it's nice to know that it's there. + +Another more notable feature only for linux and mac users though allows changes made in the Preferences menu to be applied immediately without restarting your system. Using Windows on the other hand, they improved the option interface with a more extensive use of tabbed interfaces, and also additional options concerning tabbed browsing (BUT in my opinion the [url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox]tabbrowser preferences[/url] extension is still necessary to achieve certain behaviours). + +Regarding something more technical, among the so-called developers features there are various improvements regarding CSS support, in particular CSS2's [url=http://www.w3.org/TR/CSS21/generate.html#quotes-specify]quotes nesting[/url] and even some new CSS3 (!) features, like [url=http://www.w3.org/TR/css3-multicol/]Multi-column layouts[/url] the :only-child selector, overflow-x and overflow-y properties and even various new [url=http://www.w3.org/TR/css3-ui/#cursor]cursors names[/url]. +Even more news from Mozilla suggests that Deer Park already supports some functions for resolution-independent scalable vector graphics (SVG 1.1), but it's obviously just experimental, and even scriptable bitmap drawing surface ([url=http://developer-test.mozilla.org/docs/Drawing_Graphics_with_Canvas][/url]). Last but not least, even support for [url=http://www.w3.org/MarkUp/Forms/]Xforms[/url] is already possible in Deer Park through a [url=http://www.mozilla.org/projects/xforms/]related project/extension[/url]. + + +[b]Final Thoughs[/b] +Again the Mozilla Foundation - with this fully functional but yet incomplete preview release,- seem to be always improving their foundations, and always offering support for new technologies and features before others. This release has certainly seen some great improvements, on the other hand hardly anything changes for website developers with this release. It is without a doube that websites are viewed better with Deer Park than with Firefox 1.0.4 or IE or any other browser for that matter. But it is impossible to even start planning at this stage for the development of a publicly accessible site using for example SVG graphics and Xforms, as visitors using other browsers will not be able to see any "magic" in them, or perhaps even view them at all. + It's always the same paradox of web-development: where on one side of the coin there are new and better products are available, a website/online application should be accessible by at least 90-95% of visitors. Unfortunately, for now though 90-95% of all internet users seem to use [i]some other product[/i] instead of Firefox or Deer Park... But that's another story!
M content/articles/git-for-the-locals.textilecontent/articles/git-for-the-locals.textile

@@ -15,10 +15,10 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com :id: 247 :body: |- - @Daniel - - No, not really. I don't use Eclipse, it's not for _local_ people: we only use Vim around here :P - + @Daniel + + No, not really. I don't use Eclipse, it's not for _local_ people: we only use Vim around here :P + I was literally amazed at how Git is easy to use right from the command line! - :date: 2008-07-15 14:43:23 +02:00 :author: Ronen

@@ -44,74 +44,74 @@ - programming

type: article toc: true ----- -_"This is a *local* shop for *local* people, we want no trouble here!"_ - -&mdash; Edward, "The League of Gentlemen":http://en.wikipedia.org/wiki/League_of_gentlemen - -I'm normally quite cautious when it comes to IT novelties like new frameworks, new methodologies and similar, especially when it feels like they're over-hyped. Especially nowadays, it is sometimes very hard to tell whether something new is over-hyped or really a Good Thing(TM) without spending some time looking into it. And especially nowadays, finding the time to look into something new can be a real challange. - -I deliberately didn't look into Git properly since it went "mainstream" (maybe I shouldn't use this word), but when "this tutorial":http://www.spheredev.org/wiki/Git_for_the_lazy came out I couldn't resist. Sure, I knew Git was an amazingly fast distributed version control system, that "GitHub":http://github.com/ offered free accounts, that all the cool guys were slowly starting to use it in place of Subversion, etc. etc. - -What I didn't realize though, that the most obvious advantage of this DVCS was the fact that it was *distributed*, i.e., it _didn't need_ a centralized server. - -Let me repeat this: *Git _doesn't need_ a centralized server.* - -Really.h3. ...But it's not user-friendly! - -If you're a Windows user and you used Subversion before, chances are that you got accustomed to "TortoiseSVN":http://tortoisesvn.tigris.org/, too. TortoiseSVN is &mdash; in a way &mdash; a nice graphical fron-end to SVN which provides seamless Windows Explorer integration. -Git doesn't have anything like that yet. There's something in the works, sure, but nothing really comparable to TortoiseSVN. Therefore, you are _kindly suggested_ to get on and use the command line for all your git stuff. - -Oh well, I personally love using command line interfaces for certain tasks, event if I spend more time on Windows than on any other OS and well, the DOS prompt is no way near to bash & Co. - -For the -lazy gits- Windows users, "MSysGit":http://code.google.com/p/msysgit/ is the answer to all your problems. _Officially_ you have to install Cygwin and all its crap to be able to use Git on Windows. Not that Cygwin is bad, but I personally don't like the extra layer it creates between you and an OS symulation which is not really what's on your machine.It would be great if you could get all the Bash goodies natively, without the hassle. - -that's basically what you get for free when you install MSysGit: the best (to date) version of Bash you could possibly dream of for Windows, along with a few handy Gnu tools and of course all git commands. -In a few click, you'll be able to use Git (and Bash!) right away: no tricks, no hassle, no kidding. - -And stop moaning about the command line not being user friendly. You want a new repository _anywhere_? Just type in the following: - -<% highlight :text do %> -git init -git add . -git commit -<% end %> - -This will create your new repository in the current directory, add all your files and filders recursively, and perform the initial commit. What's so hard in this? Nothing. And it's faster than SVN, for sure. - -h3. Are you local? - -"Being local" has its own advantages: you know where you stand, you know what to expect, you don't depend on other people. What I didn't fully realize about Git is that it can be a 100% _local_ repository. - -The three Git commands I mentioned earlier can be used to create a repository _there_, exactly where you are: not on a server far, far away. -Let's see what this means: - -# You don't need an Internet connection anymore to use a VCS -# You don't get a .svn folder in _every_ damn directory of your project, with a load of crappy files in it. -# You get only a .git folder _at top level_, and that's where your repository actually is. Granted, there are going to be quite a few files in there, but they're not going to be scattered all over the place -# You can physically copy your repository anywhere and still use it -# You don't need to signup to GitHub for an account, if you only want your own VCS - -OK, this is an extreme scenario, but sometimes you may want your _own_ local repository for your stuff. You may want a place to version your documents, or a place to version your own little pet programming project nobody knows about. -With Git, you can get all the advantages of a VCS (and an _incredibly fast_ VCS) without having to setup any server infrastructure: just install Git on your machine, and you're done. No server processes, no hassle. - - -h3. Don't connect, synchronize - -All the information your repository needs is stored in that little .git folder, nowhere else. You can copy your files and that folder, and you'll still get your repository back wherever you are. Maybe you can zip it before copying it, and then unzip it where you need a VCS, event. - -I tried using some synchronization utilities like SyncToy or RoboCopy on Windows to keep my files synchronized on multiple computers: it all started off from the fact that I can't use SSH at work, so I wouldn't be able to push my commits back to a central repository online like GitHub. - -So here's what I did: - -# I setup a local repository for my project on a local folder at work. -# I started working on my project, did a few commits. -# After performing the last commit for the day (you are encouraged to commit often by Git, really), I synchronized that folder with my USB key, via SyncToy. -# Back at home, I used SyncToy again to synchronize my files (including the repository) between the USB key and my home computer. -# Performing a @git status@ showed that some files have been modified (all of them, actually): that's because Git detected that they weren't the same files which were committed, presumably because of different timestamps etc. -# All I did was a @git reset --hard@ to get _exactly_ the same files I committed at work, with absolutely no information loss. - -Isn't it a bad thing to move your git folder back and forth and let another program to synchronize files within it? Maybe, but it seems to work so far. A safer option, in this case, may be zipping the folder before synchronizing it, just to be sure. - -h3. Conclusion - +_"This is a *local* shop for *local* people, we want no trouble here!"_ + +&mdash; Edward, "The League of Gentlemen":http://en.wikipedia.org/wiki/League_of_gentlemen + +I'm normally quite cautious when it comes to IT novelties like new frameworks, new methodologies and similar, especially when it feels like they're over-hyped. Especially nowadays, it is sometimes very hard to tell whether something new is over-hyped or really a Good Thing(TM) without spending some time looking into it. And especially nowadays, finding the time to look into something new can be a real challange. + +I deliberately didn't look into Git properly since it went "mainstream" (maybe I shouldn't use this word), but when "this tutorial":http://www.spheredev.org/wiki/Git_for_the_lazy came out I couldn't resist. Sure, I knew Git was an amazingly fast distributed version control system, that "GitHub":http://github.com/ offered free accounts, that all the cool guys were slowly starting to use it in place of Subversion, etc. etc. + +What I didn't realize though, that the most obvious advantage of this DVCS was the fact that it was *distributed*, i.e., it _didn't need_ a centralized server. + +Let me repeat this: *Git _doesn't need_ a centralized server.* + +Really.h3. ...But it's not user-friendly! + +If you're a Windows user and you used Subversion before, chances are that you got accustomed to "TortoiseSVN":http://tortoisesvn.tigris.org/, too. TortoiseSVN is &mdash; in a way &mdash; a nice graphical fron-end to SVN which provides seamless Windows Explorer integration. +Git doesn't have anything like that yet. There's something in the works, sure, but nothing really comparable to TortoiseSVN. Therefore, you are _kindly suggested_ to get on and use the command line for all your git stuff. + +Oh well, I personally love using command line interfaces for certain tasks, event if I spend more time on Windows than on any other OS and well, the DOS prompt is no way near to bash & Co. + +For the -lazy gits- Windows users, "MSysGit":http://code.google.com/p/msysgit/ is the answer to all your problems. _Officially_ you have to install Cygwin and all its crap to be able to use Git on Windows. Not that Cygwin is bad, but I personally don't like the extra layer it creates between you and an OS symulation which is not really what's on your machine.It would be great if you could get all the Bash goodies natively, without the hassle. + +that's basically what you get for free when you install MSysGit: the best (to date) version of Bash you could possibly dream of for Windows, along with a few handy Gnu tools and of course all git commands. +In a few click, you'll be able to use Git (and Bash!) right away: no tricks, no hassle, no kidding. + +And stop moaning about the command line not being user friendly. You want a new repository _anywhere_? Just type in the following: + +<% highlight :text do %> +git init +git add . +git commit +<% end %> + +This will create your new repository in the current directory, add all your files and filders recursively, and perform the initial commit. What's so hard in this? Nothing. And it's faster than SVN, for sure. + +h3. Are you local? + +"Being local" has its own advantages: you know where you stand, you know what to expect, you don't depend on other people. What I didn't fully realize about Git is that it can be a 100% _local_ repository. + +The three Git commands I mentioned earlier can be used to create a repository _there_, exactly where you are: not on a server far, far away. +Let's see what this means: + +# You don't need an Internet connection anymore to use a VCS +# You don't get a .svn folder in _every_ damn directory of your project, with a load of crappy files in it. +# You get only a .git folder _at top level_, and that's where your repository actually is. Granted, there are going to be quite a few files in there, but they're not going to be scattered all over the place +# You can physically copy your repository anywhere and still use it +# You don't need to signup to GitHub for an account, if you only want your own VCS + +OK, this is an extreme scenario, but sometimes you may want your _own_ local repository for your stuff. You may want a place to version your documents, or a place to version your own little pet programming project nobody knows about. +With Git, you can get all the advantages of a VCS (and an _incredibly fast_ VCS) without having to setup any server infrastructure: just install Git on your machine, and you're done. No server processes, no hassle. + + +h3. Don't connect, synchronize + +All the information your repository needs is stored in that little .git folder, nowhere else. You can copy your files and that folder, and you'll still get your repository back wherever you are. Maybe you can zip it before copying it, and then unzip it where you need a VCS, event. + +I tried using some synchronization utilities like SyncToy or RoboCopy on Windows to keep my files synchronized on multiple computers: it all started off from the fact that I can't use SSH at work, so I wouldn't be able to push my commits back to a central repository online like GitHub. + +So here's what I did: + +# I setup a local repository for my project on a local folder at work. +# I started working on my project, did a few commits. +# After performing the last commit for the day (you are encouraged to commit often by Git, really), I synchronized that folder with my USB key, via SyncToy. +# Back at home, I used SyncToy again to synchronize my files (including the repository) between the USB key and my home computer. +# Performing a @git status@ showed that some files have been modified (all of them, actually): that's because Git detected that they weren't the same files which were committed, presumably because of different timestamps etc. +# All I did was a @git reset --hard@ to get _exactly_ the same files I committed at work, with absolutely no information loss. + +Isn't it a bad thing to move your git folder back and forth and let another program to synchronize files within it? Maybe, but it seems to work so far. A safer option, in this case, may be zipping the folder before synchronizing it, just to be sure. + +h3. Conclusion + Git can do much more than this. Git offers some really interesting branching features, for example, which I didn't mention in this article, of course, like several dozens of other commands. What I tried to point out was that Git can be used by _anyone_, as a fast, simple and very effective private _local_ repository. In case you need one, that is (if you are really _local_).
M content/articles/google-apps-for-your-domain.textilecontent/articles/google-apps-for-your-domain.textile

@@ -15,88 +15,88 @@ - review

type: article toc: true ----- -A while ago Google started offering services like "Google Mail":http://mail.google.com/mail/ (Gmail) and "Google Calendar":http://www.google.com/calendar/ to domain owners. Sure everyone likes Gmail, but one of the few bad things about it is that it never feels "unique": your email address is always gonna be <something>@gmail.com or <something>@googlemail.com. Not a big deal? Well, sure, not really, but it really depends on the people using the service and how fussy they are: - -* small/medium business wouldn't like this: @gmail.com gives farless credibility than @domain.com -* When using Gmail with the Send As feature, messages will be sent "on behalf of", and this can potentially mess things up as some spam filters don't like it. - -Now it seems to be "official":http://seattlepi.nwsource.com/business/1700AP_Google_Business_Applications.html: Google is starting to offer customizable services to anyone who wish to sign up for it, not only as a restricted beta service. -What does this mean? Well, it can be the (free and easy) definitive web solution for small business, kids, grandmas and everyone who wants to establish a presence on the web by paying only the annual domain renewal fees... - -h3. Included applications - -Note the title: "Google Apps":https://www.google.com/a/ for your domain, not only Gmail. Here's what you get: - -* "Gmail":http://mail.google.com/ - You know what it offers: a state-of-the art AJAX interface, speed, reliability, very effective spam filter, loads of space, tagging (labels) stars and all the rest. -* "Google Calendar":http://www.google.com/calendar/ - One of the best online calendar available. Features and AJAX interface, full integration with Gmail, ability to create private and public calendars, reminders, -* _Google Chat_ - Google's instant messenger, available through "Google Talk":http://www.google.com/talk/ desktop application or online, seamlessly integrated in your Gmail interface. -* "Google Web Pages":http://pages.google.com/ - aka Google's page creator, easily create webpages using Google's WYSIWYG online editor. - -Now, try imagining these four services combined and (almost) fully customizable... Still no idea? Well, keep reading for a list of all the included features. - -h3. Included Features - -In order to use Google Apps for your domain, you must of course own a domain. The next step involves changing your domain's MX entry to "ASPMX.L.GOOGLE.COM", and follow the instructions to create an administration account for your Google applications, and after a while every email sent to your domain's accounts will be routed to your new Google-powered inbox. Similarly, in order to use Google Page Creator on your domain, you're required to change the CNAME record of your DNS to "ghs.google.com". - -<blockquote> -Note: in order to avoid inconveniences especially if a lot of users use your domain's email, it is recommended that you pay attention on Google's instructions on how to set the whole thing up. For further information refer to the official "FAQ":https://www.google.com/a/FAQ. In order to be able to use Google Page Creator on your domain, you must setup an URL to publish your webpages: of course do NOT set this to "www.yourdomain.com" or any subdomain currently in use or your visitors will access the pages you created with Google Page Creator. -</blockquote> - -Here's what you get: -!/img/pictures/gmail-hosted/gmail.png! -For a bigger image click "here":/img/pictures/gmail-hosted/gmail_full.png. Let's now have a look at what are the main differences from the standard Gmail. - -<u>_*Include your own logo*_</u> -!</img/pictures/gmail-hosted/logo.png! - -Your own logo will be displayed on the upper left corner of every page. And this is truly sweet. All you have to do to change it is uploading a 143x59 PNG or GIF image from your domain management panel (see below). - -<u>_*Use your company name instead of Google's*_</u> -!>/img/pictures/gmail-hosted/links.png! - -Besides a custom logo, it is possible to set a company name to be used instead of "Google" or "Gmail" in page titles and links. I chose "H3RALD.com Mail" and that's displayed everywhere, including on the sign-in page. - -<u>_*Control Panel*_</u> -All the custom settings can easily be managed through an easy-to use control panel: - -!/img/pictures/gmail-hosted/options_panel.png! - -It's really easy to use and has wizards to setup all the included services and options like setting up user accounts, settings etc. - -!/img/pictures/gmail-hosted/domain.png! - -<u>_*User Accounts*_</u> -Through the control panel you can add new users and modifying existing user accounts to access your services. You can create administrators who are able to access administrative domain-wide settings, and standard users. Every user gets 2048MB of space for their emails, and that's pretty generous considering that it seems that you're able to create around 25 user accounts. - -Already have a list of users you're like to import? Just save them in CSV format and upload them. - -Would you like to be able to contact all your users at once, e.g. via a newsletter? Google thought about this as well, and you can create your own personal newsletters which can be sent out automatically to your @yourdomain.com email accounts. - -<u>_*Internal Messaging System*_</u> -But there's more. We all know Google Talk: yes it's nice, but probably MSN has more features, smileys and all the rest but it still remains a perfectly usable instant manager, which also allows file transfer. Your users can use Google Talk to communicate with each other _or_ simply chat through their webmail interface, More features? Well, for example "you can setup Google Talk to work on federated networks":https://www.google.com/support/hosted/bin/answer.py?answer=34143. - -<u>_*Appointments/Projects management*_</u> -Google Calendar is an excellent online calendar, and now you can use it within your own domain as well. This means, for example, that it can be used to set your company's appointments, reminder, project deadlines by creating an unlimited number of custom calendars to share with your collaborators. - -<u>_*Design your own site*_</u> -I know a lot of restaurants, shops and people who would like to have a small site for their business or activity, but they can't develop web application themselves. So the most obvious solution is to hire some professional web developer to rip them off... erhm, to create a website for them. Now it is not necessary: by setting the correct DNS parameters, you can allow users to create their own webpages using a foolproof and advanced web editor powered by Google: "Google Page Creator":http://pages.google.com/. -I didn't set it up on my own domain, but a preview of what you can do with Google Page Creator is available "here":http://h3rald.googlepages.com/home. - -h3. Scenario - -After considering all this, I came to the conclusion that what Google did can help a lot of people and at the same time prevent some evil webmaster to charge them hundreds of Euro (they really get away with it!) for basic "websites" with "three or more static pages". -All you have to do is buy your own domain, and that can be as cheap as 8$ per year, the rest comes for free, from Google: - -* The best webmail interface you can possibly imagine -* Nearly unlimited space for everything -* A truly effective spam filter -* About 25 fully-featured user account, possibly more if you ask nicely -* Your own "corporate instant messenger" -* Your own calendar to manage appointments, meetings etc. -* An intuitive and advanced web page creator - not like Geocities - -All this for free. Yes, with ads (I'm not here to discuss "privacy concerns":http://www.gmail-is-too-creepy.com/), but after all they're not displayed on your main site. - -_What about Server Side technologies for my sites?_ - +A while ago Google started offering services like "Google Mail":http://mail.google.com/mail/ (Gmail) and "Google Calendar":http://www.google.com/calendar/ to domain owners. Sure everyone likes Gmail, but one of the few bad things about it is that it never feels "unique": your email address is always gonna be <something>@gmail.com or <something>@googlemail.com. Not a big deal? Well, sure, not really, but it really depends on the people using the service and how fussy they are: + +* small/medium business wouldn't like this: @gmail.com gives farless credibility than @domain.com +* When using Gmail with the Send As feature, messages will be sent "on behalf of", and this can potentially mess things up as some spam filters don't like it. + +Now it seems to be "official":http://seattlepi.nwsource.com/business/1700AP_Google_Business_Applications.html: Google is starting to offer customizable services to anyone who wish to sign up for it, not only as a restricted beta service. +What does this mean? Well, it can be the (free and easy) definitive web solution for small business, kids, grandmas and everyone who wants to establish a presence on the web by paying only the annual domain renewal fees... + +h3. Included applications + +Note the title: "Google Apps":https://www.google.com/a/ for your domain, not only Gmail. Here's what you get: + +* "Gmail":http://mail.google.com/ - You know what it offers: a state-of-the art AJAX interface, speed, reliability, very effective spam filter, loads of space, tagging (labels) stars and all the rest. +* "Google Calendar":http://www.google.com/calendar/ - One of the best online calendar available. Features and AJAX interface, full integration with Gmail, ability to create private and public calendars, reminders, +* _Google Chat_ - Google's instant messenger, available through "Google Talk":http://www.google.com/talk/ desktop application or online, seamlessly integrated in your Gmail interface. +* "Google Web Pages":http://pages.google.com/ - aka Google's page creator, easily create webpages using Google's WYSIWYG online editor. + +Now, try imagining these four services combined and (almost) fully customizable... Still no idea? Well, keep reading for a list of all the included features. + +h3. Included Features + +In order to use Google Apps for your domain, you must of course own a domain. The next step involves changing your domain's MX entry to "ASPMX.L.GOOGLE.COM", and follow the instructions to create an administration account for your Google applications, and after a while every email sent to your domain's accounts will be routed to your new Google-powered inbox. Similarly, in order to use Google Page Creator on your domain, you're required to change the CNAME record of your DNS to "ghs.google.com". + +<blockquote> +Note: in order to avoid inconveniences especially if a lot of users use your domain's email, it is recommended that you pay attention on Google's instructions on how to set the whole thing up. For further information refer to the official "FAQ":https://www.google.com/a/FAQ. In order to be able to use Google Page Creator on your domain, you must setup an URL to publish your webpages: of course do NOT set this to "www.yourdomain.com" or any subdomain currently in use or your visitors will access the pages you created with Google Page Creator. +</blockquote> + +Here's what you get: +!/img/pictures/gmail-hosted/gmail.png! +For a bigger image click "here":/img/pictures/gmail-hosted/gmail_full.png. Let's now have a look at what are the main differences from the standard Gmail. + +<u>_*Include your own logo*_</u> +!</img/pictures/gmail-hosted/logo.png! + +Your own logo will be displayed on the upper left corner of every page. And this is truly sweet. All you have to do to change it is uploading a 143x59 PNG or GIF image from your domain management panel (see below). + +<u>_*Use your company name instead of Google's*_</u> +!>/img/pictures/gmail-hosted/links.png! + +Besides a custom logo, it is possible to set a company name to be used instead of "Google" or "Gmail" in page titles and links. I chose "H3RALD.com Mail" and that's displayed everywhere, including on the sign-in page. + +<u>_*Control Panel*_</u> +All the custom settings can easily be managed through an easy-to use control panel: + +!/img/pictures/gmail-hosted/options_panel.png! + +It's really easy to use and has wizards to setup all the included services and options like setting up user accounts, settings etc. + +!/img/pictures/gmail-hosted/domain.png! + +<u>_*User Accounts*_</u> +Through the control panel you can add new users and modifying existing user accounts to access your services. You can create administrators who are able to access administrative domain-wide settings, and standard users. Every user gets 2048MB of space for their emails, and that's pretty generous considering that it seems that you're able to create around 25 user accounts. + +Already have a list of users you're like to import? Just save them in CSV format and upload them. + +Would you like to be able to contact all your users at once, e.g. via a newsletter? Google thought about this as well, and you can create your own personal newsletters which can be sent out automatically to your @yourdomain.com email accounts. + +<u>_*Internal Messaging System*_</u> +But there's more. We all know Google Talk: yes it's nice, but probably MSN has more features, smileys and all the rest but it still remains a perfectly usable instant manager, which also allows file transfer. Your users can use Google Talk to communicate with each other _or_ simply chat through their webmail interface, More features? Well, for example "you can setup Google Talk to work on federated networks":https://www.google.com/support/hosted/bin/answer.py?answer=34143. + +<u>_*Appointments/Projects management*_</u> +Google Calendar is an excellent online calendar, and now you can use it within your own domain as well. This means, for example, that it can be used to set your company's appointments, reminder, project deadlines by creating an unlimited number of custom calendars to share with your collaborators. + +<u>_*Design your own site*_</u> +I know a lot of restaurants, shops and people who would like to have a small site for their business or activity, but they can't develop web application themselves. So the most obvious solution is to hire some professional web developer to rip them off... erhm, to create a website for them. Now it is not necessary: by setting the correct DNS parameters, you can allow users to create their own webpages using a foolproof and advanced web editor powered by Google: "Google Page Creator":http://pages.google.com/. +I didn't set it up on my own domain, but a preview of what you can do with Google Page Creator is available "here":http://h3rald.googlepages.com/home. + +h3. Scenario + +After considering all this, I came to the conclusion that what Google did can help a lot of people and at the same time prevent some evil webmaster to charge them hundreds of Euro (they really get away with it!) for basic "websites" with "three or more static pages". +All you have to do is buy your own domain, and that can be as cheap as 8$ per year, the rest comes for free, from Google: + +* The best webmail interface you can possibly imagine +* Nearly unlimited space for everything +* A truly effective spam filter +* About 25 fully-featured user account, possibly more if you ask nicely +* Your own "corporate instant messenger" +* Your own calendar to manage appointments, meetings etc. +* An intuitive and advanced web page creator - not like Geocities + +All this for free. Yes, with ads (I'm not here to discuss "privacy concerns":http://www.gmail-is-too-creepy.com/), but after all they're not displayed on your main site. + +_What about Server Side technologies for my sites?_ + OK kid, now that would be a little bit too much, even if I can foresee some possible "Google Web Widgets" at some point. "Create your _interactive and dinamic_ website within minutes, no programming knowledge required"... that would be great (for Google) and bad (for freelance web developers). One thing at a time, after all G(od|oogle) has the whole eternity to fulfill his Goals.
M content/articles/google-chrome.textilecontent/articles/google-chrome.textile

@@ -91,228 +91,228 @@ - google

type: article toc: true ----- -!</files/google-chrome/chrome-logo.jpg! - -It looks like there's a "new open source browser":http://www.google.com/chrome in town. As usual, nearly everything about it "leaked":http://blogoscoped.com/archive/2008-09-01-n47.html "before":http://www.techcrunch.com/2008/09/01/first-public-screen-captures-of-google-chrome/ its "release":http://www.google.com/chrome. Every blog that matters is talking about it, so if you didn't hear anything about it, you'd better take a look yourself. Don't be fooled by the usual "senseless ravings":http://www.techcrunch.com/2008/09/01/meet-chrome-googles-windows-killer/ of some weird, overly-hyped blogger though: a _browser_ just came out, nothing more and nothing less. It's not the end of Windows, it's not the end of the Internet, it's not the end of the world as we know it. It's just a new player in the Browser Wars. - -I particularly recommend reading the official "Google Comic Book":http://books.google.com/books?id=8UsqHohwwVYC&printsec=frontcover#PPP1,M1 about Chrome, however I included some of the most interesting parts of it in this article. It's a nice 40-page comic booklet explaining how the browser works in a friendly way... I found it quite amusing and an interesting way to -leak- distribute info on a new project. - -h3. Getting the damn thing - -You can freely download Google Chromm from "here":http://www.google.com/chrome. You'll get a tiny 474KB setup file which installs the browser automatically. When I say automatically I mean automatically: you double click it, and it won't ask _anything_: it will just install it in Program Files by itself. Idiot proof. Clever. Some people may like it, I damn hated it. - -I downloaded it and installed it fine from home, on Vista, and it was blazing fast (on _Vista_, imagine!). I tried to do the same thing from work and I couldn't. The damn installer is supposed to pick up the proxy settings from your default browser, but if the proxy uses authentication (like 99% of corporate proxies) it simply won't work. As far as I know, there's "no way around this":http://groups.google.com/group/google-chrome-help-troubleshooting/browse_thread/thread/4c07ec5124f2eebc. - -This is the reason why this article won't have any chrome screenshots... to protest against Google's stupid way of doing things "too user-friendly". - -*Update 1:* Actually, it is now possible to download the full Chrome setup from "here":http://cache.pack.google.com/chrome/install/149.27/chrome_installer.exe (Thanks "Crazy Australian":http://www.thecrazyaustralian.com/installing-google-chrome-behind-a-proxy/). - -*Update 2:* After installing Chrome, if your company uses an automatic proxy script you won't be able to browser web sites using Chrome. If that's your case, make sure you change IE's proxy settings by specifying your proxy address and port explicitly. - - -h3. How Google "re-invented" the browser - -Why did Google bother? Officially because... - -_"[...] we believe we can add value for users and, at the same time, help drive innovation on the web."_ -(from "Google Blog":http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html) - -In practice, a Google-branded browser makes sense especially because of the services offered by the search giant right now: nearly _every kind_ of web application, from mail clients to RSS readers. - -The philosophy of Google Chrome is fairly simple: the Web has changed since the nineties, we now have full-fledged applications instead of crappy hypertexts with animated GIFs, therefore browsers must change, too. - -Every major browser has a fairly long development history. Think of Firefox: version 3? Not really: try adding up at least 7 versions of Netscape before that. Internet Explorer *8*, Opera *9.5*, ... -Safari is probably the newest of the lot, but still not quite right. - -All major browsers _evolved_ through the years, but they never really changed: so why not to start from scratch? - -Starting from scratch has a lot of advantages: - -* You can learn from other people's mistakes, and try to fix them -* You can _get things right_ from the very start -* You do not have to worry about breaking compatibility with previous versions -* People won't have extremely high expectations, and they'll be prepared for a relatively unstable product - -Obviously building a browser from the ground up is not a weekend project, but things changed since the nineties and starting fresh does not necessarily means re-inventing the wheel! - -h3. An "old" Rendering Engine - -Let's just say that the main work was already done for Google by the "WebKit":http://webkit.org guys. The rendering engine which now powers Safari, the Nokia Series 60 browser, Gnome's Epiphany, Adobe AIR has been picked by the Google guys for Chrome. - -!>/files/google-chrome/chrome-javascript.gif! - -This is a fairly obvious choice, if you ask me. Why? - -* Presto (Opera's engine) is proprietary -* Trident (IE's engine) is proprietary, and it sucks -* Gecko (Mozilla's engine) is open source, but a bit bulky -* WebKit is open source, and arguably the fastest rendering engine to date - -The rendering engine, after all, may be considered one of the most important parts of the browser: it's responsible of what users see, after all. -Google made the right choice, in my opinion: WebKit is also the most "embeddable" and lightweight engine available, and it is also used on the Android platform for this very reason. - -h3. A "new" Javascript - -Mozilla has a "fast":http:http://www.mozilla.org/js/spidermonkey/Javascript engine, which will soon become "much faster":http://ejohn.org/blog/tracemonkey/. WebKit has a "blazing fast":http://webkit.org/projects/javascript/ Javascript engine too, don't forget. So why Google didn't just use that? - -...Because they wanted something _much_ faster than that, in their own way (as someone already "pointed out":http://null-logic.net/blog/2008/09/02/javascript-performance-comparison-with-chrome/). - -Meet *V8*, Chrome's very own Javascript Virtual Machine. When reading the Chrome Comic, I was particularly impressed of two improvements introduced by this new javascript VM: - -!>/files/google-chrome/chrome-javascript-gc.gif! - -* It actually compiles Javascript to machine code via a Just-In-Time compiler (JIT). This means that whenever you refresh a page containing Javascript the browser won't re-interpret the whole script, but it will simply run the compiled version of it which was generated the first time the page was loaded. New concept? Not really, Mozilla is going _exactly_ in the same direction with their own engine, and JIT compilation will be added as of Firefox 3.1. -* V8's incremental garbage collection looks like a much better alternative to the current conservative garbage collection methods used for Javascript. Because of V8's new concept of Hidden Class Transitions, V8 knows _exactly_ when something is no longer needed and thus it is able to garbace-collect it more effectively. - -While there has been some initial "skepticism":http://nexus.zteo.com/2008/09/01/google-chrome-an-index-of-what-developers-need-to-know-good-and-bad/ on this new Javascript implementation, it looks like Google did it right. If you don't believe it you can "download":http://code.google.com/apis/v8/intro.html V8's C++ code and try it out yourself. - -h3. One Process per Tab - -Google Chrome is the first multi-process browser. The idea is that _each tab_ (because you can't do browsers without tabs, these days, right?) has its own phisical process and it is therefore independent from each other. - -!>/files/google-chrome/chrome-processes.gif! - -Hang on, isn't that what IE 5 did? A new instance of the browser for each window? No, not quite: there's a single instance of the browser and _multiple_ tab instances. Each tab is independent in the sense that it has its own address bar, but it's just a tab, at the end of the day. - -This is what Internet Explorer could have done, _before_ Internet Explorer 7, as an answer to the traditional concept of tabs promoted by Mozilla and Opera. - -Actually, it turns out that "this is _exactly_ what's planned for Internet Explorer 8":http://blogs.msdn.com/ie/archive/2008/03/11/ie8-and-loosely-coupled-ie-lcie.aspx, as "someone":http://www.sriramkrishnan.com/blog/2008/09/thoughts-on-new-browser-wars.html already pointed out! - -Additionally, Google thought of building in a mini task manager to let users monitor the CPU and memory usage of each tab. This is interesting, but it has a few implications discussed later on in this article. - -What's truly remarkable about this is that each tab seems to have an initial overhead of 1-2KB, which of course grows according to the site it loads. You can see all this in the task manager, which also picks up similar stats for any other browser running at the same time on your machine. -This was another clever move by Google: by looking at their own task manager, and running more than one browser together, you have everything you need to instantly compare browser performance (thus discovering that Chrome does an outstanding job, it seems). - -What's also remarkable about Chrome's tabs is the way you can interact with them: - -* You can move them around smoohtly, exactly like with Safari -* You can detach them by drag and drop -* You can re-attach them by drag and drop (which is truly awesome!) - -h3. -AwesomeBar- _OmniBox_ and -Speed Dial- _New Tab Page_ - -Did you like Mozilla's AwesomeBar? Well, I personally did, others didn't so much. Meet OmniBox(TM) Google's very own, semi-sentient address bar which really understands you. - -Here's what you can do with it: - -* Type in URLs and view web sites (it would be damn funny if it couldn't do that) -* Get -extra Google crap- useful suggestions while typing. This includes, but it is not limited to: -** Pages you visited -** Bookmarks -** Popular pages (guess who decides that...) -* Custom searches: search IMDB, Wikipedia, Amazon and google itself with a few clicks - -!/files/google-chrome/chrome-bar.gif! - -Unlike Firefox's AwesomeBar, Google's OmniBox seems more "evolved": it doesn't get too much in your way, it lets you go where you want to go, and it's smart about searching. Apparently Mozilla is already planning to remove the search bar completely and incorporate it in the AwesomeBar... but Google released it first, sorry guys. - -The other handy thing they -stole- kindly borrowed from Opera is the _New Tab Page_, basically like Opera's Speed Dial, but with two interesting things: - -* It displays the nine _most visited_ pages: you don't have to configure it! -* It displays search boxes for the most visited sites where you searched something on. - -While I really like how this works (it requires no configuration whatsoever), I kinda miss dragging my favorite pages in the New Tab Page. If you come from Opera, you'll miss this too: the pages I have in my speed dial are NOT necessarily the pages I visited the most! - -I guess I'll get used to it, though... - -h3. Relax, it's Google! - -Google is not Evil(TM). Google is good to everyone, from their own employees to developers and end users: and the funniest part of this whole thing is that everything they make _looks_ good for you. You have absolutely no reason to fear Google. - -They did it again: they apparently released a new browser which definitely looks inherently more secure than competitors. -Here's why: - -* It has an _Incognito_ mode, which lets you browse everything you want without logging anything anywhere. -* It confines popups to the tab they belong, minimized. You can then seletively decide to drag them out and promote them to their own window. -* Each tab is sandboxed: i.e., it has no rights to write anything to your PC. Absolutely no chance. When plugins for Java and Flash are used, however, this doesn't apply. -* Chrome continuously downloads lists of malicious sites, so that you're protected against phishing in real time. - -!</files/google-chrome/chrome-blame.gif! - -Now, if everything goes wrong, you know it's definitely _someone else who did it_. If you read the comic book between the lines, you'll notice a not-so-subtle message to the end users: - -* The browser is sandboxed, so if anything goes wrong, blame others (Adobe for Flash, Sun for Java, Microsoft for some other crap) -* You can monitor the resource consumption of each tab, _ergo_ what _each website_ uses. This means that if a site is slow is definitely the web developer's fault. - -This is basically what "John Resig":http://ejohn.org/blog/google-chrome-process-manager/ immediately pointed out when the comic came out. - -h3. How it feels - -Google Chrome is clearly a very nice product to use. It's as intuitive as IE for the average Windows user, it has the best of Firefox and Opera features and it's even more sleek than Safari. The UI, in my opinion, is a true masterpiece and feels well though out. - -Everything is aimed to be intuitive and does not get in your way: it just works. You want to download a file? You can just do it, without worrying about where to save it: it will appear in a "download bucket" at the bottom of your tabs, and you can just drag and drop what you downloaded anywhere you like, if you need to. -Why nobody thought of this before? - -Even the program settings are simple to understand. The Options dialog is divided in "Basics", "Minor Tweaks" and "Under the Hood". The idea is that anyone can understand the Basics, some people may tweak a bit more, and only geeks may want to go beyond that. This is particularly evident in the Italian translation (it comes bundled with 40 localizations, by the way), where they translated "Under the Hood" with "Roba da smanettoni" which means something like "Stuff for people who fiddle with PCs". I personally found this translation a bit irritating, but anyway... - -h3. Media Coverage and Target Audience - -The overall impression is that Google wanted to target end users with this browser, but also appeal geeks, too. This makes sense from a marketing point of view. While 90% of geeks switched from IE to another browser, ordinary people are still stuck with IE. Why? Because alternative browsers have gained a reputation of being geek-friendly (which, by popular belief, does not mean user-friendly). - -Google's marketing strategy is quite clear, and it doesn't seem to be failing on any point: - -* They targeted Windows first, because that's what the bulk of IE aficionados uses. -* They did their best to make it as user-friendly as possible: the sleek GUI, the comic book, etc. -* They spread the world like crazy: every blog is talking about it, but also major news sites like BBC and CNN. When I got to work, a collegue of mine asked me if I tried the new Google browser and if I read the comic. She heard it at the radio. Here _in Italy_! -* At the same time, they made the whole thing open source, released APIs and emphasized this, so that "computer fiddlers" couldn't resist. - -To me, it looks like Google Chrome stands a good chance to succeed where others have failed: drive most of the Internet population away from Internet Explorer. - -h3. Open Source, testing and quality - -Google is well known for its massive infrastructure. Moreover, Google is the only "entity" (let's call it that way, shall we) who _knows_ and _visited_ almost every web page on the Internet. If something is not "on Google", it may well not exist at all: this is not strictly true, but it's the user perspective and ad the end of the day that's all that matters. -Google, as a consequence, has virtually unlimited resources (compared to any other possible competitor) and virtually unlimited knowledge of the Internet, which makes automated testing no more than a joke. - -From the Google Chrome Comic: - -_"Within 20-30 minutres of each new browser build, we can teswt it on tens of thousands of different web pages"_ - -...and that's certainly not an understatemend: you can believe that. - -!/files/google-chrome/chrome-tests.gif! - -Google seems very concerned of building a "rock-solid" browser rather than being the coolest guy in town, and that's a good sign. Google is _smart_, remember? - -As if it weren't enough, the entire thing (the rendering engine, the javascript implementation and the whole code of the broswer) is 100% open source which means, in a nutshell: - -* Free testers -* Free developers -* Good publicity - -!/files/google-chrome/chrome-os.gif! - -If things go as planned, Chrome may become the most widely tested piece of software in the world. Let's just see how the community takes this. - -h3. Why it matters - -Everyone seems to have gone crazy about Chrome, even long before it was made available. Why does it matter, anyway? Isn't it just a browser, at the end of the day? Well, yes, but: - -* It's 100% open source. If you like something of it, you can get it, modify it, bundle it in another project and redistribute it. Give it a few weeks and extensions which use some of Google's new API will flock to the 'fox like crazy. -* It's small, fast and very promising. Sure, it's not perfect, but YOU can help improving it. Get it? -* It's on Windows, so it will reach the majority of Internet users... in theory. - -Last but not least, it comes bundled with "Gears":http://gears.google.com/, i.e. what Google would like you to use for RIAs. That's perhaps the only "subliminal" message they are trying to send to their users (for now, at least). -As a matter of fact, nothing prevents them from using Chrome as a way to promote their technology and products. But at the same time nothing prevents a random developer to just fork the project and distribute a _neutral_ and unbranded version of Chrome. - -See? Google is not evil at all, it's just smarter than others. - -h3. The Bottom Line - -Google showed us once more that their "innovation" can be summarized with the following: - -_*"Do not invent new things, just make them better"*_ - -They didn't invent Internet search: they just made it better and smarted. The same philosophy applies to Chrome, too. Some examples? Sure: - -* They didn't create a new rendering engine, they used an existing one -* They analyzed Safari's neat GUI tricks and implemented something even better. -* They added an IE8-like domain highlight in the URL. -* They got the Firefox's AwesomeBar and improved it. -* They got Opera's Speed Dial and improved it. -* They got IE8's one-process-per-tab architecture and improved it. -* They didn't think of a Javascript JIT first, they just made it widely-available first. -* They didn't think about merging the address bar with the search bar, Mozilla announced it first, but Google released it before they did. -* Safari 4 allows users to create shortcuts for their favorite web apps, but unfortunately it's only out for developers... - - -Google did it, again. Exactly as planned. +!</files/google-chrome/chrome-logo.jpg! + +It looks like there's a "new open source browser":http://www.google.com/chrome in town. As usual, nearly everything about it "leaked":http://blogoscoped.com/archive/2008-09-01-n47.html "before":http://www.techcrunch.com/2008/09/01/first-public-screen-captures-of-google-chrome/ its "release":http://www.google.com/chrome. Every blog that matters is talking about it, so if you didn't hear anything about it, you'd better take a look yourself. Don't be fooled by the usual "senseless ravings":http://www.techcrunch.com/2008/09/01/meet-chrome-googles-windows-killer/ of some weird, overly-hyped blogger though: a _browser_ just came out, nothing more and nothing less. It's not the end of Windows, it's not the end of the Internet, it's not the end of the world as we know it. It's just a new player in the Browser Wars. + +I particularly recommend reading the official "Google Comic Book":http://books.google.com/books?id=8UsqHohwwVYC&printsec=frontcover#PPP1,M1 about Chrome, however I included some of the most interesting parts of it in this article. It's a nice 40-page comic booklet explaining how the browser works in a friendly way... I found it quite amusing and an interesting way to -leak- distribute info on a new project. + +h3. Getting the damn thing + +You can freely download Google Chromm from "here":http://www.google.com/chrome. You'll get a tiny 474KB setup file which installs the browser automatically. When I say automatically I mean automatically: you double click it, and it won't ask _anything_: it will just install it in Program Files by itself. Idiot proof. Clever. Some people may like it, I damn hated it. + +I downloaded it and installed it fine from home, on Vista, and it was blazing fast (on _Vista_, imagine!). I tried to do the same thing from work and I couldn't. The damn installer is supposed to pick up the proxy settings from your default browser, but if the proxy uses authentication (like 99% of corporate proxies) it simply won't work. As far as I know, there's "no way around this":http://groups.google.com/group/google-chrome-help-troubleshooting/browse_thread/thread/4c07ec5124f2eebc. + +This is the reason why this article won't have any chrome screenshots... to protest against Google's stupid way of doing things "too user-friendly". + +*Update 1:* Actually, it is now possible to download the full Chrome setup from "here":http://cache.pack.google.com/chrome/install/149.27/chrome_installer.exe (Thanks "Crazy Australian":http://www.thecrazyaustralian.com/installing-google-chrome-behind-a-proxy/). + +*Update 2:* After installing Chrome, if your company uses an automatic proxy script you won't be able to browser web sites using Chrome. If that's your case, make sure you change IE's proxy settings by specifying your proxy address and port explicitly. + + +h3. How Google "re-invented" the browser + +Why did Google bother? Officially because... + +_"[...] we believe we can add value for users and, at the same time, help drive innovation on the web."_ +(from "Google Blog":http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html) + +In practice, a Google-branded browser makes sense especially because of the services offered by the search giant right now: nearly _every kind_ of web application, from mail clients to RSS readers. + +The philosophy of Google Chrome is fairly simple: the Web has changed since the nineties, we now have full-fledged applications instead of crappy hypertexts with animated GIFs, therefore browsers must change, too. + +Every major browser has a fairly long development history. Think of Firefox: version 3? Not really: try adding up at least 7 versions of Netscape before that. Internet Explorer *8*, Opera *9.5*, ... +Safari is probably the newest of the lot, but still not quite right. + +All major browsers _evolved_ through the years, but they never really changed: so why not to start from scratch? + +Starting from scratch has a lot of advantages: + +* You can learn from other people's mistakes, and try to fix them +* You can _get things right_ from the very start +* You do not have to worry about breaking compatibility with previous versions +* People won't have extremely high expectations, and they'll be prepared for a relatively unstable product + +Obviously building a browser from the ground up is not a weekend project, but things changed since the nineties and starting fresh does not necessarily means re-inventing the wheel! + +h3. An "old" Rendering Engine + +Let's just say that the main work was already done for Google by the "WebKit":http://webkit.org guys. The rendering engine which now powers Safari, the Nokia Series 60 browser, Gnome's Epiphany, Adobe AIR has been picked by the Google guys for Chrome. + +!>/files/google-chrome/chrome-javascript.gif! + +This is a fairly obvious choice, if you ask me. Why? + +* Presto (Opera's engine) is proprietary +* Trident (IE's engine) is proprietary, and it sucks +* Gecko (Mozilla's engine) is open source, but a bit bulky +* WebKit is open source, and arguably the fastest rendering engine to date + +The rendering engine, after all, may be considered one of the most important parts of the browser: it's responsible of what users see, after all. +Google made the right choice, in my opinion: WebKit is also the most "embeddable" and lightweight engine available, and it is also used on the Android platform for this very reason. + +h3. A "new" Javascript + +Mozilla has a "fast":http:http://www.mozilla.org/js/spidermonkey/Javascript engine, which will soon become "much faster":http://ejohn.org/blog/tracemonkey/. WebKit has a "blazing fast":http://webkit.org/projects/javascript/ Javascript engine too, don't forget. So why Google didn't just use that? + +...Because they wanted something _much_ faster than that, in their own way (as someone already "pointed out":http://null-logic.net/blog/2008/09/02/javascript-performance-comparison-with-chrome/). + +Meet *V8*, Chrome's very own Javascript Virtual Machine. When reading the Chrome Comic, I was particularly impressed of two improvements introduced by this new javascript VM: + +!>/files/google-chrome/chrome-javascript-gc.gif! + +* It actually compiles Javascript to machine code via a Just-In-Time compiler (JIT). This means that whenever you refresh a page containing Javascript the browser won't re-interpret the whole script, but it will simply run the compiled version of it which was generated the first time the page was loaded. New concept? Not really, Mozilla is going _exactly_ in the same direction with their own engine, and JIT compilation will be added as of Firefox 3.1. +* V8's incremental garbage collection looks like a much better alternative to the current conservative garbage collection methods used for Javascript. Because of V8's new concept of Hidden Class Transitions, V8 knows _exactly_ when something is no longer needed and thus it is able to garbace-collect it more effectively. + +While there has been some initial "skepticism":http://nexus.zteo.com/2008/09/01/google-chrome-an-index-of-what-developers-need-to-know-good-and-bad/ on this new Javascript implementation, it looks like Google did it right. If you don't believe it you can "download":http://code.google.com/apis/v8/intro.html V8's C++ code and try it out yourself. + +h3. One Process per Tab + +Google Chrome is the first multi-process browser. The idea is that _each tab_ (because you can't do browsers without tabs, these days, right?) has its own phisical process and it is therefore independent from each other. + +!>/files/google-chrome/chrome-processes.gif! + +Hang on, isn't that what IE 5 did? A new instance of the browser for each window? No, not quite: there's a single instance of the browser and _multiple_ tab instances. Each tab is independent in the sense that it has its own address bar, but it's just a tab, at the end of the day. + +This is what Internet Explorer could have done, _before_ Internet Explorer 7, as an answer to the traditional concept of tabs promoted by Mozilla and Opera. + +Actually, it turns out that "this is _exactly_ what's planned for Internet Explorer 8":http://blogs.msdn.com/ie/archive/2008/03/11/ie8-and-loosely-coupled-ie-lcie.aspx, as "someone":http://www.sriramkrishnan.com/blog/2008/09/thoughts-on-new-browser-wars.html already pointed out! + +Additionally, Google thought of building in a mini task manager to let users monitor the CPU and memory usage of each tab. This is interesting, but it has a few implications discussed later on in this article. + +What's truly remarkable about this is that each tab seems to have an initial overhead of 1-2KB, which of course grows according to the site it loads. You can see all this in the task manager, which also picks up similar stats for any other browser running at the same time on your machine. +This was another clever move by Google: by looking at their own task manager, and running more than one browser together, you have everything you need to instantly compare browser performance (thus discovering that Chrome does an outstanding job, it seems). + +What's also remarkable about Chrome's tabs is the way you can interact with them: + +* You can move them around smoohtly, exactly like with Safari +* You can detach them by drag and drop +* You can re-attach them by drag and drop (which is truly awesome!) + +h3. -AwesomeBar- _OmniBox_ and -Speed Dial- _New Tab Page_ + +Did you like Mozilla's AwesomeBar? Well, I personally did, others didn't so much. Meet OmniBox(TM) Google's very own, semi-sentient address bar which really understands you. + +Here's what you can do with it: + +* Type in URLs and view web sites (it would be damn funny if it couldn't do that) +* Get -extra Google crap- useful suggestions while typing. This includes, but it is not limited to: +** Pages you visited +** Bookmarks +** Popular pages (guess who decides that...) +* Custom searches: search IMDB, Wikipedia, Amazon and google itself with a few clicks + +!/files/google-chrome/chrome-bar.gif! + +Unlike Firefox's AwesomeBar, Google's OmniBox seems more "evolved": it doesn't get too much in your way, it lets you go where you want to go, and it's smart about searching. Apparently Mozilla is already planning to remove the search bar completely and incorporate it in the AwesomeBar... but Google released it first, sorry guys. + +The other handy thing they -stole- kindly borrowed from Opera is the _New Tab Page_, basically like Opera's Speed Dial, but with two interesting things: + +* It displays the nine _most visited_ pages: you don't have to configure it! +* It displays search boxes for the most visited sites where you searched something on. + +While I really like how this works (it requires no configuration whatsoever), I kinda miss dragging my favorite pages in the New Tab Page. If you come from Opera, you'll miss this too: the pages I have in my speed dial are NOT necessarily the pages I visited the most! + +I guess I'll get used to it, though... + +h3. Relax, it's Google! + +Google is not Evil(TM). Google is good to everyone, from their own employees to developers and end users: and the funniest part of this whole thing is that everything they make _looks_ good for you. You have absolutely no reason to fear Google. + +They did it again: they apparently released a new browser which definitely looks inherently more secure than competitors. +Here's why: + +* It has an _Incognito_ mode, which lets you browse everything you want without logging anything anywhere. +* It confines popups to the tab they belong, minimized. You can then seletively decide to drag them out and promote them to their own window. +* Each tab is sandboxed: i.e., it has no rights to write anything to your PC. Absolutely no chance. When plugins for Java and Flash are used, however, this doesn't apply. +* Chrome continuously downloads lists of malicious sites, so that you're protected against phishing in real time. + +!</files/google-chrome/chrome-blame.gif! + +Now, if everything goes wrong, you know it's definitely _someone else who did it_. If you read the comic book between the lines, you'll notice a not-so-subtle message to the end users: + +* The browser is sandboxed, so if anything goes wrong, blame others (Adobe for Flash, Sun for Java, Microsoft for some other crap) +* You can monitor the resource consumption of each tab, _ergo_ what _each website_ uses. This means that if a site is slow is definitely the web developer's fault. + +This is basically what "John Resig":http://ejohn.org/blog/google-chrome-process-manager/ immediately pointed out when the comic came out. + +h3. How it feels + +Google Chrome is clearly a very nice product to use. It's as intuitive as IE for the average Windows user, it has the best of Firefox and Opera features and it's even more sleek than Safari. The UI, in my opinion, is a true masterpiece and feels well though out. + +Everything is aimed to be intuitive and does not get in your way: it just works. You want to download a file? You can just do it, without worrying about where to save it: it will appear in a "download bucket" at the bottom of your tabs, and you can just drag and drop what you downloaded anywhere you like, if you need to. +Why nobody thought of this before? + +Even the program settings are simple to understand. The Options dialog is divided in "Basics", "Minor Tweaks" and "Under the Hood". The idea is that anyone can understand the Basics, some people may tweak a bit more, and only geeks may want to go beyond that. This is particularly evident in the Italian translation (it comes bundled with 40 localizations, by the way), where they translated "Under the Hood" with "Roba da smanettoni" which means something like "Stuff for people who fiddle with PCs". I personally found this translation a bit irritating, but anyway... + +h3. Media Coverage and Target Audience + +The overall impression is that Google wanted to target end users with this browser, but also appeal geeks, too. This makes sense from a marketing point of view. While 90% of geeks switched from IE to another browser, ordinary people are still stuck with IE. Why? Because alternative browsers have gained a reputation of being geek-friendly (which, by popular belief, does not mean user-friendly). + +Google's marketing strategy is quite clear, and it doesn't seem to be failing on any point: + +* They targeted Windows first, because that's what the bulk of IE aficionados uses. +* They did their best to make it as user-friendly as possible: the sleek GUI, the comic book, etc. +* They spread the world like crazy: every blog is talking about it, but also major news sites like BBC and CNN. When I got to work, a collegue of mine asked me if I tried the new Google browser and if I read the comic. She heard it at the radio. Here _in Italy_! +* At the same time, they made the whole thing open source, released APIs and emphasized this, so that "computer fiddlers" couldn't resist. + +To me, it looks like Google Chrome stands a good chance to succeed where others have failed: drive most of the Internet population away from Internet Explorer. + +h3. Open Source, testing and quality + +Google is well known for its massive infrastructure. Moreover, Google is the only "entity" (let's call it that way, shall we) who _knows_ and _visited_ almost every web page on the Internet. If something is not "on Google", it may well not exist at all: this is not strictly true, but it's the user perspective and ad the end of the day that's all that matters. +Google, as a consequence, has virtually unlimited resources (compared to any other possible competitor) and virtually unlimited knowledge of the Internet, which makes automated testing no more than a joke. + +From the Google Chrome Comic: + +_"Within 20-30 minutres of each new browser build, we can teswt it on tens of thousands of different web pages"_ + +...and that's certainly not an understatemend: you can believe that. + +!/files/google-chrome/chrome-tests.gif! + +Google seems very concerned of building a "rock-solid" browser rather than being the coolest guy in town, and that's a good sign. Google is _smart_, remember? + +As if it weren't enough, the entire thing (the rendering engine, the javascript implementation and the whole code of the broswer) is 100% open source which means, in a nutshell: + +* Free testers +* Free developers +* Good publicity + +!/files/google-chrome/chrome-os.gif! + +If things go as planned, Chrome may become the most widely tested piece of software in the world. Let's just see how the community takes this. + +h3. Why it matters + +Everyone seems to have gone crazy about Chrome, even long before it was made available. Why does it matter, anyway? Isn't it just a browser, at the end of the day? Well, yes, but: + +* It's 100% open source. If you like something of it, you can get it, modify it, bundle it in another project and redistribute it. Give it a few weeks and extensions which use some of Google's new API will flock to the 'fox like crazy. +* It's small, fast and very promising. Sure, it's not perfect, but YOU can help improving it. Get it? +* It's on Windows, so it will reach the majority of Internet users... in theory. + +Last but not least, it comes bundled with "Gears":http://gears.google.com/, i.e. what Google would like you to use for RIAs. That's perhaps the only "subliminal" message they are trying to send to their users (for now, at least). +As a matter of fact, nothing prevents them from using Chrome as a way to promote their technology and products. But at the same time nothing prevents a random developer to just fork the project and distribute a _neutral_ and unbranded version of Chrome. + +See? Google is not evil at all, it's just smarter than others. + +h3. The Bottom Line + +Google showed us once more that their "innovation" can be summarized with the following: + +_*"Do not invent new things, just make them better"*_ + +They didn't invent Internet search: they just made it better and smarted. The same philosophy applies to Chrome, too. Some examples? Sure: + +* They didn't create a new rendering engine, they used an existing one +* They analyzed Safari's neat GUI tricks and implemented something even better. +* They added an IE8-like domain highlight in the URL. +* They got the Firefox's AwesomeBar and improved it. +* They got Opera's Speed Dial and improved it. +* They got IE8's one-process-per-tab architecture and improved it. +* They didn't think of a Javascript JIT first, they just made it widely-available first. +* They didn't think about merging the address bar with the search bar, Mozilla announced it first, but Google released it before they did. +* Safari 4 allows users to create shortcuts for their favorite web apps, but unfortunately it's only out for developers... + + +Google did it, again. Exactly as planned.
M content/articles/google-earth.bbcodecontent/articles/google-earth.bbcode

@@ -12,76 +12,76 @@ - google

type: article toc: true ----- -Almost every person on Earth has seen an image taken from a satellite at least once in his or her life: now imagine putting all those images together to make a sort of "patchwork world"...this is unfortunately not as simple as gluing atlas maps together, because height, resolution and orientation must be considered. However, "A computer could do all that"...and so it happened![b]In the beginning...[/b] - - -[url=http://www.nasa.gov/home/index.html?skipIntro=1]Nasa.gov[/url] has always been one of the most famous and most visited websites in history, and among the resources you can find there, besides the pictures of space-related objects and phenomena that everyone flocks to, are satellite pictures of Earth. -Perhaps one of the most wonderful things NASA did software-wise was the realization of an open source software called [url=http://worldwind.arc.nasa.gov/index.html]WorldWind[/url]: [i]"World Wind lets you zoom from satellite altitude into any place on Earth. Leveraging Landsat satellite imagery and Shuttle Radar Topography Mission data, World Wind lets you experience Earth terrain in visually rich 3D, just as if you were really there."[/i] -A really cool thing indeed, if you ask me. So cool that people from all over the world started downloading and using it, causing problems on NASA's server for the project, which was extremely busy or even unreachable. The download is now mirrored on Sourceforge, download.com, and Wayne State University, but the server problem has to do with getting to the server to access the images. So why bother downloading if you know it doesn't actually work, regardless of the reason? - -The alternative, until a year or so ago, was a product created by "Keyhole Corp." - I won't bother posting a link to the site, you'll read why below. Guys from Keyhole basically created a similar program that was much faster, with no server timeouts and better image resolution. Of course, they thought they could charge for it, and I believe that back in the day some people actually paid $70 for what was seen afterwards as a piece of software with a great potential that was never tapped. - - -[b]Google enters the scene[/b] - -"Hey, look! It works! Now let's get it and do it better!" - This is, in a nutshell, Google's policy in the last 2 years or so: they find relatively small(er) companies that produced something with potential, buy it, and they either improve and resell the product, or give it away for free, getting income from advertising. It happened before, with Picasa and Blogger, for example, and now, with Keyhole as well (for a pretty complete list of Google's acquisitions and possible future targets, have a look [url=http://www.kuro5hin.org/story/2005/6/12/143721/743]here[/url]). -This is not a bad thing for the end user, because often new Google-branded products are free or discounted, and Google is happy because it can still make a huge profit from it: if you ask me, that's a much better policy than Microsoft's ("Create something which doesn't work, try to patch it eventually, force people to use it"), at least from a certain point of view. - -Anyhow, Google [url=http://www.google.com/press/pressrel/keyhole.html]purchased[/url] Keyhole Corp. on October 27th, 2004. The next day, Google said "let's drop Keyhole's price to 30 bucks" - And Google saw that it was good. - -Then everything went (almost) silent, until June 18th, 2005, seven months and one day since the acquisition of Keyhole, Google officially [url=http://slashdot.org/article.pl?sid=05/06/28/1733229&amp;from=rss]released[/url] a new product, called [url=http://earth.google.com/]Google Earth[/url]. [i]"Thus the heavens and the earth were finished, and all the host of them" [Gen. 2:1][/i] - - -[b]Welcome to a brand new world[/b] -Pseudo-biblical jokes apart, Google's new Earth can be downloaded and installed FOR FREE! Go and [url=http://desktop.google.com/download/earth/index.html]get it[/url] because it's interesting, but please don't click on the link I provided before because you'll find out that Google won't let you download it, because they got too many requests, so... -So that's why, also thanks to Google, I found some [url=http://www.majorgeeks.com/download4659.html]Major Geeks[/url] mirrors and got it from there. The file is 10 MB, so if you have 56K dial-up don't bother, because it needs at least a 128Kbps connection to run correctly. Below are the minimal system requirements, the recommended ones, and what my PC has. As you can see, processor speed actually doesn't matter if you have a good video card and a good Internet connection. - -[i]Minimal Configuration[/i] - * Operating system: Windows 2000, Windows XP - * CPU speed: Intel? Pentium? PIII 500 MHz - * System memory (RAM): 128MB - * 200MB hard-disk space - * 3D graphics card: 3D-capable video card with 16MB VRAM - * 1024x768, 32-bit true color screen - * Network speed: 128 kbps ("Broadband/Cable Internet") - -[i]Recommended Configuration[/i] - * Operating system: Windows XP - * CPU speed: Intel? Pentium? P4 2.4GHz+ or AMD 2400xp+ - * System memory (RAM): 512MB - * 2GB hard-disk space - * 3D graphics card: 3D-capable video card with 32MB VRAM or greater - * 1280x1024, 32-bit true color screen - * Network speed: 128 kbps ("Broadband/Cable Internet") - -[i]h3raLd's crappy PC's Configuration[/i] - * Operating system: Windows XP - * CPU speed: Intel? Pentium? PII 350 MHz - * System memory (RAM): 256MB - * 30 GB hard-disk space - * 3D graphics card: nVidia GeForce II MX 32MB VRAM - * 1024x768, 32-bit true color screen - * Network speed: 1240 kbps - -I downloaded it, installed it, and it worked fine on my PC. Please note that Google has been pretty specific regarding the compatible OSes, basically only Windows 2000/XP are supported: very old systems (Windows 95/98/Me and alike) and very new systems (Windows Server 2003, X-x64) are not meant to be able to run it. Mac users shouldn't bother trying, while Linux users will be glad to read that it's supposed to work under [url=http://appdb.winehq.org/appview.php?versionId=3254]wine[/url] (rated "bronze"). - -Let's suppose you installed the program and you're running it. If you don't want to try it because you are still unsure if it's worth or not, you can have a look at this [url=http://newrecruit.org/archives/2005/may/googlekeyhole]article[/url], and in particular at the screenshots. -I found it quite easy to use, as are nearly all Google applications; the interface is quite pretty and does the job. You'll immediately notice the main panel where the world and images will be shown, then there's a bottom panel mainly used for navigation, while on the right the three main functions of the program are clearly presented in 3 tabs ("Fly to", "Local Search" and "Directions"), together with two other tabs below for adding/removing details from the map and managing your saved places and results. - -As it's a Google product, one of the most handy features is the search engine. You can put in a city, town, even street or building, restaurant, or place of interest, and the program should be smart enough to find it and take you there. With the "Fly Now" feature it's possible to just center the view on one place, for example. The resulting map will be at a certain height, depending on what term you searched for. You can now zoom in or out with your mouse wheel or with the buttons provided in the navigation panel, and you'll see the map updating. This is a gradual process and depends mainly on your connection speed, but also the available RAM, the video card, and the processor speed. - -As it's still a relatively new product, don't expect to find everything... or better, you can find (nearly) everything, but it might not be at the highest resolution, for example, and thus appear blurred on zoom. Currently the USA, the UK, and Western Europe are the places with the most details. In particular, in the major cities of the US you can also see a 3-D re-creation of the buildings which, even though in plain gray, actually reproduce the real shape of the element. -Furthermore, in the navigation panel you can also tilt up and tilt down the view! So the end result is a map which is half real and half virtual. -If you search for another place, you will not be taken there instantaneously, but instead Google Earth zooms out appropriately and moves around the globe to where the new place is and zooms in appropriately: a really nice effect. - -Also keep in mind that you can add or highlight details on the map, like grids, roads, names, places to see, restaurants, stadiums, railroads, boundaries and borders, different types of schools, earthquake areas, and - even if the satellite maps used can be up to three years old - statistical data about Cloud Coverage and a lot of other things. - -The other two functions, "Local Search" and "Directions" allow you, respectively, to perform a search restricted to the area (i.e. Trafalgar Square - London, UK) and get directions between two places, highlighting the suggested path. Also, all places you see can be saved, marked, and printed: wonderful. - - -[b]Limitations and Opinions[/b] - -As a Beta, Google Earth does come with limitations: as I wrote earlier, only USA, UK, and Western Europe are (almost) fully supported, but you can already get some pretty decent pictures from 200 miles up anywhere in the world. Another limitation is that since the images often come from different satellites, "patches" can be seen sometimes, where part of a picture of an area is darker or lighter than another. - -However, you can't really complain about this software, because it's free and obviously Google's server seems to be always available, unlike NASA's. f you want more, Google Earth is available as a Plus edition (20$) and Pro edition (400$), with more [url=http://earth.google.com/product_comparison.html]features[/url] and support. -What of Microsoft? Well, Microsoft is said to be planning to "strike back" during this summer, with [url=http://www.google.com/url?sa=U&amp;start=1&amp;q=http%3A//blog.searchenginewatch.com/blog/050523-125208&amp;ei=hy3EQpqoGcmciALB8vinCw&amp;sig2=ZNIj3_KWXuDMr4_2WmrCNA]MS Virtual Earth[/url], let's just wait and see... +Almost every person on Earth has seen an image taken from a satellite at least once in his or her life: now imagine putting all those images together to make a sort of "patchwork world"...this is unfortunately not as simple as gluing atlas maps together, because height, resolution and orientation must be considered. However, "A computer could do all that"...and so it happened![b]In the beginning...[/b] + + +[url=http://www.nasa.gov/home/index.html?skipIntro=1]Nasa.gov[/url] has always been one of the most famous and most visited websites in history, and among the resources you can find there, besides the pictures of space-related objects and phenomena that everyone flocks to, are satellite pictures of Earth. +Perhaps one of the most wonderful things NASA did software-wise was the realization of an open source software called [url=http://worldwind.arc.nasa.gov/index.html]WorldWind[/url]: [i]"World Wind lets you zoom from satellite altitude into any place on Earth. Leveraging Landsat satellite imagery and Shuttle Radar Topography Mission data, World Wind lets you experience Earth terrain in visually rich 3D, just as if you were really there."[/i] +A really cool thing indeed, if you ask me. So cool that people from all over the world started downloading and using it, causing problems on NASA's server for the project, which was extremely busy or even unreachable. The download is now mirrored on Sourceforge, download.com, and Wayne State University, but the server problem has to do with getting to the server to access the images. So why bother downloading if you know it doesn't actually work, regardless of the reason? + +The alternative, until a year or so ago, was a product created by "Keyhole Corp." - I won't bother posting a link to the site, you'll read why below. Guys from Keyhole basically created a similar program that was much faster, with no server timeouts and better image resolution. Of course, they thought they could charge for it, and I believe that back in the day some people actually paid $70 for what was seen afterwards as a piece of software with a great potential that was never tapped. + + +[b]Google enters the scene[/b] + +"Hey, look! It works! Now let's get it and do it better!" - This is, in a nutshell, Google's policy in the last 2 years or so: they find relatively small(er) companies that produced something with potential, buy it, and they either improve and resell the product, or give it away for free, getting income from advertising. It happened before, with Picasa and Blogger, for example, and now, with Keyhole as well (for a pretty complete list of Google's acquisitions and possible future targets, have a look [url=http://www.kuro5hin.org/story/2005/6/12/143721/743]here[/url]). +This is not a bad thing for the end user, because often new Google-branded products are free or discounted, and Google is happy because it can still make a huge profit from it: if you ask me, that's a much better policy than Microsoft's ("Create something which doesn't work, try to patch it eventually, force people to use it"), at least from a certain point of view. + +Anyhow, Google [url=http://www.google.com/press/pressrel/keyhole.html]purchased[/url] Keyhole Corp. on October 27th, 2004. The next day, Google said "let's drop Keyhole's price to 30 bucks" - And Google saw that it was good. + +Then everything went (almost) silent, until June 18th, 2005, seven months and one day since the acquisition of Keyhole, Google officially [url=http://slashdot.org/article.pl?sid=05/06/28/1733229&amp;from=rss]released[/url] a new product, called [url=http://earth.google.com/]Google Earth[/url]. [i]"Thus the heavens and the earth were finished, and all the host of them" [Gen. 2:1][/i] + + +[b]Welcome to a brand new world[/b] +Pseudo-biblical jokes apart, Google's new Earth can be downloaded and installed FOR FREE! Go and [url=http://desktop.google.com/download/earth/index.html]get it[/url] because it's interesting, but please don't click on the link I provided before because you'll find out that Google won't let you download it, because they got too many requests, so... +So that's why, also thanks to Google, I found some [url=http://www.majorgeeks.com/download4659.html]Major Geeks[/url] mirrors and got it from there. The file is 10 MB, so if you have 56K dial-up don't bother, because it needs at least a 128Kbps connection to run correctly. Below are the minimal system requirements, the recommended ones, and what my PC has. As you can see, processor speed actually doesn't matter if you have a good video card and a good Internet connection. + +[i]Minimal Configuration[/i] + * Operating system: Windows 2000, Windows XP + * CPU speed: Intel? Pentium? PIII 500 MHz + * System memory (RAM): 128MB + * 200MB hard-disk space + * 3D graphics card: 3D-capable video card with 16MB VRAM + * 1024x768, 32-bit true color screen + * Network speed: 128 kbps ("Broadband/Cable Internet") + +[i]Recommended Configuration[/i] + * Operating system: Windows XP + * CPU speed: Intel? Pentium? P4 2.4GHz+ or AMD 2400xp+ + * System memory (RAM): 512MB + * 2GB hard-disk space + * 3D graphics card: 3D-capable video card with 32MB VRAM or greater + * 1280x1024, 32-bit true color screen + * Network speed: 128 kbps ("Broadband/Cable Internet") + +[i]h3raLd's crappy PC's Configuration[/i] + * Operating system: Windows XP + * CPU speed: Intel? Pentium? PII 350 MHz + * System memory (RAM): 256MB + * 30 GB hard-disk space + * 3D graphics card: nVidia GeForce II MX 32MB VRAM + * 1024x768, 32-bit true color screen + * Network speed: 1240 kbps + +I downloaded it, installed it, and it worked fine on my PC. Please note that Google has been pretty specific regarding the compatible OSes, basically only Windows 2000/XP are supported: very old systems (Windows 95/98/Me and alike) and very new systems (Windows Server 2003, X-x64) are not meant to be able to run it. Mac users shouldn't bother trying, while Linux users will be glad to read that it's supposed to work under [url=http://appdb.winehq.org/appview.php?versionId=3254]wine[/url] (rated "bronze"). + +Let's suppose you installed the program and you're running it. If you don't want to try it because you are still unsure if it's worth or not, you can have a look at this [url=http://newrecruit.org/archives/2005/may/googlekeyhole]article[/url], and in particular at the screenshots. +I found it quite easy to use, as are nearly all Google applications; the interface is quite pretty and does the job. You'll immediately notice the main panel where the world and images will be shown, then there's a bottom panel mainly used for navigation, while on the right the three main functions of the program are clearly presented in 3 tabs ("Fly to", "Local Search" and "Directions"), together with two other tabs below for adding/removing details from the map and managing your saved places and results. + +As it's a Google product, one of the most handy features is the search engine. You can put in a city, town, even street or building, restaurant, or place of interest, and the program should be smart enough to find it and take you there. With the "Fly Now" feature it's possible to just center the view on one place, for example. The resulting map will be at a certain height, depending on what term you searched for. You can now zoom in or out with your mouse wheel or with the buttons provided in the navigation panel, and you'll see the map updating. This is a gradual process and depends mainly on your connection speed, but also the available RAM, the video card, and the processor speed. + +As it's still a relatively new product, don't expect to find everything... or better, you can find (nearly) everything, but it might not be at the highest resolution, for example, and thus appear blurred on zoom. Currently the USA, the UK, and Western Europe are the places with the most details. In particular, in the major cities of the US you can also see a 3-D re-creation of the buildings which, even though in plain gray, actually reproduce the real shape of the element. +Furthermore, in the navigation panel you can also tilt up and tilt down the view! So the end result is a map which is half real and half virtual. +If you search for another place, you will not be taken there instantaneously, but instead Google Earth zooms out appropriately and moves around the globe to where the new place is and zooms in appropriately: a really nice effect. + +Also keep in mind that you can add or highlight details on the map, like grids, roads, names, places to see, restaurants, stadiums, railroads, boundaries and borders, different types of schools, earthquake areas, and - even if the satellite maps used can be up to three years old - statistical data about Cloud Coverage and a lot of other things. + +The other two functions, "Local Search" and "Directions" allow you, respectively, to perform a search restricted to the area (i.e. Trafalgar Square - London, UK) and get directions between two places, highlighting the suggested path. Also, all places you see can be saved, marked, and printed: wonderful. + + +[b]Limitations and Opinions[/b] + +As a Beta, Google Earth does come with limitations: as I wrote earlier, only USA, UK, and Western Europe are (almost) fully supported, but you can already get some pretty decent pictures from 200 miles up anywhere in the world. Another limitation is that since the images often come from different satellites, "patches" can be seen sometimes, where part of a picture of an area is darker or lighter than another. + +However, you can't really complain about this software, because it's free and obviously Google's server seems to be always available, unlike NASA's. f you want more, Google Earth is available as a Plus edition (20$) and Pro edition (400$), with more [url=http://earth.google.com/product_comparison.html]features[/url] and support. +What of Microsoft? Well, Microsoft is said to be planning to "strike back" during this summer, with [url=http://www.google.com/url?sa=U&amp;start=1&amp;q=http%3A//blog.searchenginewatch.com/blog/050523-125208&amp;ei=hy3EQpqoGcmciALB8vinCw&amp;sig2=ZNIj3_KWXuDMr4_2WmrCNA]MS Virtual Earth[/url], let's just wait and see...
M content/articles/h3rald-71.textilecontent/articles/h3rald-71.textile

@@ -12,17 +12,17 @@ - rails

type: article toc: true ----- -I finally decided to redesign my web site. About 2 years passed since last time and I think this was long overdue: a lot of people liked the black _Nitefall_ theme, but a lot of people found a bit too dark for their liking. - -I decided to go for something more -boring- traditional this time: white background and only black header and footer. I think the new design improves the overall readability of the site, also because this time I kept thing simple: - -* No more sidebars &ndash; Who needs them anyway? Who wants to see my "delicious bookmarks":http://www.delicious.com/h3rald on _every single page_? Who wants to see that annoying Web 2.0-ish tag cloud listing all the tags I've ever used from 2006 onwards? I suddently realized that the right column was nothing more than wasted space, so I removed it altogether. -* No more differentiation between _articles_ and _blog posts_ &ndash; As a matter of fact, I'm not posting little pointless tidbits everyday, it's more likely just once a week or even once a month. When I post though, I tend to make it worthwhile both for me and the readers by writing about something which may interest people, for a change. In short: this may not be a "traditional blog" anymore, just a publishing platform for my articles. -* No more "previews" &ndash; From now on, only the title of each articles is displayed in the home page, in the archives and even when searching. If you want to read an article, all you have to do is click on its title. No more "Read More" links. -* Just three main pages: "Home":/, "Archives":/archives, and "About":/about. Although there may be some more for special projects, at some point. -* Use the "Archives":/archives to find my articles. There you'll find a list of the 20 most used tags, a search form, and a timeline listing _all_ my articles from 2006 onwards. -* Use the tiny palette on the left side of each page to perform common actions like bookmarking, scroll up and down, etc. You can read more about it on the "About":/about page. - -I hope you like the new design, or at least I hope it makes my articles more readable. However, I'm open to suggestions, as usual. - +I finally decided to redesign my web site. About 2 years passed since last time and I think this was long overdue: a lot of people liked the black _Nitefall_ theme, but a lot of people found a bit too dark for their liking. + +I decided to go for something more -boring- traditional this time: white background and only black header and footer. I think the new design improves the overall readability of the site, also because this time I kept thing simple: + +* No more sidebars &ndash; Who needs them anyway? Who wants to see my "delicious bookmarks":http://www.delicious.com/h3rald on _every single page_? Who wants to see that annoying Web 2.0-ish tag cloud listing all the tags I've ever used from 2006 onwards? I suddently realized that the right column was nothing more than wasted space, so I removed it altogether. +* No more differentiation between _articles_ and _blog posts_ &ndash; As a matter of fact, I'm not posting little pointless tidbits everyday, it's more likely just once a week or even once a month. When I post though, I tend to make it worthwhile both for me and the readers by writing about something which may interest people, for a change. In short: this may not be a "traditional blog" anymore, just a publishing platform for my articles. +* No more "previews" &ndash; From now on, only the title of each articles is displayed in the home page, in the archives and even when searching. If you want to read an article, all you have to do is click on its title. No more "Read More" links. +* Just three main pages: "Home":/, "Archives":/archives, and "About":/about. Although there may be some more for special projects, at some point. +* Use the "Archives":/archives to find my articles. There you'll find a list of the 20 most used tags, a search form, and a timeline listing _all_ my articles from 2006 onwards. +* Use the tiny palette on the left side of each page to perform common actions like bookmarking, scroll up and down, etc. You can read more about it on the "About":/about page. + +I hope you like the new design, or at least I hope it makes my articles more readable. However, I'm open to suggestions, as usual. + P.S.: I dropped with Internet Explorer 6 compatibility According to my stats, less than 5% of my visitors use it, so it's not worth the extra hassle.
M content/articles/h3rald-v7-overview.textilecontent/articles/h3rald-v7-overview.textile

@@ -56,28 +56,28 @@ - rails

type: article toc: true ----- -...or better, on "Rails":http://www.rubyonrails.org_. -Yep, this 7th (!) version of the H3RALD website is powered by the overly-popular Ruby web framework _and_ by the "Typo":http://www.typosphere.org blogging platform. - -Nope, I decided not to re-develop my website entirely from scratch this time, although I was tempted to, for three simple reasons: - -# My "coding time" is close to non-existent nowadays, and even with a framework like Rails re-developing a site from scratch would have taken at least _some_ time, which at the moment I don't have. -# Typo is a fairly robust and feature-rich blogging platform, and after learning a little bit of Rails I could customize it to my needs straight away. URLs didn't break thanks to Rails' routing system, migration was easy enough, and developing the missing bits (like a rudimentary BBCode parser and a TextLinkAds sidebar) wasn't hard at all. -# I wanted to take a break from my site, not code it again. -_Fair enough, but why the new site anyway?_ - -Again, there's more than one answer: - -* Lately I didn't feel comfortable sporting a Cake-powered website \- that makes sense, to an extent, right? Good. -* I got fed up with spam. I wanted to re-open comments but I didn't want to implement spam protection for the old site. -* To be totally honest, I got fed up with PHP itself as well, after trying out Ruby for a few days and ordering and reading the 2nd edition of the "PickAxe":http://www.pragmaticprogrammer.com/titles/ruby/, which I _highly_ recommend. - -...But let's say something about what's new in this new release, shall we? - -* A new, black (and red) theme. Something completely different. Probably not that good, but quite useful: Every day I check my site from my laptop at work, and if it looks like a big black blob I know that I have to regulate my monitor. I showed it to my parents on their old monitor, and they realized that perhaps it's time to buy an LCD one... -* Comments, trackbacks, desktop client support, theme support, a cool admin area and everything else Typo offers. -* Full RSS feeds. With no ads. So you don't need to see this black blob anymore, if you really don't like it. -* No projects or bookmarks, just my blog and my articles. Let's keep it simple. - -More to come... - +...or better, on "Rails":http://www.rubyonrails.org_. +Yep, this 7th (!) version of the H3RALD website is powered by the overly-popular Ruby web framework _and_ by the "Typo":http://www.typosphere.org blogging platform. + +Nope, I decided not to re-develop my website entirely from scratch this time, although I was tempted to, for three simple reasons: + +# My "coding time" is close to non-existent nowadays, and even with a framework like Rails re-developing a site from scratch would have taken at least _some_ time, which at the moment I don't have. +# Typo is a fairly robust and feature-rich blogging platform, and after learning a little bit of Rails I could customize it to my needs straight away. URLs didn't break thanks to Rails' routing system, migration was easy enough, and developing the missing bits (like a rudimentary BBCode parser and a TextLinkAds sidebar) wasn't hard at all. +# I wanted to take a break from my site, not code it again. +_Fair enough, but why the new site anyway?_ + +Again, there's more than one answer: + +* Lately I didn't feel comfortable sporting a Cake-powered website \- that makes sense, to an extent, right? Good. +* I got fed up with spam. I wanted to re-open comments but I didn't want to implement spam protection for the old site. +* To be totally honest, I got fed up with PHP itself as well, after trying out Ruby for a few days and ordering and reading the 2nd edition of the "PickAxe":http://www.pragmaticprogrammer.com/titles/ruby/, which I _highly_ recommend. + +...But let's say something about what's new in this new release, shall we? + +* A new, black (and red) theme. Something completely different. Probably not that good, but quite useful: Every day I check my site from my laptop at work, and if it looks like a big black blob I know that I have to regulate my monitor. I showed it to my parents on their old monitor, and they realized that perhaps it's time to buy an LCD one... +* Comments, trackbacks, desktop client support, theme support, a cool admin area and everything else Typo offers. +* Full RSS feeds. With no ads. So you don't need to see this black blob anymore, if you really don't like it. +* No projects or bookmarks, just my blog and my articles. Let's keep it simple. + +More to come... +
M content/articles/hlrb-review.textilecontent/articles/hlrb-review.textile

@@ -13,93 +13,93 @@ - books

type: article toc: true ----- -After reading the very first paragraph of Mr. Neighborly's "Humble Little Ruby Book":http://www.humblelittlerubybook.com/ (HLRB for short, from now on) it was very clear to me that it was going to be quite an unconventional read: - -<blockquote> -"Yes, there is a Chapter 0. There is a little bit of introductory stuff we need to talk about before -we set you loose on Ruby. You wouldn't want to get psyched about a new gadget, get it home, -and then figure out you need batteries, a grapefruit, and the ability to speak three languages to -even open the box would you?" -</blockquote> - -That reminded me immediately of "Why's Poignant Guide to Ruby":http://poignantguide.net/ruby/. without a doubt. I don't know how it is possible that two witty, crazy, and very inventive guys grew fond of the same programming language. Anyhow, to reassure a few of you, you won't find any foxes or chunky bacon cartoons in HLRB, just some very well made (although still pretty unconventional) diagrams like this one: - -!/files/hlrb_diagram.png! - -Got the picture? Good. Let's move on...h3. Chapter 0: What'chu talkin' 'bout, mister? - -Chapter 0 is like an introduction to the book _and_ a place to put all the boring stuff you have to talk about in a book about a programming language: - -* What is Ruby? -* Installation procedure (on Windows, Mac OS X and Linux) -* Hello, World! - -Yes, you can skip this one safely without losing too much, unless of course you still need to install Ruby on your machine. - -h3. Chapter 1: Welcome to Ruby. - -<blockquote> -"This section aims to introduce the syntactic sugar and linguistic misfortunes of Ruby in the -quickest manner that will still allow for a full education on the subject." -</blockquote> - -As the first two lines of this chapter say, it's time to learn the basics of Ruby. You'll be quickly guided through strings, numbers, collections and variables. Every section with tons of code examples for your to play with. You won't find a full list of all the 876 methods of the String class, but you'll certainly learn the 10 most common ones at least (numbers are random, so no, don't count them). -Sure, yes, right, whatever... _if you really want_ you can skip this chapter too, but if you are already a Ruby Guru there's probably no need for you to read books about Ruby, right? Beginners need to read this chapter. It's compulsory, really, and pretty enjoyable, too. - -h3. Chapter 2: Break it down now! - -Or "learn how to segment your code" using methods, and... blocks & @Proc@ objects! Gosh. Our poor newbies will probably have a heart attack if they never heard about blocks and closures before. I almost got scared myself, because this is normally regarded as a pretty tough topic. Despite, at page 25 of the book you'll have to face your fears and dive into it. You'll survive, anyway. - -*Purist Warning:* Please be aware that sometimes the author may decide to use certain terms and construct which may not sound 100% right to your ears. Just move on, beginners will understand more things like _"Think of Proc objects as blocks that are pushed into variables."_ than anything else, guaranteed. - -After this section you'll finally be introduced to Ruby classes. Now, this can piss someone off, no doubt. Ruby is a _fully OO language_, so people _must_ learn about classes before anything else. I must admit I was a bit confused by the ordering of the topics at first, but if someone comes from a non-OO background he'll probably find this particular order more suitable. -This section will cover class and object basics in Ruby like defining classes, instantiating objects, access control, methods, attributes, scope, duck typing. Finally, you'll briefly look into modules as well. - -h3. Chapter 3: Hustle and flow (control) - -Finally, the author will deal with flow control. So things like @if@, @case@, conditional operators, loops and statement modifiers. In my opinion this section is truly excellent: it introduces all the control structures in a very simple and crystal clear way, often using flowcharts. A great chance even for absolute beginners to understand these basic but powerful concepts. -Towards the end of the chapter, you'll also learn how exceptions work: a clever way to tell people "you have to learn how to use exceptions from the very beginning". Really nicely done. - -h3. Chapter 4: The system beneath... - -Here comes the juicy stuff. Up to now you learnt the usual boring things you need to know when learning a new programming language, now finally you learn how to do _real things_. The chapter is full of complete and meaningful code snippets which will answer nearly all the questions you may have (at this time): - -* How do I read and write to a file? -* How do I handle threads and processes? -* How do command-line parameters and environment variables work? -* How can I perform specific Windows-only operations, like reading and writing to the Registry? What about OLE automation? - -Some of the big books out there will not spend too much time talking about Windows-only libraries, but I found HLRB gives quite a comprehensive introduction about them. - -h3. Chapter 5: Looking beyond home - -More juicy stuff. If you are looking for a tutorial to learn the basics about networking, from from sockets to FTP to POP and web services, look no further: this chapter does a very remarkable job introducing various network-related libraries, with the usual well written code examples. -If that's still not enough, you'll also have a chance to explore the wonderful world of distributed Ruby and of databases. Granted, this chapter won't tell you about the 1567 methods available in ActiveRecord (buy a copy of "Agile Web Development with Rails":http://www.pragmaticprogrammer.com/title/rails/ for this), but will tell you enough to get started. - - -h3. Chapter 6: It's a Library! - -The final chapter will go more in depth on some more advanced topics, like: - -* Strings -* Regexp -* Date & Time -* Hashing and Cryptography -* Unit Testing - -Everything with more and more useful code snippets. - -h3. The Appendices - -Last but not least, a HUGE collection of links and resources to learn more about Ruby, and a quick digression on C/C++ extensions... not much, but enough to wet your appetite. - - -h3. The bottom line - -HLRB is not _the only_ book you need to read about Ruby. It's better to make this clear otherwise I'll be hunted forever by Dave Thomas, Chad Fowler, DHH and all the other excellent Ruby hackers who also wrote very successful books (which I bought as well). HLRB is LITTLE and HUMBLE, after all: it doesn't aim at becoming the official Ruby Bible anytime soon (although a bird told me it may get updated _someday_ and include more stuff), but it is still a worthwhile reading. - -And of course I came to the very end of this review without mentioning the most important thing: this little wonder is free. All you need is to register to InfoQ (for free) and grab your "free copy":http://www.infoq.com/minibooks/ruby/. If you want you can buy a printed copy for just $9.95, if you feel in a good mood (please do). - -The most obvious strengths of this book are the abundance of code examples and very useful working snippets, and the unconventional style which makes it very readable and not boring at all. If I were to name some of its weaknesses (but only if you force me to), I'd say some parts should be expanded and more info on other libraries should be provided... but you never know what the future will bring us! - +After reading the very first paragraph of Mr. Neighborly's "Humble Little Ruby Book":http://www.humblelittlerubybook.com/ (HLRB for short, from now on) it was very clear to me that it was going to be quite an unconventional read: + +<blockquote> +"Yes, there is a Chapter 0. There is a little bit of introductory stuff we need to talk about before +we set you loose on Ruby. You wouldn't want to get psyched about a new gadget, get it home, +and then figure out you need batteries, a grapefruit, and the ability to speak three languages to +even open the box would you?" +</blockquote> + +That reminded me immediately of "Why's Poignant Guide to Ruby":http://poignantguide.net/ruby/. without a doubt. I don't know how it is possible that two witty, crazy, and very inventive guys grew fond of the same programming language. Anyhow, to reassure a few of you, you won't find any foxes or chunky bacon cartoons in HLRB, just some very well made (although still pretty unconventional) diagrams like this one: + +!/files/hlrb_diagram.png! + +Got the picture? Good. Let's move on...h3. Chapter 0: What'chu talkin' 'bout, mister? + +Chapter 0 is like an introduction to the book _and_ a place to put all the boring stuff you have to talk about in a book about a programming language: + +* What is Ruby? +* Installation procedure (on Windows, Mac OS X and Linux) +* Hello, World! + +Yes, you can skip this one safely without losing too much, unless of course you still need to install Ruby on your machine. + +h3. Chapter 1: Welcome to Ruby. + +<blockquote> +"This section aims to introduce the syntactic sugar and linguistic misfortunes of Ruby in the +quickest manner that will still allow for a full education on the subject." +</blockquote> + +As the first two lines of this chapter say, it's time to learn the basics of Ruby. You'll be quickly guided through strings, numbers, collections and variables. Every section with tons of code examples for your to play with. You won't find a full list of all the 876 methods of the String class, but you'll certainly learn the 10 most common ones at least (numbers are random, so no, don't count them). +Sure, yes, right, whatever... _if you really want_ you can skip this chapter too, but if you are already a Ruby Guru there's probably no need for you to read books about Ruby, right? Beginners need to read this chapter. It's compulsory, really, and pretty enjoyable, too. + +h3. Chapter 2: Break it down now! + +Or "learn how to segment your code" using methods, and... blocks & @Proc@ objects! Gosh. Our poor newbies will probably have a heart attack if they never heard about blocks and closures before. I almost got scared myself, because this is normally regarded as a pretty tough topic. Despite, at page 25 of the book you'll have to face your fears and dive into it. You'll survive, anyway. + +*Purist Warning:* Please be aware that sometimes the author may decide to use certain terms and construct which may not sound 100% right to your ears. Just move on, beginners will understand more things like _"Think of Proc objects as blocks that are pushed into variables."_ than anything else, guaranteed. + +After this section you'll finally be introduced to Ruby classes. Now, this can piss someone off, no doubt. Ruby is a _fully OO language_, so people _must_ learn about classes before anything else. I must admit I was a bit confused by the ordering of the topics at first, but if someone comes from a non-OO background he'll probably find this particular order more suitable. +This section will cover class and object basics in Ruby like defining classes, instantiating objects, access control, methods, attributes, scope, duck typing. Finally, you'll briefly look into modules as well. + +h3. Chapter 3: Hustle and flow (control) + +Finally, the author will deal with flow control. So things like @if@, @case@, conditional operators, loops and statement modifiers. In my opinion this section is truly excellent: it introduces all the control structures in a very simple and crystal clear way, often using flowcharts. A great chance even for absolute beginners to understand these basic but powerful concepts. +Towards the end of the chapter, you'll also learn how exceptions work: a clever way to tell people "you have to learn how to use exceptions from the very beginning". Really nicely done. + +h3. Chapter 4: The system beneath... + +Here comes the juicy stuff. Up to now you learnt the usual boring things you need to know when learning a new programming language, now finally you learn how to do _real things_. The chapter is full of complete and meaningful code snippets which will answer nearly all the questions you may have (at this time): + +* How do I read and write to a file? +* How do I handle threads and processes? +* How do command-line parameters and environment variables work? +* How can I perform specific Windows-only operations, like reading and writing to the Registry? What about OLE automation? + +Some of the big books out there will not spend too much time talking about Windows-only libraries, but I found HLRB gives quite a comprehensive introduction about them. + +h3. Chapter 5: Looking beyond home + +More juicy stuff. If you are looking for a tutorial to learn the basics about networking, from from sockets to FTP to POP and web services, look no further: this chapter does a very remarkable job introducing various network-related libraries, with the usual well written code examples. +If that's still not enough, you'll also have a chance to explore the wonderful world of distributed Ruby and of databases. Granted, this chapter won't tell you about the 1567 methods available in ActiveRecord (buy a copy of "Agile Web Development with Rails":http://www.pragmaticprogrammer.com/title/rails/ for this), but will tell you enough to get started. + + +h3. Chapter 6: It's a Library! + +The final chapter will go more in depth on some more advanced topics, like: + +* Strings +* Regexp +* Date & Time +* Hashing and Cryptography +* Unit Testing + +Everything with more and more useful code snippets. + +h3. The Appendices + +Last but not least, a HUGE collection of links and resources to learn more about Ruby, and a quick digression on C/C++ extensions... not much, but enough to wet your appetite. + + +h3. The bottom line + +HLRB is not _the only_ book you need to read about Ruby. It's better to make this clear otherwise I'll be hunted forever by Dave Thomas, Chad Fowler, DHH and all the other excellent Ruby hackers who also wrote very successful books (which I bought as well). HLRB is LITTLE and HUMBLE, after all: it doesn't aim at becoming the official Ruby Bible anytime soon (although a bird told me it may get updated _someday_ and include more stuff), but it is still a worthwhile reading. + +And of course I came to the very end of this review without mentioning the most important thing: this little wonder is free. All you need is to register to InfoQ (for free) and grab your "free copy":http://www.infoq.com/minibooks/ruby/. If you want you can buy a printed copy for just $9.95, if you feel in a good mood (please do). + +The most obvious strengths of this book are the abundance of code examples and very useful working snippets, and the unconventional style which makes it very readable and not boring at all. If I were to name some of its weaknesses (but only if you force me to), I'd say some parts should be expanded and more info on other libraries should be provided... but you never know what the future will bring us! + Well done, "Mr. Neighborly":http://www.jeremymcanally.com/!
M content/articles/holiday-house-for-rent.textilecontent/articles/holiday-house-for-rent.textile

@@ -11,13 +11,13 @@ - personal

type: article toc: true ----- -<img src="/images/sessarego/outside.jpg" style="float:left; border: 1px solid #B80000; margin-right: 10px;" /> - -Part of my family house in the countryside is now available for rent! It's located in the small village of "Sessarego":http://italia.indettaglio.it/eng/liguria/genova_bogliasco_sessarego.html, a few minutes away from the coast, on the Italian Riviera. -We've been living there recently for 6 months when I started working and then moved to the city in order to be nearer to my workplace, but we still go there on holidays or on the odd week end, sometimes. - -The house is fully furnished, it has been recently renovated, and offers all major comforts and services (utilities, TV, internet, phone, etc.). It can be ideal as a holiday house for writers, programmers, or anyone who would like to take a break from the chaotic city life without giving up all the commodities of modern life, such as the Internet. - -<div style="padding: 30px"></div> - +<img src="/images/sessarego/outside.jpg" style="float:left; border: 1px solid #B80000; margin-right: 10px;" /> + +Part of my family house in the countryside is now available for rent! It's located in the small village of "Sessarego":http://italia.indettaglio.it/eng/liguria/genova_bogliasco_sessarego.html, a few minutes away from the coast, on the Italian Riviera. +We've been living there recently for 6 months when I started working and then moved to the city in order to be nearer to my workplace, but we still go there on holidays or on the odd week end, sometimes. + +The house is fully furnished, it has been recently renovated, and offers all major comforts and services (utilities, TV, internet, phone, etc.). It can be ideal as a holiday house for writers, programmers, or anyone who would like to take a break from the chaotic city life without giving up all the commodities of modern life, such as the Internet. + +<div style="padding: 30px"></div> + *For more information, see "this page":/holidays and feel free to "contact me":/about if you want to book your stay or you needmore details!*
M content/articles/ie-lovers-guide-to-firefox.bbcodecontent/articles/ie-lovers-guide-to-firefox.bbcode

@@ -15,179 +15,179 @@ - browsers

type: article toc: true ----- -This is an attempt to explain to Internet Explorer users what Mozilla Firefox is, what its features are and how it can be enhanced or customized. Although this article is written primarily for IE users, it will make interesting reading for any Firefox user who wants to try to convince even the most hopeless IE fan to adopt Firefox for everyday use. -[b][u]My Point of View[/u][/b] -After using Mozilla Firefox for at least 2 years, I must admit two things: I'm biased towards Firefox, and I just about forgot what IE is like. When you ask someone who's been using Firefox for a while why he likes it, he would probably say something like, "because Firefox is much better than IE." Then he would start boasting about Firefox's features, like tabbed browsing, security improvements, popup blocking, extensions and so on, without thinking that maybe an accustomed IE user would be overwhelmed by all these new things, and in the end, might become even more obstinate in using IE. - -From here on, I'll play the part - for teaching purposes only, of course - of an Internet Explorer lover: IE is the only browser I've ever tried, and it is the only thing you need to surf the Net. I also talked with some IE users I know and I actually opened the browser myself (once again, for teaching purposes), and visited some sites. - -Why not have a real IE Lover write this article? Well, I thought about it, actually, and the only answer I could come up with was: there's no such thing as an 'IE lover', only a lot of people who are too used to IE to want to switch to Firefox. So, I'd better write this all myself; after all, a long time ago, I was just like those people. - - -[b]IE: I've used it for years and it does the job[/b] - -When I bought my computer from my favourite retailer, I immediately asked him: "Can I go on the Internet with it? Do I need to buy any particular program to visit websites?" and I was told that I didn't need anything at all, because it was all included in [i]Windows XP[/i]. I just had to click on the start button and choose "Internet" from the pop-up menu. "Straightforward," I thought. "Anybody can do that!" -I soon noticed that to browse the Internet, Windows used a program called Internet Explorer 6, which was actually part of the whole Windows infrastructure, somehow: it's the same thing, more or less, that I use to view directories on my hard drive, just online. This is the way it should be - so tightly integrated with the operating system that you hardly notice its presence! - -After a while, I learned some more about Internet Explorer, and I noticed that a lot of other applications could be integrated into it, like download managers and [url=http://www.adobe.com/products/acrobat/readstep2.html]PDF viewers[/url]. I also discovered that I could even [url=http://www.microsoft.com/windows/windowsmedia/mp10/default.aspx]listen to music and watch videos[/url] through my browser, directly from webpages. - -Then I discovered toolbars - and I wasn't entirely happy about them. I installed [url=http://toolbar.google.com/index_2]Google Toolbar[/url], and I really enjoyed its features, but I noticed that some other toolbars seemed to be installed, even if I didn't want to: I think some other program asked me to install them or something; I don't really know. All I do now is just set Internet Explorer not to display them, and change my starting page back to what I want, because sometimes, for some reason, IE starts with a different page than what I want. - -All that aside, what I really like about IE is that I can use it for anything and everything, even updating Windows! Microsoft has another cool technology called ActiveX which allows me to download and install Windows security patches and upgrades automatically! - -I really don't understand how people can run an operating system other than Windows: the Web was [b]made[/b] for Internet Explorer! It's even [url=http://www.microsoft.com/mac/products/internetexplorer/internetexplorer.aspx?pid=internetexplorer]available for Macintosh[/url]. - -A friend of mine told me he started using another browser called "Firefox" or "Firebird" or something, and he really likes it! He said it can be used on Windows, Macintosh, Linux, Solaris, and Unix, but when I asked him why it was so good, he told me, "Because it's better, and IE sucks." - -I don't understand how he can say that, especially because everyone I know uses Internet Explorer, Bill Gates made loads of money out of it, so it can't be that bad! Anyhow, I decided to give this Fire-thingie a shot. - - - - -[b][u]Face to Face with a Fox[/u][/b] -My friend told me to download this thing from a [url=http://www.mozilla.org/products/firefox/]website[/url], because it's free. So what? IE is free, too, because it came with my PC. Anyhow, I figured I'd just go and download it so he'd leave me alone about it. I read that Firefox - that's its name - is a free browser developed by the [url=http://www.mozilla.org]Mozilla Foundation[/url] which has received a lot of [url=http://www.mozilla.org/press/awards.html]awards[/url] from various well-known computer-related websites and institutions. It also seem to have a promotional [url=http://www.spreadfirefox.com/]website[/url] that says it has been downloaded nearly seventy million times! All the geeks seem to use it, and they love it. Maybe it's really good, or maybe they just don't like Microsoft. - -When I ran Firefox for the first time, Internet Explorer warned me that it couldn't verify the authenticity of the download, or something like that, but it says that all the time when I download stuff. -The first thing that happened was that I was prompted to import my favourites from Internet Explorer. Great! I didn't want to lose all the sites I have had bookmarked for years. So far, so good. - -There were no XP-related icons at all, just some weird ones I didn't like, especially the "Home Page" icon. It sucks compared to the one in IE. It doesn't integrate with Windows; it's just another application for browsing websites, like that [url=http://www.netscape.com]Netscape[/url] thing my friend made me try a few years ago. That at least had an email client and other things included with it. - -Firefox isn't worth the hassle: my favourite websites look "broken" and the thing is continuously complaining about plugins to view some pages. Some websites even tell me off now because I'm not using IE, in particular Microsoft, which doesn't let me update [url=http://v4.windowsupdate.microsoft.com/en/thanks.asp?]anymore[/url]. I switched back to IE after a few minutes of pointless struggle. - - -[b]Here's What You Get[/b] -Firefox and IE are two very different things, and I didn't like that, but I admit I had some prejudices, maybe because of the fact that my friend told me to download something and said it was better, and it really wasn't. So I decided to give both him and Firefox a second chance, and I asked him to explain to me why Firefox is better than Internet Explorer. -The first thing he mentioned was the different terminology used by the two browsers, which can be summarized as follows: -[code] -| Internet Explorer | Firefox | -| Internet Options | Options | -| Temporary Internet Files | Cache | -| Favorites | Bookmarks | -| Address Bar | Location Bar | -| Refresh | Reload | -| Links Bar | Bookmarks Toolbar | -| Explorer Bar | Sidebar | -| Copy Shortcut | Copy Link Location | -| Save Target As | Save Link As | -[/code] -and that once you get used to the new terms, finding what you're looking for is easier than in Internet Explorer. - -My friend also said a new feature implemented by Firefox is [b][i]popup blocking[/i][/b]. So I told him that as of Service Pack 2, even Internet Explorer blocks popups (and before that, so did my Google Toolbar) but apparently Firefox had this feature long before Microsoft did. Good to know, but not really impressive. -What was more interesting was that Firefox lets you type in whatever you want in the Location bar, even if it's not a Web address, and you will still get the most relevant page available: for example, typing "firefox" takes me to [url]http://www.mozilla.org/products/firefox/[/url]. This is accomplished through Google's "[url=http://www.google.com/help/features.html#lucky]I'm Feeling Lucky[/url]" feature. IE doesn't do this: it gives me a search page for what I typed, or it tries to 'guess' the domain by adding a .com or .net after the word. - -Firefox still didn't really impress me: some nice tricks, but nothing that would make me want to switch. What started to make the difference was the [b][i]Tabbed Browsing[/i][/b] feature: I knew about it already, because IE started implementing that through the [url=http://toolbar.msn.com/]MSN toolbar[/url], but it's a bit[url=http://weblogs.mozillazine.org/asa/archives/008312.html]buggy[/url], so I didn't even try it. Firefox has had this feature since its very first [url=http://www.mozilla.org/products/firefox/releases/0.1.html]release[/url], so I guess it they represents a fully-functional, stable, and key feature of the browser. Tabbed browsing introduces a new [i]philosophy[/i] for browsing the web: there is only one browser window, but it can have multiple [i]tabs[/i], each displaying a different page. You can switch from one tab to another by clicking on the title (tab titles appear horizontally under the location bar), "Open Link in New Tab" by right-clicking on a link, and open empty tabs with either CTRL+T or from the [i]File[/i] menu. It takes a while to get used to it, but after a while I couldn't really live without it! - -I then asked my friend why Firefox doesn't allow me to play music or videos or read pdf files, etc., and he said that I needed to install all the necessary [url=https://pfs.mozilla.org/plugins/]plugins[/url]. This is the most annoying thing about Firefox: you have to "feed" it and "teach" it things - a lot like a baby, really. If the analogy is truly valid, in the end it should be worth it, and I have the feeling that my Firefox will grow up well, if I'm careful. - -After learning about plugins, and teaching my little Firefox what to do with movies, songs and other types of files, I learnt that it had another really smart feature: outstanding, built-in [b][i]search capabilities[/i][/b]. -I had already noticed the small search bar on the top right, next to the location bar: it's basically a shortcut to Google Search. Cool, but I already had this in IE. One thing I didn't like about IE though, was that if I wanted to use a different search engine, like Yahoo or MSN, I had to install [i]another toolbar[/i], and I ended up with something like three different toolbars under the address bar, so I could hardly see the webpages I was browsing! - -Firefox apparently knows that people might need to use more than one search engine, so you can select other search engines by clicking on the little icon on the left of the aforementioned search bar. Yahoo, MSN, Wikipedia, and others are available, and [url=http://mycroft.mozdev.org/download.html]others[/url] can be installed easily. If you need a plugin for a search engine, and it doesn't exist yet, you can even make it yourself quite [url=http://mycroft.mozdev.org/generator/]easily[/url]. - -But let's come back a bit to when I ran Firefox for the first time: where did my IE Favourites go? Under the [i]Bookmarks[/i] menu, obviously, and they even kept their folder structure. They can be organized through the [i]Manage Bookmarks[/i] option, and indeed Firefox's [i]Bookmarks Manager[/i]'s interface looks much cleaner and is easier to use than IE's. However, since all the imported bookmarks get dumped in a subfolder, it takes a little time to get them all up to the top level. - -Firefox also implements [i][b]Live Bookmarks[/b][/i]: some sites, especially news-related ones like [url=http://news.yahoo.com/]Yahoo News[/url] and [url=http://news.bbc.co.uk/]BBC News[/url], and [url=http://slashdot.org/]Slashdot[/url] offer [url=http://en.wikipedia.org/wiki/RSS_%28file_format%29]RSS[/url] feeds which are updated several times a day. With Firefox, you can [i]subscribe[/i] to a particular site's RSS by clicking on the little square orange icon which appears on the status bar, and a [i]Live Bookmark[/i] will be saved. They appear under the [i]Bookmarks[/i] menu, in a specific folder, and also on your [i]Bookmarks Toolbar[/i] which is under the location bar: clicking on one of them will show the corresponding site's current headlines. You can click on any of the headlines to read the full story/article. - -Even if my friend realised he just created another Firefox fan, he insisted on telling me a few words about Downloads and Options. Regarding Downloads, there's not much to say: Firefox incorporates a [i][b]Download Manager[/b][/i] that saves all files downloaded from the Net in a specific (selectable) folder, and keeps a history of all downloads. The download manager is opened automatically whenever a file is downloaded, and it also can be opened manually by selecting [i]Tools-Downloads[/i]. The really handy part is that you can easily open a downloaded file or the folder it's in, or clear your download history all in one place. The drawback is that it stays open until you close it, and you have to click a button to clear the already downloaded files from the queue. - -[i][b]Options[/i][/b] is more complex to deal with, as Firefox does not rely on Windows' [i]Internet Options[/i]. Firefox's Options (under the [i]Tools[/i] menu) are more complete and better organized, as they are clearly divided into 5 main categories: - -[i]General[/i] -In this panel you can set up your starting page, fonts, colors, language, character encodings, whether or not Firefox is the default browser, and your connection settings. - -[i]Privacy[/i] -Here - and this is really much better than in IE, I must admit - you can clear and manage history items, saved form information, saved passwords, download manager history, cookies and the browser cache. You can clear everything with a single click, but you'll lose all your saved passwords and your history lists. - -[i]Web Features[/i] -This panel is for setting your preferences regarding popup blocking, software installation, images, Java and JavaScript. - -[i]Downloads[/i] -Here you can choose your download destinatination folder as well as set other download-related preferences, like setting particular file types to save to a particular folder. - -[i]Advanced[/i] -This panel is for - as the name implies - advanced preferences regarding accessibility, browsing, security, validation and certificates. You don't need to change anything here unless you've been told to or you know what you're doing. - -[i]Is That All?[/i] -That's what I thought, and although I was really impressed with Firefox, I was still missing some features that IE had, such as third party toolbars. My friend was about to go, but he quickly opened a pre-defined firefox bookmark: [url=https://addons.mozilla.org/]Mozilla Update[/url]. "Now you know how Firefox works: I'm sure you can work this out by yourself," he said, and left me with a door to another vast world to explore. The journey was far from over. - - -[b]Extensions and Themes[/b] -One aspect of Firefox that was a bit discouraging was the fact that once you install the browser you need to install this, download that, and configure the other thing. For any IE user (like me), this is a major hassle: before, I just wanted to browse the Net, and I didn't care what I was using or how I was using it. Now, I have to be aware of certain things, and more or less [b]create[/b] the browser I need! On the other hand, this is sort of exciting, in the sense that unlike IE, Firefox can became whatever you want it to be. - -Even after using Firefox for a while, and even after my friend had explained all its nice features, I still felt that it was somehow incomplete. Luckily, Firefox has [i]extensions[/i] and [i]themes[/i]. The numerous [url=https://addons.mozilla.org/extensions/?application=firefox]Extensions[/url] enhance Firefox by adding new features which - honestly - I never thought were even conceivable to be included in a browser. Furthermore, Firefox also has [url=https://addons.mozilla.org/themes/?application=firefox]Themes[/url], so you can change the browser into something completely different, with different icons, shapes and colors! - -It's worth it to mention some [i][b]Extensions[/b][/i] which really impressed me by the functionality or behaviours they added to Firefox: - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox][i]Adblock[/i][/url] -This extension blocks ads - if you don't want to see a banner on a certain site anymore, just right-click on it, select AdBlock, and it's gone! It also remembers your preferences for every URL or site. It's easily customizeable and useful. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox][i]Tabbrowser Preferences[/i][/url] -This adds a new category in your Options called [i]Tabbed Browsing[/i], where you can customize particular behaviours concerning tabs, like opening all addresses typed in the location bar in a new tab (focused or unfocused), forcing links to open in new tabs instead of new windows, and so on. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=220&application=firefox][i]FlashGot[/i][/url] -I complained before that my download manager wasn't integrated with Firefox: this extension does that, and supports nearly every possible download manager and accelerators. It also has a built-in gallery to quickly see what file types you are downloading. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=743&application=firefox][i]CustomizeGoogle[/i][/url] -This personalises Google-related sites and services, such as using [url=http://www.google.com/webhp?complete=1&hl=en]Google Suggest[/url] in every search, filtering content and ads, anonymizing data transmitted to Google, and much more. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=398&application=firefox][i]ForeCastFox[/i][/url] -Get weather forecasts from all over the world displayed directly on your status bar or anywhere you want. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Developer%20Tools&numpg=10&id=60][i]Developer Tools[/i][/url] -This is THE ultimate solution if you are a web developer or interested in knowing more about webpages. With this extension you can: -- Disable [b]anything[/b] with a single click (images, JavaScript, cookies, colors, animations, etc.) -- Get CSS information or modify a page's CSS -- Have fun with Forms (convert POSTs to GETs, show hidden fields, and so on) -- Perform image-related operations: show paths, attributes, outline particular images, etc. -- Get infos about various elements on a page -- Clear history, cookies, open java console, view document's source -- Outline particular elements (images, tables, etc.) -- Resize your browser to a custom or predefined resolution -- Validate a page (HTML, CSS, WAI accessibility, speed reports) - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=33][i]Googlebar[/i][/url] -Clone of the IE Google Toolbar. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=270][i]Yahoo Companion[/i][/url] -Clone of the IE Yahoo toolbar. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=219][i]FoxyTunes[/i][/url] -Control your favourite media player (several programs supported) directly from Firefox! - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=16][i]ChatZilla[/i][/url] -A complete, fully functional, easy-to-use IRC client which runs from Firefox. - -[url=https://addons.mozilla.org/extensions/moreinfo.php?id=684][i]FireFTP[/i][/url] -Fully integrated FTP client. - -There are actually many more extensions available from either the Firefox website or other [url=http://www.extensionsmirror.nl/]portals[/url] which can be very useful, depending on your needs, but there are also [b][i]Themes[/i][/b] which can change Firefox's look and feel completely, such as: - -[url=https://addons.mozilla.org/themes/moreinfo.php?id=7&application=firefox][i]Qute[/i][/url] -This theme inspired Firefox default theme: "Icons designed to be modern, dynamic and fresh, with attention paid to usability and comfort over extended use". - -[url=https://addons.mozilla.org/themes/moreinfo.php?id=101&application=firefox][i]Silverskin[/i][/url] -"Your favourite browser with a silver skin (With the Qute icons by Arvid Axelsson)" - -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=414][i]Saferfox Xpanded[/i][/url] -"A full skin theme with a modern aqua design" - -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=213][i]Plastikfox Crystal SVG[/i][/url] -"Plastik style from KDE with Crystal SVG icons" - -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=72][i]Noia (eXtreme)[/i][/url] -"This theme is based on the Noia2.0 icon set by Carlitus." - -[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=548][i]Brushed[/i][/url] -"A Brushed and Polished Browser Interface." - -Again, many more themes are available. There's something for everyone, really! - - -[b]To switch or not to switch?[/b] - -Yes, OK, it's not one of those questions which will keep you up at night, but for sure it can be a quandary. Personally, I decided to switch to Firefox gradually, while still viewing some sites in IE, because I think this can be a good compromise. The biggest problem is that even if Firefox supports Web standards (my friend said IE doesn't) some sites do not. Especially before Firefox, web developers apparently had to create their sites to be viewed correctly with Microsoft's browser. That's why some sites still have things like "This site is best viewed in Internet Explorer 6", or even, in some cases, they'll suggest you download the latest IE version, because [i]your browser is incompatible[/i] when actually it's [i]the site[/i] which is not compatible with [url=http://www.w3c.org/]Web Standards[/url]. -Furthermore, [url=http://www.microsoft.com/com/default.mspx]ActiveX[/url] is a non-standardized proprietary technology which Microsoft uses to make software components communicate and also provide complex functionalities necessary for things like Windows Update. Firefox doesn't support ActiveX, which has been exploited many times in the past (and still now): tough luck. Nowadays, Microsoft wants you to have Automatic Updates turned on, so you don't need to visit the Windows Update site anymore. As far as I'm concerned, I'm not too bothered by that, but if someday I need ActiveX technology, there's already a [url=http://www.google.com/url?sa=U&start=1&q=http%3A//www.iol.ie/%7Elocka/mozilla/mozilla.htm&ei=cwnIQu_tBYqgiAKd9bGrCw&sig2=afi7r8Pa_YLozVo0JbGp9w]Mozilla Project[/url] on it. Final note: If you need to switch back to IE for some reason, the [url=https://addons.mozilla.org/extensions/moreinfo.php?id=35]IE View[/url] extension can quickly give you the opportunity to do so, opening IE to view the page you're visiting. - -It looks like the Browser Wars have started again, and as a matter of fact, Firefox is becoming known for its features, innovations and [url=http://www.mozillazine.org/]community support[/url]. Switching can be scary, and people can try forcing you to do it, but you shouldn't listen to them: don't start using Firefox just because "it's cool" or "everybody uses it"; try it first, understand how it works, and spend time learning it, because it just might be worth it. - +This is an attempt to explain to Internet Explorer users what Mozilla Firefox is, what its features are and how it can be enhanced or customized. Although this article is written primarily for IE users, it will make interesting reading for any Firefox user who wants to try to convince even the most hopeless IE fan to adopt Firefox for everyday use. +[b][u]My Point of View[/u][/b] +After using Mozilla Firefox for at least 2 years, I must admit two things: I'm biased towards Firefox, and I just about forgot what IE is like. When you ask someone who's been using Firefox for a while why he likes it, he would probably say something like, "because Firefox is much better than IE." Then he would start boasting about Firefox's features, like tabbed browsing, security improvements, popup blocking, extensions and so on, without thinking that maybe an accustomed IE user would be overwhelmed by all these new things, and in the end, might become even more obstinate in using IE. + +From here on, I'll play the part - for teaching purposes only, of course - of an Internet Explorer lover: IE is the only browser I've ever tried, and it is the only thing you need to surf the Net. I also talked with some IE users I know and I actually opened the browser myself (once again, for teaching purposes), and visited some sites. + +Why not have a real IE Lover write this article? Well, I thought about it, actually, and the only answer I could come up with was: there's no such thing as an 'IE lover', only a lot of people who are too used to IE to want to switch to Firefox. So, I'd better write this all myself; after all, a long time ago, I was just like those people. + + +[b]IE: I've used it for years and it does the job[/b] + +When I bought my computer from my favourite retailer, I immediately asked him: "Can I go on the Internet with it? Do I need to buy any particular program to visit websites?" and I was told that I didn't need anything at all, because it was all included in [i]Windows XP[/i]. I just had to click on the start button and choose "Internet" from the pop-up menu. "Straightforward," I thought. "Anybody can do that!" +I soon noticed that to browse the Internet, Windows used a program called Internet Explorer 6, which was actually part of the whole Windows infrastructure, somehow: it's the same thing, more or less, that I use to view directories on my hard drive, just online. This is the way it should be - so tightly integrated with the operating system that you hardly notice its presence! + +After a while, I learned some more about Internet Explorer, and I noticed that a lot of other applications could be integrated into it, like download managers and [url=http://www.adobe.com/products/acrobat/readstep2.html]PDF viewers[/url]. I also discovered that I could even [url=http://www.microsoft.com/windows/windowsmedia/mp10/default.aspx]listen to music and watch videos[/url] through my browser, directly from webpages. + +Then I discovered toolbars - and I wasn't entirely happy about them. I installed [url=http://toolbar.google.com/index_2]Google Toolbar[/url], and I really enjoyed its features, but I noticed that some other toolbars seemed to be installed, even if I didn't want to: I think some other program asked me to install them or something; I don't really know. All I do now is just set Internet Explorer not to display them, and change my starting page back to what I want, because sometimes, for some reason, IE starts with a different page than what I want. + +All that aside, what I really like about IE is that I can use it for anything and everything, even updating Windows! Microsoft has another cool technology called ActiveX which allows me to download and install Windows security patches and upgrades automatically! + +I really don't understand how people can run an operating system other than Windows: the Web was [b]made[/b] for Internet Explorer! It's even [url=http://www.microsoft.com/mac/products/internetexplorer/internetexplorer.aspx?pid=internetexplorer]available for Macintosh[/url]. + +A friend of mine told me he started using another browser called "Firefox" or "Firebird" or something, and he really likes it! He said it can be used on Windows, Macintosh, Linux, Solaris, and Unix, but when I asked him why it was so good, he told me, "Because it's better, and IE sucks." + +I don't understand how he can say that, especially because everyone I know uses Internet Explorer, Bill Gates made loads of money out of it, so it can't be that bad! Anyhow, I decided to give this Fire-thingie a shot. + + + + +[b][u]Face to Face with a Fox[/u][/b] +My friend told me to download this thing from a [url=http://www.mozilla.org/products/firefox/]website[/url], because it's free. So what? IE is free, too, because it came with my PC. Anyhow, I figured I'd just go and download it so he'd leave me alone about it. I read that Firefox - that's its name - is a free browser developed by the [url=http://www.mozilla.org]Mozilla Foundation[/url] which has received a lot of [url=http://www.mozilla.org/press/awards.html]awards[/url] from various well-known computer-related websites and institutions. It also seem to have a promotional [url=http://www.spreadfirefox.com/]website[/url] that says it has been downloaded nearly seventy million times! All the geeks seem to use it, and they love it. Maybe it's really good, or maybe they just don't like Microsoft. + +When I ran Firefox for the first time, Internet Explorer warned me that it couldn't verify the authenticity of the download, or something like that, but it says that all the time when I download stuff. +The first thing that happened was that I was prompted to import my favourites from Internet Explorer. Great! I didn't want to lose all the sites I have had bookmarked for years. So far, so good. + +There were no XP-related icons at all, just some weird ones I didn't like, especially the "Home Page" icon. It sucks compared to the one in IE. It doesn't integrate with Windows; it's just another application for browsing websites, like that [url=http://www.netscape.com]Netscape[/url] thing my friend made me try a few years ago. That at least had an email client and other things included with it. + +Firefox isn't worth the hassle: my favourite websites look "broken" and the thing is continuously complaining about plugins to view some pages. Some websites even tell me off now because I'm not using IE, in particular Microsoft, which doesn't let me update [url=http://v4.windowsupdate.microsoft.com/en/thanks.asp?]anymore[/url]. I switched back to IE after a few minutes of pointless struggle. + + +[b]Here's What You Get[/b] +Firefox and IE are two very different things, and I didn't like that, but I admit I had some prejudices, maybe because of the fact that my friend told me to download something and said it was better, and it really wasn't. So I decided to give both him and Firefox a second chance, and I asked him to explain to me why Firefox is better than Internet Explorer. +The first thing he mentioned was the different terminology used by the two browsers, which can be summarized as follows: +[code] +| Internet Explorer | Firefox | +| Internet Options | Options | +| Temporary Internet Files | Cache | +| Favorites | Bookmarks | +| Address Bar | Location Bar | +| Refresh | Reload | +| Links Bar | Bookmarks Toolbar | +| Explorer Bar | Sidebar | +| Copy Shortcut | Copy Link Location | +| Save Target As | Save Link As | +[/code] +and that once you get used to the new terms, finding what you're looking for is easier than in Internet Explorer. + +My friend also said a new feature implemented by Firefox is [b][i]popup blocking[/i][/b]. So I told him that as of Service Pack 2, even Internet Explorer blocks popups (and before that, so did my Google Toolbar) but apparently Firefox had this feature long before Microsoft did. Good to know, but not really impressive. +What was more interesting was that Firefox lets you type in whatever you want in the Location bar, even if it's not a Web address, and you will still get the most relevant page available: for example, typing "firefox" takes me to [url]http://www.mozilla.org/products/firefox/[/url]. This is accomplished through Google's "[url=http://www.google.com/help/features.html#lucky]I'm Feeling Lucky[/url]" feature. IE doesn't do this: it gives me a search page for what I typed, or it tries to 'guess' the domain by adding a .com or .net after the word. + +Firefox still didn't really impress me: some nice tricks, but nothing that would make me want to switch. What started to make the difference was the [b][i]Tabbed Browsing[/i][/b] feature: I knew about it already, because IE started implementing that through the [url=http://toolbar.msn.com/]MSN toolbar[/url], but it's a bit[url=http://weblogs.mozillazine.org/asa/archives/008312.html]buggy[/url], so I didn't even try it. Firefox has had this feature since its very first [url=http://www.mozilla.org/products/firefox/releases/0.1.html]release[/url], so I guess it they represents a fully-functional, stable, and key feature of the browser. Tabbed browsing introduces a new [i]philosophy[/i] for browsing the web: there is only one browser window, but it can have multiple [i]tabs[/i], each displaying a different page. You can switch from one tab to another by clicking on the title (tab titles appear horizontally under the location bar), "Open Link in New Tab" by right-clicking on a link, and open empty tabs with either CTRL+T or from the [i]File[/i] menu. It takes a while to get used to it, but after a while I couldn't really live without it! + +I then asked my friend why Firefox doesn't allow me to play music or videos or read pdf files, etc., and he said that I needed to install all the necessary [url=https://pfs.mozilla.org/plugins/]plugins[/url]. This is the most annoying thing about Firefox: you have to "feed" it and "teach" it things - a lot like a baby, really. If the analogy is truly valid, in the end it should be worth it, and I have the feeling that my Firefox will grow up well, if I'm careful. + +After learning about plugins, and teaching my little Firefox what to do with movies, songs and other types of files, I learnt that it had another really smart feature: outstanding, built-in [b][i]search capabilities[/i][/b]. +I had already noticed the small search bar on the top right, next to the location bar: it's basically a shortcut to Google Search. Cool, but I already had this in IE. One thing I didn't like about IE though, was that if I wanted to use a different search engine, like Yahoo or MSN, I had to install [i]another toolbar[/i], and I ended up with something like three different toolbars under the address bar, so I could hardly see the webpages I was browsing! + +Firefox apparently knows that people might need to use more than one search engine, so you can select other search engines by clicking on the little icon on the left of the aforementioned search bar. Yahoo, MSN, Wikipedia, and others are available, and [url=http://mycroft.mozdev.org/download.html]others[/url] can be installed easily. If you need a plugin for a search engine, and it doesn't exist yet, you can even make it yourself quite [url=http://mycroft.mozdev.org/generator/]easily[/url]. + +But let's come back a bit to when I ran Firefox for the first time: where did my IE Favourites go? Under the [i]Bookmarks[/i] menu, obviously, and they even kept their folder structure. They can be organized through the [i]Manage Bookmarks[/i] option, and indeed Firefox's [i]Bookmarks Manager[/i]'s interface looks much cleaner and is easier to use than IE's. However, since all the imported bookmarks get dumped in a subfolder, it takes a little time to get them all up to the top level. + +Firefox also implements [i][b]Live Bookmarks[/b][/i]: some sites, especially news-related ones like [url=http://news.yahoo.com/]Yahoo News[/url] and [url=http://news.bbc.co.uk/]BBC News[/url], and [url=http://slashdot.org/]Slashdot[/url] offer [url=http://en.wikipedia.org/wiki/RSS_%28file_format%29]RSS[/url] feeds which are updated several times a day. With Firefox, you can [i]subscribe[/i] to a particular site's RSS by clicking on the little square orange icon which appears on the status bar, and a [i]Live Bookmark[/i] will be saved. They appear under the [i]Bookmarks[/i] menu, in a specific folder, and also on your [i]Bookmarks Toolbar[/i] which is under the location bar: clicking on one of them will show the corresponding site's current headlines. You can click on any of the headlines to read the full story/article. + +Even if my friend realised he just created another Firefox fan, he insisted on telling me a few words about Downloads and Options. Regarding Downloads, there's not much to say: Firefox incorporates a [i][b]Download Manager[/b][/i] that saves all files downloaded from the Net in a specific (selectable) folder, and keeps a history of all downloads. The download manager is opened automatically whenever a file is downloaded, and it also can be opened manually by selecting [i]Tools-Downloads[/i]. The really handy part is that you can easily open a downloaded file or the folder it's in, or clear your download history all in one place. The drawback is that it stays open until you close it, and you have to click a button to clear the already downloaded files from the queue. + +[i][b]Options[/i][/b] is more complex to deal with, as Firefox does not rely on Windows' [i]Internet Options[/i]. Firefox's Options (under the [i]Tools[/i] menu) are more complete and better organized, as they are clearly divided into 5 main categories: + +[i]General[/i] +In this panel you can set up your starting page, fonts, colors, language, character encodings, whether or not Firefox is the default browser, and your connection settings. + +[i]Privacy[/i] +Here - and this is really much better than in IE, I must admit - you can clear and manage history items, saved form information, saved passwords, download manager history, cookies and the browser cache. You can clear everything with a single click, but you'll lose all your saved passwords and your history lists. + +[i]Web Features[/i] +This panel is for setting your preferences regarding popup blocking, software installation, images, Java and JavaScript. + +[i]Downloads[/i] +Here you can choose your download destinatination folder as well as set other download-related preferences, like setting particular file types to save to a particular folder. + +[i]Advanced[/i] +This panel is for - as the name implies - advanced preferences regarding accessibility, browsing, security, validation and certificates. You don't need to change anything here unless you've been told to or you know what you're doing. + +[i]Is That All?[/i] +That's what I thought, and although I was really impressed with Firefox, I was still missing some features that IE had, such as third party toolbars. My friend was about to go, but he quickly opened a pre-defined firefox bookmark: [url=https://addons.mozilla.org/]Mozilla Update[/url]. "Now you know how Firefox works: I'm sure you can work this out by yourself," he said, and left me with a door to another vast world to explore. The journey was far from over. + + +[b]Extensions and Themes[/b] +One aspect of Firefox that was a bit discouraging was the fact that once you install the browser you need to install this, download that, and configure the other thing. For any IE user (like me), this is a major hassle: before, I just wanted to browse the Net, and I didn't care what I was using or how I was using it. Now, I have to be aware of certain things, and more or less [b]create[/b] the browser I need! On the other hand, this is sort of exciting, in the sense that unlike IE, Firefox can became whatever you want it to be. + +Even after using Firefox for a while, and even after my friend had explained all its nice features, I still felt that it was somehow incomplete. Luckily, Firefox has [i]extensions[/i] and [i]themes[/i]. The numerous [url=https://addons.mozilla.org/extensions/?application=firefox]Extensions[/url] enhance Firefox by adding new features which - honestly - I never thought were even conceivable to be included in a browser. Furthermore, Firefox also has [url=https://addons.mozilla.org/themes/?application=firefox]Themes[/url], so you can change the browser into something completely different, with different icons, shapes and colors! + +It's worth it to mention some [i][b]Extensions[/b][/i] which really impressed me by the functionality or behaviours they added to Firefox: + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=10&application=firefox][i]Adblock[/i][/url] +This extension blocks ads - if you don't want to see a banner on a certain site anymore, just right-click on it, select AdBlock, and it's gone! It also remembers your preferences for every URL or site. It's easily customizeable and useful. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=158&application=firefox][i]Tabbrowser Preferences[/i][/url] +This adds a new category in your Options called [i]Tabbed Browsing[/i], where you can customize particular behaviours concerning tabs, like opening all addresses typed in the location bar in a new tab (focused or unfocused), forcing links to open in new tabs instead of new windows, and so on. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=220&application=firefox][i]FlashGot[/i][/url] +I complained before that my download manager wasn't integrated with Firefox: this extension does that, and supports nearly every possible download manager and accelerators. It also has a built-in gallery to quickly see what file types you are downloading. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=743&application=firefox][i]CustomizeGoogle[/i][/url] +This personalises Google-related sites and services, such as using [url=http://www.google.com/webhp?complete=1&hl=en]Google Suggest[/url] in every search, filtering content and ads, anonymizing data transmitted to Google, and much more. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=398&application=firefox][i]ForeCastFox[/i][/url] +Get weather forecasts from all over the world displayed directly on your status bar or anywhere you want. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Developer%20Tools&numpg=10&id=60][i]Developer Tools[/i][/url] +This is THE ultimate solution if you are a web developer or interested in knowing more about webpages. With this extension you can: +- Disable [b]anything[/b] with a single click (images, JavaScript, cookies, colors, animations, etc.) +- Get CSS information or modify a page's CSS +- Have fun with Forms (convert POSTs to GETs, show hidden fields, and so on) +- Perform image-related operations: show paths, attributes, outline particular images, etc. +- Get infos about various elements on a page +- Clear history, cookies, open java console, view document's source +- Outline particular elements (images, tables, etc.) +- Resize your browser to a custom or predefined resolution +- Validate a page (HTML, CSS, WAI accessibility, speed reports) + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=33][i]Googlebar[/i][/url] +Clone of the IE Google Toolbar. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=270][i]Yahoo Companion[/i][/url] +Clone of the IE Yahoo toolbar. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=219][i]FoxyTunes[/i][/url] +Control your favourite media player (several programs supported) directly from Firefox! + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=16][i]ChatZilla[/i][/url] +A complete, fully functional, easy-to-use IRC client which runs from Firefox. + +[url=https://addons.mozilla.org/extensions/moreinfo.php?id=684][i]FireFTP[/i][/url] +Fully integrated FTP client. + +There are actually many more extensions available from either the Firefox website or other [url=http://www.extensionsmirror.nl/]portals[/url] which can be very useful, depending on your needs, but there are also [b][i]Themes[/i][/b] which can change Firefox's look and feel completely, such as: + +[url=https://addons.mozilla.org/themes/moreinfo.php?id=7&application=firefox][i]Qute[/i][/url] +This theme inspired Firefox default theme: "Icons designed to be modern, dynamic and fresh, with attention paid to usability and comfort over extended use". + +[url=https://addons.mozilla.org/themes/moreinfo.php?id=101&application=firefox][i]Silverskin[/i][/url] +"Your favourite browser with a silver skin (With the Qute icons by Arvid Axelsson)" + +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=414][i]Saferfox Xpanded[/i][/url] +"A full skin theme with a modern aqua design" + +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=213][i]Plastikfox Crystal SVG[/i][/url] +"Plastik style from KDE with Crystal SVG icons" + +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=72][i]Noia (eXtreme)[/i][/url] +"This theme is based on the Noia2.0 icon set by Carlitus." + +[url=https://addons.mozilla.org/themes/moreinfo.php?application=firefox&category=Popular&numpg=10&id=548][i]Brushed[/i][/url] +"A Brushed and Polished Browser Interface." + +Again, many more themes are available. There's something for everyone, really! + + +[b]To switch or not to switch?[/b] + +Yes, OK, it's not one of those questions which will keep you up at night, but for sure it can be a quandary. Personally, I decided to switch to Firefox gradually, while still viewing some sites in IE, because I think this can be a good compromise. The biggest problem is that even if Firefox supports Web standards (my friend said IE doesn't) some sites do not. Especially before Firefox, web developers apparently had to create their sites to be viewed correctly with Microsoft's browser. That's why some sites still have things like "This site is best viewed in Internet Explorer 6", or even, in some cases, they'll suggest you download the latest IE version, because [i]your browser is incompatible[/i] when actually it's [i]the site[/i] which is not compatible with [url=http://www.w3c.org/]Web Standards[/url]. +Furthermore, [url=http://www.microsoft.com/com/default.mspx]ActiveX[/url] is a non-standardized proprietary technology which Microsoft uses to make software components communicate and also provide complex functionalities necessary for things like Windows Update. Firefox doesn't support ActiveX, which has been exploited many times in the past (and still now): tough luck. Nowadays, Microsoft wants you to have Automatic Updates turned on, so you don't need to visit the Windows Update site anymore. As far as I'm concerned, I'm not too bothered by that, but if someday I need ActiveX technology, there's already a [url=http://www.google.com/url?sa=U&start=1&q=http%3A//www.iol.ie/%7Elocka/mozilla/mozilla.htm&ei=cwnIQu_tBYqgiAKd9bGrCw&sig2=afi7r8Pa_YLozVo0JbGp9w]Mozilla Project[/url] on it. Final note: If you need to switch back to IE for some reason, the [url=https://addons.mozilla.org/extensions/moreinfo.php?id=35]IE View[/url] extension can quickly give you the opportunity to do so, opening IE to view the page you're visiting. + +It looks like the Browser Wars have started again, and as a matter of fact, Firefox is becoming known for its features, innovations and [url=http://www.mozillazine.org/]community support[/url]. Switching can be scary, and people can try forcing you to do it, but you shouldn't listen to them: don't start using Firefox just because "it's cool" or "everybody uses it"; try it first, understand how it works, and spend time learning it, because it just might be worth it. + One thing is certain: The existence of IE lovers is debatable, but there are over [url=http://www.spreadfirefox.com]170 million[/url] Firefox lovers. Go [url=http://www.mozilla.org/products/firefox/]get it[/url]!
M content/articles/im-on-twitter-anyway.textilecontent/articles/im-on-twitter-anyway.textile

@@ -13,12 +13,12 @@ - programming

type: article toc: true ----- -I've been neglecting my blog, I know. The truth is that I'm quite busy in this period: I have more responsibilities in my daily full-time jobs, my lunch breaks are getting shorter and I don't have much free time. At any rate, here's what's going on: - -* I'm writing a new article for an online magazine (assuming I'm gonna finish it) -* I signed up for a freelance technical reviewing job, for a new Ruby book which will come out soon-ish -* I'm getting ready to finally visit Rome (again), this time with my fiancée, for our fifth anniversary. -* I'm slowly preparing a version 1.0 of "RedBook":http://code.google.com/p/redbook/, which involves quite a lot of refactoring (and hopefully better documentation and tests). -* I'm trying to learn a little bit of Haskell: it seems to be one of the few non .NET languages able to produce standalone .exe files, nowadays... - +I've been neglecting my blog, I know. The truth is that I'm quite busy in this period: I have more responsibilities in my daily full-time jobs, my lunch breaks are getting shorter and I don't have much free time. At any rate, here's what's going on: + +* I'm writing a new article for an online magazine (assuming I'm gonna finish it) +* I signed up for a freelance technical reviewing job, for a new Ruby book which will come out soon-ish +* I'm getting ready to finally visit Rome (again), this time with my fiancée, for our fifth anniversary. +* I'm slowly preparing a version 1.0 of "RedBook":http://code.google.com/p/redbook/, which involves quite a lot of refactoring (and hopefully better documentation and tests). +* I'm trying to learn a little bit of Haskell: it seems to be one of the few non .NET languages able to produce standalone .exe files, nowadays... + Last but not least, I now decided to use "Twitter":http://twitter.com regularly, so you can follow me "there":http://twitter.com/h3rald/, if you wish!
M content/articles/incomplete-guide-to-london.textilecontent/articles/incomplete-guide-to-london.textile

@@ -11,227 +11,227 @@ - travelling

type: article toc: true ----- -This summer I finally had a chance to spend _a whole week_ in London. The city itself was not new to me, since I visited it 6 times before this one, but this summer was different, in a word: Roxy (my fiancee)'s brother Caspar was happy to host us at his place, for free.<a name="top"></a> - -h3. Table of Contents - -* "Preamble":#pre -* "Transportation":#trans -** "Planes":#planes -** "Trains, coaches and cabs":#trains -** "The tube and buses":#tube -* "Food":#food -** "Rubbish Food":#rubbish -** "Healthy Food":#healthy -** "Brick Lane":#brick -* "Entertainment":#enter -** "Clubbing":#club -** "Museums":#museums -** "Theatres":#theatres -** "Shopping":#shop - -<a name="pre"></a> "[Back to Top]":#top - -h3. Preamble - -This summer I finally had a chance to spend _a whole week_ in London. The city itself was not new to me, since I visited it 6 times before this one, but this summer was different, in a word: Roxy (my fiancee)'s brother Caspar was happy to host us at his place, for free. - -Although we obviously had to pay for our flight, transport, food, etc. etc., we didn't have to pay for accommodation, which was indeed quite an achievement, considering the prices of hotels and flats in London. The bad news is that this Guide, although already lacking a lot of information (try describing everything you can do in London in a single, not-too-boring article), will not contain any particular hints and tips on how to find accommodation in one of the most interesting cities in Europe - unless of course you get to stay at Caspar's place. - -<a name="trans"></a> "[Back to Top]":#top - -h3. Transportation - -Getting there is relatively easy and if you come from Europe there's a quick answer to the universal traveller's question: - -_"Is there any cheap, reliable and on-time airline?"_ - -<a name="planes"></a> "[Back to Top]":#top - -h4. Planes - -Yes, there is. Apparently some Irish man thought he could make millions by buying loads of Boeing 737-800 and selling cheap flight tickets to everyone going to or from London, and he actually did. "RyanAir":http://www.ryanair.com is the answer: a cheap-but-reliable airline which will make you arrive even early than you expected by paying tickets as low as 1p (plus 20-30 Euro airport taxes). Unfortunately they don't provide full meals aboard, they don't have any cutlery on board for you to steal, unlike "BA":http://www.britishairways.com/travel/globalgateway.jsp/global/public/en_, and flight attendants are not hot either, unlike "BA":http://www.britishairways.com/travel/globalgateway.jsp/global/public/en_, but since I'm happily engaged and Roxanne doesn't fancy me stealing BA cutlery it's better this way indeed. -Unfortunately we booked only a month before and thus the flight for both of us (return) was about 80 Euro in the end, but still not bad. - -Luggage check? Not bad, unless you plan to arrive or depart right after an unfoiled bomb plot like I did: I had to take off my shoes, got checked everywhere, they emptied out my hand luggage, turned on and off my laptop and confiscated my gel-ink pen. Way to go! - -<a name="trains"></a> "[Back to Top]":#top - -h4. Trains, coaches and cabs - -!</img/pictures/london/cab.jpg! - -The next question of the London newbie arriving in Stansted airport is: - -_"Cool, now I'm in the middle of nowhere in England, where's London then?"_ - -Nice innit? They sell you a cheap flight and then it seems you still have a 45-minutes journey to get to the actual city, and this is possible - apparently - only through the Stansted Express, the _fastest_ way to get to London from Stansted. Dear as hell (about 25 ENGLISH POUNDS return, per head!). -Luckily there's an alternative in the form of an endless amount coaches going from Stansted to London and vice-versa every now and then. I went with "Terravision":http://www.terravision.it/ but there are many others. Significantly cheaper (34 Euro for two people return!). -The Stansted Express is the first example of how trains in the UK can be a lot dearer than you expect, especially if you come from Italy where you can go from Genoa to the Cinque Terre for as low as five Euro (for 100Km that is). Considering that Roxy and I spent about two pounds for about 15 Km to get from Victoria Station to Bromley South one way, well, yes, it is more expensive! - -Once we got to Liverpool Street Station from Stansted with a load of (empty) suitcases, a weird pakistani guy in a a black leather jacket turns up out of nowhere and heads towards us. Damn airport regulations: unfortunately my almighty Victorinox pocket knife was in my suitcase. Luckily the guy approaches and simply asks: - -Him: "Hey mate, need a taxi? ...A taxi mate? A taxi?" -Me: "How much" -Him: "Where to?" -Me: "[Somewhere in Hackney]" -Him: "20 pounds" -Me: "Bye" - -Just an unregistered cab driver. There are apparently millions around and they can spot a foreigner (especially Italians, it seems) from miles. Be prepared, and be aware that a cab from Liverpool Street for a 5-minutes drive in the night should not cost more than 6 pounds... - -<a name="tube"></a> "[Back to Top]":#top - -h4. The tube and buses - -Here are some tips for smooth travalling via the underground or buses: -1. Do not use a bus unless you can't use the Tube for some particular reason (e.g. you need to go to Zone 3 or 4 and your Oyster card can be used only in zone 1 and 2) -2. Do not catch the Circle Line, always try a combination of two or more (e.g. District and Central) instead, because delays are frequent -3. Get down at Leicester Square if you're going to Covent Garden: it's just 300 metres away and Covent Garden station is small and packed -4. Always check whether the line you're catching is marked with "Good Service", try another route if there delays are expected -5. Keep right on escalators - there's always some lunatic running up/down on the left side, from time to time, and trust me, he WILL mind being stopped for no valid reason -6. Mind the gap! (Especially at Bank station) -7. Mind the sweaty guys wearing suite and holding a briefcase, at peek hours, they can be deadly especially on escalators (See 5.). - -<a name="food"></a> "> Back to Top <":#top - -h3. Food - -I already noticed this during the previous visits: in London you can eat everywhere. Quite literally, both in the city centre and surrounding areas. If you can - and also if you feel brave enough to try at random - the areas surrounding the city centre are probably cheaper than the 4-million different food chains providing any kind of meal near Oxford Street & Co. and possibly - arguably - more tasty. - -If you dare to venture in the land of the Turkish/Bangladesh/Indian food shops you're more than welcome to do so, but be prepared to a potentially long trial-and-error process: in the end you'll eventually find the right one. Caspar recommended a particular one, and the "humus sandwitch":http://www.astray.com/recipes/?show=Humus%20sandwich%20spread was really great. Doner Kebab? Roxy insisted with the rumors they use roadkill for those (she's vegetarian anyway) so she didn't let me have one, aww. - -<a name="rubbish"></a> "[Back to Top]":#top - -h4. Rubbish Food - -I recently came across an interesting "image":http://www.princeton.edu/%7Eina/infographics/starbucks.html which gave me a better picture of how horrendously sick the world has become when it comes to rubbish food. -Yes, "McDonald's":http://www.mcdonalds.com/, "Starbucks":http://www.starbucks.com/ & their nasty friends ("Pizza Hut":http://www.pizzahut.com/, "KFC":http://www.kfc.com/, "Burger King":http://www.bk.com/...) are still there making millions at every corner, in London as well. Well, not quite: I noticed they were less last time, and apart from a few kids fretting for their _Happy Meal_, they weren't so packed. I was pleased to notice that a load of new-ish healthier alternative are now available (see next section). - -<a name="healthy"></a> "[Back to Top]":#top - -h4. Healthy Food - -!>/img/pictures/london/pret.png! - -This was the relatively new surprise. Relatively new because I already noticed some of them last year, but this time I had a chance to try them all: they _healthy food gang_! This is the REAL food trend for London, it seems, and I was very glad about it. -The first one seems to have been "Pret a Manger":http://www.pret.com/ a London-established company which is now spreading - apparently - in the US as well. They "preach and believe":http://www.pret.com/about/ in the importance of healthy food and fight a silent - but effective - quest against aforementioned Rubbish Food Giants. - -bq. -"Pret operates a bit like a restaurant. Every Pret has its own kitchen (except for one or two of the tiny ones). You won't find 'sell by' dates on our fresh sandwiches and salads. We don't sell 'factory' stuff. We offer our food to charity at the end of each day rather than keep it over." - -Sounds like a good plan. The food is indeed very nice and tasty and they even _apologize_ for charging VAT when eating in. A carefully-thought marketing campaign or the just plain simple truth (Wot!)? Only time will tell, let's hope for the best. -Another example of healthy food around London? Well, real, tasty "Cornish pasties":http://www.westcornwallpasty.co.uk/flash.html can be bought for a few quid around in the biggest stations and streets, for example. Freshly baked in Cornwall, and brought all over England the same day - or so they make out. - -_"Hey, what the hell is a pasty man?"_ -"Go back where you belong, you "emmit":http://www.urbandictionary.com/define.php?term=emmet!" - -Roxanne and Caspar both lived in (West!) Cornwall for years, and they really appreciated their fellow pirates trying to take over the world. - -<a name="brick"></a> "[Back to Top]":#top - -h4. Brick Lane - -_"Come in my restaurant... good food, cheap..."_ -"No." -_"C'mon, I make a discount for you"_ -"How much?" -_"15% off"_ -"No way mate, last time it was 25% with a free round of drinks!" -_"You came here before? Impossible, we don't do 25% off, we do 20% off maximum"_ -"No, 25% off, it was 25% off, but doesn't matter, I'll go somewhere else..." -_"No wait, 20% off and free drinks, ok?"_ -"25%" -_"OK, 25% and free drinks, but you come in OK? Good food!"_ - -This is just an example of conversation between a guy working for a restaurant in "Brick Lane":http://www.visitbricklane.com/ and a "potential customer". Brick Lane (aka Banglatown) is a street in London which became popular for the moltitude of Indian/Bangladesh restaurants. There are literally dozens of them, and this fierce competition causes the owner to repeteadly offer "deals" to potential customers: getting 25% off the bill is not unusual, and sometimes if you can argue it well you can even get free drinks. Caspar took us to a really good place he went before, and the curry and rice and other typical dishes were absolutely fabulous. Price? 11 pounds per head for a filling (and spicy!) dinner. - -<a name="enter"></a> "[Back to Top]":#top - -h3. Entertainment - -So what can you do in London, other than meandering with the underground to get the most out of your Oyster card and eat out every day? Well, you can have fun of course! There's loads to do for every taste. This is an _incomplete_ guide, so I'll just mention a few possibilities, but be aware that there's much, much more than this. - -<a name="club"></a> "[Back to Top]":#top - -h4. Clubbing - -Each weekend, the following equation holds, for the average Londoner aged 20-30 at least: - -@100 pounds + Club + Friends = Loads of booze + Fun + Terrible hangover and amnesia the day after@ - -That's basically what the traditional Londoners (or maybe we shall generalise to all of England...) do every saturday night: they get trashed. Why? It's not clever, it's not good... but it's bloody good fun! -Clubs, pubs and bars are the best place for this kind of activity: they are comfortable, there's normally cool music on, air conditioning, totally hyper staff, and a huge bouncer too! -We went to "The Ditch":http://www.ditchbar.com/, a recently renovated place in Shoreditch (obviously). I must say I really liked the environment more than any club in Italy: - -* Good music and deejay -* Enough people inside, but not too crowded -* Good drinks -* Small & comfy VIP room, obviously for us (no kidding) -* A competent bouncer who kindly reminded us to "watch over" one of our friends, after she suddenly ordered four Vodka-RedBull at once... - -No wonders why Caspar & his friends carefully picked this place as their ideal candidate for their own upcoming DJ mini-event in November: it's an ideal place to spend your night. - -Pity that English blokes (and birds too!) get way too trashed in the end: I reckon if you could place a single half-sober, decent-looking Italian guy in a club like that, he'd have pulled almost all the (decent-looking) girls available by the end of the night. I'll definetely recommend some of my _free_ (not as in software) friends to go over to London next summer. - -<a name="museums"></a> "[Back to Top]":#top - -h4. Museums - -Enough clubbing and equally shallow activities, let's focus on culture, at once! -London is the best city in Europe (OK, _followed_ by Paris) for museums, and the best thing is that they are (nearly) all free. This time we didn't go to the "National Gallery":http://www.thebritishmuseum.ac.uk/, which hosts one of the most outstanding painting galleries in all over the world, because we already visited it too many times, so we went straight for the "British Museum":http://www.thebritishmuseum.ac.uk/. I originally went there a few years ago, and I forgot what was in it, exactly, and yes, I was amazed and perplexed at the same time: - -!</img/pictures/london/rosetta.jpg! - -I was amazed at the amount of stuff those British folks _nicked_ from all over the world: I'm not talking about a few mummies from Egypt like we did in for our mini Egyptian museum in Turin, but rather stuff like the original sarcophagus of Cleopatra (& others), the Rosetta Stone, the Ur Standard, whole monuments from Greece, gargantuan gateways from some Assirian city, and _ALL THE SCULPTURE DECORATIONS OF ATHEN'S PARTHENON!_ That was shocking really, but after all it was Napoleon who stole the Monna Lisa from us. Damn the French. (No discrimination intended, please mind the sarcasm) - -The "Tate Modern":http://www.tate.org.uk/modern/ was impressive as well for a few Dali's and Kandinski's paintings etc. etc., but I don't think it can ever be as breath-taking as the other ones. I certainly don't understand certain kinds of modern art, but I can't understand how a random guy could get loads of money and ovation for the critics for putting a few basket-balls in a glass box. Clever. - -!>/img/pictures/london/nh.jpg! - -To conclude this brief and silly overview of London's most remarkable museums, let's say something about the "National History Museum":http://www.nhm.ac.uk/. -First of all it must be noted that we have a decent equivalent in Genoa, so Roxy and I visited it not long prior to our departure for England. She liked it, and was impressed by the amount of stuffed animals on display, but she told me that the National History Museum in London was supposed to be _way better_. -We both expected, especially judging from outside this enourmous building which was built for the purpose, big halls full of taxidermist's masterpieces, but alas, nothing like this at all. Yes, sure, there were a few stuffed animals here and there, and the minerals section was truly outstanding for completeness. The rest - in my very, very humble opinion - was a real insult to Science and to the dignity of the visitors over five years old. -They insisted in "renovating" the interior of a marvellous building, making almost every room pitch black only to allow a kid in a million to press a button to highlight a five-lines explanation for a absolutely pointless diagram. Well done. That was a real achievement, wasn't it? I really don't understand who could ever conceive such an abomination: a formerly very respected museum turned into a poorly-designed theme park. -OK, they probably wanted to involve younger generations into scientifical subjects through "interactivity", and that's understandable - in theory. In practice though, there are a few elements which weren't obviously considered when developing such a subtly cunning marketing strategy: - -* The average kid up to 5 years old enjoys pushing buttons, listening to sounds and looking at easy-to-understand (but ARE THEY?) pictures, but alas, can't really bother to read, right? -* The average kid over 5 years old would probably like reading some explanation about some weird phenomena, but alas, he really can't be bothered to push button, move levers, etc. etc. only to highlight some text. Wake up dude, we never heard of Computer Graphics? Animation? even Educational Software, maybe with things like touchscreens etc. These kids are from the XXI century, not from the seventies ffs! Grow up (the museum's managers, not the kids of course)! -* Instead of ruining an historical building, they could have devoted just a few rooms to kids, investing in something slightly more amazing than out-of-fashin "interactive" toys. - -_"Yes, but hey, we still have a huge queue of kids & families at the entrance!"_ - -And you know why? You know what are all these people queueing for? For a damn cheesy T-rex "animatronic":http://science.howstuffworks.com/animatronic.htm! Yes, really! And no, not the one from Jurassic Park, but only its rather shitty English-made cousin. -The funniest thing of the whole visit? They tell you to donate "at least" three quid for their wonders, same as for the British Museum and the National Gallery. You know what? I'd rather give _thirty_ quid to a random kid if he promise not to visit such "museum"... - -<a name="theatres"></a> "[Back to Top]":#top - -h4. Theatres - -Luckily London theatres are still great. Unfortunately I didn't have a chance to go to a musical this time, but I'll definitely try to make it for one during my next visit. Adverts for the shows are all over the place, from streets to underground stations, and there are truly a lot of places where it is possible to buy tickets at discounted price while apparently buying full price tickets doesn't seem to be possible... -Anyhow, not only we didn't manage to go to a musical, but we also missed another theatrical performance by "Patrick Stewart":http://www.imdb.com/name/nm0001772/, who, for those who don't know, happens to be one of the best Shakespearean actors alive... when he doesn't "fight against the Borg":http://en.wikipedia.org/wiki/Star_Trek:_First_Contact or "plays funny tricks on a wheelchair":http://en.wikipedia.org/wiki/X-Men_(film), of course (cheesy, cheesy joke). - -Nevertheless we _did_ manage to go and see a play, namely Shakespeare's Antony and Cleopatra at the "Globe":http://www.shakespeares-globe.org/navigation/framesetNS.htm. The Globe Theatre is an almost-perfect reconstruction of the famous London Theatre where Shakespeare's plays used to be acted. Like in the XVII century, you have two choices: - -a. Book your seat (26 pounds) -b. Stand up on the ground, near the stage (5 pounds) - -!</img/pictures/london/globe.jpg! - -We obviously went for option b, of course, since we didn't fancy the idea of paying that much - although it can be worthwhile. Only one thing to keep in mind: _always check the duration of the play you're going to see beforehand_ - if you don't like standing up for a long time, you have to go for option a. -We obviously _didn't_ check how long the play was going to be - although we could have imagined it - so we ended up standing up for approx three hours (with a 15 minutes break). And you _have_ to stand up, you can't sit on the stairs and neither on the floor, and the staff is ready to enforce this rule at all costs: a 70-year-old lady brought a folded chair and decided to sit on it, only to be _kindly reminded_ by the staff that it wasn't allowed to do so. Go figure. -Anyhow, after all I must say it was the cheapest and the very best Shakespeare play I've ever been to so far, although I must also say that most of the ones I've been to before were acted in (yikes!) Italian (yes, we do dub theatrical works, _as well_). A really, really good idea for students and half-broke youth who shouldn't be denied of the pleasure of watching Shakespeare's masterpieces at the theatre. Please, keep it up. - -<a name="shop"></a> "[Back to Top]":#top - -h4. Shopping - -Last but not least, I felt compelled to include a short section about _shopping_ in London. The universal answer to the question "Where can I find [insert random item here]" is normally "Oxford Street":http://www.oxfordstreet.co.uk/. When I visited it for the first time (I was about 14 years old, I believe) it all seemed huge... those never-ending malls et al, but now it just seems "normal". Probably because now going to malls and megastores is just the plain normality, while in the nineties (in Italy) it was rather unusual. -Oxford Street has them all: computer shops, endless fashion shops, gargantuan bookshops etc. etc. -Biggest and most expensive shop in Oxford Street? Probably "Selfridges":http://www.selfridges.com/ -Biggest bookshop? Definitely "Waterstone":http://www.amazon.co.uk/exec/obidos/tg/stores/static/-/waterstones/waterstones-info/202-4070483-1661418 although the biggest bookshop in London (and in Europe) is the Waterstone one in Piccadilly, just round the corner. -"Harrods":http://www.harrods.com/Cultures/en-GB/homepageindex.htm? - it's not far from there. - -What if you like more traditional and less glamorous shopping? "Covent Garden":http://www.coventgardenlife.com/ and its whereabouts is probably the best choice, also for souvenirs. - +This summer I finally had a chance to spend _a whole week_ in London. The city itself was not new to me, since I visited it 6 times before this one, but this summer was different, in a word: Roxy (my fiancee)'s brother Caspar was happy to host us at his place, for free.<a name="top"></a> + +h3. Table of Contents + +* "Preamble":#pre +* "Transportation":#trans +** "Planes":#planes +** "Trains, coaches and cabs":#trains +** "The tube and buses":#tube +* "Food":#food +** "Rubbish Food":#rubbish +** "Healthy Food":#healthy +** "Brick Lane":#brick +* "Entertainment":#enter +** "Clubbing":#club +** "Museums":#museums +** "Theatres":#theatres +** "Shopping":#shop + +<a name="pre"></a> "[Back to Top]":#top + +h3. Preamble + +This summer I finally had a chance to spend _a whole week_ in London. The city itself was not new to me, since I visited it 6 times before this one, but this summer was different, in a word: Roxy (my fiancee)'s brother Caspar was happy to host us at his place, for free. + +Although we obviously had to pay for our flight, transport, food, etc. etc., we didn't have to pay for accommodation, which was indeed quite an achievement, considering the prices of hotels and flats in London. The bad news is that this Guide, although already lacking a lot of information (try describing everything you can do in London in a single, not-too-boring article), will not contain any particular hints and tips on how to find accommodation in one of the most interesting cities in Europe - unless of course you get to stay at Caspar's place. + +<a name="trans"></a> "[Back to Top]":#top + +h3. Transportation + +Getting there is relatively easy and if you come from Europe there's a quick answer to the universal traveller's question: + +_"Is there any cheap, reliable and on-time airline?"_ + +<a name="planes"></a> "[Back to Top]":#top + +h4. Planes + +Yes, there is. Apparently some Irish man thought he could make millions by buying loads of Boeing 737-800 and selling cheap flight tickets to everyone going to or from London, and he actually did. "RyanAir":http://www.ryanair.com is the answer: a cheap-but-reliable airline which will make you arrive even early than you expected by paying tickets as low as 1p (plus 20-30 Euro airport taxes). Unfortunately they don't provide full meals aboard, they don't have any cutlery on board for you to steal, unlike "BA":http://www.britishairways.com/travel/globalgateway.jsp/global/public/en_, and flight attendants are not hot either, unlike "BA":http://www.britishairways.com/travel/globalgateway.jsp/global/public/en_, but since I'm happily engaged and Roxanne doesn't fancy me stealing BA cutlery it's better this way indeed. +Unfortunately we booked only a month before and thus the flight for both of us (return) was about 80 Euro in the end, but still not bad. + +Luggage check? Not bad, unless you plan to arrive or depart right after an unfoiled bomb plot like I did: I had to take off my shoes, got checked everywhere, they emptied out my hand luggage, turned on and off my laptop and confiscated my gel-ink pen. Way to go! + +<a name="trains"></a> "[Back to Top]":#top + +h4. Trains, coaches and cabs + +!</img/pictures/london/cab.jpg! + +The next question of the London newbie arriving in Stansted airport is: + +_"Cool, now I'm in the middle of nowhere in England, where's London then?"_ + +Nice innit? They sell you a cheap flight and then it seems you still have a 45-minutes journey to get to the actual city, and this is possible - apparently - only through the Stansted Express, the _fastest_ way to get to London from Stansted. Dear as hell (about 25 ENGLISH POUNDS return, per head!). +Luckily there's an alternative in the form of an endless amount coaches going from Stansted to London and vice-versa every now and then. I went with "Terravision":http://www.terravision.it/ but there are many others. Significantly cheaper (34 Euro for two people return!). +The Stansted Express is the first example of how trains in the UK can be a lot dearer than you expect, especially if you come from Italy where you can go from Genoa to the Cinque Terre for as low as five Euro (for 100Km that is). Considering that Roxy and I spent about two pounds for about 15 Km to get from Victoria Station to Bromley South one way, well, yes, it is more expensive! + +Once we got to Liverpool Street Station from Stansted with a load of (empty) suitcases, a weird pakistani guy in a a black leather jacket turns up out of nowhere and heads towards us. Damn airport regulations: unfortunately my almighty Victorinox pocket knife was in my suitcase. Luckily the guy approaches and simply asks: + +Him: "Hey mate, need a taxi? ...A taxi mate? A taxi?" +Me: "How much" +Him: "Where to?" +Me: "[Somewhere in Hackney]" +Him: "20 pounds" +Me: "Bye" + +Just an unregistered cab driver. There are apparently millions around and they can spot a foreigner (especially Italians, it seems) from miles. Be prepared, and be aware that a cab from Liverpool Street for a 5-minutes drive in the night should not cost more than 6 pounds... + +<a name="tube"></a> "[Back to Top]":#top + +h4. The tube and buses + +Here are some tips for smooth travalling via the underground or buses: +1. Do not use a bus unless you can't use the Tube for some particular reason (e.g. you need to go to Zone 3 or 4 and your Oyster card can be used only in zone 1 and 2) +2. Do not catch the Circle Line, always try a combination of two or more (e.g. District and Central) instead, because delays are frequent +3. Get down at Leicester Square if you're going to Covent Garden: it's just 300 metres away and Covent Garden station is small and packed +4. Always check whether the line you're catching is marked with "Good Service", try another route if there delays are expected +5. Keep right on escalators - there's always some lunatic running up/down on the left side, from time to time, and trust me, he WILL mind being stopped for no valid reason +6. Mind the gap! (Especially at Bank station) +7. Mind the sweaty guys wearing suite and holding a briefcase, at peek hours, they can be deadly especially on escalators (See 5.). + +<a name="food"></a> "> Back to Top <":#top + +h3. Food + +I already noticed this during the previous visits: in London you can eat everywhere. Quite literally, both in the city centre and surrounding areas. If you can - and also if you feel brave enough to try at random - the areas surrounding the city centre are probably cheaper than the 4-million different food chains providing any kind of meal near Oxford Street & Co. and possibly - arguably - more tasty. + +If you dare to venture in the land of the Turkish/Bangladesh/Indian food shops you're more than welcome to do so, but be prepared to a potentially long trial-and-error process: in the end you'll eventually find the right one. Caspar recommended a particular one, and the "humus sandwitch":http://www.astray.com/recipes/?show=Humus%20sandwich%20spread was really great. Doner Kebab? Roxy insisted with the rumors they use roadkill for those (she's vegetarian anyway) so she didn't let me have one, aww. + +<a name="rubbish"></a> "[Back to Top]":#top + +h4. Rubbish Food + +I recently came across an interesting "image":http://www.princeton.edu/%7Eina/infographics/starbucks.html which gave me a better picture of how horrendously sick the world has become when it comes to rubbish food. +Yes, "McDonald's":http://www.mcdonalds.com/, "Starbucks":http://www.starbucks.com/ & their nasty friends ("Pizza Hut":http://www.pizzahut.com/, "KFC":http://www.kfc.com/, "Burger King":http://www.bk.com/...) are still there making millions at every corner, in London as well. Well, not quite: I noticed they were less last time, and apart from a few kids fretting for their _Happy Meal_, they weren't so packed. I was pleased to notice that a load of new-ish healthier alternative are now available (see next section). + +<a name="healthy"></a> "[Back to Top]":#top + +h4. Healthy Food + +!>/img/pictures/london/pret.png! + +This was the relatively new surprise. Relatively new because I already noticed some of them last year, but this time I had a chance to try them all: they _healthy food gang_! This is the REAL food trend for London, it seems, and I was very glad about it. +The first one seems to have been "Pret a Manger":http://www.pret.com/ a London-established company which is now spreading - apparently - in the US as well. They "preach and believe":http://www.pret.com/about/ in the importance of healthy food and fight a silent - but effective - quest against aforementioned Rubbish Food Giants. + +bq. +"Pret operates a bit like a restaurant. Every Pret has its own kitchen (except for one or two of the tiny ones). You won't find 'sell by' dates on our fresh sandwiches and salads. We don't sell 'factory' stuff. We offer our food to charity at the end of each day rather than keep it over." + +Sounds like a good plan. The food is indeed very nice and tasty and they even _apologize_ for charging VAT when eating in. A carefully-thought marketing campaign or the just plain simple truth (Wot!)? Only time will tell, let's hope for the best. +Another example of healthy food around London? Well, real, tasty "Cornish pasties":http://www.westcornwallpasty.co.uk/flash.html can be bought for a few quid around in the biggest stations and streets, for example. Freshly baked in Cornwall, and brought all over England the same day - or so they make out. + +_"Hey, what the hell is a pasty man?"_ +"Go back where you belong, you "emmit":http://www.urbandictionary.com/define.php?term=emmet!" + +Roxanne and Caspar both lived in (West!) Cornwall for years, and they really appreciated their fellow pirates trying to take over the world. + +<a name="brick"></a> "[Back to Top]":#top + +h4. Brick Lane + +_"Come in my restaurant... good food, cheap..."_ +"No." +_"C'mon, I make a discount for you"_ +"How much?" +_"15% off"_ +"No way mate, last time it was 25% with a free round of drinks!" +_"You came here before? Impossible, we don't do 25% off, we do 20% off maximum"_ +"No, 25% off, it was 25% off, but doesn't matter, I'll go somewhere else..." +_"No wait, 20% off and free drinks, ok?"_ +"25%" +_"OK, 25% and free drinks, but you come in OK? Good food!"_ + +This is just an example of conversation between a guy working for a restaurant in "Brick Lane":http://www.visitbricklane.com/ and a "potential customer". Brick Lane (aka Banglatown) is a street in London which became popular for the moltitude of Indian/Bangladesh restaurants. There are literally dozens of them, and this fierce competition causes the owner to repeteadly offer "deals" to potential customers: getting 25% off the bill is not unusual, and sometimes if you can argue it well you can even get free drinks. Caspar took us to a really good place he went before, and the curry and rice and other typical dishes were absolutely fabulous. Price? 11 pounds per head for a filling (and spicy!) dinner. + +<a name="enter"></a> "[Back to Top]":#top + +h3. Entertainment + +So what can you do in London, other than meandering with the underground to get the most out of your Oyster card and eat out every day? Well, you can have fun of course! There's loads to do for every taste. This is an _incomplete_ guide, so I'll just mention a few possibilities, but be aware that there's much, much more than this. + +<a name="club"></a> "[Back to Top]":#top + +h4. Clubbing + +Each weekend, the following equation holds, for the average Londoner aged 20-30 at least: + +@100 pounds + Club + Friends = Loads of booze + Fun + Terrible hangover and amnesia the day after@ + +That's basically what the traditional Londoners (or maybe we shall generalise to all of England...) do every saturday night: they get trashed. Why? It's not clever, it's not good... but it's bloody good fun! +Clubs, pubs and bars are the best place for this kind of activity: they are comfortable, there's normally cool music on, air conditioning, totally hyper staff, and a huge bouncer too! +We went to "The Ditch":http://www.ditchbar.com/, a recently renovated place in Shoreditch (obviously). I must say I really liked the environment more than any club in Italy: + +* Good music and deejay +* Enough people inside, but not too crowded +* Good drinks +* Small & comfy VIP room, obviously for us (no kidding) +* A competent bouncer who kindly reminded us to "watch over" one of our friends, after she suddenly ordered four Vodka-RedBull at once... + +No wonders why Caspar & his friends carefully picked this place as their ideal candidate for their own upcoming DJ mini-event in November: it's an ideal place to spend your night. + +Pity that English blokes (and birds too!) get way too trashed in the end: I reckon if you could place a single half-sober, decent-looking Italian guy in a club like that, he'd have pulled almost all the (decent-looking) girls available by the end of the night. I'll definetely recommend some of my _free_ (not as in software) friends to go over to London next summer. + +<a name="museums"></a> "[Back to Top]":#top + +h4. Museums + +Enough clubbing and equally shallow activities, let's focus on culture, at once! +London is the best city in Europe (OK, _followed_ by Paris) for museums, and the best thing is that they are (nearly) all free. This time we didn't go to the "National Gallery":http://www.thebritishmuseum.ac.uk/, which hosts one of the most outstanding painting galleries in all over the world, because we already visited it too many times, so we went straight for the "British Museum":http://www.thebritishmuseum.ac.uk/. I originally went there a few years ago, and I forgot what was in it, exactly, and yes, I was amazed and perplexed at the same time: + +!</img/pictures/london/rosetta.jpg! + +I was amazed at the amount of stuff those British folks _nicked_ from all over the world: I'm not talking about a few mummies from Egypt like we did in for our mini Egyptian museum in Turin, but rather stuff like the original sarcophagus of Cleopatra (& others), the Rosetta Stone, the Ur Standard, whole monuments from Greece, gargantuan gateways from some Assirian city, and _ALL THE SCULPTURE DECORATIONS OF ATHEN'S PARTHENON!_ That was shocking really, but after all it was Napoleon who stole the Monna Lisa from us. Damn the French. (No discrimination intended, please mind the sarcasm) + +The "Tate Modern":http://www.tate.org.uk/modern/ was impressive as well for a few Dali's and Kandinski's paintings etc. etc., but I don't think it can ever be as breath-taking as the other ones. I certainly don't understand certain kinds of modern art, but I can't understand how a random guy could get loads of money and ovation for the critics for putting a few basket-balls in a glass box. Clever. + +!>/img/pictures/london/nh.jpg! + +To conclude this brief and silly overview of London's most remarkable museums, let's say something about the "National History Museum":http://www.nhm.ac.uk/. +First of all it must be noted that we have a decent equivalent in Genoa, so Roxy and I visited it not long prior to our departure for England. She liked it, and was impressed by the amount of stuffed animals on display, but she told me that the National History Museum in London was supposed to be _way better_. +We both expected, especially judging from outside this enourmous building which was built for the purpose, big halls full of taxidermist's masterpieces, but alas, nothing like this at all. Yes, sure, there were a few stuffed animals here and there, and the minerals section was truly outstanding for completeness. The rest - in my very, very humble opinion - was a real insult to Science and to the dignity of the visitors over five years old. +They insisted in "renovating" the interior of a marvellous building, making almost every room pitch black only to allow a kid in a million to press a button to highlight a five-lines explanation for a absolutely pointless diagram. Well done. That was a real achievement, wasn't it? I really don't understand who could ever conceive such an abomination: a formerly very respected museum turned into a poorly-designed theme park. +OK, they probably wanted to involve younger generations into scientifical subjects through "interactivity", and that's understandable - in theory. In practice though, there are a few elements which weren't obviously considered when developing such a subtly cunning marketing strategy: + +* The average kid up to 5 years old enjoys pushing buttons, listening to sounds and looking at easy-to-understand (but ARE THEY?) pictures, but alas, can't really bother to read, right? +* The average kid over 5 years old would probably like reading some explanation about some weird phenomena, but alas, he really can't be bothered to push button, move levers, etc. etc. only to highlight some text. Wake up dude, we never heard of Computer Graphics? Animation? even Educational Software, maybe with things like touchscreens etc. These kids are from the XXI century, not from the seventies ffs! Grow up (the museum's managers, not the kids of course)! +* Instead of ruining an historical building, they could have devoted just a few rooms to kids, investing in something slightly more amazing than out-of-fashin "interactive" toys. + +_"Yes, but hey, we still have a huge queue of kids & families at the entrance!"_ + +And you know why? You know what are all these people queueing for? For a damn cheesy T-rex "animatronic":http://science.howstuffworks.com/animatronic.htm! Yes, really! And no, not the one from Jurassic Park, but only its rather shitty English-made cousin. +The funniest thing of the whole visit? They tell you to donate "at least" three quid for their wonders, same as for the British Museum and the National Gallery. You know what? I'd rather give _thirty_ quid to a random kid if he promise not to visit such "museum"... + +<a name="theatres"></a> "[Back to Top]":#top + +h4. Theatres + +Luckily London theatres are still great. Unfortunately I didn't have a chance to go to a musical this time, but I'll definitely try to make it for one during my next visit. Adverts for the shows are all over the place, from streets to underground stations, and there are truly a lot of places where it is possible to buy tickets at discounted price while apparently buying full price tickets doesn't seem to be possible... +Anyhow, not only we didn't manage to go to a musical, but we also missed another theatrical performance by "Patrick Stewart":http://www.imdb.com/name/nm0001772/, who, for those who don't know, happens to be one of the best Shakespearean actors alive... when he doesn't "fight against the Borg":http://en.wikipedia.org/wiki/Star_Trek:_First_Contact or "plays funny tricks on a wheelchair":http://en.wikipedia.org/wiki/X-Men_(film), of course (cheesy, cheesy joke). + +Nevertheless we _did_ manage to go and see a play, namely Shakespeare's Antony and Cleopatra at the "Globe":http://www.shakespeares-globe.org/navigation/framesetNS.htm. The Globe Theatre is an almost-perfect reconstruction of the famous London Theatre where Shakespeare's plays used to be acted. Like in the XVII century, you have two choices: + +a. Book your seat (26 pounds) +b. Stand up on the ground, near the stage (5 pounds) + +!</img/pictures/london/globe.jpg! + +We obviously went for option b, of course, since we didn't fancy the idea of paying that much - although it can be worthwhile. Only one thing to keep in mind: _always check the duration of the play you're going to see beforehand_ - if you don't like standing up for a long time, you have to go for option a. +We obviously _didn't_ check how long the play was going to be - although we could have imagined it - so we ended up standing up for approx three hours (with a 15 minutes break). And you _have_ to stand up, you can't sit on the stairs and neither on the floor, and the staff is ready to enforce this rule at all costs: a 70-year-old lady brought a folded chair and decided to sit on it, only to be _kindly reminded_ by the staff that it wasn't allowed to do so. Go figure. +Anyhow, after all I must say it was the cheapest and the very best Shakespeare play I've ever been to so far, although I must also say that most of the ones I've been to before were acted in (yikes!) Italian (yes, we do dub theatrical works, _as well_). A really, really good idea for students and half-broke youth who shouldn't be denied of the pleasure of watching Shakespeare's masterpieces at the theatre. Please, keep it up. + +<a name="shop"></a> "[Back to Top]":#top + +h4. Shopping + +Last but not least, I felt compelled to include a short section about _shopping_ in London. The universal answer to the question "Where can I find [insert random item here]" is normally "Oxford Street":http://www.oxfordstreet.co.uk/. When I visited it for the first time (I was about 14 years old, I believe) it all seemed huge... those never-ending malls et al, but now it just seems "normal". Probably because now going to malls and megastores is just the plain normality, while in the nineties (in Italy) it was rather unusual. +Oxford Street has them all: computer shops, endless fashion shops, gargantuan bookshops etc. etc. +Biggest and most expensive shop in Oxford Street? Probably "Selfridges":http://www.selfridges.com/ +Biggest bookshop? Definitely "Waterstone":http://www.amazon.co.uk/exec/obidos/tg/stores/static/-/waterstones/waterstones-info/202-4070483-1661418 although the biggest bookshop in London (and in Europe) is the Waterstone one in Piccadilly, just round the corner. +"Harrods":http://www.harrods.com/Cultures/en-GB/homepageindex.htm? - it's not far from there. + +What if you like more traditional and less glamorous shopping? "Covent Garden":http://www.coventgardenlife.com/ and its whereabouts is probably the best choice, also for souvenirs. + Had enough yet? Well, yes, let's call it a day for this article, but be aware that there's much, MUCH more to see and do in London than you can ever imagine. Unless you're from the US, of course.
M content/articles/inline-introduction.textilecontent/articles/inline-introduction.textile

@@ -17,9 +17,9 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com/ :id: 215 :body: |- - Yes, I tried using output escape sequences for moving the cursor, and on Linux works fine. The problem is that VT*** escape sequences don't work on "modern" Windows Systems! - So I left the original, "naive but cross-platform" implementation for now, at least until I find a way to do the same thing on Windows too (and also a proper way to delete characters). - + Yes, I tried using output escape sequences for moving the cursor, and on Linux works fine. The problem is that VT*** escape sequences don't work on "modern" Windows Systems! + So I left the original, "naive but cross-platform" implementation for now, at least until I find a way to do the same thing on Windows too (and also a proper way to delete characters). + Thanks a lot! - :date: 2008-03-14 16:46:30 +01:00 :author: gthiesfeld

@@ -31,12 +31,12 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com/ :id: 218 :body: |- - @gthiesfeld - - Win32Console is a very cool gem, and for now I only got it working for text coloring, and that's quite cool. By the way, InLine is compatible with Win32Console, unlike Readline (that's one of the reasons why I made it in the first place!). - - Actually it seems to be able to do much more, now that I took a closer look, but unfortunately it's not too well documented. I should spend some time digging through its code. The problem though is that it seems to be a port of a Perl module, and the "coding standards" followed may not be too familiar. - + @gthiesfeld + + Win32Console is a very cool gem, and for now I only got it working for text coloring, and that's quite cool. By the way, InLine is compatible with Win32Console, unlike Readline (that's one of the reasons why I made it in the first place!). + + Actually it seems to be able to do much more, now that I took a closer look, but unfortunately it's not too well documented. I should spend some time digging through its code. The problem though is that it seems to be a port of a Perl module, and the "coding standards" followed may not be too familiar. + Thanks! - :date: 2008-03-15 08:48:29 +01:00 :author: j

@@ -48,12 +48,12 @@ :author: Fabio Cevasco

:url: http://www.h3rald.com/ :id: 220 :body: |- - @j - - You're right... I just noticed that they're not shipped with the gem due to a silly mistake in the Rakefile... aww, my fault! Anyhow: - - - The source of both the examples is in this article - + @j + + You're right... I just noticed that they're not shipped with the gem due to a silly mistake in the Rakefile... aww, my fault! Anyhow: + + - The source of both the examples is in this article + - The _examples_ folder should be in the .zip and .tar.gz packages. - :date: 2008-03-17 12:38:18 +01:00 :author: Gordon Thiesfeld

@@ -89,231 +89,231 @@ - rawline

type: article toc: true ----- -One of the many things I like about Ruby is its cross-platform nature: as a general rule, Ruby code runs on everything which supports Ruby, regardless of its architecture and platform (yes, there are quite a few exceptions, but let's accept this generalization for now). - -More specifically, I liked the fact that I could use the "GNU Readline library":http://tiswww.case.edu/php/chet/readline/rltop.html with Ruby seamlessly on both Windows and Linux. -Readline offers quite a lot of features which are useful for those people like me who enjoy creating command-line scripts, in a nutshell, it provides: - -* File/Word completion -* History support -* Custom key bindings which can be modified via .inputrc -* Emacs and Vi edit modes - -Basically it makes your command-line interface fast and powerful, and that's not an overstatement. Ruby's own IRB can be enhanced by enabling readline and completion, and it works great -- at least on <notextile>*nix</notextile> systems. - -For some weird reason, some people had problems with Readline on Windows: in particular, things get nasty when you start editing long lines. Text gets garbled, the cursor goes up one or two lines and doesn't come back, and other similar leprechaun's tricks, which are not that funny after a while. - -Apparently there's no alternative to Readline in the Ruby world. If you wan't tab completion that's it, you're stuck. Would it be difficult to implement _some_ of Readline functionality natively in Ruby? Maybe, but the problem is that for some reason the Ruby Standard Library doesn't have low level methods to operate on keystrokes... - -...but luckily, the "HighLine":http://highline.rubyforge.org/ gem does! James Edward Gray II keeps pointing out here and here that HighLine's own @get_character@ method does just that: it returns the corresponding character code(s) right when a key is pressed, unlike @IO#gets()@ which waits for the user to press ENTER. - -Believe it or not, that tiny method can do wonders...h2. Reverse-engineering escape codes - -So here's a little script which uses @get_character()@ in an endless loop, diligently printing the character codes corresponding to a keystroke: - -<% highlight :ruby do %> -#!/usr/local/bin/ruby -w - -require 'rubygems' -require 'highline/system_extensions' - -include HighLine::SystemExtensions - -puts "Press a key to view the corresponding ASCII code(s) (or CTRL-X to exit)." - -loop do - - print "=> " - char = get_character - case char - when ?\C-x: print "Exiting..."; exit; - else puts "#{char.chr} [#{char}] (hex: #{char.to_s(16)})"; - end - -end -<% end %> - -A pretty harmless little thing. Try to run it and press some keys, and see what you get: - -<div style="font-family: Monospace"> -Press a key to view the corresponding ASCII code(s) (or CTRL-X to exit). - -=> a [96] (hex: 61) - -=> 1 [49] (hex: 31) - -=> Q [81] (hex: 51) - -=> &alpha; [224] (hex: e0) - -=> K [75] (hex: 4b) - -</div> - -Hang on, what are the last two codes? _A left arrow key on Windows_, apparently. - -*Welcome to the wonderful world of input escape sequences!* - -To cut a long story short, both Windows and *nix system "terminals" translate special keystrokes into sequences of two or more codes. This applies to things like DEL, INSERT, arrows, etc. etc. -For some ideas, check out: - -* "Windows Scancodes":http://www.microsoft.com/whdc/device/input/Scancode.mspx (Thanks "Huff":http://64.223.189.234/node/92) -* "VT220 Terminal Input Sequences":http://www.connectrf.com/Documents/vt220.html (Thanks "James":http://www.grayproductions.net/) - -Let's now assume that we're smart and we can write a program which can parse keystroke properly, including handling different input escape sequences according to the OS, what can it be used for? -Well: - -* For normal characters, just print them back to the screen (@get_character@ doesn't print anything, it "steals" the keystroke) -* For special characters, do something nice! - -We could setup TAB to auto-complete the current word according to an array of matches, or bind the up arrow to load the last line typed in by the user, for example, that's basically something Readline does, right? - -h2. RawLine: how it works and what it does - -I created a small project on RubyForge called "RawLine":http://rubyforge.org/projects/rawline/ (not to be confused with RubyInline, a completely different thing altogether, sorry about that) to play around with the possibilities offered by the @get_character@ method. The library is just a preview of things which can be done, but it's already usable, provided that you're brave enough to try it out, that is. - -The basic idea behind RawLine is to be able to parse keystrokes properly on different platforms and re-bind them to a set of predefined, cross-platform actions or a user-defined code block. - -h3. Basic line-editing operations - -The first challenge was to re-invent the wheel, i.e. re-bind keystrokes to their typical actions: a left arrow moves the cursor left, a backspace deletes the character at the left of the cursor and so on. Yes, because @get_characters@ gives you the right character codes at the price of _cancelling their normal effects_, which is a great thing, as you'll soon find out. - -Printing a character on the screen was one of the easiest tasks (at first). @IO#putc@ does the job pretty well: it prints a character out. -What about moving left? Easy: print a non-descructive backspace (\b) and hope it is really not destructive. I did some tests and it seems to do as it's told and move the cursor back by one position. - -Moving right was a little trickier: the easiest thing I found was to re-print the character under the cursor, which will then move the cursor forward (as naive as it may seem, it does the job!). If there's nothing under the cursor, then we must be at the end of the line and it shouldn't move anywhere, so there we go. - -What if I move left a bit and then start typing normal characters? Well, everything is rewritten of course: this will be our "character replace mode". Unfortunately users don't like this behavior that much, so what I did was this: - -# Copy all characters from the one at the left of the cursor till the end of the line -# Print the character to be inserted -# Re-print the previously-copied characters -# Move the cursor back at the right place - -Again, a primitive solution which works seamlessly on all platforms, and yes, it's fast enough that you don't notice the difference. - -As you may have guessed, this of course means that I always had to keep track of: - -* The cursor position within the line -* The text currently printed to the screen - -Backspace and delete were implemented in a similar way, you can figure it out yourself or look at the source code: I won't bore you any further! - -h3. History management - -The next step was to implement a history for both the characters inputted by the user (to allow undoing and redoing operations) and for the whole lines. This was just an ordinary programming exercise: a simple buffer with some extra controls here and there, nothing too scary. - -So every "modification" to the current line being typed is saved in a line history buffer and all the lines entered are saved in another history buffer. All is left is to allow users to navigate through these buffers back and forth. -Nothing impossible: all I had to do was keeping track of the current element of the history being retrieved and then overwrite the current line with a new line stored in the buffer? How's this line overwriting done? Same old: - -# Move the cursor to the beginnig of the line -# Print X spaces, where X is the line length, so that the characters are no longer displayed in the console -# Move the cursor back to the beginning of the line -# Print the new line. - -Easy and naive, as usual. But again, it works well enough. - -h3. Word completion - -The other challange was word completion. The current implementation can be summarized as follows: - -* If TAB (or another character, if you wish) is pressed, call a user-defined @completion_proc@ method which returns an array and show the first element of the array (in this case I actually used a cyclic RawLine::HistoryBuffer, not an array) -* If the user presses TAB again, show another match, and so _ad infinitum_ if the user keeps pressing TAB. -* If the user presses another key, accept the default completion and move on. - -Obviously this means that: -* RawLine has to keep track of the current "word". A word is everything separated by a user defined @word_separator@, which can obviously modified at runtime, with care. -* Regarding the @completion_proc@, typically you may want to return only the elements matching the word which is currently being written, so that's given as default parameter for your proc. Exactly like with ReadLine, the only difference is that you can access other things like _the whole line_ and _the whole history_ in real time, which can be really handy at times! - -Here's a simple example: - -<% highlight :ruby do %> -editor.completion_proc = lambda do |word| - if word - ['select', 'update', 'delete', 'debug', 'destroy'].find_all { |e| e.match(/^#{Regexp.escape(word)}/) } - end -end -<% end %> - -h3. Custom key bindings - -All these pretty things are obviously bound to some keystrokes. If the key corresponds to only one code, everything is fine, but because special keys typically aren't so it was necessary to implement a mechanism to track an escape key (e.g. 0xE0 and 0 on Windows and \e on Linux) and listen to further characters, in case a known sequence is found. Anyhow, the final result of the method used for character binding is the following: - -@bind(key, &block)@ - -Where key can be: - -* A @Fixnum@ corresponding to a single character code -* An @Array@ of one or more character codes -* A @String@ corresponding to an escape sequence -* A @Symbol@ corresponding to a known escape sequence or key -* A @Hash@ to define a new key or escape sequences - -So, in the end you can do things like this: - -<% highlight :ruby do %> -editor.bind(:left_arrow) { editor.move_left } -editor.bind("\etest") { editor.overwrite_line("Test!!") } -editor.bind(?\C-z) { editor.undo } -editor.bind([24]) { exit } -<% end %> - -Which, for Rubyists, it's far sexier and more flexible than editing an .inputrc file. - -h3. How do I use it, anyway? - -A code example is better than a thousand words, right? So here you are: - -<% highlight :ruby do %> -#!/usr/local/bin/ruby -w - -require 'rubygems' -require 'rawline' - -puts "*** Inline Editor Test Shell ***" -puts " * Press CTRL+X to exit" -puts " * Press CTRL+C to clear command history" -puts " * Press CTRL+D for line-related information" -puts " * Press CTRL+E to view command history" - -editor = RawLine::Editor.new - -editor.bind(:ctrl_c) { editor.clear_history } -editor.bind(:ctrl_d) { editor.debug_line } -editor.bind(:ctrl_e) { editor.show_history } -editor.bind(:ctrl_x) { puts; puts "Exiting..."; exit } - -editor.completion_proc = lambda do |word| - if word - ['select', 'update', 'delete', 'debug', 'destroy'].find_all { |e| e.match(/^#{Regexp.escape(word)}/) } - end -end - -loop do - puts "You typed: [#{editor.read("=> ").chomp!}]" -end -<% end %> - -This example can be found in examples/rawline_shell.rb within the RawLine source code or gem package. - - -h2. Current status and availability - -I currently "released":http://rubyforge.org/forum/forum.php?forum_id=22543 RawLine 0.1.0 on "SourceForge":http://rubyforge.org/projects/rawline, and it can be installed via: - -@gem install -r rawline@ - -The RDoc documentation is available "here":http://rawline.rubyforge.org/. - -Feel free to try it out. First of all try the @rawline_shell.rb@ example, and see if it works on your machine. If it doesn't than maybe you try re-binding some keys (use @key_tester.rb@ to "reverse-engineer" your terminal's input escape sequences), and let me know! - -Status information and limitations: - -* It has been tested on Windows (XP, using the usual command prompt) and on Linux (ZenWalk, using XFCE Terminal). -* It can handle lines no longer than the maximum terminal width - 2. This is to ensure that the cursor never "falls down" to the next line. -* On Windows, the cursor doesn't blink immedialy when moving left, but it moves, don't worry. -* On Linux, you should really consider installing the "Termios":http://raa.ruby-lang.org/project/ruby-termios/ library for a faster experience (otherwise @get_character@ won't parse characters correctly if you press and hold a key, and that, trust me, is a real mess!). -* RawLine is very far from being a complete replacement for the ReadLine library, and it is currently in alpha stage. -* Release 0.1.0 has been created after 2 weeks of sporadic coding during lunch breaks and week-ends. - +One of the many things I like about Ruby is its cross-platform nature: as a general rule, Ruby code runs on everything which supports Ruby, regardless of its architecture and platform (yes, there are quite a few exceptions, but let's accept this generalization for now). + +More specifically, I liked the fact that I could use the "GNU Readline library":http://tiswww.case.edu/php/chet/readline/rltop.html with Ruby seamlessly on both Windows and Linux. +Readline offers quite a lot of features which are useful for those people like me who enjoy creating command-line scripts, in a nutshell, it provides: + +* File/Word completion +* History support +* Custom key bindings which can be modified via .inputrc +* Emacs and Vi edit modes + +Basically it makes your command-line interface fast and powerful, and that's not an overstatement. Ruby's own IRB can be enhanced by enabling readline and completion, and it works great -- at least on <notextile>*nix</notextile> systems. + +For some weird reason, some people had problems with Readline on Windows: in particular, things get nasty when you start editing long lines. Text gets garbled, the cursor goes up one or two lines and doesn't come back, and other similar leprechaun's tricks, which are not that funny after a while. + +Apparently there's no alternative to Readline in the Ruby world. If you wan't tab completion that's it, you're stuck. Would it be difficult to implement _some_ of Readline functionality natively in Ruby? Maybe, but the problem is that for some reason the Ruby Standard Library doesn't have low level methods to operate on keystrokes... + +...but luckily, the "HighLine":http://highline.rubyforge.org/ gem does! James Edward Gray II keeps pointing out here and here that HighLine's own @get_character@ method does just that: it returns the corresponding character code(s) right when a key is pressed, unlike @IO#gets()@ which waits for the user to press ENTER. + +Believe it or not, that tiny method can do wonders...h2. Reverse-engineering escape codes + +So here's a little script which uses @get_character()@ in an endless loop, diligently printing the character codes corresponding to a keystroke: + +<% highlight :ruby do %> +#!/usr/local/bin/ruby -w + +require 'rubygems' +require 'highline/system_extensions' + +include HighLine::SystemExtensions + +puts "Press a key to view the corresponding ASCII code(s) (or CTRL-X to exit)." + +loop do + + print "=> " + char = get_character + case char + when ?\C-x: print "Exiting..."; exit; + else puts "#{char.chr} [#{char}] (hex: #{char.to_s(16)})"; + end + +end +<% end %> + +A pretty harmless little thing. Try to run it and press some keys, and see what you get: + +<div style="font-family: Monospace"> +Press a key to view the corresponding ASCII code(s) (or CTRL-X to exit). + +=> a [96] (hex: 61) + +=> 1 [49] (hex: 31) + +=> Q [81] (hex: 51) + +=> &alpha; [224] (hex: e0) + +=> K [75] (hex: 4b) + +</div> + +Hang on, what are the last two codes? _A left arrow key on Windows_, apparently. + +*Welcome to the wonderful world of input escape sequences!* + +To cut a long story short, both Windows and *nix system "terminals" translate special keystrokes into sequences of two or more codes. This applies to things like DEL, INSERT, arrows, etc. etc. +For some ideas, check out: + +* "Windows Scancodes":http://www.microsoft.com/whdc/device/input/Scancode.mspx (Thanks "Huff":http://64.223.189.234/node/92) +* "VT220 Terminal Input Sequences":http://www.connectrf.com/Documents/vt220.html (Thanks "James":http://www.grayproductions.net/) + +Let's now assume that we're smart and we can write a program which can parse keystroke properly, including handling different input escape sequences according to the OS, what can it be used for? +Well: + +* For normal characters, just print them back to the screen (@get_character@ doesn't print anything, it "steals" the keystroke) +* For special characters, do something nice! + +We could setup TAB to auto-complete the current word according to an array of matches, or bind the up arrow to load the last line typed in by the user, for example, that's basically something Readline does, right? + +h2. RawLine: how it works and what it does + +I created a small project on RubyForge called "RawLine":http://rubyforge.org/projects/rawline/ (not to be confused with RubyInline, a completely different thing altogether, sorry about that) to play around with the possibilities offered by the @get_character@ method. The library is just a preview of things which can be done, but it's already usable, provided that you're brave enough to try it out, that is. + +The basic idea behind RawLine is to be able to parse keystrokes properly on different platforms and re-bind them to a set of predefined, cross-platform actions or a user-defined code block. + +h3. Basic line-editing operations + +The first challenge was to re-invent the wheel, i.e. re-bind keystrokes to their typical actions: a left arrow moves the cursor left, a backspace deletes the character at the left of the cursor and so on. Yes, because @get_characters@ gives you the right character codes at the price of _cancelling their normal effects_, which is a great thing, as you'll soon find out. + +Printing a character on the screen was one of the easiest tasks (at first). @IO#putc@ does the job pretty well: it prints a character out. +What about moving left? Easy: print a non-descructive backspace (\b) and hope it is really not destructive. I did some tests and it seems to do as it's told and move the cursor back by one position. + +Moving right was a little trickier: the easiest thing I found was to re-print the character under the cursor, which will then move the cursor forward (as naive as it may seem, it does the job!). If there's nothing under the cursor, then we must be at the end of the line and it shouldn't move anywhere, so there we go. + +What if I move left a bit and then start typing normal characters? Well, everything is rewritten of course: this will be our "character replace mode". Unfortunately users don't like this behavior that much, so what I did was this: + +# Copy all characters from the one at the left of the cursor till the end of the line +# Print the character to be inserted +# Re-print the previously-copied characters +# Move the cursor back at the right place + +Again, a primitive solution which works seamlessly on all platforms, and yes, it's fast enough that you don't notice the difference. + +As you may have guessed, this of course means that I always had to keep track of: + +* The cursor position within the line +* The text currently printed to the screen + +Backspace and delete were implemented in a similar way, you can figure it out yourself or look at the source code: I won't bore you any further! + +h3. History management + +The next step was to implement a history for both the characters inputted by the user (to allow undoing and redoing operations) and for the whole lines. This was just an ordinary programming exercise: a simple buffer with some extra controls here and there, nothing too scary. + +So every "modification" to the current line being typed is saved in a line history buffer and all the lines entered are saved in another history buffer. All is left is to allow users to navigate through these buffers back and forth. +Nothing impossible: all I had to do was keeping track of the current element of the history being retrieved and then overwrite the current line with a new line stored in the buffer? How's this line overwriting done? Same old: + +# Move the cursor to the beginnig of the line +# Print X spaces, where X is the line length, so that the characters are no longer displayed in the console +# Move the cursor back to the beginning of the line +# Print the new line. + +Easy and naive, as usual. But again, it works well enough. + +h3. Word completion + +The other challange was word completion. The current implementation can be summarized as follows: + +* If TAB (or another character, if you wish) is pressed, call a user-defined @completion_proc@ method which returns an array and show the first element of the array (in this case I actually used a cyclic RawLine::HistoryBuffer, not an array) +* If the user presses TAB again, show another match, and so _ad infinitum_ if the user keeps pressing TAB. +* If the user presses another key, accept the default completion and move on. + +Obviously this means that: +* RawLine has to keep track of the current "word". A word is everything separated by a user defined @word_separator@, which can obviously modified at runtime, with care. +* Regarding the @completion_proc@, typically you may want to return only the elements matching the word which is currently being written, so that's given as default parameter for your proc. Exactly like with ReadLine, the only difference is that you can access other things like _the whole line_ and _the whole history_ in real time, which can be really handy at times! + +Here's a simple example: + +<% highlight :ruby do %> +editor.completion_proc = lambda do |word| + if word + ['select', 'update', 'delete', 'debug', 'destroy'].find_all { |e| e.match(/^#{Regexp.escape(word)}/) } + end +end +<% end %> + +h3. Custom key bindings + +All these pretty things are obviously bound to some keystrokes. If the key corresponds to only one code, everything is fine, but because special keys typically aren't so it was necessary to implement a mechanism to track an escape key (e.g. 0xE0 and 0 on Windows and \e on Linux) and listen to further characters, in case a known sequence is found. Anyhow, the final result of the method used for character binding is the following: + +@bind(key, &block)@ + +Where key can be: + +* A @Fixnum@ corresponding to a single character code +* An @Array@ of one or more character codes +* A @String@ corresponding to an escape sequence +* A @Symbol@ corresponding to a known escape sequence or key +* A @Hash@ to define a new key or escape sequences + +So, in the end you can do things like this: + +<% highlight :ruby do %> +editor.bind(:left_arrow) { editor.move_left } +editor.bind("\etest") { editor.overwrite_line("Test!!") } +editor.bind(?\C-z) { editor.undo } +editor.bind([24]) { exit } +<% end %> + +Which, for Rubyists, it's far sexier and more flexible than editing an .inputrc file. + +h3. How do I use it, anyway? + +A code example is better than a thousand words, right? So here you are: + +<% highlight :ruby do %> +#!/usr/local/bin/ruby -w + +require 'rubygems' +require 'rawline' + +puts "*** Inline Editor Test Shell ***" +puts " * Press CTRL+X to exit" +puts " * Press CTRL+C to clear command history" +puts " * Press CTRL+D for line-related information" +puts " * Press CTRL+E to view command history" + +editor = RawLine::Editor.new + +editor.bind(:ctrl_c) { editor.clear_history } +editor.bind(:ctrl_d) { editor.debug_line } +editor.bind(:ctrl_e) { editor.show_history } +editor.bind(:ctrl_x) { puts; puts "Exiting..."; exit } + +editor.completion_proc = lambda do |word| + if word + ['select', 'update', 'delete', 'debug', 'destroy'].find_all { |e| e.match(/^#{Regexp.escape(word)}/) } + end +end + +loop do + puts "You typed: [#{editor.read("=> ").chomp!}]" +end +<% end %> + +This example can be found in examples/rawline_shell.rb within the RawLine source code or gem package. + + +h2. Current status and availability + +I currently "released":http://rubyforge.org/forum/forum.php?forum_id=22543 RawLine 0.1.0 on "SourceForge":http://rubyforge.org/projects/rawline, and it can be installed via: + +@gem install -r rawline@ + +The RDoc documentation is available "here":http://rawline.rubyforge.org/. + +Feel free to try it out. First of all try the @rawline_shell.rb@ example, and see if it works on your machine. If it doesn't than maybe you try re-binding some keys (use @key_tester.rb@ to "reverse-engineer" your terminal's input escape sequences), and let me know! + +Status information and limitations: + +* It has been tested on Windows (XP, using the usual command prompt) and on Linux (ZenWalk, using XFCE Terminal). +* It can handle lines no longer than the maximum terminal width - 2. This is to ensure that the cursor never "falls down" to the next line. +* On Windows, the cursor doesn't blink immedialy when moving left, but it moves, don't worry. +* On Linux, you should really consider installing the "Termios":http://raa.ruby-lang.org/project/ruby-termios/ library for a faster experience (otherwise @get_character@ won't parse characters correctly if you press and hold a key, and that, trust me, is a real mess!). +* RawLine is very far from being a complete replacement for the ReadLine library, and it is currently in alpha stage. +* Release 0.1.0 has been created after 2 weeks of sporadic coding during lunch breaks and week-ends. + For any ideas on where to go from here, comments and feedback, just reply below or send an email to my usual email address.
M content/articles/inline-name-change.textilecontent/articles/inline-name-change.textile

@@ -9,8 +9,8 @@ :author: Thom Parkin

:url: "" :id: 224 :body: | - InLine is really a very descriptive name. - How about RubyRedLine? + InLine is really a very descriptive name. + How about RubyRedLine? - :date: 2008-03-27 18:15:40 +01:00 :author: brentf@gto.net

@@ -31,18 +31,18 @@ - rawline

type: article toc: true ----- -I've been kindly asked by the lead developer of "RubyInLine":http://www.zenspider.com/ZSS/Products/RubyInline/ to change the name of my "InLine":http://rubyforge.org/projects/inline/ project, due to potential confusion and conflicts. - -This makes sense, and I'm ready to change the name of my project, although I'm not that good at choosing original and _smart_ names, so well, any suggestion is more than welcome! - -I was thinking of something like: - -* RawLine -* EditLine -* RawInput -* RubyInput -* RubyLine - -I personally think that *RawLine* is probably the best option, but please, if have any better idea just speak up! - +I've been kindly asked by the lead developer of "RubyInLine":http://www.zenspider.com/ZSS/Products/RubyInline/ to change the name of my "InLine":http://rubyforge.org/projects/inline/ project, due to potential confusion and conflicts. + +This makes sense, and I'm ready to change the name of my project, although I'm not that good at choosing original and _smart_ names, so well, any suggestion is more than welcome! + +I was thinking of something like: + +* RawLine +* EditLine +* RawInput +* RubyInput +* RubyLine + +I personally think that *RawLine* is probably the best option, but please, if have any better idea just speak up! + P.S.: "RedLine" is taken, unfortunately, otherwise it would have been my first choice since the beginning.
M content/articles/introducing-redbook.textilecontent/articles/introducing-redbook.textile

@@ -15,36 +15,36 @@ - redbook

type: article toc: true ----- -I'm somehow pleased to announce the opening of a new section on this site. Nothing too big actually, it's just a "page":/code/ with a few (one for now) brief descriptions of open source programs and scripts I made and I'd like to share with my readers. - -Don't expect fancy stuff: (luckily) I don't code for a living, I code for pleasure and I code small things. Lately I've been trying to write a small Ruby program able to log my daily activities and also display them in a pleasant enough way, so I started using my lunch breaks at work more constructively and I came up with "RedBook":/code/ an interactive command-line program written in Ruby. - -Main features: - -* Log timestamped and _tagged_ messages to a single YAML file -* Load and display messages containing a certain string, or certain tags or within a time frame. -* Calculate the time elapsed between two or more tasks. -* Export loaded messages to YAML, TXT or CSV format. - -All done via command line via simple commands: - -*&#58;log* This is a test message *&#58;tags* test - -*&#58;load* *&#58;last* 30 *&#58;from* last week - -*&#58;timecalc* 2 5 - -*&#58;save* test.txt - -Thanks to the wonderful "Chronic":http://chronic.rubyforge.org/ library, you can specify your time frames using natural language expressions like "8 in the morning", "this tuesday", "last month" and so on... - -Here's a screenshot showing RedBook in action: - -!/files/redbook.png! - -RedBook is of course free, open source software licensed under the terms of the BSD license. It can be installed on any machine able to run Ruby and there's also an EXE version for the lazy windows folks who don't want to install Ruby, packed with "RubyScript2Exe":http://www.erikveenstra.nl/rubyscript2exe/index.html. A more in-depth article explaining how RedBook works -will hopefully be completed soon- is available ":here":http://www.h3rald.com/articles/redbook - - - - - +I'm somehow pleased to announce the opening of a new section on this site. Nothing too big actually, it's just a "page":/code/ with a few (one for now) brief descriptions of open source programs and scripts I made and I'd like to share with my readers. + +Don't expect fancy stuff: (luckily) I don't code for a living, I code for pleasure and I code small things. Lately I've been trying to write a small Ruby program able to log my daily activities and also display them in a pleasant enough way, so I started using my lunch breaks at work more constructively and I came up with "RedBook":/code/ an interactive command-line program written in Ruby. + +Main features: + +* Log timestamped and _tagged_ messages to a single YAML file +* Load and display messages containing a certain string, or certain tags or within a time frame. +* Calculate the time elapsed between two or more tasks. +* Export loaded messages to YAML, TXT or CSV format. + +All done via command line via simple commands: + +*&#58;log* This is a test message *&#58;tags* test + +*&#58;load* *&#58;last* 30 *&#58;from* last week + +*&#58;timecalc* 2 5 + +*&#58;save* test.txt + +Thanks to the wonderful "Chronic":http://chronic.rubyforge.org/ library, you can specify your time frames using natural language expressions like "8 in the morning", "this tuesday", "last month" and so on... + +Here's a screenshot showing RedBook in action: + +!/files/redbook.png! + +RedBook is of course free, open source software licensed under the terms of the BSD license. It can be installed on any machine able to run Ruby and there's also an EXE version for the lazy windows folks who don't want to install Ruby, packed with "RubyScript2Exe":http://www.erikveenstra.nl/rubyscript2exe/index.html. A more in-depth article explaining how RedBook works -will hopefully be completed soon- is available ":here":http://www.h3rald.com/articles/redbook + + + + +
M content/articles/log-feb-2009.textilecontent/articles/log-feb-2009.textile

@@ -21,96 +21,96 @@ - ruby

type: article toc: true ----- -This has been a rather busy month, hence the lack of general Internet activity. I really wanted to post some more articles to my site, but for one reason or another I had to procrastinate more and more, and here we are at the end of the month again. - -h3. Recession time! - -I've always considered the current economic downturn as something happening _somewhere else_: USA, England, Ireland... but not in Italy, really: our country never boomed, we don't go mental with loans and mortgages (or at least we didn't use to), so there's no real reason for a full-on recession period. - -It turns out I was wrong. Other than the fact that our industries are more or less non-existant or already in debt, I didn't consider that: - -* Italians tend to panic a lot. -* We have an awful lot of foreign business going on, a lot of multi-national companies opened up through the years lured by cheap workers and acceptable craftmanship. -* Our government already -wastes- invests a lot of money regularly, every year, to fuel a colossal, "nepotistic":http://dictionary.reference.com/browse/nepotistic, pointless bureaucratic machine they insist on calling "State". - -Result: the recession is starting to hit properly over here too. People are saving money, they don't go out buying pointless crap, they are scared to ask for a raise at work... the usual. I work for a foreign company which has been, as were most, forced to save some money to compensate some not-so-good First Quarter's revenues. This means less unnecessary expenses, less training, less travelling and less outsourcing, which didn't help improving the daily work experiece. Personally, I'm not that affected by all this, nevertheless it made me bless the day my fiancée persuaded me to stop uni after my Bachelor's Degree to get a very rewarding, not-so-stressful job. - -h3. No 'Net @ Home - -The most annoying thing of the month was (and still is) the lack of Internet access at our house. Let's do a quick recap: - -# After spending one year with Telecom Italia, Roxanne and I decided to change provider to save a bit of money and get more speed. -# On _December 24th_ we requested a contract with "Wind":http://www.wind.it, after they assured that we'd have the Internet back on in _just a few days, tops_. -# On _January 5th_ Telecom disconnected us. -# On _January 12th_ Wind sent me a mail telling me that there was going to be a _15-day delay_ in the activation &mdash; well, at least they told us so! We waited. -# On _February 2nd_ I call Wind Customer Care hassling them to get a move on &mdash; just some minor delays, _it will only take a few days, tops_. We waited. - -Our new Internet line has been _in the process of being activated_ ever since January 5th. Why? Because being a customer sucks, in Italy, and you can't do much about it. -Let me quote one of the 13 phone calls I made: - -* ... 5 minutes on hold, stupid music in the background ... -* [Operator]: Good Evening Sir, I'm <random name>, how can I help you? -* [Me]: Hello, I'm enquiring about the status of my Internet connection: I've been disconnected since the 5th of January... -* [Operator]: Phone Number please? -* [Me]: <notextile>*** ******</notextile> -* ... 2 minutes on old ... -* [Operator]: Name plase? -* [Me]: Fabio Cevasco -* [Operator]: Let me check... -* ... 6 minutes on hold, stupid music in the background ... -* [Me]: Any luck? -* [Operator]: One moment please... -* ... 2 minutes on hold, stupid music in the background ... -* [Operator]: Sir, it says here that you are _in the process of being activated_ -* [Me]: (you stupid idiot, I can check that on the Net in less than a minute) Yes, I know what, but why, exactly? It has been over a month... -* [Operator]: Let me check... -* ... 3 minutes on hold, stupid music in the background ... -* [Operator]: There are some technical difficulties. -* [Me]: What kind of technical difficulties? -* [Operator]: I... I don't think you can understand Sir, it's technical... -* [Me]: (!!!) I have a degree in IT Engineering, so yes, I think I can understand enough. -* [Operator]: ...well, there's nothing I can do... it says we're in the process of connecting you, it should be just... -* [Me]: ...a matter of a couple of days, yes, I know: it has been over a month though! -* [Operator]: Sir, really, I can't really do much about it, you'll just have to wait -* [Me]: Can you let me speak with the Technical Department? -* [Operator]: No, sir, I can't: you see, your ADSL line is not yet activated, they can't do anything about it. -* [Me]: Excuse me, but I'd like to know what the problem is, and how long it will take to activate the line. -* [Operator]: Sorry sir, we don't have this information, and we can't commit to a specific date. -* [Me]: (!!!) May I speak to someone who knows this? May I speak to your superior? -* [Operator] No, you can't speak to my superior. You'll just have to wait, I'm sorry. -* [Me]: Well, it has been over a month, and I don't know if you realize that you were supposed to connect me in just a few days and... -* [Operator]: Thank you for calling sir, have a good day. - -That barely conveys the frustration I felt and I'm still feeling now. I can't even sue them: I could get 100 Euro at most after spending at least a couple of thousands in lawyer. So much for the land of sunshine huh? - -h3. Programming in Ruby, again - -Some of you may be pleased to know I'm back coding in Ruby after slacking for months. It's just the time of the year, I guess. -I'm also evangelizing the language quite a bit at work: after I wrote a few scripts on demand, I slowly lured one of my colleagues to Vim, the Texile markup and then finally the Ruby language. He's going through the "Humble Little Ruby Book":http://www.h3rald.com/articles/hlrb-review and he's loving it, so far. He'll hopefully be fully assimilated in a few weeks at most, and after that there will be no going back! - -This inspired me to start a full rewrite of "RedBook":http://www.h3rald.com/tags/redbook/, my little Ruby daily logger. It will feature a SQLite backend and Merb's Datamapper to take care of the dirty work. -Unfortunately, even if the new sources are already available on "GitHub":http://github.com/h3rald/redbook/tree/master, it will take me approximately a few more weeks to complete all the plugins and more to finish the RDoc documentation and &mdash; hopefully &mdash; a fully-fledged user manual. It's *the* pet project, after all... - -On the other hand, it will take me considerably less time (a few days?) to release the next version of my "RawLine":http://www.h3rald.com/tags/rawline library, featuring: - -* Ruby 1.9 support -* A handy little function for filename completion -* Readline emulation, i.e. just @include Rawline@ and use it as if it was GNU Readline - -Of course this doesn't mean RawLine is a complete, 100% Ruby port of the GNU Readline library, but it is definitely more Ruby-ish, more cross platform (try using Readline with Ruby on Windows...), and usable enough for most of the normal things, like: - -* tab completion -* line editing (but no vi or emacs mode yet, sorry) -* history -* quick and easy key bindings - -Once this comes out, I'll be implementing features on-demand, as GNU Readline is huge and offers way too many things anyone would ever need. Patches and contributions are of course more than welcome, though. - -For all my open source Ruby projects, after "pondering the alternatives":http://www.h3rald.com/articles/where-does-your-ruby-code-live, I decided to go with the following setup: - -* My own site for the home pages of the projects -* RubyForge for gem support and for RDoc documentation -* GitHub as source code repository -* LightHouse for issue tracking - -I hope it works out... +This has been a rather busy month, hence the lack of general Internet activity. I really wanted to post some more articles to my site, but for one reason or another I had to procrastinate more and more, and here we are at the end of the month again. + +h3. Recession time! + +I've always considered the current economic downturn as something happening _somewhere else_: USA, England, Ireland... but not in Italy, really: our country never boomed, we don't go mental with loans and mortgages (or at least we didn't use to), so there's no real reason for a full-on recession period. + +It turns out I was wrong. Other than the fact that our industries are more or less non-existant or already in debt, I didn't consider that: + +* Italians tend to panic a lot. +* We have an awful lot of foreign business going on, a lot of multi-national companies opened up through the years lured by cheap workers and acceptable craftmanship. +* Our government already -wastes- invests a lot of money regularly, every year, to fuel a colossal, "nepotistic":http://dictionary.reference.com/browse/nepotistic, pointless bureaucratic machine they insist on calling "State". + +Result: the recession is starting to hit properly over here too. People are saving money, they don't go out buying pointless crap, they are scared to ask for a raise at work... the usual. I work for a foreign company which has been, as were most, forced to save some money to compensate some not-so-good First Quarter's revenues. This means less unnecessary expenses, less training, less travelling and less outsourcing, which didn't help improving the daily work experiece. Personally, I'm not that affected by all this, nevertheless it made me bless the day my fiancée persuaded me to stop uni after my Bachelor's Degree to get a very rewarding, not-so-stressful job. + +h3. No 'Net @ Home + +The most annoying thing of the month was (and still is) the lack of Internet access at our house. Let's do a quick recap: + +# After spending one year with Telecom Italia, Roxanne and I decided to change provider to save a bit of money and get more speed. +# On _December 24th_ we requested a contract with "Wind":http://www.wind.it, after they assured that we'd have the Internet back on in _just a few days, tops_. +# On _January 5th_ Telecom disconnected us. +# On _January 12th_ Wind sent me a mail telling me that there was going to be a _15-day delay_ in the activation &mdash; well, at least they told us so! We waited. +# On _February 2nd_ I call Wind Customer Care hassling them to get a move on &mdash; just some minor delays, _it will only take a few days, tops_. We waited. + +Our new Internet line has been _in the process of being activated_ ever since January 5th. Why? Because being a customer sucks, in Italy, and you can't do much about it. +Let me quote one of the 13 phone calls I made: + +* ... 5 minutes on hold, stupid music in the background ... +* [Operator]: Good Evening Sir, I'm <random name>, how can I help you? +* [Me]: Hello, I'm enquiring about the status of my Internet connection: I've been disconnected since the 5th of January... +* [Operator]: Phone Number please? +* [Me]: <notextile>*** ******</notextile> +* ... 2 minutes on old ... +* [Operator]: Name plase? +* [Me]: Fabio Cevasco +* [Operator]: Let me check... +* ... 6 minutes on hold, stupid music in the background ... +* [Me]: Any luck? +* [Operator]: One moment please... +* ... 2 minutes on hold, stupid music in the background ... +* [Operator]: Sir, it says here that you are _in the process of being activated_ +* [Me]: (you stupid idiot, I can check that on the Net in less than a minute) Yes, I know what, but why, exactly? It has been over a month... +* [Operator]: Let me check... +* ... 3 minutes on hold, stupid music in the background ... +* [Operator]: There are some technical difficulties. +* [Me]: What kind of technical difficulties? +* [Operator]: I... I don't think you can understand Sir, it's technical... +* [Me]: (!!!) I have a degree in IT Engineering, so yes, I think I can understand enough. +* [Operator]: ...well, there's nothing I can do... it says we're in the process of connecting you, it should be just... +* [Me]: ...a matter of a couple of days, yes, I know: it has been over a month though! +* [Operator]: Sir, really, I can't really do much about it, you'll just have to wait +* [Me]: Can you let me speak with the Technical Department? +* [Operator]: No, sir, I can't: you see, your ADSL line is not yet activated, they can't do anything about it. +* [Me]: Excuse me, but I'd like to know what the problem is, and how long it will take to activate the line. +* [Operator]: Sorry sir, we don't have this information, and we can't commit to a specific date. +* [Me]: (!!!) May I speak to someone who knows this? May I speak to your superior? +* [Operator] No, you can't speak to my superior. You'll just have to wait, I'm sorry. +* [Me]: Well, it has been over a month, and I don't know if you realize that you were supposed to connect me in just a few days and... +* [Operator]: Thank you for calling sir, have a good day. + +That barely conveys the frustration I felt and I'm still feeling now. I can't even sue them: I could get 100 Euro at most after spending at least a couple of thousands in lawyer. So much for the land of sunshine huh? + +h3. Programming in Ruby, again + +Some of you may be pleased to know I'm back coding in Ruby after slacking for months. It's just the time of the year, I guess. +I'm also evangelizing the language quite a bit at work: after I wrote a few scripts on demand, I slowly lured one of my colleagues to Vim, the Texile markup and then finally the Ruby language. He's going through the "Humble Little Ruby Book":http://www.h3rald.com/articles/hlrb-review and he's loving it, so far. He'll hopefully be fully assimilated in a few weeks at most, and after that there will be no going back! + +This inspired me to start a full rewrite of "RedBook":http://www.h3rald.com/tags/redbook/, my little Ruby daily logger. It will feature a SQLite backend and Merb's Datamapper to take care of the dirty work. +Unfortunately, even if the new sources are already available on "GitHub":http://github.com/h3rald/redbook/tree/master, it will take me approximately a few more weeks to complete all the plugins and more to finish the RDoc documentation and &mdash; hopefully &mdash; a fully-fledged user manual. It's *the* pet project, after all... + +On the other hand, it will take me considerably less time (a few days?) to release the next version of my "RawLine":http://www.h3rald.com/tags/rawline library, featuring: + +* Ruby 1.9 support +* A handy little function for filename completion +* Readline emulation, i.e. just @include Rawline@ and use it as if it was GNU Readline + +Of course this doesn't mean RawLine is a complete, 100% Ruby port of the GNU Readline library, but it is definitely more Ruby-ish, more cross platform (try using Readline with Ruby on Windows...), and usable enough for most of the normal things, like: + +* tab completion +* line editing (but no vi or emacs mode yet, sorry) +* history +* quick and easy key bindings + +Once this comes out, I'll be implementing features on-demand, as GNU Readline is huge and offers way too many things anyone would ever need. Patches and contributions are of course more than welcome, though. + +For all my open source Ruby projects, after "pondering the alternatives":http://www.h3rald.com/articles/where-does-your-ruby-code-live, I decided to go with the following setup: + +* My own site for the home pages of the projects +* RubyForge for gem support and for RDoc documentation +* GitHub as source code repository +* LightHouse for issue tracking + +I hope it works out...
M content/articles/log-jan-2009.markdowncontent/articles/log-jan-2009.markdown

@@ -12,49 +12,49 @@ - wedding

type: article toc: true ----- -Those who read my blog regularly may have noticed how I normally refrain from posting articles concerning my own life. I used to have a more blog-like web site, but things changed: _"Who would want to read about my life, anyway?"_ &mdash; That's what I always thought. Hence, I focused on writing general-interest, computer-related articles about programming in Ruby, about some IT book which came out, or about the latest chapter in the Browser Wars. You'll find all this in the [archives](/archives/). - -On the other hand, I thought it may be useful for my own sake to keep a more personal log of what happens in my life, so here it is, the first of hopefully many _personal log_ post, covering January 2009. ### Being social - -Call it a New Year Resolution or simply an unexpected change, I joined [Facebook](http://www.facebook.com) on December 31st 2008, after years of adamant opposition against the popular social network. -What I didn't realized is the amount of people who use it regularly. This may sound naive to the Americans reading this blog, but as an Italian, I was really shocked to discover that about 80% of the people I know here in Italy, here in _Genoa_ use it. - -When I started using Twitter, I really couldn't find many people I knew in "real life": [Andrea Gandino](http://www.andreagandino.com) was the only one I vaguely remembered from uni, but none of the people I knew from elementary school was there, of course! -Why's that? For one because Twitter has always been more geared towards geeks, and also because Twitter is _not available in Italian_. -Believe it or not, this makes the difference. Immediately after I joined Facebook _my dad_ joined it too, and found people he knew _from school_. - -Enough with the sensationalism now, Facebook is old news and the more I write about it the more I sound out-of-the-loop. Anyhow, I quickly discovered how annoying Facebook apps can be and I immediately learn how useful the Ignore button is. Are there people actually using those apps on a daily basis? I can't believe it. -Facebook is good for contacting people, that's about it. That's all I can say after 1 month of moderate usage. - -The other funny aspect of this is the way people react to my status updates and everything I allegedly put on there. Let's clarify this. I do NOT provide _any_ content just for Facebook: - -* I update my status every time I post on twitter -* I post a link every time I save a bookmark on delicious -* I post lengthy notes every time I post to my blog - -That's the truth. I consider it normal, but I find it amusing when some colleague of mine comments to my status asking _But... What is Data Mapper?_. No one on Twitter would do that. Simply because the wide majority of people who follow me on Twitter are Rubyists. - -What about [Twitter](http://www.twitter.com) then? I'm using it more than before (that's part of the same New Year Resolution) _and_ I am actually following some complete strangers! It's nice, in a way. I never did it before because I couldn't keep up with the tweets coming up, but now I can. Here's how: - -* Following [these](http://dblume.livejournal.com/112262.html) instructions I quickly crafted a special feed which now sits permanently in my Google Reader and updates me with all the tweets from everyone I'm following. -* I started using [Tweet Replies](http://www.tweetreplies.com/) so that every [@h3rald](http://www.twitter.com/h3rald) reply goes straight to my mail. It works perfectly. - -### Wedding Planning - -Let's move on to something much more important and life-changing. **I am getting married** this July, in Ireland, after 5 (five!) years of engagement with my beloved Roxanne. We've also been living together for over a year, and it has been awesome (so far), so we both decided it's the right time to tie the knot and get on with it! - -The wedding is just six months away and we'd better get something done, and quick. We already booked the church and the reception, so far, so the main things are sorted. We also attended our pre-nuptial course with our local priest, another 8 couples plus three quite obnoxious "expert" couples for 7 (seven!) weeks, every friday night (those people are nuts). If we survived this, we can survive everything, I tell you. - -Because we're getting married in Ireland, we have to take care of some extra things like taking my relatives abroad (it's definitely easier than bringing 70 _O'Mahoneys, Quinns, etc. etc._ here, that's for sure), organizing car rentals, et al. But it will be great, it will be fun, and I can't wait! - -### Writing and Programming - -On the programming side, I was actually thinking about learning [Haskell](http://www.haskell.org), once and for all. I have a deep admiration and respect for the language and what it can do, but I've always been somewhat overwhelmed by its functional purity, monads, and similar. After reading [Learn You a Haskell](http://learnyouahaskell.com/chapters) (an excellent read), I moved on to [Real World Haskell](http://book.realworldhaskell.org/read/), and I was understanding _everything_, amazingly. - -Then I decided to take a break and try coding a little bit in Ruby (I had to prepare a small script for work), and that was enough to motivate me to start working on [RedBook](http://www.h3rald.com/tags/redbook) again. I was determined to polish it up and put a shiny 1.0 badge on it, but I decided to stop and re-think the whole thing. I originally thought of it as a _simple_ daily logging program to record timestamped entries to a YAML file, but then added more and more features until I finally realized that _perhaps_I could have used SQLite as its backend. It turns out I was right: when I started coding RedBook about a year ago, I didn't know much about Ruby, andI didn't want to use a relational database because it seemed too unnecessary cumbersome for a beginner. It turns out I was totally wrong and [DataMapper](http://datamapper.org/) proved to be an excellent, simple and powerful choice. - -RedBook might be ready in a few months, when also _all its documentation_ is ready, too. As a technical writer, I really cannot afford to release any amateur pet project to the while without documentation, it would be a bad example, wouldn't it? -To make the whole thing more fun, I'll try (_try_ I said, I may change my mind) to write the RedBook Manual using [LaTeX](http://www.latex-project.org/). It shouldn't be too complicated as I'll need only 10% of its features, and hopefully the result will be pleasant enough to read. - -That's it for this month, I think. For those who think this is just a long note on my Facebook profile, check out [the real deal](http://www.h3rald.com/articles/log-jan-2009) on my [web site](http://www.h3rald.com) (did I say Facebook is _totally useless_ for web promotion?). - +Those who read my blog regularly may have noticed how I normally refrain from posting articles concerning my own life. I used to have a more blog-like web site, but things changed: _"Who would want to read about my life, anyway?"_ &mdash; That's what I always thought. Hence, I focused on writing general-interest, computer-related articles about programming in Ruby, about some IT book which came out, or about the latest chapter in the Browser Wars. You'll find all this in the [archives](/archives/). + +On the other hand, I thought it may be useful for my own sake to keep a more personal log of what happens in my life, so here it is, the first of hopefully many _personal log_ post, covering January 2009. ### Being social + +Call it a New Year Resolution or simply an unexpected change, I joined [Facebook](http://www.facebook.com) on December 31st 2008, after years of adamant opposition against the popular social network. +What I didn't realized is the amount of people who use it regularly. This may sound naive to the Americans reading this blog, but as an Italian, I was really shocked to discover that about 80% of the people I know here in Italy, here in _Genoa_ use it. + +When I started using Twitter, I really couldn't find many people I knew in "real life": [Andrea Gandino](http://www.andreagandino.com) was the only one I vaguely remembered from uni, but none of the people I knew from elementary school was there, of course! +Why's that? For one because Twitter has always been more geared towards geeks, and also because Twitter is _not available in Italian_. +Believe it or not, this makes the difference. Immediately after I joined Facebook _my dad_ joined it too, and found people he knew _from school_. + +Enough with the sensationalism now, Facebook is old news and the more I write about it the more I sound out-of-the-loop. Anyhow, I quickly discovered how annoying Facebook apps can be and I immediately learn how useful the Ignore button is. Are there people actually using those apps on a daily basis? I can't believe it. +Facebook is good for contacting people, that's about it. That's all I can say after 1 month of moderate usage. + +The other funny aspect of this is the way people react to my status updates and everything I allegedly put on there. Let's clarify this. I do NOT provide _any_ content just for Facebook: + +* I update my status every time I post on twitter +* I post a link every time I save a bookmark on delicious +* I post lengthy notes every time I post to my blog + +That's the truth. I consider it normal, but I find it amusing when some colleague of mine comments to my status asking _But... What is Data Mapper?_. No one on Twitter would do that. Simply because the wide majority of people who follow me on Twitter are Rubyists. + +What about [Twitter](http://www.twitter.com) then? I'm using it more than before (that's part of the same New Year Resolution) _and_ I am actually following some complete strangers! It's nice, in a way. I never did it before because I couldn't keep up with the tweets coming up, but now I can. Here's how: + +* Following [these](http://dblume.livejournal.com/112262.html) instructions I quickly crafted a special feed which now sits permanently in my Google Reader and updates me with all the tweets from everyone I'm following. +* I started using [Tweet Replies](http://www.tweetreplies.com/) so that every [@h3rald](http://www.twitter.com/h3rald) reply goes straight to my mail. It works perfectly. + +### Wedding Planning + +Let's move on to something much more important and life-changing. **I am getting married** this July, in Ireland, after 5 (five!) years of engagement with my beloved Roxanne. We've also been living together for over a year, and it has been awesome (so far), so we both decided it's the right time to tie the knot and get on with it! + +The wedding is just six months away and we'd better get something done, and quick. We already booked the church and the reception, so far, so the main things are sorted. We also attended our pre-nuptial course with our local priest, another 8 couples plus three quite obnoxious "expert" couples for 7 (seven!) weeks, every friday night (those people are nuts). If we survived this, we can survive everything, I tell you. + +Because we're getting married in Ireland, we have to take care of some extra things like taking my relatives abroad (it's definitely easier than bringing 70 _O'Mahoneys, Quinns, etc. etc._ here, that's for sure), organizing car rentals, et al. But it will be great, it will be fun, and I can't wait! + +### Writing and Programming + +On the programming side, I was actually thinking about learning [Haskell](http://www.haskell.org), once and for all. I have a deep admiration and respect for the language and what it can do, but I've always been somewhat overwhelmed by its functional purity, monads, and similar. After reading [Learn You a Haskell](http://learnyouahaskell.com/chapters) (an excellent read), I moved on to [Real World Haskell](http://book.realworldhaskell.org/read/), and I was understanding _everything_, amazingly. + +Then I decided to take a break and try coding a little bit in Ruby (I had to prepare a small script for work), and that was enough to motivate me to start working on [RedBook](http://www.h3rald.com/tags/redbook) again. I was determined to polish it up and put a shiny 1.0 badge on it, but I decided to stop and re-think the whole thing. I originally thought of it as a _simple_ daily logging program to record timestamped entries to a YAML file, but then added more and more features until I finally realized that _perhaps_I could have used SQLite as its backend. It turns out I was right: when I started coding RedBook about a year ago, I didn't know much about Ruby, andI didn't want to use a relational database because it seemed too unnecessary cumbersome for a beginner. It turns out I was totally wrong and [DataMapper](http://datamapper.org/) proved to be an excellent, simple and powerful choice. + +RedBook might be ready in a few months, when also _all its documentation_ is ready, too. As a technical writer, I really cannot afford to release any amateur pet project to the while without documentation, it would be a bad example, wouldn't it? +To make the whole thing more fun, I'll try (_try_ I said, I may change my mind) to write the RedBook Manual using [LaTeX](http://www.latex-project.org/). It shouldn't be too complicated as I'll need only 10% of its features, and hopefully the result will be pleasant enough to read. + +That's it for this month, I think. For those who think this is just a long note on my Facebook profile, check out [the real deal](http://www.h3rald.com/articles/log-jan-2009) on my [web site](http://www.h3rald.com) (did I say Facebook is _totally useless_ for web promotion?). +
M content/articles/log-mar-2009.textilecontent/articles/log-mar-2009.textile

@@ -19,34 +19,34 @@ - ruby

type: article toc: true ----- -Another month _without_ the Internet at home. This is getting really annoying, and I decided to change provider, *again*, hoping that I'll eventually get my broadband back, someday. Luckily I can still go online at work, but of course it's not the same thing: my time on Twitter and Facebook is now basically limited to weekends only, when Roxanne and I go down to Tuscany to stay with her parents. - -h3. Concatenative programming - -For some weird reason I became fond of the "Concatenative programming paradigm":http://en.wikipedia.org/wiki/Concatenative_programming_language. I started reading about "Joy":http://www.latrobe.edu.au/philosophy/phimvt/joy/j00rat.html and then started to work on a Ruby DSL able to do the similar things: "Concatenative":/concatenative/. Another pet project &mdash; as if I didn't have enough things to do already! - -Some people seemed pleased about it, especially on "Reddit":http://www.reddit.com/r/ruby/comments/887kn/concatenative_programming_in_ruby and "dzone":http://dzone.com/links/concatenative_programming_in_ruby.html. The downside of it is that it's still fairly slow if compared to Ruby code (which is not exactly fast, either!), so if I had some spare time I should really try to implement it as a C extension, maybe. - -h3. Learning new programming languages? - -Incidentally, I'm still fighting with myself on whether to learn another programming language or not. At this point, learning "Factor":http://www.factorcode.org could turn out to be more natural than months ago. However, I would only learn new programming languages as a hobby, as I don't need to do so for profit: luckily I'm still a happy technical writer and I enjoy my job. - -I admit, I'm still looking for _the_ perfect programming language which is fun to learn (not easy: fun), elegant, minimalist, fast, general purpose and cross platform (meaning Linux, Windows, and Windows Mobile as well). Of course there is no such thing out there and there will never be, so I'm still evaluating the current alternatives. Possible candidates are Haskell, Factor, some dialect of Lisp or C. -Why C? Well, because I didn't do much with it since my first year at uni, and it could still be useful to write Ruby extensions or implement something at a lower level. After so much time getting spoiled by high level languages, I kinda miss the low level stuff. Ahhh where are all the pointers gone?! - -On the other hand, I'm getting married soon, and I should use these months to help my wife-to-be a bit more with wedding planning (see next section). After all, I can always learn a new programming language _after_ getting married, right? ..._right?!_ - -h3. Wedding planning - -Roxanne and I are slowly getting more and more things done for the wedding. Every attempt I made to introduce her to "GTD":http://en.wikipedia.org/wiki/Getting_things_done failed miserably so far, or better, it worked too well: she is now getting used to make lists and deciding on our _next actions_ for the weekend. -This weekend we booked our flights to Ireland, looked at cottages and hotels for the three days after the wedding (not the honeymoon yet, we'll have a late honeymoon in autumn), chose the waistcoats for me, my bestman and the ushers, and ...booked the wedding car! -Now, this turned out to be good fun! Take a look at "Ruby":http://www.alleventslimos.com/Wedding/rolls_silver_cloud.html (yes, yes, I know... ), a Silver Cloud II 1961 Rolls Royce which will be ours for (less than) one day! - -h3. Other tech-related tidbits - -* I successfully migrated to Ubuntu 9.0.4 Jaunty. Everything works, except the flash plugin for Firefox. -* I'm now using TweetDeck as my main Twitter client on both Windows and Linux. -* I'm thinking of buying (after the wedding) an Eee PC (no Macs: Ubuntu is sleek and powerful enough &emdash;and free, too). -* We finally got an XBox 360 from eBay, this time it came through the post. -* Roxanne is thinking of buying a big LCD TV to go with it &emdash; I'm politely (and sadly) postponing till after the wedding. +Another month _without_ the Internet at home. This is getting really annoying, and I decided to change provider, *again*, hoping that I'll eventually get my broadband back, someday. Luckily I can still go online at work, but of course it's not the same thing: my time on Twitter and Facebook is now basically limited to weekends only, when Roxanne and I go down to Tuscany to stay with her parents. + +h3. Concatenative programming + +For some weird reason I became fond of the "Concatenative programming paradigm":http://en.wikipedia.org/wiki/Concatenative_programming_language. I started reading about "Joy":http://www.latrobe.edu.au/philosophy/phimvt/joy/j00rat.html and then started to work on a Ruby DSL able to do the similar things: "Concatenative":/concatenative/. Another pet project &mdash; as if I didn't have enough things to do already! + +Some people seemed pleased about it, especially on "Reddit":http://www.reddit.com/r/ruby/comments/887kn/concatenative_programming_in_ruby and "dzone":http://dzone.com/links/concatenative_programming_in_ruby.html. The downside of it is that it's still fairly slow if compared to Ruby code (which is not exactly fast, either!), so if I had some spare time I should really try to implement it as a C extension, maybe. + +h3. Learning new programming languages? + +Incidentally, I'm still fighting with myself on whether to learn another programming language or not. At this point, learning "Factor":http://www.factorcode.org could turn out to be more natural than months ago. However, I would only learn new programming languages as a hobby, as I don't need to do so for profit: luckily I'm still a happy technical writer and I enjoy my job. + +I admit, I'm still looking for _the_ perfect programming language which is fun to learn (not easy: fun), elegant, minimalist, fast, general purpose and cross platform (meaning Linux, Windows, and Windows Mobile as well). Of course there is no such thing out there and there will never be, so I'm still evaluating the current alternatives. Possible candidates are Haskell, Factor, some dialect of Lisp or C. +Why C? Well, because I didn't do much with it since my first year at uni, and it could still be useful to write Ruby extensions or implement something at a lower level. After so much time getting spoiled by high level languages, I kinda miss the low level stuff. Ahhh where are all the pointers gone?! + +On the other hand, I'm getting married soon, and I should use these months to help my wife-to-be a bit more with wedding planning (see next section). After all, I can always learn a new programming language _after_ getting married, right? ..._right?!_ + +h3. Wedding planning + +Roxanne and I are slowly getting more and more things done for the wedding. Every attempt I made to introduce her to "GTD":http://en.wikipedia.org/wiki/Getting_things_done failed miserably so far, or better, it worked too well: she is now getting used to make lists and deciding on our _next actions_ for the weekend. +This weekend we booked our flights to Ireland, looked at cottages and hotels for the three days after the wedding (not the honeymoon yet, we'll have a late honeymoon in autumn), chose the waistcoats for me, my bestman and the ushers, and ...booked the wedding car! +Now, this turned out to be good fun! Take a look at "Ruby":http://www.alleventslimos.com/Wedding/rolls_silver_cloud.html (yes, yes, I know... ), a Silver Cloud II 1961 Rolls Royce which will be ours for (less than) one day! + +h3. Other tech-related tidbits + +* I successfully migrated to Ubuntu 9.0.4 Jaunty. Everything works, except the flash plugin for Firefox. +* I'm now using TweetDeck as my main Twitter client on both Windows and Linux. +* I'm thinking of buying (after the wedding) an Eee PC (no Macs: Ubuntu is sleek and powerful enough &emdash;and free, too). +* We finally got an XBox 360 from eBay, this time it came through the post. +* Roxanne is thinking of buying a big LCD TV to go with it &emdash; I'm politely (and sadly) postponing till after the wedding. * After listening a FLOSS Weekly episode featuring it, I think I'll get myself an "Arduino Board":http://arduino.cc/ for my birthday.
M content/articles/ma.gnolia.bbcodecontent/articles/ma.gnolia.bbcode

@@ -13,108 +13,108 @@ - web20

type: article toc: true ----- -Social Bookmarking[1] is not something [i]new[/i] anymore; in fact, some people say they've seen too much of it already (imagine that!). One of the worst things - or best, depending on your point of view - of the whole Web 2.0[2] hype is that everything evolves at least ten times faster than it did in good ol' Web 1.0 (if you let me use the term): there are [i]many, many more[/i] web pages created everyday by literally [i]anyone[/i], from web developers to total newcomers to the Web, to amateurs who just want to share their content because it's 'cool'. -However, this is not a rant. Web 2.0 is inevitably going to become more and more user friendly, and you can't do anything about it. Why? Because it pays. Who's most likely to click on the flashy banner on page X featuring product Y not knowing that by doing so company Z will get a penny: your grandmother who is just now learning how to use the Internet or your brother who's majoring in computer science? -However, this is not necessarily a bad thing. I strongly believe that the Internet becomes a much more user-friendly place everyday, and, to put it bluntly, the web developers and companies who understand this will become popular and make money. - -I remember when I first read about social bookmarking: people were screaming here and there that you [i]had to[/i] share your bookmarks on the Net, and this 'delicious'[3] thing was getting more and more popular. Then it became 'delirious'[4], and it was [i]better[/i], because it also meant [i]free[/i]...then the shadows[5] came... -I was never a big fan of the whole concept, I admit, but an old friend of mine from a community[6] turned up and asked me to try a new website he coded in [i]Rails[/i][7]: a new social bookmarking service, simple to use and free: ma.gnolia[8]. -I immediately felt the impulse to reply (as this happened on IRC[9])[i]"i.dont.give.a.sh.**"[/i]. I really didn't want to try [i]yet another[/i] social bookmarking thing, as I had had enough of it even before I started to grasp the whole concept properly. Hoever, since the guy is a friend of mine whom I respect a lot, especially for his skills and knowledge, I decided to give ma.gnolia a try, and here's what happened. - -[b]A website which [i]smells good[/i][/b] -One of the things any Web 2.0 business cannot afford to overlook is the design and user interface of their product. It [i]does[/i] matter! If you want to please your customers, make something that looks good. This is not a new idea at all[10], and it has been shown to work in many situations. -The first impression I had about the ma.gnolia website was similar to the one I had when visiting CSSZenGarden[11] for the first time: [i]code is poetry[/i]. I particularly like the latest trend in web design, which preaches simplicity, functionality, clean-looking pages, xHMTL+CSS instead of other assorted bloat, pastel colors, rounded corners, and so on, and there are no rounded corners in ma.gnolia. -The ma.gnolia website succeeds in making the visitor feel comfortable: it doesn't clutter the page with pointless images or weird widgets, but limits itself to only the essential items needed for usability - logo, banner, essential navigation (bookmarks, tags, people, groups, messages, profile, support and tools), content, a few well placed and unobtrusive images and icons, and a footer with the same usual boring-but-necessary links (copyright, about, terms of service, privacy policy, contact us), nothing more. What else do you need? -People might disagree, of course, and it's certainly not the answer for all tastes: there are some people who really can't stand 'plain' websites, and they think that the whole philosophy is pointless: [i]De gustibus non est disputandum[/i] (There is no accounting for taste). We had the same concerns two thousand years ago and the Romans got it right. Even the Romans would have agreed that ma.gnolia is easy to use, too plain or not. - -[b]Quick features overview[/b] -The obvious first step before starting to use ma.gnolia is signing up for a (free) account. Right? Wrong. For non-committers, or casual, let's-try-it-and-see-what-happens users there's a (free) trial account. You can start using fully functional ma.gnolia right away, but unless you register, nothing you do will be permanent. This seems to be a new Web 2.0 trend as well; before, you needed to make everything free to get people's attention, now it must be free [i]and[/i] not require registration. Makes perfect sense. - -[i][u]Adding bookmarks[/u][/i] -Trial or not, you can start adding bookmarks right away through the form on the front page, which is simple enough. As long as you didn't discover bookmarks (or [i]favorites[/i] for the browser-impaired) the day before yesterday, you probably already have your little collection of bookmarks meticulously catalogued in many different folders. Well, you can import them into ma.gnolia in a few very easy steps, and that, believe me, will save time. Some people may think I'm wasting my time stating the obvious here, but when I tried del.icio.us the import feature wasn't available, and this was enough to make me walk away. - -'Casual user', 'non-web-savvy', 'non-geeks': ma.gnolia obviously targets these types of people. Everything on the site is well-documented and easy to use. Ma.gnolia's project manager said in a recent interview[13]: - -[quote] -[i][...] The rest of us muddle along for about 30 seconds, and if we still don't get it and aren't enjoying the experience, we leave, never to return. To avoid that fate -- to make the complex simple -- our lead IA Tanya Rabourn put in the hours and the iterations needed to make Ma.gnolia comprehensible to the non- expert. [/i] -[/quote] - -This makes sense to me: Web 2.0 seems to be more user friendly, simply because a lot of non-geeks are browsing the web everyday and clicking on adverts. - -Once you import all your bookmarks, you'll have an almost exact copy of your bookmarks collection, now available online! If you don't want to share them, because you believe in anti-social bookmarking or you just want to have a backup, you can import all your bookmarks as "private", and you can toggle the status by clicking [img]http://ma.gnolia.com/images/icons/privacy-on.gif[/img] or [img]http://ma.gnolia.com/images/icons/privacy-off.gif[/img], whenever you like: the magic of Ajax[14] will do the rest. -You can also rate your bookmarks from one to five stars, but [i]only[/i] yours: ma.gnolia is not a pointless competition to be the one who links the most and best websites. - -[i]What if I want to delete a bookmark?[/i] Quick hint: [img]http://ma.gnolia.com/images/icons/delete.gif[/img] - -[i][u]Yes, you can tag as much as you like[/u][/i] -No, there are no folders. Forget it. For me it started with Gmail[15] and it was shocking enough: there are no folders, but you can tag your messages. This can be disorienting for some, but once you have overcome the initial trauma, you will realize that tags can be better than folders in some cases. At any rate, Web 2.0 uses tags everywhere, so you'd better get used to it. A tag is basically a virtual label you can put on something - here, a bookmark - to make it belong to a defined group. Tags normally don't have a hierarchy like folders, and each item can have more than one tag. Simple. - -Unfortunately, you can't directly tag (or rate) bookmarks that you add from the main page, but since you'll normally be using some sort of [i]bookmarklet[/i] for Ma.gnolia, it doesn't really matter. Also, at the moment, once you create a tag you can't rename it, but this feature will be added soon. - - -[i][u]Connecting people[/u][/i] -If you tried some other social bookmarking services before and you really enjoy the philosophy behind it, you'll be pleased to know that Ma.gnolia is even more social than others. When you register an account you can optionally disclose your real name, age, and gender, add an avatar, a webpage and so on, and you can create your own profile, just like anywhere else on the Internet. -Furthermore, Ma.gnolia allows [i]groups[/i]: you can create, join, and leave a group of bookmarkers who share the same interests as you. Why would you want to do this? The answer to that question is simple and self-evident: because what is enjoyed by one person will likely be enjoyed by other people who share the same interests. Once you are part of a group you can send a bookmark to that particular group ([img]http://ma.gnolia.com/images/icons/send-to-group.gif[/img]), or at least that's that ideal; if you just want to send a particular address to only one person you can do so ([img]http://ma.gnolia.com/images/icons/send-to-contact.gif[/img]), provided that that person is already in your contact list, and to do so there's a specific button (not icon this time) in everyone's profile. -You'll notice a [i]Messages[/i] link in the main navigation panel, and that's exactly where the bookmark (and only the bookmark) will go once you send it to your friend. At the moment you [i]cannot[/i] send a traditional message to someone, unless you send it along with a bookmark. This might change in the future, depending on user feedback, as well as the addition of some place to actually have some sort of discussion and comments - or so I've been told. -I'd be happy to see more community-specific functionalities being implemented, but there are some inevitable risks if Ma.gnolia decides to take this road. I'll let them decide, but for now, Ma.gnolia is more social than other services, but less social than, say, a discussion board. - -[i][u]Pages, stats and search[/u][/i] -Perhaps one of the coolest features Ma.gnolia offers is the possibility of saving pages online. When you bookmark a web page, Ma.gnolia attempts to save an exact copy of that page on its server, so that you can access that resource even if it is deleted at the source, like an improved personal version of the WayBack Machine! -Two things need to be said - and yes, they might be obvious for some people: -1) Pages which require some sort of authentication cannot be saved; and -2) Saved copies cannot be viewed by people other than yourself. - -Another feature is the ability to access basic statistics regarding bookmarks and people: most viewed or most recent bookmarks, hot groups, hot tags, as well as featured linkers, i.e., people who Ma.gnolia chooses to be displayed in some pages. They are generally well-known members or institutions that use the service. -However, the search function disappointed me a little bit. There is a very entertaining story on their About page[17] on how Social Bookmarking is supposed to help people to find things on the Web, and the last part in particular is pretty informative: -[quote][...]In Ma.gnolia, people can save website addresses (or the 'url') and "tag" them with that words they think people need to find them in a search. That way, when somebody else searches a term, the websites that show up are only the ones that are good enough for real people to want to find them. -With Ma.gnolia, that's really all the work you have to do. Organizing is a thing of the past, since tags do the organizing for you. Magnolia will even suggest when to give certain tags to bookmarks based on how you tag other bookmarks, to keep things consistent and up to date. And since it's a website, your Ma.gnolia bookmark collection can be reached by you and your friends from anywhere, any time. -If searching was the first day of the web, finding what you want must be the second. Ready to discover how Found is the New Search? Give Ma.gnolia a try, and see what we mean.[/quote] - -It seemed logical, so I tried it myself. I searched for "ajax framework", and nine of the ten results on the first page led to this document: - -ASP.NET AJAX framework comparison [18] - -This is undoubtedly an interesting document, but not what I was looking for, and I certainly didn't expect almost the entire first page to consist of the same document. I asked for an explanation of this apparently odd behaviour, and it appears that the developer is aware of this, and explained me why this [i]must[/i] happen: if someone saved www.zzine.org as "zZine Magazine" and another person saved it as "Microsoft", someone searching for Microsoft - provided that we don't show duplicate links anymore, will find a link to zZine Magazine as one of the first results, and it would not be relevant. This is due to the fact that the system searches tags, titles, and descriptions even if the URL is the same, or known. Still, I'd try to limit the number of identical results, at least by grouping together entries which have the same URL and title, or something along these lines. - - -[i][u]Tools to play with[/u][/i] -There's a whole section of the site devoted to [i]Support and Tools[/i], to make the whole thing even more user friendly. Regarding the support part, even the greenest of visitors to a social bookmarking site will have no problems, as everything is explained in very simple terms, and full of examples and tutorials. This can be an annoying read if you already know how social bookmarking works and if you're used to similar services, so my advice is: [i]geeks stay out of this section[/i] - it will save pointless rants. -The upside of this is that if I send someone who has [i]never[/i] used something like this before, he'll like it and definitely start using it; if you try this with del.icio.us, you'll have one less non-geek friend. - -Regarding the tools subsection, I already mentioned the excellent bookmark importer (which worked perfectly, but should probably warn in case a page cannot be imported due to a 404 error). Ma.gnolia also offers: - -- a del.icio.us importer -- del.icio.us to ma.gnolia GreaseMonkey script - to keep your del.icio.us and ma.gnolia synchronized -- a link roll generator, to share your bookmarks on your blog or page -- a universal bookmark exporter - -Additionally, and most importantly, various bookmarklets[19] which allow you to instantly add a bookmark to your ma.gnolia collection with a single click, just like adding an ordinary bookmark. Not new, but useful and essential. - - -[b]Conclusions[/b] -Ma.gnolia is definitely the best social bookmarking solution currently available for non-web savvy users. If you don't like having to spend more than five minutes figuring out how social bookmarking works, Ma.gnolia will become your new home, and you'll get addicted to it. I don't consider myself a total geek, and I honestly started using Ma.gnolia because it's simple and does the job... - -...or perhaps the website is just so easy to use and nice to navigate that makes it harder to browse away! - - -[b]Notes[/b] -[1]Social Bookmarking, Wkipedia: http://en.wikipedia.org/wiki/Social_bookmarking -[2]Web 2.0, Wikipedia: http://en.wikipedia.org/wiki/Web_2.0 -[3]del.icio.us Social bookmarking: http://del.icio.us -[4]de.lirio.us Social bookmarking: http://de.lirio.us -[5]Shadows Social Bookmarking: http://www.shadows.com -[6]CyberArmy Community: http://www.cyberarmy.net -[7]Ruby on Rails framework: http://www.rubyonrails.org -[8]Ma.gnolia Social Bookmarking: http://ma.gnolia.com -[9]Internet Relay Chat, wikipedia: http://en.wikipedia.org/wiki/Internet_Relay_Chat -[11]Windows XP Official Page: http://www.microsoft.com/windowsxp/default.mspx -[12]CSSZenGarden: http://www.csszengarden.com/ -[13]Darren Barefoot's Blog, Sugar Ma.gnolia, Blossoms Blooming: - http://www.darrenbarefoot.com/archives/2006/02/sugar-magnolia-blossoms-blooming.html -[14]Ajax, Wikipedia: http://en.wikipedia.org/wiki/Ajax_%28programming%29 -[15]Google Mail: http://mail.google.com/ -[16]Archive.org: http://www.archive.org/ -[17]Ma.gnolia - About: http://ma.gnolia.com/about -[18] Daniel Zeiss, "ASP.NET AJAX framework comparison": -http://www.daniel-zeiss.de/AJAXComparison/Results.htm -[19]Ma.gnolia - Bookmarkles directory: http://ma.gnolia.com/support/bookmarklets +Social Bookmarking[1] is not something [i]new[/i] anymore; in fact, some people say they've seen too much of it already (imagine that!). One of the worst things - or best, depending on your point of view - of the whole Web 2.0[2] hype is that everything evolves at least ten times faster than it did in good ol' Web 1.0 (if you let me use the term): there are [i]many, many more[/i] web pages created everyday by literally [i]anyone[/i], from web developers to total newcomers to the Web, to amateurs who just want to share their content because it's 'cool'. +However, this is not a rant. Web 2.0 is inevitably going to become more and more user friendly, and you can't do anything about it. Why? Because it pays. Who's most likely to click on the flashy banner on page X featuring product Y not knowing that by doing so company Z will get a penny: your grandmother who is just now learning how to use the Internet or your brother who's majoring in computer science? +However, this is not necessarily a bad thing. I strongly believe that the Internet becomes a much more user-friendly place everyday, and, to put it bluntly, the web developers and companies who understand this will become popular and make money. + +I remember when I first read about social bookmarking: people were screaming here and there that you [i]had to[/i] share your bookmarks on the Net, and this 'delicious'[3] thing was getting more and more popular. Then it became 'delirious'[4], and it was [i]better[/i], because it also meant [i]free[/i]...then the shadows[5] came... +I was never a big fan of the whole concept, I admit, but an old friend of mine from a community[6] turned up and asked me to try a new website he coded in [i]Rails[/i][7]: a new social bookmarking service, simple to use and free: ma.gnolia[8]. +I immediately felt the impulse to reply (as this happened on IRC[9])[i]"i.dont.give.a.sh.**"[/i]. I really didn't want to try [i]yet another[/i] social bookmarking thing, as I had had enough of it even before I started to grasp the whole concept properly. Hoever, since the guy is a friend of mine whom I respect a lot, especially for his skills and knowledge, I decided to give ma.gnolia a try, and here's what happened. + +[b]A website which [i]smells good[/i][/b] +One of the things any Web 2.0 business cannot afford to overlook is the design and user interface of their product. It [i]does[/i] matter! If you want to please your customers, make something that looks good. This is not a new idea at all[10], and it has been shown to work in many situations. +The first impression I had about the ma.gnolia website was similar to the one I had when visiting CSSZenGarden[11] for the first time: [i]code is poetry[/i]. I particularly like the latest trend in web design, which preaches simplicity, functionality, clean-looking pages, xHMTL+CSS instead of other assorted bloat, pastel colors, rounded corners, and so on, and there are no rounded corners in ma.gnolia. +The ma.gnolia website succeeds in making the visitor feel comfortable: it doesn't clutter the page with pointless images or weird widgets, but limits itself to only the essential items needed for usability - logo, banner, essential navigation (bookmarks, tags, people, groups, messages, profile, support and tools), content, a few well placed and unobtrusive images and icons, and a footer with the same usual boring-but-necessary links (copyright, about, terms of service, privacy policy, contact us), nothing more. What else do you need? +People might disagree, of course, and it's certainly not the answer for all tastes: there are some people who really can't stand 'plain' websites, and they think that the whole philosophy is pointless: [i]De gustibus non est disputandum[/i] (There is no accounting for taste). We had the same concerns two thousand years ago and the Romans got it right. Even the Romans would have agreed that ma.gnolia is easy to use, too plain or not. + +[b]Quick features overview[/b] +The obvious first step before starting to use ma.gnolia is signing up for a (free) account. Right? Wrong. For non-committers, or casual, let's-try-it-and-see-what-happens users there's a (free) trial account. You can start using fully functional ma.gnolia right away, but unless you register, nothing you do will be permanent. This seems to be a new Web 2.0 trend as well; before, you needed to make everything free to get people's attention, now it must be free [i]and[/i] not require registration. Makes perfect sense. + +[i][u]Adding bookmarks[/u][/i] +Trial or not, you can start adding bookmarks right away through the form on the front page, which is simple enough. As long as you didn't discover bookmarks (or [i]favorites[/i] for the browser-impaired) the day before yesterday, you probably already have your little collection of bookmarks meticulously catalogued in many different folders. Well, you can import them into ma.gnolia in a few very easy steps, and that, believe me, will save time. Some people may think I'm wasting my time stating the obvious here, but when I tried del.icio.us the import feature wasn't available, and this was enough to make me walk away. + +'Casual user', 'non-web-savvy', 'non-geeks': ma.gnolia obviously targets these types of people. Everything on the site is well-documented and easy to use. Ma.gnolia's project manager said in a recent interview[13]: + +[quote] +[i][...] The rest of us muddle along for about 30 seconds, and if we still don't get it and aren't enjoying the experience, we leave, never to return. To avoid that fate -- to make the complex simple -- our lead IA Tanya Rabourn put in the hours and the iterations needed to make Ma.gnolia comprehensible to the non- expert. [/i] +[/quote] + +This makes sense to me: Web 2.0 seems to be more user friendly, simply because a lot of non-geeks are browsing the web everyday and clicking on adverts. + +Once you import all your bookmarks, you'll have an almost exact copy of your bookmarks collection, now available online! If you don't want to share them, because you believe in anti-social bookmarking or you just want to have a backup, you can import all your bookmarks as "private", and you can toggle the status by clicking [img]http://ma.gnolia.com/images/icons/privacy-on.gif[/img] or [img]http://ma.gnolia.com/images/icons/privacy-off.gif[/img], whenever you like: the magic of Ajax[14] will do the rest. +You can also rate your bookmarks from one to five stars, but [i]only[/i] yours: ma.gnolia is not a pointless competition to be the one who links the most and best websites. + +[i]What if I want to delete a bookmark?[/i] Quick hint: [img]http://ma.gnolia.com/images/icons/delete.gif[/img] + +[i][u]Yes, you can tag as much as you like[/u][/i] +No, there are no folders. Forget it. For me it started with Gmail[15] and it was shocking enough: there are no folders, but you can tag your messages. This can be disorienting for some, but once you have overcome the initial trauma, you will realize that tags can be better than folders in some cases. At any rate, Web 2.0 uses tags everywhere, so you'd better get used to it. A tag is basically a virtual label you can put on something - here, a bookmark - to make it belong to a defined group. Tags normally don't have a hierarchy like folders, and each item can have more than one tag. Simple. + +Unfortunately, you can't directly tag (or rate) bookmarks that you add from the main page, but since you'll normally be using some sort of [i]bookmarklet[/i] for Ma.gnolia, it doesn't really matter. Also, at the moment, once you create a tag you can't rename it, but this feature will be added soon. + + +[i][u]Connecting people[/u][/i] +If you tried some other social bookmarking services before and you really enjoy the philosophy behind it, you'll be pleased to know that Ma.gnolia is even more social than others. When you register an account you can optionally disclose your real name, age, and gender, add an avatar, a webpage and so on, and you can create your own profile, just like anywhere else on the Internet. +Furthermore, Ma.gnolia allows [i]groups[/i]: you can create, join, and leave a group of bookmarkers who share the same interests as you. Why would you want to do this? The answer to that question is simple and self-evident: because what is enjoyed by one person will likely be enjoyed by other people who share the same interests. Once you are part of a group you can send a bookmark to that particular group ([img]http://ma.gnolia.com/images/icons/send-to-group.gif[/img]), or at least that's that ideal; if you just want to send a particular address to only one person you can do so ([img]http://ma.gnolia.com/images/icons/send-to-contact.gif[/img]), provided that that person is already in your contact list, and to do so there's a specific button (not icon this time) in everyone's profile. +You'll notice a [i]Messages[/i] link in the main navigation panel, and that's exactly where the bookmark (and only the bookmark) will go once you send it to your friend. At the moment you [i]cannot[/i] send a traditional message to someone, unless you send it along with a bookmark. This might change in the future, depending on user feedback, as well as the addition of some place to actually have some sort of discussion and comments - or so I've been told. +I'd be happy to see more community-specific functionalities being implemented, but there are some inevitable risks if Ma.gnolia decides to take this road. I'll let them decide, but for now, Ma.gnolia is more social than other services, but less social than, say, a discussion board. + +[i][u]Pages, stats and search[/u][/i] +Perhaps one of the coolest features Ma.gnolia offers is the possibility of saving pages online. When you bookmark a web page, Ma.gnolia attempts to save an exact copy of that page on its server, so that you can access that resource even if it is deleted at the source, like an improved personal version of the WayBack Machine! +Two things need to be said - and yes, they might be obvious for some people: +1) Pages which require some sort of authentication cannot be saved; and +2) Saved copies cannot be viewed by people other than yourself. + +Another feature is the ability to access basic statistics regarding bookmarks and people: most viewed or most recent bookmarks, hot groups, hot tags, as well as featured linkers, i.e., people who Ma.gnolia chooses to be displayed in some pages. They are generally well-known members or institutions that use the service. +However, the search function disappointed me a little bit. There is a very entertaining story on their About page[17] on how Social Bookmarking is supposed to help people to find things on the Web, and the last part in particular is pretty informative: +[quote][...]In Ma.gnolia, people can save website addresses (or the 'url') and "tag" them with that words they think people need to find them in a search. That way, when somebody else searches a term, the websites that show up are only the ones that are good enough for real people to want to find them. +With Ma.gnolia, that's really all the work you have to do. Organizing is a thing of the past, since tags do the organizing for you. Magnolia will even suggest when to give certain tags to bookmarks based on how you tag other bookmarks, to keep things consistent and up to date. And since it's a website, your Ma.gnolia bookmark collection can be reached by you and your friends from anywhere, any time. +If searching was the first day of the web, finding what you want must be the second. Ready to discover how Found is the New Search? Give Ma.gnolia a try, and see what we mean.[/quote] + +It seemed logical, so I tried it myself. I searched for "ajax framework", and nine of the ten results on the first page led to this document: + +ASP.NET AJAX framework comparison [18] + +This is undoubtedly an interesting document, but not what I was looking for, and I certainly didn't expect almost the entire first page to consist of the same document. I asked for an explanation of this apparently odd behaviour, and it appears that the developer is aware of this, and explained me why this [i]must[/i] happen: if someone saved www.zzine.org as "zZine Magazine" and another person saved it as "Microsoft", someone searching for Microsoft - provided that we don't show duplicate links anymore, will find a link to zZine Magazine as one of the first results, and it would not be relevant. This is due to the fact that the system searches tags, titles, and descriptions even if the URL is the same, or known. Still, I'd try to limit the number of identical results, at least by grouping together entries which have the same URL and title, or something along these lines. + + +[i][u]Tools to play with[/u][/i] +There's a whole section of the site devoted to [i]Support and Tools[/i], to make the whole thing even more user friendly. Regarding the support part, even the greenest of visitors to a social bookmarking site will have no problems, as everything is explained in very simple terms, and full of examples and tutorials. This can be an annoying read if you already know how social bookmarking works and if you're used to similar services, so my advice is: [i]geeks stay out of this section[/i] - it will save pointless rants. +The upside of this is that if I send someone who has [i]never[/i] used something like this before, he'll like it and definitely start using it; if you try this with del.icio.us, you'll have one less non-geek friend. + +Regarding the tools subsection, I already mentioned the excellent bookmark importer (which worked perfectly, but should probably warn in case a page cannot be imported due to a 404 error). Ma.gnolia also offers: + +- a del.icio.us importer +- del.icio.us to ma.gnolia GreaseMonkey script - to keep your del.icio.us and ma.gnolia synchronized +- a link roll generator, to share your bookmarks on your blog or page +- a universal bookmark exporter + +Additionally, and most importantly, various bookmarklets[19] which allow you to instantly add a bookmark to your ma.gnolia collection with a single click, just like adding an ordinary bookmark. Not new, but useful and essential. + + +[b]Conclusions[/b] +Ma.gnolia is definitely the best social bookmarking solution currently available for non-web savvy users. If you don't like having to spend more than five minutes figuring out how social bookmarking works, Ma.gnolia will become your new home, and you'll get addicted to it. I don't consider myself a total geek, and I honestly started using Ma.gnolia because it's simple and does the job... + +...or perhaps the website is just so easy to use and nice to navigate that makes it harder to browse away! + + +[b]Notes[/b] +[1]Social Bookmarking, Wkipedia: http://en.wikipedia.org/wiki/Social_bookmarking +[2]Web 2.0, Wikipedia: http://en.wikipedia.org/wiki/Web_2.0 +[3]del.icio.us Social bookmarking: http://del.icio.us +[4]de.lirio.us Social bookmarking: http://de.lirio.us +[5]Shadows Social Bookmarking: http://www.shadows.com +[6]CyberArmy Community: http://www.cyberarmy.net +[7]Ruby on Rails framework: http://www.rubyonrails.org +[8]Ma.gnolia Social Bookmarking: http://ma.gnolia.com +[9]Internet Relay Chat, wikipedia: http://en.wikipedia.org/wiki/Internet_Relay_Chat +[11]Windows XP Official Page: http://www.microsoft.com/windowsxp/default.mspx +[12]CSSZenGarden: http://www.csszengarden.com/ +[13]Darren Barefoot's Blog, Sugar Ma.gnolia, Blossoms Blooming: + http://www.darrenbarefoot.com/archives/2006/02/sugar-magnolia-blossoms-blooming.html +[14]Ajax, Wikipedia: http://en.wikipedia.org/wiki/Ajax_%28programming%29 +[15]Google Mail: http://mail.google.com/ +[16]Archive.org: http://www.archive.org/ +[17]Ma.gnolia - About: http://ma.gnolia.com/about +[18] Daniel Zeiss, "ASP.NET AJAX framework comparison": +http://www.daniel-zeiss.de/AJAXComparison/Results.htm +[19]Ma.gnolia - Bookmarkles directory: http://ma.gnolia.com/support/bookmarklets
M content/articles/obama-may-come-to-genoa.textilecontent/articles/obama-may-come-to-genoa.textile

@@ -11,23 +11,23 @@ - politics

type: article toc: true ----- -Barack Obama may visit Columbus' birthplace on October 12th 2008, and take part in the city's celebration of the discovery of America, which is held in the city every year. As reported by *Il Secolo XIX*, Genova's local newspaper. - -Although the invitation has not been officially accepted by the American Presidential Candidate, Genoa's mayor *Marta Vincenzi* is working very hard to make it happen. - -*Kerry Kennedy* (Bob Kennedy's daughter), is said to be in charge of liaising with Obama on the US side. - -<blockquote> -"[...] Kerry Kennedy and her family &ndash; among the first and most unexpected of Obama's supporters in his challange against Hillary Clinton &ndash; are said to be organising his visit to Genoa. It all started when Kerry came to the city at the beginning of July, for the Week of Human Rights initiative promoted by the city's council. Kerry was introduced to Nando Dalla Chiesa's 'Columbus Day' program plan by Vincenzi . -<br /><br /> -The proposal of inviting Obama to Christopher Columbus' birthplace was immediate, and a significant move. -That could have important consequences, because Genoa has been involved in battles for civil rights in the last few months while also trying to restore its relationship with the United States, which have often been identified as a symbol of evil globalization since the G8 summit [held in the city in 2001]." -<br /><br /> -After Bush &ndash; the "king" president among the other 8 powers protected by the Red Zone [the restricted area of the city where the G8 summit was held] &ndash; a black presidential candidate who speaks of dialog and integration to the people of Genova (and obviously also tens of thousands of Italians), from De Ferrari Square [the city's main square]. [...]" -</blockquote> -_&ndash; Translated from "Indovina chi viene a Genova":http://ilsecoloxix.ilsole24ore.com/genova/2008/08/11/1101689125257-indovina-chi-viene-genova.shtm, Giovanna Mari, August 11th 2008._ - -This could be a truly important occasion for Genova (and Italy) to re-establish dialog with the United States after the G8 summit (which cost the city a death and millions of Euro of damage caused by vandalism). -However, there is still no official confirmation that the event will take place at all, especially due to the upcoming Presidential Elections in the same period. - -If he comes, I'll definitely be there! +Barack Obama may visit Columbus' birthplace on October 12th 2008, and take part in the city's celebration of the discovery of America, which is held in the city every year. As reported by *Il Secolo XIX*, Genova's local newspaper. + +Although the invitation has not been officially accepted by the American Presidential Candidate, Genoa's mayor *Marta Vincenzi* is working very hard to make it happen. + +*Kerry Kennedy* (Bob Kennedy's daughter), is said to be in charge of liaising with Obama on the US side. + +<blockquote> +"[...] Kerry Kennedy and her family &ndash; among the first and most unexpected of Obama's supporters in his challange against Hillary Clinton &ndash; are said to be organising his visit to Genoa. It all started when Kerry came to the city at the beginning of July, for the Week of Human Rights initiative promoted by the city's council. Kerry was introduced to Nando Dalla Chiesa's 'Columbus Day' program plan by Vincenzi . +<br /><br /> +The proposal of inviting Obama to Christopher Columbus' birthplace was immediate, and a significant move. +That could have important consequences, because Genoa has been involved in battles for civil rights in the last few months while also trying to restore its relationship with the United States, which have often been identified as a symbol of evil globalization since the G8 summit [held in the city in 2001]." +<br /><br /> +After Bush &ndash; the "king" president among the other 8 powers protected by the Red Zone [the restricted area of the city where the G8 summit was held] &ndash; a black presidential candidate who speaks of dialog and integration to the people of Genova (and obviously also tens of thousands of Italians), from De Ferrari Square [the city's main square]. [...]" +</blockquote> +_&ndash; Translated from "Indovina chi viene a Genova":http://ilsecoloxix.ilsole24ore.com/genova/2008/08/11/1101689125257-indovina-chi-viene-genova.shtm, Giovanna Mari, August 11th 2008._ + +This could be a truly important occasion for Genova (and Italy) to re-establish dialog with the United States after the G8 summit (which cost the city a death and millions of Euro of damage caused by vandalism). +However, there is still no official confirmation that the event will take place at all, especially due to the upcoming Presidential Elections in the same period. + +If he comes, I'll definitely be there!
M content/articles/pagerank.bbcodecontent/articles/pagerank.bbcode

@@ -12,93 +12,93 @@ - internet

type: article toc: true ----- -Since 1998 SEO experts, webmasters, and even casual users spent ages trying to figure out the magic within that small green bar... but what's really behind Google's most famous invention?If you never experienced the sensation of looking at such a [i]green bar[/i] before, then maybe you don't know what I'm referring to; I suggest downloading and installing the Google Toolbar[1]. This IE add-on (now available for the Firefox browser) was developed by Google years ago and still remains the most common way to view a website's [b]PageRank[/b] through a simple bar with a variable length, according to a 10 point scale. - -I quietly mentioned the infamous word [i]PageRank[/i] earlier, but what is it? -Some people think the idea of the word might come from a pun involving one of Google's co-founders (Larry [i]Page[/i]), while others simply think it was the most obvious choice for a system which was supposed to [i]rank[/i] pages according to importance and popularity. Anyhow, the only certain thing is that two (insert appropriate adjective here) students of Stanford University wrote a paper, in 1998, called "The Anatomy of a Large-Scale Hypertextual Web Search Engine"[3], in which, they discussed some interesting ideas for developing a large scale search engine using a particular algorithm they invented, which was supposed to help delivering the most relevant results for any search query provided by a user of the service. - -It is also certain that these two guys, Larry Page and Sergey Brin, eventually made an awful lot of money in the following years, developing and expanding an initially simple-looking website/web application with a funny name[4] and turning it into one of the biggest and most profitable businesses in the history of Computer Science. But let's now examine how PageRank works. - - -[b]Deus ex machina[/b] - Google's co-founders kindly provided a short text summing up their innovative (and perhaps secret) technology[5]. In particular, one paragraph seems to offer a brief and simple explanation of how PageRank works: -[quote] -[i]PageRank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value. In essence, Google interprets a link from page A to page B as a vote, by page A, for page B. But, Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves "important", weigh more heavily and help to make other pages "important." -[/i][/quote] - - The first time I read this paragraph, I really experienced a feeling of admiration and ecstasy for these two enlightened minds who decided to bestow their priceless gift on the World Wide Web: a system which gives every page the due importance through a democratic system. Isn't it wonderful? - - Of course there's (much) more to it than a short paragraph, and obviously this [i]explanation[/i] wasn?t enough for those people (webmasters, SEO experts, kids creating their online family albums, etc.), who gradually became more and more interested in knowing further details about the system, hoping that it would have improved their placement in Google's search results. - - Indeed, PageRank contributed to label some sites as [i]important[/i] and gradually the number of ?PageRank 10? websites[6] began to rise, but generally remaining a prerogative of important names of the IT industry (Microsoft, Apple and obviously Google itself, for example). But how did such sites achieve that? How did the green toolbar grow so much for them and not as much for your grandma's personal webpage? - - Soon enough, theories and speculations produced an approximation of the algorithm[7], which is generally thought to be an acceptable model to understand how the system works. - -Take the following equation: - -[i]PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))[/i] - -Where: - -[i]PR(A)[/i] - The PageRank value of a certain page -[i]PR(Tn)[/i] - The PageRank value of all pages linking to A -[i]C(Tn)[/i] - The number of links present on page Tn -[i]d[/i](... - "damp factor", thought to be 0.85 - - It now appears clear that the PageRank of page A depends on the number of pages linking to it. Furthermore, important factors taken into consideration are the [i]quality[/i] of such pages (i.e. whether they have a high PageRank themselves or not) and the number of links present on each page, which causes the vote to be [i]divided[/i] equally among them. - - This is, in a nutshell, how PageRank is supposed to work. This is obviously a simple model, and there's actually a more mathematical/probabilistic approach[8] which goes beyond the scope of this article and requires some notions of probability theory. - - -[b]Considerations and opinions[/b] -With this model in mind, it's now possible to understand how (in a very simplified way) Google works: each month Google spiders search the web, and follow links from a page to another, keeping track of the "votes". PageRank is then calculated for every page and updated. This process normally takes a lot of time and, as a matter of fact, PageRank seems to be updated only every 4 months nowadays: these trimester updates normally causes a page to increase its rank by one (or more if you're lucky) level on the bar, or in some cases, lower it in the same way. - - By taking a closer look at the formula proposed above, you'll notice that the maximum value of PR(A) is by no means equal to 10, as it depends on how many pages link to A and how many outbound links there are on such pages. As a matter of fact, people started speculating on the nature of the scale used for PageRank: on the toolbar it ranges from 0 to 10, while in reality a PageRank 10 (take Microsoft.com for example) should correspond to [i]some millions[/i] in practice. - - The most accredited theory is that the PageRank displayed on the green bar is the result of a sort of correspondence between real values and such 0 to 10 scale. Also, people suggested that such scale is in fact a base 5 (or 6) logarithmic scale. This would explain for example why it takes much longer to acquire PageRank 7 from PageRank 6 than acquiring PageRank 3 from PageRank 2. -For the non-mathematical minds, a [i]logarithmic scale[/i] is a succession of numbers NOT incremented by "1" or a fixed quantity, but by an always-growing exponential factor: taking a base-10 logarithmic scale, values of 1,2,3 would correspond respectively to 10^1, 10^2 and 10^3 (10, 100, 1000). - - For a long time Google seemed to use PageRank as an important factor for getting first places in search results, and it's still partly true: if you search for the keyword "Italy" you're likely to find some high PR sites as first results. - - This resulted in all the possible forms of speculations: webmasters started asking money for publishing links on high PR pages, and similarly SEO experts started adopting various infamous tactics to obtain a high PageRank for their customers: this includes, for example, [i]link farms[/i][9]. - -It's now clear that what is was believed to be a solution relying on the [i]uniquely democratic nature of the web[/i] turned out to be a complete failure in that sense, because the very basis of the concept is wrong. Sad, but true, the WWW is by no means democratic at all. - - Another complaint against PageRank was that new sites took ages to acquire [i]respectable[/i] PageRank and therefore appear on the top of search results, no matter how wonderfully they were written. This is still partly true, as anyone can notice by searching Google, but the algorithm itself is continuously being tweaked both for stopping spammers and link farms, and also to favour those sites which provide relevant and appropriate content and are not up to some dodgy trick; I must admit that the situation is gradually getting better. - - -[b]Case Study: ItalySimply.com and h3raLd.com[/b] -I'm now going to discuss my own personal experience with PageRank applied to my two websites, ItalySimply[10] and h3raLd Labs[11]. While the second one is not currently advertised or promoted, because at the moment I don't have enough time for other web developing projects, with the first one I tried to follow a [i]SEO Strategy[/i] trying to acquire PageRank and good placement in search engines. -You can see the result yourself: ItalySimply acquired PageRank 5 and h3raLd PageRank 4: not bad at all considering they are both two relatively new websites, ItalySimply being officially born in August 2004 and h3raLd Labs actually had some serious content from April 2005 on. - - For ItalySimply, I even experienced a period of [i]PageRank 0[/i] which lasted about 2 months: although according to Google all websites should have at least PR1, PR0 is used to penalize some [i]unusual[/i] behaviour which in my case was a [i]302 - Temporarily Moved[/i] redirect which was necessary to redirect users to a subfolder of the server. Later on I learned how this can be interpreted as a dodgy redirection by search engines[12], and why I was penalized by Google for this with a PR0. After noticing the mistakes, I immediately started a strategic link campaign; obtaining links from some good sites (also with high PR) related to mine, and PageRank for ItalySimply began to grow, from 0 to 3, then 4, and just recently 5. - - At the same time, I re-designed h3raLd.com and noticed that it acquired PR1, because it was already listed in Google and didn't get any [i]vote[/i] from other sites. I then decided to put a link to h3raLd Labs on [i]every[/i] page of ItalySimply, which are now ranging from PR5 to PR2. - - The result was an immediate growth of h3raLd.com in terms of PR, which reached an acceptable 4 without [i]any[/i] link swapped, banner displayed on behalf of other sites, or anything as such. - - The difference between the two sites though is much bigger than 1 point on PR, in terms of placement in search results: ItalySimply has some relatively interesting content and various pages, and it ranks good enough on MSN and Yahoo, and even Google, to an extent; h3raLd.com has just 4 pages and doesn't seem to appear at all in search engines, unless you search for something like "h3raLd". Again, this is a proof that nowadays PR doesn't mean immediate placement on the top of search results. - - -[b]Final Considerations[/b] - Although PR is by no means the unique factor to determine search engine placements, it's still certainly important as a [i]co-factor[/i]. As I said, it's still extremely difficult for a new page with low PageRank to place before a high-ranked one. Surely, if I decided to put something more interesting on h3raLd.com I would get better results than buying a new domain and creating a new site: old sites with high PR are still [i]naturally[/i] inclined to rank better than new ones. Got that? Now, all you need to do is buy a really stupid domain name and create some pages for it, then think about it like a bottle of whisky; let it age for a while making it get some respectable rank: when you have a clever idea you'll have your ready-made place to promote it! - -[i]In Google we trust![/i] - - - -[b]Sources and related links:[/b] - -[1] Google Toolbar, [url]http://toolbar.google.com/[/url] -[2] Stanford University, [url]http://www.stanford.edu/[/url] -[3] Lawrence Page and Sergey Brin, "The Anatomy of a Large-Scale Hypertextual Web Search Engine", Computer Science Department, Stanford University, [url]http://www-db.stanford.edu/~backrub/google.html[/url] -[4] Google, [url]http://www.google.com/[/url] -[5] Google Technology, [url]http://www.google.com/technology/[/url] -[6] List of PageRank 10 sites, [url]http://www.searchenginegenie.com/pagerank-10-sites.htm[/url] -[7] Ian Rogers, "The Google Pagerank Algorithm and How It Works", IPR Computing Ltd. [url]http://www.iprcom.com/papers/pagerank/index.html[/url] -[8] Pagerank, Wikipedia page, [url]http://en.wikipedia.org/wiki/Pagerank[/url] -[9] Link Farm, Wikipedia Page, [url]http://en.wikipedia.org/wiki/Link_farm[/url] -[10] ItalySimply - Italy Real Estate Services and Relocation Help, [url]http://www.italysimply.com/[/url] -[11] h3raLd Labs - Freelance Web Development, [url]http://www.h3rald.com/[/url] -[12] "The Rundown on 301 and 302 redirects", September 10th, 2004, +Since 1998 SEO experts, webmasters, and even casual users spent ages trying to figure out the magic within that small green bar... but what's really behind Google's most famous invention?If you never experienced the sensation of looking at such a [i]green bar[/i] before, then maybe you don't know what I'm referring to; I suggest downloading and installing the Google Toolbar[1]. This IE add-on (now available for the Firefox browser) was developed by Google years ago and still remains the most common way to view a website's [b]PageRank[/b] through a simple bar with a variable length, according to a 10 point scale. + +I quietly mentioned the infamous word [i]PageRank[/i] earlier, but what is it? +Some people think the idea of the word might come from a pun involving one of Google's co-founders (Larry [i]Page[/i]), while others simply think it was the most obvious choice for a system which was supposed to [i]rank[/i] pages according to importance and popularity. Anyhow, the only certain thing is that two (insert appropriate adjective here) students of Stanford University wrote a paper, in 1998, called "The Anatomy of a Large-Scale Hypertextual Web Search Engine"[3], in which, they discussed some interesting ideas for developing a large scale search engine using a particular algorithm they invented, which was supposed to help delivering the most relevant results for any search query provided by a user of the service. + +It is also certain that these two guys, Larry Page and Sergey Brin, eventually made an awful lot of money in the following years, developing and expanding an initially simple-looking website/web application with a funny name[4] and turning it into one of the biggest and most profitable businesses in the history of Computer Science. But let's now examine how PageRank works. + + +[b]Deus ex machina[/b] + Google's co-founders kindly provided a short text summing up their innovative (and perhaps secret) technology[5]. In particular, one paragraph seems to offer a brief and simple explanation of how PageRank works: +[quote] +[i]PageRank relies on the uniquely democratic nature of the web by using its vast link structure as an indicator of an individual page's value. In essence, Google interprets a link from page A to page B as a vote, by page A, for page B. But, Google looks at more than the sheer volume of votes, or links a page receives; it also analyzes the page that casts the vote. Votes cast by pages that are themselves "important", weigh more heavily and help to make other pages "important." +[/i][/quote] + + The first time I read this paragraph, I really experienced a feeling of admiration and ecstasy for these two enlightened minds who decided to bestow their priceless gift on the World Wide Web: a system which gives every page the due importance through a democratic system. Isn't it wonderful? + + Of course there's (much) more to it than a short paragraph, and obviously this [i]explanation[/i] wasn?t enough for those people (webmasters, SEO experts, kids creating their online family albums, etc.), who gradually became more and more interested in knowing further details about the system, hoping that it would have improved their placement in Google's search results. + + Indeed, PageRank contributed to label some sites as [i]important[/i] and gradually the number of ?PageRank 10? websites[6] began to rise, but generally remaining a prerogative of important names of the IT industry (Microsoft, Apple and obviously Google itself, for example). But how did such sites achieve that? How did the green toolbar grow so much for them and not as much for your grandma's personal webpage? + + Soon enough, theories and speculations produced an approximation of the algorithm[7], which is generally thought to be an acceptable model to understand how the system works. + +Take the following equation: + +[i]PR(A) = (1-d) + d (PR(T1)/C(T1) + ... + PR(Tn)/C(Tn))[/i] + +Where: + +[i]PR(A)[/i] - The PageRank value of a certain page +[i]PR(Tn)[/i] - The PageRank value of all pages linking to A +[i]C(Tn)[/i] - The number of links present on page Tn +[i]d[/i](... - "damp factor", thought to be 0.85 + + It now appears clear that the PageRank of page A depends on the number of pages linking to it. Furthermore, important factors taken into consideration are the [i]quality[/i] of such pages (i.e. whether they have a high PageRank themselves or not) and the number of links present on each page, which causes the vote to be [i]divided[/i] equally among them. + + This is, in a nutshell, how PageRank is supposed to work. This is obviously a simple model, and there's actually a more mathematical/probabilistic approach[8] which goes beyond the scope of this article and requires some notions of probability theory. + + +[b]Considerations and opinions[/b] +With this model in mind, it's now possible to understand how (in a very simplified way) Google works: each month Google spiders search the web, and follow links from a page to another, keeping track of the "votes". PageRank is then calculated for every page and updated. This process normally takes a lot of time and, as a matter of fact, PageRank seems to be updated only every 4 months nowadays: these trimester updates normally causes a page to increase its rank by one (or more if you're lucky) level on the bar, or in some cases, lower it in the same way. + + By taking a closer look at the formula proposed above, you'll notice that the maximum value of PR(A) is by no means equal to 10, as it depends on how many pages link to A and how many outbound links there are on such pages. As a matter of fact, people started speculating on the nature of the scale used for PageRank: on the toolbar it ranges from 0 to 10, while in reality a PageRank 10 (take Microsoft.com for example) should correspond to [i]some millions[/i] in practice. + + The most accredited theory is that the PageRank displayed on the green bar is the result of a sort of correspondence between real values and such 0 to 10 scale. Also, people suggested that such scale is in fact a base 5 (or 6) logarithmic scale. This would explain for example why it takes much longer to acquire PageRank 7 from PageRank 6 than acquiring PageRank 3 from PageRank 2. +For the non-mathematical minds, a [i]logarithmic scale[/i] is a succession of numbers NOT incremented by "1" or a fixed quantity, but by an always-growing exponential factor: taking a base-10 logarithmic scale, values of 1,2,3 would correspond respectively to 10^1, 10^2 and 10^3 (10, 100, 1000). + + For a long time Google seemed to use PageRank as an important factor for getting first places in search results, and it's still partly true: if you search for the keyword "Italy" you're likely to find some high PR sites as first results. + + This resulted in all the possible forms of speculations: webmasters started asking money for publishing links on high PR pages, and similarly SEO experts started adopting various infamous tactics to obtain a high PageRank for their customers: this includes, for example, [i]link farms[/i][9]. + +It's now clear that what is was believed to be a solution relying on the [i]uniquely democratic nature of the web[/i] turned out to be a complete failure in that sense, because the very basis of the concept is wrong. Sad, but true, the WWW is by no means democratic at all. + + Another complaint against PageRank was that new sites took ages to acquire [i]respectable[/i] PageRank and therefore appear on the top of search results, no matter how wonderfully they were written. This is still partly true, as anyone can notice by searching Google, but the algorithm itself is continuously being tweaked both for stopping spammers and link farms, and also to favour those sites which provide relevant and appropriate content and are not up to some dodgy trick; I must admit that the situation is gradually getting better. + + +[b]Case Study: ItalySimply.com and h3raLd.com[/b] +I'm now going to discuss my own personal experience with PageRank applied to my two websites, ItalySimply[10] and h3raLd Labs[11]. While the second one is not currently advertised or promoted, because at the moment I don't have enough time for other web developing projects, with the first one I tried to follow a [i]SEO Strategy[/i] trying to acquire PageRank and good placement in search engines. +You can see the result yourself: ItalySimply acquired PageRank 5 and h3raLd PageRank 4: not bad at all considering they are both two relatively new websites, ItalySimply being officially born in August 2004 and h3raLd Labs actually had some serious content from April 2005 on. + + For ItalySimply, I even experienced a period of [i]PageRank 0[/i] which lasted about 2 months: although according to Google all websites should have at least PR1, PR0 is used to penalize some [i]unusual[/i] behaviour which in my case was a [i]302 - Temporarily Moved[/i] redirect which was necessary to redirect users to a subfolder of the server. Later on I learned how this can be interpreted as a dodgy redirection by search engines[12], and why I was penalized by Google for this with a PR0. After noticing the mistakes, I immediately started a strategic link campaign; obtaining links from some good sites (also with high PR) related to mine, and PageRank for ItalySimply began to grow, from 0 to 3, then 4, and just recently 5. + + At the same time, I re-designed h3raLd.com and noticed that it acquired PR1, because it was already listed in Google and didn't get any [i]vote[/i] from other sites. I then decided to put a link to h3raLd Labs on [i]every[/i] page of ItalySimply, which are now ranging from PR5 to PR2. + + The result was an immediate growth of h3raLd.com in terms of PR, which reached an acceptable 4 without [i]any[/i] link swapped, banner displayed on behalf of other sites, or anything as such. + + The difference between the two sites though is much bigger than 1 point on PR, in terms of placement in search results: ItalySimply has some relatively interesting content and various pages, and it ranks good enough on MSN and Yahoo, and even Google, to an extent; h3raLd.com has just 4 pages and doesn't seem to appear at all in search engines, unless you search for something like "h3raLd". Again, this is a proof that nowadays PR doesn't mean immediate placement on the top of search results. + + +[b]Final Considerations[/b] + Although PR is by no means the unique factor to determine search engine placements, it's still certainly important as a [i]co-factor[/i]. As I said, it's still extremely difficult for a new page with low PageRank to place before a high-ranked one. Surely, if I decided to put something more interesting on h3raLd.com I would get better results than buying a new domain and creating a new site: old sites with high PR are still [i]naturally[/i] inclined to rank better than new ones. Got that? Now, all you need to do is buy a really stupid domain name and create some pages for it, then think about it like a bottle of whisky; let it age for a while making it get some respectable rank: when you have a clever idea you'll have your ready-made place to promote it! + +[i]In Google we trust![/i] + + + +[b]Sources and related links:[/b] + +[1] Google Toolbar, [url]http://toolbar.google.com/[/url] +[2] Stanford University, [url]http://www.stanford.edu/[/url] +[3] Lawrence Page and Sergey Brin, "The Anatomy of a Large-Scale Hypertextual Web Search Engine", Computer Science Department, Stanford University, [url]http://www-db.stanford.edu/~backrub/google.html[/url] +[4] Google, [url]http://www.google.com/[/url] +[5] Google Technology, [url]http://www.google.com/technology/[/url] +[6] List of PageRank 10 sites, [url]http://www.searchenginegenie.com/pagerank-10-sites.htm[/url] +[7] Ian Rogers, "The Google Pagerank Algorithm and How It Works", IPR Computing Ltd. [url]http://www.iprcom.com/papers/pagerank/index.html[/url] +[8] Pagerank, Wikipedia page, [url]http://en.wikipedia.org/wiki/Pagerank[/url] +[9] Link Farm, Wikipedia Page, [url]http://en.wikipedia.org/wiki/Link_farm[/url] +[10] ItalySimply - Italy Real Estate Services and Relocation Help, [url]http://www.italysimply.com/[/url] +[11] h3raLd Labs - Freelance Web Development, [url]http://www.h3rald.com/[/url] +[12] "The Rundown on 301 and 302 redirects", September 10th, 2004, [url]http://www.rankforsales.com/seo-articles/301-and-302-domain-name-redirects.html[/url]
M content/articles/perfect-browser.bbcodecontent/articles/perfect-browser.bbcode

@@ -11,189 +11,189 @@

type: article toc: true ----- -So you finally decided to say goodbye to Internet Explorer, but now you feel lost in a multitude of browsers that all claim to be faster, more customizable, safer, or simply better than IE. Are they telling the truth? If so, which one is the perfect browser?[b]Point of view, clarifications and scope of this article[/b] - -So you're reading this article hoping to find out which is the [i]best[/i] browser ever made? Well, you're wasting your time. There's no such thing as [i]The Perfect Browser[/i], despite the various attempts made by Mozilla Foundation, Opera, Microsoft and others. After trying out nearly all of the major browsers currently available, I came to this conclusion: the perfect browser is a relative term, dependent on the particular person you ask, if it exists at all. Contrary to popular belief, I myself am not a 100% Firefox freak, and I do not consider myself biased to the point of going around shouting that Firefox is the [i]"best browser ever made."[/i] Granted, I do do that sometimes, but let's put my personal bias into some sort of perspective: - -Mozilla Firefox represents the most remarkable effort to create a [i]perfect browser[/i], but in some cases, and for some particular tasks, it may not be considered optimal by [i]some people[/i]. - -Having said this, I hope I can convince you that I'm not [i]that[/i] biased toward Mozilla's leading product, even if, as a matter of fact, nearly all the programs mentioned in this article are based on the Mozilla ('Gecko'? No, not quite... [1]) engine or a derivative. - -Originally, I was going to write a comparative review of Opera and Firefox, but in the end, I chose to broaden the scope a bit to include other products as well. There are already many articles and blog posts which have compared the two, either favoring Opera [2] or Firefox [3]. I also decided not to review browsers for platforms other than Windows, so there won't be any mention of Konqueror, Galeon, Safari, Camino, etc., which, although they are all interesting alternatives, go beyond the purpose of this article, which is to offer [i]Windows users[/i] a small selection of alternative browsers. - - -[b]Alternative Browsers[/b] - -There are literally dozens of [i]alternative[/i] browsers around. There are lists available online, and perhaps the most famous one is on Evolt.org [4], which can be considered comprehensive and accurate. Various statistics are available for objective comparisons of all the major browsers, for regarding for example speed [5] and overall performance and functionality [6], but even if such analyses are accurate, they are often not enough to fully evaluate a browser. - -In the following sections, we'll examine the following four free browsers, which are considered to be the most obvious alternatives to Internet Explorer. - -- Firefox -- Opera -- K-meleon -- Netscape - -I deliberately chose not to spend time on Slim Browser [7], Maxthon [8] (previously known as MyIE), or AvantBrowser [9], which are basically extensions built on top of Internet Explorer to add functionality to it. I also left out Mozilla's SeaMonkey [10], partly because of its alpha status, and partly because it is being marketed as an Internet Suite rather than just a web browser. - - -[b]Why IE is 'bad'[/b] - -'IE is crap', 'you MUST NOT use Internet Explorer', 'Internet Explorer is for n00bs'... how many times have you heard or read this? Some people tend to degrade Internet Explorer all the time, and the funny thing is, if one were to ask 'Why so?', approximately 40% would be unable to give a reply any more concrete than 'because Firefox is simply better' or 'because Opera owns!' or '[insert browser name here] simply can't be compared to IE!'. - -Now, all this may be true to a certain extent, but it certainly will not convince a person to switch browsers, and may even have the opposite effect: people will keep using IE no matter what! This is bad for the alternative browser market in general. It still looks like IE is used by 90% of people on the Internet and this will not change simply by telling all those people that they are "dumb" for using IE. There are sites whose only purpose is to make people abandon IE [11], but they discuss objective fact instead of opinionated propaganda. - -Personally, I decided not to use IE anymore because: - -- It's slow on my computer (which is old, as some of you may know) -- It's less secure than other browsers, and more vulnerable to malicious software and attacks, simply because it's used by the most people - that makes the BEST option for those who actually enjoy exploiting vulnerabilities, because it's not frequently patched [12]. -- It's not very customizable -- It doesn't have (or support) additional features -- It deliberately breaks web standards or creates its own, which makes things difficult for web developers -- It's normally behind the supported technologies -- I hate the idea of using a proprietary browser imposed by Microsoft - -I could discuss each one of these reasons in more detail, but that would be an article in and of itself. - - -[b]Firefox[/b] - -The famous and multi-awarded Firefox [13] browser is now approaching the 1.5 release, and it's constantly improving both in security and features. Firefox quickly became Mozilla's leading product, ahead of the Mozilla Suite (which includes a browser, HTML editor, email client and address book), which is now being rebranded as [i]SeaMonkey[/i] [10]. - -On the other hand, Firefox is simply a web browser, and doesn't offer an email client or html editor anymore, which was obviously a choice made to improve the performance of the application and engine, which was normally quite bulky, especially on old hardware. This was a wise decision, and Mozilla/Netscape enthusiasts quite liked the idea of having a lightweight browser rather than a slow-performing suite of applications. However, someone who uses both Firefox and ThunderBird (Mozilla's standalone email client) will end up using nearly twice the amount of memory used by SeaMonkey alone: this is because you now have two separate applications, so you have to load the rendering engine [i]twice[/i]. - -With Firefox, the Mozilla Foundation aimed to create a browser which would satisfy web developers by supporting the latest web standards and technologies, while at the same time offering new and interesting functionalities to end users. - -The Fox is not ideal for all types of users, but a constantly growing community of enthusiasts [14] is trying literally every way possible to promote it by targeting virtually all kind of audiences. - -In addition, its design makes it mostly secure; even if a few bugs slip by, they are not design flaws, merely implementation issues. When a bug is found, the Firefox development community works quickly to fix it, and usually has an excellent track record regarding that. However, the most important aspect of Firefox's security (on Windows, that is), is that it is not integrated into the system like IE is. Remote attacks on a Windows PC are mostly executed through IE, and the insecure design causes it to have unfixed critical bugs after five years of non-development, because Microsoft tends to shove bugs under the carpet whenever possible; half year, one year or even older unfixed bugs are not unheard of. - -To make it more readily apparent, statistics [12] [15] say that the maximum time IE is [i]not[/i] in danger from to an unpatched vulnerability is 7 days, while for Firefox, it is well over 200. - -Another of Firefox's strong points is the ability to add various [i]extensions[/i] and [i]themes[/i] for all kind of necessities: improving web searches, getting localized weather forecasts, playing music, blocking adverts, tweaking webpages, composing webpages, etc. -Firefox is [i]extremely[/i] customizable, and extensions don't affect the overall browser performance, as the actual overhead is minimal - this has been tested on a Pentium 2, so you can believe me. - -This is all very well and good, but the ability to customize a browser is not considered a good thing by all. This is because it tends to become a necessity - if Firefox didn't have extensions, it would still be better than IE for security and some features, but not amazingly so. Opera users found that Firefox without extensions could not match up to the features in Opera. - -After asking some IE users, it seems that Firefox can appear too [i]geeky[/i] for the average user who only wants to surf the Net and doesn't really care about web standards and browser customization. After all, a lot of people may decide that they don't want to spend their time tweaking and personalizing a program to make it fit their needs, as they find it annoying. - -Finally, a slightly unpleasant thing about extensions is that almost every time a major update to the browser comes out, some of the installed extensions become unusable until their developers update them. In order to solve this problem, Mozilla Development Team is releasing public alphas and betas of every major milestone, to allow third party extension developers update their extensions in time for the stable release. As a consequence, to avoid trouble with extensions, I suggest non-developers stick with the stable releases and avoid updating to alpha or beta versions. - -Anyhow, all those people who don't like having to play around with extensions should just use Opera. - - -[b]Opera[/b] - -A few years ago I came across Opera's site [16], and I downloaded their [i]free[/i] browser to try it out. At the time, Firefox wasn't a big thing, and the Mozilla/Netscape suites were too bulky for my liking, so I was looking for something lightweight and fast. That's the reason why the Opera team has always used the slogan [i]'the fastest browser on Earth'[/i] to describe their product, and they seem to be right[5]. - -I actually didn't like it at first, because - at the time - it didn't offer anything better than IE [i]and[/i] the company was more or less silently asking people to [i]pay[/i] them to get rid of the annoying ads the browser displayed on the interface. Browsers are nothing but software, however, and I think the reason why they are (nearly) all free is because IE comes free with every Windows installation. - -Finally, Opera agreed with that same philosophy: while celebrating their 10 years of existence, Opera Software ASA decided initially to give away license codes to get rid of the ads, and then to finally stop annoying their users with ad banners and cut their licensing fee altogether [17]. Obviously, at that point, I was really tempted to give Opera another chance. - -I was impressed, indeed. Opera is actually a nice piece of software. It's really fast in rendering pages, it displays them correctly, respects web standards (they improved this quite a bit over the years), and it's fast even when pressing the Back and Forward buttons. Its interface is probably the best and cleanest ever made; it's easy to use even for novices even if some things (like keyboard shortcuts) are different. - -Speaking of features, it offers: - -- Tabbed browsing and integrated search like Firefox (and IE7) -- A truly remarkable technology able to make [i]any webpage[/i] fit a window by zooming images in and out automatically -- A complete and fully working mail client -- An address book -- The ability to save browsing sessions -- Easily re-open closed tabs -- Skins -- A [i]magic wand[/i] to fill in forms and logins automatically -- A built-in scratchpad/notepad -- Voice integration (yes, you can even speak to your browser now, imagine that!) -- SVG support - not that it really matters for now, but it's a cool thing to say nowadays - -All of this is included in an application which is - to my eyes - more lightweight than Firefox. But it's not perfect yet. Why? The reason is simple. It allows a certain degree of customization, but doesn't have 'extensions'. One thing is true though, as someone pointed out [18]: in most cases, for 'average use', Opera doesn't need extensions, because it already offers quite a lot of functionality that doesn't need to be extended. - -It also happens that the features listed above are the most commonly requested by the majority of users, and that was, in my opinion, a clever marketing move. - -There are still two things about Opera that put me off from using it, however. One is the lack of a built in [i]"I'm feeling lucky"[/i] feature in the taskbar - even though there is a workaround [19]. The other is more serious, and it concerns compatibility. Even though the people at Opera Software are struggling more than ever to make it compatible with every site and technology - full Gmail support has recently been added - Opera cannot render some sites correctly. The most blatant example is Writely.com [20], which is a site offering a free ajax-based online word processor. It seems that Opera doesn't like Ajax too much for now. - - -[b]K-meleon[/b] - -Now let's talk about a piece of software which appears to have been forgotten by the majority of people in the world: K-meleon [21], a Windows-only, Mozilla-based browser. It is a prime example of how good software can be ignored by the masses, for three main reasons: - -- It wasn't conceived with the [i]average user[/i] in mind -- There's another browser using the same technology which is considered to be better -- It apparently doesn't offer anything new or stimulating - -I would define it as a browser for true geeks. To unlock its secrets you need to play around with configuration files, hundreds of hidden settings, macros, and menus. However, it can be very gratifying for people who enjoy this sort of thing. There's just one little problem with it: people who enjoy tweaking an application as much as K-meleon needs to be tweaked normally prefer a more customizable operating system altogether, but the browser is strictly [i]Windows only[/i]. - -I like it even if I don't have the time to play around with it as much as I would like to, and I think it is useful for some specific tasks. In particular, I found myself using it to upload pictures when updating one of my sites, and similarly repetitive jobs where all you need is a browser able to render a page quickly without using too much memory or CPU cycles. -K-meleon is built for Windows, and is therefore optimized for it, perhaps even more so than Firefox, and it's arguably nearly as fast as Opera. As far as I'm concerned, it's more lightweight than Opera and this makes it ideal as a [i]secondary browser[/i] to run together with Firefox or Opera. Why would you want to do that? Well, suppose you have to check two different GMail accounts and reply to emails here and there: using a secondary browser to keep you logged in to another Google account is better than having to login and logout repeatedly. - -Something amusing (or maybe not) about K-meleon: it seems to have no security advisories [22] on Secunia as only one was submitted and quickly patched in 2004, and that was all. The impression is that the browser is just not very popular. - - -[b]Netscape[/b] - -Netscape [23] is perhaps one of the oldest browsers that is still alive. It used to be a full-on web suite (basically a rebrand of the Mozilla Suite), and thus featured a web browser (Netscape Navigator), a WYSIWYG HTML editor, a mail client, and an address book. It was never lightweight (due to all the applications bundled together), but it was a true all-in-one Internet suite, at the time. - -Nowadays people prefer having a separate email client or check their email online. They rarely need an address book, since email addresses and contact details are normally stored automatically by the mail client/web application. The average user probably won't use the HTML editor, and the web developer will choose a more professional/optimal solution than Netscape/Mozilla Composer. - -Furthermore, Mozilla [i]suddenly[/i] started changing its roadmap, heavily marketing a standalone browser rather than an application suite, so people at Netscape thought it was the right time to do the same. Netscape now offers only a browser. It is based on Firefox, but has a lot of additional features. - -When the Netscape browser was launched in May 2005, it was supposed to represent a [i]new standard[/i] for online security, but various vulnerabilities[24] were found just after release, which caused it to gain the totally opposite reputation. Everything was fixed quickly enough, but people weren't impressed by that (myself included). Furthermore, another incident occurred a few days later. Microsoft advised its customers to uninstall Netscape 8 from their system [25], because after installing it on Windows, Internet Explorer inexplicably became unable to render XML pages, displaying a blank page instead! - -Apart from these odd events - which indeed half ruined Netscape's reputation - the application itself isn't that bad; it's based on Firefox, after all. - -Differences from Mozilla's browser are obvious immediately after installation: Netscape opted for a sort of online install, in the sense that the installer, which is downloadable from the official site, starts the download of the actual components and then installs them. In the meantime, slides specially tailored for end users appear on the screen, introducing the main browser features. These slides provide entertaining and informative viewing for the user. - -The browser is shipped with two default themes, and the interface itself is rearranged: search bar on the left, four weird buttons on the right, and a magic [i]multibar[/i] underneath. The multibar addresses a common issue with Firefox and IE - if you keep installing extensions and toolbars, the window used to display the page eventually becomes smaller. This new feature allows users to choose up to 10 different bars which can be selected in rotation with a single click. - -The real innovation, however, is the Security Center. It seems that these two magic words are now heavily used everywhere, as if they have some mystical power to reassure users and make them feel protected. In reality, the security center only tells you whether or not you can trust a site, based on Netscape's list of trusted sites or your preferences, and it automatically adjusts the browser security settings accordingly. - -[i]But isn't Netscape a Firefox based browser?[/i] - -Yes and no. Netscape can render using either Mozilla's engine or Internet Explorer's! Good or bad? Well, probably good in some cases, but rather annoying sometimes as it's [i]too smart[/i]: I tried visiting Microsoft.com and without doing anything the rendering engine switched to IE automatically! It basically tries to guess which browser is better to render certain pages, and this can be problematic, especially if it renders as IE any page which uses ActiveX technology. This short term gain - [i]total[/i] compatibility - is achieved by surrendering to IE flaws and maybe even giving no incentive for developers to abandon an IE-oriented web development: [i]'If Netscape can use an IE engine, why should I code using web standards?'[/i] - -Fortunately, despite the effort made by the developers and marketing experts at Netscape Corp., the new browser is not convincing enough. It is also clearly heavier on resources than Firefox; while I was just surfing it started claiming more than 70MB of RAM, while Firefox normally uses half the amount. Personally, I think it's an interesting attempt to create a [i]perfect[/i] browser, and it enriches Firefox with some new features which either are normally not available or require extensions, but it's not for me. - - -[b]Summing up[/b] - -As I said at the beginning (ruining all the suspense), there's no perfect browser; there's nothing universally accepted by everyone because everyone does different things. Personally, I'd advise using Firefox for general use, because it offers excellent compatibility, security and features. - -On the other hand, if you don't like extensions and you just need something to browse the Internet quickly, without the hassle of having to download additional components, go for Opera, although there are still some compatibility issues with it that need to be fixed. - -For Windows-based geeks, I'd recommend K-meleon: it's fast, simple, effective, and gives you plenty of things to play with to tweak almost every part of the browser. The project is not dead; a community of people are using it and providing patches, even if the leading developer is not able to do so. - -Netscape still needs some work, but it could be useful for quickly viewing a site on Firefox and IE, for example. It's also a little more user-friendly than Firefox. Those who are already accustomed to Firefox, however, are more likely to stick with it. - -Again, depending on what you do, what your needs are, and even your mood, one browser can be better than others. Personally, I use a variety of browsers: Firefox mostly, but K-meleon and Opera as well, and I like this combination as my [i]perfect browser[/i]. What about you? - - -[b]Credits[/b] -Thanks to comet for providing appropriate thoughts and opinions regarding the browsers' security. - -[b]Notes and Resources[/b] -[small] -[1] Clarification about the 'Gecko' engine: [url]http://www.mozilla.org/newlayout/gecko.html[/url] -[2] 'One Week with Firefox, its Extensions and Opera', OsNews.com, by Mart'n Marconcini [url]http://www.osnews.com/story.php?news_id=7562[/url] -[3] 'Firefox 1.5 vs Opera 8.5', SonSpring Journal, 09/22/2005 - [url]http://sonspring.com/journal/firefox-15-vs-opera-85[/url] -[4] Evolt.com, Browser list - [url]http://browsers.evolt.org/[/url] -[5] HowToCreate.com - Browser Speed Analysis -[url]http://www.howtocreate.co.uk/browserSpeed.html#winspeed[/url] -[6] 'Comparison of web browsers', Wikipedia page - [url]http://en.wikipedia.org/wiki/Comparison_of_web_browsers[/url] -[7] Slim Browser, Home Page - [url]http://www.flashpeak.com/sbrowser/[/url] -[8] Maxthon, Home Page - [url]http://www.maxthon.com/[/url] -[9] AvantBrowser, Home Page - [url]http://www.avantbrowser.com/[/url] -[10] SeaMonkey Project, Hope Page - [url]http://www.mozilla.org/projects/seamonkey/[/url] -[11] StopIE.com - [url]http://www.stopie.com/[/url], BrowseHappy.com - [url]http://browsehappy.com/[/url] -[12] Secunia vulnerabilities, Internet Explorer - [url]http://secunia.com/product/11/[/url] -[13] Firefox Home Page - [url]http://www.mozilla.org/products/firefox/[/url] -[14] Spread Firefox website - [url]http://www.spreadfirefox.com/[/url] -[15] Secunia vulnerabilities, Mozilla Firefox - [url]http://secunia.com/product/4227/[/url] -[16] Opera Browser, Official Website - [url]http://www.opera.com/[/url] -[17] Opera becomes free, webpage - [url]http://www.opera.com/free[/url] -[18] Opera and Firefox extensions - [url]http://virtuelvis.com/archives/2005/01/opera-and-firefox-extensions[/url] -[19] How to add 'I'm feeling lucky' to Opera - [url]http://my.opera.com/community/forums/topic.dml?id=63620[/url] -[20] Writely.com, free online word processor - [url]http://www.writely.com/[/url] -[21] K-meleon Project, Sourceforge - [url]http://kmeleon.sourceforge.net/[/url] -[22] Secunia vulnerabilities, K-meleon - [url]http://secunia.com/product/3684/[/url] -[23] Netscape Browser, Home Page - [url]http://browser.netscape.com/ns8/[/url] -[24] 'Netscape fixes holes in 'security' browser', Zdnet - [url]http://www.zdnet.com.au/news/security/0,2000061744,39192767,00.htm[/url] -[25] Netscape 8 'breaks' IE, Zdnet - [url]http://news.zdnet.co.uk/software/applications/0,39020384,39200178,00.htm[/url] +So you finally decided to say goodbye to Internet Explorer, but now you feel lost in a multitude of browsers that all claim to be faster, more customizable, safer, or simply better than IE. Are they telling the truth? If so, which one is the perfect browser?[b]Point of view, clarifications and scope of this article[/b] + +So you're reading this article hoping to find out which is the [i]best[/i] browser ever made? Well, you're wasting your time. There's no such thing as [i]The Perfect Browser[/i], despite the various attempts made by Mozilla Foundation, Opera, Microsoft and others. After trying out nearly all of the major browsers currently available, I came to this conclusion: the perfect browser is a relative term, dependent on the particular person you ask, if it exists at all. Contrary to popular belief, I myself am not a 100% Firefox freak, and I do not consider myself biased to the point of going around shouting that Firefox is the [i]"best browser ever made."[/i] Granted, I do do that sometimes, but let's put my personal bias into some sort of perspective: + +Mozilla Firefox represents the most remarkable effort to create a [i]perfect browser[/i], but in some cases, and for some particular tasks, it may not be considered optimal by [i]some people[/i]. + +Having said this, I hope I can convince you that I'm not [i]that[/i] biased toward Mozilla's leading product, even if, as a matter of fact, nearly all the programs mentioned in this article are based on the Mozilla ('Gecko'? No, not quite... [1]) engine or a derivative. + +Originally, I was going to write a comparative review of Opera and Firefox, but in the end, I chose to broaden the scope a bit to include other products as well. There are already many articles and blog posts which have compared the two, either favoring Opera [2] or Firefox [3]. I also decided not to review browsers for platforms other than Windows, so there won't be any mention of Konqueror, Galeon, Safari, Camino, etc., which, although they are all interesting alternatives, go beyond the purpose of this article, which is to offer [i]Windows users[/i] a small selection of alternative browsers. + + +[b]Alternative Browsers[/b] + +There are literally dozens of [i]alternative[/i] browsers around. There are lists available online, and perhaps the most famous one is on Evolt.org [4], which can be considered comprehensive and accurate. Various statistics are available for objective comparisons of all the major browsers, for regarding for example speed [5] and overall performance and functionality [6], but even if such analyses are accurate, they are often not enough to fully evaluate a browser. + +In the following sections, we'll examine the following four free browsers, which are considered to be the most obvious alternatives to Internet Explorer. + +- Firefox +- Opera +- K-meleon +- Netscape + +I deliberately chose not to spend time on Slim Browser [7], Maxthon [8] (previously known as MyIE), or AvantBrowser [9], which are basically extensions built on top of Internet Explorer to add functionality to it. I also left out Mozilla's SeaMonkey [10], partly because of its alpha status, and partly because it is being marketed as an Internet Suite rather than just a web browser. + + +[b]Why IE is 'bad'[/b] + +'IE is crap', 'you MUST NOT use Internet Explorer', 'Internet Explorer is for n00bs'... how many times have you heard or read this? Some people tend to degrade Internet Explorer all the time, and the funny thing is, if one were to ask 'Why so?', approximately 40% would be unable to give a reply any more concrete than 'because Firefox is simply better' or 'because Opera owns!' or '[insert browser name here] simply can't be compared to IE!'. + +Now, all this may be true to a certain extent, but it certainly will not convince a person to switch browsers, and may even have the opposite effect: people will keep using IE no matter what! This is bad for the alternative browser market in general. It still looks like IE is used by 90% of people on the Internet and this will not change simply by telling all those people that they are "dumb" for using IE. There are sites whose only purpose is to make people abandon IE [11], but they discuss objective fact instead of opinionated propaganda. + +Personally, I decided not to use IE anymore because: + +- It's slow on my computer (which is old, as some of you may know) +- It's less secure than other browsers, and more vulnerable to malicious software and attacks, simply because it's used by the most people - that makes the BEST option for those who actually enjoy exploiting vulnerabilities, because it's not frequently patched [12]. +- It's not very customizable +- It doesn't have (or support) additional features +- It deliberately breaks web standards or creates its own, which makes things difficult for web developers +- It's normally behind the supported technologies +- I hate the idea of using a proprietary browser imposed by Microsoft + +I could discuss each one of these reasons in more detail, but that would be an article in and of itself. + + +[b]Firefox[/b] + +The famous and multi-awarded Firefox [13] browser is now approaching the 1.5 release, and it's constantly improving both in security and features. Firefox quickly became Mozilla's leading product, ahead of the Mozilla Suite (which includes a browser, HTML editor, email client and address book), which is now being rebranded as [i]SeaMonkey[/i] [10]. + +On the other hand, Firefox is simply a web browser, and doesn't offer an email client or html editor anymore, which was obviously a choice made to improve the performance of the application and engine, which was normally quite bulky, especially on old hardware. This was a wise decision, and Mozilla/Netscape enthusiasts quite liked the idea of having a lightweight browser rather than a slow-performing suite of applications. However, someone who uses both Firefox and ThunderBird (Mozilla's standalone email client) will end up using nearly twice the amount of memory used by SeaMonkey alone: this is because you now have two separate applications, so you have to load the rendering engine [i]twice[/i]. + +With Firefox, the Mozilla Foundation aimed to create a browser which would satisfy web developers by supporting the latest web standards and technologies, while at the same time offering new and interesting functionalities to end users. + +The Fox is not ideal for all types of users, but a constantly growing community of enthusiasts [14] is trying literally every way possible to promote it by targeting virtually all kind of audiences. + +In addition, its design makes it mostly secure; even if a few bugs slip by, they are not design flaws, merely implementation issues. When a bug is found, the Firefox development community works quickly to fix it, and usually has an excellent track record regarding that. However, the most important aspect of Firefox's security (on Windows, that is), is that it is not integrated into the system like IE is. Remote attacks on a Windows PC are mostly executed through IE, and the insecure design causes it to have unfixed critical bugs after five years of non-development, because Microsoft tends to shove bugs under the carpet whenever possible; half year, one year or even older unfixed bugs are not unheard of. + +To make it more readily apparent, statistics [12] [15] say that the maximum time IE is [i]not[/i] in danger from to an unpatched vulnerability is 7 days, while for Firefox, it is well over 200. + +Another of Firefox's strong points is the ability to add various [i]extensions[/i] and [i]themes[/i] for all kind of necessities: improving web searches, getting localized weather forecasts, playing music, blocking adverts, tweaking webpages, composing webpages, etc. +Firefox is [i]extremely[/i] customizable, and extensions don't affect the overall browser performance, as the actual overhead is minimal - this has been tested on a Pentium 2, so you can believe me. + +This is all very well and good, but the ability to customize a browser is not considered a good thing by all. This is because it tends to become a necessity - if Firefox didn't have extensions, it would still be better than IE for security and some features, but not amazingly so. Opera users found that Firefox without extensions could not match up to the features in Opera. + +After asking some IE users, it seems that Firefox can appear too [i]geeky[/i] for the average user who only wants to surf the Net and doesn't really care about web standards and browser customization. After all, a lot of people may decide that they don't want to spend their time tweaking and personalizing a program to make it fit their needs, as they find it annoying. + +Finally, a slightly unpleasant thing about extensions is that almost every time a major update to the browser comes out, some of the installed extensions become unusable until their developers update them. In order to solve this problem, Mozilla Development Team is releasing public alphas and betas of every major milestone, to allow third party extension developers update their extensions in time for the stable release. As a consequence, to avoid trouble with extensions, I suggest non-developers stick with the stable releases and avoid updating to alpha or beta versions. + +Anyhow, all those people who don't like having to play around with extensions should just use Opera. + + +[b]Opera[/b] + +A few years ago I came across Opera's site [16], and I downloaded their [i]free[/i] browser to try it out. At the time, Firefox wasn't a big thing, and the Mozilla/Netscape suites were too bulky for my liking, so I was looking for something lightweight and fast. That's the reason why the Opera team has always used the slogan [i]'the fastest browser on Earth'[/i] to describe their product, and they seem to be right[5]. + +I actually didn't like it at first, because - at the time - it didn't offer anything better than IE [i]and[/i] the company was more or less silently asking people to [i]pay[/i] them to get rid of the annoying ads the browser displayed on the interface. Browsers are nothing but software, however, and I think the reason why they are (nearly) all free is because IE comes free with every Windows installation. + +Finally, Opera agreed with that same philosophy: while celebrating their 10 years of existence, Opera Software ASA decided initially to give away license codes to get rid of the ads, and then to finally stop annoying their users with ad banners and cut their licensing fee altogether [17]. Obviously, at that point, I was really tempted to give Opera another chance. + +I was impressed, indeed. Opera is actually a nice piece of software. It's really fast in rendering pages, it displays them correctly, respects web standards (they improved this quite a bit over the years), and it's fast even when pressing the Back and Forward buttons. Its interface is probably the best and cleanest ever made; it's easy to use even for novices even if some things (like keyboard shortcuts) are different. + +Speaking of features, it offers: + +- Tabbed browsing and integrated search like Firefox (and IE7) +- A truly remarkable technology able to make [i]any webpage[/i] fit a window by zooming images in and out automatically +- A complete and fully working mail client +- An address book +- The ability to save browsing sessions +- Easily re-open closed tabs +- Skins +- A [i]magic wand[/i] to fill in forms and logins automatically +- A built-in scratchpad/notepad +- Voice integration (yes, you can even speak to your browser now, imagine that!) +- SVG support - not that it really matters for now, but it's a cool thing to say nowadays + +All of this is included in an application which is - to my eyes - more lightweight than Firefox. But it's not perfect yet. Why? The reason is simple. It allows a certain degree of customization, but doesn't have 'extensions'. One thing is true though, as someone pointed out [18]: in most cases, for 'average use', Opera doesn't need extensions, because it already offers quite a lot of functionality that doesn't need to be extended. + +It also happens that the features listed above are the most commonly requested by the majority of users, and that was, in my opinion, a clever marketing move. + +There are still two things about Opera that put me off from using it, however. One is the lack of a built in [i]"I'm feeling lucky"[/i] feature in the taskbar - even though there is a workaround [19]. The other is more serious, and it concerns compatibility. Even though the people at Opera Software are struggling more than ever to make it compatible with every site and technology - full Gmail support has recently been added - Opera cannot render some sites correctly. The most blatant example is Writely.com [20], which is a site offering a free ajax-based online word processor. It seems that Opera doesn't like Ajax too much for now. + + +[b]K-meleon[/b] + +Now let's talk about a piece of software which appears to have been forgotten by the majority of people in the world: K-meleon [21], a Windows-only, Mozilla-based browser. It is a prime example of how good software can be ignored by the masses, for three main reasons: + +- It wasn't conceived with the [i]average user[/i] in mind +- There's another browser using the same technology which is considered to be better +- It apparently doesn't offer anything new or stimulating + +I would define it as a browser for true geeks. To unlock its secrets you need to play around with configuration files, hundreds of hidden settings, macros, and menus. However, it can be very gratifying for people who enjoy this sort of thing. There's just one little problem with it: people who enjoy tweaking an application as much as K-meleon needs to be tweaked normally prefer a more customizable operating system altogether, but the browser is strictly [i]Windows only[/i]. + +I like it even if I don't have the time to play around with it as much as I would like to, and I think it is useful for some specific tasks. In particular, I found myself using it to upload pictures when updating one of my sites, and similarly repetitive jobs where all you need is a browser able to render a page quickly without using too much memory or CPU cycles. +K-meleon is built for Windows, and is therefore optimized for it, perhaps even more so than Firefox, and it's arguably nearly as fast as Opera. As far as I'm concerned, it's more lightweight than Opera and this makes it ideal as a [i]secondary browser[/i] to run together with Firefox or Opera. Why would you want to do that? Well, suppose you have to check two different GMail accounts and reply to emails here and there: using a secondary browser to keep you logged in to another Google account is better than having to login and logout repeatedly. + +Something amusing (or maybe not) about K-meleon: it seems to have no security advisories [22] on Secunia as only one was submitted and quickly patched in 2004, and that was all. The impression is that the browser is just not very popular. + + +[b]Netscape[/b] + +Netscape [23] is perhaps one of the oldest browsers that is still alive. It used to be a full-on web suite (basically a rebrand of the Mozilla Suite), and thus featured a web browser (Netscape Navigator), a WYSIWYG HTML editor, a mail client, and an address book. It was never lightweight (due to all the applications bundled together), but it was a true all-in-one Internet suite, at the time. + +Nowadays people prefer having a separate email client or check their email online. They rarely need an address book, since email addresses and contact details are normally stored automatically by the mail client/web application. The average user probably won't use the HTML editor, and the web developer will choose a more professional/optimal solution than Netscape/Mozilla Composer. + +Furthermore, Mozilla [i]suddenly[/i] started changing its roadmap, heavily marketing a standalone browser rather than an application suite, so people at Netscape thought it was the right time to do the same. Netscape now offers only a browser. It is based on Firefox, but has a lot of additional features. + +When the Netscape browser was launched in May 2005, it was supposed to represent a [i]new standard[/i] for online security, but various vulnerabilities[24] were found just after release, which caused it to gain the totally opposite reputation. Everything was fixed quickly enough, but people weren't impressed by that (myself included). Furthermore, another incident occurred a few days later. Microsoft advised its customers to uninstall Netscape 8 from their system [25], because after installing it on Windows, Internet Explorer inexplicably became unable to render XML pages, displaying a blank page instead! + +Apart from these odd events - which indeed half ruined Netscape's reputation - the application itself isn't that bad; it's based on Firefox, after all. + +Differences from Mozilla's browser are obvious immediately after installation: Netscape opted for a sort of online install, in the sense that the installer, which is downloadable from the official site, starts the download of the actual components and then installs them. In the meantime, slides specially tailored for end users appear on the screen, introducing the main browser features. These slides provide entertaining and informative viewing for the user. + +The browser is shipped with two default themes, and the interface itself is rearranged: search bar on the left, four weird buttons on the right, and a magic [i]multibar[/i] underneath. The multibar addresses a common issue with Firefox and IE - if you keep installing extensions and toolbars, the window used to display the page eventually becomes smaller. This new feature allows users to choose up to 10 different bars which can be selected in rotation with a single click. + +The real innovation, however, is the Security Center. It seems that these two magic words are now heavily used everywhere, as if they have some mystical power to reassure users and make them feel protected. In reality, the security center only tells you whether or not you can trust a site, based on Netscape's list of trusted sites or your preferences, and it automatically adjusts the browser security settings accordingly. + +[i]But isn't Netscape a Firefox based browser?[/i] + +Yes and no. Netscape can render using either Mozilla's engine or Internet Explorer's! Good or bad? Well, probably good in some cases, but rather annoying sometimes as it's [i]too smart[/i]: I tried visiting Microsoft.com and without doing anything the rendering engine switched to IE automatically! It basically tries to guess which browser is better to render certain pages, and this can be problematic, especially if it renders as IE any page which uses ActiveX technology. This short term gain - [i]total[/i] compatibility - is achieved by surrendering to IE flaws and maybe even giving no incentive for developers to abandon an IE-oriented web development: [i]'If Netscape can use an IE engine, why should I code using web standards?'[/i] + +Fortunately, despite the effort made by the developers and marketing experts at Netscape Corp., the new browser is not convincing enough. It is also clearly heavier on resources than Firefox; while I was just surfing it started claiming more than 70MB of RAM, while Firefox normally uses half the amount. Personally, I think it's an interesting attempt to create a [i]perfect[/i] browser, and it enriches Firefox with some new features which either are normally not available or require extensions, but it's not for me. + + +[b]Summing up[/b] + +As I said at the beginning (ruining all the suspense), there's no perfect browser; there's nothing universally accepted by everyone because everyone does different things. Personally, I'd advise using Firefox for general use, because it offers excellent compatibility, security and features. + +On the other hand, if you don't like extensions and you just need something to browse the Internet quickly, without the hassle of having to download additional components, go for Opera, although there are still some compatibility issues with it that need to be fixed. + +For Windows-based geeks, I'd recommend K-meleon: it's fast, simple, effective, and gives you plenty of things to play with to tweak almost every part of the browser. The project is not dead; a community of people are using it and providing patches, even if the leading developer is not able to do so. + +Netscape still needs some work, but it could be useful for quickly viewing a site on Firefox and IE, for example. It's also a little more user-friendly than Firefox. Those who are already accustomed to Firefox, however, are more likely to stick with it. + +Again, depending on what you do, what your needs are, and even your mood, one browser can be better than others. Personally, I use a variety of browsers: Firefox mostly, but K-meleon and Opera as well, and I like this combination as my [i]perfect browser[/i]. What about you? + + +[b]Credits[/b] +Thanks to comet for providing appropriate thoughts and opinions regarding the browsers' security. + +[b]Notes and Resources[/b] +[small] +[1] Clarification about the 'Gecko' engine: [url]http://www.mozilla.org/newlayout/gecko.html[/url] +[2] 'One Week with Firefox, its Extensions and Opera', OsNews.com, by Mart'n Marconcini [url]http://www.osnews.com/story.php?news_id=7562[/url] +[3] 'Firefox 1.5 vs Opera 8.5', SonSpring Journal, 09/22/2005 - [url]http://sonspring.com/journal/firefox-15-vs-opera-85[/url] +[4] Evolt.com, Browser list - [url]http://browsers.evolt.org/[/url] +[5] HowToCreate.com - Browser Speed Analysis -[url]http://www.howtocreate.co.uk/browserSpeed.html#winspeed[/url] +[6] 'Comparison of web browsers', Wikipedia page - [url]http://en.wikipedia.org/wiki/Comparison_of_web_browsers[/url] +[7] Slim Browser, Home Page - [url]http://www.flashpeak.com/sbrowser/[/url] +[8] Maxthon, Home Page - [url]http://www.maxthon.com/[/url] +[9] AvantBrowser, Home Page - [url]http://www.avantbrowser.com/[/url] +[10] SeaMonkey Project, Hope Page - [url]http://www.mozilla.org/projects/seamonkey/[/url] +[11] StopIE.com - [url]http://www.stopie.com/[/url], BrowseHappy.com - [url]http://browsehappy.com/[/url] +[12] Secunia vulnerabilities, Internet Explorer - [url]http://secunia.com/product/11/[/url] +[13] Firefox Home Page - [url]http://www.mozilla.org/products/firefox/[/url] +[14] Spread Firefox website - [url]http://www.spreadfirefox.com/[/url] +[15] Secunia vulnerabilities, Mozilla Firefox - [url]http://secunia.com/product/4227/[/url] +[16] Opera Browser, Official Website - [url]http://www.opera.com/[/url] +[17] Opera becomes free, webpage - [url]http://www.opera.com/free[/url] +[18] Opera and Firefox extensions - [url]http://virtuelvis.com/archives/2005/01/opera-and-firefox-extensions[/url] +[19] How to add 'I'm feeling lucky' to Opera - [url]http://my.opera.com/community/forums/topic.dml?id=63620[/url] +[20] Writely.com, free online word processor - [url]http://www.writely.com/[/url] +[21] K-meleon Project, Sourceforge - [url]http://kmeleon.sourceforge.net/[/url] +[22] Secunia vulnerabilities, K-meleon - [url]http://secunia.com/product/3684/[/url] +[23] Netscape Browser, Home Page - [url]http://browser.netscape.com/ns8/[/url] +[24] 'Netscape fixes holes in 'security' browser', Zdnet - [url]http://www.zdnet.com.au/news/security/0,2000061744,39192767,00.htm[/url] +[25] Netscape 8 'breaks' IE, Zdnet - [url]http://news.zdnet.co.uk/software/applications/0,39020384,39200178,00.htm[/url] [/small]
M content/articles/pre-review-of-ie7.bbcodecontent/articles/pre-review-of-ie7.bbcode

@@ -13,74 +13,74 @@ - ie

type: article toc: true ----- -Internet Explorer 6.0 was officially released on August 27th 2001, and it still runs on millions of computers across the world: it's probably the browser release which has lasted the longest in the entire history of the Internet! While I'm not sure if this is an "achievement" so much as it is an "imposition", Uncle Bill admitted that his latest baby, Internet Explorer 7, is due soon...[b]In the Beginning[/b] -Recently (5 months ago, that is) the aforementioned [i]"Microsoft Chairman and Chief Software Architect Bill Gates announced Internet Explorer 7.0, designed to add new levels of security to Windows XP Service Pack 2"[/i]. This happened at the RSA Conference in San Francisco, and although I wasn't there, I can imagine that amongst the oohs and ahhs of the crowd, someone must have whispered "It's about time". - -Firefox, on the other hand, keeps its fans alive with pseudo-releases every so often, 1.0.4, 1.0.5 and so forth, which at least makes you [i]feel[/i] like some progress is going on, be it a security fix or a new feature. Firefox will hopefully release version 1.1 [i]at any time[/i] now, with various new [url=http://www.zzine.org/read.php?op=view&item=1321]features[/url] that Microsoft can only dream about. I think that when Bill created Internet Explorer 6, he probably commanded that it should be called "version 6.0" for ever and ever: fixes, service packs, and new features (popup blocking, etc.) have been added, but after 4 years I'm [i]still[/i] running "Internet Explorer version 6.0". - -Version 7.0 is supposedly due soon, and - guess what - not only for Longhorn users (but where's Longhorn anyway?), but also for Windows XP SP2 users, there's great news: beta testing! If you run Windows 2000 it looks like you'll have to keep using IE6 until you get a "more advanced" version of your OS, but[url=http://www.microsoft.com/windows/IE/ie7/default.mspx]Internet Explorer 7[/url] is supposed to be "[i]freely downloadable, as always[/i]" this summer. - -So what's new in IE7? - - -[b]Discovering (and guessing) further details[/b] -Although nothing was supposed to be known until the first beta release, according to what seems to be Microsoft's official procedure in these cases, after Bill's announcement, speculations on IE7's new features and improvements (and quirks?) began to spread across the Internet in various forms. [url=http://blogs.msdn.com/ie/default.aspx]IEBlog[/url] seems to be the most authoritative (and biased?) source to get information, simply because the folks there are those who ( supposedly) are planning and developing IE7. - -When the announcement was made, those guys wrote something like: -[quote] -[i] -First, some basics: we?re committing to deliver a new version of Internet Explorer for Windows XP customers. Betas of IE7 will be available this summer. This new release will build on the work we did in Windows XP SP2 and (among other things) go further to defend users from phishing as well as deceptive or malicious software. - -Why? Because we listened to customers, analysts, and business partners. We heard a clear message: ?Yes, XP SP2 makes the situation better. We want more, sooner. We want security on top of the compatibility and extensibility IE gives us, and we want it on XP. Microsoft, show us your commitment.? -[/i] -[/quote] - -That's so sweet! They are doing this for us, and they are listening to us... - -Sarcasm aside, it was clear from the beginning that Microsoft wanted to focus more on security: maybe because of the stereotype of IE which has emerged through the years (IE = An easy way for bad people to do bad things to you), maybe because it was time to do it, or maybe because they got bored. The most likely reason, though, is commercial: Firefox's popularity has surged recently, and Microsoft felt an urge to open (Fire)fox-hunting season as soon as possible. - -Back in March, more details about this new amazing product began to [url=http://www.microsoft-watch.com/article2/0,1995,1776290,00.asp]leak[/url], inevitably, and here are the new features that IE7 is supposed to have: -[list] -[*]Tabs -[*]International domain name (IDN) support -[*]Transparent Portable Network Graphics (PNG) support (finally!) -[*]Simplified printing from inside IE 7.0 -[*]A built-in news aggregator. -[*]Somewhat extended support to CSS2 (but not the whole standard) -[/list] - -Wonderful and incredible at the same time: is IE7 trying to emulate Firefox? - -[i]So, what will this wonder look like?[/i] - Someone might wonder... And here are some leaked [url=http://neowin.net/comments.php?id=29131&category=main]screenshots[/url] that could be real enough. Impressive. - - -[b]New support for old stuff[/b] -Any Firefox user reading the features list above probably wasn't terribly impressed: everything mentioned there has been supported in Firefox for ages, but personally, I'm truly pleased to see that Microsoft finally decided to try to catch up with more advanced browsers (not just Firefox, but Opera as well) and web developers can relax a bit (maybe). - -There's a nice post on IEBlog regarding [url=http://blogs.msdn.com/ie/archive/2005/04/26/412263.aspx][b][i]PNG Support[/i][/b][/url], where the guy who made the thing possible, Sam Fortiner, explains what he had to do and why. -It's widely known that PNG images currently aren't handled correctly in Internet Explorer: if they are transparent, in particular, they will show a grey-ish background instead of being transparent. I guess that's not a good thing to see, after trying to overlay PNG images, for example. As a result, web developers currently don't use the PNG format, nor its transparency support. With IE7's transparent PNG support, sites which seemed to only display properly in Firefox will appear equally beautiful in the new Internet Explorer. - -Tony Schreiner, on the same blog, provides a detailed explanation on his work concerning [url=http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx][b][i]Tab Support[/i][/b][/url]: tabs are a new thing for Microsoft, and for long it was feared that they could cause "confusion" among end users accustomed to the tabless policy of IE6 and of the whole Windows interface. Regarding this, I think that people at Redmond should thank firefox a million times for "pioneering" into the unexplored land of Tabbed Browsing: firefox has been using tabs since the very first release, and it was highly acclaimed for this. Eventually then, Microsoft folks released that people are not as stupid as they hoped they'd be, and [i]aren't[/i] confused by tabs at all, so they decided to implement them in IE7. - -Tony gives away some technical details regarding IE7's implementation of tabs, which essentially consists of [i]"pushing a large part of what you see in IE6 into a tab"[/i], and let's hope it works. IE was born and evolved as a single-window browser, so this addition represents quite a challenge to Microsoft's way of thinking about User Interfaces... what's next then? Maybe Tabs in Windows Explorer as well? Maybe... - -Little is known about the other "new features", apart from CSS2 support, which will be described in the next paragraph. A built-in RSS aggregator? It's now acknowledged that Longhorn will have an extensive [url=http://msdn.microsoft.com/longhorn/understanding/rss/default.aspx?pull=/library/en-us/dnlong/html/rsssupportinlonghorn.asp]RSS support[/url] itself, so this seemed a logical addition to IE7. - - - -[b]The fear of uncertainty[/b] -IE support for web standards, in particular CSS, has always been a hot topic for developers. - -[quote][i]When we shipped IE 6.0, we finally fully supported CSS 1, and had some pieces of CSS2 implemented as well.[/i][/quote] - -That's honest, at least. Microsoft - so far - does not support CSS2, but at least offers full CSS1 support. As a personal note, I'd reword the previous as [i]"Microsoft does not want to fully support web standards because 90% of Internet users use IE, hence, they can make the laws"[/i]. Cruel, but basically true: Microsoft does not care about web standards, and IE's lack of support can be used as a way to force developers to create websites which are IE-compatible rather than standards compatible. There's more information [url=http://www.alttags.org/archives/2004/04/29/33/]here[/url]. - -Words in an official [url=http://blogs.msdn.com/ie/archive/2005/03/09/391362.aspx]post[/url] don't bode well for the future either: -[quote][i] -Given the strong usage of IE in the corporate space as well as embedded in applications, we have a strong requirement for backwards compatibility with our previous behavior, compliant or not; that requirement does not mean ?don?t touch anything?, it is just a recognition that keeping our engine in sync across strict and quirks modes is challenging when quirks mode has to work nearly exactly the same as it always has. We will continue to improve our compliance under strict mode even when it breaks compatibility, and under quirks mode when it?s not damaging to our backwards compatibility. -[/i][/quote] - -Basically, this provides an excuse to not fully adopt web standards, which can be seen as legitimate or not, according to your browser preferences, so I'm not going to comment on that... - -In another article, [url=http://www.microsoft-watch.com/article2/0,2180,1776935,00.asp]MicrosoftWatch[/url], reports that [i]"One partner said that Microsoft considers CSS2 to be a "flawed" standard and that the company is waiting for a later point release, such as CSS2.1 or CSS3, before throwing its complete support behind it".[/i] +Internet Explorer 6.0 was officially released on August 27th 2001, and it still runs on millions of computers across the world: it's probably the browser release which has lasted the longest in the entire history of the Internet! While I'm not sure if this is an "achievement" so much as it is an "imposition", Uncle Bill admitted that his latest baby, Internet Explorer 7, is due soon...[b]In the Beginning[/b] +Recently (5 months ago, that is) the aforementioned [i]"Microsoft Chairman and Chief Software Architect Bill Gates announced Internet Explorer 7.0, designed to add new levels of security to Windows XP Service Pack 2"[/i]. This happened at the RSA Conference in San Francisco, and although I wasn't there, I can imagine that amongst the oohs and ahhs of the crowd, someone must have whispered "It's about time". + +Firefox, on the other hand, keeps its fans alive with pseudo-releases every so often, 1.0.4, 1.0.5 and so forth, which at least makes you [i]feel[/i] like some progress is going on, be it a security fix or a new feature. Firefox will hopefully release version 1.1 [i]at any time[/i] now, with various new [url=http://www.zzine.org/read.php?op=view&item=1321]features[/url] that Microsoft can only dream about. I think that when Bill created Internet Explorer 6, he probably commanded that it should be called "version 6.0" for ever and ever: fixes, service packs, and new features (popup blocking, etc.) have been added, but after 4 years I'm [i]still[/i] running "Internet Explorer version 6.0". + +Version 7.0 is supposedly due soon, and - guess what - not only for Longhorn users (but where's Longhorn anyway?), but also for Windows XP SP2 users, there's great news: beta testing! If you run Windows 2000 it looks like you'll have to keep using IE6 until you get a "more advanced" version of your OS, but[url=http://www.microsoft.com/windows/IE/ie7/default.mspx]Internet Explorer 7[/url] is supposed to be "[i]freely downloadable, as always[/i]" this summer. + +So what's new in IE7? + + +[b]Discovering (and guessing) further details[/b] +Although nothing was supposed to be known until the first beta release, according to what seems to be Microsoft's official procedure in these cases, after Bill's announcement, speculations on IE7's new features and improvements (and quirks?) began to spread across the Internet in various forms. [url=http://blogs.msdn.com/ie/default.aspx]IEBlog[/url] seems to be the most authoritative (and biased?) source to get information, simply because the folks there are those who ( supposedly) are planning and developing IE7. + +When the announcement was made, those guys wrote something like: +[quote] +[i] +First, some basics: we?re committing to deliver a new version of Internet Explorer for Windows XP customers. Betas of IE7 will be available this summer. This new release will build on the work we did in Windows XP SP2 and (among other things) go further to defend users from phishing as well as deceptive or malicious software. + +Why? Because we listened to customers, analysts, and business partners. We heard a clear message: ?Yes, XP SP2 makes the situation better. We want more, sooner. We want security on top of the compatibility and extensibility IE gives us, and we want it on XP. Microsoft, show us your commitment.? +[/i] +[/quote] + +That's so sweet! They are doing this for us, and they are listening to us... + +Sarcasm aside, it was clear from the beginning that Microsoft wanted to focus more on security: maybe because of the stereotype of IE which has emerged through the years (IE = An easy way for bad people to do bad things to you), maybe because it was time to do it, or maybe because they got bored. The most likely reason, though, is commercial: Firefox's popularity has surged recently, and Microsoft felt an urge to open (Fire)fox-hunting season as soon as possible. + +Back in March, more details about this new amazing product began to [url=http://www.microsoft-watch.com/article2/0,1995,1776290,00.asp]leak[/url], inevitably, and here are the new features that IE7 is supposed to have: +[list] +[*]Tabs +[*]International domain name (IDN) support +[*]Transparent Portable Network Graphics (PNG) support (finally!) +[*]Simplified printing from inside IE 7.0 +[*]A built-in news aggregator. +[*]Somewhat extended support to CSS2 (but not the whole standard) +[/list] + +Wonderful and incredible at the same time: is IE7 trying to emulate Firefox? + +[i]So, what will this wonder look like?[/i] - Someone might wonder... And here are some leaked [url=http://neowin.net/comments.php?id=29131&category=main]screenshots[/url] that could be real enough. Impressive. + + +[b]New support for old stuff[/b] +Any Firefox user reading the features list above probably wasn't terribly impressed: everything mentioned there has been supported in Firefox for ages, but personally, I'm truly pleased to see that Microsoft finally decided to try to catch up with more advanced browsers (not just Firefox, but Opera as well) and web developers can relax a bit (maybe). + +There's a nice post on IEBlog regarding [url=http://blogs.msdn.com/ie/archive/2005/04/26/412263.aspx][b][i]PNG Support[/i][/b][/url], where the guy who made the thing possible, Sam Fortiner, explains what he had to do and why. +It's widely known that PNG images currently aren't handled correctly in Internet Explorer: if they are transparent, in particular, they will show a grey-ish background instead of being transparent. I guess that's not a good thing to see, after trying to overlay PNG images, for example. As a result, web developers currently don't use the PNG format, nor its transparency support. With IE7's transparent PNG support, sites which seemed to only display properly in Firefox will appear equally beautiful in the new Internet Explorer. + +Tony Schreiner, on the same blog, provides a detailed explanation on his work concerning [url=http://blogs.msdn.com/ie/archive/2005/05/26/422103.aspx][b][i]Tab Support[/i][/b][/url]: tabs are a new thing for Microsoft, and for long it was feared that they could cause "confusion" among end users accustomed to the tabless policy of IE6 and of the whole Windows interface. Regarding this, I think that people at Redmond should thank firefox a million times for "pioneering" into the unexplored land of Tabbed Browsing: firefox has been using tabs since the very first release, and it was highly acclaimed for this. Eventually then, Microsoft folks released that people are not as stupid as they hoped they'd be, and [i]aren't[/i] confused by tabs at all, so they decided to implement them in IE7. + +Tony gives away some technical details regarding IE7's implementation of tabs, which essentially consists of [i]"pushing a large part of what you see in IE6 into a tab"[/i], and let's hope it works. IE was born and evolved as a single-window browser, so this addition represents quite a challenge to Microsoft's way of thinking about User Interfaces... what's next then? Maybe Tabs in Windows Explorer as well? Maybe... + +Little is known about the other "new features", apart from CSS2 support, which will be described in the next paragraph. A built-in RSS aggregator? It's now acknowledged that Longhorn will have an extensive [url=http://msdn.microsoft.com/longhorn/understanding/rss/default.aspx?pull=/library/en-us/dnlong/html/rsssupportinlonghorn.asp]RSS support[/url] itself, so this seemed a logical addition to IE7. + + + +[b]The fear of uncertainty[/b] +IE support for web standards, in particular CSS, has always been a hot topic for developers. + +[quote][i]When we shipped IE 6.0, we finally fully supported CSS 1, and had some pieces of CSS2 implemented as well.[/i][/quote] + +That's honest, at least. Microsoft - so far - does not support CSS2, but at least offers full CSS1 support. As a personal note, I'd reword the previous as [i]"Microsoft does not want to fully support web standards because 90% of Internet users use IE, hence, they can make the laws"[/i]. Cruel, but basically true: Microsoft does not care about web standards, and IE's lack of support can be used as a way to force developers to create websites which are IE-compatible rather than standards compatible. There's more information [url=http://www.alttags.org/archives/2004/04/29/33/]here[/url]. + +Words in an official [url=http://blogs.msdn.com/ie/archive/2005/03/09/391362.aspx]post[/url] don't bode well for the future either: +[quote][i] +Given the strong usage of IE in the corporate space as well as embedded in applications, we have a strong requirement for backwards compatibility with our previous behavior, compliant or not; that requirement does not mean ?don?t touch anything?, it is just a recognition that keeping our engine in sync across strict and quirks modes is challenging when quirks mode has to work nearly exactly the same as it always has. We will continue to improve our compliance under strict mode even when it breaks compatibility, and under quirks mode when it?s not damaging to our backwards compatibility. +[/i][/quote] + +Basically, this provides an excuse to not fully adopt web standards, which can be seen as legitimate or not, according to your browser preferences, so I'm not going to comment on that... + +In another article, [url=http://www.microsoft-watch.com/article2/0,2180,1776935,00.asp]MicrosoftWatch[/url], reports that [i]"One partner said that Microsoft considers CSS2 to be a "flawed" standard and that the company is waiting for a later point release, such as CSS2.1 or CSS3, before throwing its complete support behind it".[/i] Although this cannot be regarded as a 100% authoritative source, people started [url=http://dean.edwards.name/weblog/2005/03/the-reason/]speculating[/url] that IE7 could potentially become a dictator for other browsers (like its predecessor), because so many people still use the MS browser. It could help Microsoft, as it did in the past, so why shouldn't Bill take advantage of it?
M content/articles/project-gutenberg.bbcodecontent/articles/project-gutenberg.bbcode

@@ -12,121 +12,121 @@ - internet

type: article toc: true ----- -I always liked reading Shakespeare, and I always wanted to have a copy of every one of his plays, tragedies and sonnets on my bookshelf ready for consultation, but such things always seemed unrealistic because I had neither the space for them nor the time to find them all nor the money to spend on them when I did find them. -Now I can store the complete works of William Shakespeare directly on my mobile phone, and they take up as little as 1.4 MB compressed... -[b]Origins[/b] - -Even if you never heard the word ?e-book?[1] before, you can probably guess its meaning: [i]electronic book[/i], or a book in digital format. What you probably don't knoe is that people started copying books into digital format nearly as soon as computers were available to the public, and maybe even before: the first [i]e-book[/i] was created in 1971. - -That year, a student at the University of Illinois named Michael Hart was given the equivalent of $100,000,000 (or $100,000, or $1,000,000 - there is no official estimation) in [i]computer time[/i]. Basically, since he was friends with some of the operators at the Materials Research Lab, he was given an operator account on the Xerox Sigma V mainframe, which later became one of the 15 nodes that developed into the global network that eventually became the Internet. At that time, having that much computer time at your disposal was indeed a great privilege, and Hart felt that he had to use that time for something useful that could in theory generate a profit - not an easy task when you consider that only a limited amount of people in the world had access to a computer, and that those computers weren?t even connected together. - -Foreseeing an era where computers where interconnected and regular people had access to them, Michael Hart thought that virtually all texts and books could be made available in digital format, for free, to anyone who wanted to read them. Certainly, such a [i]project[/i] seemed quite unrealistic and excessively time consuming at the time; nevertheless, he decided to start copying the first book himself, the Declaration of Independence of the United States, which he was carrying in his backpack. - -Project Gutenberg[2] was born with that one single text, and it has grown through the years. Today, there are more than 16,000 e-books available to download and read. - - -[b]What is Project Gutenberg?[/b] - -By that name, Michael Hart probably wanted to define the project?s scope and vision: an idea as revolutionary for the diffusion of literature as the invention of moveable type printing[3] in the 1450s. - -The mission of the project can be summarized as follows[4]: - -[center][i] "To encourage the creation and distribution of eBooks." - [/i][/center] - -In order to achieve this, Project Gutenberg is set up such that [i]anyone[/i] can contribute to it, in many different ways. It is run completely by volunteers, hundreds of people around the world who share the same ideals and believe that literature should be freely available to everyone at virtually no cost. - -The Internet serves this purpose magnificently: it is possible to download all of the over 16,000 free e-books from the Project Gutenberg website[5] in different formats and many different languages[6]! - -However, having such a large amount of books available within a few clicks can make people forget about how time consuming the process of making one single e-book is: originally, after acquiring a paper copy of the book, Gutenberg?s volunteers had to transcribe it themselves, typing every word from the beginning to the end. Then the book had to be checked for mistakes before it was accepted into the Project. - -Producing a single e-book can therefore take many people and many hours from beginning to end, and presumably this was one of the reasons why Project Gutenberg was criticized for being more of an utopian ideal than a tangible reality: every year since its creation people have doubted the project, accusing Hart of pursuing an impossible dream, and prophesying that fewer and fewer people would join the team and that there was no future for Project Gutenberg. - -Oddly enough, they were all wrong: not only is the Project still active today, but the number of books released every year has grown consistently over time, from a few dozen in the early days to thousands per year now. - - More and more people became involved, partially because they share the same ideals and partially because it has always been easy to get involved[7]: Project Gutenberg strives to remove all the institutional barriers which could potentially interfere with members? motivation; they try not to impose any restrictions, and they don't support perfectionism. It is believed[8] that there shouldn?t be any [i]proper[/i] or [i]standard[/i] way to release e-books, but instead many different ways, to appeal to many tastes: the Project doesn?t support any particular standard for releasing ebooks, although it normally takes the simplest path. Therefore, the majority of the books are available in [i]Plain Vanilla ASCII[/i], i.e., texts are written using only ASCII characters, and bold, italicized or underlined words are capitalized instead. While this format has the most limitations, it is also the most portable. - -At this point, you might wonder why they don't just scan the original books, and make them available as image files or PDF files. While it would be much faster, it also has disadvantages, such as large file size and an inability to be displayed at particular resolutions; a scanned book probably wouldn't be readable on a PDA, mobile phone, or other equally small device. - -Nonetheless, scanners do play an important part nowadays in the process of making an e-book: texts are no longer copied manually if a printed edition already exists. Instead, they are scanned with OCR[9] and then proofread twice before being accepted. The (un)official procedure recommends scanning at least one page a day, having it proofread once by someone in charge of doing so (a ?junior? proofread), and then again by a more experienced member. This has undoubtedly sped up the process. - - -[b]Not All Books Are Equal (for now)[/b] - -By looking at some of the titles available on Project Gutenberg, you?ll notice that most of them are [i]classics[/i] or relatively old works: for example, you won?t find the latest [i]Harry Potter[/i][10] available for download. - -Since [i]all[/i] of the books at Project Gutenberg are free to download (more details of the license will be given later on), and therefore not subject to fees or copyrights, only books in the public domain[11] can generally be included in the Project. - -Public domain includes all those works of art whose intellectual property cannot be legally claimed or exploited by any person, institution or legal entity, and therefore belong to all mankind. In the case of books, copyright can expire [i]only if[/i] some particular conditions subsist: - -[list] -[*]The work was created and first published before January 1, 1923, or at least 95 years before January 1 of the current year, whichever is later. -[*]The last surviving author died at least 70 years before January 1 of the current year. -[*]Neither a [i]perpetual copyright[/i] is granted by the Berne Convention nor has a particular government (US or EU) passed a copyright term extension. -[/list] - -Now we can see why there are not very many [i]new[/i] publications available in the project, and that?s really frustrating for Michael Hart and other volunteers: - -[i] "In the USA, no copyrights will expire from now to 2019!!! It is even much worse in many other countries, where they actually removed 20 years from the public domain. Books that had been legal to publish all of a sudden were not. Friends told me that in Italy, for example, all the great Italian operas that had entered the public domain are no longer there... Same goes for the United Kingdom. Germany increased their copyright term to more than 70 years back in the 1960's. It is a domino effect. Australia is the only country I know of that has officially stated they will not extend the copyright term by 20 years to more than 70."[/i][12] - -After all these considerations, we can take a closer look at Gutenberg?s license[13] which comes in two different versions: [i]informative[/i] and normative (?legalese?, as they call it), the latter of which is the real document. Luckily, the non-legalese version is simple and complete enough: basically PG releases books which are either in the public domain or ? if copyrighted ? the author gave express permission to re-distribute them. The difference lies in the fact that if you remove PG?s trademark and license from a book which is in the public domain, you can re-distribute it freely on your own, but if the book is copyrighted and permission to distribute was given [i]only[/i] to PG, you?ll have to contact the author to obtain permission. - -Furthermore, anybody can use the PG trademark when distributing [i]verbatim[/i] copies of a book, with no changes (re-formatting is allowed); if you want to charge money for the copies you distribute, you have to pay royalties to PG. - - -[b]Satellite Sites and Similar Projects[/b] - -Michael Hart was ? and still is ? an authentic pioneer in his field: he had the idea to create the largest free library on the Internet to [i]?Break Down the Bars of Ignorance and Illiteracy?[/i]. A lot of people thought he wouldn?t achieve anything, but his dedication and perseverance were simply so exemplary that more and more people got involved, a few satellite sites were created and similar projects were started in all over the world sharing the same goals. - -Hart is obviously aware of the fact that there are also some sites [i]selling[/i] e-books, but he explains that neither those sites nor any other free online library should be considered a competitor to Project Gutenberg: they all contribute to the diffusion of e-books. - -One of the most important [i]satellite site[/i] of PG is ?Distributed Proofreading?[14] which is now considered the main source of PG books: every month more than 100 books are proofread by hundreds of volunteers who can register on the site for free and then get added to the project. The key concept of this parallel organization is that a single book can be proofread by more than one person at the same time, and thereby speeding up a project which would be otherwise very difficult to coordinate. - -Another site which helps the main project is HWG, the HTML Writers Guild[15]. It aims to convert PG?s plain text ebooks into more feature-rich HTML documents: by using a mark-up language it is possible to add footnotes and it can be analyzed easily by automatic tools. - -Although Project Gutenberg releases well-known books in many languages, a few sites officially affiliated with the project were created to focus particularly on their regional literature and works. That?s the case for both Australia[16] and Germany[17], for example; they both focus on their own national heritage. Regarding the latter, they recently claimed their own copyright for their e-books, and thus a new foundation is in the process of being created: Project Gutenberg Europe[18] which aims, among other things, to address the myriad copyright issues and laws of the EU. - -Last but not least, there?s an interesting discussion[19] about similarities and differences between Project Gutenberg and Wikisource[20] a Wikipedia[21]?s sister project aiming to create a free repository of texts which are either in the public domain or licensed under the GFDL[22]. - -Wikisource people obviously noticed that their project was quite similar to PG, but with an important difference: their texts were formatted and freely editable by any user who was able to spot a mistake or inaccuracy; PG doesn?t offer this. In this context, Project Gutenberg was sometimes blamed for allowing inaccurate material to be included in the project: this was due to the fact that even if PG uses Distributed Proofreading website to proofread e-books, this is often not comparable to a wiki system. However, in PG's defense, wiki articles, being much more open, are subject to much more vandalism, and therefore must be more closely watched. One can imagine a high school student changing [i]Hamlet[/i] to read "To be or not to be, who gives a crap." - -However, the members of Project Gutenberg have proposed a sort of mutual cooperation between PG and wikisource: wikisource should maintain a broader scope, focusing not only on literary works but also on quotations and other kind of texts, and at the same time provide some revised edition of some book to Project Gutenberg. - - -[b]The Future of Project Gutenberg[/b] - -Project Gutenberg demonstrated the ability to grow considerably during its over 30-year existence. During that same time, copyright laws were extended, and some new technologies tried to [i]intimidate[/i] the Project, which seems to remain relatively unchanged. However, last year a long-awaited DVD containing all the Project's e-books was released, showing the world that PG can keep up with the progress of technology to a certain extent. - -One aspect that makes PG a successful project even today is its ability to adapt: CD-ROMs and a DVD were released, OCR was almost immediately taken into consideration, and since last year, all e-books have been released in both plain text and HTML format: there are still no fixed standards or rigid guidelines, but common sense seems to prevail over chaos, and for now, the system works. - -So far, Michael Hart showed the entire world that a single person can do [i]a lot[/i] when pursuing a noble goal. Call him an idealist, call him a dreamer, but he surely created something able to gratify and motivate him and his fellow volunteers forever: - -[i]?I can't think of anything more rewarding to do as a career than Project Gutenberg. It is something that will reach more people than any other project in all of history. It is as powerful as The Bomb, but everyone can benefit from it.?[/i][12] - - - - -[b]Notes &amp; Further Readings[/b] - -[1] Ebook, Wikipedia page ? [url]http://en.wikipedia.org/wiki/Ebook[/url] -[2] Project Gutenberg, Wikipedia page - [url]http://en.wikipedia.org/wiki/Project_Gutenberg[/url] -[3] Movable type, Wikipedia page - [url]http://en.wikipedia.org/wiki/Printing_press[/url] -[4] Project Gutenberg FAQ0 - [url]http://www.gutenberg.org/about/faq0[/url] -[5] Project Gutenberg Official Website - [url]http://www.gutenberg.org[/url] -[6] Project Gutenberg?s catalog - [url]http://www.gutenberg.org/catalog/[/url] -[7] Project Gutenberg?s volunteering page - [url]http://www.gutenberg.org/info/volunteer[/url] -[8] Project Gutenberg FAQ3 ? [url]http://www.gutenberg.org/about/faq3[/url] -[9] Optical Character Recognition, Wikipedia Page ? [url]http://en.wikipedia.org/wiki/Optical_character_recognition[/url] -[10] ?Harry Potter and the half-blood prince?, Scholastic Inc. website - [url]http://www.scholastic.com/harrypotter/books/prince/index.htm[/url] -[11] Public Domain, Wikipedia Page - [url]http://en.wikipedia.org/wiki/Public_domain[/url] -[12] ?The Se