For those wondering what I have been working on during the past six months, I just put a beta online. It is an open textbook webapp experiment. There’s starting to be a lot of competition in this sphere so I don’t know if it’s going to catch on. It’s done 100% by me. Tell me what you think!
www.bookvoid.com
Monday, February 27, 2012
Saturday, July 9, 2011
Software of Egypt and the Balance of Power in Patents.
I thought I would give my perspective on the whole software patents debate. You’ve probably already heard about the software patent legal landscape forcing large companies to keep a war chest of patents to defend themselves against each other while making it a very unfair field for smaller players and less ‘evil’ companies with no interest in playing the game. This is all true and well known so I won’t rehash these ideas but rather talk about an aspect inherent and specific to software that enables all of this.
The act of writing software can be summarized as generating ideas and writing down these ideas in a language computers can understand and execute. Software programmers are in the business of writing ideas all day. This combined with the fact that the bar for ideas being patentable is very low means that programmers probably generate and write down multiple patentable ideas per day. From the get go they are inevitably setting up a huge patent minefield.
I don’t know if anyone has ever calculated the average density of patentable ideas in code, but if you consider, for example, that performing an online transaction with the last entered customer data (the infamous 1-Click patent) is patentable, I would very roughly estimate that there is a patentable idea every 20 to 50 lines of code.
As an example, the Linux kernel (just the very core of Linux) contains more that 10 millions lines of code. If you consider a complete Linux distribution (by adding the graphical user interface and a bunch of utilities) you get at least ten times that amount, that is more than 100 millions lines of code. Using the rough estimate above, we can calculate that there are more than 2 millions patentable ideas in a consumer operating system. That is an incredible amount of complexity. In fact, it is a testament to human ingenuity that we can (sometimes) get all this code to work together.
Now code is not used side by side like an infantry of little computer processes working in parallel to make computers or phones go. It is rather organised and packaged in a huge network of building blocks, a pyramid of hundreds of thousands of libraries, APIs or functions heavily inter-dependent on each other. What’s more, the building blocks are usually not all written by the same people or organisations and their consistent and stable behavior is critical for enabling compatibility (remember, often between millions of parts made by thousands of developers).
This hierarchical and networked architecture is inevitable and the best way to organise complex information, however the stability it requires at the bottom of the pyramid means that some building blocks cannot be changed once the pyramid is built. Someone claiming ownership of the shape of a bottom block after the pyramid is built, someone having the power to force a bottom block to be removed and replaced with a different shaped one, no matter how simple and obvious this bloc is, does not have power over just this block but over the whole structure above it and all the components that depend on it. This means patent holders have a disproportionately large amount of power when they target such a bloc. They know that changing it would require tearing down, redesigning and replacing often thousands of dependent projects and probably break compatibility for millions of users of these projects. It is usually simply not an option.
I believe that the rate of creating new ideas inherent in building software and thus the explosion of these ideas along with the exponential amount of potential interdependence between them, is the most important aspect making the current patent system not suitable for software.
By claiming ownership over a tiny idea, a patent holder can hold a huge proportion of the project hostage. In order to reestablish a sane balance of power, the patent system needs to be changed drastically and take into account the massively interdependent nature of software parts. It makes no sense to let people claim the shape of a tiny block at the center of the pyramid after the pyramid is built.
Other industries, such as aviation where airplanes are also built from very many components have the potential for similar issues but none have a rate of creation of new ideas even close to that of the software industry.
This problem needs be solved quickly because as technologies advance to become more and more complex and more and more interconnected, the drag on innovation will only get worst.
The act of writing software can be summarized as generating ideas and writing down these ideas in a language computers can understand and execute. Software programmers are in the business of writing ideas all day. This combined with the fact that the bar for ideas being patentable is very low means that programmers probably generate and write down multiple patentable ideas per day. From the get go they are inevitably setting up a huge patent minefield.
I don’t know if anyone has ever calculated the average density of patentable ideas in code, but if you consider, for example, that performing an online transaction with the last entered customer data (the infamous 1-Click patent) is patentable, I would very roughly estimate that there is a patentable idea every 20 to 50 lines of code.
As an example, the Linux kernel (just the very core of Linux) contains more that 10 millions lines of code. If you consider a complete Linux distribution (by adding the graphical user interface and a bunch of utilities) you get at least ten times that amount, that is more than 100 millions lines of code. Using the rough estimate above, we can calculate that there are more than 2 millions patentable ideas in a consumer operating system. That is an incredible amount of complexity. In fact, it is a testament to human ingenuity that we can (sometimes) get all this code to work together.
Now code is not used side by side like an infantry of little computer processes working in parallel to make computers or phones go. It is rather organised and packaged in a huge network of building blocks, a pyramid of hundreds of thousands of libraries, APIs or functions heavily inter-dependent on each other. What’s more, the building blocks are usually not all written by the same people or organisations and their consistent and stable behavior is critical for enabling compatibility (remember, often between millions of parts made by thousands of developers).
This hierarchical and networked architecture is inevitable and the best way to organise complex information, however the stability it requires at the bottom of the pyramid means that some building blocks cannot be changed once the pyramid is built. Someone claiming ownership of the shape of a bottom block after the pyramid is built, someone having the power to force a bottom block to be removed and replaced with a different shaped one, no matter how simple and obvious this bloc is, does not have power over just this block but over the whole structure above it and all the components that depend on it. This means patent holders have a disproportionately large amount of power when they target such a bloc. They know that changing it would require tearing down, redesigning and replacing often thousands of dependent projects and probably break compatibility for millions of users of these projects. It is usually simply not an option.
I believe that the rate of creating new ideas inherent in building software and thus the explosion of these ideas along with the exponential amount of potential interdependence between them, is the most important aspect making the current patent system not suitable for software.
By claiming ownership over a tiny idea, a patent holder can hold a huge proportion of the project hostage. In order to reestablish a sane balance of power, the patent system needs to be changed drastically and take into account the massively interdependent nature of software parts. It makes no sense to let people claim the shape of a tiny block at the center of the pyramid after the pyramid is built.
Other industries, such as aviation where airplanes are also built from very many components have the potential for similar issues but none have a rate of creation of new ideas even close to that of the software industry.
This problem needs be solved quickly because as technologies advance to become more and more complex and more and more interconnected, the drag on innovation will only get worst.
Thursday, March 10, 2011
Does the iPad 2's Lack of Revolutionary New Features Foretell Android Tablet's Upcoming Glory?
It has been widely noted that the new iPad 2 is an evolutionary release that doesn't bring many new features to the table. Instead it builds on the existing iPad's feature set or on features that are common elsewhere, such as cameras. Mostly, the iPad 2 is about making the device faster, smaller and superficially better while maintaining a relatively low price.
Still, in terms of overall user experience, the iPad 2 seems to keep its edge on every other tablets out there.
This prominence might however, be nearing its end. The lack of new features to catchup to means that in the near future, Google will have the freedom to spend significant time and resources fixing bugs, speeding things up, polishing the user experience and dealing with fragmentation issues.
Now I see Google, with it's geek culture, as a company full of people that want to work on leading edge new technologies, not fix bugs or obsess over UX details so it is not clear that this is actually going to happen. As a developer, I know these things can be rather dull to work on compared to inventing new things. It is however a strait forward and obvious path for Google to take. If it can manage to motivate a large enough portion of its engineers to at least temporarily concentrate their time on bug fixing, speed and polish, it should take little time for Android tablets to reach and maybe even surpass the quality of Apple's devices.
Still, in terms of overall user experience, the iPad 2 seems to keep its edge on every other tablets out there.
This prominence might however, be nearing its end. The lack of new features to catchup to means that in the near future, Google will have the freedom to spend significant time and resources fixing bugs, speeding things up, polishing the user experience and dealing with fragmentation issues.
Now I see Google, with it's geek culture, as a company full of people that want to work on leading edge new technologies, not fix bugs or obsess over UX details so it is not clear that this is actually going to happen. As a developer, I know these things can be rather dull to work on compared to inventing new things. It is however a strait forward and obvious path for Google to take. If it can manage to motivate a large enough portion of its engineers to at least temporarily concentrate their time on bug fixing, speed and polish, it should take little time for Android tablets to reach and maybe even surpass the quality of Apple's devices.
Friday, March 4, 2011
Who Is Starting New Android App Stores: Everyone and Their Dogs.
As a developer fairly successful on the Android Market (Speed Anatomy is soon to reach a million downloads). I am contacted almost daily by new companies starting their own Android App Stores. These companies are often associated with some international carrier or phone maker. They all claim to have special relationships that will get their stores installed on millions of devices.
Last year I tested five of these alternative app stores and concluded they all generated insignificant amounts of downloads.
Managing publication in five app stores took some time and was a distraction from actual coding and improving my apps. These stores all have different interfaces and features. Some event wants me to modify apps specifically for their stores.
I am writing this post as a once and for all answer to all the e-mails I get.
To all new app store companies, You are allowed to take the free ad supported version of my apps and distribute them in your store. Please get the .apk files from Google's Android Market. You may send me an email asking for explicit permission and I will say yes. I will not however, make a special build of my apps for your store. I will not agree to an NDA or any special Terms and Conditions. I do not have time to read legalese every day to determine if your store is worth my efforts. I do not have the money to hire business and legal staff to figure it out for me.
How to get me to sell my apps in your store:
Take the free version of my app and distribute it in your store to test reception in the market you serve. After that, send me an e-mail with statistics that prove to me that your store generates lots of downloads of my apps. If the numbers are high enough and you have a good reputation with users and developers, I will consider putting the effort of filling the paper work and reading your terms and conditions to get the paid versions of my apps in your store. If your process is not streamlined and easy to use, I will not complete it. If your terms and conditions make me nervous, I will give up on you.
Maybe someone should create a central broker for all these stores. I would be willing to agree to some standardized terms and conditions, send my apps to one place and fill a check mark for each store I want my apps to be in. This broker would have to make it easy and cheap to accept international payments.
I reality I'm not sure any company has enough weight to create an alternative app store that is worth selling in. Amazon you say? I hear their process and their terms are the worst of the bunch.
Last year I tested five of these alternative app stores and concluded they all generated insignificant amounts of downloads.
Managing publication in five app stores took some time and was a distraction from actual coding and improving my apps. These stores all have different interfaces and features. Some event wants me to modify apps specifically for their stores.
I am writing this post as a once and for all answer to all the e-mails I get.
To all new app store companies, You are allowed to take the free ad supported version of my apps and distribute them in your store. Please get the .apk files from Google's Android Market. You may send me an email asking for explicit permission and I will say yes. I will not however, make a special build of my apps for your store. I will not agree to an NDA or any special Terms and Conditions. I do not have time to read legalese every day to determine if your store is worth my efforts. I do not have the money to hire business and legal staff to figure it out for me.
How to get me to sell my apps in your store:
Take the free version of my app and distribute it in your store to test reception in the market you serve. After that, send me an e-mail with statistics that prove to me that your store generates lots of downloads of my apps. If the numbers are high enough and you have a good reputation with users and developers, I will consider putting the effort of filling the paper work and reading your terms and conditions to get the paid versions of my apps in your store. If your process is not streamlined and easy to use, I will not complete it. If your terms and conditions make me nervous, I will give up on you.
Maybe someone should create a central broker for all these stores. I would be willing to agree to some standardized terms and conditions, send my apps to one place and fill a check mark for each store I want my apps to be in. This broker would have to make it easy and cheap to accept international payments.
I reality I'm not sure any company has enough weight to create an alternative app store that is worth selling in. Amazon you say? I hear their process and their terms are the worst of the bunch.
Monday, February 14, 2011
How CIBC scammed me out of more than 2000$
I have been doing contract work with US clients for the past two years. Every time I got payed, I had to convert the money in Canadian dollars to use it here in Canada. I used to do this through a local branch of my bank, CIBC, and they always gave me an exchange rate that was about 3% worst than the spot rate. I was effectively giving away 3% of my salary to CIBC. I found this excessive and most of the time I did such a transaction, I inquired about any possibilities there were to get a better rate. I also asked friends in similar situations and even a few accountants and no one knew how to get a better rate.
Today as I went the convert the last of my 2010 USD revenues, I encountered what seems to be a rare case of an honest banker. I had given up on finding better rates so I was surprised when the Rideau street CIBC branch teller told me she could write me a bank draft to the Calforex outlet across the street and I would probably save about 2% on the conversion. It took 10 minutes to cross the street and get a check back from them in CAD. Had I known this two years ago, I would have saved thousands of dollars.
If you are a Canadian that gets paid in US dollars, do not convert your money through your bank. They run what can only be described as a scam.
.
Today as I went the convert the last of my 2010 USD revenues, I encountered what seems to be a rare case of an honest banker. I had given up on finding better rates so I was surprised when the Rideau street CIBC branch teller told me she could write me a bank draft to the Calforex outlet across the street and I would probably save about 2% on the conversion. It took 10 minutes to cross the street and get a check back from them in CAD. Had I known this two years ago, I would have saved thousands of dollars.
If you are a Canadian that gets paid in US dollars, do not convert your money through your bank. They run what can only be described as a scam.
.
Monday, January 31, 2011
Alternative Android Markets Numbers.
Four months ago, I submitted the Speed Anatomy (free version) to five alternative android app stores to evaluate their viability. I figured that I would later do the work to get the pay versions in the stores that generated enough free downloads. Unfortunately, none of the stores are currently very good. The stores I published in are: Mobango, AndroidPit, Appoke, AppsLib, and Getjar.
In the past 9 months, Google's Android Market has generated on average over 3000 downloads per day (dpd) for Speed Anatomy(free).
Here are the numbers for the alternative stores (past four months):
AndroidPit: 28 dpd
AppsLib: 6.8 dpd
Mobango: 2.5 dpd
Getjar: 1.8 dpd
Appoke: 0.4 dpd
Even the best alternative app store generates less that one percent of Google's Android Market downloads. In my opinion it is probably not worth the hassle to publish in these stores except maybe in AndroidPit and that's just because they have an excellent site with great UX and features for developers that make the process really easy. In term of site design, usability and features, AndroidPit is probably better than Google.
Another interesting factoid I have since Getjar gives download numbers by country, is that the majority of their downloads come from Iran: 69 versus 39 for all other countries in the past two months. I have no clue as to why.
So that's my experience with one free app on six app stores.
In the past 9 months, Google's Android Market has generated on average over 3000 downloads per day (dpd) for Speed Anatomy(free).
Here are the numbers for the alternative stores (past four months):
AndroidPit: 28 dpd
AppsLib: 6.8 dpd
Mobango: 2.5 dpd
Getjar: 1.8 dpd
Appoke: 0.4 dpd
Even the best alternative app store generates less that one percent of Google's Android Market downloads. In my opinion it is probably not worth the hassle to publish in these stores except maybe in AndroidPit and that's just because they have an excellent site with great UX and features for developers that make the process really easy. In term of site design, usability and features, AndroidPit is probably better than Google.
Another interesting factoid I have since Getjar gives download numbers by country, is that the majority of their downloads come from Iran: 69 versus 39 for all other countries in the past two months. I have no clue as to why.
So that's my experience with one free app on six app stores.
Monday, January 24, 2011
Top 15 Free Android Medical App: Speed Anatomy
Speed Anatomy was featured today in the top 15 free Android apps on the excellent medical app review site imedicalapps.com
Subscribe to:
Posts (Atom)