24 Hours with openSUSE 11.1

Christmas came a week early for openSUSE users!

Back in June I blogged about my first experiences with openSUSE 11.0. Although there were some groundbreaking improvements, the general tenor of my experience was negative. I did eventually move to 11.0, as I saw improvements appear from the community (such as a recipe for making Firefox3 use the system's Cairo library, thus enabling subpixel hinting.) I also suggested that 11.1 would fix all major issues introduced in 11.0, but not add any substantially new features. I stand corrected: 11.1 does fix the issues I whined about, but does also, amazingly, incorporate quite a bit of 'newness'.

I'm happy to say that both of my major gripes with 11.0 are completely resolved in 11.1, and then some.

Control and display for my integrated Intel wireless are working beautifully; the light works; the light blinks with traffic; pressing the button turns off wireless, and pressing it again turns it back on. Yay. Kudos to the NetworkManager team for moving past some blame issues with the wireless switches, and to Intel for getting the new driver in better working condition.

The default font configuration is easy-on-the-eyes, literally. The standard fonts are very well rendered, and appear consistent across, well, everything. From GTK apps, to Firefox (my other big complaint last time around), to OpenOffice.org, to Java apps, everything looks the same in the workspace, and a look under the magnifying glass proves it out. Also, out of the box, subpixel hinting can be enabled from the Appearance Control Panel app; gone are the days of installing someone else's freetype library. Big yay!

Fonts render consistently across applications.

Fonts render consistently across applications, despite variances in design.

Don't be fooled; openSUSE 11.1 is more than a bugfix release; it incorporates a variety of new features and improvements.

I won't bother repeating the published improvements, you can read the openSUSE blog post for all that. But I've noticed some changes, (some big, some small) that aren't covered.

Sleep mode works. Finally. It may not work for you, but my Centrino-based HP Compaq 6710b sleeps. Hibernate has worked since 10.3, but sleep takes the ease-of-use way up. The only reason I can see to reboot now is for kernel updates.

X86-64. Finally. I've been itching to use a 64-bit OS. Not that I'm using more than 4GB of RAM, but more that I want the optimizations that come along with it (I cringe every time I see a .i386.rpm). With browser plug-ins finally making the leap (Flash & openJAVA both are avialable), so did I. And contrary to the horror stories I've heard in the past, everything, everything has been smooth, and just a bit faster, methinks.

GDM got the once-over. Gone are the full-screen themed-up days of Gnome Desktop Manager. GDM now sports a very desktop-ish look, complete with function tray icons, and drop-down menus for selecting auth points (like Active Directory domains), remote X servers, and Desktop Environments. I don't know if I like it as much as the smooth green & gray GDM theme from 11.0, which blended seamlessly with the Bootsplash, but I can see obvious improvement in access to the full range of GDM's feature set.

GDM on openSUSE 11.1

Fast, Easy mounting of remote filesystems. In openSUSE 10.3, opening a samba share in Nautilus took about 30 seconds. 11.0 cleared that up, most likely as a result of the new GVFS integration. 11.1 takes it up a notch, easily mounting anything I can throw at it, adding an icon to the desktop while its mounted, offering the option to bookmark it, and making the files accessible through a local mount, easing the pain of working with those files in programs that don't make good use of remote paths (*cough* OpenOffice.org *cough*). Oh yeah, there's a nifty little unmount button on Natilus' Places list,and tabs too (the Ubuntu guys have been bragging about this in their 8.10 release).

Injet Disc Printing. This has long been on my list of 'Reasons why I still have to use Windows (occasionally).' I use an Epson RX580 to print directly on CD-R & DVD-R printable media, via Epson's rather limited software. Now, I'm able to do the same with Gimp, Foomatic & Gutenprint. Apparently this isn't totally new, but its the first time I've been able to make it work. I think the best reason I have for keeping Windows around now is the shiny sticker they put on my laptop at the factory.

Direct label printing with GIMP.

KDE 4.2 Backports. Although I've gone Gnome, I still try to keep up with KDE. There's been a good bit of whining about KWin's compositing effects, namely the lack of a a 'desktop cube' effect, for which Compiz is so famous. KDE 4.2 will ship with a desktop cube; KDE 4.1 for openSUSE 11.1 ships with it as well, as the effects have been backported for the release. Nice work, guys!

OpenSUSE Build Service. If you build software, or just hack around a bit, you should have an OBS account. OBS uses virtualization to build software from your source for a variety of distros, including a spectrum of SUSE, Fedora, and Ubuntu targets, all at once. In addition, openSUSE 11.1 was built completely on OBS. One of the strongest side-benefits was that applicable patches automatically backported to prior releases. This is the first time I've seen a rash of updates to an old release the weeks leading up to a new release.

Of course, there are still some improvements I'd like to see.

SAX2, the X11 setup tool, still doesn't handle setup of xrandr well. In order to get good behavior out of xrandr, I have to tell SAX2 I'm using a monitor capable of handling any resolution I expect to see, otherwise the specified resolution will be used as a cap by xrandr. So, counterintuitively, I set my laptop's LCD to 1600x1200, which allows xrandr to set it at the native 1280x800, and any external display at a resolution up to 1600x1200.

Something's funky in Firefox; my mouse cursor disappears while if its over a page area thats still rendering. Something to do with Xulrunner and Cairo, I'm sure, but hopefully it goes away soon; having the cursor disappear in your browser is disconcerting.

The Intel video driver still prevents me from using Compiz on multiple monitors. Intel chipsets, starting with the i945, are capable of handling textures up to 8096x8096, earlier chipsets (down to the i810) has a max texture of 2048x2048. Despite the physical capability, and the presence of patches that prove it works, the intel driver still ships with the lower limit, which prevents Compiz from rendering a texture across my two 1200px-wide monitors. Sigh.

All in all, openSUSE 11.1 is an extremely well-polished release. If you've been waiting to give it a shot, now is a great time. If you're wondering what differentiates openSUSE from other distro's, here's a quick rundown of this capable, flexible OS:

  • Desktop Environment options. OpenSUSE is one of few, and the only major Linux distribution, to comprehensively integrate more than one DE. OpenSUSE 11.1 gives you a well-tended desktop experience in Gnome, KDE (4.1 & 3.5) and XFCE. Enlightenment, ICEWM, WindowMaker, and FVWM are also included, though not as well manicured as Gnome, KDE & XFCE. In contrast, Ubuntu ships only with Gnome, and leaves integration of other DEs to the community. Fedora Core 10 has received quite a bit of bad commentary for the poor integration of KDE 4.1.

  • Download how-you-want. Software.opensuse.org provides a simple path to downloads of both full DVDs, CD sets, live CDs, bittorent links, and network installs for x86, x86-64, PowerPC, for Gnome Live, or KDE 4.1 Live. Did I mention it's actually easy?

  • The desktop is the server. In addition to the great desktop integration, SUSE releases have always made excellent servers. Setting up a LAMP stack, for example, is a one-click affair during install. Same as 'games'. ;-)

  • A huge universe of software. The above-mentioned OBS allows developers to upload code, and the service compiles it for them, and optionally, publishes it for install. Any time the codebase changes, or a depency changes, the software is automatically rebuilt, and if you have subscribed to a package's repository, you'll get an automatic update.

  • OpenOffice.org Novell Edition. Retailing for $120 for Windows, OpenOffice.org Novell Edition includes a variety of enhancements that have not yet been included in the upstream OOo package, such as PDF Import, better Excel formula integration, and improved import of MS OOXML documents.

  • The OpenSUSE community. OpenSUSE is working aggressively to step up the role of community, which typically is the group of people posting in forums or chat. OpenSUSE recently held an election of a steering board, which will guide the principles and direction for OpenSUSE. Voting was open to 'members', contributing participants in the the various openSUSE projects; this is a subset of registered 'users'. In addition, you have the larger, official support interests. Since openSUSE feeds into Novell's SUSE Linux Enterprise products, the documentation is well maintained, and installation support is still available with the boxed release.

  • Green is better than orange. Really, it is.

I use openSUSE Linux as my primary OS both at home & work, and SUSE Linux Enterprise Server at work as well. If you've got questions about using SUSE at work, even in a mostly-Windows shop, feel free to email me at bear454 [at] opensuse [dot] org.

Basecamp API for BungeeConnect

+ = ?

12 classes. 60 functions. 6 test applications. 30 unit test functions. One big fat API wrapper. BungeeConnect applications can now completely integrate with 37signals' Basecamp Project Management application.


Well, 37s are an arrogant group of developers; they even admit to it in their book. Ask them for a new feature and the answer is "no", or in my case "there's an API, build it yourself." So I am, in BungeeConnect, and you can too. (My own itch is moving todo-items from one project to another, something 37s has been reluctant to offer.)

Getting Started.
  • Login to the Bungee Builder, and create a new Solution.
  • Modify the Solution's Depencies to include the Basecamp API
  • If you want to modify the API, Import it (you'll probably want to, as there aren't any inbuilt Adapters).
  • In a class in your TypeLib, add BasecampAPI as a field.
  • Before you can go to town, you'll have to setup the API. Now there's nothing stopping you!
I've got two rather minor functions that are still throwing 404 errors - I'm working with 37s (via the forums) to get to the bottom of it, but again, they are minor, and I don't consider them showstoppers.

A bit larger, is an issue I found with BungeeConnect: their HTTP Utility doesn't properly auth PUTs, so none of the Update functions currently work. Bungee Labs has labeled this as Issue #7889 - hopefully it will be resolved sooner rather than later.

In Conclusion...

I'll be maintaining the BungeeConnect code until someone else steps up with better code, so drop me a line with any issues you encounter, or just let me know what cool tool you're building!

P.S. I'll be dropping another blog post soon about a new site I'm building for making Basecamp better using a variety of small tools.

37Signals says IE6 sucks

In a recent blog post, 37 Signals, originators of Ruby on Rails, and a series of extremely popular web applications, reminded users of their intent to stop supporting Microsoft's Internet Explorer 6.

Jason Fried, President of 37Signals blogged yesterday:
"We will not intentionally break IE 6 compatibility, but we will also not invest significant time or resources into making sure we are backward compatible with IE 6 after October 1, 2008."
What's a poor IE6 user to do?
"In order to continue using the products without any hiccups, Internet Explorer 6 users should upgrade to a newer browser..."
... like Firefox, or Safari, or maybe even Google Chrome (if you can work around their EULA).

Why drop support for a browser you've invested so much work in already?
"Continued support of IE 6 means that we can't optimize our interfaces or provide an enhanced customer experience in our apps. Supporting IE 6 means slower progress, less progress, and, in some places, no progress. We want to make sure the experience is the best it can be for the vast majority of our customers, and continuing to support IE 6 holds us back."
This reflects strongly on the culture of 37Signals and their customer base. In the original post, it was noted that, "..IE 6 usage has finally dipped below a small minority threshold of our customers...". This is contrary to browsers overall, as w3Counter still reports IE6 as the top browser in their August '08 stats, accounting for 29.91% of all browser hits. 37Signals is an amazingly successful, forward-thinking, and arrogant set of developers. Their customers, by reflection are mostly the same, and I'm proud to be counted among them. I just hope Firefox 2 isn't next on their hit list...

Of course, if you're using GNU/Linux or a Mac, this doesn't effect you anyway. ;-)

Silicon Mechanics: 'Wow'ing the Customer

Silicon Mechanics is building a new server for my company right now. They advertise 'Expert Included', implying you will receive top-notch support along with an excellent server. What that fails to imply is the amazing support you'll get before you order.

I submitted a quote through their web site, and requested the idle noise level of the server: something they're not currently publishing. Within 48 hours I got an email from Tim Groen, a member of their sales team, apologizing for the delay. In the meantime they had pulled a server, ordered a sound level meter, found a quiet room and tested the server. Wow #1.

Unfortunately, the server as quoted was louder than I was willing to tolerate (I work in the same room as our server rack). Tim asked a few questions about my priorities on the system, and what I would be willing to give up to get it quieter.

Shortly thereafter, I got another quote via email. Same system, but labeled 'quiet cousin'. Instead of chopping out any of my requested features, they opted to custom tune the system, with a guaranteed maximum SPL within my tolerances. Wow #2.

I got a call from Tim today, informing be the system was going to be a tad more expensive than originally quoted, as they were replacing the standard fans with something quieter. I approved the price change and got another email, which showed the fans they were including: maglev fans. Wow #3. I had no idea there were such things, but having experienced a maglev train I am expecting a rather quiet server.

Tim also told me to expect delivery next week; a full week ahead of their original estimate. Wow #4.


The server was delivered today, and unwrapped Christmas-morning-style. My co-hort and I bench-tested the server, and were very pleased with the noise level. Then the fans spun down after POST. I admit it; we giggled. The system is quieter than we expected, by far. Wow #5.

In the rack, compared to the rest of the noisemakers, I can't tell the server is running, save for a subtle low-frequency hum. Now to get openSUSE running on it, and start virtualizing (noisy boxes go first)!

Full disclosure: Silicon Mechanics sponsors my local Linux event, Linuxfest Northwest.

Freezing Rails 2.10 with MS SQL Server

So I'm starting to catch up with a lot of the deployment improvements in Rails up to 2.1.0; I'm freezing Rails, and any associated gems. Some of my apps run against Microsoft SQL Server, so the activerecord-sqlserver-adapter is required. That's where I ran into trouble; trying to freeze that in... apparently a frozen instance of Rails expects the adapters to be frozen as well!

So, here's my recipe for freezing Rails into your app, with support for Microsoft SQL Server:
  1. If you've already frozen rails, you'll need to unfreeze it:
    rake rails:unfreeze
  2. add the gem dependency to your environment.rb:
    config.gem "activerecord-sqlserver-adapter",
    :lib => "active_record/connection_adapters/sqlserver_adapter",
    :source => "http://gems.rubyonrails.org"
  3. Install your gem(s) if you haven't already:
    rake gems:install
  4. Freeze your gem(s):
    rake gems:unpack
  5. Refreeze Rails (I use my gems - you could do this from edge instead):
    rake rails:freeze:gems
Viola! Your Rails app now includes the Rails version it runs against, and any requried gems, including ActiveRecord's SQL Server Adapter.

P.S. This would be easily adaptable for any external ActiveRecord adapter (Oracle, db2, etc.)