February 16, 2020

100 Days of Code: Paper Auth


I gave up life as a full time coder about 9 years ago to pursue IT leadership positions. For context, at the time I made the switch my life revolved around IBM's 4690OS and SCO. Recently, I have been managing a couple large integrations, one traditional EDI and another bridging a partner's API to ours. Working through these projects was a blunt reminder of just how much rust had formed over the last decade.

So, last fall I decided to try the 100 Days of Code challenge to get back in practice and pick up a few new skills. At the time I was thinking about the concept of Authentication by Newspaper - holding up a recent newspaper in prove the authenticity of a photo. Newspaper authentication can prove you took a photo after the newspaper was printed, but it cannot prove a specific date or time. And Photoshop. That's a problem too. Not to mention actually finding a newspaper.

I was musing about how best to prove the exact date/time of a photo and decided to turn that into my project.


My overarching goal was to make a functioning web application that serves as a digital version of newspaper authentication but can also authenticate a specific date/time and has protection against faking.

My specific coding goals were to:
  • Gain some experience with the Heroku platform - deploying and managing apps, dynos, add-ons and all that fun stuff.
  • Be better at using Git - it was Visual SourceSafe back in my day...
  • Get hand-on with writing code to interact with web APIs.
  • Embrace PDO for database interactions - apparently folks stopped using the mysql_ extension years and years ago.
  • Write better, more concise CSS.

The Plan

My plan was to create a web interface that allows users to enter their own headline. The headline is combined with other pieces of random data retrieved from APIs and assembled into a unique "newspaper" page.
The data is logged to a database and a QR code is generated containing a URL with a token to retrieve the entry data.

Scanning the QR code loads a webpage that shows the original date/time the newspaper page was generated and all of the data components that should be present. Authenticity is confirmed by comparing the timestamp and data elements on the confirmation page with the timestamp and data elements in the original image.

To use the app, a user enters their headline on a device (typically a phone) and hold up the rendered newspaper page while taking a photograph. Someone viewing the photo can scan the QR code to validate the image authenticity. 

Napkin drawing of Paper Auth functionality

What I Built

Web app front end

A simple front end to collect the user's headline.

Paper Auth - Front end interface

"Newspaper" page

The rendered newspaper page includes:

Paper Auth - Newspaper page

Successful validation

Scanning a valid QR code will result in a Valid Entry response. The response contains all the original information, which can be compared to the photo containing the newspaper page to confirm validation.

Paper Auth - Valid entry page

Failed validation

Scanning an invalid QR code will result in an Invalid Entry response.

Paper Auth - Invalid entry page

What I Learned

  • I really enjoy working with the Windows Subsystem for Linux (WSL). I hosted my web app locally in a Ubuntu LAPP stack running on WSL and deployed it to Heroku with Git.
  • I also really enjoy working with Heroku. Their free tier PHP dyno and Postgres add-on were all I needed to get my project live on the interwebs.
  • Git is easy...what was I worried about?
  • PDO is also easy once you unlearn the old MySQL way of doing things. Luckily I had forgotten almost all of it anyway. Side note - it's amazing how many irrelevant, decade-old tutorials are still sitting at the top of the Google search results.
  • I learned a lot more about APIs and how invaluable Postman is for testing.
  • I learned I am still terribly inefficient with CSS. My style sheet is currently 474 lines, but I have a sneaking suspicion it could be under 100 if was better at grouping my HTML tags.


I had a great time with the 100 Days of Code challenge. I got to shake off some of the rust and learned several new skills. Unfortunately, I ended up wrapping my project around day 30, which happened to fall right before my family's Disneyland vacation.

Rather than pick up where I left off, when we returned I started up my second challenge, a Beer Quiz. I am currently in the middle of my second challenge, which includes learning MongoDB and D3.js.


February 13, 2020

Gluten Free: Disneyland - Restaurants and Meals

This is part two of a two-part article about eating gluten-free at Disneyland. In the first part, we covered some logistics of visiting the Disneyland on a gluten-free diet and the resorts abilities to accommodate dietary needs. In this part I'll go over the specific gluten-free meals we had on our vacation and and our experiences ordering at resort restaurants. The prices and availability in this article are accurate as of February 2020.

We decided on two meals at the resort each of the five days we were in the parks, either a breakfast or lunch and dinner. We covered other meals and snacks by bringing in groceries we had delivered to or hotel. Here is the recap of what and where we ate gluten-free meals.

Day 1 - Disneyland

Breakfast Platter at Red Rose Taverne ($9.49)

Breakfast Platter at Red Rose Taverne - Disneyland
Being or first restaurant, we were a little unsure how to proceed. We found a cast member at Red Rose in Fantasyland and indicated we had someone in our party with celiac disease. We were given a printed allergy menu and told we could talk with the chef to discuss our needs.

My partner ordered the Breakfast Platter - eggs, potatoes and bacon or sausage. To make it gluten free, She had to forego the petit croissant. We skipped the chef consultation since the clerk was extremely knowledgeable and explained that the meal would be prepped and cooked in a dedicated area of the kitchen and come out separately from the rest of the meals.

Editor's note: All four of our meals came with three strips of bacon which meant I ended up treating my heart to 12 strips to start my day.

Trio of Street Tacos at Rancho del Zocalo Restaurante ($13.49)

Trio of Street Tacos at Rancho del Zocalo Restaurante - DisneylandFor dinner on day one, we ate at one of my favorite restaurants in the park, Rancho del Zocalo in Frontierland. My partner ordered the Trio of Street Tacos from the allergy menu - choice of beef, chicken or pork tacos in corn tortillas, served with bean and rice.

At Rancho, you order at the kitchen and pay afterward. The cast member who took my partner's order wasn't sure how to proceed to accommodate her dietary needs, but the chef quickly came over and explained that the food could not touch the standard line and needed to be prepared separately in the dedicated space in the back of the kitchen. She also instructed the cast member to toss her gloves, wash and re-glove before starting her meal. That was awesome.

My partner's meal was served from the same window as the other meals, but it was handled by the individual who prepped it all the way to the window.

Day 2 - Disney California Adventure

American Breakfast at Flo's V8 Cafe ($9.49)

American Breakfast at Flo's V8 Cafe - Disney California AdventureDifferent day, different park, different name but same breakfast...almost. The American Breakfast at Flo's V8 Cafe in Cars Land was nearly identical to the Breakfast Platter at Red Rose Taverne save for two slight differences. My partner was offered a gluten free biscuit and given the option to exchange her bacon for extra eggs or potatoes. Neither of these options were mentioned at Red Rose, but may have been available.

We talked with the chef at Flo's and he indicated that they uses dedicated space for gluten-free prep. He also mentioned that the gluten-free biscuits are the only items they serve that are are made outside the kitchen. They are prepped outside the park and delivered in individual, sealed containers to minimize risks of cross contamination.

Gluten-free Penne Pasta at Boardwalk Pizza and Pasta ($10.99)

Gluten-free Penne Pasta at Boardwalk Pizza and Pasta - Disney California AdventureDinner at Boardwalk Pizza and Pasta in Paradise Gardens Park was the first grab-and-pay restaurant we ate at. This is a style of quick service restaurant where you select a pre-made meal and pay as you leave the serving area. 

Again, we spoke with a cast member and received an allergy menu and chef consultation. Gluten-free pasta at Boardwalk is made to order in a separate kitchen space.

It does take a few minutes to cook, which was not a big deal for us, but something to keep in mind if you are in a hurry.

Day 3 - Disneyland

Oven-Roasted Turkey Sandwich at Jolly Holiday Bakery ($10.49)

Oven-Roasted Turkey Sandwich at Jolly Holiday Bakery - DisneylandWe hit Galaxy's Edge at rope drop on day three so our first meal in the park wasn't until lunch time. The Jolly Holiday Bakery on Main Street USA is one of the restaurants that still lists allergy-friendly meals in the Disneyland mobile app (editor's note: covered in Part One). It is also the only restaurant we visited that didn't have allergy menus available - they had recently changed up their offerings hadn't received the new allergy menus yet.

We spoke with the chef who indicated he could prepare any sandwich except the Thanks-Mas (which contained stuffing and gravy) gluten-free by substituting the bun. He also confirmed that the fryers used for the house-made chips are dedicated. This allowed my partner to order the turkey sandwich, which doesn't appear as a gluten allergy option in the app.

The Jolly Holiday also had the most thorough handling process to avoid cross contamination. The chef explained that my partner's meal would be prepared ad handled exclusively by the two chefs, the cast members wearing black hats. We would be called to a separate window pick up that wasn't used for standard food. If our meal did not come out of the specified window, or was handled by someone other than the chefs, we were to send it back. Again, awesome effort to avoid cross contamination.

Kids' Chicken Breast with Rice at French Market Restaurant ($7.99)

Kids' Chicken Breast with Rice at French Market Restaurant - DisneylandThe French Market Restaurant in New Orleans Square was the low point in dining for our trip. It was very busy when we visited and the cast members who were serving, chef included, were working hard to keep the line moving. The only item on the allergy menu that met my partner's dietary needs was the Royal Street Chicken Caesar Salad (sans croutons), but the chef indicated they were out of lettuce.

Rather than go somewhere else, my partner opted for the Chicken Breast with Rice from the kids' menu. We noticed that the chicken and rice were served from the same warming tray and steamer that was used to serve non-allergy friendly meals. They did serve the food with dedicated utensils, but it did not appear than anyone swapped gloves or washed before handling the plates. My partner did not have any issues, but it was definitely the riskiest meal.

Day 4 - Disney California Adventure

Character Brunch at Storyteller's Cafe ($$$ a lot)

Character Brunch at Storyteller's Cafe - Disney California AdventureAfter taking advantage of a walk-on Incredicoaster a few times with my son (editor's note: who had worked up the nerves for his first real rollercoaster), we headed off to Storyteller's Cafe in the Grand Californian Hotel & Spa for the Mickey's Tales of Adventure Buffet Brunch. As I mentioned in Part One, when I booked the character dining through the Disneyland mobile app, I was given an opportunity to indicate dietary needs. My partner followed up with a phone call when she confirmed our reservation to confirm our needs.

When we arrived, the host also confirmed our dietary needs and our waiter explained what was and wasn't safe for my partner to eat from the buffet. He told us that care is taken to minimize the risk of cross contamination for buffet items being served by cast members, but also offered to prepare items separately in the kitchen on a dedicated grill.

My partner asked to have an omelet prepared separately and some gluten-free Mickey Waffles.

Street Taco Plate at Cocina Cucamonga Mexican Grill ($12.99)

Street Taco Plate at Cocina Cucamonga Mexican Grill - Disney California AdventureStreet Tacos at Cocina Cucamonga in Paradise Wharf were very similar to the Trio of Street Tacos at Rancho del Zocalo Restaurante, but $.50 cheaper for those paying attention.

Allergy menu, separately prepared meals and separate handling. It sounds a bit repetitive at this point, but I think that goes to show how well the resort restaurants handle dietary needs. This is knowledge, preparation and handling we could only wish for at other restaurants, but by day four day in the parks it has become passe. Passe in a good way.

Ricemilk Choco Bar at Trolley Treats ($3.49)

Ricemilk Choco Bar at Trolley Treats - Disney California AdventureAs easy as eating meals was for us, enjoying the great, unique treats at Disneyland was quite a bit harder. We had asked the previous day at the Jolly Holiday Bakery. While they had gluten-free confections, they did not recommend any of them for someone with celiac disease. Likewise, at Trolley Treats they recommended staying with pre-packaged items that were marked gluten-free.

My partner managed to find a Ricemilk Choco Bar at Trolly Treats, on our way out of DCA for the evening that was both dairy and gluten free.

The bar is part of the Snacks with Character line of packaged treats that are vegan and free from the top allergy ingredients.

Day 5 - Disneyland

Oven-Roasted Turkey Sandwich at Jolly Holiday Bakery ($10.49)

We ended up back at the Jolly Holiday Bakery again for lunch day five. We spoke with a different chef, but they detailed the same stellar process for preventing cross contamination.

Gluten-free Pizza with Vegan Cheese at Alien Pizza Planet ($7.99)

Gluten-free Pizza with Vegan Cheese at Alien Pizza Planet - DisneylandFor our final meal in the park, the kids picked the newly-renamed Alien Pizza Planet in Tomorrowland.

We thought this one might be difficult with both the gluten and dairy restrictions, but my partner was able to order a gluten-free pizza with vegan cheese.

Like the pasta at Boardwalk, the gluten-free pizzas are made to order and will trail the rest of the grab-and-pay items by a few minutes.

Final Thoughts

As I mentioned in Part 1, the Disneyland Resort does a fantastic job of accommodating dietary needs. Every restaurant we visited was knowledgeable about celiac disease and honest about their procedures and abilities to accommodate our dietary needs. Something else we noticed is that we were never changed more for a gluten-free version of a menu item. That was also refreshing when a gluten-free bun often comes with a $1-2 upcharge outside the resort.


January 25, 2020

Gluten Free: Disneyland - Planning and Accommodations

At the end of November my family headed back to Disneyland for what is rapidly becoming a yearly tradition (editor's note: a topic covered recently on Disneyland for Designers). This was our first visit to the happiest place on Earth since my partner was diagnosed with celiac disease, and not wanting to experience a repeat of the meal stress we experienced over the summer in Seattle, we put a lot more effort into planning this time around.

This is part one of a two part article covering eating gluten-free at Disneyland. In this part, we will look at some general information about visiting Disneyland with gluten-free or celiac-friendly dietary needs. Part Two covers our experiences at specific Disneyland Resort restaurants. Hopefully some of this information is helpful to others who are planning a park trip with dietary needs.

Gluten-free Street Taco Plate from Cocina Cucamonga Mexican Grill @ DCAGluten Free Disneyland Trip Planning

Call Ahead

If you are planning reservations, character dining or other experiences involving meals, call ahead and discuss your dietary needs. We were able to note dietary needs when we booked our character breakfast through the Disneyland mobile app, but when my partner called to confirm, she was given a lot of additional information. One pro tip she received over the phone - both Cafe Orleans and Blue Bayou make a gluten-free Monte Cristo, but you need to call a day ahead and let them know you will be dining there so they can make the bread.

Getting to the Disneyland Resort

Being Oregonians, getting to Disneyland is a short hop from Eugene or Portland to LA. A few snacks (editor's note: sealed snacks) in our carry-on and we are set all the way to the hotel. Not everyone has the luxury of a quick flight and may be looking to refuel at LAX before the final leg to the Anaheim resort area. Find Me Gluten Free has a list of airport restaurants, but there are less than a handful listed for LAX that are celiac-friendly.

In-flight snacking can be similarly sparse. Beyond Celiac has a good rundown of celiac friendly airline offerings. Not all North American airlines offer celiac-friendly meals on domestic flights. Most offer a gluten-free snack...of some sort...for purchase.

Quick takeaway: bring your own travel food and bring baby wipes if you plan on eating at the airport. Actually, bring wipes anyway, they are always useful.

Grocery Delivery

Grocery delivery to your hotel is awesome. If you have dietary needs, it's a great way to ensure you have foods you know are safe during your trip.

We placed an order that included our Costco staples (Kind Bars, Pure Organic Fruit Bars, Babybel's, Kirkland Turkey Jerky and fresh fruit) and a few miscellaneous items from Sprouts. This covered all of our snacking for all seven days. This was our first time using grocery delivery and we learned a few things.

First, check with your hotel ahead of time to see how they handle grocery deliveries. We stayed at the Sheraton Park Hotel which requires guests to be present to receive orders, so we scheduled our groceries for delivery a couple hours after we anticipated arriving. And don't trust what you read online, policies change.

For example, until late last year, Disneyland Resort hotels accepted grocery deliveries at Bell Services and kept food refrigerated (if needed) until you arrived at no cost. The on-property hotels now require guests to be present to receive their own deliveries. Of course this could change again tomorrow, so do your homework.
Second, make sure you note your dietary needs with the delivery service. I didn't think to do this ahead of time and one of our shoppers started gathering our order while we were still in the air. When I took my phone out of airplane mode, I had a string text message substitutions, a couple of which were not gluten-free.

Gluten-free at the Disneyland Resort

The Good

First off, the Disneyland Resort is incredibly accommodating to a wide array of dietary needs, including gluten-free and celiac. Resort restaurants, both quick and table service, all offer printed allergy menus and are staffed with chefs trained in accommodating food allergies and dietary needs.

When we indicated we had dietary needs, resort restaurants all offered chef consultations. The chefs we spoke with were knowledgeable about celiac disease and took time to explain how they would prepare and handle our meals to prevent gluten cross-contamination. Best of all, we were never made to feel like our dietary needs were an inconvenience, even when a restaurant was incredibly busy and accommodating us would slow them down.

I can not say enough about how awesome it is to know you can walk into any resort restaurant and be accommodated. It eliminates a huge amount of stress and allows you to enjoy the park without worrying about your dietary needs.

The Bad

Outside of the Disneyland Resort proper, celiac-friendly options were much more limited, especially without personal transportation. Even with a car, time spend driving around Orange County to eat is time not spent in the park. For us, all of the meals we ate over our seven day vacation either came from resort restaurants or groceries we brought from our hotel room. While eating exclusively at the resort was very celiac-friendly, wallet friendly it was not.

The Ugly

For all that Disneyland does right to accommodate dietary needs, it seems like access to this information has become more limited over the last year. When we started planning our trip in early 2019, the Disneyland mobile app listed allergy-friendly meals, including gluten-free options for nearly all resort restaurants. As of writing this (January 2020), many of the menus in the mobile app now simply say, "Allergy-Friendly menus available upon request." Oddly, some of these same menus WILL show the removed allergy-friendly items if you start a mobile order. Technology.

Speaking of "menus available upon request," until recently printed allergy menus were available at Disneyland City Hall. This practice stopped some time in 2019. Now, you must go to a restaurant to view the allergy menu, making planning ahead a bit harder.

Well, that does it for part one. Part two is now available.


November 19, 2019

Blogging SEO: Dealing With Backlinks to Old, Dead Content

When I relaunched Beer and Coding earlier this year, my plan was to go full on Tabula rasa. In support of this, I purged all of my existing content, dating way back to 2009. No backup, no archive, no nothing. Clean slate.

While greatly therapeutic, it also means I destroyed a decade's worth of content and all of its built-up equity with a single snap (editor's note: shoe-horned attempt at an Infinity Gauntlet reference, don't worry there will be more). I'll pause here for a moment to let all of the SEO evangelists weep softly...

Yep, it's a dead Link pun. Sorry.

Since my relaunch, I've noticed quite a few old, dead articles that are still receiving hits from backlinks, external links across the interwebs. By default, Blogger automatically redirects all 404's to the website's main URL, which seemed like a tidy way of handling things. Again, I'll pause for weeping...

The issue is that search engines are strange and fickle mistresses. No, wait, that's not quite right. That sounds like I might be insinuating that there is some magic and wonder to be found inside the blackbox algorithms. Search engines are exacting, biased tyrants. There, that's better. In any case, handling backlinks this way does not preserve any of their ranking or search engine value. The proper (editor's note: overlord-friendly) way to handle this is to use individual 301 redirects to reroute dead backlinks to a new content location. But the snap...

So, much like End Game, I'm now trying to reverse the past. Luckily, in this reality, someone has already invented a time machine, or more specifically, a Wayback Machine. And, after a little bobbing about in the timestream, I pinpointed the June 21st, 2012 archive as the most complete snapshot of my past content. Now to collect the stones.

Using the crawl reports in Google Search Console I identified what dead content is still receiving activity through backlinks. This information appears in the Search Console under Index > Coverage > Excluded. Typically, you would look for the "Not found (404)" excluded type. In my case, since Blogger was redirecting my 404's, my hits were under "Page with redirect".

An exhilarating shot of the Google Search Console interface

My dead backlinks fall, more or less into four categories:
  • Articles that would still be relevant or have historical value.
  • Articles that have been superseded by new content.
  • Articles that will be superseded by new content.
  • Articles that no longer have value.

Game plan time. For superseded articles, I can set up redirects to the new replacement content and all is good. For articles I (editor's note: optimistically) believe are still relevant or hold value, I can pull the old content out of the Way Back Machine, repost it and do the same redirect dance. And, if I stagger the release of this content it means I can fill in holes in my content calendar with "vintage" articles. Bonus.

This leaves just the last two categories, the true 404's. Not going to spend any time on these ones, but to make things easier to track going forward, I did set up a custom 404 page. For Blogger, this option is located in the super obvious Settings > Search preferences > Errors and redirection > Custom Page Not Found. I gave my 404 page a bit of window dressing and it ended up looking like this:

Hi there.

If you reached this page from a link on another website, you were probably trying to access content that was created before Beer and Coding was rebooted in 2019. You can read about the relaunch HERE.

Yep, it's a dead Link pun. Sorry.

I am working through restoring all of relevant, historic Beer and Coding content. Until then, if you are willing to do some work, you can access it HERE, via the Way Back Machine.


And there we have it. A few articles sacrificed, but many others now have a chance live on in this new timeline (editor's note: last one, promise).

Finally, for those who hate reading through my meandering posts, here are your CliffsNotes:

  • Backlinks to old, dead content are not good.
  • Allowing them to 404 does not help SEO.
  • Shoving them all to your root URL isn't much better.
  • Use Google Search Console or a backlink checker to identify your problem children.
  • Set up explicit 301 redirects to route backlinks to real, relevant content.
  • If you need to get old content back, try the Wayback Machine.
  • Enjoy that feeling of high-fiving a million angels, you deserve it.

November 13, 2019

Technology: My Support Stack

A few years ago, I was a bright-eyed and bushy-tailed, recent Help Scout convert, gobbling up the treasure trove of customer support information on their blog. I came across the article, "What's Your Support Stack?" by Emily Triplett Lentz, an argument for a multi-channel, toolbox approach to customer support. The article outlined the support stack used by Help Scout and highlighted a handful stacks used by their customers, including Basecamp and Trello.

For me, it was a transformative read. I was just beginning to understand the power of a positive customer experience and this article offered a unique peek behind the curtain of how some excellent customer support teams practice their craft. It was also the catalyst that got me thinking about my own support stack.

Since I first read the article back in 2016, I have built support stacks at two organizations and have had a hand in or advised in the development of several others. I go back and reread Emily's articles every now and then when I need a bit of customer support pick-me-up and always find it a shame that no one has responded to the question Emily poses at the end of this one, "What’s your support stack?". Today, I'm hoping to give a little back and share the support stack I currently leverage.

First off, let me set the scene. This is the stack used by the technology team I lead to deliver support to our internal customers. That said, the tools in this stack were specifically chosen because they are not IT-centric and can be deployed to our support experts organization-wide to deliver an outstanding customer experience.

My Support Stack: Presented as a poorly done graphic
Help Scout - This is what beautiful customer support looks like. A powerful combination of organization, automation and analytics, all Trojan-horsed (editor's note: please stop verb-ing nouns) into a simple email interface.

Side Note: At my last organization, I implemented Help Scout within the IT team. When folks saw how empowering it was for my support staff and how quickly our customer experience improved, adoption quickly snowballed. By the time I left that organization, I had rolled out Help Scout to many teams including operations, facilities, HR, finance, analytics, employee development, communications and web development.

KnowledgeOwl: The content management system and article editor are both joys to work with. Features like synonym linking, glossary terms and reusable article/code snippets are just icing on the cake.

Side, Side Note: I love Help Scout Docs, but public/private collections don't easily fit our internal company knowledge base need. Help Scout support was wonderful as always and offered a few workarounds to accomplish a pseudo "internal" permission level. But, at the end of the day we didn't want to run our knowledge management on a workaround, so we invested in KnowledgeOwl. Plus, with full control of article JavaScript, HTML and CSS I was able to "borrow" all of the styling I loved from Docs and implement them in KnowledgeOwl.

Redbooth: My entire world runs in Redbooth workspaces. I'm not sure why these folks don't get more attention than they do. One of the most friendly, intuitive project management tools I've used. Simple enough for novices and deep enough to keep seasoned PM veterans satisfied.

Zoom: Zoom has just about replaced all of the random, one-off conference tools used throughout our organization. A beautiful thing when everyone can communicate and collaborate together.

JotForm - Jot is a ridiculously customizable form building tool. We use JotForms to standardize intake for bug tracking and reporting requests, create training modules using the quiz widget and provide employees a way to submit continuous improvement (Kaizen) initiatives.

InsureSign: An extremely customer-friendly e-signature platform. I always find it amusing that they got their start servicing the insurance and finance sectors, which are home to some of the least customer-friendly entities.

Camtasia and Snagit: We heavily utilize both of these TechSmith applications to produce highly effective knowledge base articles and video tutorials.

Zapier: The Meat Paste that holds it all together. My last zap was one that connected Help Scout to Redbooth. When a "bug-confirmed" tag is added to a Help Scout ticket, Zapier creates a Redbooth task with all the ticket detail in our ERP Workspace for long-term tracking.

If you have a support stack you would like to share, please go post it in the comments on Emily's article. I am doing that myself right now.


September 12, 2019

Making IT Like Disneyland: Prologue

I used to say that my goal was to run my IT department like a Starbucks. And by that I wasn't suggesting that I wanted to extract as much profit as possible out of my customers on the back of an underpaid workforce and mediocre product. I meant that I wanted my IT department to run the way a Starbucks cafe operates. To me, at the time that meant an IT department that is clean, polite, and can consistently and competently deliver on a wide catalog of services. It also felt like a clever thing to say and seemed to resonate with my caffeine-addled peers.

Something I found on Google Image Search that kind of fits...
What I've learned in the seven or eight year since I made that declaration is that I was greatly overvaluing the services being delivered and equally undervaluing the experience of the customers receiving those services.

Let me explain. If you've worked in IT, you've probably heard, or like me expounded that good customer experience is a byproduct of good IT fundamentals. If your systems are stable, your backups solid, your security sound (editor's note: your heart true), the IT Fairy will visit all of your users at night and gift them with a great customer experience. And that is exactly as realistic as it sounds. In reality the IT Fairy is Arri from Estonia and the only gift he brings is identity theft (editor's note: sorry Estonian readers).

The same is true for Starbucks. The service being delivered, in this case coffee, is only a component of the customer experience. To illustrate this point, let's pretend you just walked into a Starbucks and ordered an Americano. You receive your drink, it's the correct size, correct temperature, correct flavor and aroma. Name is even spelled correctly on the side of the cup. Service delivered, boxes checked, happy customer. Easy, right?

But what about the ten minutes you just waited in line to order? Then the additional ten you waited for your drink to arrive? Or that guy in corner loudly dictating his next self-published masterpiece? Maybe the James Taylor and Sia duet album of Thanksgiving classics that is now soundtracking your decent into madness? Better be one hell of an Americano.

The other danger of relying solely on service delivery to determine customer experience is that you set yourself up to falsely associate poor customer experience to failed delivery. We're back at Starbucks again and this time instead of handing you your Americano, the barista pours it all over your hands. Which is contributing more to your poor experience, the skin on yours hands beginning to blister or your lack of beverage? Service delivery would say the latter. Reality would make a strong counter argument.

So, what does all this have to do with Disneyland (editor's note: after 450+ words of Starbucks ramblings)? From the very beginning, Walt built Disneyland to be a place where people have an experience. The attractions, the characters, the performances, the music, the theming, tools to enhance and amplify the experience, but the experience itself is the product, the service that is being delivered. Walt explained it best himself in his opening day speech, "To all who come to this happy place; welcome. Disneyland is your land."

To all who come to this happy place; welcome. Information Technology is your land.
What if we apply Walt's philosophy for Disneyland to IT? What if customer experience becomes the product and IT services become the tools to support it? What if we make IT like Disneyland?

This is how I have been leading IT for several years now. Though the Making IT Like Disneyland series, I will be exploring how to create a better customer experience by applying Disneyland concepts to IT leadership and operations. No, we won't be devising plans for the World Famous JIRA Cruise or Splashtop Mountain or even Mr. Tableau's Wild Ride. But we will be looking at how things like cleanliness (editor's note: shout out to The Sweep Spot) are integral to the Disneyland experience and how they can also be used to further IT.

To all who come to this happy place; welcome. Information Technology is your land.


September 6, 2019

Gluten Free: A Trip to Seattle

My family took a short trip up to Seattle at the beginning of last week. This was the first time we have traveled, outside of camping or day trips since my partner was diagnosed with celiac disease earlier this year. This post is a brief rundown of our experience as a couple tourists attempting to eat gluten-free in Seattle.

I'll start by stating something that is probably blatantly obvious to anyone who has been living with special dietary needs - eating away from home takes much more coordination. This isn't necessarily a problem, but if you do not enjoy a scheduled vacation, which neither my partner nor I do, you may eperience moments of genuine frustration, flashes of anger and the occassional cursing of various gods and deities when it comes to meal time. Some words were said...

We also learned the importance of location. Seattle has a wealth of gluten-free, celiac-friendly establishments, but not many were walkable (editor's note: with two children) from our base camp across the street from the Seattle Center. We did bring a vehicle, but didn't fully appreciate the logistical challenge of it being parked at the hotel while we were miles away and hungry. This became glaringly apparent when we tried to eat our first meal, lunch at Pike Place.

We attempted to eat at one of market bakeries that Google had identified as gluten-free. The bakery did have several gluten-free and vegan offerings, but they weren't kept separate and with how the food was being handled, we didn't have high hopes of avoiding cross-contamination. But the kids were hungry and we'd already invested 30 minutes walking in circles so the kids and I ate there while my partner grabbed a pint of strawberries from one of the farm stall. Lunch then segued into our next unforeseen challenge - cleaning up after a meal with gluten.

Pike Place restrooms are the perfect storm of urine covered floors, sinks to high for children and blisteringly hot water. I entered the restroom with two gluten-covered children and left with two upset, soaking wet, probably still gluten-covered children. Not a great start.

We spent the rest of the afternoon around the waterfront, so when it came time for dinner, our options were either:
  1. Find something around the market.
  2. Walk back to the monorail station, then ride to Seattle center, then walk to the hotel, then get the car, then drive somewhere, then park, then...logistics.
We chose option 1 and ended up at Pike Brewing Company's Pike Pub for dinner our first night. Mind you this was after another heated round of debate, frantic Googling, weighing the above options, more Googling, all the while our kids agonizing over the starvation we were inflicting upon them.

Peach IPA at Pike Pub
Though not advertised on their website, The Pike Pub was very accommodating to my partners needs. They have an entirely separate gluten-free menu and confirmed for us that they maintain dedicated fryers and a separate prep area in the kitchen. My partner was able to order a Wild Salmon BLT that met her gluten-free, dairy-free, pescatarian needs. I had a Ruben, a Peach IPA and the bacon from her sandwich, none of which was gluten-free, save for the bacon.

After the headache of day one, we spent a good deal of time in the hotel room that evening, strategizing places to eat the rest of our trip. One of those places was I Love My GFF, which operates a group of gluten-free carts serving quinoa bowls. For lunch our second day, we ate at their cart across the street from Westlake Center, in front of the Old Navy. Their bowls were great and my partner was able to order hers sans cheese and protein, meeting her needs.

For dinner our second evening, we had come to terms with the fact we were going to have to drive. We ended up choosing Capitol Cider since it was only a 10 minute drive and there appeared to be ample (editor's note: but expensive) parking options. Capitol Cider is a completely gluten-free, scratch kitchen and their menu is clearly marked with extensive allergen information. For example, the fish and chips my partner ordered was noted as also dairy-free by omitting the tartar sauce.

Snowdrift Forefathers at Capitol Cider
They also have cider. Lots of cider. They maintain 22 rotating cider taps and over 200 different bottles. I tried the Snowdrift Forefathers and my partner had the Anthem Watermelon Gose (editor's note: Gose-style cider, no wheat). A quick note, Capitol Cider does have 8 rotating draft beers that are not gluten-free, but they are served from dedicated taps and lines that are not shared with their ciders.

For the final day of our trip, we stopped back at Pike Place to to try Cinnamon Works before we hit the road (editor's note: and to let the kids ride the monorail again). Cinnamon Works in not a gluten-free bakery, but they do have several gluten-free, dairy-free and vegan options. The employee we spoke with was knowledgeable about celiac disease and explained that while their items are prepared in the same kitchen space and share baking pans, gluten-free and non gluten-free foods are not prepared simulaneously and everything is thoroughly cleaned between batches to minimize cross contamination.

So what did we learn? In short, plan better and be prepared to drive (editor's note: or ride share if you don't kids restricting your transportation options). Dining at an unfamiliar restaurant is stressful enough when you have special dietary needs. There is no reason to pile on the additional stress of attempting to choose said unfamiliar restaurant if it can be avoided. Ideally, if you can come up with a short list of restaurants ahead of your trip, you can call them to confirm they are capable of accommodating your needs and verify their hours before you travel. We probably spent a good 3-4 hours of our three day trip arguing, stressing and plotting each others untimely demises while attempting to plan meals.

There were several other highly reviewed, celiac-friendly restaurants like Niche, HeartBeet and Ghostfish Brewing that we didn't get to try because they were either closed or we were too far away to get there before they closed (editor's note: or before the kids completely melted down).

A thanks to Pike Pub, I Love my GFF, Capitol Cider and Cinnamon Works and their knowledgeable staff who helped accommodate a couple cranky, tired, out-of-towners. Cheers!

June 26, 2019

Blogging SEO: Why You Should Give Up Sex and Devote Your Life to Writing Seo Optimized Blog Titles (Part 1)

Apparently this is what a SEO optimized title looks least when it has been optimized for clickbait. But I am getting ahead of myself.

A couple posts back I showed off a mind map of blogging topics for the site's relaunch. My next step was to take my outline and devise a titling scheme for blog posts, one that plays to the value of content serialization and is SEO friendly. I have been spending quite a lot of time at the day job learning, teaching and generally shaking my fists angrily at SEO optimization. As a result, I have become acutely aware of everything I did wrong during the blog's first run and gleaned just enough knowledge to (editor's note: maybe) do one or two things right this time. Though most of what I've gleaned is that "right" is itself quite subjective. Still getting ahead of myself.

Blog titles, there we go. I started by working out a style guide for my post titles that maintains a consistent titling scheme, comprised of both categorical and post specific keywords. Sounds like a mouthful, so let's break it down.

Looking at the mind map, one of my broad themes, beer, contains the following categories:
  • Craft brewing
  • Gluten free
  • Home brewing
  • Recommended reading

The craft brewing category contains the post topics:
  • Events
  • Industry musings
  • Releases
  • Reviews

From this, I developed a set of keywords:
  • Craft brewing - beer
  • Events - event
  • Industry musings - musings
  • Releases - release
  • Reviews - review

Putting it all together, if I wrote a post about the Hellshire Barrel-Aged Beer Fest, I would title it something like, "Beer Event: Hellshire Barrel-Aged Beer Fest." And I did.

Likewise, if I wrote a post recommending Jeff Alworth's blog Beervana, I would title it, "Recommended Beer Reading: Beervana." This one hasn't happened yet.

I now have a point-and-shoot scheme for titling my posts, but how is the SEO? Like I said, it's subjective. Which is a horribly ironic statement since search engines are not subjective gods. But Google, Microsoft and the like have shrouded them is such mystique that entire industries of oracles now exist to help decipher their cryptic whims (editor's note: let's reign in the metaphors).

One such oracle (editor's note: watch it!) is Neil Patel, who explains how to create search engine friendly title tags. If you prescribe to Neil's brand of divination (editor's note: hey!), my title scheme should work well - Front-loaded, pertinent keywords and generally under 60 characters.

One point where we differ is my decision not to include the blog title in post title tags. Why? As we established in the mind map post, "Beer and Coding in Eugene" has become fairly disassociated from the current direction of this blog. So, there is little value in potentially eating up 25 characters of valuable space in Google search results with a mildly related blog title.

Case in point, which of the following is more appealing?

Beer and Coding in Eugene | Beer Event: Hellshire Barrel-Age 
Beer Event: Hellshire Barrel-Aged Beer Fest

Let's try another.

Beer and Coding in Eugene | Blogging SEO: Writing SEO optim
Blogging SEO: Writing SEO optimized blog titles

So, how did we get from, "Blogging SEO: Writing SEO optimized blog titles" to the mess at the top of the page? That would be Content Row's Headline Generator I came across while prepping for this post. It feels like something akin to the Wu-Tang Name Generator (editor's note: Phantom Overlord, nice!), but toss a title idea into the generator and you will get something that could pass for any clickbait title you see at the bottom of any clickbait article you are currently reading. Eerie.

"Writing SEO Optimized Blog Titles" resulting in the following recommendations:
  • Everything You Ever Wanted to Know About Writing SEO Optimized Blog Titles
  • Writing SEO Optimized Blog Titles 101: The Essential Guide
  • The Most Incredible Article About Writing SEO Optimized Blog Titles You'll Ever Read
  • 8 Things the Media Hasn't Told You About Writing SEO Optimized Blog Titles

And of course the winning, "Why You Should Give Up Sex and Devote Your Life to Writing SEO Optimized Blog Titles."

Now we've come full circle. All things considered, I think I'll stick to my scheme going forward.

Phantom Overload

June 15, 2019

Beer Event: Hellshire Barrel-Aged Beer Fest and a trip back in time

Here comes by first beer post in more than seven years. Let's see if I can shake the rust...

Hellshire IX Poster
Today is the Hellshire Barrel-Aged Beer Fest and release of Hellshire IX, Oakshire Brewing's annual barrel-aged bottle of magic. In honor of the event, I'm going to take you on a little trip back in time to the first Hellshire release.

Saturday May 7th 2011. It was the closing weekend of Eugene Beer Week's freshman run. It had been a gauntlet of a week (editor's note: mainly for the liver and wallet) and I was about an hour away from my final event, the release of Hellshire I.

For those unfamiliar, Hellshire is a barleywine/stout/some-other-kind-of-big-beer-depending-on-the-year, barrel-aged and released annually alongside a big party. Hellshire was started under former Oakshire brewmaster Matt Van Wyk, now part of Alesong Brewing and Blending. The beer carried with it a mythos before it was even released, heralded by many as a continuation of Wooden Hell, a similarly-styled annual release Matt crafted at his previous (editor's note: previous, previous) brewery, Flossmoor Station. In fact, shortly before the release of Hellshire I, folks online were offering $50 per bottle for anyone interested in a little side hustle.

Apparently everyone else was doing battle with their owns hangovers that morning, as I not only made it to the brewery (editor's note: not a small feat) but beat out all my compatriots to be first in line for the event. Not a bad position for a bantamweight beer blogger. When the gate opened, I was given the baby blue Line Dry Rye t-shirt for being the head of the line and allowed to make the first ever purchase of Hellshire. This was immediately followed by a textbook Charlie in the Chocolate Factory moment.

Line Dry Rye T-shirt and a Bottle of Hellshire V
Oakshire employee: "How many would you like?"
Me: "One please"
Oakshire employee: "One case?"
Me: "No, one bottle"
Oakshire employee: "One, bottle?" (puzzled look)
Me: "Yes"
Oakshire employee: "Ok, ring him up for one bottle" (continues puzzled look)

Of course the next ten people in line all purchased their two case limit...or at least that is what it felt like at the time. And despite my limited economic impact, Hellshire is still going strong. It has grown from that initial gaggle of over enthusiastic beer nerds eight years ago to the full-blown barrel-aged festival and additional Hellshire Experience for those with a bit deeper pockets.

As for that first bottle of Hellshire I, it sat, tucked away for eight months until the birth of my son. The t-shirt I still wear. After eight years it has been given the prestigious honorific of Lawn Mowing Shirt. Speaking of which, that is what I will be doing today instead of attending the Hellshire IX release, a very "dad" decision. Now the only question is, do I pop open this bottle of Hellshire V before or after...


June 11, 2019

A small correction...and a roadmap of sorts

I'm going to start by correcting a bit of revisionist history I expounded in my first post. About a third of the way in, I made the comment, "Shortly after EBW wrapped up, so did the blog." It turns out that wasn't exactly correct. Even with a mind as sharp and nimble as mine (editor's note: good place to insert something moronic like, "big league brain"), the details from seven years ago are beginning to blur around the edges. It felt like my timeline was off so I went back to the source.

I pulled a 2012 site backup out of OneDrive and did a local restore. Yes, it would have been far easier to just hop in the Way Back Machine, but that idea didn't cross my mind until just now. Hindsight. It turns out my final blog post was, "Eugene Beer Week Starts Tomorrow!" An entry posted May 6th, 2012, exactly one day before the start of EBW. So, it appears my blog did not wind down alongside EBW as I initially remembered. It abruptly stopped on the 250th post, the evening before. There we go, record set straight. I feel better.

The point of this post was to share some of the planning that went into the relaunch of this blog and a peek at things to come. As I mentioned in my initial post, I've had several failed starts over the years. Each one went (more or less) like this:

    (receives email)
    "My domain renewal!"
    "I was just working on a blog post, this is a sign I should finish it." (opens OneNote)
    "Oh God, that was a year ago!"
    "What was I even working on?" (checks OneNote more intently)
    "A half written review for a beer I don't remember?" (continues checking)
    "That it, nothing else?"
    "OK, looks like I starting over from scratch, idea time." ([scribbles|types|taps] frantically)
    "Alright, that looks good. There's at least a week of topics."
    "Now I just have to write them...and start thinking of ideas for the next week...and..." (crickets)
    "I know! I'll start with a beer review...and might as well turn on the TV."
    "Hey, a new episode of Teen Titans Go!" (closes OneNote)
    "Wait, what was I doing?" 

A talented writer would say something inspiring like, "just start writing and the words will find you." Only, being a talented writer they would phase it more eloquently. Unfortunately, I am not a talented writer. I tend to just hack away at my keyboard until the word vomit starts taking the shape of semi-coherent thoughts. From there it undergoes additional forming and bending until I arrive at something readable. Never great, sometimes good, but usually readable (editor's note: glowing endorsement!). And herein lies the problem. It takes a lot of effort to get an idea out of my big league brain (editor's note: that works!) and into that aforementioned readable state. So, the thought of having to do that time and time again with no clear direction posed a huge challenge to my relaunch. Knowing my limitations (and penchant for distraction), I made a conscious decision this time around to initially focus on mapping out a sustainable content strategy, not spewing out half-formed ideas.

First, I reassessed my blogging focus. Previously, this was craft beer, with a hyper-focus on Eugene, Lane County, Willamette Valley and outward from there. I also wrote, with much less frequency and fanfare about coding, usually something related to web development. Those that subscribe to the theory of niche expert blogging would point out that I missed the mark on both. One niche was far too specific to ever attract a wide audience and the other was far to broad to actually be a niche. This was easily confirmed by my Google Analytics scores. One thing I did seem to get right on the first go-around (editor's note: by complete luck) was content serialization. I'm not going to spend a lot of time explaining serialized content, you all know how to Google. Serialization works because people like things they are already familiar with, already invested in or able to binge. This is why it's a big deal in my house when a new Dog Man book is released or a new season of The Great British Bake Off airs or the morning newspaper arrives with the next Sally Forth comic strip. Again, turning to Google Analytics, my highest ranking posts were those that were beer-related, not hyper-local and part of ongoing series (Adventures in Homebrew, Going Nano, etc). Using this information, I planned out my broad, overarching themes (blue) of the relaunch: beer, blogging, IT leadership and technology. With that set, I then developed specific categories (green) and individual topics (brown), each representing an opportunity for serialized content over a long period of time.

Beer and Coding Blogging Mind Map

Looking at the mind map, you may notice the lack of beer and the near non-existence of coding. And immediately following that, you may ask, "Why keep if you are taking the blog in an entirely different direction, wouldn't a new domain make more sense?" Another great question. It also happens to be the same question my partner asked last night. I don't believe my meandering reasoning did anything to convince her, but maybe I'll have better luck with you. In my mind, this blog is a meta example of serialization. We are starting chapter two. I'm not worried about duplicating chapter one, but I do want to continue the story.