– the blog –

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.

Reboot 24 April 2017

Oh, let's see. What's going on around here?

My fifth Wilderness First Responder course was completed in February and I am now certified for two more years. The course took place at the OMSI Hancock Field Station in Central Oregon and this was my third time taking the course there. Highly recommended location as you live and breathe both the outdoors and wilderness medicine while there. Hard to beat ten days being in one location with one group of people all focused on a single goal. The conditions were cool and a bit damp at times, but I still got in a number of trail runs and a hike. Returning from the course I definitely felt refreshed, despite it being a reasonably intense course.


Tina and I returned about a week ago from our eight days taking the Denali Prep on Mt. Rainier course by Alpine Ascents. For only being out eight days for this trip, I spent as much time researching and shopping for gear as I did for my PCT thru-hike. The weather on Mt. Rainier can be quite challenging in winter and every single article of clothing we brought was definitely used. My longest winter camping trip in a tent up to this point had been three nights at Crater Lake, so this course definitely upped my experience level. The weather cycled between clear and cold to blustery and whiteout. Overall we probably received 4-5 feet of fresh snow, which required us to twice get out of our tents in the middle of the night to clear the snow away from the tents. Brrrrr...

Sadly, the conditions did not allow us a chance to head up to Camp Muir for a night or two. I am reasonably ok with that as we still got plenty of practice with snow travel, using sleds (up and down slopes), using pickets, building anchors, belaying off a snow cliff, and numerous other technical skills. As the guides, David and Stuart, emphasized though, the main point of the Denali Prep is to let the mountain teach you the less-technical skills of merely living on a mountain in a tent for an extended period. Keeping fed, keeping hydrated, staying warm, going to the bathroom, maintaining your living area while still being able to go out and travel/work in the environment. We both feel a bit more comfortable tackling even more challenging trips and have already started daydreaming about more ambitious alpine climbs in the next year.


I mentioned last time that I was trying to get into the Cascade Crest 100 mile trail race. Alas, it was not to be. I was something like 212 on the waitlist and since they only have 160 spots, the odds were definitely not in my favor. So, instead, I am now signed up for the NUT 100K on August 19th that goes along the scenic North Umpqua River Trail. Also, I am number 11 on the waitlist for the Mountain Lakes 100 mile race that takes place partially along the Pacific Crest Trail down near Olallie Lake Resort here in Oregon towards the end of September. Both look gorgeous and challenging. With the Rainier trip complete I am shifting from training for mountaineering to training for some seriously long trail runs.

My training plans are primarily based off the knowledge I am gleaning from Training for the New Alpinism, written by Steve House and Scott Johnson. Also been using the related Uphill Athlete website to learn even more and watch their training videos. The tricky aspect is that I am not completely dedicated to focusing on trail running. For instance, I skinned up Mount St. Helens last Friday because it was a nice day and who wouldn't want to go up there and ski down thousands of feet? Naturally, I also want to do the McKenzie Pass Scenic Byway bike ride here in a month or so, once the snow clears out. Trail running is only one aspect of what I want to do this year. The balance of all I want to do and what I need to do to successfully complete those runs...that is part of the challenge.

At a minimum I have a few longer runs mapped onto a loose schedule and then I will try to fill in the blanks on a weekly basis while diligently keeping track of what I am doing using my fancy Garmin fenix 3 HR and Strava. I am sure it will be fine. Not worried at all. Nope.


And now comes the final bit. I quit my job at the end of March. This was a reasonably long time in coming. There was a sudden, seismic shakeup in Engineering's senior management in early December, which left a significant void of leadership that never got filled in. Then a couple developers got fired a month later and while the reasons may have been valid, it was sudden and not communicated particularly well. Hiring of developers also reached a standstill, so the team I was promised to help me build a top-priority project never appeared.

All of these things combined to make an Engineering team that was unfocused, uncertain, understaffed, and painfully ineffective.

Given my experience as a CTO and VP Engineering for multiple small startups, I tried to provide guidance and do tasks to help improve things...but it went nowhere. Work that should have been done in a couple weeks would take months. Round about meetings with the product team led to tasks that were abandoned half-complete or rushed to completion at the last minute with numerous QA issues. It is hard to come home most nights feeling exhausted and with the clear idea that you are being paid extremely well to be useless.

There were good days, days when things got done and done right. Too many days were not like that though. I came back from my Wilderness First Responder training feeling refreshed and energetic, and then I immediately had four shitty days in a row at work. Since I was the lead engineer on a major project, I gave a full four weeks notice and so my last day was March 31st.


What's next? No idea. Again. I joined Vacasa because it was in Portland and thought it was time I tried a more stable, reliable, and larger company. A nice, steady paycheck with benefits and hopefully the chance to learn a different kind of development thanks to more data, more money, and a larger team. It was a good idea, simply did not pan out. It is clear to me now that I need to be in a leadership position with a company whose product I believe in. Vacation rentals is not really my passion and I would rather lead senior engineers than be part of their chorus.

Thanks to the Rainier trip preparation, the trip itself, and a week of recovery I have now been unemployed for over three weeks. I am thinking I will look around this week and see what's out there. Make inquiries and work on a few of my own, neglected coding/writing projects. One thing I have not done recently with technology is play and learn new things. I miss that and it is one of the things that I find most rewarding. Time to move forward.

Adventures in Sickness and Training 7 February 2017

Tried to write a blog entry last weekend and a cruel stomach bug took me down a notch for the entire weekend. Nothing like being pale, shaky, and exhausted when you should be trail running and skiing. Previous weekend had an entirely different flu in my system, which required that I take my first sick days at work. Lost two entire weekends worth of exercising and outdoors fun. Boo! 

And I should be training! In April, we shall be taking an 8-day Denali Prep course on Mt. Rainier with Alpine Ascents. Even though I have hiked up a few 14ers and climbed various Cascade mountains like St. Helens, Hood, Adams, and Baker my technical skills are still limited. A few hours of crevasse rescue training and basic rope usage on a glacier with a guide has not ingrained in me the skills I need to attempt more serious mountains. This is my chance to learn those more technical skills and gain the experience I need to comfortably tackle more intermediate climbs. The end all goal is not necessarily to climb Denail (though a 2018 climb is not outside the realm of possibility) but to challenge myself more on mountains closer to home.

Not only that, but I have registered for the Cascade Crest 100 lottery. First learned about the race while watching The Ginger Runner's Amongst the Evergreens, I was intrigued from the very beginning about this incredibly challenging trail race up in Washington. Having completed my first 30 miler (Wildwood Trail) and my first 40 miler (Timberline Trail on Mt. Hood) last year–both self-supported–I was curious what I could possibly do next. 50 miles seemed like too small a step, so I went big and decided running 100 miles was a worthy goal. This run will have aid stations though. I mean, I'm not completely insane.

Yeah, I have anxiety. Holy shit, 100 miles of trail running with over 22,000 feet of elevation gain! I have a serious amount of training and preparation to get under my belt before August 26th rolls around. So much could go wrong or change in the next seven months too. Injuries, moving, other priorities. Maybe I will not even get a chance to see if I can pull it off.

Lottery results are on Sunday. Incidentally the same day I take off to a field station in central Oregon for my fifth Wilderness First Responder course. Probably should take my running shoes.

The Tedium of Job Applications 28 June 2016

I'd hire me...

Greetings, [redacted] -

Year ago, back in Jr. High, I won 1st Place in the Earth Sciences division of my school's science fair. It was the crowning achievement of my early life and I have made considerable efforts to duplicate that success ever since. It has been a rough and difficult road, often fraught with peril and disappointment.  However, I have persevered and finally after much toil I believe I have reached the point at which my adult life has equaled that single achievement of a bright-eyed youth.

How? How could I have this, I hear you cry! Surely, no man could prove equal to such a task? As you sit on the edge of your seat, I shall tell you the story of how it all came to be...

For over four years, I was the CTO of EllisLab and the face of development for both ExpressionEngine and CodeIgniter, interacting with literally dozens of developers and designers every single day via email and forum discussions to discover their needs and help them further their own development goals with our software.  After leaving EllisLab, I joined Solspace and spent multiple years building them software and providing technical support for client projects.

More recently I was the CTO of a startup company called ImpactFlow and built a SaaS backend for them while also leading development and managing the technical team. Currently, I am dabbling in contract work supporting startup companies who need my expertise as a Full Stack Developer and Lead Architect. It's not as glamorous as being a CTO, but it is a significantly more relaxing lifestyle.

Looking at your site's About page, I see a few familiar names. Hopefully this Cover Letter is hitting the right notes. If not, please respond and I will compensate you for your lost time with a few of my favorite YouTube videos.

Seriously though, thank you for your consideration and please let me know if you have any further requests or questions.  Best of luck in your search–I know how unbelievably exhausting it can be.

Paul Burdick

A Nation of Mass Shootings 12 June 2016

It’s frustrating. My Senators and Representative definitely know my views and they overwhelmingly agree with me. I annually give money to organizations that work to advocate for gun control and reduce gun violence. I publicly share my views on Twitter and Facebook. Nothing changes.

There is a significant segment of our population and an entire political party that finds it perfectly acceptable for 20 children to be slaughtered in a school, 50 people to be murdered in a nightclub, and a US Representative to be shot in the head. They are unwilling to even restrict the selling of assault rifles to people on terror watch lists.

You know what. Yes, I want to take your guns. Years ago, during my EMT training, I worked in an ER on a Saturday night in Fresno, California and watched as literal pools of blood formed underneath gurneys while doctors and nurses desperately tried to save dozens of lives that were put in danger because of guns.

You are in love with a device whose sole purpose is to maim or kill another living creature. You want to feel powerful? You want to feel strong? Save lives and do the right thing.

The First Week of Summer 4 June 2016

One of the greatest difficulties with having a blog that is read by friends, acquaintances, current and former employers, current and former coworkers, and then the entire internet (who only knows you from your online presence) is that you can expound on a topic in your life with the greatest care and still befuddle or offend people. I have lost a friend because of this blog. I have definitely irritated former coworkers to the point of an icy cold war developing between multiple parties. Part of me cares, rather deeply, about those situations. On the flip side, this is my little corner of the web and if I am a bit flippant or calloused about how the words put here affect others, it is because at a certain point you have to point to a line in the sand and declare that you are only responsible for your own responses to the world, not the responses of others.

Anyhow. Now that that little introduction is out of the way, onto the quasi-bold declarations.

The past month has had a sharp uptick in the range of emotions I typically experience. And this past week, when I headed off to do adventures and became essentially homeless again, has only helped bring how uncertain my situation has become and also how untenable my psyche finds this manner of existing. There is nothing like climbing a mountain for eight hours and then spending the rest of the day recovering at a remote campsite to give you oodles of time to think. Oodles, people, oodles! One forgets how much stimulation and distraction the modern world provides until you take it all away and you spend the majority of your time unconnected and solely within your own mind. The past five days have felt more akin to five weeks.

Let's see. Where to begin. You know what? There is a list ability in this editor. Let's use it! Bold move, Burdick, bold...

  • First. And most importantly and influential. An implausible situation I daydreamed about for years has actually happened and somehow it is more amazing than I expected. It still surprises me. I am internally blown away that the Universe dropped this into my life. Part of me feels like this is fate giving me a chance at something I have wanted for a while. The more damaged and far less optimistic part of me thinks I am about to get walloped. Nerve-racking for sure. Exciting too. Very difficult being patient while it develops as I have no clear view of the outcome. Uncertainty, doubt, and a lack of pleasantly chilled peanut butter cups. Not the best combo for a relaxed Paul Mind.  ::strikes a Buddha Pose::
  • New work has been problematic. People want me to build them something but no money to pay me. Another client delayed for weeks about next steps until just before I left. A really exciting project just disappeared completely off the radar. And then a UK company that specializes in contract work for high-end clients accepted me into their community...but they have nothing for me yet as their presence in the States is still being nurtured. I know I need employment, of some sort, in the next few months. Unless The Guide magically finds a sponsor willing to bestow an abundance of dollars, I may finally have to bite the bullet and choose a job that does not allow me the outdoorsy, freeform lifestyle I desire.
  • Money. Oh, I have enough money to get through the summer. However, thanks to the unsteadiness of new work and three expenses that I was completely unprepared for, this summer will have less flexibility than I had hoped. And a client delayed paying me by a month, which put in sharp relief how life has been a balancing act these past few months. My expenses are low. Shockingly low when I actually lay it before people ("how?!"), but that means when there is a problematic two months in a row there is not really anywhere else to cut. I do not like this feeling of powerlessness and uncertainty. Leads me to start thinking I need to settle down and focus on significantly upping my savings.
  • Lies, Damn Lies, and Statistics.  Three times in the last two weeks a server has gone a bit crazy for a client. ALL THREE TIMES, I have been either on a long bike ride or up on a mountain, which has made debugging impossible so I just restart the server via my phone. This server only has two sites on it. One that I built and have logging, statistics, etc. on and can track usage reasonably well. The other built on Wordpress and (having had multiple developers) is a bit nuts. That's my professional opinion. Guess which one I suspect of causing the server issues? Just a bit stressful having a site you are the lead developer for going down when you are 40 minutes from reliable internet because of something you cannot control. I hear Yoda in my head: Control! You must learn control!

Man, I write those things down and none of them seem that bad. OK, that's not entirely true. They are all addressable, let me put it that way. They are just not addressable with my current plan of being a dirtbag for the summer.

I really do want it all. The adventure lifestyle, the girl, the stable income, and a reliable work environment. (Also, Bernie Sanders for President, simply because I think it is beyond time that college becomes affordable again, we have universal healthcare, and income inequality stops being so insanely bad.).  

::drums fingers::  I am not sure this blog entry was meant to lead anywhere. Just letting a few things into the light by writing them down. One more way of gaining perspective and laying out what is causing stress or joy in my life. Also to show my inability to edit an entry for spelling or grammar mistakes before publishing, because that never gets old...right?