Skip to content

pebkac blog is moving

I’m told that cool URIs don’t change, which I guess means that the original URI of this blog, pebkac . homelinux . net, is not cool. Having used it for over a decade out of convenience and laziness, I now find that the current owners of the service want considerably more money than I’m willing to spend.

Fortunately the stack powering this blog has made it easy for me to make this thing available at the new URI,, long before I have to retire the old. Please try accessing things there and letting me know what breaks.

learning traditional lead climbing at Moore’s Wall

Wailing Wall at Moore's Wall

This past Saturday (the 1st), I avoided all the bad Internet jokes/pranks by going climbing with Dylan B. at Moore’s Wall. Dylan is an experienced trad leader who has been kind enough to spend time doing easier routes with me so that I can learn.

We started the day with Dylan leading “Raise Hell (5.8)” despite the wetness we could see on parts of the route. This route starts over a boulder with a big (approximately 15 foot) drop right away. Some people place a cam at the foot rail right after stepping off the boulder and then backtrack to clean it after placing something in the crack that is two moves beyond it. Dylan chose to save his energy and did not do this. When I followed, I was surprised how unsettling those opening moves were, but honestly I was relieved to be moving given the cold from the shade and the breeze. I’ll claim that I followed it cleanly, with the notable exception of spending a few minutes sitting in my harness to try to clean a (shiny, new-looking) fixed nut at the first crux.

We next tackled “Wailing Wall (5.6)” with me leading. I lost my head about 25 feet beyond what the guidebook calls a belay ledge, though most parties ascend in one pitch. I had trended further right than Dylan and others who had given me encouragement at the start had suggested, and I had placed more gear than I had expected from our light rack. I got to a nook/ledge where I could sit and think, but where none of the rock looked solid enough and/or the correct width/angle to place any of the gear I wanted to leave (given the distance to the top-out and the fairly consistent width of the rails). I was a good 10 feet above my last piece of protection with my heart racing, so I alternated between breathing exercises and searching again for a reasonable placement in my nook. When I broke a flake while doing the latter, my mind went in unreasonable directions that took long enough to reel back from that Dylan yelled to ask what was up. I yelled that I was setting an anchor and would pull him up because I couldn’t proceed. I finally managed to place two solid pieces and one iffy one, and then belayed Dylan up to the ledge, whereupon he exclaimed his surprise that I was well above the ledge, and wondered aloud how we’d get out of the pickle I’d created. Some shenanigans of passing a bight of rope back and forth with gear ensued so that he could build an anchor without me sacrificing mine, but also so that he could pass up gear to me in order for me to feel confident finishing the route. We eventually managed exactly that, and I set off again, this time with a belayer who could see me and yell encouragement, which apparently was all I needed to finish cleanly. I learned that my brain requires I either be absurdly confident of the gear beta on the route, or that I over-rack for the route. Perhaps as I develop my skills in placing gear that will be less of an issue, but I’d like to come back with doubles of all the cams in the .75 to 2 range (BD) rather than doubles on the small end and singles .75 and up. Next time I’ll be both safe and quick, and there will be no shenanigans.

Having taken quite a long time to get through what should have been one pitch, we ate lunch and hiked to find the other pair we’d driven up with. We met up with them at “My Wife’s Pajamas (5.6),” where we lazily watched another party (both novices) and avoided racking up again. As they rappelled, I finally decided I was willing and able to lead it, so I racked up and discovered an alternate start that, while highball, left me a much cleaner rope line than the last time I did the route. I got the redpoint, but the last two cams I placed walked badly. I had skipped extending them because I was feeling pumped and was confident I could finish if I did the last section quickly. Next time I need to find a better stance to shake out after the large flake (nearest thing to a crux on this route) so that I can place solid pieces all the way through. The upside of waiting for the novices was that Dylan got a free nut. They had spent some considerable time trying to clean it and given up, saying explicitly that we could keep it if we could clean it. Dylan reported that cleaning it was not at all difficult. Note to self: keep climbing with Dylan!

Unlike the last visit, this time we continued through the woods above “My Wife’s Pajamas” to the base of the Meat Puppet crag. Neither of us had ever climbed there. After some traipsing back and forth on the trail with the guidebook, Dylan excitedly racked up for “Beelzebubba (5.6)” and I gratefully belayed from the shade. The climb follows a long arête, with the climber’s left being increasingly more slab and the climber’s right being increasingly vertical as the climb progresses. Given the position of the start and our light rack, this meant Dylan ran out something like the last 45 feet on the more confidence-inspiring left side, but once he’d built an anchor, the rope came down a nice clean, straight line for that last 45 feet… on the right. I was somewhat terrified for that final stretch, though I had no real reason to be. There were jugs absolutely everywhere, but they were also covered with lichen that made it obvious Dylan had not come this way, and the last 20 feet or so seemed dead vertical, though that might have been fatigue. Regardless, the views were spectacular, and I want to come back for another go at the route.

A climber sets a directional while descending
We spent a good long while adventuring through woods and gullies trying to get back to our packs from Beelzebubba. After several scrapes with thorns (me) and a bruised knee (him), we managed that and watched the other pair finishing a route back in The Amphitheater. While resting and snacking, I snapped the photo at the top of this post, marveling at the magic the golden hour works on the wall. It was a good day.

Some climbing pictures

I’ve been climbing for awhile, and at some point I decided that I wanted to figure out climbing photography. Here is some of my noodling so far.


A ride on the Blue Ridge Parkway

I would like to thank the National Park Service, Camp Celo, and several friends who shall remain nameless here for a much needed reset in the form of a bike trip on the Blue Ridge Parkway.

Friends at the camp were kind enough to let us park the car I’d borrowed for the trip off in a shady corner:

Surly and Bianchi touring bikes on a trunk rack of a borrowed car which is parked in the shade of a tree in a corner of Camp Celo

My Long Haul Trucker on a borrowed car

Happily the weather coöperated and we had an amazing time climbing up the mountains in relatively cool conditions and less taxing whizzing down after enjoying the views:

A panorama taken from an overlook on the Blue Ridge Parkway somewhere within 50 miles of Asheville

If you can make the time to bike on the Parkway, I highly recommend it.

An Anti-Harassment Policy for TriLUG

Attention conservation and troubling content notice: this may take you more than a half hour to read and process if you read the background material I link to, which I will strongly urge you to do if you intend to engage with me about this. Additionally, some of the content I link to and discuss involves threats of assault and other troubling material.

The short version

This blog post is intended as an introduction to a large and complex topic, so I hope you’ll bear with me. Having said that, what I’m proposing can be fit into an email footer:

TriLUG is dedicated to a harassment-free experience for everyone. Our anti-harassment policy can be found at:

That’s it. I’m proposing we adopt the policy and any additional internal documentation and procedures necessary to successfully apply it. Keep reading if you’re curious or not fully on board. Skip to the Summary if you think this is a good idea.

Some Background

I’d like to say that I’m on the leading edge of things. I think many of us in tech like to think we’re part of the vanguard. On this particular topic I’m a bit late, but better late than never. I’m going to point to those that have come before and ask you to read what they’ve written before you continue. Please start with this blog post here by Jesse Noller about the Code of Conduct adopted by the Python Software Foundation (PSF). Put aside what you think you know about the PyCon Code of Conduct if you haven’t read that blog post. Go read it. Continuing Continue reading ›

python and virtualenv problems after Mountain Lion upgrade

Mountain Lion (Mac OS X 10.8) moved my cheese in the form of the following error:

Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named virtualenvwrapper.hook_loader There was a problem running the initialization hooks. If Python could not import the module virtualenvwrapper.hook_loader, check that virtualenv has been installed for VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python and that PATH is set properly.

Which was a bit confusing for me. Recalling that /usr/local is basically all homebrew, and that homebrew relies on system libs, I confirmed:

$ which python | xargs ls -l
lrwxr-xr-x 1 root wheel 60 Feb 6 21:44 /usr/local/bin/python -> /Library/Frameworks/Python.framework/Versions/2.7/bin/python

So yes: system python. There was probably some combination of stuff from /usr getting removed and my PATH changes that conspired to break things. So let’s put them back, or at least get things put in place that will make everything usable again:

$ sudo /usr/local/bin/easy_install-2.7 distribute
Traceback (most recent call last):
File "/usr/local/bin/easy_install-2.7", line 5, in <module>
from pkg_resources import load_entry_point
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/", line 2603, in <module>
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/", line 666, in require
needed = self.resolve(parse_requirements(requirements))
File "/System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/", line 565, in resolve
raise DistributionNotFound(req) # XXX put more info here
pkg_resources.DistributionNotFound: distribute==0.6.24

Errr. Well perhaps we’re still getting confusion about what’s getting called from where, so let’s be very explicit:

$ sudo /usr/local/bin/python2.7 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/ distribute
Searching for distribute
Best match: distribute 0.6.28
Installed /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg
Processing dependencies for distribute
Finished processing dependencies for distribute

Cool! Progress!

$ sudo /usr/local/bin/python2.7 /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/ pip
Searching for pip
Best match: pip 1.1
Installed /Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pip-1.1-py2.7.egg
Processing dependencies for pip
Finished processing dependencies for pip

Awesome: we can haz pip.

$ sudo /usr/local/bin/python2.7 /Library/Frameworks/Python.framework/Versions/2.7/bin/pip-2.7 install virtualenvwrapper
Downloading/unpacking virtualenvwrapper
Downloading virtualenvwrapper-3.5.tar.gz (465Kb): 465Kb downloaded
Running egg_info for package virtualenvwrapper
Successfully installed virtualenvwrapper virtualenv virtualenv-clone
Cleaning up...

So are we all set?

$ . .profile && echo "huzzah"

Looks like yes. 🙂

bad behavior backup oops

It looks like I’m not the only one to have a blog backup oops and lose data in the process. It’s nice to see a nod to implementing a robust backup strategy in the post. Note that Michael uses rdiff-backup, while I use rsnapshot. May you, dear reader, learn from our mistakes rather than from your own. Implement and test a decent backups strategy for your blog.

Sambar recipe

bowl of Sambar over rice with yoghurt on top

Makes roughly eight (8) servings. Serve with rice.


  • One (1) cup Toor Dal
  • Four (4) cups Water
  • Four (4) cups vegetables
  • One (1) onion
  • Eight (8) cloves garlic, peeled
  • Two (2) teaspoons brown mustard seeds
  • One (1) teaspoon asafoetida
  • One (1) teaspoon fenugreek
  • One (1) teaspoon cumin seeds
  • One Eighth (1/8) to One Half (1/2) teaspoon Red chili pepper by preference
  • Two (2) teaspoons tamarind paste
  • One (1) Twenty-eight Ounce (28oz) can of diced tomatoes
  • Two (2) to Three (3) serrano chillies (by preference), topped and cut lengthwise
  • Six (6) teaspoons sambar powder.
  • Roughly four (4) tablespoons olive oil
  • One (1) teaspoon salt, more to taste
  • Three (3) small bowls or mugs for preparation.
  • One (1) large pot.
  • One (1) small pot.

Assuming you do not have a pressure cooker, put the one (1) cup of
Toor Dal and four (4) cups of water in a small pot. Bring to a boil
and then simmer, covered (The idea is to cook until the Toor Dal
disintegrates, which will likely take about 90 minutes. If you have a
pressure cooker, this takes about 15 minutes). It’s helpful to stir

Boil about one (1) cup of water. When the water comes to a boil, pour
it into a small bowl with two (2) teaspoons of tamarind paste and stir
to dissolve the tamarind. Set aside.

Before you start cooking anything else, make sure the rest of the
ingredients have been prepared.

Chop up four (4) cups of vegetables into bite-sized chunks.
Any vegetables will do. Good examples include sweet (or other)
potatoes, squash, kale–experiment to find what you like, or maybe go
with what is cheap and/or in season.

Dice one (1) onion.

In a small dish, combine the eight (8) cloves of garlic with two (2)
teaspoons of mustard seeds, one (1) teaspoon of asafoetida, one (1)
teaspoon of fenugreek, one (1) teaspoon of cumin seeds, and the red
chili. Set aside.

In another small dish, combine one (1) teaspoon salt, one (1) teaspoon
turmeric, and six (6) teaspoons sambar powder. Set aside.

The final cooking
Open the can of tomatoes and set aside. In a large pot, heat
enough oil (about four tablespoons depending on the pot) to cover two
thirds (2/3) of the bottom (it loosens up and covers the bottom as it
heats). Add the dish of spices with the garlic to the large pot. Stir
well into the oil over medium-high heat. When the mustard seeds begin
to pop—or after about one (1) minute—add the onions and begin to
sauté. When the onions begin to turn translucent—or after about five
minutes—add your four (4) cups vegetables and your serrano peppers.
Stir so that they are well-covered by oil and spices. You may need to
add oil at this point since some vegetables soak up the oil. If using
a vegetable like sweet potatoes that requires more cook time, cook in
this manner for about 10 minutes. Otherwise, eg. with kale or summer
squash, cook for less time.

During this vegetable cook time is a great time to start your rice.
Add the tamarind, tomatoes, and second dish of spices (the one with
the sambar powder) to the large pot. Stir well and simmer until the
vegetables are cooked.

Once the Toor Dal is mushy and cooked, add it to the large pot. Add salt to taste.
Serve over rice, and topped with yoghurt (if you want). Note that
yoghurt can be used to cut the spiciness if needed.

UPDATE: added photo of a bowl of sambar.

Tagged ,

pottery and glass

I have some new pictures to share. I went to the Spring Pottery and Glass Festival at Cedar Creek Galleries this past weekend. I spent most of my time there watching glassblowing demonstrations in the 4 winds studios space. Here are a couple of my favorites:

last heating

A bowl by Pringle Teetor just before she spun it out.

Tim Turner

Tim Turner on perhaps his third pull for this piece.


Problem Exists Between Leopard and Chair

keyboard leopard comic from xkcd

Had to share this one.

The above image is from XKCD and is republished here under the terms of the Creative Commons Attribution-NonCommercial 2.5 License. See the XKCD license page for details.