Using bookmark synchronization on Google Chrome for Linux and Mac

For a long time, I blamed the sluggish performance of the web browser on my Linux machine at home on the ancientness of the hardware.  However, when my much nicer Linux machine at work showed the same problem, I began to think maybe it was just Firefox.  I’ve been an avid Firefox user for many years, but my loyalty wavers when my browser can’t keep up with my keyboard.  Based on the advice of strangers on the Internet, I decided to give Google’s Chrome browser a try.

Chrome is still a maturing browser, but it is fast and capable.  There’s only one real drawback: bookmark synchronization.  With Firefox, I had been using Xmarks to synchronize my bookmarks, but that’s not currently available for Chrome.  In the “Early Access” builds of the Linux and Mac versions of Chrome, the bookmark sync that the Windows version has is available.  This syncs the bookmarks to your Google Docs account, which makes it rather handy.  However, synchronization is not enabled by default.  To enable it, you have to pass the –enable-sync option at launch time, which is easier said than done.  Fortunately, it’s not too terribly difficult.

Continue reading

Upgrading to Fedora 12 via yum

Since Fedora 12 was released yesterday, I decided I should go ahead an upgrade my Linux box at home from Fedora 11 to Fedora 12.  As I’ve done in the past, I used the Fedora Project wiki as reference to upgrade via yum.  Although it is not officially supported, it generally results in a shorter downtime than a standard re-install, and it allows me to do it remotely.

As in the past, I had to remove a few packages to make the dependencies work out.  This time around it was: krbafs-devel tigervnc-server krbafs gnome-bluetooth{,-libs} pulseaudio-module-bluetooth bluez

Then I ran into a different problem.  My /var partition ran out of space for the 1.4 GB that needed to be downloaded.  So I first ran `yum groupupdate Base` to update the basic packages and then `yum upgrade` to update everything else.

That’s when the trouble hit.  In the instructions, after yum has finished, you’re supposed to install grub.  I forgot to do that and rebooted immediately after yum was done.  I was a bit confused when the machine never came back up, so earlier today I burned a CD and went into rescue mode.  Initially, I could not get grub-install to work. I’m not sure what finally fixed it, but after several reboots and much straw-grasping, I got it working.

So now my machine is happy.  I just need to get NetworkManager to stop killing my resolv.conf

Accessing Taleo from Mac or Linux

Some companies (including my own employer) use a company called Taleo to manage the hiring and recruitment process.  As an applicant, I’ve not been very impressed with it, but that’s neither here nor there.  From the applicant side, you can use just about any browser to fill out the forms and submit your application.  However, if you’re a hiring manager, Taleo expects that you’ll be using the Internet Explorer browser.  If you’re on a Windows machine, that’s probably available to you.  For Mac and Linux users, it’s not an option.

So what can you do?  You can either go find a Windows machine to use, or you can try to run Internet Explorer using Wine.  Neither of those are necessarily that appealing.  Fortunately, there’s a third option, which is to use the (closed-source but free-as-in-beer) Opera browser.  Once you’ve got that installed, it’s a quick process to get Taleo workin* In Preferences, click on the “Advanced” tab and select “Content”

  • Click the “Manage Site Preferences…” button
  • Click the “Add…” button
  • Enter your Taleo site (e.g. “company.taleo.net” or “taleo.com”) in the “Site” field
  • Choose “Open all pop-ups” in the “Pop-ups” drop-down menu
  • Click the “Network tab”
  • Select “Mask as Internet Explorer” in the “Browser identification” drop-down menu (note that “Identify as Internet Explorer” will NOT work)
  • Click “OK”
  • Click “Close”
  • Click “OK”

That’s all it takes.  As a bonus, you now have the very capable, stable, and secure Opera browser installed.

2009: The Year of Linux on the Desktop

It’s been a joke for nearly a decade (maybe longer) to refer to the current year as “the year of Linux on the desktop.”  For me, it’s been a reality for several years, at least at home.  With my change in jobs last week, I had only a limited equipment budget, and since I needed a new laptop, that didn’t leave much money for a new desktop.  Most of my coworkers have opted for iMacs or Mac Pros, but I opted for a surplus lab machine running Fedora 11.  With the two widescreen monitors and 1 TB RAID 1 that I set up, it clearly makes sense to use it primarily.

Having used Linux in both server and desktop settings over the past 8 years, I’ve grown very comfortable with it, but my first week was not without issues.  The first was that the video card in the machine was made by ATI.  I’m not passing judgment on the quality of ATI’s hardware, but their Linux drivers are problematic.  Fortunately, my officemate had a spare NVIDIA card that I could put in.  A quick run of the NVIDIA setup program, and I had my monitors working perfectly.

The real fun came getting my e-mail set up.  My employer has a Microsoft Exchange server, which I’m required to keep an account on.  I first tried to use the Evolution groupware client, which has some rough support for Exchange.  For the life of me, though, I couldn’t get it connected. So I tried to use IMAP, which also didn’t work.  Of course, that didn’t bother me too much, since an IMAP connection wouldn’t work for calendaring or contacts, just e-mail.

Most of the admins in my group use Google accounts for e-mail and calendaring, so I decided to go down that route.  I set my directory entry to forward my work e-mail to my Google account and set up Google to POP my Exchange e-mail (since mail sent from an Exchange user doesn’t leave the Exchange server).  Evolution has excellent support for Google accounts, including e-mail, calendars, and contacts.  At least, I thought it did.  It turns out Evolution has a fun bug that causes recurring calendar events to not display when the account is added as a Google account.  Apparently, it works if you add it as a CalDAV account, but if the calendar is the primary calendar for an account, the @ symbol in the URL breaks things.

I finally gave up on Evolution and tried Mozilla Thunderbird.  Thunderbird has a calendar extension called Lightning.  With the gContactSync add-in, I can synchronize my contacts as well.  The  account setup was really easy, and I’ve been happy using it.  I just wish I could have arrived at it sooner.

Most of this post has focused on problems I’ve encountered in desktop Linux, but the truth is, most of it has gone pretty well for me.  I’ve used Fedora on my primary desktop at home for years, and most things just work.  Many of the reasons people give for Linux not being ready for the desktop are based on things that have been fixed years ago, or the fact that the problems are different.  All OSes have problems, but when you’re used to the problems of one, the problems of another stand out.

It’s 2009, the year of Linux on the desktop.

This is what passes as humor

Since I don’t have time to write a real blog post, here’s a recent exchange on Twitter between my friend @orangeshirtguy and myself.  If you get the jokes, I feel sorry for you.

Me: I like using sed commands in IM and then berating people when they have no idea what I’m talking about.

OSG: @FunnelFiasco to them, it’s just a case of he sed, she sed.

Me: Quick. Someone give me a witty rejoinder using the word ‘awk’ RT @orangeshirtguy: to them, it’s just a case of he sed, she sed.

Me: Better late than never? @orangeshirtguy don’t you think that joke was a bit `awk`ward. Perhaps you should `tr`y harder next time?

OSG: A nano second too late. I don’t need to vi for attention, I’m leet to th emacs.

Me: @orangeshirtguy > /dev/null

OSG: @FunnelFiasco: Not just “@osg >/dev/null”. That’s *nix fail. Try “cat @osg > /dev/null”. Have to have the cat, ‘cos OSG’s a cool cat.

Me: @orangeshirtguy not fail. I gave you the ol chmod a+x because I want you to be executed.

OSG: @FunnelFiasco : I gnu you would get mvious.. You must get a grep on yourself…

Me: @orangeshirtguy You don’t need to be such a cranky Gnome. I think it’s time to put this thread on IceWM. Surely you can CDE that point?

OSG: This is more like it. Vim and vi.gore.

OSG: @funnelfiasco Listen to me, mac, OS I’ll have to bash you to illustrator my point, and you’ll be a shell of your former self.

Me: @orangeshirtguy quit trying to stall, man. You’re de Raadt and you know it. Maybe you should go grab your blanket like Linus.

OSG: @funnelfiasco niiiiiice -20! should we kill -9 this thread and GBTW? It could get troff if I spend the rest of the day doing this.

Me: @orangeshirtguy [509 bcotton devo ~ ]$ niiiiiice -20! -bash: niiiiiice: command not found

And then @johnjanitor had to cap it off with: @orangeshirtguy @funnelfiasco please don’t shutdown now, it is not the 2nd tuesday yet. continue or cancel?

I may have found my next phone

I fully expect to be in the smartphone market in the not-so-distant future.  My BlackBerry 8700c has served most admirably these past few years, including untold drops onto various surfaces and a 9-hour nap in a snow bank.  Despite it’s faithfulness, it is not the phone it once was.  Aside from some cosmetic problems, it has a tendency to freeze up every so often, which requires me to remove the battery to shut it off.  Not to mention the lack of 3G capability.  That really hurts.

I’ve been eyeing the iPhone since it first came out, and the more I learned about the phone itself, the more I like it (especially the 3G S).  Unfortunately, the more I learn about the way Apple and AT&T rule the network, the more repulsed I am.  That, among other considerations, is a big reason why I still have yet to let the BlackBerry go.  Still, when I look at the features that I want out of a smartphone, the iPhone fares the best.  Until now.

There has been quite the buzz (or at least mild hum) on the Internets since Mobile-review.com did a preview of the Nokia N900.  Holy crap, this looks like my kind of phone.  From a hardware standpoint, it seems more like the G1, which is a solid-feeling phone.  What really sets it apart is the software side.  The phone runs Maemo, a Debian-derived Linux distro designed for mobiles and tablets.  My knowledge of Maemo is still pretty sketchy, but from the Slashdot discussion I’ve gathered that it is a full-featured Linux distro, capable of running just about anything you want.   Has freedom finally come to the cell phone market?

At the moment, it appears that most of the discussion on the Internet begins with the Mobile-review article, any other details are hard to find.  One site did suggest that it might be available in the US in September, and since Nokia World is scheduled for Sept 2-3, that’s not unreasonable.  The list price is supposed to be $780 (which compares well to the iPhone 3G S list price) and I expect the carrier (likely T-Mobile) will offer some nice subsidizing.

So for now I will wait and see what develops.  It looks like a great phone, the real deciding factors for me will be the release date, the price and the carrier.  For all the bad things that I’ve noted about AT&T, they’ve been my wireless carrier since back in the Cingular days and I’ve never had any problems.  Plus, they offer a discount because of my employer, which is always a nice incentive.  Will I end up switching carriers so that I can get the N900?  Will the price be such that I can just buy it and bring it onto my existing AT&T account?  Will I chicken out and just try to do everything on my Samsung Sync?  I guess we’ll find out soon.

Setting up a print server

Matt made a comment on an earlier post asking if I knew of any good how-to articles about setting up a print server.  I did a little bit of looking, and it seems like most of the good articles assume that the server is already up and running.  I will not pretend this is a good article, and it certainly isn’t comprehensive, but it is what it is.  Basically, I’ll just run down the cupsd.conf file on my print server and point out differences and why I made them different.

Now some people might ask “well, Ben, what about Windows-based print servers?”  That’s a valid question.  It has been my experience that Windows print servers work very well with Windows clients.  In a heterogeneous environment, though, Windows servers don’t perform well.  That’s where the Common Unix Print System (CUPS) comes in.  CUPS runs on pretty much any Unix or Linux system (including Mac OS X, which is part of the reason Apple purchased CUPS in 2007). Most, if not all, Linux distributions ship with CUPS, and the source code is available if you prefer to roll your own.  We are going to assume you’ve already done a yum install cups (or apt-get install cupsys or ./configure;make;make install or whatever).

I’m assuming your CUPS configuration files live in /etc/cups, which is the default on Fedora/Red Hat/CentOS systems.  If it lives somewhere else, adjust accordingly.  There are several files in the configuration directory, but if you’re setting up a server, the one you’re immediately interested in is cupsd.conf.  This is the configuration file for the CUPS server daemon.

There are a lot of options that you can specify, I don’t know what all of them are, but that’s what the documentation is for.  What I do know is that lines that start with ‘#’ are comments, and are there to help you remember later what you did when you set your server up.  The options are mostly in the format “option_name option_value” and some options are grouped into sections with <label> </label> tags, similar to HTML and XML.  So let’s look at what I did, keeping in mind that my options are set for my server, and your needs may be different.

SystemGroup sys root eascomp

The “SystemGroup” option defines who can administer the print server.  In this case, the ‘eascomp’ group contains all of my department’s IT staff.  This allows anyone on the team to do routine tasks on the server (e.g. deleting jobs, restarting a queue, etc) without having to explicitly define each command in /etc/sudoers.  Note that this does not give the specified group(s) permission to edit the config files by hand, that is still controlled by regular Unix file permissions.

#Listen localhost:631
Port 80
Port 631

By default, CUPS is set up to only listen to requests coming from the machine it is running on.  That doesn’t do much good when you’re trying to run a print service for multiple machines, so I commented the line out.  I then added the ‘Port 631’ line to tell CUPS to listen for requests from any host on port 631 (we’ll make the security a bit better later).  631 is the standard port for the Internet Printing Protocol (IPP).  However, Windows does not seem to understand IPP by default, so when you add a CUPS printer to Windows, you have to specify the port (e.g. http://print.my.employer.edu:631).  In order to remove this pain, I also told CUPS to listen on port 80, the standard http port.  If you plan to run a web server on the same machine, you can’t listen on port 80.

<Location />
 Order deny,allow
  Allow  *.my.employer.edu
  Allow 10.79.127.*
  Allow 10.79.168.*
  Allow 10.79.169.*
  Deny all
</Location>

This section controls where clients can access the server from.  In most of the real-world cases I can think of, you’ll want to block all hosts by default and then allow only the specific hosts or networks that need access.  Only bad things can happen if you run a print server for the whole world to use.  The order of allow and deny after the Order command is very important.  Whichever comes first is the default, so you’ll want to make sure you use “deny,allow” unless you’ve got a completely self-contained network.  In my example above, I deny everywhere and then explicitly add the IP addresses and DNS entries for my department.  (It isn’t strictly necessary to do it both ways, one or the other works fine in most cases.  It just so happens that I’ve got a few IPs that don’t have DNS records and I’m too lazy to fix that).

That’s all there is to it.  You’ve now got your own cupsd.conf and you’re ready to start the server (/etc/init.d/cups start, unless you’re Nathan, in which case it’s “go CUPS go!”).  It’s also worth noting that you can do some CUPS configuration through a web browser (http://localhost:631) or through a GUI program that your distro provides.  I prefer to do it by hand, because that’s easier to do remotely and it gives you more control over what you’re actually changing.

So now that you’ve got your server set up, it’s time to add printers.  At this point, I think the rest of the Internet does a good job of explaining things, so I won’t duplicate the effort.  Don’t worry though, I seem to be on a CUPS kick lately, and I doubt this post will be the last on the subject.  I do want to note, however, that just because you have CUPS itself running, that doesn’t mean you’re done.  I strongly suggest modifying your firewall rules to allow only the correct hosts access to the port(s) you’re running CUPS on (you’re doing default deny on your firewall, right?).

So that’s why the printer won’t print…

A few weeks ago, I thought I’d try to fix some printing problems but upgrading the version of CUPS that was installed on our print server.  Of course, since the print server runs Solaris 9, this wasn’t the easiest of tasks.  My first stop was to look on Sun Freeware for a package.  Unfortunately, CUPS was not among the hundreds of packages available.  So I Googled around a bit and found a package on Sun’s website.  Too bad it was the same version I already have.  Finally, I surrendered and grabbed the source.  Which refused to compile.  Granted, a smarter admin could probably have compiled it no problem, but I couldn’t get it working.  We were now about 2 business days from the outage I had scheduled.

Then I had one of my more brilliant thoughts.  Why not just set up a VM and run a Linux CUPS server?  So I did.  Not to brag or anything, but I had it up and running and the old server is forwarding port 631 to the new so the change is mostly invisible to the users.  Go me.  But there were a few problems.

The morning of the switch, one of the secretaries reported that the main office printers weren’t working.  One of them had a funky job that killed the queue, so I cleared it and restarted the queue.  But the other one looked fine.  My colleague went downstairs and checked it out, but couldn’t find any problem with the printer itself.  Around lunch, I was looking through /etc/cups/printers.conf and I came to a sudden realization.

HP JetDirect cards listen on port 9100 for incoming print jobs.  When setting up that particular printer, I forgot to include the port number.  That would explain why the socket process was still running and the load was so high.  Once that error was fixed, I was back in business.

There was still one more problem to be worked out.  A rather cranky professor let me know a while later that the printers on the 3rd floor weren’t working.  We have two printers there, with a CUPS class that splits the load between them.  The idea being that if one of the printers jams, the other keeps going.  This keeps the users from complaining.  Except when no print jobs finish for several days.

So I took a look at the 3rd floor printers on my way into the office one morning.  One of them had jammed, there was no question about that.  Several sheets were stuck in whatever that doohickey is that sits under the toner cartridge in the LaserJet 8150.  When that was cleared, the printer began catching up.  But the other printer…no jams, no other obvious problems.  I went up to my office to take a look at the server side of things.

Wiser from my previous experience, I checked that the config was correct.  It was.  Because I couldn’t think of anything else to do, I tried to telnet to the printer.  Connection refused.  Well that sounds like a problem.  So I tried from the old server.  Success.  Nosing around in the printer config, I realized that someone had set access controls on the printer so that only the old server could access it.  Once that was updated, all was well.  For now?