Monday, 31 December 2018

Back to Training

After taking several weeks off from training, I now have just 3 weeks to prepare for my upcoming half marathon. Dammit. I didn’t mean to take that long off and now I’m in terrible shape again! It’s just so easy to keep being lazy when the alternative is harder than chilling on the couch.

Anyway, I got back out there today and ran just 2 miles. I kept a pretty good pace (9 min/mile average), but already my knee was bothering me. So I come home and do some Step Overs and 10 Cinder Block Pickups. Somehow, in this brief workout, I managed to totally fatigue something between my hamstring and groin. I don’t know what that muscle is, but it keeps threatening to crap up.

This sucks. I feel really unprepared and week. I guess I’ll just keep training, 6 days per week, and clean up my diet until race day (an hopefully after). I doubt I’ll even beat my previous best of 2 hours 10 minutes. No matter. I’ll do the best I can with what I’ve got and continue to improve. I’m planning to do several halfs and hopefully at least one full this year.

Saturday, 29 December 2018

Mopidy + PulseAudio + ncmpcpp

Oof. This was a real trick and a little bit of guess work, but I finally got the visualization in ncmpcpp to work with mopidy and pulseaudio. First, I found the ArchLinux ncmpcpp config walkthrough. That seemed really straight foward… but it didn’t work for me. After some dicking around, I figured it’s probably because I use mopidy instead of straight mpd. Okay… so I found this post. That seemed like it almost worked, but just failed in a slightly different way (mostly the ‘second command’ just didn’t work). Finally, I found this post on existence trainer and ncmpcpp would act like it was playing and the visualization worked, but I couldn’t hear anything. Shit. So close. Well let’s see. It’s gotta be in this line under :

output = tee name=t t. ! queue ! autoaudiosink t. ! queue ! audioresample ! audioconvert ! audio/x-raw,rate=44100,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/mpd.fifo

Everything looks good except this autoaudiosink business. What is that? I don’t really know, but let’s just try something.

output = tee name=t t. ! queue ! pulsesink t. ! queue ! audioresample ! audioconvert ! audio/x-raw,rate=44100,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/mpd.fifo

Hm. No connection. Well hang on just a sec! I had to add the line ‘output = pulsesink server=’ a while back, let’s see what that does.

output = tee name=t t. ! queue ! pulsesink server= t. ! queue ! audioresample ! audioconvert ! audio/x-raw,rate=44100,channels=2,format=S16LE ! wavenc ! filesink location=/tmp/mpd.fifo

Restart mopidy with ‘sudo systemctl restart mopidy’ and I’ll be damned. It all works. Okay. Now I can get back to my life. Phew.

Changing Default Browser in Debian

Not too long ago I wrote a short article about my findings in switching my default x-scheme-handler to Chrome for opening links from mutt. I used gio, and somehow it turned out to be pretty straight forward. I recently decided to switch back to Firefox for my browser, but now following links and viewing html email in a browser would open Chrome even though I used gio to set firefox-esr as my x-scheme-handler. That doesn’t even really matter anyway because I want to use firefox and not firefox-esr, but gio wouldn’t see firefox.desktop that I created in ~/.local/share/applications. What a headache.

It turns out that gio was not the tool that I needed. Or at least I’m pretty sure it was the wrong tool. Anyway, through a combination of articles, I discovered that not only did I need to create the .desktop file, but I needed to ‘install’ it using ‘sudo update-alternatives –install /usr/bin/x-www-browser x-www-browser /usr/bin/firefox 200’ then setting the default using ‘sudo update-alternatives –config x-www-browser’. So now mutt would try to open the text/html from the list of attachments from hitting ‘v’ in the pager, but I got the error ‘file:///tmp/mutt.html not found’.

A little further digging revealed that I needed a line in my .mailcap for ‘text/html; /usr/bin/firefox %s; description=HTML Text; test=test -n “$DISPLAY”; nametemplate=%s.html’ which I got from /etc/mailcap and changed to be firefox instead of firefox-esr and added ‘set implicit_autoview=yes’ in muttrc.

Sheesh. It’s working now. I don’t know if this was the totally proper way to do this, but it works and didn’t seem to break anything else. Yet. We’ll see if something turns up later.

Tuesday, 26 June 2018

XFCE and Loop Select in Blender

Remember that time you were getting the hang of Blender, then you switched to XFCE and alt-mouse3 stopped working for Loop Select in Blender? Remember how annoying that was? Apparently alt-click is supposed to do stuff in XFCE even though it didn’t seem to really do anything in my case except mess up Blender. Well I finally figured out how to change this behavior in XFCE. In the main menu, Settings > Window Manager Tweaks > Accessibility, change the dropdown for “Key used to grab and move windows” to Super. Close the window and boom, Blender works again.

Wednesday, 16 May 2018

Vegan RXBar Recipe

I’m working on a vegan RX Bar recipe based almost completely on the packaging. I looked up the average protein per egg white (the RX Bar has the equivalent of 3 egg whites) to determine how much pea protein and sprouted brown rice protein to replace it with so that each bar has about 10g of protein from this 1:1 protein mix. The recipe I’m working with makes 4 bars.

1/4 c pea protein
1/4 c sprouted brown rice protein
24 almonds
16 cashews
8 medjool dates

Since I’m trying to make the Coconut/Chocolate flavor, I added:

1 Tbsp cacao
1 Tbsp unsweetened, shredded coconut

Set aside half of the almonds. Add everything else to the food processor fitted with the S-blade and process for about 90 seconds, stopping periodically to check consistency. You’ll see that initially you have a pretty dry, powdery mix. Keep processing. When it’s ready to be formed, it will appear sticky and will have formed tiny little balls. Add the remaining almonds and pulse to coarsely chop the almonds. Scrape into a large bowl and press into a ball. You should have about 10 ounces of dough. The RX Bars from the store are only 1.8 ounces, so this may need some adjustment since I’m shooting for 4 servings and 10 ounces divided into 4 servings make 2.5 ounce bars. Divide the dough evenly into 4 balls and form into bar shapes. I pressed mine into a mason jar ring which made them puck shaped, but that’s just fine.

NOTE: the dates that I used were huge. try using just 6 of the giant dates for 4 servings.

Thursday, 12 April 2018

Art vs. Clients

I’ve been working on a pair of custom tank bags for a motorcycle build for the Revival Handbuilt Motorcycle show in Austin, TX. I actually already completed the bags once and they looked great even though there were a couple small functional issues. But the client hated (she actually said hate) the natural leather that I used for the straps. She told me she hated them. She also told me when I started the project that I would have artistic freedom. If you are an artist, craftsman and/or artisan, be very wary of those 2 words when it comes to custom work. You probably don’t have artistic freedom. I had to take the bags apart, make new straps to match the upholstery (dark brown) by gluing and stitching some of the upholstery leather to strap leather, remake the back of the bags and put them back together. Now they look like they came from Target. It makes me so mad to work on this project now.

Then it occurred to me. The typical client that hires an artist to do something that they can’t do, has no taste. They are only capable of mentally rendering the project in their limited view and understanding of whatever it is that they’ve hired you to do. Often, this is based on some cheap crap they saw somewhere or just their decidedly non-artistic design and they have no idea at all how something like that is constructed — which reminds me of the dreaded opening, “but can’t you just…” So all that we artists can do is grit our teeth and suffer through these tedious tasks to make the client happy so we can get paid.

So much for artistic freedom.

UPDATE: The client really liked the revised bags and they ended up looking much better than I thought they would with the new straps. Unfortunately, the magnets weren’t doing a very good job of holding the bags on the curved surface of the tank.

Thursday, 22 February 2018

The Internet and Communication

I know this is a topic that has been covered a lot by a lot of people, but I think that it bears repeating. When communicating with some one on the Internet, whether through email, social media like Facebook or Reddit, on forums, IRC, or whatever, remember that there is a real, live person on the other end. This is especially important with product or service reviews or in forums where people ask a lot of questions about a particular topic. Imagine that the person that made that product or asked that question is standing in front of you, waiting for your response, and you will have to deal with the reaction of the person in real time and in real life. Even better, imagine that you are the person making the thing or asking the question. How would you want some one to answer?

Remember that we all had to start somewhere. No one is born just knowing everything. We want to encourage people to ask questions and develop new things. That’s how we make ourselves collectively better.

So quit being such a dick and maybe try helping some one out now and then.

Steps for Success in All Things

Step 1: Start.

Step 2: Never stop.

There are some finer details in there, but if you follow these steps, you can succeed in anything.

Friday, 26 January 2018

Really really setting the default browser is XFCE

I had the problem that Evolution kept opening Firefox when I’d click a link even though I have Google Chrome set as my default browser in the XFCE Settings. After a little digging, I found this obscure post. Issueing the first command gvfs-mime --query x-scheme-handler/http told me :

This tool has been deprecated, use ‘gio mime’ instead.
See ‘gio help mime’ for more info.

gio: Unknown option –query


Get or set the handler for a mimetype.

If no handler is given, lists registered and recommended applications
for the mimetype. If a handler is given, it is set as the default
handler for the mimetype.

Aha! so then the command gio mime x-scheme-handler/http told me :

Default application for “x-scheme-handler/http”: firefox.desktop
Registered applications:
Recommended applications:

Well that’s weird. It looks like Google Chrome is first in line after all. So what the eff? No matter, I’ll force it. I don’t usually try to force things, because that’s oftentimes how you break stuff, but this should be fine.

$ gio mime x-scheme-handler/http google-chrome.desktop
Set google-chrome.desktop as the default for x-scheme-handler/http

And don’t forget HTTPS!

$ gio mime x-scheme-handler/https google-chrome.desktop
Set google-chrome.desktop as the default for x-scheme-handler/https

Boom. Don’t even have to logout and back in.

Thursday, 25 January 2018


I finally decided that today was the day to knock out some sprints. I’ve pretty much just been running/jogging longer distances of 3-5 miles, but I know I need to develop those twitch fibers. So I rolled out of bed at about 9 am, laced up my trail shoes and jogged down to the public soccer field, with Hootanny, for warm up. I decided to sprint goal to goal, then walk back. I tried to get Hoot to sprint with me, but by the 3rd rep, she just laid down in the middle and watched me run and walk by.

It was kinda weird though. I realized in my first sprint that I’d almost forgotten how to sprint! I noticed toward the end of that first rep that I was trying to keep my distance form for a sprint. Doesn’t work great. I had to make myself drop my arms to my sides, pump my arms and lean forward way more! I’d gotten so used to my upright, super-efficient form, that I didn’t fall into sprint form automatically. By about the 3rd or 4th one, I feel like I was getting the hang of it again.

Just 6 sprints though and I was done. I didn’t want to try to push to far since I haven’t really sprinted in a long time and I could tell I’d already worked hard enough to make my legs super sore for next few days. I’ll need to put this one in the weekly rotation for sure.