Milan Zamazal's Weblog RSS feed

20 years with Emacs
13th May 2012

IIRC, it was about 20 years ago when I ran Emacs for the first time. I originally used it on a System V system as a civilized alternative to vi editor. But during the time I became an Emacs power user, learned Elisp and started to use Emacs as my primary working environment.

Emacs, as a truly extensible text editor, is an excellent environment for implementing text handling applications (and not only them). I use it as a planner and information storage system (including things like flash card training), mail and news reader, powerful command line processor (better than readline which is limited by terminal capabilities) and command line debugger interface, file manager, interface to Unix tools, git interface, Common Lisp IDE, remote file handler (no need to run a separate Emacs instance on the remote machine), Jabber client, music player, etc.

Emacs applications use to be very powerful. I don't use the above mentioned applications because they run in Emacs but because they work better for me than anything else I've tried. There are several reasons why it is so. Emacs applications often implement just user interfaces to standard tools such as ls, grep, ssh, git or debuggers without duplicating their functionality. Most user activities are based on some sort of text processing regardless the graphical elements of their user interface and Emacs is strong in text processing. Emacs provides high level programming environment with powerful and simple to use customization features. Emacs makes a uniform platform encouraging code sharing among its applications. Emacs is used primarily by power users so it can focus on usability rather than on handling ignorance. And finally Emacs attracts creative and skilful programmers. All these features together make Emacs a unique development platform.

One notable missing feature in Emacs is a Web browser. Emacs didn't catch up with Web progress and there is no generally useable Emacs Web browser. But hopefully Emacs will be able to build something based on interaction with an extensible Web browser environment using XEmbed or so in future (some experiments with Uzbl have already been done).

An important Emacs feature is its stability. When I first started to use Emacs, after using buggy MS-DOS IDEs, it seemed to me there are no bugs in Emacs. Of course, Emacs is not perfect and there have always been bugs in it, but it took a few years before I actually experienced an Emacs bug for the first time. Now, when I use Emacs for many activities, I meet bugs more often but their number and importance is still acceptable, in comparison to applications I had to abandon because they started to expose unacceptable functional or usability problems. But stability is not only about bugs, it's also about persistent consistency, code quality and documentation; Emacs has always been strong in these areas.

I use to be quite critical to software, for good reasons. But my twenty years with Emacs were happy. Since I started to use Emacs I've always been mostly satisfied with it and I've never had to look for a better alternative. I consider Emacs being an excellent demonstration of how free software, free of direct commercial pressures and combined with a community of excellent software developers, can successfully survive and continuously evolve for decades. I assume Emacs will continue to grow in future and will remain my primary working tool, perhaps forever.

Tags: software.
European Union
9th March 2012

My country, Czech Republic, has again expressed strong objections against future changes of the European Union. This is for the second time, after our president refused to sign the Treaty of Lisbon.

I'm not going to analyze the reasons and legitimacy of those actions. (By the way, it's necessary to remark that there is no consensus about them in our country.) I'd like to explain what's the major problem with undermining the European Union and why I consider it inherently harmful.

Some people think there are wrong things with the European Union and the solution is to weaken or destroy it. Yes, there are wrong things with the European Union. But the "solution" desired by the EU antagonists is completely erroneous, whether intentionally or not. The problem is there is actually no alternative to a strong European Union and I can't believe things would be any better without it. We must accept this fact, whether we like it or not, and to try to do our best to make the European Union better. Thus when we fight for or against the European Union itself we just waste resources that could be utilized for useful activities, improvements and changing what is wrong. The challenges of cooperation, integration and globalization are demanding. When we have to defend the obvious facts, we are distracted from solving the real problems. This is where the opponents of the European Union score and contribute to their goal, while making harm to all of us.

As a software developer I daily use things and work with things which are wrong, often very wrong. But I have to continue working with them, fixing them and to look for ways how to deal with all the problems. Regardless how much I'd like to get rid of it and throw all the buggy software out of the window together with my computer, I don't do it. You see, the decision to stop using computers is no real alternative. They are here, we need them and they are, ehm, often useful.

Tags: other.
Free Software Foundation supporter
3rd January 2012

I've been a free software advocate for nearly two decades. Supporting and promoting free software hasn't been easy. Some effort and actions were more successful, some less. But we've achieved a lot during the time and we might get satisfied with the results.

But after continual raise and success of free software in the last years we are probably in a period of its decline now. While new free software still gets written and improved, proprietary software strikes to push it into irrelevance. Although free software is common on PCs now, most other devices like phones, tablets, routers, multimedia players, GPS units, e-ink readers, TVs, printers, etc. are basically proprietary software devices (despite the fact they are often built on top of free software products such as Linux and BusyBox), without possibility to replace the proprietary environment by a free operating system. DRM is still not dead. The patent wars continue. And even our basic PC software freedom can become inconspicuously stolen by proprietary software hidden in the form of some software as service products. We are in danger to be thrown back to the beginning.

So I started the new year with increasing my yearly donations to Free Software Foundation and donating to its current fundraising campaign. I believe that what Free Software Foundation does makes sense and supporting it financially is in some sense the simplest thing to do. If you care about the future of free software, please help FSF to reach its current fundraising goal as well or try helping free software in any other way.

Support freedom
Tags: freesoft.
Linux drivers
30th December 2011

I bought a new input device, Wacom Bamboo Pen & Touch tablet. I was careful enough to buy an older model and to check the device is supported on Linux. Based on my previous experiences I also tested the tablet on a Windows computer to be sure it actually works and I can handle it, so that I'm sure contingent faults on Linux are caused solely by the drivers and are not hardware or user defects. Installation of the Windows driver was quick and easy and the device worked well immediately.

Then I tried to get the device running on Linux. I installed a newer 2.6 Linux version, reported to support the device, and the newest released version of X.Org Wacom drivers. I added appropriate sections to my /etc/X11/xorg.conf. So after some hours of googling and updating the system I got an environment which should be ready for testing the tablet.

I restarted the X server and ended up with a frozen black screen, having to use a reset button on my computer. This situation had repeated for several times until I discovered the Wacom driver conflicts in some way with a Wizardpen driver, causing crash of the X server without recovering the keyboard and console. So I commented out the Wizardpen input device in xorg.conf and then could start X without having to reset my computer anymore.

The pen function worked well but the touch function didn't work well and the tablet buttons didn't work at all. I found out that although the given model number of the tablet should be supported in newer 2.6 kernels, there are actually several variants of the model and the newer ones are not supported in those kernels. So I installed the newest version of the tablet kernel drivers for Linux 2.6.

The touch function started to work in a different but still unusable way. After some exploration I found out that while the tablet kernel drivers support several versions of 2.6 kernels, not all fixes are backported to all the supported versions. My Linux was too old so I had two options (not counting giving up on using the touch function): either to backport the changes myself or to upgrade my system to a development version. I decided to upgrade and the touch function finally started to work with a recent 3.1 kernel, after I was forced to abandon my stable OS installation (I couldn't upgrade just the kernel because it was necessary to recompile OpenAFS modules for it, which is possible only with new gcc, which depends on new libc, etc.).

Nevertheless gesture recognition still didn't work as expected. I had to install the latest development version of X.Org Wacom drivers to fix that.

Tablet buttons still didn't work. After some guesswork I could get them working by changing my X.Org configuration, a wrong device was used in the sample configuration copied from wiki. After another round of googling I finished the device installation by tweaking the unsuitable acceleration settings, by adding tablet rotation support to my screen rotation script and by remapping the buttons. After many hours of googling, reading, editing, compiling, reseting and experimenting the tablet still doesn't work as well as on Windows after five minute installation, because of the limited set of supported gestures, but at least it can now do everything my mouse can.

Lessons learned:

In summary, device drivers demonstrate big problems. Hardware vendors are generally uncooperative, there are insufficient resources for reverse engineering and development and documentation of free drivers, software development practices are generally poor. If a device ever becomes reasonably supported, its remaining driver problems are unlikely to get ever fixed once the device vanishes from the market.

I consider device drivers being big blockers of development and adoption of new advanced operating systems. I could tolerate various problems of experimental operating systems, but it's hard to get any serious interest of new users and developers when the hardware doesn't work or suffers from big performance problems.

Is there a solution? I can't see any. Perhaps the only hope may be making coordinated campaigns targeted on hardware vendors and coming of new clever and enthusiastic Linux kernel developers.

Tags: computers, os.
E-ink reader
17th December 2011

In spite my recent rant about such devices I decided to buy an e-ink reader. The primary reason was that it's uncomfortable for me to read long texts on a monitor. My requirements were: Large screen, stylus and a usable SDK. Considering the requirements there was only one acceptable e-ink reader I could find on the market, PocketBook Pro 903, so I bought that one. What is it like?

E-ink reading fulfills my expectations. The "large" screen is rather small, only about A5 size, but a larger device would be impractical. The resolution is poor (compared to prints) but acceptable. The contrast is rather low but sufficient. That all doesn't sound encouraging but don't get mistaken: The reading experience is much better than on an LCD display, my reading problem is gone and I was surprised how much I can read now. It's just that e-ink readers are at their beginning and there is a lot to improve in future.

Another observation is that replacing the pile of periodicals and printed papers by an electronic storage makes things better and allows their more efficient processing. There is less mess on my table, the papers can be read concurrently without loosing bookmarks, it's possible to separate a common reading queue from manuals and other permanent documents, etc.

Now to the less positive things. The very first thing you experience is the software license agreement. It says basically something like that the software is crappy, the vendor is proud of its bugs and you're no way allowed to try fixing them, with the unfortunate exception of some pieces of free software included. Perhaps it's just worded like other proprietary software agreements, but it's sad anyway.

Nevertheless the software is not as bad as you might think after reading Internet forums. It's not very good but it's usable, especially the current beta firmware version (among others adding multitasking and page browsing improvements). I had to use the reset button within the first 24 hours of owning the device when I connected a USB cable during booting but it has never happened to me again since then (I no longer connect a USB cable during booting). Applications don't crash much often and the crashes seem to be related to certain actions rather than being random. Some things work well while other don't. Once you discover what you can do safely with the device and how to utilize it effectively, it's rather stable and it's possible to read various kinds of stuff. Not perfect, but usable.

I can't blame solely the vendor for the quality of the software. They could do more but they are mostly dependent on what is already available and it seems e-reading software is generally immature. It's good that the device is not completely closed. For instance the provided RSS reader is unusable for me and other RSS fetching means don't satisfy me much either. So I decided to create my own custom RSS fetching script using standard Unix (BusyBox) tools on PocketBook and it works well.

The included dictionaries are not very small nor very big and don't include sufficient grammar information about the words. They are useful to occasionally translate words during reading and they may be useful when travelling. Not much more. For some strange reason there is no German-English dictionary included. I'd like to have an easy option to use free dictionaries.

The speech voices I tried are of very good quality. Text to speech processing handles pronunciation well but its interpretation of punctuation and other special text is poor. The speech synthesis is apparently too demanding for the device, it makes long pauses between sentences.

The web browser is not very comfortable but it's usable, even for occasional webmail reading. It would be even more usable if webmasters weren't idiots. There are actually two web browsers, two PDF readers and two e-book readers installed, so you can try the other application when something doesn't work well (very useful!).

Wi-Fi works without problems. It's possible to use Bluetooth headphones, at least with the beta firmware. It's just confusing the corresponding menu entry is missing from Czech menu, I had to switch to another language to access it.

It's fine and useful that the device can be mostly handled without using stylus (with the obvious exceptions such as drawing). The touch screen is not very responsive. It's probably not a problem of my particular device as it can be observed in some review videos on YouTube as well. It looks more like a software rather than hardware problem to me.

Finally, I don't understand what's the purpose of the bookland.net site. It's just a heap of overpriced books. But nothing forces me to use it so I don't care.

Tags: hardware.
A successful free software project funding
17th November 2011

People don't like paying for music and they don't like paying for software. It is not easy nor common for an individual or a small project to gather any significant money for free software development, i.e. to get real compensation for some work and to make living of it.

But fundraising for this SBCL work on threading improvements by Nikodemus Siivola was completely successful and the first fruits of that project are already available. SBCL is a free Common Lisp compiler and Nikodemus Siivola is one of its respectable developers. Common Lisp community is somewhat special, SBCL is popular and some people use it for their private business. Maybe these facts explain the success of the campaign, who knows. Interesting.

Tags: freesoft.
Driver info update
15th November 2011

Updates on my driver info pages:

Tags: computers, hardware, os.
Proprietary, proprietary, proprietary
31st October 2011

A famous businessman has died some time ago and the whole world has praised him as a hero who changed the computing. Well, there were some more realistic views (e.g. rms), but those exceptions were hardly noticeable. We like celebrities and we prefer listening to heroic myths rather than to unpleasant truths about less or more successful attempts to enslave users or to make an artificial monopoly. And the true heroes remain unnoticed. How many of the upstream media have mentioned recent deaths of the highly respectable men, Dennis Ritchie and John McCarthy, who have (really) contributed much to the computing and moved it forward?

We should pray for our enemies but we shouldn't accept their apples. Thanks to visionaries like Richard Stallman or Linus Torvalds we can enjoy software freedom on desktop computers. Not everything is perfect and there are still many white areas but we can use, share and modify a complete operating system including numerous applications on our PCs and we can use computers for real work, education and entertainment without artificial restrictions. We have been fighting for it for many years and we have won the battle. But there are areas where we are in danger to be thrown back to the beginning and becoming relevant only as blunt business units.

Tablet computers and smartphones are very popular nowadays. In theory they are capable of being general purpose personal computing devices but they miss something. I can't call something that can't run my everyday tool, Emacs, nor most of the other applications I use, a personal computing device. It may serve relatively well as a toy or a single purpose platform, but not much more.

What's the problem? Most contemporary tablets are devices of two sorts: Either the popular apparatus on which you can't install without vendor's permission even software you write yourself, or the Google Android devices. I can't take the first category seriously at all (I don't use shareware). And Google Android is a semi to fully proprietary system incompatible with GNU/Linux and X Window System, i.e. excluding most PC applications (unless one is willing to experiment and at best to go through the limitations of chrooted VNC environments). Sure, it's Google's business and they can produce any operating system they like. The strange thing is that hardware vendors prevent us from installing other operating systems on their devices. Either they try to prevent installing them at all or they demonstrate a strange split behavior, e.g. when a certain vendor suggests installing GNU/Linux on their devices with a clear warning that this action will void your warranty. What does the installed software have to do with hardware warranty? Well, at least HTC has promised to officially permit booting other operating systems, we'll see what happens.

Other strange area are e-ink readers. I've been watching them a bit for a few years and I wonder why they remain basically single purpose closed devices. Sure, e-ink displays aren't well suitable for running applications in traditional ways. But what the e-ink devices offer in their "firmware" (an euphemism for a proprietary operating system) is far below my expectations and imagination (and prevents me from buying any of those devices). At best you receive some semi-supported SDK to create your own applications while not being able even to fix what you already receive. I can understand delivering a few pieces of primitive and buggy software is initially simpler and cheaper than cooperating with community of users and third party developers. But it's sad the crowd effect or whatever else discourages everyone from becoming a niche leader by producing a reasonably open device.

There are other categories of devices such as routers, phones, media players, etc. which suffer from the same problem. You can look around and to see how proprietary software extends, regardless of the fact that many of the systems are based on the free Linux kernel. We should do something (more) about it otherwise we return back to where we were some twenty years ago.

Tags: computers, freesoft.
Sensor cleaning
28th July 2011

My digital camera sensor got dirty enough and it was no longer possible to clean it just by softly blowing air to it. So I looked for a more powerful cleaning solution. After some searching I decided to try Pentax Image Sensor Cleaning Set O-ICK1. It looked simple and didn't require any liquids. Does it work?

I wasn't much successful when carefully following the instruction manual. But then I applied somewhat stronger pressure than suggested and it started to work very well. My sensor is sufficiently clean now.

Here are sample images (crop of the same resized area) before and after the cleaning (please ignore the sky in the background and look just at the dust spots):

http://weblog.zamazal.org/images/before-cleaning.jpg http://weblog.zamazal.org/images/after-cleaning.jpg

Tags: photo.
Linux Containers
27th July 2011

Until recently I was a relatively satisfied Linux VServer user. But when I upgraded to DebianĀ 6 about half a year ago, OpenAFS aklog stopped to work inside the guests. There were always problems with running OpenAFS clients inside VServer guests but this time I couldn't find any workaround. I had to solve the problem and I had to act quickly.

As VServer didn't look useable anymore I decided to move to Linux Containers. It's a similar virtualization approach, implemented in a different way. I can't provide any expert comparison of the two solutions as I'm just a home user. Here are my simple observations.

Linux VServer is generally more mature product (no wonder, it has been around for some years). It provides better management tools, including things like vserver-stat (summary information about running guests and resources consumed by them), vserver stop (safe stopping of a guest), vserver enter (a way to enter a guest directly from the host) or vapt-get (batch invocation of apt-get over all running guests). It defines a finer set of capabilities, e.g. you don't have to set the big CAP_SYS_ADMIN permission just to be able to use FUSE. And it contains hashify with the copy-on-write feature to save main memory, memory cache and disk space.

Linux Containers allow me to run some things in the containers that I've never managed to get running inside VServer guests (new OpenAFS aklog, OpenVPN). They provide more sophisticated device isolation (mknod /dev/null possible without permitting too much) and network isolation (each container can have its own routing and filtering rules). Configuration is easier. And they are included in the official kernel source. On the other hand they lack some important features provided by Linux VServer and I experienced several less or more annoying problems (but none of them preventing me from using Linux Containers completely). The implementation may improve rapidly, so it can be better now.

Both the projects lack good documentation.

There is some lesson with Linux VServer and Linux Containers. AFAIK, Linux developers have originally rejected the Linux VServer idea as unnecessary for several years. Apparently during the time they changed their mind and Linux Containers are here. The result of the lost years is that we haven't got a complete and well working solution yet. Well, we know that progress is sometimes constrained by our mental barriers.

Tags: os, software.

RSS feed

Created by Chronicle v4.6