Archive for the ‘Software’ Category

Reclaiming my Linksys router

Sunday, November 9th, 2008

Every so often, a piece of hardware with modest popularity and unrealized potential is catapulted into infamy when it is hacked. People hack it and make it do things beyond its original design. That is definitely the case with the series of wireless routers from Linksys. I originally bought my Linksys WRT54G to free my laptop from its twisted-pair tether and to act as a firewall for my network. It quickly reached limitations, however, and I dedicated a PC to running Endian firewall (based on IPCop) instead.

Years passed, and now I am tired of listening to the whine of PC fans that saturate my living space. I have built out a home network with multiple machines as a kind of lab playground. It’s been fun and educational, but now I’d like less noise and clutter. The FitPC is an interesting little system running on AMD Geode and Linux, with a small profile and no fans. The mini-ITX systems at Mini Box are also interesting. Everyone seems to be getting in on the action, with the “mini computer” category on NewEgg.

And then a friend pointed out that I have the perfect hardware under my nose. It just needs an upgrade of its software. So I took the plunge and installed the open source DD-WRT on my old Linksys router. Setup is easy. The user interface is more sophisticated and informative. And there are enough knobs and dials to keep any hacker happy. It simply blows away the old software.

Now that I have saved a little power and made things a little quieter, I wonder what can I do about this noisy computer sitting on my desk? We’ll have to see about that.

SymmetricDS 1.0 Released

Saturday, November 10th, 2007

SymmetricDS is web-enabled, database independent, data synchronization software. It supports near real time data synchronization between remote databases that do not have to be of the same type. The software was designed to scale for a large number of databases, work across low-bandwidth connections, and withstand periods of network outage.

If you’ve been wondering what I’ve been up to lately, I’m proud to have spent my time co-authoring SymmetricDS with Chris Henson and others.
(more…)

Java Goes GPL!

Monday, November 13th, 2006

Sun announced that Java will be released under the GNU Public License V2! You should have no trouble reading about it, such as in Eweek’s article Sun Pours Out Java Cup. Or read a Q&A with James Gosling on open sourcing Java.

This means that the J2SE, J2ME, and J2EE source code will be released under GPL2 sometime in March 2007. It includes a special clarification, ala GNU Classpath, so you can write closed source applications that run in the VM. One immediate effect of all this is that Java can now be included in Linux distributions. In the longer term, this is going to have repercussions for .NET.

For a while, I had some interest in .NET, being no less than a ECMA/ISO standard, and even bolstered by open source hacker Miguel de Icaza (whose passion is infectious). But with recent events, the outlook for .NET has changed. Now that Novell has partnered with Microsoft and both have agreed not to sue for patent infringements, it is obvious that Mono cannot be considered safe from patent encumberment and royalties. And Sun has chosen GPL for Java’s new license, effectively granting free use of any patents to every programmer who uses it. The choice for me is very easy and obvious now. Kudos to Sun!

The Future of Desktop

Thursday, September 14th, 2006

The desktop of the future will be running Linux. Each successive wave of development improves and pushes open source software further. The increasing momentum from developers around the world makes widespread adoption of Linux inevitable. I remember telling people this in 1995 and they laughed me out of the room. I suppose those people are running MacOS X now, or they are looking forward to Windows Vista… So, can your desktop do this?

Linux desktop movie

Click through the screenshot to watch a video of a Linux box running Xgl and Compiz. You might not want to watch the whole thing if you get motion sickness easily. :)

Windows Frustration

Monday, November 28th, 2005

How would you find the tasks not shown on the bar?

Because I certainly can’t get it right. I click the wrong arrow every time. You might say that “up” goes to the top of the pile, with recent tasks on top. You might also say that “up” goes to the top of the page, with the first tasks started at the beginning. To confuse one further, clicking an arrow will cause the tasks to shift either left or the right. Is it natural to associate up and down with left and right?

JBoss Accused of Monopolistic Practices

Sunday, October 9th, 2005

Rickard Öberg, a co-founder of JBoss, has recently started a blog called The JBoss Issue, where he lists 4 issues with how JBoss, Inc is managing the codebase of the JBoss application server:

  1. Missing copyright notices
  2. Invalid license
  3. Illegal distribution
  4. Abuse of trade/service mark

[Update appended on 10/17/2005]
(more…)

Swipe This

Friday, September 16th, 2005

Have you ever looked at your credit/debit card or driver license and wondered what data lie within the magnetic stripe or barcode? Cards are convenient, and you probably swipe them at a lot of stores. Some stores now require that they swipe or scan your driver license for alcohol purchases. What data is on your card, and what is the retailer storing in their system?

To find out what’s on your cards, you can build a magstripe reader for under $50 and use open-source software to read them. Stripe Snoop is software that not only reads your card’s data, but also parses it, identifies the card issuer, and tells you what the content means. On the hardware section of the site, you’ll find instructions for using some inexpensive components to make your own card reader. Make Volume 1 from O’Reilly has an article by the same author with nice detailed illustrations and directions (the link is just an excerpt).

At work, I have access to a retailer commercial card swipe and barcode scanner, so I decided to take a peek at some of my cards. Read on to find out what I found.
(more…)

Gnutella really whips the Donkey’s ass

Tuesday, August 23rd, 2005

I wanted to see what all the fuss was about, so I tried out a couple peer to peer networks. I wanted to see what has changed. In first generation P2P, searching took place on central servers, which kept track of all the peers, like Napster. Actually, bittorrent still works this way. In second gen P2P, the network is decentralized, but not very secure or anonymous, like Kazaa, Donkey, and Gnutella. The next gen will thwart any efforts by RIAA or MPAA by using a distributed architecture that is also untraceable, like Freenet and Waste.

So I tried the eDonkey2000 peer to peer network. Certainly a lot of files on the network. But I found the download speeds to be slow. While my download queue was filled, I only got 10 KB/s on a cable modem, but I was sending up 50 KB/s. That’ll teach those leaches. Of course, who wants to use a P2P network that you have to sit on for weeks to get any files? To make matters worse, I thought the user interface was a bit clumsy and complicated.

My friend mentions Limewire, so I try it. It’s written in Java, so it has no problem supporting multiple platforms. It’s actually using Gnutella network. This time, I got over 400 KB/s down and under 50 KB/s up! The user interface is very well done. It even lets you preview music and video files that you’re downloading.

The Donkey network seems to have a community that likes to sit on the network and share, so it has more files and downloading large files is no problem if you can wait a few days. The Gnutella network is about speed, but you have to get those files during prime time before all the peers disappear off the network. Files that were on Gnutella one night could be gone the next time you check, while Donkey seems to be an archive.

Even though Gnutella network may not have as many files, it’s still the clear winner. It really does whip the eDonkey.

[Sidebar. The phrase is a reference to Winamp, which has an mp3 that plays on startup, "Winamp, it really whips the llama's ass." Kindof a funny thing to say. Apparently, a music artist in Chicago named Wesley Willis wrote lyrics like that. One of his favorite phrases was, "It really whips a [insert animal here]’s ass.”]

CtrlAltDelete Annoyances

Sunday, July 24th, 2005

In the old days, CtrlAltDelete was used as a last measure with an unresponsive computer. If things were locked up, CtrlAltDelete would do a “soft” restart. It worked because the key combination was captured by the BIOS to run an interrupt routine in the operating system. Today, the “three finger salute” does a lot more than a restart. CtrlAltDelete is also used for everything from logging in to changing a password.

It’s loosely forwards-compatible with the old method. CtrlAltDelete now brings up a menu where the “Shutdown” button can be pressed, which then opens a dialog where you select the “Restart” function and click “OK”. Not so simple anymore! And not as effective on an unresponsive machine.

The additional functions are definitely not backwards-compatible, and it creates problems. I had a Linux box in the server room that was mysteriously rebooting, and everything I checked looked okay. I finally figured it out one day while watching the Windows administrator fumble with the KVM switch. He kept switching to the wrong machines and hitting CtrlAltDelete to get the screen to come on. Of course, this was causing the Linux machine to faithfully reboot! Fortunately, I was able to disable the CtrlAltDelete reboot in Linux.

Speaking of Linux, it doesn’t bother with the nonsense of extending CtrlAltDelete past its original intent. To login, I simply enter my login information. To change my password, I simply run the change password program. If an application locks up, the window manager will let me kill it. No need to overload a single key sequence to handle everything.

One more CtrlAltDelete annoyance to mention. I like keyboard shortcuts, so when I want to leave my Windows machine, I hit CtrlAltDelete and then Enter, which defaults to locking the screen. Sometimes the dialog doesn’t come up quickly enough and my Enter keystroke is lost. Unfortunately, I’m in a hurry when I do this, so I don’t notice the mistake. I come back to a monitor that has gone to sleep. Thinking I will be typing into the Locked Screen dialog, I hit CtrlAltDelete followed by my password and Enter. By sheer luck, my password contains the letter “s”, which is the quick key for “Shutdown”.

Let me leave you with a quote from David Bradley, who invented CtrlAltDelete while working for IBM: “I may have invented it, but Bill made it famous.” I doubt Bill saw any humor in that comment.

SymLeak

Wednesday, June 1st, 2005

Symbolic links, or just symlinks, are a nice way to link to a file or directory in the Unix file system. For example, you might install software in a directory called “fuzzy-wuzzy-1.2.3″ and then create a symlink called “fuzzy-wuzzy” that points to it. That way, you can just use the symlink, and when the software is upgraded, the same symlink can reference the new version.

But symlinks are an abstraction that make it seem like the same file or directory is in multiple places at once. When the abstraction is not complete, and it fails in a situation, it is said to “leak”. Let’s look at symlinks a little closer.

Let’s say you are migrating from fuzzy-wuzzy version 6 to version 7. The new version has many new features, so you decide to run both versions in parallel until the users can switch over. But there are some common files between the two, so instead of making copies of the common files, you use a symlink, like this:

/fuzzy-wuzzy-7/common -> /fuzzy-wuzzy-6/common

You have a symlink named “common” that lives under the directory “fuzzy-wuzzy-7″ and references the directory named “common” in “fuzzy-wuzzy-6″. Now, say you run these commands:

cd /fuzzy-wuzzy-7/common
cp datafile ..

You are trying to copy the file named “datafile” to the parent directory named “fuzzy-wuzzy-7″. But where do you suppose the file actually gets copied to? Yep, the file gets copied to the directory named “fuzzy-wuzzy-6″! Oops, you meant to modify version 7 and you accidently modified version 6! How awful of you. (I would never do something like this.)

While the “cd” and “pwd” commands respect the symlink, reporting a directory under version 7, you are really sitting in the version 6 “common” directory. And the “..” entry for that directory links to “fuzzy-wuzzy-6″.

So, the next time you want to use the “..” directory, remember that abstractions can leak, and absolute pathnames can sometimes be better. If you dislike the extra keystrokes, you can always use TAB (bash) or ESC-\ (ksh) to save some typing. Filename completion is your friend. Or, you can try to always be aware of parent directories that are symleaks, I mean, symlinks.