The Technical Blog of James on purpleidea.com
Better git status
Running etcd over SSH
Working around an iPXE issue
Modules and imports in mgmt
Mgmt Configuration Language: Functions
Better dmesg in five minutes
A new provisioning tool built with mgmt
Bash $PATH filtering
Upcoming Speaking and Events
Git branch filtering
Five minute hacks: Swapping left and right headphone audio in wireplumber
One minute hacks: Saving time inserting images in Libreoffice
UEFI booting, and with a new kernel module
Improving git diff output in 5 min
Blocked select logging (deadlock finding) in golang
Deadline context test cancellation in golang
Magic typing with shortcuts on Linux
USB Audio on a Boombox
Working at Amazon
James is available for hire!
Inexpensive Dynamic DNS over IRC
USB Car Audio in a Civic
Mgmt Configuration Language: Class and Include
Upcoming Speaking and Events
A guide to fighting with a Cisco access point
The End of a Red Giant
Hyperlinks in GNOME terminal
Breaking out of the Slack walled garden
A new sync primitive in golang
Leaving Red Hat
Running `make` from anywhere
Mgmt Configuration Language
Hello World!
Copyleft is Dead. Long live Copyleft!
Extracting movies from libreoffice
Declarative vs. Imperative paradigms
Osmocom femtocell un-boxing
Metaparameters in mgmt
Faster golang builds
Ten minute hacks: Process pause & resume
Send/Recv in mgmt
A revisionist history of configuration management
Remote execution in mgmt
mgmt has a logo
Live dmesg following
Seen in downtown Montreal...
Ten minute hacks: Hacking airplane headphones
Automatic clustering in mgmt
Upcoming speaking In Hong Kong and South Africa
One hour hacks: Remote LUKS over SSH
Automatic grouping in mgmt
Automatic edges in mgmt
Introducing: git tpush
Debugging golang programs
Next generation configuration mgmt
Upcoming speaking
Trying out Ceph with Oh-My-Vagrant
Matching arbitrary URL's to custom Firefox profiles
Thanking Oh-My-Vagrant contributors for version 1.0.0
Vagrant and Oh-My-Vagrant on RHEL7
Making an empty RPM
Golang parallelism issues causing “too many open files” error
Git archive with submodules and tar magic
Oh-My-Vagrant “Mainstream” mode and COPR RPM's
A super privileged Puppet container
Kubernetes clusters with Oh-My-Vagrant
Docker containers in Oh-My-Vagrant
Sharing dev environments with Oh-My-Vagrant
Fancy git aliases and git cherryfetch
Building RHEL Vagrant Boxes with Vagrant-Builder
Introducing: Silent counter
Replying to mailing lists with Evolution
Captive web portals are considered harmful
The switch as an ordinary GNU/Linux server
Testing Evolution's git master and GNOME continuous
Hacking out an Openshift app
Continuous integration for Puppet modules
Fixing dropbox “conflicted copy” problems
Introducing: Oh My Vagrant!
Rough data density calculations
Hybrid management of FreeIPA types with Puppet
One minute hacks: the nautilus scripts folder
Securely managing secrets for FreeIPA with Puppet
Hiera data in modules and OS independent puppet
Restarting GNOME shell via SSH
Vagrant on Fedora with libvirt (reprise)
Keeping git submodules in sync with your branches
Working at RedHat
Puppet-Gluster now available as RPM
Introducing Puppet Exec['again']
Preserving your working directory in gnome-terminal
Speaking at SCALE today!
Building a snow shelter
Scathing review of the Lenovo X240
Show the exit status in your $PS1
Screencasts of Puppet-Gluster + Vagrant
Building base images for Vagrant with a Makefile
Testing GlusterFS during “Glusterfest”
Automatically deploying GlusterFS with Puppet-Gluster + Vagrant!
Vagrant clustered SSH and ‘screen’
Vagrant vsftp and other tricks
Vagrant on Fedora with libvirt
Now syndicated on “Planet Fedora”
Advanced recursion and memoization in Puppet
Documentation for Puppet-Gluster
Iteration in Puppet
Pushing Puppet at Puppet Camp DC, LISA 2013
Gluster Community Day, LISA 2013, Monday
Speaking at LISA 2013 about Puppet and GlusterFS
Easier strace of scripts with pidof -x
first release of puppet-shorewall
Desktop Notifications for Irssi in Screen through SSH in Gnome Terminal
GNOME Montreal Summit
Show current git branch in PS1 when branch is not master
Finite state machines in puppet
No Ads!
Installing missing GNOME games
Bittorent sync for repository mirroring
Gluster Community Day, Thursday
Linuxcon day three, Wednesday
Linuxcon day two, Tuesday
Linuxcon day one, Monday
New puppet-gluster features before Linuxcon
Puppet-Gluster and me at Linuxcon
Finding YAML errors in puppet
Upgrading from Fedora 18 to Fedora 19
a puppet-ipa user type and a new difference engine
Fresh releases! puppet-ipa, puppet-nfs, puppet-gluster
Playing with FreeIPA and puppet
puppet lsi hardware raid module
Collecting duplicate resources in puppet
puppet matlab module
puppet rsnapshot module
Forcing firefox to remember passwords
Overriding attributes of collected exported resources
Mothers day hacks
Upgrading to centos 6.4 with shorewall onboard
Fixing jerky scrolling in Firefox
Knowing when to release and deploy your code (...and a mini script)
running your file manager from a terminal
adding range support to python's http server to kickstart with anaconda
learn how to do one minute hacks, in three minutes
A quick anaconda trick
Automatic hiera lookups in puppet 3.x
Picking up the pieces after a Fedora 18 install
How to send and receive files like a professional
Renaming a GNOME keyring (for seahorse, the passwords and keyrings application)
SElinux causes pain when using puppet 2.x with hiera
Dynamically including classes in puppet
Clustering virtual machines with rgmanager and clusvcadm
How I broke (and fixed) my rgmanager service
visible close buttons on every firefox tab (including the last one)
more rows and columns on firefox new tab page
hello planet puppet
recursion in puppet (for no particular reason)
continuous display of log files (better tail -f)
setting timed events in puppet
preventing duplicate parameter values in puppet types
changing *that* keyboard shortcut right there (in gnome)
Multifile mode for text editors
Our fusion future
including a recursive tree of files with distutils
finding your software install $prefix from inside python
How to avoid cluster race conditions or: How to implement a distributed lock manager in puppet
puppet gluster module now in git
a puppet module for gluster
now syndicated on “planet gluster”
building intel nic driver (igb) for gluster on centos
my gluster setup, described
gnome3+others glipper/klipper replacement
fedora 14 to 17 upgrade
IPMI for linux professionals
how to use ssh escape characters
Dear internets
sparse rsync magic
git, gitosis, gitweb and friends...
gnome-do trick
lecturing and git-bisect
scary cool bash scripting inside a Makefile
getting gedit to work like magic
n900 features that should be added
a custom epiphany location bar
reading obscure documentation
getopt vs. optparse vs. argparse
sorting out the confusion
piping data through ssh
really well written article
IPVS + shorewall
scary man pages
multi monitors and how it should all work (long babble)
tech support for a keyboard
vanilla: my favourite flavour of gnome
why linux is powerful or: how to erase half your system and then fix it
the python subprocess module
the power to yield a better console interface
ssh hanging
cheetah == fortran
[py]inotify, polling, gtk and gio
evanescent 0.3
logging out of $SESSION
convert .ai to .svg using uniconverter
brilliant: get rid of mono
coloured tab completion
grep, shopt:dotglob and (hidden) dot files
Server Fault
community
first babble