26 August, 2012

first trail run at altitude

extremely short 2.8mi run, today. i didn't feel like bringing water, so i just ran out 15 or so mins and turned around. the whole run was above 9,900ft, so, yeah, my heartrate was zooming even though i was running slowly. this was my first ever trail run at altitude. i might be hooked.

next time, the hydration pack goes with me.

23 August, 2012

wish u were here?

joint outing with refactr and reachlocal mn devs. officeonastick!

20 August, 2012

the end of the day

in CA this week
 trying to see good things


from the hotel window

12 August, 2012

have i ever told you how much i hate casement windows?

casement windows suck. their hardware is crappy and prone to breakage, which renders them completely useless, they block 1/2 the breeze if you only have them open a little bit, oh and did i mention this? they break a lot. oh, yeah, i did mention that.

ever since i was a kid, i've noticed that perfectly good homes that have casement windows, usually had 1 or 2 windows that were broken. no, not the glass but broken and unusable. i knew then, i never wanted them in my house. that was for sure...

then, we built a home. i never wanted them in my house but didn't put up a fight when our builder said, "that's what I use." there were enough other crappy things going on while we built the house, and i let this issue slide. anyway, in our 6 years, here, I've had to replace 1 crank and 2 latches. the latches are crappy construction and are prone to breakage, i foresee more problems with this.

this latest latch, pictured here, was broken while it was in the locked position. as such, i had no way to get at any of the fasteners to take it apart as they are all neatly hidden. well, thank god for dremel tools. i had to hack through the case of the latch and expose the mechanism that moves the locking bar in the frame. i was able to get a screwdriver in there and whack it with a mallet until the latch moved the bar to the unlocked position. phew, finally. i have the latch out and, now, i just need to order a replacement part before winter. sure... it's unlocked but it's also a 2nd story window on a 2 story house over a look-out basement. if someone gets up there, they were getting in my house no matter what.

11 August, 2012

woozy

best bottle opener ever

thanks surly!

one for jared

auroch's horn

wow, that's some crazy carbonation! i could really sit and watch this glass for a while. btw, don't grab one of these when you're thirsty. it's a 10% sipper.

05 August, 2012

photos of the photographer

t and i went for a drive tonight to capture the sunset along the mississippi river. while she was catching the sun, i was catching her...








23 July, 2012

maiden voyage with the banjobrothers backpack

this is the large (2000ci) commuter backpack. still pretty low profile. it rode ok, but after all these years with messenger bags, it felt a little weird to have straps on both shoulders. plenty of room for laptop, clothes, raingear, food and coffee.

21 July, 2012

i've been using macvim as my development environment for groovy/grails at work and i'm slowly building up my toolbox of functionality. Here's one I put together based on based on a RunShellCommand method

function! s:RunShellCommand(cmdline)
  echo a:cmdline
  let expanded_cmdline = a:cmdline
  for part in split(a:cmdline, ' ')
     if part[0] =~ '\v[%#<]'
        let expanded_part = fnameescape(expand(part))
        let expanded_cmdline = substitute(expanded_cmdline, part, expanded_part, '')
     endif
  endfor
  botright new
  setlocal buftype=nofile bufhidden=wipe nobuflisted noswapfile nowrap
  call setline(1, 'You entered:    ' . a:cmdline)
  call setline(2, 'Expanded Form:  ' .expanded_cmdline)
  call setline(3,substitute(getline(2),'.','=','g'))
  execute '$read !'. expanded_cmdline
  setlocal nomodifiable
  1
endfunction

i found out about this here: http://vim.wikia.com/wiki/Display_output_of_shell_commands_in_new_window


then, i added some commands to my vimrc:


this one searches all my groovy files for the word under the cursor (the thing is the under-the-cursor magic):

command! Srchwg call s:RunShellCommand(
'find . -name \*.groovy -exec grep -H --regexp="' .expand("<cword>").'" {} \;')

this one, takes an argument for a filename extension and will search all files of that type for the word under the cursor:

command! -nargs=+ Srchw call s:RunShellCommand(
'find . -name \*.'' -exec grep -H --regexp="' .expand("<cword>").'" {} \;')

now, i can have my cursor on a line and type :Srchwg which will open a window with a list of files that contain the word. or, if i type :Srchw js, i'll search all js files in my project for the word under the cursor. nice.

i was thinking of writing a function to, then, open files based on the buffer opened by the RunShellCommand method, but i found that vim already has functionality to do that. all i needed to use was the handy-dandy gf functionality!

anyway, one of these days, i'll package up all of my vim tricks into either a vimball or just a vimrc that you can source into your vimrc and open source it on github.

yeah, i landed that

17 July, 2012

what's worse than e-mail spam?

phonebook spam! i neither need nor want this damn thing, yet someone killed trees, wasted energy manufacturing it, and burned fuel delivering it. now, additional energy is going to go into recycling it. PITA? more like a PITE (pain in the environment).