Uncategorized
SuperGenPass patched for Google Chrome
I am a huge fan of SuperGenPass. There are so many obvious reasons why it’s a great concept that I won’t bore you with a rehash of all of them.
Unfortunately, in Google Chrome, SuperGenPass chokes on some pages. I do not blame Chrome for that: it’s for security reasons.
I’ve patched the basic version of SuperGenPass so that it can now work on those pages. I am not sure that it fixes everything for everybody but I hope it makes your life easier, like it does mine.
Just go to this page and get the patched bookmark.
If you are using a customized bookmark, I am afraid that you will have to patch it yourself. Here is what the patch looks like:
Look for
var%20FrameTest=window.frames[i].src; |
Replace with
var%20FrameTest=window.frames[i].src;var%20FrameTest=window.frames[i].src;FrameTest=window.frames[i].document.forms; |
Done!
If you enjoyed this post, make sure you subscribe to my RSS feed!
Magic: Ruby 1.8.5 + 1.9.1/Rails/Sinatra and Lighttpd
Ladies and gentlemen, gather ’round! The Great Panini is going to perform an incredible illusion before your very eyes! You will tell your grandchildren of this day and they will not believe you! Take pictures!
The Great Panini will start with a pre-steam machines era CentOS 4 server. He will install two versions of Ruby and they will coexist peacefully! He will then use the blazing fast Lighttpd server to proxy queries to various Ruby frameworks and he will even make it look easy!
Hrm…Sorry.
I am going to tell you how I quickly updated a couple servers with Ruby 1.9.1 and Lighttpd. And it will look easy because it is, in fact, easy.
This article’s aim is to be practical but I will explain as we go along.
The first thing I did was update CentOS to a more recent version. This could take a while but it’s always a good idea to keep a server software up-to-date so I’m sure that your already are almost there:
yum update |
In my case, after a couple hours (oops), the update was complete and I rebooted the servers.
Ruby 1.8.5
That’s the easy part because it’s the version of Ruby that currently comes with CentOS. Therefore you can install it using yum:
yum install ruby ruby-devel ruby-irb ruby-rdoc ruby-ri |
Ruby 1.9.1
Download the package from ruby-lang.org:
wget ftp://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.1-p0.tar.bz2 tar zxvf ruby-1.9.1-p0.tar.bz2 cd ruby-1.9.1-p0 |
The trick, here, is to give all 1.9.1 binaries a different name. Fortunately, configure offers an option for that:
./configure --program-suffix=19 |
Build and install:
make && make install |
Rubygems
Get rubygems from Rubyforge:
wget http://rubyforge.org/frs/download.php/60718/rubygems-1.3.5.tgz tar zxvf rubygems-1.3.5.tgz cd rubygems-1.3.5 |
Note that we are now using our brand new 1.9.1 binaries:
ruby19 setup.rb |
Now, make sure your gems are up to date:
gem19 update |
Let’s see. We want to use two frameworks: Rails and Sinatra. Installing them could not be simpler:
gem19 install rails gem19 install sinatra |
We will use thin to run our programs:
gem19 install thin |
Let’s make sure that thin is run when the server boots up:
thin install |
This will create /etc/init.d/thin which we can then link to the appropriate runlevels using chkconfig
We will, when creating Ruby applications, tell thin about the instances it needs to run. This will be done by adding yml files to /etc/thin/
I am going, in this article, to create these applications in /home/yourdirectory/. Of course, use your own directory.
Rails
Let’s create a Rails application:
rails myrailsapp |
In the application’s config/ directory, let’s create our thin yml file (thin_myrailsapp.yml)
chdir: /home/yourdirectory/myrailsapp address: 127.0.0.1 port: 3000 servers: 4 max_conns: 1024 timeout: 30 max_persistent_conns: 512 user: www group: www environment: development pid: tmp/pids/thin.pid log: log/thin.log daemonize: true |
chdir tells thin where our document root is located. Rails serves documents from document root/public/
address is localhost because that’s what will be used when proxying through Lighttpd
servers is ‘4′ which means that four servers will be instantiated, starting at
User and group: I am using the same user and group that Lighttpd runs as for simplicity sake.
Let’s tell Lighttpd about this new application. Edit /etc/lighttpd/lighttpd.conf, or wherever your configuration file is:
$HTTP["host"] =~ "myrailsapp\.yourdomain\.com$" {
$HTTP["url"] =~ "^/((images|javascripts|stylesheets)/(.*)$)" {
server.document-root = /home/yourdirectory/myrailsapp/public"
}
proxy.balance = "fair"
proxy.server = ("" =>
(
( "host" => "127.0.0.1", "port" => 3000 )
)
)
} |
I am using the “fair” load balancer because, as the default option, it tries to be…fair, obviously, and isn’t too greedy: it does not compute a hash for each url.
Let’s now tell thin about this application by simply creating a symbolic link in /etc/thin/:
ln -s /home/yourdirectory/myrailsapp/config/thin_myrailsapp.yml /etc/thin/ |
Restart Lighttpd and start thin:
/etc/init.d/lighttpd restart && /etc/init.d/thin start |
I know…supposedly I should be able to simply type ‘lighttpd reload’ and it will reload its configuration files but that does not always seem to work.
Now, the fun stuff:
Go to http://myrailsapp.yourdomain.com:3000 and you should be greeted by Rail’s welcome page.
Now, go to http://myrailsapp.yourdomain.com and you should see the same page, except this time it was proxyied by Lighttpd.
Sinatra
Create your application; e.g. the ubiquitous “hi” application. Again in /home/yourdirectory/mysinatraapp, create hi.rb:
require 'rubygems' require 'sinatra' get '/' do 'Hello world! I love kittens.' end |
Create a config/ subdirectory:
mkdir config && cd config |
In the config/ directory, let’s create our thin yml file (thin_mysinatraapp.yml)
rackup: /home/yourdirectory/mysinatraapp/config/mysinatraapp.ru chdir: /home/yourdirectory/mysinatraapp address: 127.0.0.1 port: 4567 servers: 4 max_conns: 1024 timeout: 30 max_persistent_conns: 512 user: www group: www environment: development pid: /home/yourdirectory/mysinatraapp/thin.pid log: /home/yourdirectory/mysinatraapp/thin.log daemonize: true |
Starting at port 4567 because, by convention, it’s Sinatra’s default port when started standalone.
Notice the main difference? Sinatra will rely on rack for its setup, hence the ‘rackup‘ keyword.
Let’s create that rack file (mysinatraapp.ru)
require 'sinatra' Sinatra::Application.default_options.merge!( :run => false, :env => :development ) require 'hi.rb' run Sinatra.application |
Do not forget Lighttpd:
$HTTP["host"] =~ "mysinatraapp\.yourdomain\.com$" {
proxy.balance = "fair"
proxy.server = ("" =>
(
( "host" => "127.0.0.1", "port" => 4567 )
# room for more instances
)
)
} |
Of course, if you know that some directories will be dedicated to static content you can also check for these directory names and have Lighttpd serve them statically, as shown in myrailsapp’s example.
Restart Lighttpd and thin:
/etc/init.d/lighttpd restart && killall -HUP thin |
Test it:
Go to http://mysinatraapp.yourdomain.com:4567 and you should see the message returned by hi.rb.
Now, go to http://mysinatraapp.yourdomain.com and you should see the same page, except, again. it was proxyied by Lighttpd.
Conclusion
As I wrote earlier, this is easy and actually fairly straightforward. It some of this is not working for you, it is likely because I glossed over something I really shoudln’t have. Post a comment and describe your issue and I will gladly help.
If you enjoyed this post, make sure you subscribe to my RSS feed!
Zii’s “stemcell computing”: misleading name, good tech?
It is interesting that on the heels of IBM’s announcement that the Cell family is a dead-end, I get to learn of Zii’s offering — based on their allegedly violating the GPL.
It’s all the more interesting that it seems that the trend, lately, has been to focus more on GPUs:
since GPUs have evolved to provide such built-in power, why not reuse them for more than just graphics?
Zii, on the other hand, claim that their “stemcell computing” platform, unlike Cell or GPUs, is wholly general-purpose.
Wait. What GPL thing?
Well, Zii is currently marketing to developers a solution called the “Zii Egg”. It’s an iPhone-like device, based on their processors, that can run either Android or their own, Linux-based, Plaszma platform.
Turns out, they are currently withholding root information, thus not allowing developers to patch the OS, thus, it is claimed, violating the GPL.
With this out of the way…
Is Stemcell Computing(™) a revolution?
I will boldly say “NO”. But I’m not saying it’s not an interesting technical challenge either.
For starters, their platform doesn’t have much to do with stem cells. Sure, the name got my attention. But there is nothing biological about it. In fact, it’s quite the marketing stretch: take a non-specialized set of chips. Can we program them to do something? If so, then it’s just like stem cells! Er…right.
So, what is it?
If only their intro video wasn’t so “Ha-ha big computers are for nerds. They are BIG. Look! Shiny object!” I’m sure their nerd karma would explode.
But, no. Instead it’s marketing talk all the way. That could be fine, except they are marketing their product to developers, not the general public.
Also, from the specs I was able to gather, what we are talking about here is a couple ARM cores and processing elements on a die.
You know what immediately comes to mind? FPGAs.
It really sounds like a coarse-grained (node-based) FPGA.
Nowadays, you can buy FPGAs that come with their own processors, either built into the fabric on the side, or even meshed within the FPGA itself.
The only thing that still confuses me is how they can be, as they claim, “configured thousands of times a second”: typically, when reconfiguring an FPGA, you need to download the new code to SRAM. Of course, here we are likely talking about SOC (System On a Chip) reconfiguration: there is no external interface.
And this is where is gets hairy:
- Do you always reconfigure through a JTAG port? Or did Zii come up with a faster alternative?
- Do you reconfigure the whole FPGA or only regions?
- If so, do you place the FPGA in configuration mode then switch back to user mode? Or does the chip have only one mode?
- And if so, are write operations synchronous and reads asynchronous? How do you manage the software and electrical issues?
I hope that, in time, we will learn more about the technology behind “Stemcell computing”.
I may be way off base but it seems to me that, even though we are not talking about a revolution, it sure sounds like a very intriguing evolution.
If you enjoyed this post, make sure you subscribe to my RSS feed!
See you at SXSW
Leaving tomorrow for Austin, TX. I will be SXSW’ing thru Wednesday 12th.
If you wish to get together for a real-life chat or what not, send me an email: sxsw2008 [at] voilaweb [dot] com
Cheers!
If you enjoyed this post, make sure you subscribe to my RSS feed!
Microsoft’s Letter to Yahoo! Board Members
Here it is in all its glory. From Microsoft’s Press Page.
If you do a search for “microsoft yahoo” on Flickr, you will find a lot of interesting images; no idea whether this represents the opinion of only a few vocal people or if indeed Flickr users are, as a group, quite nonplussed.
A suggestion: if people are this much peeved, why not organize a massive exodus from Flickr, reducing its nominal value to zero? Now that would be grassroots…
Board of Directors
Yahoo! Inc.
701 First Avenue
Sunnyvale, CA 94089
Attention: Roy Bostock, Chairman
Attention: Jerry Yang, Chief Executive Officer
Dear Members of the Board:
I am writing on behalf of the Board of Directors of Microsoft to make a proposal for a business combination of Microsoft and Yahoo!. Under our proposal, Microsoft would acquire all of the outstanding shares of Yahoo! common stock for per share consideration of $31 based on Microsoft’s closing share price on January 31, 2008, payable in the form of $31 in cash or 0.9509 of a share of Microsoft common stock. Microsoft would provide each Yahoo! shareholder with the ability to choose whether to receive the consideration in cash or Microsoft common stock, subject to pro-ration so that in the aggregate one-half of the Yahoo! common shares will be exchanged for shares of Microsoft common stock and one-half of the Yahoo! common shares will be converted into the right to receive cash. Our proposal is not subject to any financing condition.
Our proposal represents a 62% premium above the closing price of Yahoo! common stock of $19.18 on January 31, 2008. The implied premium for the operating assets of the company clearly is considerably greater when adjusted for the minority, non-controlled assets and cash. By whatever financial measure you use – EBITDA, free cash flow, operating cash flow, net income, or analyst target prices – this proposal represents a compelling value realization event for your shareholders.
We believe that Microsoft common stock represents a very attractive investment opportunity for Yahoo!’s shareholders. Microsoft has generated revenue growth of 15%, earnings growth of 26%, and a return on equity of 35% on average for the last three years. Microsoft’s share price has generated shareholder returns of 8% during the last one year period and 28% during the last three year period, significantly outperforming the S&P 500. It is our view that Microsoft has significant potential upside given the continued solid growth in our core businesses, the recent launch of Windows Vista, and other strategic initiatives.
Microsoft’s consistent belief has been that the combination of Microsoft and Yahoo! clearly represents the best way to deliver maximum value to our respective shareholders, as well as create a more efficient and competitive company that would provide greater value and service to our customers. In late 2006 and early 2007, we jointly explored a broad range of ways in which our two companies might work together. These discussions were based on a vision that the online businesses of Microsoft and Yahoo! should be aligned in some way to create a more effective competitor in the online marketplace. We discussed a number of alternatives ranging from commercial partnerships to a merger proposal, which you rejected. While a commercial partnership may have made sense at one time, Microsoft believes that the only alternative now is the combination of Microsoft and Yahoo! that we are proposing.
In February 2007, I received a letter from your Chairman indicating the view of the Yahoo! Board that “now is not the right time from the perspective of our shareholders to enter into discussions regarding an acquisition transaction.†According to that letter, the principal reason for this view was the Yahoo! Board’s confidence in the “potential upside†if management successfully executed on a reformulated strategy based on certain operational initiatives, such as Project Panama, and a significant organizational realignment. A year has gone by, and the competitive situation has not improved.
While online advertising growth continues, there are significant benefits of scale in advertising platform economics, in capital costs for search index build-out, and in research and development, making this a time of industry consolidation and convergence. Today, the market is increasingly dominated by one player who is consolidating its dominance through acquisition. Together, Microsoft and Yahoo! can offer a credible alternative for consumers, advertisers, and publishers. Synergies of this combination fall into four areas:
Scale economics: This combination enables synergies related to scale economics of the advertising platform where today there is only one competitor at scale. This includes synergies across both search and non-search related advertising that will strengthen the value proposition to both advertisers and publishers. Additionally, the combination allows us to consolidate capital spending.
Expanded R&D capacity: The combined talent of our engineering resources can be focused on R&D priorities such as a single search index and single advertising platform. Together we can unleash new levels of innovation, delivering enhanced user experiences, breakthroughs in search, and new advertising platform capabilities. Many of these breakthroughs are a function of an engineering scale that today neither of our companies has on its own.
Operational efficiencies: Eliminating redundant infrastructure and duplicative operating costs will improve the financial performance of the combined entity.
Emerging user experiences: Our combined ability to focus engineering resources that drive innovation in emerging scenarios such as video, mobile services, online commerce, social media, and social platforms is greatly enhanced.
We would value the opportunity to further discuss with you how to optimize the integration of our respective businesses to create a leading global technology company with exceptional display and search advertising capabilities. You should also be aware that we intend to offer significant retention packages to your engineers, key leaders and employees across all disciplines.
We have dedicated considerable time and resources to an analysis of a potential transaction and are confident that the combination will receive all necessary regulatory approvals. We look forward to discussing this with you, and both our internal legal team and outside counsel are available to meet with your counsel at their earliest convenience.
Our proposal is subject to the negotiation of a definitive merger agreement and our having the opportunity to conduct certain limited and confirmatory due diligence. In addition, because a portion of the aggregate merger consideration would consist of Microsoft common stock, we would provide Yahoo! the opportunity to conduct appropriate limited due diligence with respect to Microsoft. We are prepared to deliver a draft merger agreement to you and begin discussions immediately.
In light of the significance of this proposal to your shareholders and ours, as well as the potential for selective disclosures, our intention is to publicly release the text of this letter tomorrow morning.
Due to the importance of these discussions and the value represented by our proposal, we expect the Yahoo! Board to engage in a full review of our proposal. My leadership team and I would be happy to make ourselves available to meet with you and your Board at your earliest convenience. Depending on the nature of your response, Microsoft reserves the right to pursue all necessary steps to ensure that Yahoo!’s shareholders are provided with the opportunity to realize the value inherent in our proposal.
We believe this proposal represents a unique opportunity to create significant value for Yahoo!’s shareholders and employees, and the combined company will be better positioned to provide an enhanced value proposition to users and advertisers. We hope that you and your Board share our enthusiasm, and we look forward to a prompt and favorable reply.
Sincerely yours,
/s/ Steven A. Ballmer
Steven A. Ballmer
Chief Executive Officer
Microsoft Corporation
If you enjoyed this post, make sure you subscribe to my RSS feed!
Leopard: Quick Removal of iCalFix
Great news: with Leopard, there is no need for iCalFix anymore!
Bad news: iCalFix is not compatible with the new version of iCal and the latter keeps complaining about the former.
A lot of people have asked the author -BTW: thanks again, Robert, for creating iCalFix when it was needed- how to remove iCalFix but never got a reply.
Here is a veeery simple fix:
Simply remove the input manager from /Library/InputManagers
Using the shell:
sudo rm -rf /Library/InputManagers/iCalFix
If you enjoyed this post, make sure you subscribe to my RSS feed!
Microsoft finally gets its way in Europe
The FFII, a not-for-profit organization promoting a free market in information technology, published this press release.
The title is a bit over the top, but what’s the point of writing a press release if it isn’t compelling?
Basically, it’s about a great victory for Microsoft, in Europe: if you write a piece of software that interoperates with a Microsoft product, they have to pay royalties for each copy distributed.
This means that commercial entities such as IBM have to give Microsoft money when they write a competing product -who wants a word processor that cannot read Word documents?. It also means that many open-source projects are going to have to sit down and decide whether to shutter the whole project or stop distributing it in Europe.
One might argue that if royalties are a percentage, free projects shouldn’t have to worry about the whole deal. This would be true if Microsoft’s wording didn’t specify a percentage of their revenue. This is dangerous territory, now. What’s a non-profit to do?
Anyway, as if all of this wasn’t reason to worry enough, this quote from Commissioner Kroes takes the cake:
That percentage royalty has become a nominal, one-off payment of Euro 10,000. This is all that has to be paid by companies that dispute the validity or relevance of Microsoft’s patents.
Yes, you read right: Euro 10,000 (US$14,000). What open-source project is going to fork that kind of money?
And, wait, “this is all that has to be paid”…if you dispute Microsoft’s patents relevance?
Ouch! How much are you supposed to pay if you don’t dispute it?
If you enjoyed this post, make sure you subscribe to my RSS feed!
L.A. Wired NextFest ‘07
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.
If you enjoyed this post, make sure you subscribe to my RSS feed!
Flv Player
The player I used in my previous post ( ‘nBBS Admin CP’ ) is now available in the Wordpress.org’s plugin directory.
A quick overview:
- This plugin lets you embed a flash stream using Geoff Stearn’s player.
- You can embed multiple movies in the same page and/or post.
- You can embed movies in posts and comments.
- You can specify a width and a height to override the default values of 640×480.
- I use Geoff’s Javascript to work around Adobe’s restriction on flash content display.
I know it’s not the first Flash plugin for Wordpress…just let me know if you have creative ideas for this little guy.
Find it here.
If you enjoyed this post, make sure you subscribe to my RSS feed!
OS X: “Please try installing again”
It’s like this message has become a feature of OS X.
You download a .dmg, double-click and expect that all your files should be an exact copy of the original install files. And yet, sometimes, you get stuck with this message.
Here is a very simple fix that works 90% of the time: make sure that your post-install script can be executed!
Open a shell window, go to where your package is, and type:
chmod a+x yourpackage.pkg/Content/Resources/postinstall
Of course, replace ‘yourpackage,pkg’ with the package’s actual name.
If you enjoyed this post, make sure you subscribe to my RSS feed!






























