Back With Tim

I returned on the podcast with my good friend Tim Ferriss, by my count the sixth time we’ve recorded together, but the very first time we did it in video! Tim asked me to bring five things I’m excited about, five things I’ve changed my mind on in the past few years, and five things that are absurd or ridiculous but I still do, and that ended up being a pretty fun anchor for a two-and-a-half hour conversation, which you can watch here:

Or listen to on Pocket Casts or any podcast player, thanks to open standards:

I ended up having more than five things for each list, especially the excited one, but tried to edit it down. This was a very vulnerable and personal conversation for me, which I think was possible because we’ve known each other so long at this point and Tim made it really easy and fun to open up. We discuss everything from open source to kids to my upcoming sabbatical.

Coincidentally, this was episode 713, which is the original area code for Houston! We didn’t plan that but I think that’s so cool. I’m also going to watch his episode with Kevin Rose who he’s also very close with, I always learn new stuff from those two.

Livestream Tomorrow

About eight of the speakers including myself are going to be doing a livestream tomorrow from 2 to 10 UTC, or what would be 9am to 5pm in Bangkok where the inaugural WordCamp Asia was supposed to happen this weekend.

We’d all much rather be in person, but I do think there is a silver lining in us learning how to do official WordPress livestream events that can be accessible to everyone all over the world, following in the footsteps awesome virtual events like WordSesh.

Another Semester

It is with a slightly stuffy nose that I will start my third semester of college tomorrow. For the curious here is my schedule as it stands now, as much for my own reference as anyone elses.

  1. Monday
    • 10:00–11:00 — 3310: Introduction to Political Theory, taught by the prolific Ross Lence. AH 302.
    • 11:00–12:00 — 1336: U.S. and Texas Constitutions and Politics, taught by my favorite instructor of last year Dr. Little. PGH 350.
    • 2:30–4:00 — 3319: Politics of Social Policy, by Dr. Lineberry. PGH 347.
  2. Tuesday
    • 10:00–11:30 — 3332: Philosophy of Language, Dr. Saka. AH 205.
  3. Wednesday
    • 10:00–11:00 — 3310: Introduction to Political Theory. AH 302.
    • 11:00–12:00 — 1336: U.S. and Texas Constitutions and Politics. PGH 350.
    • 2:30–4:00 — 3319: Politics of Social Policy. PGH 347.
  4. Thursday
    • 10:00–11:30 — 3332: Philosophy of Language. AH 205.
  5. Friday
    • 10:00–11:00 — 3310: Introduction to Political Theory. AH 302.
    • 11:00–12:00 — 1336: U.S. and Texas Constitutions and Politics. PGH 350.

As you can see it’s a little light, but that’s by design as I’d like to devote myself as much as possible to excelling in these courses, which by virtue of their instructors should be pleasantly challenging. Also playing in two or possibly three big bands, developing a new business, and moving WordPress forward, I knew that my extra-curricular commitments would be high and I didn’t want to over-commit myself (and possibly get ill again) like I did last semester.

Snaps Along the Camino

I walked a week’s worth of the Portuguese path of the Camino de Santiago with a few friends, which was a nice bookend to my Rebirth and Yellow Arrows post at the beginning of last year. My feet are sore, and I have the first significant knee pain which has given me newfound empathy for the people I love who struggle with their knees. I traveled light and just brought an iPhone XS as my camera, and these are a few snaps of things I saw along the trail.

Continue reading

Stylish Thumbs and Navigation

On the last post I had decided to do something I do occasionally, embed some thumbnails from the photolog in a relevant post. While I was writing the post I thought to myself, “Man this thumbnails are going to look funky, I should center them with <p align="center">.”

Blasphemy! I know. Forgive me, I was tired. Still, align="center"? That is so last decade. So I decided to give the paragraph a little class, postthumbs, which to me describes the content of the paragraph and is something I could see myself reusing. What follows is trying to add a little style to some simple thumbnails.

I’m a fan of the double border look for thumbnails, a thick white border surrounded by a very thin darker border. You see it done all the time, for example Rannie and Christine, but in both cases the border is actually part of the image itself.

This is cumbersome for several reasons. First, this may be geeky of me, but it seems like it’s violating the principle of separating content (the thumbnail or picture) and the presentation (the border). In addition this technique is rather inflexible. If Rannie decided tomorrow that he wanted orange and green borders instead of the white and black ones he has now he would have to regenerate every single thumbnail. Since I suspect both Christine and Rannie do this effect in Photoshop, this is a pain however you cut it, even with heavy batch action.

So the solution is CSS. If you remember the box model you’ll see that this effect should be rather easy. We can just put a background on the element and it will show through on the padding, then the border goes outside that, creating the effect of a double border.

How I do these sort of things is I create an HTML file on my desktop with the generated code from whatever page I’m working on and then I use it as the preview in the excellent TopStyle 3.1 so I can see whatever changes I’m making to the design live. In my opinion this is the only way to design with CSS. The only downside is right now I can only preview things in Internet Explorer because the Mozilla object it calls doesn’t seem to work quite right with 1.5 betas. However for most projects getting it working in IE first is the most realistic thing to do.

So let’s take a look at the code we’re going to be styling:

<p class="postthumbs"><a href="/p/9-9-2003/DSC06440"><img src="/a/9-9-2003/DSC06440.thumb.jpg" alt="The front of my new business card." /></a> <a href="/p/9-9-2003/DSC06439"><img src="/a/9-9-2003/DSC06439.thumb.jpg" alt="The back of my new business card" /></a></p>

So my first inclination was to apply the background and border to the anchors (the <a> element). After playing with the colors for a bit here’s what I ended up with:

.postthumbs {
  background: #eef5c5;
  border: 1px solid #e7f3a5;
  border-left: none;
  border-right: none;
  text-align: center;
}
.postthumbs img {
  padding: 6px;
}
.postthumbs a {
  background: #fff;
  border: 1px solid #cde44e;
}
.postthumbs a:hover {
  border: 1px solid #8a9f18;
}

It did exactly what I was looking for in the preview, and it allowed plenty of flexibility and did exactly what I wanted to do. Let’s talk a little about what the above code does. The first class is for styling the entire paragraph, which fills up all the horizontal space available to it. The first rule gives the whole thing a background, the second rule puts a one pixel solid border on all sides, and then the third and forth rules remove the border from the left and right side. Finally we say to center everything. Occasionally I’m asked why I apply the border to all sides and then remove it instead of just having simply border-top and border-bottom rules. The simple answer is then whenever I changed the color or thickness or style of the border I would have to change it in two places, and this way I only have to change it in one place. I think it’s roughly the same number of characters too.

The second selector says that any images inside of anything with a class of “postthumbs” should have 6 pixels of space around it. Then the next two apply the white background and a border that changes when you hover over the anchor.

We’re done, right? Not quite. As soon as I loaded it up in Mozilla I noticed that the white background and border were, for lack of a better term, bunched up at the bottom. I suspect that for some reason that where Internet Explorer put the anchor “box” around the entire image Mozilla just put the box around what looked like where it would be if there was text there, so the font size (12 pixels) plus the line height. Generally in cases like this I assume Mozilla is right and IE is just being overly forgiving, so I find a workaround. I’d like to find the exact reason for this behaviour, but I don’t have a lot of time right now and the Mozilla Bugzilla interface is so painful.

So the previous method looks funky in Mozilla, but a solution quickly came to mind. If I put the padding, border, and all on the image then that should avoid all problems. I could even keep the hover psuedo-class on the image even though IE users wouldn’t see the effect. Here’s the final code:

.postthumbs {
  background: #eef5c5;
  border: 1px solid #e7f3a5;
  border-left: none;
  border-right: none;
  text-align: center;
}
.postthumbs img {
  background: #fff;
  border: 1px solid #cde44e;
  padding: 6px;
}
.postthumbs img:hover {
  border: 1px solid #8a9f18;
}

As you can see this is a bit less verbose and generally simpler to understand. What we have is a consistent look in IE and Mozilla and enhanced functionality in more technologically advanced browsers, which is something I’m perfectly comfortable with.

In other news the links on the page are no longer bruised blue and purple, but rather some shades that I think match better. I’m a big fan of :visited link states as it can be very useful when browsing and is also interesting to see links you’ve already visited on other sites. I usually make visited links a little darker, which seems to delineate them clearly. Another common technique I’ve seen before is to not have visited links underlined, which I think is also nifty. However sometimes I see :visited states on site navigation, where it is nearly useless.

Navigation has started to flesh itself out, but it still has a long way to go. I’m going to have to reevaluate the site’s information architecture and reassess what sections could be combined and which need to be retired. There is also the question of what to do with all the contemporaria I kept in my sidebar before, and I’m not quite sure yet. I think maybe a nested sidebar that you can turn on but is off by default. I’m using these changes to give Dreamweaver MX 2004 a solid run-through and so far I’ve been very satisfied. It’s nothing revolutionary, and many of the new features they’ve been pushing don’t really appeal to me, but it has the polish of a mature product that I feel comfortable spending a lot of time in. I would have called it 6.5, but then again over at WordPress we put major functionality upgrades and changes in to hundredth point upgrades.

Today the Jetpack plugin turns five years old. Who woulda thunk it? It’s one of the most popular plugins in WP history, and sites that include it as part of their WordPress install are more likely to to have engaged and active users — we’ve even seen it reduce churn on major web hosts. While there’s been a lot that’s happened in the Jetpack plugin so far, what’s around the corner has me even more excited. 😀 🚀 P.S. Check out that new domain.

Account for Externalities

When I studied economics, one of the concepts that struck me the most was the concept of externalities. This International Monetary Fund post explains it well. In short, externalities are costs or benefits of an economic activity that affect third parties who did not choose to incur them, leading to a divergence between private and social costs or benefits. They’re spillover effects—positive or negative—that the market price fails to reflect. A classic example is air pollution from a factory, where nearby residents bear health and environmental costs not included in the price of the factory’s products.

Open source is full of externalities. On the positive side, adoption creates ecosystems of developers and provides many paths of distribution. On the negative side, there’s often underinvestment in the very projects that sustain the ecosystem. I have a lot of empathy for why, when open source meets finance and private equity, things can go sideways. You can look at a business built on open source and see seemingly amazing margins—efficient R&D that compounds in a DCF model. A percent here or there over many years really adds up.

My plea to investors in open-source businesses is this: when a business is built on top of open source, incorporate a restorative investment percentage back into the projects critical to the end-user experience of what you’re offering customers. In WordPress, we call this Five for the Future, but it doesn’t have to be five percent; it could be 0.1%. Plan for it when modeling your expected IRR hurdle from an investment. Then, a few years down the line, when the small percentages start to add up, you won’t face a big catch-up or gap.

This underinvestment is itself an externality. It doesn’t appear on the balance sheet, but it can manifest in black swan events, such as security breaches or remote code exploits. Technical debt is one of the largest unaccounted-for externalities in the world today. Engineering, in the long run, is primarily a craft of maintenance rather than creation. The bulk of the cost of something comes from its upkeep over time.