– the blog –

Technical Skills vs Will Power

It really gnaws at me when I cannot get a bouldering problem well within my abilities. Unlike running, biking, thru-hiking, backcountry skiing, and a significant amount of mountaineering there is no way to will myself through a blocker in climbing. Digging deep only gets you so far. You need the skills, the technique, the core strength, and the ability to move your body in precisely the right way to get up the wall. And you only get so many shots at a problem before a necessary part of your anatomy (muscles, tendons, skin) is worn out or used up; forcing you to walk away.

Having focused so long on activities where endurance and willpower are key to succeeding, it is quite frustrating to simply be incapable of pushing through a problem. Probably good for me to have an activity where slow, incremental development of technique and strength is the key to improving. Still. I almost punched the wall after the 20th time of not being able to get past a certain point on a v4 today.

Shit, Am I a Climber?

Last night while bouldering at the Circuit, I banged out two new v4s. The previous session I did the same thing and redid my third v5 with a cleaner start.

I started bouldering on a regular basis at the beginning of September when my pulled calf muscle made it likely that I was not going to run my 100 mile ultra. In just over two months I have gone up two grades in the gym. There are still v3s that rebuff me but I am starting to find v4s consistently within my abilities. And now there are v5s that are doable. Last night I started a v6 and got four moves in before I dropped off.

As I sit here typing, the tips of my fingers are a bit sensitive and I can feel the soreness in my forearms. A sign of a challenging two hour climbing session the night before. What's different is that opposed to even a couple weeks ago, I think it was worth it for what I achieved. Look! I'm no longer a completely rubbish climber! Woo!

Progression of Things

Oh, I was a foolish man when I thought the Kilvin CMS beta would happen if I started working again. The contractor in Boulder has been keeping me busy and I have been incredibly focused on completing tasks, getting paid, and enjoying having a positive cash flow for the first time since March. Credit card is paid off, savings have been bolstered, estimated taxes sent to the Federal government, and a few delayed purchases (new bike helmet) have finally been made. Next steps involve increasing savings and putting money into a retirement account. They have asked me to stick around until February, so that gives me a good timeline for saving and also preparing for whatever adventures may come next year.

With the ultras out of the way, for better or for worse, my schedule opened up for focusing on other physical pursuits. So, in early September I joined Tina with regular trips to the NE Circuit Bouldering Gym a couple mornings a week and on Sunday. She was training for the Portland Boulder Rally and it was becoming slightly embarrassing how poor of a climber I was compared to everyone else.

She crushed at the Rally and over the past two months the regular gym sessions and two trips to Leavenworth, Washington have helped me become less embarrassed by my climbing prowess. A few more months of work and I might rate myself a solid "Not a Total Embarrassment."

Ski season is quickly approaching, so I am planning on doing a couple workouts a week prepping my legs and core for the hard work of skinning up mountains and skiing down all day long. The skis are already at the Mountain Shop getting sharpened and wax. With snow at Timberline, there is a faint hope that we may get to ski a bit Thanksgiving weekend. Snow, mountains, zoom! Yesssssssss! I would really like to get to the point where I am comfortable with all blacks and skiing challenging out-of-bound routes–including those that start from mountain tops. One must have goals.

Speaking of goals, I really want to do another grand adventure next year. Something worthy of the word Epic. Not sure what yet, but I have a few ideas. Many of them involve becoming more proficient with ropes and climbing, so that's on the to do list as well. Money is required too. So, I do believe that is my plan for the winter. Save money, improve technical skills, and have fun.

Inching Closer to an Alpha

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 at the Groot plugin 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

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

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

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

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

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

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.