Mad, Beautiful Ideas

Search

About this Archive

This page is an archive of recent entries in the Linux category.

Life is the previous category.

Movies is the next category.

Find recent content on the main index or look in the archives to find all content.

JS Array lastIndexOf

Categories

Recent Entries

Recently in Linux Category

Ubuntu Maverick Alpha

It’s just under two months before the “Perfect 10.10” release of Ubuntu, Maverick Meerkat, will be released. I’ve been running the alphas on my Netbook since the first official alpha release and have been pretty happy with it, even though I had some configuration problems when I first attempted to install Unity, since some parts that I consider pretty important are listed as merely ‘recommended’ instead of ‘required’.

However, it’s been installing Maverick on my desktop finally this week, that’s made me really excited about the coming release. I’d been using GNOME Shell since earlier this year, when Lucid dropped. It’s exciting how GNOME themselves, and Canonical are both working to push the envolope in UI design on the desktop, something which has not been done in quite a long time. It would be nice if Canonical was working more closely with GNOME in some of their work. The seperation between the two has made it quite difficult for some of Canonical’s innovations to make it upstream, and I can’t blame GNOME for that, since Canonical has chosen to work outside of GNOME’s normal processes. Nor do I blame Canonical, since they are able to innovate without having to run everything through all the rest of the GNOME Foundation.

I guess that’s part of what makes GNOME Shell so exciting. It doesn’t seem to have the same problems with lack of cohesion among the GNOME ecosystem.

With two months to go, there are still a few problems. If you’re using an nVidia chipset for your video, you’ll need to update your Xorg.conf. I had a small problem with a mis-named library to run Shell. But there were easy workarounds for these problems, and they should both be addressed before the release.

Maverick is still updating regularly, and for most users, I still wouldn’t recommend upgrading. It took me a little while to address these issues on my desktop, and more than once this Alpha, X has completedly refused to start after an upgrade on my Netbook. It’s alpha, but this is shaping up to be an excellent release.

Not Mono is Not a Feature

2 Comments

Recently, it was announced that in Ubuntu 10.10 (Maverick Meerkat), that F-Spot is going to be replaced with Shotwell. I’ve used F-Spot for a while, mostly by virtue of it being the default Photo Manager in Ubuntu, but I’m not particularly attached to it, but I don’t yet have an opinion on Shotwell either. This post is about how almost every story I’ve seen on the subject has greatly stressed that Shotwell isn’t basd on Mono.

Not being based on Mono is not a feature.

I understand our community’s distrust of Microsoft. I’ve been there. I get it. I’ve been that person. However, while Microsoft may have created .NET, of which Mono is a free reimplementation, that does not mean that Microsoft is going to kill Mono. I’d argue that, at this point, Microsoft needs Mono for .NET more than Mono needs Microsoft. Mono has proven to be a major incubator of new ideas that Microsoft has rebuilt into the core of .NET (consider Mono.AddIns, which I believe is a direct precusor to MEF), or the fact that Microsoft is rebuilding their C# compiler in managed code so that they can support a C# REPL, like Mono can today. Microsoft has benefited greatly from the Mono community and open source .NET, and they’ve given a lot back, in the form of the DLR, MEF, ASP.NET MVC, and a lot more.

And, if Mono needed to, they could drop the Microsoft Interop stuff and be a fully ECMA-compliant CLR implementation, with good support on Linux through great libraries like GTK#, and on the Mac through the upcoming MonoMac work.

Further, Microsoft has even gone so far as to validate the Mono Project through Moonlight, and they’ve had over ten years to do something about the project. There is no reason to expect movement now, when Microsoft is consistently giving back to Mono and others.

Still, the community goes apeshit raging against Mono. Complaining about the use of Tomboy and F-Spot in Ubuntu. .NET is a great platform, with a solid programming experience. It’s a hell of a lot easier to avoid common programming mistakes in .NET than it is in C or C++ (both languages which I like). It’s solid technology. There is no technical reason to be opposed to .NET. It’s purely political. And while Microsoft may be hard to trust in patent terms with regard to Linux and the Operating System stack, there is not only no evidence that Microsoft will target Mono or open-source users of .NET, there is plenty of active evidence going the other way.

So please, while there may be plenty of reasons that F-Spot is inferior to Shotwell, F-Spot being written in .NET using Mono shouldn’t even be on the list of it’s ‘flaws’. That’s about as sensical as me refusing to use something like Vym or Scribus because they’re written in QT and not my favored GTK+/Gnome.

Detecting Removable Storage Mounts using DBus and Python

As part of my workout regimen, I tend to prefer machines at the Gym that use this StarTrac system to dump data snapshots of my performance (heart rate, speed, calorie burn rate, etc.) to a binary file. In a future project, I plan to decode this file and perhaps do something with the data, but in the meantime, I’m trying to recreate the uploader function used by the eFitness website the rec center has contracted with for handling this data. That uploader is written in .NET, and takes advantage of some P/Invoke calls unique to Windows to detect when new removable media is added.

Luckily, the Web Service the website uses has a public WSDL, and it’s a pretty straightforward SOAP web service. However, this post isn’t about all that. When collecting StarTrac data, I plug a simple USB thumb drive to a box attached to the excercise machine, it updates a file on the drive every 15 seconds. The path on the drive is easy enough to know (same folder, easy pattern to file names), but how do I detect when the user has attached the device? And where Linux mounted it?

The answer, as with just about anything communication related these days on Linux, is dbus. However, even knowing that you can get that information doesn’t do much for the how. Which is why dbus-monitor is so important. Running dbus-monitor, watching the session-bus (I assume the user is logged in, since I’m using desktopcouch to store data), and on GNOME, the interesting block was this:

string "org.gtk.Private.GduVolumeMonitor"
string "0x822b808"
struct {
    string "0x822b808"
    string "DISK_IMG"
    string ". GThemedIcon drive-removable-media-usb drive-removable-media drive-removable-drive"
    string ""
    string "file:///media/DISK_IMG"
    boolean true
    string "0x822c948"
    array [ ]
}

This data came in on interface org.gtk.Private.RemoteVolumeMonitor, member MountAdded. I’ll cover in a snippet below (which I plan to contribute to python-snippets). There is one problem I need to solve here. This will provide me with every new mount, not just new USB thumb drives. Now, I could parse the third member of that struct, but that’s gtk sensitive data. It’s possible to change, and would make the code potentially harder to post to KDE or others. Perhaps that last hex value string has the information I need, but I really have no idea. I don’t see anything obviously useful in any of the other sets of member data that I feel I could trust…

However, listening for this event is easy:

import dbus
import dbus.glib # Provides the required Main Loop

sessionbus = dbus.SessionBus()
self.sessionbus.add_signal_reciever(signal_name="MountAdded",
                                    dbus_interface="org.gtk.Private.RemoteVolumeMonitor",
                                    path="/org/gtk/Private/RemoteVolumeMonitor,
                                    bus_name=None,
                                    handler_function=mountDetected)

def mountDetected(sender, mount_id, data):
    print "New drive mounted at %s" % data[4][7:]

I probably don’t need to put the Interface and the Path, but I’m a total newbie to dbus, so I did for completeness. And my only issue is that I will see CD’s mounted using this as well, but I suppose I just have to hope they don’t have the folder I’m looking for…but hopefully I can find a better way, even if it involved looking at multiple dbus events and do some internal correlation.

Broadcom B43 Drivers on Ubuntu

1 Comment

My recent Dell Mini 10 purchase came with a Broadcom BCM4312 Wifi interface. And it worked great…with the Ubuntu 8.04 install that was stock. That wasn’t going to work for me. I wanted the (the Alpha) 10.04 install. Shortly after upgrading, however, my Wifi stopped working entirely. So, I found this bug, happy the problem wasn’t only me. Hell, for a while, I had to use NDISwrapper to use Wifi at all,.

Eventually, I downloaded the compat-wireless package from Linux Wireless, and started running my wireless interface in PIO mode, which worked okay. I could get on the wifi at a handful of places I really needed it (home, office), but not much else. It was a challenge. Hell, I had trouble on our enterprise Wifi, which uses the same SSID across our entire campus. I could get on at a small handful of locations, but not others. No idea why.

Eventually, I was getting fed up with this, so I hit up the Ubuntu forums, and finally found the answer that stabilized my Wifi experience. I had to create a b43.conf file in my /etc/modprobe.d folder, with the following:

 options b43 pio=1 qos=0

Apparently the QOS code was occasionally forcing me to have to take my wireless down and reboot the interface in order to use it. Since that change, my wifi has been almost seamless (I still get intermittent disconnects, but they come right back up, that is either the sign of a hacking attempt, or misproperly configured Wifi, I’m leaning toward the latter). It’s been great. And, it seems that in a forthcoming Ubuntu Kernel, the bug should be fixed for real, which I’m really looking forward to. I (and many others) wish that this had been resolved prior to Ubuntu 10.04 shipping, but with any luck, this won’t be a regression for 10.10 and beyond.

Ubuntu 10.04 "Lucid Lynx" Released

Ubuntu 10.04 becomes final today, and this weekend, many an installfest is going to be started around it. If you’re in the Seatlle, WA area, the Washington Loco Team will be having a gathering this evening. Regrettably, in my own area, there are no events that I’m aware of, though I’ve been running with the Lynx for months now. It’s a good release, despite all the drama about themes, and other decisions. Of course, themes can be replaced, buttons can be moved, and if you dislike some of the new defaults (which I do take issue with some), then you can always change them back (though, admittedly, moving the window buttons is harder than it should be). For me, the buttons being moved is a problem, if for no other reason than the fact that I have to sit in front of a Windows box eight hours a day.

What I appreciate most, is that Canonical, and the rest of the Ubuntu Community are still trying to focus hard on supporting newer, or non-technical users. As part of this, the Ubuntu Manual team has put together a new manual, Getting Started with Ubuntu 10.04. If the manual has any weakness, it’s being too thorough. I have no idea how many users that would try to install Ubuntu couldn’t download and create an install disc, or wouldn’t be trying Ubuntu without the encouragement of a friend who does know. But that’s neither here nor there, I suppose. It’s a good book, with a ton of useful information for someone who is new to Linux, or computing in general.

Now, there are a few things that they haven’t addressed, that are covered fairly well in this video about Linux things that still suck, some of which Ubuntu may well address by 10.10. I’m hoping Audio gets worked out. I bought Shadowgrounds: Survivor a short while ago, but for some reason, the audio plays around 30 seconds later than the action happens on screen. Which is…not ideal. I’ve got a support request into LGP, and I hope that they’re making some progress, because I’m stumped. Anyway, that’s a general complaint, as audio issues are unfortunately common throughout the Linux world today.

One of my favorite features in the new release is the Ubuntu One Music Store, which integrates directly into Rhythmbox (and a Banshee plugin is underway), and it’ll sync directly to your Ubuntu One account, allowing your music to follow you, and not be lost in the case of catastrophic computer failure. It’s almost perfect, almost because I can’t use the payment method I’d prefer, but that’s a fairly small thing. This is likely to replace my use of Amazon’s MP3 store, if for no other reason than even if I didn’t use U1 to store my files, I can download from the provider 3 times, instead of Amazon’s 1.

With the official release complete, I might be able to convince my wife to let me upgrade her laptop now…

Flash on 64-bit Linux

Flash has always been one of those necessary evils of the ‘net. Early on, it was far more evil, as we’d have tons of websites built entirely on flash, which were enormous in the days of 56k. Not that you don’t still see a lot of Flash, and pretty shitty Flash, but these days, Flash is mostly used in places where it really adds something, like video playback, or certain types of applications.

When Flash finally came to Linux, it was a really big deal for those of us who were using the platform as our only OS. Finally, there was nary a site on the ‘net that was inaccessible on our platform of choice. However, for me (and some others) the joy was fairly short lived. 64-bit processors were just around the corner, and with them 64-bit Linuxes.

Now, there is probably no good reason for me to want or use a 64-bit Linux, at least not until I get that 8 GiB of RAM I’ve been eying, but that’s starting to change (this seems to be driven largely by Microsoft finally starting to push 64-bit more seriously with Windows). Ubuntu has been really good to me, as far as running 64-bit, but Flash was always a problem.

See, Ubuntu insisted on including a 64-bit build of Firefox, but no 32-bit build. And you couldn’t load a 32-bit plugin into the 64-bit build. Enter nspluginwrapper, a project which allowed the loading of 32-bit code into that 64-bit image. Unfortunately, it was flaky, and didn’t work very well. YouTube would often crash my browser, sometimes the Flash simply wouldn’t appear.

So, you’ll imagine my surprise (and glee) when I read on Steven Harms’ blog that 64-bit Builds of Flash for Linux were available. Not only that, but Flash player 10, which means the Linux version (finally) hit almost the same time as Mac/Windows.

Installation is simple, just make sure the 32-bit version isn’t installed, and drop the contents of the tarball from Adobe into /usr/lib/mozilla/plugins. You might have to restart Firefox, but I didn’t, and it just worked. Thank You Adobe.

Finally, I can go back to watching videos of funny cats.