WordPress Dev Tip: The Events Calendar 4.6.4 breaks Advanced Custom Fields Select2 fields… here’s a fix

Suddenly, Advanced Custom Fields that use Select2 (any custom select dropdown, such as on Post Object fields) were broken. Testing plugins one-by-one narrowed it down to The Events Calendar. Apparently version 4.6.4 is loading Select2 and overriding ACF's own loading of Select2, breaking custom fields that use it.

I found a simple fix in the WordPress Support Forums. Then I encapsulated that fix in a barebones plugin you can download here.

I finished a marathon

This is my first foray into the blogging genre of “race reports”. Just like with so much of what I have done to get to this point, I haven’t researched how to write a race report, I haven’t read many of them, and I’m probably doing it wrong. But here I am, doing it nonetheless.

I know going in that this will be long, tedious, and probably meaningful only to me. Just like the marathon itself. But it’s important to have a goal and reach for it. I have two goals in this post: 1) to remember as many things about the marathon experience as I can, and 2) to express my love for Minneapolis and this amazing marathon, to maybe even just convince a reader or two to come here and discover the wonders of this place for themselves.

If this is already sounding like a big “tl;dr” to you (and I assure you, it will be), you can skip straight to Marathon Weekend or Race Day itself.

Where do I begin? In some ways the story of me running this marathon could very well be my life story. But, come on. Even I don’t want to read that. So let’s focus on one key detail.

Spring 1992

I was a senior in high school. We were required to run a mile at the school track, for the Presidential Fitness Award or something. I had never run a mile in my life, and I had no interest in starting. But I had no choice.

P.E. was always a nightmare for me. I was not an athletic kid. I was scrawny and weak and basically a nerd. I was ridiculed by jocks and gym teachers alike. And the only thing I learned in P.E. was that I was not good enough to participate in athletics. Yet every Tuesday and Thursday morning I was forced to endure this torture for 50 minutes.

So, this mile run arrived. I dreaded it. But somehow I dragged my feeble ass around that track four times and finished a mile, the second-slowest kid in my class. I’ve always remembered my time as 11:30, but now that I think about it, I wonder if it was actually 13:30.

The time doesn’t matter though. What matters is I hated running, and I was fairly certain that I had just run a mile for the first and last time in my life. And for 19 years, that remained true.

June 1, 2011

I had gone from being a 5-foot-8, 115-pound pipsqueak in high school to a 5-foot-8, 175-pound sedentary 37-year-old. I knew something had to give. And somehow I had known for several years, it would happen when I was 37. My brother-in-law had been similarly sedentary and suddenly started running at 37. He lost a ton of weight and felt great. I wasn’t sure what would be the catalyst, but I just knew this was the year.

Then it clicked. I discovered Couch to 5K. I realized that I could learn to run, I just had to approach it right. And this was the way. It was fun! I started the program on June 1, 2011, and by September I was ready to run in a 5K race.

My wife started Couch to 5K the day after I did, and we would run on alternating days and swap stories of the things we had seen and how it felt to be out moving around and exploring our area. We ran that first 5K race together — which is to say we both ran in the race, but since our paces were different we didn’t actually stay together — and we’ve continued to mostly do races together, even if we only see each other at the start and finish.

And we were fortunate to live in south Minneapolis, near Lake Nokomis. Minneapolis has the #1 park system in the country, and a key part of that is the unparalleled network of paved bike and pedestrian trails, linking all of the lakes, rivers and major parks in the city. You can literally run for miles on paved nature trails, right in the middle of the city, with almost no street crossings. I really can’t imagine a better place to be a runner. (Even in the winter! The trails are usually cleared within a few hours of significant snowfall.)

2012–2014

Now I was a runner. I lost 20 pounds, gained strength and confidence, and even bought real running shorts and decent shoes! I started running more races and increasing my distance… 5 miles, 10K. After running in the TC 10K in October 2013, I decided to run 10 miles once, just to see if I could do it. I could! So in 2014 I signed up for Twin Cities in Motion’s “Summit Challenge”. That was a 5K in February (yes, a running race in February in Minnesota!), another in March, a half marathon on July 4, and a guaranteed spot in the TC 10 Mile in October. I was pumped! 2014 was going to be my biggest year of running yet! Then it happened. IT.

Iliotibial Band Syndrome

In April of 2014 I started to prepare for the half marathon that was coming up in July. But I increased my miles too quickly and on one 6-mile run I suddenly experienced a sharp pain on the outside of my left knee. A little research told me it was my IT band. I took a few days off, but then stupidly went out again and ran a couple of miles and promptly re-injured it. I could barely walk for a week. I ended up taking about three weeks off, and I realized there was no way I’d be able to get trained up for the half marathon in time, so I skipped it and ran in a 5 mile race in my hometown the next day instead.

I was able to get back on track later in the year, ran the TC 10 Mile, and even ended up doing a half marathon at Halloween after all, and I surprised myself by finishing in under 2 hours! (Barely. 1:59:05.)

But this wasn’t my last experience with IT band syndrome. (Cue ominous music.)

2015-2016

In November 2014 we moved. As much as we loved our neighborhood by Lake Nokomis, we wanted to be closer to the kids’ schools in Longfellow. But we also prioritized running! We managed to find a house that was within a couple of blocks of both schools, and even better, was only 1/4 mile from the Mississippi River! Now we had easy access to the excellent trail on West River Parkway and everything it connects to. We were excited about what running in 2015 would bring.

And I ran so. many. races. in 2015. Too many. Twelve, to be exact. Distances ranged from 5K (where I snagged a 24:58 PR) to a half marathon (where I finished with the heartbreaking time of 2:00:07). We signed up for the Summit Challenge again, but still didn’t do all the races (this time because there was a -20° wind chill for the February race). And my good ol’ IT band flared up again in the TC 10 Mile. But this time I knew how to recover and I was back at it before long. But even as I did all of this racing, and realized the half marathon distance was completely attainable for me, I always thought, there’s no way I’ll ever run a marathon. I didn’t even consider it.

2016 was another great running year. I cut back the number of races, but this time did TCM’s great “Loony Challenge” — three races in two days over the marathon weekend: a 10K and 5K back-to-back on Saturday, and the TC 10 Mile on Sunday.

Which got me thinking… if I could run 19.3 miles in races over two consecutive days, maybe… just maybe I actually could run a marathon. So on the day registration opened, my wife and I signed up for the “Ultra Summit Challenge”… the Valentine’s Day 5K in February, the Hot Dash 10 Mile in March, the Red White and Boom Half Marathon on July 4 and the Twin Cities Marathon itself on October 1. This was really happening.

Of course, first I also had to have a little fun, so in November I committed to the Moustache Run 10K. And I when I say committed, I mean total. commitment.

2017: The Year of the Marathon

In the first few days of January 2017, my wife and I both put together spreadsheets mapping out our training plans for the entire year. The goal was the Twin Cities Marathon on October 1, but there were several other milestones along the way: the other races in the Ultra Summit Challenge, plus a few of our favorite other races: the Get in Gear 10K at Minnehaha Falls in April, the Gridiron Gallop 5K at Lake Nokomis in June, and the Torchlight 5K in downtown Minneapolis in July.

The year got off to a great start. We ran together (actually together) in the Valentine’s Day 5K and finished with an awesome time of 25:25. We ran “actually together” again in the Hot Dash 10 Mile (after separating at the start but me catching up to her around the 1 mile mark) and finished in 1:29:02.

I secretly had set a goal for myself in the Torchlight 5K: to not just PR, but to finish a race with a sub-8:00/mile pace for the first time ever. I kicked it up from the very beginning, kept track eagerly as my pace hovered around 7:50/mile, and charged towards the finish. Except… it didn’t come. The organizers had changed the route for the race and accidentally placed a turnaround about a block farther than it was supposed to be. When my watch hit 3.1 miles and the finish line was nowhere to be seen, I instantly let off the gas. I finished the race in 26:06 and was furious. My final average pace was 7:55/mile, but what difference did it make if the course was too long? Fortunately, the organizers owned up to the error and re-measured the course distance. The official records were corrected to indicate it was a 3.3 mile course, and my pace of 7:55/mile was in the books! I don’t have a tidy 5K PR time from it, but at least I hit my goal.

So it was time for another goal: a PR in the Red White and Boom Half Marathon. And I crushed it! 1:58:34. What shocked me most was that I was able to negative split and I actually ran the last mile fastest of all, in 8:24.

I was riding high. But the real challenge was just beginning. It was time to push myself beyond 13.1 miles for the first time in my life.

The Long Run(s)

Running can be monotonous. I can’t stand treadmills, and I’ll only tolerate 2-3 miles on the indoor track at the Midtown YWCA in the worst of the winter weather Minnesota can dish out.

Even the beautiful, well-maintained paved trails of the Minneapolis Park System can get tedious when you run the same stretches over and over again, like I’ve done with the area around miles 15 to 19 of the Twin Cities Marathon course. (Cue ominous music.)

In late June, as I was training for the half marathon, I noticed that my 5-days-a-week running schedule was beginning to take a toll. I’m used to only running 3 or 4 times a week, and the back-to-back longer runs were not giving me enough recovery time. My left shin would occasionally bug me, and I was consistently having issues with my right hip and groin after long runs. So I decided to revise the rest of my training schedule. I would only run 3 times a week, to give myself adequate rest days. But I’d keep the planned schedule of long runs on weekends.

The 14-Mile “Bridge Tour”

For my first 14-miler on July 15, I concocted a crazy training route. I would cross every pedestrian-accessible bridge over the Mississippi River between Lake Street and Plymouth Avenue. I realized it was possible to do this, hitting every bridge, and only crossing each bridge once.

I started on West River Parkway at 36th St., crossed over to St. Paul at Lake St., ran up the East Bank at the U of M all the way to the Dinkytown Greenway bridge, back over to the West Bank, past the Guthrie Theater, across the Stone Arch Bridge to Father Hennepin Park, across the Merriam St. bridge onto Nicollet Island, across the trail bridge to Boom Island Park, over the Plymouth Ave. bridge back to West River Parkway, back into downtown Minneapolis, across the Hennepin Ave. bridge, down Main St. to the 3rd Ave. bridge, back towards downtown, past the Guthrie again.

OK, I wasn’t finished yet at this point, but I was getting really hot, and I was out of water, so I managed to find a drinking fountain in an open building on the West Bank U of M campus to refill my bottle.

Then I headed across the upper deck of the Washington Ave. bridge, snaked around the Weisman Art Museum, behind Coffman Union, down the steps to the East River Flats, and reconnected with the trail. One last bridge to cross, Franklin Ave. I hit the 14-mile mark just south of Lake St. It was so hot and I was completely exhausted, but I somehow managed to plod 3/4 mile back to my house, where I made quick work of two 20 oz. bottles of Powerade.

It’s a fun route! Just don’t do it on a hot day in July.

The next weekend I was visiting my parents in Austin, Minnesota. I didn’t think it would be possible to plot a 16-mile running course in a town that’s only 5 miles end-to-end, but I discovered Austin actually has a great connected series of paved trails that took care of miles 3 through 10 for me. After that, I just meandered around familiar neighborhoods, passing by a my old schools and the houses where my grandparents had lived.

The Perfect 20-Mile Loop

A couple weeks later I put together a great 18-mile route in Minneapolis, but it turns out that with a few modifications it makes an even better 20-mile route that closely follows miles 4.5 through 18.5 of the Twin Cities Marathon course. It’s a perfect 20-mile loop that you can start from anywhere along the route and end up right back where you started. I highly recommend this as the 20-miler for anyone who’s training for the Twin Cities Marathon, so I want to look at it in detail. I also took a lot of pictures along the way and posted them in real time on Instagram.

I started, once again, on West River Parkway at 36th St. But this worked out perfectly to get back to my starting point at 20 miles, so you can start anywhere.

I ran up West River Parkway to the Midtown Greenway. Took that west across the city to the turnoff by Lake of the Isles. Looped around to the path connecting to Lake Calhoun (Bde Maka Ska), then up onto the trail around the lake in a counterclockwise direction. This is where you connect up with the Twin Cities Marathon route at about mile 4.5 (though in this loop, from my starting point, I was about 6.5 miles into my run).

Take the west side of Calhoun to William Berry Parkway, over to Lake Harriet, where you may or may not encounter live music at the bandshell.

(I’m cheating a bit… this video is from the 18-mile run I had done two weeks earlier.)

Head to the left on the trail at Lake Harriet (east side of the lake), and follow it until you get to where the trail for Minnehaha Parkway branches off to the left. This is around mile 7.5 in the marathon. Follow the trail to Lake Nokomis. It gets a bit hairy in here… the trail crosses over Minnehaha Creek several times and winds through some narrow wooded areas. Don’t lose your way!

I deviated a bit from the marathon route here. It turns on Cedar Ave. and includes the small part of Lake Nokomis that’s on the west side of the Cedar Ave. bridge. I stayed on the trail and connected up with Lake Nokomis at a different spot, went past the main beach, and took the Cedar Ave. bridge across. Likewise, where the marathon route takes Minnehaha Parkway as a straight shot to Minnehaha Falls, I stayed on the winding creek trail a block or so to the north, which adds a bit of distance but is more interesting and avoids stoplights. Once you get to the falls, you’re back on the marathon route, and you follow up West River Parkway back to the starting point. 20 miles done!

Don’t Do a Second 20-Miler

(Cue ominous music.) I really should have only done one 20-miler. But when I originally drew up my training plan for the year, I concocted a hybrid of Hal Higdon’s “beginner” and “intermediate” plans, along with a few of my own adjustments. This included doing two 20-mile runs instead of just one. When I revised my plan to cut back to 3 days a week, I also should have cut out that second 20-miler, but I didn’t.

I also didn’t want to repeat my same 20-mile route again. I wanted to explore something new. So I came up with this crazy route.

Yes, I really did this. Yes, it starts by going past Minnehaha Falls, over to and around Lake Nokomis, back past Minnehaha Falls, over the Ford Bridge into St. Paul, down at Hidden Falls, straight through Crosby Farm Park, then back up (and I do mean up) Shepard Road to Mississippi River Blvd on the St. Paul side all the way to Marshall Ave. and across the bridge to just south of Lake St. And then just like after my 14-miler, I had a 3/4 mile walk home. It was exhausting, there are parts of the trail that are disconcertingly isolated, and to top it all off I nearly threw up from the gels I forced myself to consume along the way.

Still, it’s a beautiful and amazing route. You should really bike it sometime.

After this 20-miler I was really sore. Some things just didn’t feel right. I had three weeks to go until the marathon, and my legs continued to feel a bit worn out right up to race day. As a first-time marathoner, especially only running 3 times a week, I can now say, definitively, under these circumstances, don’t do a second 20-miler.

Sidelined

All year I had been training for the marathon. But not just me. My wife had too. But just as I’ve been plagued with IT band issues, she’s had a nagging problem with her right kneecap that has occasionally sidelined her from running. Her situation is more serious than mine, and has twice required trips to the doctor and multiple physical therapy sessions. Unfortunately, she had a subluxation on August 4 — not during a run, but hastily getting up out of a chair to get a bowl of potato chips! — and had to stop running. She’s getting back into it now, but her marathon dreams, for 2017 at least, were over. From here on, I was running for both of us.

Marathon Weekend

At last, the moment I’d been waiting for and working for all year had arrived! It was Friday, September 29. The expo was open. Marathon Weekend was here! My excitement had been building for several days, especially since I had just joined (very late to the party) a closed Facebook group called “Medtronic Twin Cities Marathon First-Time Marathoners, Class of 2017” and started sharing stories and collective anticipation with my fellow first-timers.

I Can’t Wait

In the preceding few days I had been studying the schedule for the expo. I’m not big on expos. I’ll wander around the booths, but I’m not really that interested in talking to people or listening to seminars. But I had seen that on Saturday afternoon there was going to be a seminar for us first-timers, including a group photo. There also were supposed to be orange wristbands for first-timers that I’d be able to pick up at one of the booths. Gotta have that!

So, the smart thing to do would have been to wait until Saturday afternoon to go to the expo, to be part of the first-timer experience. But I was so fixated on the marathon by Friday morning that I just couldn’t wait, so I went to the expo an hour after it opened. I headed straight for packet pickup, which, just like the dairy section in a grocery store, was all the way at the back of the convention hall.

I wandered around a bit and, for a moment, briefly reconsidered everything…

I never did find the first-timers’ bracelets (although I got my hands on a “fake” light orange bracelet from Orthology), but at least I had my packet, with my race bib and socks.

Socks?! Last year they gave out awesome stocking caps! (Toques, for all of the Winnipegians who come down for the race.) I wore mine almost constantly last winter, even though I felt a bit sheepish about advertising the Twin Cities Marathon when I had only run the 10 Mile. (But I knew I was signed up for the big race this year.)

About halfway back to my car, I realized I had forgotten the all-important “Ultra Summit Challenge” bib, so I went back inside to track it down. Then it was off to enjoy the final Twins game of my 20-game season ticket package with my daughter. At least they gave out stocking caps!

Saturday

I woke up on Saturday morning, envious of the runners in the 5K and 10K and the perfect weather they were getting. Early forecasts for Sunday had looked promising, but as the day drew closer, the forecast got worse and worse. Then it got a little better. It looked like there was no way we would avoid rain on Sunday, but there was only a 20% chance for most of the time of the marathon, with showers looking more likely in the early afternoon, just around the time I expected to finish.

I kept thinking about that first-timers’ bracelet. I really wanted it! My son had a music rehearsal in Nordeast so I took the opportunity to head over to St. Paul after I dropped him off, and dragged my wife and daughter along. My daughter is always keen on going anywhere. My wife had her reservations about going to the expo, given her frustration over having to skip the marathon, but she decided she was up for it.

Then I remembered that even when half of the streets aren’t closed for a race, driving in downtown St. Paul is a nightmare. And half of the streets were closed because the Saturday events were still going on. After sitting in traffic for a half hour and following a meandering detour that only got us back to where we had started, I gave up and we left. There was always one last chance to get the bracelet on Sunday morning, as I knew someone from the Facebook group was going to be handing them out in Corral 3 before the race started.

So, we headed back home and I decided to rest and distract myself with a little Metroid: Samus Returns. It was a beautiful afternoon to sit on the deck. September and early October offer some of my favorite weather in Minnesota.

That evening I carbed up. That’s what you’re supposed to do, right? And wine in an absurdly oversized glass is important too?

I organized all of my gear. Three packs of Clif Bloks — after that second 20-miler, I swore off gels, but the gummies I can handle. A light pre-race breakfast. My new Nathan 18 oz. water bottle with the annoying cap that never screws on quite right but with a big enough zipper pouch for three packs of Clif Bloks. My new socks (!) which I wouldn’t have chosen to wear for the first time in a race, but they’re Fitsok, so I knew they’d be great. Of course my race bib(s). And an emergency Mylar blanket, small enough to fit in the pocket of my shorts, to help shelter me from rain and cold pre-race, if necessary.

(Cue ominous music.)

Around 9:00 I had some work to do. I have a client who had some site updates that were required to go live at precisely midnight on October 1, and were of a nature that I couldn’t easily write a script to automate the process. No way was I going to stay up until midnight the night before a race! So I worked out an arrangement with them that I would make the changes after 9 PM on Saturday night. I took care of that and went to bed. Surprisingly, I actually slept.

Race Day!

I had set alarms on both my Apple Watch (for 5:15 AM) and my iPhone (for 5:30 AM), but I woke up on my own at 5:09.

I got up, went downstairs to the kitchen and started a pot of coffee. Walked into the bathroom and that’s when I heard it.

Rain.

Shit.

I knew there was a good chance of rain overnight, but it was supposed to stop by morning and not be raining at race time. Let’s hope.

So, there were two main things I was worried about on the morning of the race. One was rain. The other was. Well… that other thing I just said. Anyone who does long distance running understands that, at a certain point, you have to drop the pretense of polite society and just be honest about the fact that the human body is a living organism that has certain functions. That pre-run bowel movement is an important ritual.

(Non-runners can just skip this paragraph.) I know my body well enough after 43 years to know there’s a pattern. I typically have two BMs in the morning. One right after I get up, and another 15-30 minutes later after I’ve had some caffeine. This is always a potential problem on race mornings, because I also know that, for whatever reason, that first one usually doesn’t want to come before about 6:30 AM. Here I was, an hour earlier, seriously worrying… will I poop? Fortunately, my intestines were 100% cooperative on this particular day, and that, at least, was one thing I didn’t need to worry about.

I tend to be giddy on race mornings. I amuse my wife with my flustered anxiousness. But then there’s a state of even deeper anxiousness where that doesn’t happen. I’m just… still. She noticed it before I did. This was a really big deal. I was going to run a marathon. This was actually happening.

For most races, transportation is not a huge deal. You usually end near where you started, so if you’re driving you just try to park somewhere near the start line. (I make this sound simple but it is always the thing that I am most nervous about with races. Just ask my wife. It is amusing to her.) For the Twin Cities Marathon (and the TC 10 Mile), it’s different. You start in downtown Minneapolis and end in downtown St. Paul. The most direct route from the finish back to the start is, not surprisingly, about 10 miles.

We decided that for this race, my wife (and daughter, remember she’s always up for going along, even at 6:30 AM) would drop me off near the start. I would take the Green Line back to Minneapolis, then transfer to the Blue Line, and they’d pick me up at the 38th St. station.

The rain had stopped, but it started sprinkling again as we drove down Lake St. Noooo!!! Fortunately it didn’t amount to much. We got downtown and, when I saw the traffic on Washington Ave., decided they should just let me off at 11th Ave. and turn around.

That meant a fair bit of a walk for me to the start line, but whatever, it’s not like I’m running a marathon today or anything. Oh, wait. I made my way through light drizzle to US Bank Stadium, saw the TC 10 Mile runners lining up for their 7 AM start, and sought out the sweats check UPS trucks. I had never done sweats check before, but with the rain, I knew I’d need dry clothes to change into after the race. I spotted 3 trucks, each with a sign indicating the bib numbers they were taking bags for. I saw 1000s, 2000s, 3000s. But my bib number was 8089! I asked a volunteer where the trucks for the higher bib numbers were. He looked at my number and said, “Oh, yeah… you’ll be two blocks over.” What??? I had already scoped out the portapotties near these trucks and had planned to line up at one after dropping off my bag. (It’s hard enough to wrangle my water bottle in a portapotty; no way was I bringing my bag into one too.) So, even more walking!

Fortunately, when I got to the trucks for Corral 3, I saw we had our very own row of portapotties, lined up in front of the power station across 6th St. from US Bank Stadium. The drizzle had stopped, the wind was low, and the sun was rising. This was going to be a great day!

Since the weather was looking more and more promising, I decided I did not need the Mylar blanket I had jammed in the back pocket of my shorts, so I checked it with my bag.

(Dramatic swell of ominous music.)

Look, a rainbow!

I was feeling great! This was going to be a perfect day after all. After I snapped the rainbow photo, I struck up a conversation with a purple-haired runner named Colleen. It was her first marathon too. We talked for about 5 minutes until suddenly, a downpour! Noooo!!! My Mylar blanket! Colleen was wearing a poncho but I was a moron, so I wished her luck and dashed off for cover under an elevated walkway by the stadium. I was cold and soaked, but at least I wasn’t alone!

I had a couple of brief conversations with my fellow shelter-seekers, but I was mainly staring silently at the puddles in the street, watching for the first sign of the rain stopping. It was a half hour to the start, and I needed one more portapotty visit before then! Fortunately the skies cooperated. The rain stopped, I emptied my bladder, and I moved towards the start corral.

I never did find the person who was handing out orange bracelets, but as the corral filled up, I decided it just wasn’t going to happen, and it was more important to just get myself prepared. I had been tense with nerves and shivering while I waited for the rain to pass and my quads were tight and sore… and the race hadn’t even started! Time to loosen up and clear my head.

The Start Line

The announcer counted down the start of the race. Corral 1 was off! Corral 2 moved towards the start line and Corral 3 inched forward. Corral 2 started, and my group moved up. The sides of the road were strewn with discarded sweatshirts. I could feel the collective intensity of the group. We hadn’t even started yet and I could already tell this was a completely different experience than any race I had run in before.

10… 9… 8… 7… 6…

I looked at the sky and took a deep breath. Choked back some tears. I’m at the start line of a marathon. This is real.

5… 4… 3…

I quickly cued up the Workout app on my Apple Watch and got ready to hit “Start” just as my feet crossed the timing mat.

2… 1…

Miles 1–2: Downtown Minneapolis

The course begins on 6th St., heading northwest through downtown Minneapolis towards Hennepin Ave. The Hennepin County Government Center spans across the street a couple blocks in, creating a dramatic tunnel for the marathoners to begin the race. Then it turns left onto Hennepin and heads towards the Basilica. I know this route well, but I’m usually going the other way! Since 2012 I’ve run the Torchlight 5K every July.

As I was training for this marathon, I realized I would not be prepared to run non-stop. I had started my long runs with an 18:2 cycle (18 minutes running, 2 minutes walking). Later I realized that wasn’t quite working, so I shifted to 13:2. But I knew in the race I’d want to shorten the walks, so I decided on 9:1. I had run that cycle in my last training run before the marathon, a 5-miler on Thursday, and it seemed to work well, so that was my plan here. Run 9 minutes, walk 1 minute. Eat a Clif Blok on 2 out of each 3 stops.

I couldn’t believe how fast the first 9 minutes went by. I was on Hennepin Ave. around 10th St. when I hit my first break. In other races I’ve always questioned (in my head) people I already saw walking in the first mile. But here, I totally understood. And I had no reservations. I had a plan. This was working. I swallowed the gummy, took a swig of water, checked my watch, and started up again.

I was a bit concerned about my pace. I figured adrenaline would push me faster than I wanted to go. I was shooting for an 11:00/mile pace for the whole race, so I wanted to keep my running pace at about 10:00/mile. That’s tough, because my natural tendency in a long training run is to settle into about a 9:30 pace. In races, I’m usually under 9:00. But I knew I couldn’t sustain that for 26.2 miles. I checked my watch, and I was running at about 9:40/mile. Faster than I wanted, but not too much.

I was feeling great, no, ecstatic, and just enjoying the moment. I even stopped by the Minneapolis Sculpture Garden to snap a quick picture of the blue chicken!

I knew to expect to hear some tuba near the Walker, and I wasn’t disappointed! Even though I don’t like Imagine Dragons, I enjoyed the rendition of “Radioactive” and it powered me towards the hill… except oops, 19 minutes in, time for another walk break! Perfect timing.

I rounded the corner at the Mile 2 mark, pumped up by the crowd and feeling confident. Whatever happens, this is awesome!

The crowd in the Kenwood neighborhood was great. So much energy and support. Then I noticed a few runners splitting off to the left into a grassy area. ??? Then I realized we were at the first set of portapotties on the course. Yes, please! My bladder had been nudging me since about a block into the race! I hurried over to the portapotties, about 100 feet off the course, and quipped to another runner how unfair it was of them to make us run so much extra just to use the bathroom!

Miles 3–4: Kenwood-Isles

Though I’m familiar with the area, having lived near Lake of the Isles in my late 20s, I had trouble recognizing exactly where I was. The combination of slightly blurry vision (I can’t wear my glasses when I run), dizzy energy, and thick crowds of spectators changed the whole landscape.

Rounding a bend in the road on Lake of the Isles, I thought for a moment about how one time, many years earlier, my wife and I had seen Bobby McFerrin walking on the path at that very spot. (At the time he was in town conducting the St. Paul Chamber Orchestra.)

As the route passed under a railroad bridge (now converted to a greenway) on Dean Parkway, I noticed a banner that read “Warning! Cemetery Ahead! Look Alive!”

5K — 33:16 — 10:42/mi

Miles 5–6: Lake Calhoun (Bde Maka Ska)

I had never run in the Kenwood-Isles neighborhood before. When I lived there in the late ’90s I was at peak laziness. But I had walked around Lake of the Isles plenty of times. Now, as I crossed over to Lake Calhoun/Bde Maka Ska, I was getting back into familiar territory. I had run this exact route twice this summer, on my 18-mile and (first) 20-mile training runs. At this point the whole thing was starting to become a blur. And I kept up my 9:1 cycle, taking a moment to snap a photo of my fellow runners during a walk break.

As I approached 6 miles, I thought about how many people had said to me, “a marathon’s just a 10K with a 20-mile warmup.” Ha ha. But I realized you could reverse it. I had never run more than 20 miles, so the marathon was still intimidating. I’d never run a race without having actually run its full distance in training. So once I got to 6.2 miles, I thought, OK, this is just a 20-mile run with a 10K warmup. Warmup’s over.

10K — 1:05:05 — 10:14/mi

Miles 7–8: Lake Harriet

William Berry Parkway is a short, surprisingly steep hill connecting Calhoun and Harriet. But while I didn’t enjoy the hill, I was more disturbed by how the course abruptly got much narrower. A volunteer was stationed on the curb of what the Australian commentators on the Tour de France would refer to as “road furniture.” A runner next to me was thankful he was there.

I love running at Lake Harriet. It doesn’t happen that often, because from where I live it’s about a 7.5-mile run just to get to it. But I managed to run it several times this year as I was training. I saw a few runners stop here at portapotties that I happen to know were not just brought out for the race! This was the first “I know this place” moment I had since we passed the Basilica downtown, but I knew a lot more were to come. This is the fun of running a marathon on a route you know. But (cue ominous music) it can also be a bad thing. I was about halfway to discovering that.

As we ran on the potholed asphalt of Lake Harriet Parkway, dodging puddles (I was determined not to get my shoes soaked, at least not this early into the race), I thought about how the last time I had run a road race at Lake Harriet was TCM’s Valentine’s Day 5K, or maybe the “Irish for a Day” 5K before they rechristened it the “Hot Dash” and moved it downtown. Whatever the case, I had been dodging ice, not puddles.

Miles 9–11: Minnehaha Parkway

The course turns onto Minnehaha Parkway, and this was the part I was most dreading before the race. I had read warnings that the road is much hillier than the trails here, and that it can be “lonely” because there aren’t as many spectators. I found both claims to be overblown. The road was fine and the spectators were plentiful. They even had a huge balloon arch that looked to me like Skittles. (Hmm… I must have been getting hungry. Time for another Clif Blok.)

I would swear a sign near this spot called it the “Tarrytown Turn” but it must have said “Tangletown Turn”. It was also around here that I saw T-Rex for the first time.

There’s a stretch of the parkway here that my wife and I both agree is very confusing, at least on the trail. After you pass 12th Ave. it feels like you should be getting close to Cedar, but Bloomington Ave. is there first. I reflected on that as I ran it in the marathon and just thought, “whatever… I still have 16 miles to go; a quarter mile here or there seems like nothing.”

As we got to the Mile 11 marker and the right turn onto Cedar Ave., a huge crowd of spectators was gathered, and one in particular stood out. He was holding up a large picture of one of the runners, attached to the end of a telescoping pole that was at least 20 feet long. I would see him twice again later on the course.

Miles 12–13: Lake Nokomis

Looking back, this is where things first started to get off track for me, although I didn’t know it at the time. I was starting to feel tired, but still in high spirits. High enough that I did something really stupid at the water stop right before the Caribou Tunnel. I had grabbed a cup of Powerade, walked a bit to drink it, and when I finished, started running again. I went to the side to toss it into a trash bin, and realized too late that I was heading for a tied up trash bag on the ground. Rather than abruptly veer out of the way, I thought it would be “clever” and “amusing” to the volunteer standing there if I hurdled over it instead. He laughed. Probably at what a fool I was. It was fine, but the extra impact of landing and the change in motion was just enough that I spent the next mile thinking I had just made a really stupid mistake.

It also didn’t help that I was at my absolute least favorite part of any race course: the east side of Lake Nokomis. I’m not sure what it is; I love the lake, and running the trail is no problem, but there’s just something about running on the road in that section that is miserable. It veers far from the lake and is totally exposed to the sun… even when it’s overcast.

I hit the halfway point feeling fatigued and a bit disillusioned. But my problems were just beginning.

13.1M — 2:16:37 — 10:23/mi

Miles 14–15: Minnehaha Parkway (Again)

I had been really excited for this section. I was back in my old neighborhood. This is where I first discovered the joy of the Twin Cities Marathon as a spectator. I never wanted to miss coming out to cheer on the runners, and this was right where I would do it.

I know there’s a hill on Minnehaha Parkway right where the marathon course leaves Lake Nokomis. I’ve biked it plenty of times. But the footpath is not near the road, and has a more gentle slope, so I was kind of stunned by how steep the hill on the road felt to run up.

As I passed the Mile 14 marker and Mel-O-Glaze bakery, I took a deep whiff of doughnuts and felt the crowd closing in on me. The road narrows once again, and the runners were densely packed, surrounded by a large crowd spilling off the curb. And that’s when I began to notice it.

Oh, no.

My IT band.

Not now!

I pushed through towards the roundabout at Minnehaha Falls and the Mile 15 marker. When I got there, I had to stop. It was not part of my 9:1 cycle. It was the pain. My IT band is flaring up and I’m only 15 miles in! I have 11 miles to go! How can I do this???

I texted my wife.

After I sent it, I just thought to myself, “I hope she realizes I’m serious.”

Forget the 9:1 cycle. Forget the 11:00/mi pace. Forget the free Brooks shoes at mile 22. Forget the finish line? Maybe.

Miles 16–17: West River Parkway

My house is a quarter mile from the Mile 17 marker. My wife and daughter were planning to be there to see me run by. Now I was hoping they would also be there with some ibuprofen to take the edge off this IT band pain so I could try to keep going.

Over and over, I would try to run, manage a minute or two, and have to stop to walk because of the intense pain on the outside of my left knee. For a while I was wondering if I’d even get to mile 17!

I was in my own neighborhood by now, running on the road next to the path I’ve run hundreds of times. But I was barely even paying attention. All I could think about was 1) keep moving, 2) avoid pain, 3) look for Mile 17.

As I got near 36th St., I thought about how my parents had been planning to come up and see me run, but for various logistical reasons had decided it would be better not to. Ever since mile 8 I had a sneaking suspicion that maybe they had just said that to me, but were secretly planning to surprise me. If so, they’d be at 36th St., about 1/4 mile before the Mile 17 marker. But when I got there, they weren’t there. I wasn’t disappointed; I was almost relieved, so they wouldn’t have to see me in my present state!

But I still had to round the bend to where my wife and daughter (and, hopefully, my ibuprofen!) would be waiting for me. As I saw the Clif Shot tables at Mile 17 coming into view, I spotted my daughter running down the hill and calling out, “There he is!” I stopped as I saw my wife pulling a plastic bag with two ibuprofen tablets out of her pocket. THANK YOU!

Not only were they there, but our son (who’s just the opposite of our daughter when it comes to going places) was there too, with our dog, tail wagging furiously.

It was great to see them and get a boost to keep going just a little bit farther. I still didn’t think I’d make it to the end, but I had to at least get to a drop-out zone. The only problem was, I had only ever seen one drop-out zone, at mile 9, and I had no idea how far away the next one was.

So, for now, just keep going.

Mile 18: I Can (Almost) See My House from Here!

At this point, I was managing to run for a minute or two at a time. The finish line seemed a long way off. And, worst of all, I was running along the Mississippi River, and I knew that directly across the river, there were other marathoners who were three miles ahead of me on the course. I could hear an announcer, and music, and cheers. And I was thinking about how, at my current pace, it was going to take me about 45 minutes just to get back to more or less where I was right now!

The Lake St./Marshall Ave. bridge is, effectively, a “shortcut”. Not one I ever would take, of course, since aside from defeating the purpose of running a marathon, my time wouldn’t count, because I’d have missed at least one timing mat. But that didn’t stop me from joking about it with a spectator. “Don’t tell anyone if I just take a little shortcut across this bridge!”

Instead, I went under it, and onward towards Franklin Ave.

30K — 3:25:42 — 12:28/mi

Miles 19–20: Franklin Ave. Bridge and “The Wall”

Approaching the Midtown Greenway bridge, I texted my wife again:

The temptation was great. I could stop. But I kept remembering that she said “you’ll be disappointed if you stop.” Then I remembered how disappointed she was to not even be able to start the race. I needed to keep going for her. Then I remembered that her whole motivation to run the marathon was to honor her mom, who had died 8 years and 1 day earlier from pancreatic cancer. I was running for both of them. I might struggle, I might be in pain, I might take until the time limit, but I was going to finish.

I spotted the drop-out zone just as I was getting onto the Franklin Ave. bridge. I didn’t hesitate for a second.

Just at that moment, I noticed the first drops of rain. As I turned off of the Franklin Ave. bridge and headed south, towards the dreaded ALARC Wall looming at Mile 20, I realized this was far from over. The rain grew steadier, and heavier. Wind picked up. The spectators thinned out, but those who remained were as tenacious as the runners around me. And had a lot more energy.

Then, just past the railroad bridge (which I always hope will one day become an extension of the Midtown Greenway, which ends just before it on the Minneapolis side), there it was.

This may have been my first marathon, but it was my fourth time seeing the ALARC Wall. I’ve run the TC 10 Mile for the past 3 years, and from Franklin Ave. to the finish they follow the same route. But, of course, for the marathoners this marks Mile 20. For the 10 Mile, you’re only 3.8 in.

There’s a lot of talk about “the wall”. Roughly 20 miles seems to be the upper limit before your body spends its reserves and it begins to send serious signals that you MUST. STOP. NOW. I didn’t feel “the wall” at all here, because I had encountered a different kind of wall 5 miles earlier.

By this point, I was walking more than I was running. Fatigue was not even really a consideration. I wasn’t hot, or tired, or thirsty, and I definitely wasn’t hungry for gummies. I was just determined. Determined to run as much as I could, and walk whenever I couldn’t run, but no matter what, to just keep moving forward. So I was happy to see the wall, because it meant I was that much closer to the finish.

But I was also doing the math in my head. I was 3 hours and 45 minutes in. Normally I run a 10K, the distance from the ALARC Wall to the finish line, in under an hour. This was going to take me at least an hour and a half, I guessed. Kind of miserable, especially in the rain, but I’d still finish well under the 6-hour time limit. OK, maybe not well under. But under.

Plus, I had one more insane goal ahead of me: the Brooks Infinite Energy Mile.

Miles 21–22: Finite Energy (Or: No Shoes for You!)

A few days before the marathon, I got an exciting promotional email. Brooks was sponsoring the “Infinite Energy Mile”, and would be awarding a free pair of their newest running shoes to all marathon finishers who ran the 22nd mile (between the Mile 21 and Mile 22 markers) faster than their average pace for the first 21 miles. I loved that idea and had planned from the beginning that that would be my primary goal for this marathon.

I saw the Mile 21 marker coming up ahead of me. I made sure not to waste any energy running now, so I could muster whatever was left in my hobbled left leg to run through all of mile 22. I took a deep breath as I stepped on the timing mat, and broke into a stride.

Now, as much as Brooks wants to motivate people, they don’t necessarily want to give out a ton of free shoes. So they knew what they were doing when they picked this particular mile for the challenge. Yes, as their marketing spin on it went, this is the part of the race where you most need a motivational boost. But it’s also home to the biggest hill on the entire course.

It’s a hill I know well. I’ve run it many times. I usually prefer to go down it. I once witnessed a biker going down it and crash, hard, flipping over his handlebars, smashing his helmet and knocking himself unconscious. I stupidly didn’t have my phone with me, for once, and I deeply regretted it. I waited with him as a crowd grew, and when the ambulance arrived, I told the paramedics what I had seen.

In other words, this is a hill that already has some emotional baggage for me.

And it destroyed me in the marathon.

My delusion of running the entire 22nd mile was squashed within about 2 seconds of hitting the hill. My IT band screamed out in pain and I gave up the dream of free shoes in a heartbeat. Time for a nice long uphill walk.

When I got to the top of the hill, a spectator was handing out orange slices. I had seen many before along the way and never took any because I already had a plan. 9:1. Clif Bloks. I got this. But by this point in the race, I was just taking what it gave me. Including spectators’ orange slices.

I immediately regretted it. A string of pulp wedged itself between my bottom front teeth, and I furiously picked at it to get it out. Meanwhile, the taste of a mediocre orange gave way to another taste… was it… onion? What the hell, man?! I’m not sure if the knife or the cutting board hadn’t been washed, or if my brain was just playing tricks on me by this point, but either way, it was the second most unpleasant experience of the marathon for me.

21M — 3:58:09 — 13:45

Miles 23–25: Summit Avenue

I’ve run part or all of Summit Ave. in several races, including the TC 5K and 10K, the TC 10 Mile, the Monster Dash Half Marathon and, now, the Twin Cities Marathon. It’s kind of funny to look at the marathon route and see how we take this long, meandering course around Minneapolis, 20 miles in total, and then we make a 6-mile beeline across St. Paul to the capitol. It would almost seem like an insult to St. Paul, but then there are few places in the metro area more picturesque for a race route than Summit Ave.

It’s also exhausting. There’s a long gradual hill until you get to Snelling, and then a few more shorter, steeper hills come at you in the home stretch. But it’s not really exhausting when you’re walking most of it!

As the marathon moved well into its fifth hour, and the rain continued, I was amazed at how many spectators were still out offering us their energy and encouragement. I saw yet another sousaphone player and, after pondering for a few seconds whether to yell “Sousaphone!” or “Tuba!” I decided on “Tuba!” to save myself the energy of an extra syllable, and immediately regretted it. I’m a musician after all, and I damn well know the difference between a tuba and a sousaphone. But now this guy is thinking I’m some musically-ignorant schmuck!

It was probably the only negative thought I had over those last 4 miles.

I entered a new state on Summit Ave. Yes, I was in pain that was forcing me to only run in 30-second to 1-minute bursts, with 2 to 5 minutes of walking in between. Yes, I had stepped straight into a puddle on one of those short bursts of running and soaked my right shoe through.

But all I felt was bliss. I am in the home stretch of a marathon. I am, absolutely, going to finish. I overcame my self-doubt. I am here, in this moment, moving forward, one step at a time.

It was honestly the most incredible feeling I’ve ever had in my life.

And I saw T-Rex again! Corner of Summit and Lexington.

I did also have to stop and snap one more picture… probably the most surprising thing I saw all day: heavy traffic on Ayd Mill Rd.! I guess that’s what shutting down a major artery on a busy weekend will do.

24M — 4:41:54 — 14:35/mi

The Finish Line

As I passed the mile 25 marker and realized this was truly, actually, for real happening, I started to tear up and got a lump in my throat. But I choked it back. Nope. Not yet. Gotta finish first.

I rounded the turn, ran (yes, ran!) through the Medtronic Tunnel, past the Cathedral, and down the hill. The finish line was in sight! I heard a runner, at least in his late 60s, an experienced marathoner, chatting with another runner. “Is this your first marathon?” “No, but my first Twin Cities. The others were in Houston.” After a few more sentences, Houston kicked up his pace and left us behind. As I ran past the man in his 60s, I called out, “This is my first marathon! And I’ve been dealing with an IT band since mile 15!” He replied, “Way to go! You’re going to finish this thing!”

It was a thrilling moment. And then of course my IT band reminded me it was there, and I had to stop to walk again.

But as I came down the hill onto the final bridge just before the finish, I saw a photographer with his camera aimed on me. No way was I going to be captured walking at this point, so I broke into the best stride I could muster and called out to him, “Hey, I’m running! Quick, take my picture!”

I didn’t stop until the finish line.

Finish — 5:11:12 — 13:18/mi — 11:53/mi overall

Post-race

As soon as I was across the finish line, the tears welled up again. I was ready to let it out finally, but first I just had to high-five the volunteer who was standing there, looking in my direction with her hand up. Oops! No, wait, she’s waiting to high-five the person behind me.

And… the moment was gone.

But then another volunteer spotted me holding my camera up in the air trying to capture a nice picture of the finish line to text back to my wife so she’d see that I made it, and he said, “No, come on… let me take your picture!” So I shakily handed him my phone and stepped back, trying to stand up straight and put on the most energetic smile I could muster. I think it turned out OK!

Post-race areas are always chaotic. You accept your finisher medal, take a Mylar blanket, try to grab a bottle of water and armfuls of food, and wrangle it all to the t-shirt area and out into the waiting crowd.

It’s way worse in the rain.

Somehow, in 42 races over 6 years, I have never once had rain. I didn’t even really mind the rain so much during the race, but I had little patience for it after the race. I got my sweats bag and headed to the changing tent, took off my shoes and quickly discovered that the ground in the tent was not just wet but completely saturated, and at that moment was ready to be at home soaking in a hot epsom salt bath. But that was a couple of hours away.

With nowhere dry to sit and rest, the last thing I wanted to do was hang around and drink beer, so I made my way down the hill in front of the Capitol to the Green Line station and boarded the train to downtown Minneapolis.

I sat in a daze.

When the train finally arrived at US Bank Stadium, it was 2:45 PM. I gathered that the Vikings must not be doing well, because the platform was packed with people wearing purple. I crossed over to the other side and waited for the Blue Line to take me home. I struck up a conversation with a young runner (I could tell by the Twin Cities Marathon Mylar blanket she was wearing) and her parents. She had grown up in Morris but was now living in Indiana; her parents had moved to Hutchinson.

I thought about people who had traveled a great distance to participate in this race, and how happy I was to live right here, in the heart of it all. In a matter of minutes I’d be back home, in that bathtub, a few blocks from Mile 17.

P.S. I did finally cry. Three days later.

It’s REALLY SIMPLE to add horizontal scroll to a table in CSS

Noted for future reference (by me). Tables aren’t that common on websites anymore, but sometimes they’re legitimately needed (you know, for tabular information).

One thing that I always struggle with is adding horizontal scroll to tables on responsive phone layouts. I know it involves overflow, but for some reason I always make the solution way more complicated than it needs to be.

You don’t need a container element. All you need to do is add these two CSS properties to your tables:

table {
  display: block;
  overflow-x: auto;
}

The StackOverflow post that illuminated the answer also has you add white-space: nowrap; but that can be problematic if your cells have enough text that they need to wrap. I found a better solution was to set a minimum width on cells:

th, td {
  min-width: 120px;
}

You may want to experiment on any given site to see what min-width works best.

The Obligatory WordPress “Gutenberg” Editor Hot Take

Of course you knew I'd have to make a Steve Guttenberg joke to start this off. But maybe there's something to it. (Side note: I just realized his last name has two "t"s, unlike Johannes, the inventor of movable type.)

I've been a professional web developer since before the term existed (1996, to be specific). I've been using WordPress for my blog since 2006, for occasional work projects since 2008, and as my primary web development platform since 2014. Working solo and being an introvert disinclined to participate in conferences, my contribution to the WordPress community has come mainly in the form of submitting a handful of plugins to the Plugin Directory. And, of course, writing a ton of blog posts here on various obscure problems I've encountered along the way.

I say all of this solely to establish whatever credibility I may or may not need in offering my half-baked assessment of what is, at the time of this writing, a half-baked WordPress plugin… but one that is destined — in short order, and for reasons that are up for much debate — to become the fundamental user experience of writing in WordPress.

If you're unfamiliar with Gutenberg, here's the plugin project in GitHub, and here's a recent blog post by Automattic founder and WordPress development lead Matt Mullenweg defending the rationale for the project, and here are a bunch of other reviews of the project, both pro and con, that I've read over the past three days.

So far documentation is (understandably) scarce, but I've poked around a bit to learn what I can and see how I might be able to customize it to meet my needs as a web developer building custom themes for clients.

I have a few things about Gutenberg that I'd like to explore with this post:

  1. My initial reaction to the Gutenberg interface itself
  2. Thoughts on how this will affect the work I do
  3. Opinions and speculation on the motivation behind the project

Getting to know Gutenberg

Some of the reviews I linked to above are critical of Gutenberg, in ways I don't think are entirely fair. Mainly because, yes, this is beta software. In fact, at this point I'd say even calling it beta is generous. This feels more like alpha testing, given how much of the development is still incomplete, and how much things are changing. I just downloaded version 0.9 yesterday and version 1.0 is already out, with a number of significant changes, including some that broke work I was doing on custom CSS styling for Gutenberg output just this morning.

The point is, there are plenty of things to criticize about how Gutenberg works at this point. But it's important to consider whether or not those are things that are intended to be the way they are, or if they're just incomplete features or unaddressed bugs. Here are a few of my favorite examples:

First, a screenshot from the special "Demo" page included with the plugin to help users familiarize themselves with how Gutenberg works.

Um… OK. Which "really wide" button would that be now?

One of the demo blocks is an image, and its caption suggests you try out a feature that — as far as I can tell — doesn't yet exist. This should be your first sign that criticism of the tool may be, at this point, a bit premature.

Gutenberg is full of fun surprises, like things randomly breaking with no real explanation. Welcome to beta software!

Oh this poor, suffering block. Also “previewed” is an understatement. When this error appears, it also means you can’t edit the block in question. Hit Refresh and hope for the best!

But I think the real coup de grâce is the lack of polish on some fringe elements, such as how the text block you're editing might randomly bounce around the page if there's a floated image preceding it, as the editing tools surrounding the block you're typing in appear and disappear. Or this… the beloved triple scrollbar!

Which one does what? Just scroll and see!

I've also discovered a fun bug that randomly inserts question marks when you switch italics on/off with keyboard shortcuts. But you don't see them in Gutenberg, only in Preview mode. And then if you try to delete them in Gutenberg, it just starts randomly eating your text. That's forced me to go into raw Text mode a few times in this very post to clean up Gutenberg's mess. (Yes, my secret is out… I'm using Gutenberg to write this post!)

Many other reviewers have noted some of the drawbacks of Gutenberg's features. It's still not true WYSIWYG. It seems to want to be direct in-page editing, so why isn’t it that? Many elements are still dependent upon your theme for proper styling (like the margins below captions on this post — but I will probably have fixed that in my CSS before you are reading this). A lot of the blocks don't really offer many styling options, which seems a bit self-defeating.

And, of course, it seems at this point that it will completely break the old "metabox" concept of the editing screen, and thousands of plugins and themes as a result. I really don't know how the core team intends to resolve that issue, although sidebar metaboxes seem to be handled under the Document tab in the Settings sidebar. A lot of popular plugins (Yoast SEO, anyone?) that rely on more horizontal width will need to be drastically rethought to work in that context, though.

This leads into my next topic: how will Gutenberg affect the work I do as a web developer?

So… how will Gutenberg affect the work I do as a web developer?

My initial gut reaction to the news of Gutenberg was that it seemed to be eliminating the reason I exist in the WordPress ecosystem. As a developer specializing mostly in custom theme development for clients, it looked like Gutenberg was going to destroy my business. And as an occasional contributor of free plugins to the WordPress community, it looked like Gutenberg was going to create a lot of unnecessary (and unpaid) work for me, rebuilding my plugins to function in this new paradigm.

The latter may well be true, but the former won't. Gutenberg does nothing at all to eliminate the need for theme developers — it just changes how we do a few things. And, importantly, the ability to create custom block types opens up new opportunities for developers of both themes and plugins to invent new ways of both displaying and working with content in a WordPress site.

The two big questions I'm left with, which are not yet answered, are:

  1. Is this really an improvement over the existing TinyMCE editor, for developers and clients who are using WordPress not as a blog platform but as a general-purpose CMS?
  2. Is it worth adapting to this new way of doing things? Or is this effectively Automattic showing me the door?

Pondering these questions takes me to my final topic…

Why this? Why now? Why at all?

I suppose there's a "Who moved my cheese?" element to this. After all, I've spent the past two years honing my concept of modular design and the first eight months of 2017 perfecting a reusable core theme that relies heavily on Advanced Custom Fields (specifically, Flexible Content blocks) and the WordPress Customize API to achieve many of the same things Gutenberg does. My theme offers considerably more flexibility and formatting options than Gutenberg does, though I will readily acknowledge that Gutenberg seems easier to use than my heavily customized ACF Flexible Content blocks are.

The point is, I am already deeply immersed and heavily invested in a particular set of tools that are intended to achieve many of the same aims as Gutenberg, and that, in some ways, do a better job of that.

But wait, what really are the aims of Gutenberg? Who asked for this? Who is it benefitting?

While Matt Mullenweg talks big about how it will benefit practically everyone in the WordPress ecosystem — developers and agencies, plugin developers, theme developers, core developers, web hosts, and (last, but… not least?) users — it seems clear to me and to a lot of other critics of the project that the primary beneficiary is Automattic itself.

I find it curious that this project is named after the inventor of movable type, since one of the earliest WordPress competitors is called… Movable Type. This project is transparently an effort at fighting back against the likes of Wix, Weebly, Squarespace and Medium, each of which has in its own way been eating away at the potential market for WordPress.

But, you know, I cringe a bit at talking about "markets" when we're discussing open source software. And that's the crux of the problem. WordPress has, for many years, existed as a Jeckyll-and-Hyde duo of WordPress.org — the open source project underlying self-hosted WordPress sites and the huge developer and designer community of which I am a part — and WordPress.com — the commercial, hosted, software-as-a-service (SaaS) platform owned by Automattic.

That list of SaaS platforms I mentioned above — Wix, Weebly, Squarespace and Medium — represents competition to both sides of the WordPress dichotomy, but in significantly different ways.

To the open source WordPress.org community, they're — mostly — competition in that they represent the "low end". Small businesses and organizations that have limited budgets or a determined DIY ethic are inclined to use them, until they realize how quickly they are hamstrung by the limitations of the tools they offer. Then those businesses and organizations hire designers and developers like me to take their websites to the next level, and we use WordPress as a way to build exactly what they need, because its open architecture and self-hosting mean there's no limit to our ability to customize WordPress to do exactly what we need. They are also a more ominous existential threat to our businesses, because they’re constantly improving, and eventually they won’t be so limited in ways that work to our advantage. So to that end, we need WordPress to evolve. But Gutenberg seems in some ways to be WordPress skating to where the puck is, rather than leapfrogging the competition, to mix metaphors.

But to WordPress.com, those SaaS platforms are much more direct competition, because they are offering exactly the same thing that WordPress.com offers: a hosted platform with limited customization capabilities. I have steered a number of clients away from Wix or Squarespace over the years, but I have steered just as many away from WordPress.com, and for the exact same reasons.

Medium is another story. In that it's literally about stories. Automattic is definitely feeling the heat from Medium, but this is a world apart from the scenarios I described in the two preceding paragraphs. Medium is challenging WordPress.com specifically as a blogging platform.

It's true that WordPress started as blogging software. But over the years it has become so much more than that. I have built over 100 websites on WordPress since switching to the platform full-time in 2014, but every single one of them has used WordPress as a CMS, not as a blog. Hardly any of those sites even have blogs. A key feature of one of the plugins I created, in fact, is to hide the Posts and Comments items in the WP admin interface, since hardly any of my clients use them.

Anecdotal evidence is not data. I wouldn't suggest that my business use case for WordPress as a CMS necessarily means it should no longer be thought of primarily as blogging software. But I am hardly alone, and I'd be willing to bet that a large majority of my fellow developers who have made a substantial part of their career in client services, using WordPress as the underlying technology, would agree with me. Because… wait for it… blogs don't make money. OK, a few do. But there aren't enough profitable blogs to warrant an entire industry of paid designers and developers to build them.

This has been the most jarring aspect of the whole Gutenberg debate for me… the realization that Matt Mullenweg still thinks of WordPress primarily, if not exclusively, as blog software. And it seems that his singular passion is really what's driving Gutenberg, above all else.

I do think Gutenberg, when it has a few more layers of refinements and polish, will be a superior content editing experience to what the current implementation of TinyMCE offers. But it is a huge change, and I don't think it jibes with the way most WordPress.org sites use the platform. That's not to say they can't or won't adapt. But it also says nothing about why they should.

Stravinsky on that chord

Up to now I’ve only really been documenting it on Facebook (for some reason), but over the past 3 months I’ve been working on one of my most ambitious music projects yet, a prog/post-rock interpretation of Stravinsky’s Rite of Spring. It’s been an interesting exercise that has helped me to get very (very) familiar with the piece, and encouraged me to research more about its origins.

Today I discovered this delightful video of Stravinsky humorously recounting the early history of the piece. Specifically, demonstrating the chord at the beginning of “Augurs of Spring” to Sergei Diaghilev, the ballet producer who had commissioned the work.

I like very much this chord. It was a rather new chord, you know? An 8-note chord. But the accents were even more new. And the accents were really the foundation of the whole thing.

When I finished composing The Rite of Spring, I played it for Diaghilev, and I started to play him this chord. Fifty-nine times the same chord. Diaghilev was a little bit surprised. He didn’t want to offend me. He asked me only one thing, which was very offending. He asked me, “Will it last very long time this way?” And I said, “’Til the end, my dear.”

And he was silent. Because he understood that the answer was serious.

What is that chord? I think just to mess with us, Stravinsky notated it rather absurdly with F♭s and C♭s. From the bottom up, the notes are: F♭ A♭ C♭ F♭ G B♭ D♭ E♭. So, that’s… um… well, if it were written as E instead of F♭, with ♯s instead of ♭s, it works out to an Emaj7/♯9/♯11/13 chord. Another way to look at it is an E (F♭) major chord with an E♭7 (in first inversion) stacked on top of it. Since Stravinsky was exploring bitonality, this is the most likely explanation, but really there’s no good way to notate it. Over a hundred years later, this is still difficult to grasp.