• Release of RSDownloader 0.2.0

    It is here! After some development during the exam session and a final revision now that I am done with university, I am proud to announce the release of RSDownloader 0.2.0. A lot of things changed since the first draft that was version 0.1.0. First, I changed the download code to be more modular. I created a Download superclass that can be used as a model to create specific download classes for different filehosting websites easily. As of now I implemented RapidShare and FilesTube and I may add others in the future. I also implemented a search function that relies on the FilesTube API to search files by keyword. Last but not least, I changed the structure of the package to look and act more like a real package. I added setup.rb support to make the installation easier and I released the source code under GPLv3.

    If you are interested in implementing any other functionality or website, don’t hesitate to fork the project on github. Here is the code of the Download superclass.

    # The Download superclass
    class Download
     attr_accessor :url, :name
    
     # Initializes a download
     def initialize(url, opts)
     @url = url
     @opts = opts
     @file = nil
     end
    
     # Tests the url
     def test
     begin
     Net::HTTP.get_response(URI.parse(url)).value
     rescue
     return false
     end
     return true
     end
    
     # Executes the download
     def execute
     self.set_file
     self.download
     end
    
     # Sets the file for the download
     def set_file
     @file = @url
     end
    
     # Downloads the file
     def download
     cmd = "wget -c --user-agent="#{@opts[:header]['User-Agent']}""
     cmd += " -q" if !$verbose
     cmd += " --directory-prefix="#{@opts[:dir]}"" if @opts[:dir]
    
     IO.popen(cmd + " #{@file}"){|f|}
     end
    end
  • Reflections On Web 2.0

    I recently read an article by Joshua Porter about how Social Networking websites such as Twitter or Facebook could make Google’s life harder and it left me thoughtful. His article talks about the engagement in Web 2.0 applications and the major difference it could play in the business models of the companies that back them, but is this fiction or reality?

    Web20

    Let’s take some big Web 2.0 players such as YouTube or Facebook. If there is one thing that the last past years have proved about these applications, it is that profitability is hard to achieve. Internet Evolution published an article last week about how YouTube will lose more than $2 millions a day next year. Not to talk about Facebook which is still not profitable. So what do they have? What gives Twitter, an application that allows people to post message of less than 140 characters, the right to refuse a $500 millions offer from Facebook? The answer, I think, stands in one word: hype. Web 2.0 applications gets their value from the momentum they have, from the number of users they gather, but it is a good way to value a company?

    Lets consider a good old Web 1.0 application, Google. There is no doubt that Google achieved success, but not only in the way Facebook or Twitter achieved success, it is now a really lucrative corporation. So what does Google have that Facebook doesn’t have? I think the main difference lays in the foundation of the Web 2.0 movement: the interaction with the user. Web 2.0 websites are often more service oriented than a classic web application. By that, I mean that the application and the company behind it offers a service to the user in which they usually takes little to no place. For example, YouTube’s user will upload content for other users to watch and he will watch content uploaded by other user. On the other hand, if we take a website like Gamespot or IGN, then the company, which we could call the publisher, takes part into the user experience by creating most the content by itself.

    So what does this means? From a user’s point of view, that usually means a less interactive experience. Web 1.0 applications have limitations which don’t exist in Web 2.0. Less interaction usually means less hype, and a shorter attention span. People go to Google to go elsewhere, or go on Gamespot to read. Once this is done, there is no reason to stay on the website. This is a totally unilateral relation. Web 2.0 applications offer a bilateral relation, where the user gets updates more frequently and can interact with other dynamic beings. It is the AJAX of user interaction. A world where the user is at the center and everything branches from him.

    However, this is also the weakness of Web 2.0 applications. When in the center, the user often lose interest of the outside world. Targeting someone with advertising on Facebook may not be hard, especially with all the informations available, but the user isn’t there to buy. He is there to interact with other Facebook entities, which, as of now, are largely noncommercial. However, someone that goes on CNET to read on audio devices, or on Google to search for cars, is much more likely to click on an ad. Even if the attention span and the engagement is less, the value of these applications is in the relevance of the content and its commerciality. What could Facebook sells? Friends? Relations? No. With a website that focus on user generated content or social relations, it is really hard to target users effectively, because what they come to your website for is not something you can easily monetize. Especially through ads.

    So what is the future of Web 2.0? My guess is Web 2.5: a Web 2.0 with a valid business model that takes advantage of the commitment of the users in their products. When this will be achieved, it may stop the rise and fall of the fragile MySpace, Facebook and Twitter of this world and give the final blow to Web 1.0.

  • Because Studying Sometimes Gets Boring… RSDownloader!

    Because studying sometimes gets boring, I often end up working on something else during the exam sessions. This time, I got frustrated with RapidShare and its annoying wait times. Don’t misunterstand me, I think RapidShare is a really useful website. Even if they keep the download speed of free user down, it is still faster than setting a torrent when it comes to send a large file to someone else. The problem is that with all the waiting times, I often start a download session, then go work on something else and end up forgetting about my download. When I get back to RapidShare, my session has expired and I have to start over. This is especially annoying when trying to download multiple files since the wait time between two download is approximately 15 minutes.

    My solution: RSDownloader. It is a small ruby script I wrote to easily download any number of files from RapidShare. The script graps all the wait times directly from the site, thus optimizing your time. It starts the downloads (approximately) as soon as the countdowns reach 0. It uses wget to get the files so it is for Linux and motivated MacOSX users only. You can get the script from my github or here.

    Edit: Since I keep making change to the source code, I decided to take it off this post. The latest “stable” version should always be available on my github.

  • The Drunkard’s Walk

    I was walking to a lecture this afternoon when a new poster in one of the engineering building captured my attention. It was about the next Perimeter Institute public lecture entitled The Drunkard’s Walk: How Randomness Rules Our Lives. A weird coincidence since it happened to be the title of the last book I read. I thus decided to write about it and here I am.

    As the subtitle of the book says, this book is about randomness and how it affects our lives. The author, Leonard Mlodinow, is already a known author in the scientific world for other books he wrote. His most famous one is probably A Briefer History of Time, a book he co-wrote with Stephen Hawking.

    As opposed to a lot of scientific books, The Drunkard’s Walk doesn’t require a good knowledge in the domain of probability and statistics to be understood. However, it can be useful for a total comprehension of the concepts covered. Dr Mlodinow uses a progressive approach, by starting simple and adding more an more theory chapter after chapter. He never goes deeply into the equations so it is possible to follow just by grasping the concepts.

    As I said before, he starts simple with basic probabilities. He then follows by an introduction to the law of large numbers as well as Bayesian probabilities. An interesting thing about this book is that the author uses an historic approach throughout it. This leads to a more fluid progression since he talks about every concept in the order they got discovered. The reader also get to learn more about all the strange persons that made mathematics what they are today. After the first few chapters, the author switches from probabilities to statistics. He introduces the normal curve as well as the law of errors through different examples. This is another interesting point of the book. Dr Mlodinow shows concrete applications of the theoretical concepts he describes. His examples usually turn around sports or the financial world and make it way easier to understand the book. He ends his book with a few chapters on how humans often misinterpret probabilistic results. He writes about the illusion of patterns and gives different examples of bad uses of random data.

    Overall, The Drunkard’s Walk: How Randomness Rules Our Lives is a good book. On the theoretical side it is sometimes weak with some equations missing or some concepts not explained deeply enough. However, considering the amount of material covered (relatively similar to my IB probability and statistics course), it is understandable, especially if the goal was to make the content understandable by the average reader. However, it goes way deeper into the effects of probabilistic events on our lives then most stats courses.

    The Drunkard's Walk

  • Quantum Computing Continued

    As promised, here is the second video of my visit to the Institute for Quantum Computing.