From Beirut to Jeddah, to Manama, to Amman and, finally, to Cairo. This year is Cairo's turn to host the annual Investing in Technology Forum, which will be held at Fairmont Towers Hotel, Heliopolis, from the 12th to the 14th of May, 2009.
The Garbage Collector is a really strange business in the Ruby land. For me, it is currently the major performance drain . If you are not aware of the limitations, here's a list:
- The GC is mark-and-sweep; it needs to scan the whole heap for each run. It is directly affected by heap size O(n).
- The GC cannot be interrupted and, hence, all threads must wait for it to finish (shameful pause on big heaps).
- The GC marks objects in the objects themselves, destroying any value of copy on right.
- The GC does not give memory back to the system; what goes in, does not come out.
- It is a bit on the conservative side, meaning garbage can stay because it is not sure that it is so.
Please welcome Reactor, a reactor library with the very original name of "Reactor".
What is a reactor any way?
A reactor library is one that provides an asynchronus event handling mechanism. Ruby already has a couple of those, the most prominent being EventMachine and Rev. Many high performing Ruby applications like Thin and Evented Mongrel are utilizing EventMachine for event handling. Both Rev and EventMachine build atop native reactor implementations written in C or C++; while this ensures high performance, it makes some integration aspects with Ruby a bit quirky, sometimes even at a noticable performance cost.
I have written in a previous post about the Selenium Testrunner. One of the main problems that I faced in dealing with the TestRunner mode was the limitation of the JavaScript. In the TestRunner mode of Selenium, you will only be able to test the functionality of your own Website; you will not be able to run tests against third party sites, such as Google or Amazon, due to the cross-scripting security limitation of JavaScript.
If you haven't been following Mauricio Fernandez's blog, then please do yourself a favor and subscribe to it; Mauricio's writings are very interesting and informative. In one of his posts, Mauricio gives a record of re-implementing his blog in OCaml using the OCsigen (webserver + framework) library.
After creating my first few Selenium test cases, I found that I need to accumulate those test cases to have them organized somewhere in order to run them all at once.
Selenium test runner was the best solution for this case, as it enables you to see all the test cases you've written and runs them either one by one or all at once.
Over the past few months, people here at eSpace have been working on developing google gadgets. A large number of these gadgets were dependent on data gathered from other websites which lack any XML or RSS service providing this data in a direct way. Since this is a problem we will face every now and then, we started thinking about a more generic solution to use in any gadget depending on such source of data.
The solution that we needed boiled down to one of these three
- Using a scrapping service such as Dapper or Yahoo pipes to do the scrapping on behalf of us and return a well formed XML file to use in any gadget
- Creating a google app engine that we call and it scrapes the data and returns XML to us
- Using JS for scrapping HTML pages
Archive
Latest Comments
- zxdvcs Commented on Reading Arabic in a PuTTY Connection
- zxdvcs Commented on Reading Arabic in a PuTTY Connection
- Ed Hardy Commented on Check Out Our iGoogle Gadgets
- Ed Hardy Commented on Thin, the thin server that can!

