Grant Muller

Instagram Gets Surreal

A year ago on a trip to NYC I had the chance to view a piece of art by Jason Salavon that averaged portraits together into one portrait. The results are uncanny. A portrait is so predictable that the shape of the objects and negative space of the painting are so obviously a portrait that even expressed as the average of several it still reads as a portrait. Its as though you took off your glasses and stood far enough away that the face simply became blurred. Salavon has similar works, such as the average of Every Playboy Centerfold, and 100 Special Moments. Kids with Santa is particularly cool:

Kids With Santa

Salavon’s work inspired me to create something similar.

Instagram receives thousands of photographs a day. They’re liked, and some become very popular. Enough so that they hit the ‘most popular’ page on Instagram. I asked, what does the average ‘most popular’ Instagram photo look like? I started by using my client key to download a group of them and average it up with ImageJ. I quickly realized that the most popular list changes. Frequently.

To truly capture what the average most popular photograph on instagram looks like it must be done realtime, at the request of the user and in the moment. I wanted to try some client-side image-processing with Javascript so I set out to create a beautiful time-waster that would allow a user to get the most recent popular photographs on instagram, choose a blend mode, and see the average photo right now. The result was Surrealgram:

Screen Shot 2013-09-30 at 10.48.40 PM

Surrealgram uses my forks of some existing software, like Pixastic and connect-image-proxy, along with a jquery-mobile and backbone interface, with a super-slim node.js backend to handle proxied image requests (until Instagram supports CORS). Technology selection followed the sacred rule of “this is what I want to play with right now”. Using it is simple:

Go to surrealgram.com

The latest ‘most popular’ photos will load automatically. Check out the result.

To get the latest photographs, click ‘Refresh’

To change the blend options, click the toolbar in the top right-hand corner.

optionsbutton

You can adjust the blend mode, amount, and number of pictures.

options

16 is currently the max, but I’m working to get that up without angering the instagram infrastructure.

Save your photo. This can unfortunately only be done on a desktop browser for now.

It was a few hours of work, but its become and addiction to play with. Check out some of my surrealgrams:

DogBridge

Flight

Sunglasses

I have some additional features planned if I can find the time to implement them:

  1. Share to Facebook, Twitter, Tumblr, blah blah blah.
  2. Allow users to search by hashtag
  3. More pictures!

The code is under active revision, you can find it here

Coffee Roasting: Build or Buy?

For the last five years I’ve been roasting coffee in this:

I got 5 years out of my old machine, the Frankenstein Turbo Crazy, home grown of course

My Frankenstein Turbo Crazy.

But alas, after five years of operating “outside of normal temperature ranges”, this happened:

Before this happened. Half a decade of operating "outside of normal temperatures" melted the convection heater...

It seems that convection ovens weren’t meant to have their temperature limiters removed and run for hours on end. The handle, which controls the reed switch to turn the heating unit off and on, melted right off the base.

I knew this would happen someday, and I had planned to build another machine with a leaf blower and a commercial heating element, with robot arms and a positron brain. Alas, the unhappy melting happened right in the middle of rebuilding a fence, writing a bunch of software and getting through several releases at the office. I was posed with the classic question all technology households are posed with: build or buy?

A guy has got to have his home-roasted morning brew. I made a rash decision. I ordered one of these:

The Muller House gets a new coffee roaster

A GeneCafe from Sweet Maria’s.

After a week of waiting the GeneCafe finally arrived so after fulfilling my daily obligations I came home and took it for a test run on some Rwanda NKanka Kinyaga. In Benjamin Franklin style, here is how five years of DIY roaster technology stacks up to the commercial grade:

GeneCafe Frankenstein
Pros
  • Configurable Temperature
  • Configurable Time
  • Integrated cooling unit
  • Excellent chaff removal
  • Single unit
  • Easy to clean (so far)
  • Very even roast
  • Requires less monitoring
  • No coasting
  • Extremely high temperatures
  • Infinitely configurable
  • Very low cost
Cons
  • Long coast time
  • Small batch size
  • Long roast/cool times
  • Temperature
  • Very high coast
  • No integrated cooling unit; long cooling times
  • Requires constant monitoring
  • Occasionally uneven roasts
  • Poor chaff removal

The verdict. After the initial two test runs I’ll give the win to the GeneCafe. If only for the sweet analoguish knobs. We’ll see how it holds up after half a decade.

What’s the plan for my beleaguered Frankenstein Turbo Crazy? Well, I’ve always wanted an outdoor water heater…

Update: The coasting issue I complained about previously is no longer a problem. Seems I just needed to read the instructions…

Coffee Sack Sound Baffles

Several years ago I began acoustically treating my studio for recording drums and mixing. I did some research and pricing; it didn’t take a spreadsheet to discover that acoustic paneling was both overpriced and hideous. I searched some more and devised a solution that was both economical and classy.

Acoustic paneling is simple stuff. You get some kind of absorbent material, optionally covered with sonically neutral fabric, and hang it on a surface. You can use spacers to increase the gap between the wall and the panel to increase the amount of absorbency, and of course your choice in material will affect the frequency range, amount of reduction, and all that. Let’s skip the science though and get right into the implementation.

You will need:

  • An Absorbent Material
  • 1″ x 3″ boards
  • 1″ x 2″ boards
  • Fabric (see below)
  • Nail or screw gun
  • Stapler
  • Dry wall fasteners (wing nut style)

First, select an absorbent material. You could go simple and use the pink stuff. You know, the insulation they sell at Home Depot with the panther on it. Good ‘ol R-30. This material is fine and all, but from the perspective of space it is far from ideal. It’s bulky, and in a space as confined as mine I wanted something that wasn’t going to shrink my studio by more than a few square feet. I went with Owens-Corning 703 but you’ve got some other options, like Roxul RHT 80, which is much cheaper. 

The material I bought comes in 24″ x 48″ x 2″ by default, but can be cut smaller using a razor blade. Wear gloves and long sleeves if you decide to cut it, unless you like that itchy feeling. I went the lazy route and planned my room sans cutting.

SoundBaffles 1

The next step was to build a frame to contain the panel. Sure, you could just duct tape it to the wall, but a frame gives it a cleaner look and allows you to space the panel away from the wall. The frame also gives you something to attach the fabric to. I used 1″ x 3″ cedar boards because they’re extremely light and inexpensive, and the panels fit perfectly in them. No need to get fancy with dovetail joints and wood glue, just cut some straight boards and join them together with a nail gun, stapler, screws, or whatever you have laying around. You’re dog might casually sniff your frame:

SoundBaffles 7


After your frame is built, you’ll want to attach your fabric. You have a lot of freedom here to dress these panels up, so long as you choose a fabric that will allow most or all sound through. Many tight weave fabrics will reflect frequencies preventing them from even reaching your absorbent material, which kind of defeats the purpose. I went with coffee sacks since I had a ready supply of them, they’re sonically neutral, and I think they look cool. Your dog might question your selection:

SoundBaffles 3

Using a staple gun or a fastener of some kind, stretch the fabric across the front of the frame and staple each side. You’re probably not going to learn to be an upholsterer here, but try to get a drum-tight frame across the front of the panel, leaving the back open. After you’ve stapled the fabric around the frame, stuff the panel into the it. Eventually your dog will get tired of whatever it is you’re doing an leave.

SoundBaffles 11

Your panel should look something like this:

SoundBaffles 15

And it probably looks something like this from the front:

SoundBaffles 17

Technically you could build a stand or mount of some kind and move this around wherever you wanted, but I opted to hang mine from the walls (and ceiling). I used 1″ x 2″ boards to hang all of my panels. A 1″ x 2″ attached flat to the wall provides a 3/4″ standoff between the wall and your panel when you hang it. First, I cut 2 1″ x 2″ boards just long enough to fit inside the back of my frames. Then, I drilled two holes and inserted a bolt appropriately sized for these wing nuts:

SoundBaffles 19

From there it is a simple matter of hanging the standoff wherever you want your panels to hang. Mark your holes on the wall, drill where the marks are, press the bolts (already attached to the 1″ x 2″), then tighten:

SoundBaffles 21

Take your panel and hang it on the 1″ x 2″. You can attach, with screws or nails, the panel to the 1″ x 2″, but I find it unnecessary. Plus if you leave them free hanging you can move them around if you get bored with the way they look.

SoundBaffles 25

That’s pretty much it. I realized that this wasn’t particularly novel when I realized that this guy did almost the same thing independently, but I think the coffee sacks were a nice touch.

Oh…and ATS Acoustics offers their own coffee sack acoustic panels…for a price…

200 Miles, 8 Runners, 31 Hours: A Race Log

Shirt Introduction

I’ve always thought of distance running as an individual sport. You throw on some shoes, pop in some earbuds and put one foot in front of the other for a long time. Sure you may go out in a group from time to time, but if you can have a conversation than you’re not working hard enough. This weekend changed my outlook on distance running, and opened my eyes to how fun running with a team can be.

Many thanks to Jeremy Freeman for the pictures in this post.

The Race

Early in 2010 John Davenport, on old friend from High School, put out the APB on Facebook looking for runners to fill out a relay team for The Southern Odyssey 200 Mile Relay Race in October. This concept was new to me, so I jumped at it thinking it would be a nice challenge. This was also as I was making my transition from high volume running to low volume high intensity cross training, and I figured it would be a good way to validate my new methods.

The plan was simple. Pile 12 runners into 2 vans and take turns running individual legs of the race until you’re done. The legs were preset by the officials and ranged from 2.8 to 9.8 miles in length. It began in Athens, meandered through Dahlonega, Cornelia, Cleveland and much of Northeast Georgia, and finished in Alpharetta. Within a few weeks we had our team and things went quiet while we all prepped in our own way for the road ahead.

September Shock

2010 rolled along a little faster than I expected and suddenly September was upon me. We ramped up communications about the upcoming race, planning vans, splitting equipment responsibilities, and otherwise taking care of the last minute preparations for the race.

Then we had some setbacks.

The race was meant to be run by 12, and suddenly we were down to 8 for various reasons. I don’t recall if we ever had a full list of 12, or if we just expected to get that many, but with only a few weeks left to race day we were a group 2/3 deep, with little hope of picking up a full team. The challenging part was that the race began on a Friday, and most folks would have a hard time taking off from work with that little notice. We had a few irons in the fire going into race week, but our core team of 8 was set:

  • The Coffey Family (Drew, his wife Andi, and his two sisters Amanda and Alice)
  • John Davenport
  • Jeremy Freeman
  • Jonathon McKay
  • Little old me

Everything was ready to g0.

Race Week

prerace_teamIt happened. I got sick. For the first time in a while I picked up some kind of upper respiratory/sinus bug and spent most of the week before race trying desperately to get rid of it. The thought of dropping out for my health crossed my mind, but I wasn’t about to leave the team short another member, and I was really looking forward to the run, so I told myself I’d suffer through it and deal with the consequences later.

    Not sure if it was the head cold talking, but it was about this time that I volunteered for the longest legs of the race.
    Thursday we met to pile into a few vans and convene in Athens. I learned that two of my other team mates were feeling ill as well. I bought us a box of kleenex to cry or blow our noses into, which ever felt better. Our contingency plan for extra runners fell through, so we were truly down to 8 runners. I think we all expected that to be the case so we nodded, used our kleenex, and stuck with plan A. We made the last of our preparations, settled on race legs, and got a good night’s sleep.
And…Go!

Andi It was still chilly as we made our way to the start line at 8:30 on Friday morning. The race started in waves, and we were set to begin with 6 other groups at 9:00. We milled around, warmed our hands, and waited anxiously to get going. Some of the other teams were sporting custom shirts. Twisted Blister had a fine logo, and the Chuck Norris team was sporting some hilarious Norrisisms on their van (Chuck Norris never sleeps, he waits…get it, its an overnight race). We decided as a team that next year we were doing something with puff paint on T-shirts, 80’s style. Maybe I’ll volunteer to run a leg dressed as Tom Cruise from Risky Business.

Andi kicked us off with the first leg of the race, a 4.4 mile sprint through Athens ending at a church parking lot.

She projected it would take 45 minutes. She got there in 41.

This set the pace for the rest of the race, as we continually came in faster than we expected on our individual legs. As we toiled into night time, our mantra would become “Take it slow, steady”. Easier said than done.

Jeremy took leg 2, another roughly 4 miler while we drove ahead. I was next.

Leg 3 – 4.0 Miles

I crammed my feet into my new Vibram Bikila’s, grabbed a water bottle and jogged around a bit to warm up for my run. I would come to find the waiting to be worse than the running as the race continued, but I bided my time, stretched and stretched some more. Jeremy popped up around the bend and made his was up the final hill toward another church parking lot. He crossed the line posting another better than expected time and I was off.

Failing to remember that this was only the first and shortest of the 4 legs I had to run, I paced myself as if I were running a 10K. The temperature was perfect, the scenery rural, and I was feeling good so I legged it out. Within a minute or so my sinuses felt clear, my lungs opened up, and though I could still tell I was sick, I was feeling much better moving than sitting still. I think remember hearing somewhere that Shaolin monks train harder if they feel themselves getting sick, to remind their bodies that there is much work to do. True or not, I kept that thought in my mind.

I don’t recall my time, but I think it was somewhere around 33 minutes, a perfectly respectable time for the first of four legs. I passed the bracelet (its better than a baton, trust me), to Drew and he took off on the longest leg so far, 6.5 miles. I grabbed a banana, a bunch of sunflower seed and dried fruit, and settled in for…

A Long RestAmanda

Drew legged out the 6.5 miles quickly, something I’m sure the second van of team members were both thankful and rueful for. Waiting is the worst, until you have to run.

We passed off to the second van as the race legs began to get longer. Jonathon took leg 5 for 5.0 miles, John was on leg 6 for 5.9, Amanda took the first whopper, leg 7 for 9.4 miles, and Alice rounded out leg 8 at 7.5 miles. Everyone beat their own expectations, far exceeding the pace we expected for our team of 9:45. We were building a good buffer for when the going got tough.

Jeremy, a photographer for CNN, pulled double-duty and rode with the second van to take as many photos as he could. My hat is off to him; foregoing his rest time, and being one of the ill team members, he certainly earned some kind of MVP award.

Andi, Drew and I went on ahead to Ma Ma Dots Country Store, where I bought some muscadines and laid out a blanket to sleep on.

We discovered the next difficulty in an overnight relay: you can’t always sleep when you want. In what would be our longest rest of the day we mostly sat around, milled about the country store, read a little, but barely slept. It wasn’t long until Alice was racing up the hill to hand off to Andi for leg 9, a 4.3 miler, and we were off again.

Alice

At the next church parking lot there was a hilarious dachshund. When it spotted someone that hadn’t petted it yet it would run up and roll over waiting for a belly rub. I swear it must have made sure it met every human who entered that parking lot. Its the little things that make a trip like this fun.

Andi passed off to Jeremy for his grueling and almost entirely uphill 5.9 mile leg. After petting the dog and letting Andi get cleaned up, it was onwards to my next run, the long anticipated:

Leg 11 – 9.1 Miles

This one started in downtown Cornelia GA, quickly exiting into the rural countryside. The race official in the city was also a local resident, and she let us know that most of this land used to be used for growing apples. Neat.Grant

About 4 miles in I was in the zone. Runner’s high. My legs felt great, it was hot but bearable, and I wasn’t worried about finishing. I even passed another runner. As I took the turn back on the the major highway leading to the end of the leg, things took a turn for the worst.

Feeding off the momentum from the rest of the team, and probably a little overconfident from my first run, I kicked this one off at pace I simply couldn’t sustain. It dawned on me that I hadn’t run anything longer than a 10K in several months. Later a team mate would ask what my longest run recently had been. 9 miles I would reply…earlier today…

Cresting what I thought was the last hill, the runner I passed earlier reminded me that the last few miles are all incline. Really? I don’t remember seeing that on the race map…Sure enough, just as I peeked over the top of this mini-hill I saw in front of me a joint-jarring downhill followed by a hill that looked more like a cliff.

Aw, man.

I started up and immediately had to ratchet my pace down. I’m not sure what the grade was, but it was enough to force me from a stride to a scurry. I was taking steps about a hand in length; it felt more like running upstairs. Except, you know, for a mile. I began to cramp about half way up and my legs did not recover for the rest of the run.

After the hill you turned off onto a gravel road. Nemesis number two. Wearing Five Fingers are great until you’re running on 2 inch jagged rocks, then they’re a liability. Somewhere in here I stepped down on a piece of gravel that would sprain or break something in my foot, I haven’t figured out which.

I hobbled into the rest stop, not a church from what I remember, there were goats penned up for some reason. Drew was ready to go, sporting a running vest and a headlamp; I had run the sun down. I ate some dates, a banana, and whatever else I could get my hands. I tried to walk around but I was cramping in places that I’d never cramped before so I just sat down until the pain subsided. Drew pressed on with his 8.5 mile jaunt, we drove ahead to pass him some water. There were some folks out on their porch enjoying the fine evening and they happily let me stretch out on their lawn. I may have fallen asleep somewhere in here, I’m not sure.

A Short Rest

Drew We met Drew at the next stop where there was space setup for people to sleep if they wanted. I milled around with the relay team as long as I could before grabbing my blanket and pillow and hitting the hay. At this point I was pretty unsure of myself. I felt sicker, I was cramping, and my head was killing me. I could tell this was worrying the other folks on the team as well, so I figured I better try and get some R&R; I had a few tough runs ahead before all was through.

I didn’t get much sleep, maybe 10 minutes before it was time to move on. We stopped at a grocery store on the way to the next pit stop and I rested some more in the van while my team mates fueled up. I took inventory of my food intake so far:

  • Pumpkin seeds
  • Raisins
  • Bananas
  • Apples
  • Dates
  • Almonds
  • Pork Rinds
  • Beef Jerky

I was craving a meal on a plate. Bacon and eggs. A big pork chop. My wife Cary and brother James were volunteering at leg 18 in the late hours of the night, so the best I could manage was to call in another banana and a long sleeve jersey to combat the cold. Cary suggested dark chocolate Hershey Kisses, which turned out to be a killer idea. I slept for a few more minutes when we arrived at our next check point. It was beginning to get cold out, so I bundled up and tried to sleep, but to no avail. I finally got out of the car and ambled around. That’s when I looked up.

    JonI don’t often get out of metropolitan areas, and when I do I rarely think to look at the night sky. I’m not sure why. When I’m at home I’m constantly looking up at night trying to find constellations and stars through the din of light cast by nearby cities. Out here in the middle of nowhere, where there were no streetlights or cities to drown them out, you can see hundreds of stars. The milky way is visible. Picking out constellations is child’s play. I spent about 20 minutes with my iPhone Sky Chart just finding stars, locating constellations I’d never seen before, and staring at the milky way. I was starting to feel better.

Our teammates arrived and it was off to the races again, with some extra groaning as we stretched our stiff limbs and tried to make the best of another run on little to no sleep.

When the rest of the team had finished their treacherous run through the back woods of Lumpkin county, Alice handed off to Andi and we were on to our next batch. We met my Cary and James at the next pit stop, I devoured a few dark chocolate Kisses, and we sent Jeremy on his way for leg 18, a 5K. We moved ahead quickly assuming a half hour or so for him to finish. He waltzed in looking like a champ at 26 minutes. I donned the flashing vest and headlamp and I moved on out for…

Leg 19 – 4.5 Miles

Jonathan2 I’m not sure what it was that rejuvenated me. The wide open sky? A hug from my wife? The Hershey Kisses? Whatever it was I set out on this leg refreshed. The course started out of the North Georgia College and State University Campus, down a major road, and then off onto a side road that has never seen a yellow line. I put some space between me a few runners, then turned my headlamp off for a while to get distracted by the night sky. There wasn’t a cloud in sight and anytime the trees cleared I got a fantastic view of the heavens, perhaps just as my ancestors would have seen them. I have to admit, running close to barefoot in the pitch black night, hearing nothing but crickets and howling canines made me feel a bit primal. I should’ve howled.

Of course, turning my headlamp on again and peering into the thickets to see dozens of eyes reflecting back at me made me feel more like a primal wuss. So much for that howl.

I crested a short hill and made my way to yet another church parking lot. Convinced that dark chocolate Hershey Kisses were magic cramp erasers, I popped a few more, stretched out, and we moved on to meet Drew at the end of his 4.2 mile night run. I hope he enjoyed his as much as I enjoyed mine.

A Short Nap

Jeremy After Drew handed off to our compatriots in Van 2, we rode on ahead and made camp in the car at Amicolola Falls, the site of our next major handoff. We intentionally rushed this ride to the next spot since we were all tired and finally felt that we could get some sleep. I’m not sure that all of us made it there without passing out.

After an hour or so of shuteye Van 2 arrived, but not quite for the handoff. Alice was a lucky girl (at least in my mind) and got to run to the top of Amicolola Falls and back for her entire 3 mile leg. We had to go in specific order from start to finish for our time to count, otherwise I would have volunteered for this one. I can’t imagine many people have had the privilege of running this at night, surrounded by the white noise of the falls. I would’ve loved it.

Bleary eyed we shook the cramps out with the sleep and waited at the foot of the falls for the bracelet. After the short nap nobody was interested in running, but it had to be done, and we were closing in on the finish.

Andi set out on leg 27 for 3 miles, staying tough on her final night run. Jeremy took over on leg 26 up and down a long gravel path to one of the now ubiquitous church parking lots. We drove ahead and I did all I could to prep for the longest leg of the race…

Leg 27 – 9.8 Miles

Really? Nearly 10 miles at the end? I would have thought a more appropriate place to put this one was in the beginning somewhere. Alas, suffering is what I volunteered for, so suffer I would.

Resolved to finish with dignity I took the bracelet and moved out. The gravel path picked back up again causing the pain in my foot to really ramp up. The path was surrounded by trees providing no inspirational view of the sky, and a night fog had moved in obstructing much of the view in my lamp. My head was just as foggy so I put one foot in front of the other for a while until I reached the road.

I was treated to a downhill. This of course is not treat on a long run. Downhills pound your joints to powder, make your liver feel like its coming unglued, and make your quads feel like every step is dropping off a ledge. And as any runner or cyclist knows, what goes down, must come up. Not wishing to disobey any of the laws of running, the road did indeed come up, and I was forced to scurry again up and around a bend to the top. No cramping (thank you Dark Chocolate), but fatigue had set in and I was moving slow.

Then I came to my last hurrah. 3 Miles of sawtooth road to the finish. I was dead tired and my joints and feet were killing me. I was moving slower and slower by the minute, and the last hill became a run/walk mix. Coming around the last bend I could see Drew waiting to take the bracelet so I managed to hobble out the last several hundred yards with no cramping. Drew took off and we jumped in the van to meet him and the rest of the team at the next stop; I may be done, but there were still many miles left in this race.

To the end

PostRaceTeam On the way to the next rest we stopped at a convenience store so we could pass some water off to Drew. He didn’t take much with him and it was a 5.6 mile leg so met him halfway for a refill. I took the time to stretch really well, change into some jeans and a t-shirt, and most importantly, suck down some food. I was feeling pretty good, being done with my contribution to the race, and collapsed in the back seat while Andi drove us to the next van meet up. I zoned out in the back seat and when I snapped to I was surprised to find myself back in Alpharetta again. We pulled into the stop and everyone tried to crash for a little while.

This is unfortunately where my tale ends. I had a previous obligation in the form of my wife’s company party to attend, and I didn’t plan very well in order to make sure I could attend it and the end of the race. Around 1:00 pm on Saturday I called my wife to come pick me up so I could shower, shave, and head off to an afternoon party with her co-workers. It seems anti-climactic, but it was a fun party and I contributed to it so I wanted to make sure I saw that through as well.

My team went on without me, racing through the last 4 legs to the finish line in 31 hours and 2 minutes. That’s a pace 9:21, 24 seconds faster than our projected per mile pace of 9:45.

Conclusions

I learned a lot on this adventure. I learned that I do like playing with a team, and that when 8 people get together around a common goal a lot can be accomplished. Could I have finished 200 miles alone? Maybe, if I had 3 days and did a lot of walking, but I’d be broken at the end and I wouldn’t have gained as much as I did running with my relay team. I had a great time and I made some new friends. Today, a week later and hopefully well rested, we’re getting together as a team to celebrate, and already making plans for next year’s race. First goal: find four more runners!

I validated a big portion of my training methodology. I don’t run long distance weekly, or even monthly. I just don’t have the time for it. My adherence to low-volume high-intensity training served me well in this capacity. I will continue to sprint faster in order to endure longer, because that’s what works for me.

I ran the entire run in Vibram Bikila’s, and while my feet were sore at the end, I walked away feeling like I could run a marathon in this puppies without a second thought. I have some form and gait mistakes to correct, but overall feel pretty good a week after the race. A little sore in the joints and only 1 very small blister? I’ll take that over runner’s knee and shoe blisters any day.

I like what I eat. Nuts, seeds, bananas, pork rinds, jerky, dark chocolate. I popped the occasional gooey electrolyte snack from time to time, but stuck to real food as much as possible and avoided wheat entirely. My stomach felt satisfied and other than a little cramping during 1 leg, my muscles felt well-fed. Changes for next time? Bring some coconut oil (which I’ve been eating by the spoonful lately), and find a way to replace electrolytes on the sunnier runs. Sweet potatoes maybe? Gatorade makes my stomach hurt but perhaps I can imbibe it before or afterwards. We’ll see.

That’s all folks, I’ll see you out there.

Casio PG-380 Midi Guitar

1218315849_5b5784b61f_o Several months ago Jason asked me if I could fix a MIDI Guitar. I didn’t have the slightest idea how to fix one, and had only speculative knowledge about how they work, so naturally I said “yeah, sure, piece of cake”. If I’d have known at the time the kind of gear lust this project would create I might have turned him down at the outset.

The Casio PG-380 is a guitar that translates the notes you pick on the strings into MIDI Notes. Think of it like a Keytar, only its ACTUALLY a guitar. You may think that the name brand somehow reduces the quality of this particular instrument, but you’d be mistaken; this baby is top of the line. It can translate amplitude, hammer-ons, and string bends with very little latency. I’d soon find out how hard to find, and how expensive, buying one of these would be.

The problem sounded simple: only the bottom two strings of the guitar were producing notes. At first I figured this must be a calibration issue or something, so I tweaked some of the pots on the board, messed with action height, etc in an effort to get the MIDI pick up to hear and translate the notes. This effort proved fruitless so I turned to the web.

How do you translate audio into midi? I had a vague idea how you could do this with envelope followers and some basic filter networks, but I wanted to understand how this thing actually worked before I could say with any certainty what was wrong with it. I looked around for a long time on the web and turned up nothing related to the technical aspects of converting the output of a guitar pickup to MIDI. In the end I relied on the premise that there must be a filter network to divide the audio by string, and a logic device to convert that analog value to a digital stream of bytes. Since 2 of the 6 strings were working, I could assume that the logic device was probably ok. I turned my attention to what I assumed was the filter network.

I cracked open the case and had a look around. I followed the traces from the pickup back to the 6 calibration pots to the series of capacitors that make up the filter network. I didn’t see anything visibly wrong so I returned to the internet to see if there were any already reported issues for the PG-380. Sure enough I came across this post, which identified a common problem as deteriorating electrolytic capacitors in the filter network. It turns out that electrolytic capacitors go ‘stale’ if left unpowered for a long stretch of time. So, just replace the caps, right? Almost.

 

MidiGuitar-3 I’m usually pretty reckless (or overconfident), especially with my own gear, but when it’s someone else’s very expensive stuff on the line I tend to be a little more cautious. I prefer to stick with old PCBS, with large thru hole components. Think of your grandpa’s large print books. This was a modern board with tiny surface mount components, something I’ve never dealt with before. I searched around for some techniques I could use to get these little caps off the board and settled on the “hot tweezer” method. This is essentially taking a blow torch to a pair of tweezers until they’re hot enough to melt solder, then gripping the cap and pulling it off the board. This worked for the most part, though there were some persistent ones that I ended up just jamming a soldering iron under an pulling off. That “technique” ended up being a little messy; there is a plastic separator under the caps that melted all over the place. Those tweezers came in handy for scraping that crap off.

 

MidiGuitar-4 As for the replacement caps, I went with the smallest long lead electrolytic capacitors I could find. I had some of these lying around already and ordered the balance from Mouser. Along with some other stuff for future projects (and posts). Replacement was easy. Cut the leads short, flux the pads, tin the soldering iron, and tack one lead in place. After tacking one lead solder the other post, then fully solder the tacked post. Just like thru hole only you’re tacking the caps on top of the board. It looks a little goofy, but not as goofy as playing a keytar…

Capacitors in place I plugged the guitar in and went to work. Whoa. I hadn’t imagined using a guitar to trigger a synthesizer would be so fun.

Here is a drone sound, with a completely unnecessary string bend at the end:

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

Here are some chords, which I thought the pg-380 did a pretty decent job of sensing:

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

And how about a silly FM bass chord:

Audio clip: Adobe Flash Player (version 9 or above) is required to play this audio clip. Download the latest version here. You also need to have JavaScript enabled in your browser.

I’m addicted and I have to give this thing back at some point. Looking around on the internet, these puppies go for upwards of $1500. So, if you have a less than perfect PG-380 for sale, perhaps one that needs some new capacitors, I’ll take it off your hands.

The Evernote Workout Log

logo A few weeks back I wrote about a little fitness experiment I had started to try and reduce the amount of time I spent training while maximizing results. During the experiment I needed a place to document my workouts so I could review my progress and see if I was meeting my goals, as well as plan future workouts. I had some basic requirements in mind when selecting a logging system:

  • I need to enter workouts as I complete them – I have a terrible memory. By the time I’ve finished doing a round of squats or a half-marathon, I’ve forgotten my time. Its not the kind of thing that I keep in my head. I need to be able to enter workouts immediately. As in, right after I finish the lift, run, swim, whatever.
  • I need to view and measure past performance – Training is one of the only things I systemize. I think I might train so that I have something to systemize. I want to be able to quickly look up what my 5k times are trending. I need to see what my last deadlift max was so I can plan the next one.
  • I need it to be something I actually use – Sounds simple, but if I have to go out of my way to use the tool, I won’t use it. Bonus if the tool is something I already use for other stuff.
    With that in mind I started my search. Here are some of the tools I played with:

Paper and Pen – I think this is how everyone starts. Just bring a little notepad and write it down as you go. This was how I recorded and measured for years, but you try scanning cahier after cahier looking for your most recent 5k time. Recording your workouts is fast…reviewing them isn’t.

Daily Burn – I tried this site out because they had a decent iPhone interface and I could use it online. The tracker is a little clunky, and having to enter the data into the little boxes gets old fast. It seems like it’s geared for people interested in diet and weight loss, so if that’s you’re thing, maybe its for you.

SpringPad – Ugh, don’t get me started.

Beyond The White Board – If only I had my own personal white board at the gym…I haven’t actually tried this one out, but it looked promising. If you’re strictly a Crossfitter, you should check it out. It does a lot of the tracking for you, and if you’re into the nutrition thing, it can help you track that too.

Training Peaks – Great site if you’re only interested in endurance sports, but since that makes up only half of my programming, it wasn’t a one-stop shop for me.

After exhausting the methods above, I chose to go the freeform route and use Evernote as my workout log. I already use Evernote for everything else, so there was no reason not to leverage it for my workout log as well. I created a basic system in Evernote that allowed me to quickly add my workouts in anywhere I happened to be, get access to old performance characteristics, and to track my areas of concentration to make sure I wasn’t overdoing any particular sport. Here’s how it works:

Create a Notebook for your workouts

This is easy, just create a notebook in Evernote to store your  workouts.WorkoutLog

Enter your workouts right after (or even before) you conduct them.

Make sure you write a review (more on this in another article). This is all freeform so enter any information you need to know. (Note: in the picture I made a mistake…its supposed to be a frightening 50 Power Clean Burpees).EnterWorkout

Tag your workouts.

Tags can be anything from running, cycling, or specific stuff that you want quick access to like “5K”, or “The Bear”. This is especially helpful if you have workouts with bizarre names. You can also have sub-tags. For instance I have a tag called run with the sub-tags 5k, 10k, 13.1, etc. This helps your organize when the number of tags you have starts to get out of hand.TagWorkouts

Create a workout reference.

If you have a workout that is always the same set of complicated movements, its a good idea to create a reference to that workout by creating a new note, putting the contents of the workout in it, then tagging that note with the workout name. Then you can search for the workout by tag, see the workout reference and each time you’ve repeated it. You probably want to keep these references in a different notebook than your workout log to avoid clutter.WorkoutReference

Create Saved Searches to access information quickly.

Examples “All running workouts from the last 7 days” or ”All running workouts from last week”.SavedSearches

If you look at my public workout log most of it should make sense, though I have developed my own personal shorthand (10x10xOHS@145 means 10 sets, 10 reps Overhead Squat with 145lbs). I’ll post a legend some day.

This should be plenty to get you going. With Evernote you can also make your notebook public if you’re sharing information with others. An additional feature of Evernote is it’s open API. This means you can access your notes from script (php, c#, etc) and display it somewhere, organize and manipulate it in various ways, etc. I’m working on extending my personal/shared training log as we speak…but that’s for another article.