Chris Weyl's Technical Blog

MX::AttributeShortcuts -- now with Moo-style type constraints

I just released MooseX::AttributeShortcuts 0.028; it incorporates Moo-style type constraints.

...largely because I needed to relax, and wrote MooseX::Meta::TypeConstraint::Mooish :)

That means you can now pass a coderef to has() in isa that, like with Moo, dies on validation failure and lives on validation success:

Intel 7260AC Bluetooth [8087:07dc], Ubuntu, and the Thinkpad T440p

This requires a little magic, unfortunately; either the driver, system, hardware itself, or some combination thereof do not operate well with autosuspend enabled. Disabling autosuspend for this device does appear to resolve dropped / corrupted / weird bluetooth issues.

Based on my googling, I do not believe this to be Thinkpad-specific, rather something the Intel 7260AC firmware isn't handling properly at the moment. FWIW, I'm running Ubuntu 13.10 (saucy) on the thinkpad in question, and 12.04LTS (precise) on my destop, with the same card sold by Intel in a PCI-e mount.

Based on one posting in particular, the following solution presents itself:

This isn't ideal -- as it should Just Work -- but it works, and is certainly less drastic than turning off USB autosuspend globally. In retrospect, having the bluetooth device drop out shortly after boot/resume, but always be available after resuming, was a big clue.

Never, ever update on a Friday.

Never, ever update on a Friday.

GitHub: Automattic/jetpack #284: use content, attribute 0 -or- 'id'

le sigh

Useful git defaults -- systemwide

Sometimes it's necessary to -- for one's sanity, if nothing else -- to establish a set of generally non-controversial, sane, system-wide git configuration defaults. This is largely helpful when multiple people are using the same system who may not have a standard ~/.gitconfig they carry around with them.

To do this, we can leverage the little-used system-wide git config file at /etc/gitconfig. Remember that by default git looks at three files to determine its configuration (in ascending order of priority):

  1. /etc/gitconfig (system),
  2. ~/.gitconfig (user aka global), and
  3. .git/config (configuration for the current repository).

This allows us to set defaults in the system configuration file without interfering with people who prefer different settings: their global config at ~/.gitconfig will win.

This config sets a couple safer defaults for pushing, makes git merge/diff/rebase a little more DWIM, causes the committer, as well as the author, information to be displayed by default, as well as allowing for an easy way to override the system config on a per-system basis. (In case, say, you're using puppet or the like to distribute this configuration across multiple hosts.)

And... As with all things "generally non-controversial", remember that these are the sorts of things likely to touch off religious wars. The goal here is for a sane set of defaults for all users, not The One True Way To Do GIT. That's what user global configs are for :)

docker without password prompting

Just a little snippet.  This should be pretty obvious to those familiar with how sudo functions, but it's easy to run docker commands with sudo without being prompted for your password by configuring sudo to not ask for it.

Note that the normal warnings and red flags apply here.

If you install the above as /etc/sudoers.d/docker, then the user rsrchboy (line 1) and any user in the docker group (line 2) will not be asked for a password when running "sudo docker ...".

Again, the normal warnings and red flags apply here.