On stupidity and drunken behavior

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

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.

wifi detector bash script

I didn’t really like any of the wifi-related tools out there for switching networks, so I scratched an itch and coded my own. Read more if you’re interested in obtaining an easy-to-configure bash script that requires iwconfig, ifstate tools, zenity and dhcpcd, and can easily allow you to set an array of prioritized wireless networks which are scanned and joined if found. After you establish your connection, dhcpcd is called to negotiate your IP address. It works quite nicely, and allows me to move from network to network and only have to click a button to enable my wifi access. Check it out (code inside)…

Getting Linux to run on an Averatec 3250 Notebook

It may have taken me a few hours and some lost hair, but I finally got Linux running (and running well) on my Averatec 3225 Notebook last night.

Kernel support is there for everything in 2.6.8.1, but the two major causes of problems are the Wifi chipset (RaLink’s 2500) and the built-in video (VIA’s S3/Unichrome chipset).

To find out how to get this stuff working decently well, read on.

Paradox of Choice

This article on OSNews elicited a response. Here it is:

Horrible to get these issues confused. A standard says: “there’s one way to do X because without a single way of doing X, the benefits of system Y would be useless or unavailable to most users and/or developers.” A lack of choice says: “There’s only one way to do X… just cause.”

So, yes, HTML, CSS, these are standards. Are they suboptimal? Maybe. But if there were 65 different markup languages/style sheet specifications out there, the web would be useless. So a standard was necessary.

That’s why good standards tend to last a long time. Other ones tend to get phased out. For example, HTML is a standard, but XHTML (some might argue) is a better standard, which may be phasing HTML out (in the long term). ASCII was a standard for a long time. UTF-8/Unicode is now considered a better standard, and is phasing ASCII out.

There’s no paradox in saying, “I want to have the choice to use emacs, vim, or gedit, but I also want there to be only one encoding for text files so that I can send those files to my friends or cut and paste their content into other programs.” Again, if there were no text encoding standard, then computer systems as a whole would more or less break down as there would be no application interoperability.

So please be clear on these definitions! I don’t think UNIX developers want to “have it both ways.” I think they are being completely sane about this. Edit: Think about it: what better way to increase the power of choice than to enforce good standards? We want choice in applications, but standards among them!

Mbox de-duper patched

I wrote a quick patch for the mbox-dedup.pl script I found online awhile ago. Basically, the author wrote a script that takes an mbox and creates a new mbox with all duplicate messages removed. I have to deal with duplicate e-mails constantly due to some weird incompatibility between Evolution and my Argosoft Mail Server (Windows), which I’ll have to figure out some day soon.

This script is just a temporary solution. I modified it so it now creates three files: $f.bak, a backup of your old mbox; $f, your new, dupe-free mailbox; and $f.dup, which is a mailbox which ONLY contains messages detected as duplicate. You can probably get rid of f.bak and keep f.dup around in case there were any mistakes in duplicate detection (which is what I’m doing). How annoying through. Anyway, if this bothers you, download the script, but use at your own risk.

It actually crashed

Man, Linux actually crashed. My little Workrave window was about to come up telling me to take a break, and before it could be drawn by GTK, the whole computer hard-locked. That teaches me to run a development kernel (2.6.6-rc2) when there is a newer, stable release out.

Luckily I didn’t lose anything since I constantly save my work. But hard-locks are exactly why I switched away from Windows, so this was disheartening.

Once August rolls around I’ll upgrade my kernel to something more stable. crying

Spike in the geekiness curve

Just got back from Northampton today. Was able to do some work remotely but not as much as I wanted, so I’ve been working late into the night. Still much to do, but at least I got JavaMail working properly and am finally, finally, finally finalizing my form design with JSP/Servlets on the UAC project. In the meanwhile, in Noho I was able to use my notebook to put together new form designs to be plugged in later.

But in more interesting news (not much more interesting)…. Wow! Lots happened while I stayed out of touch with the major news websites. Eclipse 3.0 (including new native builds) is well-received. Mono 1.0 was released. Java 1.5 (or, ahem, 5) Beta was released. Looking Glass was open sourced. Apple’s OS X Tiger was previewed and is now being scrutinized by Mac lovers. Wow, wow, wow, wish I had more time to explore all this good stuff.

Man, Dashboard is what gdesklets should be. sad Once we have a solid X system that is actually 3D accelerated in Linux, then we’ll be able to have more fun on the desktop.

Spotlight seems very cool, but I think Gnome Storage will be better. This may be an armchair code pundit speaking, but I think Linux geeks know how to do searching better than Apple geeks. Spotlight’s integration with Finder will look nicer, but Gnome Storage will actually find me my files. wink

Argh, gonna lay off this blog for a few days ’till I can say work isn’t bogging me down.

Levels of abstraction

I think I must be doing the funkiest development on the planet right now. Connecting to a Debian Linux server running under VMWare Server under Windows 2000 Server as my test server, which is modeling the production server, a Redhat environment.

Locally, I’m connecting to this virtual Linux server via NFS, and plugging Eclipse right into the NFS exported directory, using uid/gid mapping to make sure permissions are okay.

Finally, running VMWare Workstation locally (for access to Dreamweaver/Photoshop) and connecting to the NFS mounted drive by connecting to the mount point on my local machine via SAMBA! That is, I have a mount point on my machine /mnt/server1 which maps to the IP of my server via NFS. And I made /mnt/server1 shareable via samba to my VMWare “Virtual Machine’s” IP address. So that means when I write a file from VMWare, it’s using the Windows SMB implementation which is interpreted by Linux’s SMB daemons, which are then sent over the Internet to my server using the NFS protocol and finally written to my server’s disk. All in milliseconds, no less.

Wow! That’s a lot of layers to peel off when something goes wrong. But so far, nothing has (this is very surprising for me).

MultiTail and syslogd’s heartbeat

Just wanted to post this here in case anyone else runs into this little quirky thing. A lot of the time running Linux you want to see your log files (like /var/log/messages), and so someone has been nice enough to code a gdesklet called MultiTail that sticks the output of your log files on your desktop. This is useful for me not only for monitoring server output (like tomcat, apache) but also for monitoring things like apcupsd (my UPS daemon) and even error messages coming from Gnome programs, etc.

But I started noticing this annoyance, that every few minutes I’d see an entry that went was just — MARK — show up in my log, which unnecessarily cluttered MultiTail. Well, you can actual get rid of that (which is just syslogd telling you he is still alive) in the following ways.