Linux:At the Office

I have been running Linux on my laptop at home for the last four-ish years now and it's given me very little trouble. Mostly it's just been the growing pains of each of the projects. I just recently started running Linux on my laptop at work as well (if you manage Linux servers, why not use Linux to do it). Inevitably, the question has been asked numerous times "what open source Linux software out there can do this thing I need to do?" Usually when I start researching that though, I find myself wishing to know what everyone else uses and there just doesn't seem to be a lot of blog posts on that. That said, here we go.

The things I do in my day usually entail the following

Email
Awwww yeah. This one is everyone's favorite topic I'm pretty sure. I recently read an article about how one of the greatest deficiencies of Linux is its lack of really solid mail clients. This is true to a certain extent. While Linux has a couple of pretty solid mail clients, Evolution and KMail, they both still lack reliable Exchange support. Evolution has an Exchange mapi plugin, but it was pretty buggy for me. It also has support for Exchange EWS, but your exchange web services need to be set up correctly for that to work.

The solution I found here, after an unfortunate amount of time hunting around, is called DavMail. I have to say that this little piece of software is really great. Exchange basically provides three main pieces of functionality: email, calendar syncing, and Active Directory address book searching and syncing. All three of these pieces have open source equivelants: IMAP+, CalDav, and CardDav. What DavMail does is connect to the Exchange server and provide a local server for each of these services. With this you need not make any wonky changes to your mail client or use any unstable plugins. You simply use what's already tried and true (and open source if that's important to you): IMAP, CalDav, and CardDav.

VPN
My company uses two VPNs at present because we are stuck in the middle of a transition from one to the other. That unfortunately means that I need two VPN clients. Thankfully though, the open source folks have come through on yet another awesome competitor to a proprietary alternative. The first VPN client I use is called vpnc. This one is for Cisco's standard VPN server. The other client I use is called openconnect. This one is for interfacing with Cisco's AnyConnect.

Internet Browsing
This one took me a little bit to get sorted out. Don't get me wrong - I like Firefox. It's just a really heavy browser. It takes a very long time to come up from a cold boot and also takes a lot of RAM while it's running. Understandably so though, that browser does just about everything. To sum it up now so you don't have to read the rest of my ramblings on this particular topic, I ended up using Firefox.

Now, to cover the reason why... I really like the surf browser (this browser is so tiny you can easily count its size using kilobytes) as well as Midori (a clean and small apparent [from the ui] fork of chromium), but they both lack something one really needs working in a big corporation - Microsoft's NTLM authentication. If I try to log in to any SharePoint site, I am immediately sent to a 401 error page (not authorized) without even being presented with a login box. Firefox, however, has NTLM built in so that's the one I use now.

Programming/Development Environment
Almost every day I'm writing a script or program of some sort in Perl, C++, PHP, bash, or ksh. All of this programming occurs in vim. I won't lie, I heart vim. There's not much more to say here.

If you don't know vim but are interested in learning, I highly recommend it. If you think keyboard shortcuts aren't worth the time they can save you, just move along. If however you are in that group but are still interested in command line editing (it does have its perks after all), Nano is a good option for you. Otherwise in the realms of guis, I'd say Bluefish is a good option and Leafpad is a good one (albeit very basic) for you minimalist folks.

General Office Authoring
This means Word documents and Excel spreadsheets. I use LibreOffice for this. In this category, we've got some pros, but we definitely have some cons.

The pros are all pretty obvious here. A mostly fully functional office authoring suite, nearly equivelant to a multi-hundred dollar suite of software is a pretty big pro, especially since it works almost flawlessly with Microsoft's formats. However, on the side of the cons (Kaaahhhhhnnnn!!!), we've got a few. Some of the more advanced and less used features of MS Word are not yet implemented, or not implemented in the same way in LibreOffice Writer. The biggest impact for me though is LibreOffice Calc. It's biggest defficiency in my experience is macros. It turns out that it uses a completely different macro language/syntax than MS Excel. This means that chances are, those drop-down cells that change your spreadsheet won't work at all. This is very problematic when your company publishes metrics using fancy Excel spreadsheets with hundreds of kilobytes of macros.

Documentation
I use two products, one because of superiority (in my opinion), and one out of necessity. The necessity is LibreOffice Writer, which is required because every big company seems to use SharePoint shared documents to do documentation, despite it's poor design, hungry indexer, and a versioning system that's less functional than adding the modification date to the document filename.

Out of superiority though (again, my opinion), I use a wiki for documentation. Specifically MediaWiki, though there are many other solutions out there. This enables my team to work collaboratively on their documentation. It's easily indexed and searched as it is stored in plain text. The markup is easy, and you don't have to fight with a wysiwyg editor wrongly auto-formatting much of what you do. For a bigger compare and contrast of SharePoint and MediaWiki, I wrote a post about this a ways back.

Versioning Work
This one isn't really something that's super applicable for most people I suspect. For versioning my files though, I have lots and lots of git repos. I have one for versioning all the documents I write/modify [because SharePoint's versioning is awful], and I have one repo per script that I write with all of my remotes pointing to bare repos sitting on one of our backed up servers. I readily admit this isn't the easiest way to do it for most folks, but for me, a git fanboy and engineer, git is by far the best [that I know of] and most fun way to do this for me. If I didn't have to do Word documents for documentation though, I would happily rely on MediaWiki's versioning functionality for all of my documentation needs (sounds a little like a commercial).

BMC Remedy
Nope, not going to link to it - it's not worth that much dignity. However, if you are unfortunate enough to have to deal with this software, it installs nicely in wine and in fact runs better on Linux than on Windows (oddly).

Going back to the insult I just threw BMC's way, don't get me wrong, this software is neat. It does a good job tracking piles of metadata for ticket tracking. However, I have several reasons for disliking it so much. It's a super huge bandwidth sucker (go ahead, turn on tcpdump and watch what it does when you perform any action). It's also unbelievably slow (here's the bandwidth thing again) and is completely dependant on Internet Explorer 6 or greater, rather than being its own piece of independant software. Additionally, it's buggy and it's missing all kinds of interface conveniences that one would expect in something so robust and expensive. Here's to Service Now being a better product than its predecessor (I hope).

Connecting to Windows/SMB Shares
I've had problems with this in the past in Linux land. For whatever reason, SMB share integration into file managers (thunar, nautilus, etc) has been pretty slow and buggy. However, if you have root access to your laptop, you can use mount.cifs to mount the SMB share locally and that has yet to fail me. It's fast and stable, AND you can add it to your system's fstab. If you want to try SMB shares in your file manager though, install your distro's gvfs and gvfs-smb packags and close all of your file managers to reload things.

Transferring Files From Nix to Nix
This one is one of my favorites. The people surrounding the openssh project are truly geniuses in my mind. A lot of people transfer files from one Linux system to another by using scp to download the file to their local machine, and then use SCP to transfer that file from their local machine to the destination server. Depending on how things are set up, you may be able to scp files straight from server to server.

There's this really neat thing out there called sshfs. Sshfs allows you to mount a remote filesystem locally...over SSH. There is no additional software installation or configuration required on your server other than having ssh installed and running. You can mount these filesystems and drag and drop files all over the place. It's a pretty great piece of sofware I do say so myself, and very stable too.

Now, I typically use scp to transfer my files anyway. Where sshfs really comes in handy is when I need to work on remote files such as Word documents or Excel spreadsheets that are stored on the remote system. With sshfs I can mount the remote share locally and work "directly" on the files without having to scp them locally, work on it, save changes, and scp it back to the server.

Microsoft Office Communicator
This one is a sensitive topic for a lot of people. Most of the people I know don't like MOC. Granted, most of the time that's because it's not set up right, not because the product itself is bad.

To connect to a MOC server from Linux land, we need Pidgin and a plugin for it called Sipe. With these two, you should be able to connect to the communicator server, send and receive messages, send and receive files, share desktops, and search Active Directory for users. It's a pleasantly functional plugin.