Category Archives: Tech Note

How do you collaborate remotely?

Recently at my $dayjob the remote workers were asked what collaboration tools we used to get our work done.  I thought this was a good topic and so I provided the following:

  1. IRC – This is the bread-and-butter tool for communicating with people inside and outside of my team.  If I go more than an hour without looking at IRC there is no telling what I might have missed.
  2. E-mail – Sometimes you need to send a lot of information to one or several people at a time.  I *only* use e-mail when I can’t get someone up on IRC (they are out of the office, they work on the opposite side of the globe, or they don’t use IRC) or have a large amount of information I need to convey.
  3. git – There is nothing like collaborating like knowing everyone is on the same page as you are and you can track changes back.  I write a lot of documentation and it all lives in git.
  4. svn – Like git, svn works well although we are trying to move the last bit of data that lives in svn into git

I think this is a good list but I also wonder what other people use for collaborating remotely.  What do you use?

create-tx-configuration

Last week while publishing a new guide I ran into a problem creating the Transifex client configuration file (.tx/config).  The configuration file is generally a hateful file that requires a lot of manual manipulation to add in all the POT files for translation.  This file exponentially increases the hatefulness as the number of POT files increase or the complexity of where these POT files increases.  In summary, I hate to create these POT files.  It seems I always end up screwing it up somehow and the Transifex client isn’t real great about telling you why it failed (it just fails in a non-obvious manner).

I started putting together some bash script to write the thing for me until I realized that the script was going to become unwieldy quite quickly.  Luckily I have a boss who doesn’t mind poking me into learning a new trick.  This new trick came in the form of Python.  Realize that the last formal programming class came in the form of a Java class nearly ten years ago.  Since then I try not to touch the stuff.  But now I have a purpose… a need…  a problem in search of a solution… and an excuse to start to learn Python.

So my creation is called create-tx-configuration.  This simple program will read the pot/ directory for .pot files and create the .tx/config file for Transifex to use.  While there was a way to have the Transifex client make the config file the process wasn’t easy nor did it work in all cases.

If you have a need to create Transifex config files please checkout create-tx-configuration and, as always, I appreciate feedback.

Git access from within vim

Today a line was crossed.  I’m not sure if it was the insanity of spending all day writing nine lines of Python (I am not a developer… I am not a developer… I am not a developer.) or what, but I really wanted to do git commands from within vim (my editor of choice).  A quick search turned up the properly-named git-vim.  The program does just what I want it to: be able to ‘git add’, ‘git commit’, and ‘git push’ all while never leaving vim.  It also does other things but these are the basics that I want.  If you want this functionality I recommend git-vim.

Mutt Configuration of GPG and From field

Mutt is one of those programs I have a love-hate relationship with: I hate to love it.  It’s flexibility and almost infinite configuration options makes this email client one of the best and worst to use.  Once you get mutt configured you’ll want to put the configuration file in the same place you keep your other important papers, passport, etc.  I have been on the losing end of not doing this and had to start over from scratch with my configuration.  Trust me, it’s not fun.  Pair that with reconfiguring offlineimap and postfix and you’ll have a new-found respect for backing up your configuration files (/home and /etc).  If you’ve ever looked at another mutt configuration file and feel overwhelmed a good place to start to build your own config file is the muttrc builder.  That builder will help you build your configuration file for most settings.

I won’t bore you with all 1334 words that is my configuration file but I will point out the GPG settings, how to customize the From field, and working with listservs.

I am subscribed to many listservs.  Probably not as many as some but more than average.  Because of this I receive an obscene amount of email everyday.  Mutt allows you to mark these messages as coming from a list so you can safely ignore these messages for several days weeks and you won’t miss that personal message that someone responded directly to you from the list.  To do this you must provide the lists you are subscribed to.  Wildcards are allowed, thankfully.

subscribe @lists.fedoraproject.org
subscribe @yahoogroups.com

That’s it, you can just list the from address of each list, or just use partials, and mutt will show these messages as coming from a list.  This brings up another interesting aspect of dealing with lists: the address from which you subscribed.  Maybe you use one email address for certain lists or contacts and you want to automatically use that address for messages going to certain addresses.  No problem, just use this string:

send-hook '~t @fedoraproject.org' my_hdr From: "First Last <me@example.com>"

That configuration will change the from address to “First Last <me@example.com>” when sending to an address that contains @fedoraproject.org.  You can put in as many of these as you’d like.

Mutt also works well with GnuPG (GPG) and S/MIME.  While I haven’t worked with S/MIME certificates I can attest to mutt’s ability to utilize GPG gracefully.  There are some settings you’ll want to set in the configuration file to make sure GPG does as you expect.

set forward_decrypt = no <- This setting means that you won't accidentally forward a previously encrypted message.
set crypt_autoencrypt = no <- This will force all messages to be encrypted.
set crypt_autopgp = yes <- This will force the crypto to be PGP or GPG.
set crypt_autosign = no <- Sign all messages.
set crypt_autosmime = no <- Use MIME instead of in-line signatures
set crypt_replyencrypt = yes <- Encrypt replies to encrypted messages.
set crypt_replysign = yes <- Reply to signed messages with a signature
set crypt_replysignencrypted = yes <- Reply to signed and encrypted messages with a signed and encrypted message.
set crypt_timestamp = yes <- Use a timestamp.
set crypt_use_gpgme = no <- Use GPGME
set crypt_verify_sig = yes <- Verify signatures on incoming messages
set pgp_auto_decode = yes <- Automatically decode PGP signatures
set pgp_autoinline = yes <- Use auto inline.
set pgp_sign_as = '024BB3D1' <- Which key you want to use by default.

You don’t have to use the settings I use but you should know what each setting does.  There may also be some duplicate or deprecated commands in there as well.  You can even set mutt to automatically sign and/or encrypt messages based on the address you are sending the message to:

send-hook friend@example.com 'set pgp_autosign'
send-hook friend@example.com 'set pgp_autoencrypt'

Aliases are your address book of email addresses.  They look like this:

source $HOME/.mutt/mutt-aliases <- Points to where the file of aliases is located.  You can put them in muttrc.
alias Friend First Last <friend@example.com>

This means that when you send a message to ‘Friend’ the message will magically be sent to  ‘First Last <friend@example.com>’.  A very handy way of sending messages to people without having to type their entire name or email address.

I hope this has been a helpful post on mutt.  I’ll happily attempt to answer any questions although I’ll have to say that I’m far from a mutt expert.  There are also many other customizations that I did not get into that could further increase your enjoyment of this great program.

Amazon Instant Video and Linux

Yesterday I had a hankering to watch Rocky IV.  (I don’t know either.  Perhaps it was all the Survivor Pandora played for me in the morning.)  I had always wanted to try out Amazon’s Instant Video system but wasn’t sure if it would work with Linux since other offerings seem to be pro-DRM and less open.  I did a quick read up on the subject and because Amazon uses Flash (yeah, I know… another topic for another day) their system can be used by any computing device that supports Flash.  Perfect.  So I was able to rent Rocky IV and watch it without any problems.  I’ll definitely be coming back to Amazon in the future!  Thanks Amazon!

Setting up nVidia drivers

At work I always forget this so this is a technical note for myself.  Maybe it will help you too?

  • Run lspci to determine what controller you have.
  • Visit the nVidia driver website and select your controller.
  • Stop X (telinit 3)
  • Download the file and chmod 500.
  • Verify you have gcc and kernel-devel packages installed.
  • Execute the program you downloaded from nVidia.
  • Start X (telinit 5)
  • Log in
  • Execute nvidia-settings
  • Activate additional monitor (twinview)
  • May have to enable Xinerama for more than two monitors.
  • Enjoy fruits of labor.

Creative Commons License
Sparks’ Fedora Project Journal by Eric H Christensen is licensed under a Creative Commons Attribution-Share Alike 3.0 United States License.

Mutt’s tls_socket_read

Is anyone else getting a “tls_socket_read (A TLS packet with an unexpected length was received.)” error?  I’m seeing this almost constantly when connecting to Gmail via IMAP.  I’ve already filed a bug but I’m trying to do some additional research.