Open Source

Good post on OSNews about Linux’s maturity

Tuesday, February 8th, 2005

That’s the truth, be it sad or good, windows XP/XP-Pro they do just work “out of the box”. Install the driver given you by the vendor of the machine (or preinstalled), and voilĂ , a wifi is automatically detected, acpi works perfectly, soundcard has never been “blocked” (I learned this could happen working with Linux…), and, last but not least, printing is quick, easy, and standard of all the applications, not the nightmarish list of “todos” of the typical linux environment.

Mind you, I used Linux for 8 years, but I give to Cesar what Cesar deserves: for sheer usability of the machines features, for “mindless” operations throughout, there’s no comparison at all…
I can close the lid of my laptop now, go to sleep, and reopen it and everything working in a second; I had to twitch even the kernel sources to get that from Linux, and never reliably…

I think it’s time to stop being geek-minded and be honest: Linux needs a lot to become a viable desktop platform for the masses; the sooner developers realize this, the better.

Otherwise, desktop linux will be only for programmers, curious (and affected by a light form of sadism) people, and people who use its incredible tools and power for something very specific, like simulations, where a Desktop environment is probably useless anyway.
Eugenia is right: why do I have to find a solution to watch Star Wars trailer when it*s obviously supposed to just click&work? is it the computer who has to relieve me of some work, or vice versa?

Lorenzo

Right on. Linux is great for me to work on because everything already “just works” for me. Once you do your tweaking and reading of newsgroups, you can actually get to work. But the second I had to install Linux on my new laptop, I was back to the old tricks.

Linux has a ways to go, but what’s interesting is that it is not that far away, and all these changes are coming. Once Linux gets to the point that things “just work,” then what do we have? Well, we have a free OS that works as well or better than Windows XP, and also comes with tens of gigabytes of free software, excellent package management, a great developers community and powerful new ideas everyday. In other words, computers in the ideal.

Whereas with Microsoft, the “just works” part is there, but all these other elements are missing, and there are no efforts to get to them. Will Microsoft Windows ever have the enormous free and open source software movement that Linux has surrounding it? No. Will it ever get powerful UNIX integration beyond Services for UNIX? No. Will it ever get a development community that is smart, clever, active and passionate? Not so long as IT reigns.

Linux has that glimmer of what computers could be in it, but it’s just missing on some of the basics. But we’ll get there.

New Years Resolution

Friday, December 31st, 2004

To upgrade this website to Movable Type, among other things.

Last-minute hacking with my version of Metacity, and I finally got what I wanted. Basically, I was using xfwm4 for window management, and since it is NETWM compliant, I was supposed to notice no difference at all in GNOME. Except that’s not true, since xfwm4 doesn’t know about gnome-panel, and since a lot of useful hotkeys I want to use in gnome-panel are generally bound in metacity. Plus, the gnome theme manager doesn’t work without metacity. So, shame on GNOME developers, basically. You claim you are compliant, but you aren’t.

But then I did some reading and figured out metacity is actually a bit better than xfwm4 anyway, just that some of its features are hidden in gconf and other places. Also, someone has coded a neat app called devil’s pie which lets you manager your windows at a very fine-grained level, which I like… though it is a bit buggy right now, it shows promise.

So, the main thing I was annoyed by is vertical/horizontal maximize. xfwm4 has this working fine, and I’m quite used to it. Metacity doesn’t treat it as a “toggle,” so if you hit maximize vertical button twice, you just sit there with a maximized window… it doesn’t switch back and forth. I find this annoying since when I have vim windows open, sometimes to see more I just quickly maximize vertical rather than scrolling down, and then toggle it back afterwards.

Someone coded a patch to this. You can find it on bugzilla here at Bug #113601. Unfortunately, no one has written a “proper patch” that also works with session management and such, but I don’t really care, I wanted this patch to get back to work. So, in order to jive with my Ubuntu system, I created some debs with the patched version of metacity.

Retchmail

Sunday, December 12th, 2004

So, ESR always talks about how fetchmail is the best UNIX program on the planet: well-written, standards-compliant, stable, etc.

That’s why I use it (with procmail) instead of downloading messages with something like evolution or thunderbird. Basically, evolution isn’t standards compliant and so it doesn’t deal with my mail server well, and thunderbird is ugly.

But evolution does let me use normal mail spools, which fetchmail and procmail can deliver to.

But fetchmail is annoying in some ways. For one, it stores passwords in clear text, in the /etc directory, and ESR thinks that’s good enough. If you don’t want to run daemon mode (like me), since I want to be able to quickly download the latest e-mail, that means plain text passwords in my home directory. I’ve written a shell script fetchmail wrapper that gets around this restriction so my password is never stored on my hard disk at all, but only passed from my keys to fetchmail directly, but what a pain, really (I wrote this a few weeks ago).

Now the other thing is that i have four mail accounts and it serializes access! Jesus! It doesn’t open up connections to each of my accounts, stick messages in some buffer and then write them to disk serially. Instead, it does wait-request-wait-request for each message of each account in order, and then at the end of a message download it actually delivers the message to procmail. So that means it takes me about 30 seconds to check mail on my four accounts, whereas it could take as long as my slowest account (pixelmonkey), which is about 10 seconds.

So, I just found it funny that someone got so fed up with this that they wrote retchmail. Here’s a quote, and a link:

quote:

Eric S. Raymond’s Fetchmail is a full-featured, robust, well-documented remote-mail retrieval and forwarding utility intended to be used over on-demand TCP/IP links (such as SLIP or PPP connections). It supports every remote-mail protocol now in use on the Internet: POP2, POP3, RPOP, APOP, KPOP, all flavors of IMAP, ETRN, and ODMR. It can even support IPv6? and IPSEC.

Oh, you were asking about RETCHMAIL. Sorry.

RetchMail is the world’s most stupidly fast POP3 retriever.

It is almost completely unlike fetchmail: RetchMail lacks features, isn’t particularly robust (although it won’t delete a message until sendmail says it was delivered okay), has nearly no documentation, and is actually fast.

5. Is RetchMail standards-compliant?

Quick answer: HA HA HA HA HA HA no.

Just to be extra clear about this: yes, it is morally wrong for us to have written RetchMail, and it is morally wrong for you to use it. But try it, it’s really fast!


Heh, that’s open source; it’s all about choice. Here’s a link.

Transparency

Saturday, December 11th, 2004

I read this on a Gentoo forum today about Alsa’s DMIX plugin:

quote:

I mean, why can’t they make a _transparent_ software mixer? Why must every software be “updated” and “configured” to support the software mixing thing? Why on Earth couldn’t they make a plugin that needs no attention from the actual software, but just lets the software open and open the sound device? Why must mplayer, arts and others _know_ about the dmix plugin and _select_ it? That is not transparent.

The guy is right on. This is one of Linux’s main problems. Although we have as a hacker tenet to never reinvent the wheel, we also have a shitload of libraries and ways of doing things, and sometimes it leads to this awful situation: where you want to get software mixing of audio to work, but it will only work if you enable a mixing plugin in each application.

Library, woe is me; at least vim has lots of plugins

Monday, December 6th, 2004

At the library for yet another full day, reading operating systems papers. This time, however, I kept getting really bored (can you blame me?), and I kept thinking about so many other things. They take so long to read, so much attention… I have so little to give. I don’t even have my laptop here, and I only spent the last 30 minutes on a computer.

This is my “break,” searching for vim plugins:

ZoomWin for maximizing a buffer temporarily, MiniBufferExplorer for switching buffers (Matt would probably like that one), Project Explorer for “favorite files”, ShowMarks for finding marks you set in a file, SearchComplete’s tab completion for searching (s/bla/bla2/g), cppcomplete for code completion (Matt says it rocks, like intellisense for C/C++/Java)…

I think I’ll actually install most of those (provided they work as advertised).

I think for C# programming all one needs to do is modify JavaBrowser and cppcomplete the recognize all of C#’s syntax, and we’d be all set C#-wise. Hell, maybe I’ll even do it next month.

Programming

Saturday, December 4th, 2004

While programming today, I came up with some nice vim bindings. If you use vim, and want tags-powered “intellisense-like” stuff, use this. Also thrown in there are hotkeys for :Tlist (indispensible vim plugin) and saving quickly (I save often, so I like to have a single key in either normal or insert mode).


" intellisense - yea well close enough
noremap <F2> mz<C-w>1]
noremap <F3> <C-w>c`za
noremap <F4> <C-w>11_

" for insert mode, goes back to unmatched brace
" so it's good for function prototype lookups
inoremap <F2> <ESC>mz 999[(b<C-w>1]

" tlist hotkeys
noremap <F8> :Tlist<CR>
noremap <F9> :TlistUpdate<CR>

" save hotkey for normal and insert modes
noremap <F10> :w<CR>
inoremap <F10> <ESC>:w<CR>a

Algorithms and vim

Saturday, December 4th, 2004

I spent about 5 hours today doing algorithm homework/studying. I like that class a little more now, even though some of it is a pain. Divide and conquer and dynamic programming actually are powerful concepts, once you get a feel for them.

Then I came back to my dorm, ate some food, and played with vim for literally 2 hours. I guess that was a waste of time, but I learned so much about this editor. Now I feel I can be twice as productive when I code. Especially with all the stuff I implemented for prototype previewing in my vimrc, and with all the support for ctags vim always had but I never used. Wow, this is one powerful programmer’s editor.

Matt has been telling me that I should use emacs with vi emulation (viper), and then I’ll get access to all that great emacs stuff. Maybe. I have nothing against it, except that emacs seems like an operating system unto itself. Eh, it doesn’t matter I guess, I just need to know one of the two well. They are both portable, and run on all major platforms.

Havoc Pennington’s essay on UI design

Saturday, November 13th, 2004

I just found this essay on UI design and am surprised I never read it before. Some of the stuff Havoc says rings particularly true, and also confirms the need for some of the ideas I have for Glade-3 (ideas which, I think, will push UI design into the user’s hands, and exploit the end-to-end principal in the world of graphical software development; this is only one of the key points–my ideas also have other implications that, I think, are good for Linux applications in general).

In my spare time, lately, I’ve been drafting out these ideas, and I think soon I’ll have them clear enough to send a “brainstorm announcement” to the glade-devel mailing list. God I wish I had more time for this stuff!

On stupidity and drunken behavior

Friday, October 29th, 2004

So, night before last I came home and hung out with some friends. We were a bit drunk, my roommate and Sak were fooling around and Sak slipped and fell on my bed. Problem was, my laptop was right underneath him, and so the LCD screen cracked. Bad, bad situation. Turns out repairing it would be more $$$ than the amount I paid for it in the first place, so I’m not really sure what to do on that front.

It’s a shame… I really was getting used to that laptop. I mean, I’ll probably just re-purchase the same one, but I dunno what’s gonna happen exactly.

In other news, I was playing with Glade 3 earlier today and decided that it really needs some work done on it. I would love to hack that project a bit if I had time. I mean, if someone can produce something like Gambas for Linux, then some sort of RAD tool for GTK is possible. I know the two aren’t really comparable (Glade uses libglade to dynamically load the GUI from XML files, Gambas is a “better VB”, i.e. a full environment), and that a lot of developers scoff at RAD tools for GTK, but I don’t think properly designed RAD tools are about “dumbing down UI design.” I think they are really about making UIs easier to design quickly, so that you can spend more time on the code that does stuff.

Also, I was checking out Mainsoft, with their product MainWin for J2EE. Interesting approach. They take Microsoft IL code and compile it to Java Bytecode. This means that for now, while Microsoft doesn’t support platforms other than Windows for .NET, you can actually convert take a .NET project and make it run in the JVM. I wonder if it works…

Linux innovations I recently discovered

Wednesday, October 27th, 2004

I have to say, I wasn’t expecting to like the Linux laptop experience that much, but I was just playing with the synaptics driver written for XFree86/Xorg, and I can’t believe how much careful work has been put into it. The authors have a truly well-designed driver here. Let me give a quick resume:

  • Non-linear acceleration. This means that you can define a minspeed and a max speed for your mouse cursor, and also define an acceleration ratio for how quickly it goes between those two speeds. This allows you to have a slow moving cursor when you want to make fine movements (i.e. in the GIMP or when positioning an insert cursor), and still allows you to get across the screen by moving your finger quickly across the pad.
  • Fully working palm detection, so that when you are typing, you can still rest part of your hand on the trackpad and not move the cursor.
  • Support for all sorts of tapping. This is the one I love most. I can tap the pad for single click, double-tap for double-click, and double-tap and drag for selection and/or drag and drop. Additionally, one can tap with two fingers (middle and index, for example) for middle-click and tap the bottom-right-hand corner for right-click. Alternatively to the two-fingered middle-click, one can tap the top-right corner.
  • Support for vertical scroll on right side of trackpad. A great feature that allows you to slide your finger down the right side of your trackpad to achieve vertical scroll up or down.

Conclusion: you can do all your mousing from the pad, without even using the clicking buttons. It’s extremely intuitive, fast, and accurate. I’m impressed.

The other innovation I discovered was the taglist plugin for vim, which, when combined with exuberant-ctags, makes for quick source file browsing. Very handy for these OS class labs I’m working on, where the source files tend to be pretty big and involve lots of routines you didn’t code.