Sep 28

The text below is what I originally typed in the comments form at http://lifeonrails.org/2007/8/30/netbeans-the-best-ruby-on-rails-ide -a very informative Rails blog!- but as I was about to click on ‘Add that puppy’ (-G-) I decided against it, not wanting to become a comment troll myself.
So, it’s now here instead:

Joe,
As a JBuilder veteran, let me tell you that it saddens me to see you spend time writing a plug on this blog rather than working on your products. I was very disappointed with JBuilder 2006. The way I see it, after releasing an abysmally buggy JBuilder 2005, you apparently decided to throw the baby with the bath water. I do not know if you guys got overwhelmed by the complexity of your own product but it seems that you thought that, rather than fixing it, selling us a few Eclipse plugins rebranded as ‘JBuilder’ was going to do the trick.
After more than 7 years of sticking with you guys, I have moved my whole team to Netbeans and have nothing but praises for it. IMO, it is the product that JBuilder was destined to be. Except it also handles Ruby seamlessly, which feels like a natural evolution for us Java developers.

Now, feel free to tell me if I got it all wrong. It is not my intent to start a flame war with the Borland people and I would be very happy to be proven wrong since I was a JBuilder fan for so many years.

-C.

Sphere: Related Content

Sep 19

IE7Joel Webber posted about the supposed fix-all security update released by Microsoft for IE.
Of course, it doesn’t fix all, as demonstrated here. Shock!

This totally jibes with my recent misadventures with IE7, when I found out that one of Microsoft’s “clever” workarounds is to add an artificial limit to 32,767 Javascript statements in a given scope - yes, I managed to generate this many statements as the result of including Javascript generation in a template system.

Also, note that their arrays are limited to 32,767 elements. I’ll bet that there is more of this stuff in IE7.

In a nutshell: Microsoft fights memory leaks by breaking existing scripts and doing a bunch of hasty cleanup when unloading a page.

IE7 TaggedBut that’s not even what’s annoying me the most. No, it would be this: http://support.microsoft.com/kb/933873

In this knowledge base entry, Microsoft acknowledges the issue and informs us that a hotfix is available; all we need to do is call them and maybe they will even wave the support fee, should they “determine that a specific update will resolve your problem”.

So, what are we to do? Call our customers and instruct them to see if Microsoft is willing to send them a patch, for free or not?

***

We recently stumbled upon a couple bugs in Java 6. More specifically, in rt.jar. Sun wasn’t exactly in a hurry to fix them. So, we fixed them ourselves.

As developers, do we really need more reasons to embrace open-source? I do not think so.

Sphere: Related Content

Sep 17

Yesterday, Alex and I went to the Convention Center and had a look. We had never been to any NextFest or anything with the word wired in its name -not even the Denmark wired nipples Fest- so you bet that we were pretty curious.

Cool

One of the first things we saw. Pretty cool projection on a smoke screen!

Modern ‘Tubular Bells’; use whatever limbs you feel like using, and interrupting the laser beams will play music.

It would seem that multitouch technology is about to become very popular.

Gaming

The X and Y dimensions of the holodeck: walk in any direction for as long as you wish, the ball takes care of the virtual miles for you.

Ingenious idea: it’s a platform game, and the background and player’s avatar are projected; however, the player created the various platforms him/herself using pieces of paper.
Robots

Zeno. Like Aibo, only it can throw tantrums. And his brains reside in your PC. Oh, and he’s ready to save the world.

So? Which is which?


The crowds interact with an android. This one doesn’t seem ready to take on the world.

20 seconds later, the android got very angry and laser beams came out of its eyes, thus disintegrating the fool who had been flashing gang signs at it.

An interesting concept. Industrial robots playings ‘DJ’. Of course, their scratching was purely mechanical and random, causing a high level of yawning among the audience.

This guy actually exclaimed: “The robot is pwning me!”. Turning her back to us: his sister is my guess.

Actually Useful

d30 actually hardens upon impact. As a biker, I totally want one of these jackets.

I do not know if these molecules have a phD, but they sure are tough - but, as we can see from the picture before this one, they also have a sensitive side that enjoys long walks on the beach and romanian poetry. And petting.

I do not see myself spending the money on this system, but I can imagine professional sommeliers welcoming the innovation.

The user interface lives in the physical world, but the display is entirely simulated.

Green Future

A wind tower. I wonder how much energy a tower this side can deliver.

Yes, the whole front of the car, including lights, turn signals and bumper are stickers.

And the car is a two-sitter. Well, a one-sitter really. Actually I wonder if there’s any room left to seat down.

This one is hardcore green. These are solar panels. It’s a bit like the secret child of the Batmobile and a bathtub.

I guess this is what they would call the ’sedan’ model.

650 miles in one day. Triumph of human ingenuity and muscle. At least this vehicle will motivate the masses to get off their asses and exercise.

Aw, crud. Forget I said anything.

WTF?

And now, the exhibits that left me wondering who let these guys in.

Quick! Reach for your cell phone and send a witty message to these guys and you will see it displayed in a speech bubble. Oh, my, I think I just wet myself. I cannot wait to see their business plan.

This one was kind of entertaining but, again, what’s the point? If you make a call with your cell phone, the red LEDs will blink madly.

This door was especially designed for people who have no hands AND all the time in the world. It almost works, too.

Two things -at least- very wrong with this product: I do not see the point of having a plastic ball scaling my body  at all times, and its name: BodyBug? Really? Have you thought this through?

Better than the creep who lives down your street: the surprise portable creep. He lives in your clothes! When you expect it the least, anyone can text you a ‘virtual hug’ and the garment will do its best to choke the life out of you.

I think these pictures speak for themselves: it’s your own motorized guillotine! The first picture shows the no doubt immensely accurate handlebar,  the second one shows the massive engine belt and the last one is here to help you imagine how kick-ass it’s going to be when you stand up - or are ejected due to jerky controls.

Actually, from what I’ve seen this car-boat hybrid works pretty well and hauls ass. Respect. It’s only made it in this section to celebrate the accompanying blurb: did you know that it can be used on any body of water without sustaining too much damage?

Well, that’s it for this year.

Sphere: Related Content

Sep 09

RedirectDo you have any idea how much disregarding basic SEO (Search Engine Optimization) rules can cost you? I have the answer and it’s “a lot“. And take my word for it: I am not an SEO consultant and have nothing to sell, here.

Up until last year, one of my sites was wildly popular: militate.com. Note that after achieving success through word of mouth, it plateaued and never exceeded 300 simultaneous users. It even started a slow descent that would end up in its much smaller audience today.

What was the horrible mistake that lead to that, then?

Simple.

Rule #1 of SEO: when you’re getting good Google juice through heavy pages indexing, do not, under any circumstance, turn your site into a dead links farm.

And that’s exactly what I did: at first people could access the site under a directory labeled /forums; after its first overhaul it became /site; later on I changed the domain name. And finally I changed /site to simply /

This, alone, is no crime. But I never told Google where to find the pages that were being relocated.

As a result, a web site that had steadily grown to more than 600,000 topics suddenly stalled and withered. OK, there are more factors: the site team was losing interest in its main topic, among many. But even when this happens, you can keep a niche site likes this one through sheer popularity. You really have to be a hairless monkey to mess that up.

So, how do you avoid such an unfortunate situation?

In my case, here is what I should have done. This relies entirely on issuing a status ‘301′, which search engines understand to mean “This is my new home. Follow me!”

Solution #1: use mod_rewrite Redirect
This is the usual answer and it works fairly well. Let’s see how we do it for our move from forums/ to site/

1. Create a file called .htaccess at the root of your old directory ( “forums” ) and put the following inside:
RewriteEngine on
RewriteBase /
RewriteRule /forums/(.*) /site/$1 [R=301,L]

Oh, wait: it is now as simple as

RedirectMatch 301 /forums/(.*) /site/$1

2. That’s it. Make sure that .htaccess has the correct access rights.

Well, that was easy.

Now, let’s say that you are looking for a more advanced solution; for instance you change your CMS/Forum Software and what used to be /forums/index.php?act=topic&page=105&p=1 now becomes /site/index.php?act=topic&n=1&p=1 because your old software’s topics started at number 105 but now that you imported them in your new software, they were renumbered and start at 1.

Here is a simple solution, that will also work if you do not have mod_rewrite (sorry, only a php example for now; I may write a Ruby example as well if requested):

1. Create a file called notarealpage.php; again at the root of your old directory:

  1. [?
  2. $directory = preg_replace(’#^/forums/#’, ‘’, $_SERVER[’REDIRECT_URL’]); // Remove original directory
  3. $querystr = $_SERVER[’REDIRECT_QUERY_STRING’];
  4. if(empty($querystr))
  5.         $qm = ‘’;
  6. else
  7. {
  8.         $qm = ‘?’;
  9.         // Renumber
  10.         $querystr = preg_replace_callback(
  11.                 ‘#&id=([0-9]+)#’,
  12.                 create_function(
  13.                         ‘$matches’,
  14.                         ‘return "&n=" . ($matches[1]-104);’),
  15.                 $querystr);
  16. }
  17. $newurl = ‘/site/’ . $directory . $qm . $querystr;
  18. print $newurl;
  19. ?]

2. In your .htaccess file, simply put:

ErrorDocument 404 /forums/notarealpage.php

Voila! Simple as that.

A note: again, I recommend that you look at the ‘Plain Code’ since the highlighter plug-in translates all html entities. I have to take this plug-in apart someday…

Sphere: Related Content

Sep 06

Yes, I am shocked.

I was (re)visiting Yichi’s design blog when I realized that his feedburner ticker shows only 235 subscribers. And I do not quite understand this: he doesn’t post too often, and when he does it usually is a small treasure of a post, so what are you waiting for? http://www.vikiworks.com/

Sphere: Related Content