Initial Thoughts on Arch Linux

About a month or so ago, I decided to give Arch Linux a whirl. Debian hadn’t let me down, but I’ve been using Debian as my primary workstation OS for about six years, so I was looking for something different. I first installed Mint, though oddly enough not the Debian Edition. That lasted about a week, mainly because it used the same repositories as Ubuntu, and I just couldn’t stand for that.

So next I try Arch. From the get go, it felt very much like installing Gentoo for the first time, only this time I didn’t have another computer to rely on (for whatever reason I didn’t want to use the MacBook Pro issued to me by work). It was a maddening experience, I appreciate the installer Debian provides much more now, as with Arch everything needs to be done by hand, from the partitioning of the drive, to the bootstrapping and installation of the system software.

This would have been fine, only I elected to encrypt the root and home directories, with LVM inside the encrypted drive. Unfortunately the Arch installation documentation doesn’t contain all of the information to install in this fashion in one place, I had to bounce between at least three different wiki articles using elinks2 to get the right magic to get it installed.

I can’t say that it has been smooth sailing. Practically on a daily basis I find some package which isn’t installed (because nothing except the bare minimum of packages is installed by default). Things like the display manager, X.org, desktop environments… all need to be installed manually, through pacman (“PACkage MANager”). This is not a problem for me, but there have been things that I assumed would be installed by default, that aren’t. Reminds me of my Gentoo days negatively. Maybe I just don’t remember installing that stuff on Debian, since this workstation went through the Squeeze->Wheezy->Jessie cycle before I put Arch on.

That being said, having up-to-date, stable packages on my system has been nice. No more waiting for the Debian team to make available the version of the package that has the feature or the non-essential bugfix I’m looking for. No scouring the backports repository (which always seemed to give suboptimal results). Pacman is fast, and I haven’t had too many issues installing things from it. AUR is another story entirely.

I like Arch well enough to have put it on the used laptop I got for a steal from my employer. Once I got it configured right, hibernation with the laptop has been awesome, albeit a bit slow to recover. Power management has been pretty good too, for an old laptop. I ended up replacing the battery, and it looks like I get about three hours and 15 minutes out of a full charge, which I don’t think is too shabby.

I still use Debian on my router, and my VPS (where this blog is stored). That will continue for the foreseeable future, as I want to keep my Debian skills up to date.

Crawfish Recipe

Here I’ve transcribed my father’s crawfish recipe. The original link still exists (Dad’s Crawfish Recipe), but he hasn’t updated the site in almost a decade. This page will be my copy of it.

Boiled Crawfish

Tools

  • Rapid gas (propane) burner
  • 60+ quart boiling pot with matching lid
  • strainer/colander, fits inside the pot (pot and strainer usually bought as a single kit)
  • 3-4ft. wooden cooking or boat paddle

Ingredients

Seasoning Mix

  • Dad usually buys the dry seafood boil mix from a commercial supplier. Some local seafood shops also prepare their own. The alternative is the cloth bags of dried spices to which you add salt. As a last resort, you can buy the liquid spices, but this usually results in a rather bland boil, unless you really spice it up a with more cayenne and salt. I have recently been using the dry spice mix (includes the salt) from Louisiana Fish Fry Products in Baton Rouge, LA (1.800.356.2905). Zatarain’s makes good stuff too.

The rest of the Stuff!

This is for one sack (40-50lbs) of live crawfish (pictures forthcoming)

  • 6 medium sized lemons, halved
  • 3 whole onions, halved
  • 4-6 whole garlic heads, halved
  • 2 bags of small red potatoes
  • 8-10 ears of sweet corn
  • additional cayenne pepper
  • whole cloves

Optional items:

  • andouille (smoked sausage)
  • whole artichokes (the whole flower, not the canned hearts!)
  • whole mushrooms
  • Brussels sprouts (trust me, this is the one of the BEST ways to eat these!)

Crawfish Preparation

Obtain a sack of live crawfish and keep cool and wet until ready for the boil. Prior to boiling, empty the sack into a large container (washtub). Rinse thoroughly and drain. Do not leave the crawfish in water as they will die because of lack of oxygen. Some people add salt to the water to “purge” the crawfish. This is fine but do not leave them for an extended period in salt water and be sure to boil them immediately after purging since crawfish are freshwater animals. (Dad says he read of an LSU study [citation?] which says that purging crawfish is no longer necessary because they are now largely farm-raised, and hence aren’t full of mud like wild ones would be).

Set up for Boiling

Set up a large (60qt or greater) pot with strainer/colander well away from the house outside on a rapid gas burner. This is done because of heat, gas flame, and mostly the pungent aroma of the cayenne-spice mix. Fill 2/3rds with fresh water and start burner on medium to high heat. Add spice mix (and salt if necessary) and lemons. Additional cayenne pepper and cloves may be added at this time. Bring to full rolling boil. Add potatoes, garlic, and corn, stir. Return to a full rolling boil. Let corn and potatoes cook for about 5-10 minutes (depending on potato size).

Boiling the Bugs

When the pot reaches a rolling boil put half-full sack (20-25lbs) of the mudbugs in the boiling mix. Stir gently (Dad uses a wooden boat paddle, I use one specifically designed for cooking like this). The crawfish will sink at first. Put the heat on high, cover, and return to a rolling boil. Cook the crawfish for about five minutes. Be careful not to overcook! The way Dad tells is that when the crawfish are cooked they will begin to float and sometimes cause the pot to overflow (Dad sez,”Dat’s another reason why dem crawfish are cooked outside, yeah.”). When most of the crawfish are floating, it’s time to turn off the heat. Do not remove them from the heat just yet, because now comes the most important part: let the crawfish soak up the spices. After turning off the heat, leave the crawfish to cool in the pot, soaking up the spices. Dad leaves them in the pot for up to 30 minutes or until they start to sink again. When they sink again, they are ready to spread on the table to finish cooling.

Enjoy dem mudbugs, spicy corn, potatoes, and other veggies!

Colorizing messages in mutt (stab 2)

mutt-score-colors-example-scaledThis image shows the different scores (“[1000]” scores red background, “[800]” magenta text, etc.). At work I use a slightly different set.

I think I got it, at least in the index (for some reason it doesn’t work from the pager, maybe it’s the source command there)! I’m able to tag a message with a score, and have that score translate into a different color. Here’s the relevant part of my .muttrc:

# Star scoring 
source ~/.mutt/stars
bind index,pager s noop # I use 'y' to archive messages, no need for 's' to be bound to <save-message>.  This frees it up so I can use it below.

set my_red_star = 1000
set my_magenta_question = 800
set my_yellow_bang = 600
set my_green_star = 400
set my_green_check = 200
set my_blue_info = 100
set my_del_star = 0

macro index,pager sr "<pipe-entry>~/bin/stars $my_red_star<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with RED"
macro index,pager sm "<pipe-entry>~/bin/stars $my_magenta_question<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with MAGENTA"
macro index,pager sy "<pipe-entry>~/bin/stars $my_yellow_bang<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with YELLOW"
macro index,pager sc "<pipe-entry>~/bin/stars $my_green_check<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with GREEN"
macro index,pager si "<pipe-entry>~/bin/stars $my_blue_info<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with BLUE"
macro index,pager sg "<pipe-entry>~/bin/stars $my_green_check<enter><enter-command>source ~/.muttrc<enter>" "Mark the current message with GREEN"
macro index,pager sd "<pipe-entry>~/bin/stars $my_del_star<enter><pipe-entry>~/bin/del_stars<enter><enter-command>source ~/.muttrc<enter><sync-mailbox>" "Remove color marking from the current message"

color index default brightred '~n 1000-1100'  # Mark the message with red!
color index magenta default '~n 800-999'  # Mark the message with magenta!
color index black brightyellow '~n 600-799'  # Mark the message with yellow!
color index default green '~n 400-599'  # Mark the message with green!
color index green default '~n 200-399'  # Mark the message with green (check)!
color index brightblue default '~n 100-199'  # Mark the message with blue!

Not much different than I had before. The problems I had were the .mutt/stars, bin/stars, bin/del_stars. It mostly worked once I got it set up, except for messages that had special regular-expression reserved characters in the message ID. Here’s the bin/stars file I have:

#!/bin/bash
SCORE=$1                                
msgid=$(sed '/^Message-I[Dd]:[[:space:]]*/!d; s///; s/[<>]//g; s/[][$|]/\\&/g; q')
echo "score \"~i '$msgid'\" $SCORE" >> ~/.mutt/stars 

The key was the single quotes around the actual message ID. And the del_stars file:

#!/bin/bash

msgid=$(grep -m 1 '^Message-I[Dd]' | awk '{print $2}' | sed 's/[<>]//g; s/[^^]/[&]/g; s/\^/\\^/g')
sed -i "/$msgid/d" ~/.mutt/stars

After some further testing, it still doesn’t work. I have one company that sends me a bill summary, and the Message-Id has square-brackets around an RFC1918 address. Rather than fight with mutt trying to get it to read and score the message properly, I just added the company’s bill email address to my .mutt/stars file, with the following line:

score "~f CompanyEmail@company.com" 600

Also, to get the del_star script to work most times I have to close mutt completely before the score is removed. But otherwise it works!