I’m thinking about getting in to Ceph development,
and so I’m thinking about how to quickly provision and destroy and
reprovision tiny Ceph clusters at home.
For love of blinking lights, I’ll probably build a cluster with
Banana Pi boards in the future, but for
now I’m just using libvirt and KVM.
Ceph-libvirt-clusterer
lets me clone a template virtual machine and attach as many OSD disks
as I’d like in the process. I’m really happy with the tool
considering that I only have a day’s worth of work in it, and I got to
learn some details of the libvirt API and python bindings in the process.
The key to taking great photos is taking a lot of photos. Most of
them will suck, but that’s how it goes.
My photos break down into the following buckets
9165 photos total
424 rated 3+
95 rated 3+ with the tag Dog
3 rated 4+
I want to see the good photos on a regular basis without maintaining a
separate list or directory of the good stuff. I use xscreensaver’s
photopile program, and it likes to read photos from directories.
PhotoFUSE uses
FUSE and
fusepy along
with PIL to expose a
subset of my photo collection as a virtual directory,
filtered by rating and tags.
I’ve already found and fixed a leaky file handles bug, so
you won’t surprise me if you find other issues.
Shotwell is the first photo
organizer that hasn’t made me angry. I’m not a huge photographer, but
I’m pretty picky about tools, so that’s saying a lot.
Photos can be tagged and rated, and for a long time those tags and
ratings were stored exclusively in the Shotwell database, but the
application now allows users to store metadata in Exif and IPTC tags
within the photo files for use by other applications. I checked the
button, but it looks like shotwell doesn’t automatically go back and
write that data for older files.
Shotwell uses SQLite for its metadata storage, so it’s easy to force
an update of all your files. Quit Shotwell if it is running, and
follow along:
Of course the counts will vary depending on the size of your photo
collection. Next time you start Shotwell you’ll see it updating
metadata: there will be a progress bar displayed below the pane
that shows your folders and tags.
Redshift automatically winds down the
color of my display as day turns to night. I don’t know if it helps
me sleep as the experts say it will, but it cuts down on eye strain
significantly. I only have one gripe: my display gets really red
really early in the evening. That’s not even a fault of the
application. My schedule and the sun share equal blame in the
premature dimming of my screen.
I choose to toggle Redshift off if I’m editing images or styles since
colors matter for those tasks, but I often forget to toggle it on once
I’m done. I wanted a way to make sure that Redshift was enabled an
hour before I go to bed on most nights so that I’d know to wind down.
D-Bus provides a
great conduit for that sort of runtime inter-process communication and
configuration, but Redshift doesn’t yet come with a D-Bus interface.
Three factors join forces that allow me to schedule Redshift display
dimming in a less ideal way:
Redshift listens for USR1 signals and toggles dimming on receipt.
xrandr displays current gamma information (and Redshift dims the display by altering the gamma)
Cron scripts run by my user account have access to my XAuthority credentials.
In an ideal world I’d add D-Bus support to Redshift for a more elegant
solution and a fun bit of C programming. It’s on my “someday maybe”
list for a time when I can afford to fumble with a language I last
used around 2004. In the meantime, this inelegant shell script does
the job and gets me back to work on more pressing projects. Maybe
it’ll work for you, too.
The dnsmasq program
is used on many linux computers and devices to handle DNS and DHCP.
If you’re connected to the Internet through a Buffalo router of any
recent vintage, you’re using dnsmasq right now unless you’ve
thoroughly fiddled with the configuration, in which case you probably
already know everything I’m about to write.
The —stop-dns-rebind option (or “No DNS Rebind” in the Buffalo DD-WRTGUI) throws away any DNS resolution responses from external name
servers that contain IP addresses within the private address spaces.
This prevents a class of attacks where bad dudes use short DNSTTL
settings to make browsers give up internal network secrets. Zone
administrators that publish private IP addresses within the public DNS
space are usually either mistaken, dumb, or nefarious, and their
results should be ignored whenever possible.
I really wrote myself into a corner with that last sentence, because
I have a zone that responds with private IP addresses within the
public DNS space. I am testing some fun and completely above board
things with Amazon’s Route 53
service, and the quickest way to do so was to copy an internal zone
from within the Freund Data Center Complex out to the cloud.
How do we fix it? If you’re using a recent version of dnsmasq,
there’s a —rebind-domain-ok option that places provided domains on a
white list. If your router doesn’t support that option, then
you can always disable the behavior entirely.