– the blog –

Inching Closer to an Alpha 5 September 2017

Back in May, on a whim, I took an old CMS that I had worked on years ago and start playing around with its innards trying to make it work on a more modern foundation. The only goal was to help myself get back to a place where I enjoyed development. Play is important.

After two months, this CMS was completely rebuilt on top of the Laravel framework with a new underlying architecture, new template parser, updated database structure, and a new control panel design. Essentially, I took what was there and tore it down to studs before putting it on a new foundation so I could build it back up again.

Here we are at the end of September and I have continued adding and refining the application to get closer to the core of what I want a CMS to have. It's not complete yet, as I still have to work on how custom field types are added via Plugins and how file uploads will be handled. Two major aspects of a modern CMS to be sure, so they are on my list of required features for a minimum viable product. 

However, it has reached the point where I have started sharing it with a few developers for them to peruse at their leisure. Nothing formal or structured, more of a "hey, look what I built". Along those lines, I have also built a quick and dirty demo server so those who are curious–but too busy to install a new web application–could have a gander as well. 

The code is located on GitHub at artificery/kilvin and I have already added it to Packagist as well. The website is simply the GitHub Repo's readme file, so it is rather basic right now. Once I am satisfied with how field types are implemented, I intend to begin work on the documentation.

For those interested in third party development, I suggest looking in ./cms/plugins/Groot/ to see an example plugin I have been building during my development. There is also an examples Twig template that shows the initial templating tags, which can be viewed live on the demo server.

I cannot emphasize strongly enough how this application is barely in the alpha testing phase of development. My task list is still a page long with more than a little code left to write. Also, automated testing is not yet in place, which is an important aspect of any serious open source project.

Still, it's getting there. It's been about 275 hours of work so far with at least another 30-50 to get it to a beta status. Even with a new, full-time contract job starting tomorrow, I am hoping that beta will happen sometime in October. Will keep you posted!

The Light of Other Days 30 August 2017

Here we are 3.5 weeks until the Mountain Lakes 100 and I am about 50% sure that I am not going to do it.

The ankle took longer to rehabilitate than I would have liked but after two weeks of steady progress in the gym and on walks, I went for an hour long run in Forest Park and it handled it like a champ. In fact, I felt so well rested after two weeks without a serious run that climbing up hills felt downright easy.

On Monday we headed to Molalla, Oregon to view the eclipse. Traffic was so light that we decided to drive most of the way and only biked the last 8 miles or so. It was a magnificent experience and now I hunger to see another one. We only got a little over a minute of totality and it was over too quickly. I want more.

On Tuesday I planned a 1.5 hour run from my usual spot where Wildwood Trail connects with NW 53rd Drive. The ankle was still feeling good and I decided that the first 2 miles would have me at a moderately fast pace and then I would do a pace below my aerobic threshold for the rest. Right before my 2 miles were over I got a painful cramp in my left calf. I slowed my pace and tried to work it out. It never went away entirely but at my turn around spot it was more of a dull ache than painful. However, less than a mile from the trailhead, I tripped on a root and my left foot instinctually slammed down to prevent me from falling down a hill. Instantly felt a sharp pain on the side of my calf. I believe I actually yelped.

Back at the trailhead I discovered my car's first aid kit was sadly devoid of ibuprofen, but thankfully the pain was less debilitating and more in the "shit shit shit" spectrum. After I relaxed, hydrated, and did gentle stretching for 20 minutes I drove home, all the while flexing my ankle regularly to prevent it from stiffening up. At home, I gently prodded the muscle and discovered that right along the inner calf a three inch section of the muscle was painful and very tender to the touch. Given its location, I am pretty sure it was a tear of the soleus muscle.

Here we are a week later and despite careful physical therapy, massage, and exercise, today's test on a nearby track had me only completing about 3.5 miles in total. Less than a month ago I did 35 miles in a single day and 76 miles in a week. Not only that, I have now lost three weeks of meaningful training because of two injuries.

Not saying it is impossible but with the muscle healing so slowly and the inevitable loss of a month of training, I am not sure my body will be prepared to run a hundred miles in three and a half weeks. Will continue working on it with a glimmer of hope, but I suspect I will make a decision at the end of this weekend.


Hard not to be upset about this. Months of excellent, steady, deliberate training undone by one shitty month. Of course, at this point there is a bit of concern that the race might be canceled by one of the many wildfires currently burning in Central Oregon; one of which is a scant 12 miles away from the starting line.

On the upside, I did get into really excellent cardiovascular shape. My climb up Mt. Adams last month felt easy. I am used to it being a bit of a struggle but this last time it felt more akin to a long, moderate hike. Also learned more about preparing for longer runs and what I need to finish and finish strong. Not bad things to take away from all this hardwork.

Still. Grrrr. The first time in my life I have seriously trained for long distance running and also signed up for organized races, only to be thwarted by fire and injury. Makes a man want to shake his fist at the sky.

The Best Laid Plans 14 August 2017

The training week of July 31st to August 6th went a little nutty towards the end.  According to Weather Underground, Portland's temperatures for that week had our average being 96°F, with our high being 105°F and the thermometer never sinking below 88°F.  In short, it was pretty darn warm outside, even at 6am in the morning and especially for a 15 mile run.

That's not the whole story. Thanks to forest fires to the north, south, and east, our air quality dipped down into the "Unhealthy" range according to the Oregon DEQ. It was so bad that one could barely see Portland's downtown from our apartment, let alone Forest Park beyond, where I usually do my trail runs. My Thursday morning run had me cutting it short by a couple miles as I could feel my cardiovascular suffering in the warm temps and poor air quality.

Our group camping trip for the weekend got canceled since no one was energetic about spending the weekend outside in conditions all too similar to what Portland was experiencing. With that in mind, I decided to forgo my Friday morning run to protect my lungs and instead do a longer run on Sunday. The hope being that the air quality and temps would improve enough for me to do the Timberline Trail around Mt. Hood. A challenging 40 mile and 10K+ of elevation gain run that ranges between 5500' and 7200' in elevation. By doing the Timberline Trail run on Sunday, I could have one last big run and still have a full two weeks to taper before the NUT 100K.

Tina and I headed up to Mt. Hood on Saturday afternoon and the air quality did seem improved. You could actually see the mountain from Portland, though it was still quite hazy. The weather report indicated the temperatures at Timberline Lodge would be in the mid-70s the next day but that the air quality would go slightly down again. That night we camped at Alpine Camp, which is a primitive campground just down the road from Timberline Lodge. The temperature never dipped below 60 degrees and despite a Benadryl, I slept poorly and woke up feeling dehydrated.

With a quick meal of breakfast bars, fresh fruit, and water, we drove up to Timberline Lodge and around 6:45am I started running counter-clockwise around Mt. Hood. On my person, I had a backpack with two small running water bottles, drink mix and food for the entire day, a tiny first aid kit, sunscreen, headlamp, my phone, a spare pair of socks, and body glide. The pack was heavier than one would wish for running, but after running out of food last year and how few people I saw the previous year, I may have overpacked a bit for safety.

The day was warm from the beginning. Last year, I ran Timberline Trail in early October and wore a long sleeve the entire day and had to put on my rain jacket a couple times because of chilly winds and occasional drizzle. This time, I started in my lightweight wool running shirt and it was too much. Even running downhill towards White River at a gentle pace, I broke a light sweat.

Despite this, the first 10 miles went fast and smooth. Took me a few short back and forths to find a safe crossing for White River and the trail through Mount Hood Meadows was a bit narrow and overgrown in parts, but as this was a training run I took it at a moderate pace. By the time I got to the Gnarly Ridge Trail junction, I had caught up to a couple that had left 20 minutes before me and made the decision to take a five minute break to empty my shoes. The ground was dry and each step was kicking up a decent amount of volcanic dust, so I wanted to avoid any potential foot problems from sweaty, dusty socks.

The climb up Gnarly Ridge was spent mostly walking. It is not steep, just almost continually up and with nearly 30 miles to go you want to conserve your energy. The air was noticeably dry and looking up at the mountain was like looking through a brown, partially transparent curtain. The smoke had returned overnight and the normal panoramic views to the east were nowhere to be found. Despite this, you could still feel the sun glaring down on you. At the top of Gnarly Ridge I had already finished nearly both of my bottles from their last top up a few miles beforehand. I kept a lookout for the usual snowmelt streams but despite hearing a bit of trickling, they were all still buried under snow fields.

This is where I think I started losing the hydration game. I had not been able to find my 1L Platy bladder at home the day before and left without it with the faint hope it might be somewhere in the car. Alas, it was not and I left Timberline without a backup water source that I could have filled up to get me through this section with plenty of water. Oops.

Eventually I found a clear, cold snowmelt stream about a mile before the Cooper Spur Trail. It was delicious. I quickly swallowed about 600ml of water while eating some solid food. Refilled both of my bottles and added in hydration mix. Also doused my head with water as it was quite warm even at that elevation.

Ran down to Cloud Cap Saddle and all the way down to the Eliot Creek crossing via the new trail built last year–Thank you, Forest Service!  The trail was in better condition than I expected. Only the short bit right along the creek seems to have suffered from the winter melt. The climb back up from Eliot Creek was still tiring but I felt significantly better than I did the year previous.

A couple miles later I stopped again to empty out my shoes again (so dusty), refill water bottles and myself, and douse my head repeatedly in cool water. It was getting pretty warm out and the ground just seemed to amplify it. Through the next part, I ran into four other people running around the trail clockwise. Chatted a bit and continued on. Reaching Elk Cove, I stopped for more water and dousing, and then I immediately met a group of people running the Timberline Trail together. They looked rather stronger and cooler than I felt in the midday heat. Their backpacks looked pretty lightweight too. Surprisingly so. I was late for meeting Tina at the top of the Vista Ridge Trail, but I would have been curious to know how much and what fuel they were using for their run.

Made it to Vista Ridge Trail junction and promptly plopped down to the ground, took off my shoes and socks, and dunked my feet in a nearby stream. Ate food, drank water, and doused my head a few times. Felt warm, but did not suspect any dehydration and no part of my body felt problematic. And while my pace was not extraordinary, it was getting the job done, especially for a training run on such a warm day.

I did my best velociraptor impression for the camera and then started jogging towards Ramona Falls, 10 miles away. After the Vista Ridge break, I had a hard time getting my body running again. It was like my internal motor was resisting me and refused to rev high enough. Thinking it was the heat, I stopped at nearly every stream and doused my head and drank water.

A couple miles down from McNeil Point is where I rolled my ankle. If you have ever been on this section, it is where there are countless tree roots in the trail for a half mile or so. To the point that even though it is mostly downhill, I repeatedly would walk for a dozen feet whenever it became too uneven for reliable footing. Alas, during one of these slow downs, I still stepped wrong and my ankle rolled.

This was about 25 miles into my run and still 5 miles from Ramona Falls. With no alternative, I tightened my ankle brace, gritted my teeth, and kept on going. Unfortunately, this was the tipping point. On the run down to the Muddy Fork crossing, I started feeling woozy. Not fall over worthy, just not feeling solid on my feet. I kept on pouring cool water over my head whenever I could, but it just barely kept me going. Once across the Muddy Fork, I hit a humid wall of overgrown trail that sapped my strength to the point that I started walking.

Tina was planning on meeting me near Ramona Falls to see how I was doing before I did the last section of trail back up to Timberline Lodge. Eventually I got running again, refilled at Ramona Falls, and met her where the trail heads down to the Sandy River. I sat down and told her I was done. With a painful rolled ankle and what felt like a decent case of heat exhaustion, it was not worth forcing myself to finish the last 8.5 miles.

The 3 mile walk out was slow and I beat myself up mentally about quitting, but it was the right decision. In Welches, we stopped at a coffee shop and got cool, delightfully fruity smoothies as I was craving something cool and sweet. I also ate a banana and drank a decent amount of water during the rest of our drive back to Portland.

Here's the crazy thing. Saturday morning I weighed myself and was 188 pounds. When I got home on Sunday night, I weighed myself again and was shocked: 179.6 pounds. If you consider the smoothie, banana, and water I consumed on the way home, I probably was 10 pounds under my starting weight by the time I reached Ramona Falls. More than 5% of my body weight lost during my long run.

So, I took a couple days off to recover and started rehabilitating my ankle. The weight mostly came back but the ankle has been more problematic. Even with rest and taking it easy physically, today's light workout on the treadmill made it mildly stiff and sore. With the NUT 100K being this Saturday, I was becoming seriously concerned it might not hold up to 60 miles of running.

After showering, I checked my email and...lo and behold...the NUT 100K is canceled.

Huh. Well. Shit.

The Day of Reckoning Approaches 1 August 2017

Here we are in August and the NUT 100K is less than three weeks away and the Mountain Lakes 100 is five weeks after that. The time is approaching where the countless hours of running, recovering, and stretching will hopefully pay off and I will complete my first 100K and first 100 mile trail runs. Boo yah?

Ultrarunning Magazine's "Preparing for Your First 100-Mile Race" article is a nice overview of all the thoughts I have been pondering for the past few months and that have been steadily gaining weight as the races approach. The "physical, mental, and logistical challenges" of a 100 miler are really hard to fathom until you are knee deep in the training. It seems impossible to fully comprehend them until you have actually finished a race too. How does my body react to 24 hours of continuous movement? Will one item forgotten at an aid station cause me to drop? Will I mentally reach a state of zen or is the latter half of the race going to involve grimacing and tears? So. Many. Unknowns.

Physically, I think I am doing OK. Last week involved a climb of Mt. Adams, a three hour run, a core workout, and then running the entirety of Wildwood Trail in Forest Park on Friday. This week was supposed to be two short runs with a challenging 40 mile run around Mt. Hood via the Timberline Trail. Sadly, with a serious heat wave hitting Oregon, I am instead doing four 15-mile runs during the early morning hours before going camping for the weekend. There may be one more really long run after the weekend, but then I start my taper prior to the 100K.

The NUT 100K will be treated as both a dress rehearsal for the 100 miler and a training run, albeit a really challenging one. After the NUT, I have five weeks until the Mountain Lakes 100, which should give me time for an adequate recovery and a couple more high mileage weeks before I taper for the final race. If all goes according to plan, of course.

Mentally, I am uncertain of my fortitude but cannot imagine what else I can do to prepare. Everything I have done in the past four years has helped increase my mental toughness. The thru-hike, mountaineering, long distance biking, and last year's two self-supported ultras. Combined with this summer's training, my mind is hopefully prepared for handling the physical exhaustion and pain of a 100 miler. Still. 100 miles is no joke. I expect that last 50 miles to have a couple low points.

Logistically. Ah, yes. This one. As the temperatures increased with my mileage during July, issues popped up that reminded me how minor mistakes can cause harsh consequences. My first run with a new ankle brace caused my first blister of the training. During my Wildwood Trail run, I neglected to bring a spare pair of socks, and my sweat drenched socks caused a painful skin crack to form in a toe joint. Being a rather large fellow who prefers cold weather, the summer heat causes me to sweat profusely, which has made hydration supremely difficult as I am losing more than my body can absorb. After a 2% loss, your performance noticeably suffers and I have definitely gone over that limit on warm days even when I am being careful. And then, inexplicably, I once neglected to apply Body Glide and ended up with a bit of unpleasant chafing in, um, sensitive spots.

All of those potential problems (and others) need to be considered when planning aid station strategy as well as what is on my person. Figuring out where spare clothes, spare shoes, food, energy gels, hydration mixes, first aid supplies, body glide, etc. should be picked up is now at the top of my priority list. Long runs where I loop back to the car and use it as an aid station have become testing grounds for potential strategies. With Tina providing crew support for both races, I have started mental gear lists for her supplies and how the exchange of items can run as smoothly as humanely possible. Lest we forget I will be tired and fairly unfit for higher mental functions during these handoffs, so the more figured out beforehand the better.


That is where my preparations stand. It's been an interesting experience preparing to run these long distances. The time commitment is immense and I am not sure how I could have pulled this off if I was employed. Also, the expense is much higher than my typical running routine. I wear out a pair of shoes every month and energy gels/bars are always bought on sale as I can easily consume 4-8 on a single run, which adds up quick. The low level exhaustion that besets you most days feels a bit stifling too. Caffeine has greatly assisted me for when I try to code the afternoon following a long, morning run.

Still, I think it will be worth it. There are similarities to a thru-hike with the amount of time you spend on trails, the meticulous foot care, and the ravenous need for food. Having done a long trail where I was pushing myself to do miles every single day for months, now I am seeing how far I can push myself in one go. Like the article says, the enormity of the challenge drives us to sign up, but the deeper understanding of ourselves and what we can accomplish is what makes it worthwhile.

Tea, Lunch, Coffee, Breakfast, and Beer 26 June 2017

As a typical specimen of Introvertus sapien, keeping friends up to date with the various going ons of my life can be exhausting.That is one of the reasons I continue to use Facebook. By simply uploading a few photos from a recent outdoor trip or posting a witty bit of song, I insure that I meet the minimal requirements for friends to still feel connected.

Falls a bit flat when you have lunch or breakfast or even just a drink with a friend and you realize that they have absolutely no idea what you have been doing with yourself. Not saying I feel bad about this, simply that it seems like a matter that should be addressed in order to maintain social norms. Hey, you like lists? Me too!

  • I am unemployed! Yes, still! I am working pretty hard on a personal project that may or may not turn into anything in the long run. Not sure I care too much about its long term prospectives since the original point of this project was to build my own application and rediscover my joy of development again. On that front, this has been a success.
  • I am slowly looking for a job again. I just had a phone interview last week for a job at Reed College where I would be helping them build out a brand new Computer Science department, which seems challenging and fun. I have started looking for jobs internationally as well. It seems prudent and wise to start considering options outside of the United States at this time.
  • Tina and I still together and I moved in a few months ago. Woo! Relationships are both easy and hard. Easy because you get to share your life with someone who cares for you and accepts you, hard because you are sharing your life with someone and sometimes you are an irrational creature. I mean, I understand why we cannot have pizza for dinner every night...but...PLEASE?
  • Dan and Amy had a kid. I feel like this should weird me out a bit, but it oddly does not. He's also mind bogglingly cute. Aliens? Genetic enhancement? Krispy Kreme?
  • I am signed up to run the NUT 100K in August and the Mountain Lakes 100 in September. Thanks to a lot of non-running fun in the past six months and then getting sick for a week after being injured for a week, I am starting to feel a little anxious that I am not training enough. I pulled off both a self-supported 30 miler and unsupported 40 miler last year with a less than a stellar amount of training but these races are significantly more in the mileage department. Might have to start bailing on other activities to insure I get my training in. It's going to be fine. IT'S GOING TO BE FINE! <breathes into paper bag>
  • No big trips or adventures planned at the moment. Most of this year has been spent on "smaller trips" like the 10-day Wilderness First Responder course, 8-day Denali Prep course on Rainier, and then a plethora of weekend trips for mountaineering, mountain biking, bouldering, or skiing. Also, a bit difficult to take a month or more off when you are supposed to be training for either mountaineering or trail races. Once October rolls around and employment is figured out, I suspect a bigger adventure may get on the books.

OK, I think that mostly gets you up to speed on the big items. Good? Excellent! Now, if you'll excuse me, I need to go exercise. Whee!

Groot CMS, A Work in Progress 26 June 2017

I continue plugging away on the new CMS, which I have codenamed Groot CMS for the time being. The conversion to the Illuminate Query Builder was completed after working steadily every morning for two weeks. While it was a slog and entailed oodles of repetitive work (thank goodness for grep find/replace), I was pleased enough with the result to continue working on the project.

After another month of effort, the entire codebase is entirely in Laravel. The control panel has been redesigned to remove all images, improve the look, use jQuery 2 for interactions, and all the styles are in SASS files that are automatically built into a CSS theme file using Laravel Mix. The SASS approach allowed me to create a variables.sass file for the control panel theme, which means changing the colors of the design is a cinch. 

A new Installer has been built and its development allowed me to experiment with how I wanted to integrate Twig into the CMS backend as well as using migrations and seeds for setting up the application. Also, all of the member related session and auth code is now entirely based off Laravel's session and auth guards, which upgrades the security while allowing more expandability in the future. Numerous facades and libraries have been built to handle things like site configuration, control panel logging, statistics, and view variables.

Finally, expandability of the base system is included under the heading of Plugins. Plugins will have the ability to add control panel sections, tags for the frontend template parser, public facing APIs, and adding additional functionality to the CMS's own code via Laravel events. Those are the important abilities I want them to have out of the gate, but I have a couple ideas for additional features later on, such as CLI tools.

The conversion to Laravel did make the speed of the application take a bit of a hit according to the browser developer tools. I was getting page creation times below 0.1 seconds for most of the control panel prior to the conversion and now the average is closer to 0.25 seconds. This is before I have done any optimization and without any caching though. Also, the control panel homepage in its entirely is only 120KB in size and loads just three files, two of which are files that are cacheable by the browser. This has the effect of making the entire loading and rendering pretty much instantaneous to human eyes. Seriously, things have been so fast during my testing that I can easily miss a page refresh and wonder if the browser did anything.

So much more remains to do. I have a to do list that is about 40 items long right now and it oddly does not get much shorter on a daily basis as things get added just as quickly as a I remove them. But! Progress is happening! And thanks to everything I have done, I have learned even more about how Laravel and Symfony work. It was sort of funny that at the end of last week I discovered a feature in the code that I did not know even existed, which caused me to discover the documentation for that feature and then dive back into the code to learn even more about it. Cyclical learning.

I suspect I have about another 4 weeks of work left until I am ready to start sharing it with a select group of people. There are two large chunks of code yet to write and those changes will percolate though the entire system. It is coming though. Goodness I hope this goes somewhere...

The Continuing Voyages 19 May 2017

Coding. Training. Eating.  Those are my tasks right now.

First, the coding. On a whim, I pulled out an old copy of ExpressionEngine 1.7 and started modifying it to work with PHP 7.1 on my local Homestead development environment. Not even an hour of work later and everything was working swimmingly. Sooooo, I kept on tweaking. Rewrote how the path in the url was determined. Cleaned up the core.system.php file, which bootstraps the entire application, to be more efficient.  And then I created a composer.json file and started pulling in a few libraries that seemed helpful and better built than what was native. Carbon being the first one as I was never quite pleased with how dates, timezones, and DST worked in ExpressionEngine. A few days later, I pulled in the Laravel DB class, initiated it, and begun converting every single query to use its Query Builder instead of the default ExpressionEngine one. Two weeks later and about 85% of the codebase has now been converted to the new database engine. When finished, that will mean all the database engines that Laravel supports will be supported by this new CMS too. While doing this conversion work for the database, I have also been tweaking and improving code as I look at it. Entire modules have been axed and chunks of functionality removed to make it a leaner, more focused CMS.  

And what's the goal of all this work? Right now, I am just having fun. After 8 months of working at a company where progress was painfully slow, it is thrilling to feel like I am coding at lightspeed. It is entirely possible I could release this once I am finished with all of my rewrites. An entirely new CP backend and template parser are on my long list of changes though, so we are talking months of work left. We shall see.


Second, the training. As of this week, my long run is 2 hours and my two supporting runs are clocking in at 75-90 minutes each. Once you include the biking to and from the trails, the recovery stationary bike rides in the gym on my "off" days, and then the core/strength workouts to keep my body from falling apart (and becoming a skinny wraith), I am clocking in some serious hours training for my 100K and 100 mile races in August and September.  And I am only on week 5 of 18 for my training. Ultra running requires one hell of a commitment! 

Also requires oodles of patience and discipline too, since all of this aerobic base building requires that I keep my heart rate at 152 bpm or lower during the majority of my runs. Currently, that means I am averaging an 11 minute mile. Much slower than I am used to, but an excellent pace for building up endurance, training my body to burn fat, and preventing injuries.


Finally, eating. As you can imagine, all of the training is giving me one hell of an appetite. Just like on the PCT, you get a little exhausted by it. Snickers are my favorite post-run snack, prior to biking home, while rice bowls with beans, salsa, avocado, sour cream, and special sauce are quickly becoming my go to dinner on hard days. The usual pizza, baked goods, and fruits + veggies are in there too. As training volume increases, I am assuming I am going to have spend even more time and effort addressing my caloric needs. For now, it is just barely manageable.

Death on Mt. Hood Yesterday 8 May 2017

A man from Seattle fell on Mt. Hood yesterday and died at the hospital. 

According to reports, he fell long after we were down and on our way back to Portland, so we did not hear about it until last night. We turned around yesterday a hundred feet above the Hogsback because of the crowds, conditions, and obvious signs of inexperience around us. The inexperience was everything from tired, nervous climbers to teams using rope in a way that struck us as potentially catastrophic if a fall happened. I reached a point where I looked at the crowds, tested the snow, talked to my partner...and decided 'nope, not today.'

I love the mountains but I don’t want to die on them because of an easily preventable situation. With Mt. Hood, it is easy to make the decision not to summit because it is so close and we can always return another day. You can have all the sense and experience in the world but accidents still happen. A cornice may break, a snow bridge will collapse, a simple slip...and it is over. It's a fascinating balance that is definitely part of the appeal of these sort of adventures.

As the wise philosopher Kenny Rogers said: You got to know when to hold 'em, know when to fold 'em, know when to walk away and know when to run.

Ueli Steck 1 May 2017

We all learned yesterday that Ueli Steck died yesterday while climbing on Mt. Nuptse near Mt. Everest in preparation for an ambitious project connecting the two mountains. The NY Times has an obituary but the more personal one from GearJunkie helps you understand the loss the climbing community is feeling.

If you do not know who Ueli Steck is, Mountain Hardwear's video titled "The Swiss Machine" is a solid introduction to this amazing climber. There simply was no one like him. This is the man who climbed the Eiger in less than 2 hours and 23 minutes. The man who did 82 summits in the Alps in 62 daysentirely human powered, no driving. Ueli not only had skill and speed, he had incredible endurance with seemingly inhuman abilities to push himself.

It was mind boggling that a human could do what he did. But he was meticulous and trained constantly. Climbing was his passion and his life. He found his purpose and lived it. The fact that he died in the mountains does not change that, it simply means it was cut short far sooner than we all would have liked.

Dying in the mountains is one of those things that I am intellectually aware of but on a day-to-day basis I just accept as an acceptable risk and move on, not unlike driving. While on the Denali Prep course on Mt. Rainier, the guides openly talked about people they know who had died in the mountains. One of the guides had lost two of his climbing partners.

Things happen. A cornice collapses, a momentary lack of focus causes a slip, an anchor fails. There are jokes, turn of phrases, and philosophical points of view that try to soften the blow or attempt to find sense in it...but it just is. You can be the strongest climber in the world with decades of experience but things just happen. And then you are gone.

Opposed to focusing on the loss, I think it is important to focus on the privilege and joy you can find in still having the opportunity to do what you love. Oh, you're still around? Go find an adventure.

Catching up on My Reading 27 April 2017

One of the downsides of being fully employed and using oodles of mental energy just to get through an 8-hour work day is that I felt completely drained by the time I came home. Not much of a desire to spend my nights reading or working on anything too technical or deep. And reading the news and being depressed did not count.

Ah, but now I have free time galore! Look at all the things I can read and absorb in a single morning! Woo hoo!

The Safe Routes for School Fund looks likely to be funded, which will help make it easier and safer for students around the entire state of Oregon to make it to school by walking and biking. There is a great deal of work that needs to happen in the United States to combat climate change and improve our energy infrastructure. Finding ways to encourage families to not use cars is a small but important step.

There is also a bill to hasten the development of a plan for the Oregon Coast Trail.  If you don't know, all of Oregon's coastal beaches are public land thanks to the Oregon Beach Bill.  However, that does not make it all safely walkable and an Oregon Coast Trail will help make it so.

While driving on Hawthorne the other day in SE Portland, I noticed that the speed limit had been lowered to 20 mph. Considering the amount of pedestrian and bicycle traffic in this area and the number of vehicles that exceeded the previous 25mph speed limit by 5-10mph, this is a welcome change. Seems this is thanks to another bill that just passed the Oregon legislature and will allow Portland to set lower speed limits throughout the city.

In the era of Trump politics, where the destruction of the EPA and cutting funding to humanitarian programs is prominent goals on the federal level, it is heartening to see how much good can still happen in our state. The resistance is strong.