I try not to get overly technical in this space, but when I get a chance to implement one of my very favorite programming techniques, I have a hard time keeping it to myself.  I want to tell you about recursion.  Per wikipedia:

A common method of simplification is to divide a problem into subproblems of the same type […] where problems are solved by solving smaller and smaller instances.

Here’s the example.  Earlier this week I was dealing with a problem where I needed to turn the english words “true” and “false” into the boolean values true and false.  This would be easy enough to do if it were simply one instance of the words:

Continue Reading Recursion

If you host a great event but fail to post about it on social media, did the event actually happen?

Our CEO, Kevin, has written at-length about the importance of a social media presence for bloggers, specifically when it comes to Twitter.

Without a Twitter handle the person cannot see the recognition I gave them nor the recognition others gave them by retweeting or favoriting my tweet. With a Twitter account, the subject receives notice of the shoutout via an email and a Twitter notification.

The same is true when it comes to conferences and other events. You’ve expended time and financial resources to secure good speakers, but when you fail to post about the event on social media, you fail to fully capitalize on your investment.

Clio does a spectacular job with this, with their annual Clio Cloud Conference. They have a hashtag that they use on all posts that pertain to the event, and share quotes, pictures, and videos throughout the duration of the conference. Attendees join in, using that hashtag to talk about everything from an inspirational keynote speaker to the colorful socks they’re sporting that day. Through social media Clio is able to create a huge buzz around the conference- #ClioCloud9, their hashtag, was even trending on Twitter for the two days of the event this year!

But Clio’s a huge company, you may be thinking to yourself, there’s no way we could make things happen on that scale. But you don’t need to have a large company, world-renowned speakers, or hundreds of attendees to successfully share your event on social media. Here are a few easy-to-implement tips, regardless of the size of your event:

  • Create a hashtag, and be sure to use it whenever you post about the event. Attendees will see it, and use it in their posts too.
  • Post on social media throughout the event. This could be quotes from various speakers, a picture of the crowd at a panel, an interview with a high-profile attendee, etc. Tag them in the posts, and they’re likely to share it as well.
  • If possible, record your keynote speakers, and stream their speeches via Facebook Live. This allows others, who were unable to attend your event, to hear what your speaker has to say and increases the reach of your event.

These are simple steps, but social media coverage goes a long way towards expanding the reach of your event, and your organization itself.



If there’s one strong takeaway from Patrick Fuller‘s presentation today, it’s that Artificial Intelligence is already disrupting the legal world. It’s up to legal marketers to make AI an opportunity. The most startling number Fuller shared was 360,000— that’s the number of hours of annual lawyer work saved by JP Morgan Chase’s software, “COIN.”

Fuller, Sr. Director of Legal Intelligence at ALM Intelligence, presented how AI is shaking things up during his west coast speaking tour with the Legal Marketing Association. However, rather than looking at AI as a threat, he showed how it could improve the quality of services provided to clients:

  • Use software to match up clients with the best-suited attorneys.
  • Understand what your clients want. From there, identify software that can automate certain production and deliver greater value to the client.
  • Find solutions that will free up lawyers from drudgery and allow them to focus on the work that matters most— solving complex problems and creating solutions for their clients.
  • Use software that will identify potential clients who will bring the most value to the firm. Hint: It’s not always the “obvious” choice.

It’s always an eye-opening experience to see things from our customers perspective. To understand what challenges they are facing and what opportunities we can help create for them. More than ever, that is through technology.



There’s nothing wrong with making mistakes, in fact I highly recommend it. However, if I make a mistake and I have no plan for preventing it from happening again, that feels pretty lame. One mistake I have made before, is forgetting if I am on a live installation or a staging installation. When I say live and staging, I’m referring to WP-Engine’s excellent system.

I made this mistake recently while working on a site for a friend, and it was embarrassing. I decided that a good way to prevent it, would be to add an obvious visual cue to alert the user when they are on a staging site. I found some time this week to write a small plugin that does exactly that:

See the yellow “hazard” tape at the bottom? If you click it, it fades out so it’s not in the way. It’s my way of saying, “Hey! You are on staging.”

Instead of hosting this plugin in our normal repository, I decided to host it on WordPress.org. That way I can use it on my friend’s site, in addition to our LexBlog sites. And so can you:

LXB Staging Reminder

Have you ever visited your blog and something looked funny or broken?
How about when LexBlog support told you we updated something but when you looked at your blog you don’t see the update there?

Before you send an email to support or pick up the phone, you should try clearing your browser cache. I’m not kidding!

What the heck is browser caching?

Browser caching is your web browser trying to be helpful and increase the load time of a website you have visited. When you visit a website for the first time you might notice it takes a second for the page to load, then when you visit the website again it loads instantly. This is because you browser has saved a record of the HTML, CSS, Images, and even JavaScript files so that the next time you visit the page all of the site’s assets don’t need to reload.

If you don’t see the changes/updates that were just made to your website, browser caching is usually the culprit!

Refresh arrows vivid colored flat icons in curved borders on white background
Clear the cache!

For tech support folks browser caching is pretty much the bane of our existence because it’s such a commonly missed step when trying to troubleshoot a website browser issue.  With nearly every support ticket I find myself asking clients if they cleared their browser cache as a first step, or reminding clients they need to clear their cache to see the changes in their browser. I’m not trying to be annoying, it really does fix the issue most of the time!

Not sure how to clear your browser cache? We have a support center doc just for you!



I’d say I’m pretty tech savvy (for a marketer), but from time to time I get stumped. Like the time I tried to install a fancy wifi system in my home. Tech support was summoned. So when I ran into an issue with our Live Chat widget yesterday, I figured it was me. Again.

We just rolled out a new feature for our customers on the Premier Managed Platform. Customers on Premier are managing multiple blogs with many email subscribers. In the past, a site administrator would have to visit each blog dashboard to receive their email subscriber lists. With this update, they can download all subscriber lists at once, saving a lot of time and effort.

I was excited to get the word out and used our Live Chat widget to pop up and alert users to the update while they were working on the dashboard. This form of communication can be great— the first time. The second, third and fourth time, however, is just annoying. We discovered quickly that the widget was popping up every time a user logged in, pretty much ruining my intent of communication.

When I reached out to tech support, I figured the problem had a simple solution. I was missing some step in setting up a proper trigger. But what we discovered was…a bug! And they’re still troubleshooting. Admittedly, I am kind of proud we discovered it.

I’m still waiting to hear if LexBlog will get our bug bounty. In the meantime, I am enjoying this moment until I inevitably cause a problem for myself that only tech support can solve.

Recently our reporting software, NewRelic, alerted us that some of our code was running slower than usual:

The graph depicts a dramatic decrease in performance on October 11.

I was able to trace it back to a recent update where, in order to make our code more flexible, I began to register and accept default values for various database settings:

New code to allow us to easily register default values for settings that have not yet been set.

Surprisingly, this added up to a palpable slowdown.  We have tons of options in our Apple Fritter theme, hundreds actually, so running this routine potentially hundreds of times per page load was turning out to be a drag.  Here’s what we’re doing now instead:

(Click the image to enlarge) If the value has not yet been set, we’ll actually set it to the default, instead of merely using the default.

See the difference?  If the value has not yet been set, and a default is available, I’ll use the default to set the value.  Therefore, in the future, we never have to go through the routine of locating the default value.

Front-end database writes like that are generally a bad practice.  To write is more expensive than to read.  But in this case, the database write is merely a gambit:

A gambit (from ancient Italian gambetto, meaning “to trip”) is a chess opening in which a player, more often White, sacrifices material, usually a pawn, with the hope of achieving a resulting advantageous position.

I’m paying a one-time penalty to never have to read the default value again.  You can see the subsequent reporting in NewRelic:

The original decrease in performance, followed by an even worse one, followed by restored performance.

Notice the spike in load time, followed by the dip.  The spike occurred on the first few page loads after I allowed for front-end database writes to populate a value.  After that, things actually accelerated to faster than they were before!

I’ve come to the conclusion that there are three basic blog layout types. This, after twelve years and several thousand blogs designed. Fixed width, Full width, and a Hybrid layout that combines elements from the first two. Each layout type has its advantages.

Layout Types: 1.Fixed 2.Full 3.Hybrid

A Fixed Width layout is very traditional with all content framed in nice and tidy like. An excellent choice for those of us who are a bit OCD. Like a pinstripe shirt they never go out of style.

The Full Width layout is all the rage and for good reason. Your main navigation and masthead span edge to edge allowing for more content and impactful imagery up top. Beautiful to behold on desktop displays and nice and clean when viewed on a mobile device.

Finally the Hybrid layout which takes its cues from the first two. The navigation and mast are wide-open. This allows for the use of some nice graphics or textures. The post area is framed in. Pulling your eye right where it needs to go…the content.

Of the three, Hybrid is my favorite. What’s Yours?

There’s cold brew on tap! I repeat there’s cold brew on tap!! THIS IS NOT A DRILL!!!

First stop in the office each morning.

This is what went through my head when Garry Vander Voort told us our new WeWork building has cold brew on tap (along with the mini alarms going off in my head).

I’ve never been much of a morning person because I’m usually up late into the night because my creativity/energy seems to peak sometime around 11 PM – Midnight. As a result I rely heavily on my morning coffee to help me feel like a human.

I’m also saving so much money on coffee each week. It’s a win thanks WeWork!

Behold the cold brew in all it’s splendor.

I have been a Google Fi customer for a few years now and I appreciate the flexibility on the pricing of the service and love the phones. Recently my phone has started dying, but good news, Google has the new Pixel 2 coming out. On the announce day I ordered one.

A few days later, our CTO Josh also ordered a phone as well, the same exact phone.

Yesterday Josh mentioned that his phone had shipped, while mine is still in some warehouse limbo. I thought, “Well that is odd, I ordered mine before Josh. Shouldn’t I get my phone first? ”

I emailed support at Google and after a few back and fourths I got a response from Google about their ordering process.

My response from Google

I took some additional time and reached out to a specialist here within Project Fi Support. This specialist works within our higher level of support, and truly the best place to take this question. After further review, I’ve been informed that orders are processed on a first come first serve bases based upon when the order was placed. Please know that we here at Project Fi are only privy to this information in regards to this specific inquiry.

So it is done on a first come, first served basis! That is great. So where is my phone? Something is going on at Google. Is it because Josh was a trading in an old Pixel and I was trading in a Nexus 6P? Is it because I complain too much? I just don’t know. The customer service dance continues with me seeking answers right up until I get my phone. Then I will be so excited that I will forget to keep complaining.

Customer expectations are hard to manage. I get that. It is a daily challenge for anyone in any business. But time and again, when I order products from Google, they under-deliver. I want to believe it is just a coincidence, that I am not on some Google list of annoying customers, but I don’t know. Josh got his phone a day early, exceeding his expectations.

At last check-in Josh has not even opened his phone, but he would like me to know that it is already probably the best phone he has ever owned.