Speed and lightness

Monday, May 7th, 2012

Last week, I decided to give myself the present of a 512GB SSD drive, which was available at a nearly 25% discount on NewEgg for a limited time.

The price-per-gigabyte for SSDs has finally fallen to nearly $1/GB, and the rewrite cycle problems that used to afflict these drives is now becoming a non-issue with the Linux kernel’s TRIM implementation and the updated firmware on these drives.

So, I took the plunge. My main development workstation was a Thinkpad T400, maxed out to 8GB of RAM, and with dual 500GB platter drives (via Thinkpad’s excellent Ultrabay extension). I was running Ubuntu 10.10 for a long time. I timed the SSD purchase with the release of Ubuntu 12.04 LTS — 10.10 no longer being supported, I figured I’d do a clean install on the new SSD and clean up my development workstation for the first time in a couple of years.

A couple of things occurred to me in this process. First of all, since 2009, I have moved more and more of my data into cloud services. I have moved the lion’s share of my “business and personal documents”, including photos, into Dropbox with my 50GB account. And I have moved my truly old files and digital keepsakes into NAS drives that I host in my little server room at home.

Read the rest of this entry »

For Linux/GNOME users: tired of nm-applet? Try wicd

Friday, July 31st, 2009

This post is only intended for those who actually run GNOME and Linux, just a warning :-)

I just replaced network-manager on my Ubuntu Jaunty desktop with wicd.  See wicd here:

What's so great about wicd?  I used to think nm-applet and NetworkManager were the best thing since sliced bread, but have grown increasingly frustrated with these tools over time.  Here's my short list of things I dislike about NM:

Read the rest of this entry »

Trouble connecting to GTalk with Pidgin?

Monday, July 13th, 2009

After my recent upgrade to Pidgin 2.5.5 (on Ubuntu Jaunty), GTalk mysteriously stopped working.  Check out the FAQ entry on the Pidgin developer website for an explanation.  The workaround, not listed there, is to change your "Connect Server" to "".  Pidgin will then prompt you once for a certificate, and after that, it will connect fine.

A developer in #pidgin on told me to "fix my router" since my "router was broken".  This even though the problem has now occurred on three separate LANs, two of which I don't own/control.  Routers that are used as DNS servers are very common, and the fact they are broken in this regard is a reality.  Wake up — realities trump ideal every time.  Pidgin should automatically work around this problem, IMO.

Nat’s Pendulum

Sunday, March 18th, 2007

Metacity (the window manager for GNOME) has this annoying and ugly minimize animation that looks like a bunch of cascading rectangles flying at your taskbar. I’ve always hated it, but dealt with it for awhile.

Today, I did some digging on the Metacity bugzilla to see if it was fixed, and found this bug.

Over the course of 3.5 years, this bug has sat on the bugzilla, and still isn’t satisfactorily resolved. There is now a reduced_resources flag in gconf, but this flag only disables the minimize animation at the expense of forcing you to use an ugly wireframe window dragging animation. (Complete, utter insanity.)

Read the rest of this entry »

“This isn’t elitist, this is egalitarian.”

Sunday, March 18th, 2007

A surprisingly articulate post on OSNews about Free Software:

Asking me to get off my a$$ and code drivers for this baby is what I consider elitist and a very unreasonable demand on the end user. It’s one thing that gives GNU/Linux zealots a very bad name in the real world.

I have sneaking suspicion that you get this response from the Linux community because we feel you’re placing unreasonable demands on us. Your points are valid, but your energy is misdirected. Unfortunately for those who don’t like to code, that’s how software is created and improved. We invite you to participate in our projects in a variety of capacities including but not limited to programming, but of course participation is not required.

I think that Linux “zealots” get a bad name because much of the “real world” believes in a culture of entitlement. Look at everybody living life with a chip on their shoulder, blaming everyone else for their problems and scoffing at the notion that they take responsibility for their own situation. Somewhere along the line we stopped believing in opportunity as a means of realizing our dreams and began to foster the idea that we’re entitled to our expectations. In “Linux land,” we believe that the opportunity to participate in our information society is fundamental to our inherent desire as human beings to better our situation and control our own destiny.

Of course, money can make just about any dream come true. Mark Shuttleworth, for [example], invested $10 million to help make the Ubuntu project a reality. But years ago my great-grandmother told me the story of how my family came to America with nothing but the promise that here they would find a land of opportunity. This is the same promise we make with free software. This isn’t elitist, this is egalitarian.

I have to say, this is part of what makes me love Free Software.  It’s this idea of widespread opportunity.  Sure, F/OSS has power structures and means of coercion/control built into certain parts of it, but for the most part, it’s based upon a very simple, powerful, and egalitarian idea.  “Anyone can improve this, anyone can make it better.”  It’s that kernel of an idea that makes any process — whether software production, book editing, encyclopedia editing, or even beer brewing, more enjoyable to those involved, and, as a side effect, better for the general public.

Spirited Discussion with Miguel de Icaza on Mono and Microsoft

Sunday, February 4th, 2007

I got fired up by the evidence coming out of Microsoft from yesterday, and decided to write a post to Miguel de Icaza’s blog.

Here’s what I wrote:

Hi Miguel,

It looks like a new set of “Halloween Documents” have come out, thanks to a case in Iowa, Comes et. al. v. Microsoft ( I’m wondering if you have any comments on this document in particular, which suggests that Microsoft management knew full well they were “stealing Java” to intentionally marginalize the cross-platform language issue.

A select quote from the document, “Screw Sun, cross-platform will never work. Let’s move on and steal the Java language.”
Here’s the e-mail archives, which was submitted into evidence:

I’m wondering, given these thoughts from within Microsoft management, and given the recent news of Sun open sourcing the Java language under GPL terms, how is it that you can still push for the Mono project on Linux? Aren’t we always going to be fighting an uphill battle against a monopoly company protecting its biggest cash cow: the Windows platform?

Although my question was more “devil’s advocate” and meant to rile him up, Miguel provided some of the strongest and most cogent arguments for Mono that I’ve seen on record.

I just want to say great work to Miguel and the Mono team, and that if you ever doubted your raison d’etre, all it would take is reading this thread to be convinced! You’ve certainly convinced me!

Update: it’s really this kind of dependency on Windows I’m worried about in .NET. I think it’s just that the culture of the Java runtime is one of platform independence, whereas .NET from Microsoft is one of “platform dominance,” and Mono is some sort of stepping stone between Microsoft’s single-platform vision and those of us who want to write cross-platform apps using .NET.

Common Criticisms of Linux, parsed and analyzed

Sunday, January 28th, 2007

The following post has been sitting in my “drafts” section of WordPress for a good while. I don’t know why I never posted it — it’s been there for more than a year. I think I just thought the article deserved such careful attention that I never sat down to really edit it and prepare it for publication.

The topic is on the common criticisms of Linux, and I think it’s time for me to finally post my thoughts, given the upcoming release of Windows Vista and related products.

Awhile back, /. posted an article entitled “Is It Wrong to Love Microsoft?” The article is horribly written, but does have one point to make: why is it that on /. and other technology news sites like OSNews and Kuro5hin, everyone loves Linux almost unconditionally, and hates Windows unequivocally? I personally am unfond of blind faith as much as I am offended by blind hatred. I’ve thought long and hard about the pros and cons of Linux and Windows, and think I can come up with a pretty balanced evaluation of the two.

Oftentimes the criticisms thrown at Linux are hard to parse, mainly because the authors of these criticisms don’t know much about system design themselves. Having studied it at University, and having been a 10-year user of Windows and Linux (and a 6-year user of Mac OS since version 9), I figured I should chime in.

First, as often happens when evaluating arguments of any kind, one needs to identify the different kinds of critique, and break them down into the smallest possible groups so that they can be evaluated fairly. Broad statements like “Linux is broken” or “Linux is impossible to use” do not identify specific problems, but merely express sentiments, probably acquired through firsthand experience with a particular set of conditions.

Futhermore, attacks mounted at Linux aren’t mounted at Linux “the kernel” but at the whole set of Free (and sometimes, commercial) Software that runs on Linux, which is quite broad and diverse (and not accountable to any one development team, not even distributors). As a result of this, the attacks often seem focused on the whole system, when in fact concern only a small part of the system, and quite often that small part is already in the process of being “fixed”. So, in order to evaluate these arguments, I will begin by pointing out the general complaint lunged at Linux, and then break it down into the proper categories and evaluate each of those in turn, placing whatever context I can to help understand the situation better.

Read the rest of this entry »

Taming spam with spamassassin and evolution

Saturday, November 18th, 2006

I’ve found the anti-spam support on Linux to be pretty poor overall. Considering how common this problem is and how ingenious OSS guys usually are, I’m a bit surprised.

I am trying to use Evolution with SpamAssassin, and finding horrible slowness and bugs in the bayes_* databases to be the norm.

If you are attempting this setup, I recommend the following hacks:

1. Do not use bayesian autolearning in spam assassin, as this is a broken way to update your spam filters.
2. Instead, create a JUNK and HAM directory in Evolution, and move your junk mails and ham mails there.
3. If you have already tagged mails as Junk using Evo’s “Mark as Junk” feature, you need to hack these mails out of that folder and move them into a regular Evolution folder. “Mark as Junk” is really not moving mail anywhere, but just “tagging” it, and then the Junk folder is like a vfolder which searches for all mail tagged as junk. This is cool, but sucks if you want to run sa-learn on your mbox in order to train spamassassin. The way to get around it is to create a mail filter in Evo which says: “if mail is marked as junk, then mark it as not junk AND move it it to folder named JUNK.” Then you apply the filter to your Junk directory and Evo will copy them out. (Note: if you try to merely “copy” the mail messages to another folder, they will simply not move — again, Junk is a “tag” in evo, not a location).
4. Now from the shell, go to .evolution/mail/local and find your mbox for your mail. You can use sa-learn –spam –progress –mbox to learn it as a spam, and change –spam to –ham for ham.

This is much better than using the built-in Evo stuff. Do this every few weeks until you don’t have to anymore.

Using C++ instead of GObject/C

Tuesday, April 4th, 2006

There’s a great post on why to use C++ instead of GObject/C over at BMP CodeBlog, the blog for developers of beep media player (my preferred MP3 player on Linux). I have to agree with most of what the author says. Using GObject/C is quite cumbersome, I’m almost surprised so many GTK+ developers do it. Especially considering the fact that C++ doesn’t incur overhead unless it has to, nicely expressed here:

The ultimate feature is that all of these are optional. We incur no overhead when we do not use a language feature (with the exception of… exceptions). In fact, cxx_conversion is currently in perfectly valid C++ and uses none of the features or C++ libraries mentioned above yet. The C++ language follows the philosophy of ‘pay for you use’ (better rephrased as ‘don’t pay for what you don’t use’). As it is right now, cxx_conversion is no less (or more) CPU or memory efficient than its C original.

GTKMM keeps getting more and more mature, so now that I’m finally learning C++ properly, I think moving over to GTKMM will be quite nice for a future project that needs a cross-platform UI.

Getting the troops mobilized

Saturday, February 25th, 2006

I gave a talk last Tuesday called “Open Source Development: A Rapid Introduction.”

Here’s the blurb I sent out when I advertised the talk:

Have you wanted to work on open source projects, but just don’t know how to get started? This talk will provide the basics you need to start working on open source software the next time you sit down at your computer.

In particular, this talk will cover:

(1) A brief overview of open source development in the industry and press.

(2) The UNIX development platform. A brief and whimsical overview of the UNIX shell, its surrounding tools, and the power of shell scripting. (Useful to anyone wanting to learn more about UNIX tools.) Learn how to do in a few lines of shell script what you only thought was possible with a big, extravagant hundred- or thousand- line program, and learn why so many of the world’s best hackers hack on a *nix system.

(3) The basics you need in order to hack on open source project: how mailing lists, wikis, bugzillas, source code revision systems all come together to form an organic code management process, and how to get started using those tools and others to learn about a project and what parts need development work done. This will include a brief introduction to CVS.

(4) The last part of the talk will involve actually watching open source development in action. In particular, the speaker will checkout some code from a source repository, make a change to it, create a patchfile from that change, then track down the mailing list or bugzilla related to the project and submit the patch to the maintainer. You will actually get to see open source “in action,” and will want to do it right when you get home!

If you’re a Windows or Mac OS developer who has always wanted to learn more about *nix systems, or if you’re a developer who wants to either take his own project open source or work on existing open source projects, this talk is for you.

Of course, if you’re someone who is just interested in the concept of open source, this talk will give you an inside look at “how things get done” in this community.

This talk was at least partially inspired by Nat Friedman’s blog post, check it out here:

“How to be a Hacker”

The talk was a general success, I think. About 12 people attended. You can see the talk in PDF or ODP formats, and you can also download the patches I wrote specifically for the talk to illustrate “open source development in action.” The patches are pretty stupid, but do illustrate the point, at least. Plus, each of the three patches served one of my own goals (hacking my CPU frequency scaler, fixing a gnome-terminal bug, and hacking galeon “for fun”), so that’s that. I think it’d be cool to give this talk again (maybe a little refined to include less basic UNIX tools and more hacking stuff) at a later date. We’ll see.