Slow Lane

Keymonk - an evolution of the smartphone keyboard

I have recently started a company and published a closed source application.

Keymonk is a keyboard for Android that lets you sweep words with two fingers:
https://play.google.com/store/apps/details?id=com.keymonk.latin

It is a significant evolution over traditional sweep keyboards. Its premise is that since the QWERTY keyboard is designed to maximize hand alternation while typing, it should be beneficial to be able to sweep words with both fingers, each at its side of the keyboard.

For example, to input the word ‘make’ with a traditional sweep keyboard you would start at M, sweep to the other side of the keyboard to A, then all the way back to K and again to the other side for E. With Keymonk you may instead start with your right finger at M and your left finger at A, then sweep your right finger to K and your left finger to E, resulting in two short and natural sweeps:

Sweeping the word 'make' with Keymonk

I find it very convenient for inputting large amount of text nearly as fast as I would with my laptop keyboard. Young people seem to get the hang of it quickly.

It is currently enabled for download in English speaking countries.

The Normalized Decline of Free Software

Take a look at these two graphs from “Google Insights”. They show an ongoing decline of GPL, GNU and Linux in normalized search volume:
http://www.google.com/insights/search/#q=gpl%2Cgnu%2Cebook%2Copen%20source&cmpt=q
http://www.google.com/insights/search/#q=linux%2Cpc%2Candroid&cmpt=q

One possible interpretation is the decline of the desktop and rise of smart phones and digital consumerism, but note the search term PC is stable in the second graph. Another possible interpretation is that GNU/Linux people are the “early adopters” of the Internet and the decline is expected as the Internet reaches more and more people, but nevertheless I don’t like these graphs at all.

rconsole - Remote Python Console

rconsole is a new Python console that you can attach to a running script to inspect and modify its namespace. I hacked it up since I did not find a simple to use alternative to inspect a daemon process.

rconsole is included with the rfoo package at http://code.google.com/p/rfoo/.

To invoke it within a script add the following to its code:

from rfoo.utils import rconsole
rconsole.spawn_server()

To attach from another shell do:

$ rconsole

rconsole is not a debugger and does not freeze the script. You can think of it as a window into the belly of a long running script. It is lightweight and non-disruptive. You may leave it inside production code and attach when you need to check in on the health of a long running script:

  • Import guppy.hpy into a running script to investigate memory leaks.
  • Change function definitions and reload modules on the fly.
  • Inspect live internal data structures.

Copyright and Delayed Release

Ever since I discovered Free Software I was haunted by the problem of developing software sustainably. Today I would like to suggest a possible model which may be suitable to individual developers and small business. That is, distributing software using relaxed non Free Software license, combined with releasing each modification as Free Software a determined time after its introduction, or in other words - Delayed Release.

This approach may be inline with views expressed by Richard Stallman in an interesting article on Copyright by the title “Misinterpreting Copyright—A Series of Errors” (1). Referring to copyright on software he writes “In my own field, computer programming, three years should suffice”. Stallman does not reject copyright as a concept but is interested in “Finding the right bargain”.

Possibly the most well known scheme for developing Free Software profitably is that of charging for related services. The problem is this model requires business skills most software developers do not have and is often not even applicable.

With Delayed Release, software developers may have easier time developing Free Software profitably, leading to increase in production of Free Software. Once people find that ideals of Free Software can practically co-exist with their realities, those ideals will have easier time spreading.

(1) http://www.gnu.org/philosophy/misinterpreting-copyright.html

160,000 IPC Calls per Second in Python

rfoo is a new Python RPC package which can do 160,000 IPC calls per second on a regular PC. It includes a fast serialization module called rfoo.marsh which extends the Python built in marshal module by eliminating serialization of code objects and protecting against bad input. The result is a safe to use ultra fast serializer. Go get it at http://code.google.com/p/rfoo/

Interface of rfoo.marsh

rfoo.marsh.dumps(expression)
rfoo.marsh.loads(binary_string)

Serve RPC method to clients

class MyHandler(rfoo.BaseHandler):
    def echo(self, str):
        return str

rfoo.InetServer(MyHandler).start(port=50000)

Call method on RPC server

c = rfoo.InetConnection().connect(port=50000)
rfoo.Proxy(c).echo('Hello, world!')

The State of Free Software

It is easy to identify a Free Software project. It includes the term “Free Software” in its website. Open Source projects created by corporations, by hackers who reject the ideals of Free Software or by developers who do not know the difference NEVER include the term.

Some notable Free Software projects are therefore:
http://www.debian.org/
http://www.gnome.org/
http://kde.org/

There are of course many others and please comment with your favorite ones, but in fact, if you try to think of a recent notable FOSS project and check out its website you are most likely to find it is an Open Source project rather than Free Software.

For example, Apache, Lighttpd, MySQL, PostgreSQL, Python, Django, Drupal, Firefox and others.

For those of you who wonder what the difference between Free Software and Open Source is, I recommend the following article: http://www.gnu.org/philosophy/open-source-misses-the-point.html

There can be several reasons why this is the state of Free Software. I believe one of them is that there is no economical energy behind Free Software.

Revolutionary Technology

Where I live the media goes on and on about how The Iranian people is using web technology against its regime - for example Twitter, Youtube, e-mails and also cellular phones, SMS, etc… These technologies are described as giving an upper hand to the people as opposed for example to the revolution which took place 30 years ago.

I think this technology is actually being used against the people. You can not use it without being completely exposed. Anyone using it is being monitored and ironically has his/her social network mapped. Once someone is determined to be an organizer or worth the effort of taking down, he/she can be easily arrested.

The Spam Therapist

Standard captcha are either broken or are an accessibility nuisance or both. In its most noble form - reCaptcha - it is used brilliantly to digitize books and provide people over at India with a living:
http://recaptcha.net
http://blogs.zdnet.com/security/?p=1835
http://www.w3.org/TR/turingtest/

Smart engineers all over the world are busy trying to invent the most inaccessible new generation captcha possible, which typically involves analyzing or playing around with images.

However, it came to my mind recently that there might be another way, accessible and more faithful to the original Turing test (en.wikipedia.org/wiki/Turing_test). Can a computer administer an effective textual reverse Turing test to block registration spam? Can Eliza, the friendly nonsensical therapist, the famous first Turing test runner up, do that?

Imagine you try to register a new account at web20.com and suddenly Eliza pops up and asks you to elaborate on why you chose to submit the spammy looking email address john23kjdsf784@mail.ru

Seriously, spam filters such as Akismet (for blogs) or Gmail have become so efficient that they have practically eliminated comment and email spam. By requiring a registrant to submit enough textual information it may be possible to apply these filters to registration spam.

In addition, such a conversation, while being entertaining enough for the casual registrant, can be too time consuming for professional-human-captcha-solvers, relieving the potential problem of relay attacks.

Finally, if a new developer vs spammer war ensues around chat captcha we will soon see the first computer to pass the Turing test ;)

Tip of the Day

Tip the author of this program Preview Image

Would you ever leave a restaurant table without tipping the waiter?
Would you ever pause to enjoy street music without tipping the players?
Would you ever get out of a cab without tipping the driver?

If you don’t think Winpdb is worth a cent or a minute of your time, why use it?

Free Ignorance

Here is my five-months-late take on the Negroponte-Microsoft love story announcement. It is an ironic story in which the FLOSS community is harnessed to pull the OLPC wagon to Africa and goes ballistic when told that they have to carry Microsoft in that wagon as well. I say that anyone in that community feeling betrayed can only complain of his or her own ignorance.

Take a look at Negroponte’s announcement (http://www.olpcnews.com/people/negroponte/nicholas_negroponte_sugar_olpc.html): The term Open Source appears 27 times in the announcement and comments while Free Software appears in one comment only where it is being slammed. Take a look at the Wikipedia article on OLPC (http://en.wikipedia.org/wiki/Olpc): The term Open Source appears 7 times but nothing there on Free Software.

Well, isn’t Open Source all about that corporate-friendly magical method for creating high quality software? Not about user freedoms or hating a particular corporate. You would think the FLOSS community members who feel strongly about something would actually know what it means, right? wrong.

And guess what, there is a two years old interview with Stallman on YouTube in which he warns of such an occurrence (http://www.youtube.com/watch?v=fBogiLGPMwA). This is what he says beginning on minute 08:45: “I ask you to please always call it Free Software because that way you will encourage other people to pay attention to the question of freedom. The term Open Source was formulated by people who did not want to talk about freedom and that is the stupidest thing any people can do. If people don’t talk about freedom it gets forgotten and then somebody says ‘if you will just accept these little restrictions, here is this convenient pleasure you can have’, essentially saying ‘we will sell you something in exchange for your freedom’. And if you have not been thinking about freedom and realizing what freedom means, you might accept that poisonous deal and then your freedom is gone.”

The Tychod

Tychod stands for Tycho debugger which is a reference to a story/article by Richard Stallman called “The road to Tycho” about a world where possession of a debugger has been made illegal to prevent people from working around DRM mechanisms.

An interesting point that Stallman discusses in another article “The GNU Project” is that popularity of free software is spreading faster than the philosophy of freedom that motivated it. This is what he says:

Estimates today are that there are ten million users of GNU/Linux systems such as Debian GNU/Linux and Red Hat “Linux”. Free software has developed such practical advantages that users are flocking to it for purely practical reasons.

The good consequences of this are evident: more interest in developing free software, more customers for free software businesses, and more ability to encourage companies to develop commercial free software instead of proprietary software products.

But interest in the software is growing faster than awareness of the philosophy it is based on, and this leads to trouble. Our ability to meet the challenges and threats described above depends on the will to stand firm for freedom. To make sure our community has this will, we need to spread the idea to the new users as they come into the community.

But we are failing to do so: the efforts to attract new users into our community are far outstripping the efforts to teach them the civics of our community. We need to do both, and we need to keep the two efforts in balance.

A GUI Builder for Python

Would you like to have a usable GUI builder for Python? Do you feel as I do that such a tool is missing? I have been planning it in the past months and an initial document is available at http://docs.google.com/View?id=dfvzvswt_13g7bn9fdg. I would love to have your opinion. I will only be able to develop this project effectively if I can find a sponsor so it is currently being developed rather slowly on my spare time.

GPL and the Copyright Problem

First I chose GPL for Winpdb, then only 2 years later I actually discovered Free Software, what it stands for and the fascinating universe behind these two words, but now a year later I have stumbled on a problem.

GPL is a tool that uses copyright to enforce software freedom, but… in order to be able to enforce that there must be a copyright holder that can take action. The FSF is aware of this and is carefully requiring contributors and their employers (!) to sign legal papers of copyright transfer: http://www.fsf.org/licensing/licenses/why-assign.html

The problem is that most GPL projects can not afford to force potential contributors to get their employers to sign legal papers as it will reduce the number of contributions to 0 and therefore the copyright to their projects is either dispersed among the different contributors or even worse, is questionably held by a single person or entity (with emphasis on questionably).

What does that practically imply on GPL?

On my search for answers I stumbled upon an interesting article from the year 2000 in Advogato (A recommended site). It became even more interesting when I spied a comment by one Bram Cohen who at the time was little known in the Universe as he did not yet leave his job to write BitTorrent: http://www.advogato.org/article/183.html

I would appreciate your educated opinion or a reference to articles on this subject.

Fast Lane

Winpdb 1.4.8 Tychod Released

Winpdb 1.4.8 was released. This is a maintenance release that fixes compatibility issues with Python 2.7 and 3.x. You can download it from winpdb.org/download. Work on this version was sponsored by Investortools Inc.

Simple Solution to Classic Problem in Software Development

Pick a good sized CS book and put it in front of your monitor so that it hides the screen unless you sit up straight.

Scalability

The world is a giant OS with a mysterious scheduling algorithm.

Ice Programming

Programming is like Ice Sculpting. For me programming is an art form. At its best it is driven by muse, involves a technical achievement, and is a form of expression. But as an art form programming is like Ice sculpting. It lasts for 5 to 10 years and then returns to the mind of its [...]

Bigfoot Linux

I’ve got a Core 2 Duo with 3GB of memory running Ubuntu 64 bit and it can barely handle 3 or 4 applications I use for everyday development work.
Both memory usage and CPU load are annoyingly high. Firefox has about 5-10 open tabs and needs restarting every day or so unless it crashes unexpectedly.
I typically [...]

Code is Poetry

Code is like poetry, difficult to understand and often has other meaning than intended.

Superman, Where Art Thou?

Two years late I have stumbled on this ongoing unreal Gotham style cyber crime - the Storm Botnet - An ants-nest like hydra made of 100,000 to 50,000,000 infected computers using p2p technology with enough combined power to knock countries off the Internet, involved in a variety of crimes and attacking any institute attempting to [...]

define:irony

This is from the Linux magazine: “Just days after Stallman finished celebrating the 25th anniversary of his GNU Open Source project, the controversial free software activist was again making headlines.”
www.linux-magazine.com/online/news/richard_stallman_cloud_computing_a_trap

Winpdb 1.4.6 Tychod Released

Winpdb 1.4.6 Tychod is now available for download at http://winpdb.org/download. As of this version Winpdb can debug runaway recursions. Runway recursions are an Achilles Heel of all Python debuggers. Since debugger logic is invoked with each new script frame, recursion limit is naturally hit by debugger code causing it to break down surprised, corrupted and defeated. First among its kind, Winpdb now handles recursions gallantly, effortlessly, with a smile. Try it.

Hopeful Again

I hope no one who implemented CSS support into IE6 works in the software industry anymore.

Next Page »