Kekeno looking back

Let’s be honest, 2019 feels like it has taken forever to wrap up, so looking back seems like a futile effort. And yet, since one main purpose of Entropy Arbitrage is to hold myself accountable, it seems worthwhile digging through some of the things I’ve learned in the last 363 days.


This year, I noticed a few interesting things about how people consume and process popular culture.

Nobody Gets Mister Rogers

A whole bunch of people grew up watching Mister Rogers’ Neighborhood but apparently learned nothing from the man. Obviously, I’m referring to the “civility discourse” floated (mostly) by right-wing pundits that boils down to their wanting to be treated like fragile little children while attempting to demean and harm segments of the population.

We have articles suggesting that we can’t guess what Rogers would think of today’s political climate, even though his show’s very first week on national airwaves (February 19, 1968) included Neighborhood of Make-Believe stories wherein the egocentric, tempermental, and very paranoid King Friday XIII terrifies the other neighbors by stepping up border patrols to prevent anybody from getting in who might want to change something. If you’ve never seen it in re-runs, it’s the first five episodes available on Amazon Prime. Joanne Rogers has also said that her late husband would probably speak out against Trump, though weirdly suggests that a man preaching inclusion and curiosity every day for decades tried not to be political. But apparently, there’s just no knowing what Rogers might have thought of Trump, despite the evidence.

Also, if one wanted to learn how the Rogers brand of civility worked, it would be worth spending one’s time starting with the rules the show created to get points across. First of all, note that they had nine steps. Second, notice that there are steps to avoid absolute judgments and to make sure one is being inclusive. When people who lie, pass absolute judgments, and exclude anybody who’s different are demanding that they be treated with care, tolerance, and inclusion, there is no reason to give it to them, and I think Rogers would have understood that, despite his soft voice.

Disney Isn’t on Your Side

Disney is very close to being a monopoly and is very comfortable in that role. With its purchase of Fox, Disney now has more than twice the marketshare of its nearest competitor (NBCUniversal/Comcast) and at the same time has been building its entertainment supply chain, owning popular intellectual property (Marvel, Star Wars, the Muppets, etc.), scripts, production, distribution, and now the “last mile” into homes (ABC, Disney+, and Hulu). That’s what’s called “horizontal integration” and “vertical integration.”

How is that shaping up for consumers? Many of them feel compelled to watch all the content in the franchises they enjoy, even when they don’t particularly care for what they’re watching. They don’t feel like they have a part in their favorite franchises, whether it’s in terms of race, gender, culture, or sexuality. Fans feel like the movies are repetitive.

Note that, in the links, none of these criticisms is at all new. What’s new is that Disney knows that doing better on these issues might lead to bad press in conservative-leaning media and lower stock prices on one hand, while they’ll rake in the same money from people who feel excluded, because the movies are still adequate and marketed well on the other hand. In other words, their comfortable quasi-monopoly position means less innovation in the industry, so don’t expect them to suddenly create movies that reflect the world out your window.

People like to blame the Chinese market for this, but the reality is that China is only an excuse to keep doing business as usual, not the cause. The cause is that they don’t care.

The only way to change this is if people stop spending money on them. Speaking of which…

Ethical Consumption Comes to Media

For years, I’ve heard people talk about and act on desires to shop for food, goods, and services with an eye on the ethical ramifications of purchases. That is, people will try to be careful about buying meat from farms that treat the animals well or limit purchases of devices made with conflict minerals. People have often chosen software based on the business practices of the companies behind them. I try to do that, myself, where I can see a choice.

That’s old news. However, in 2019, I have started to see this impulse start to form around media consumption, too. I know people cutting out (or not getting onboard with) streaming services like Disney+, Hulu, Amazon Prime, and Netflix, because of how their parent companies do business.

That’s in addition to the various initiatives to take K.T. Bradford up on her challenge to try to temporarily read books by authors who aren’t straight, white men, since other authors are so often overlooked by both publishers and reviewers.

We’re not near anything like a tipping point, of course, but this seems to be a new force in culture worth taking seriously. Because, as mentioned, Disney isn’t on our side in any fight, it’s worth sometimes giving Disney and its ilk a break and seeking out stories from creators that are on the right side of history.


These are mostly handy things I’ve learned to do or learned about in the past year.

Unicode Can Be Fun

I have already given a pretty thorough rundown of Unicode’s decomposed normal form, so I won’t get into it, here. But the idea that someone made it easy to strip out and add diacritical marks to text amazes me.

Jekyll Is Solid

As discussed previously, I spent well over a year messing with potential blogging platforms, only to discover that one of the oldest static site generators was almost exactly what I wanted, even to the point that adding features only took a few hours of research and work.

I can easily see using Jekyll in the long term and probably using it with other projects. But like I said a few weeks ago, if something turns up that’s better, all the posts are maintained in Markdown, and so are extremely easy to move to a new system.

Federated Services Are Interesting

I have been eyeing ActivityPub for most of this year, trying to get a handle on its features. I don’t quite know what I want to do with it, yet, but the protocol and broad approach seem widely applicable.

More on this as I find a project that could benefit from server federation.

Libravatar Looks Like a Winner

I mentioned that I want the commenting system to eventually work with Libravatar in order to have a wholly Free Software stack. I took a very quick look at their API and, excluding the parts related to federation, it took maybe ten minutes to create a webpage that could request avatars based on an e-mail address. That’s not bad at all.

Profile Generation Is Tedious, but Useful

Technically, I started work on this just before 2019 started, but I have spent a lot of this year building a script to generate a reasonable-looking profile for a randomly-chosen, fictional person.

The process has become surprisingly detailed:

  • Count the total population listed on Columbia University’s SEDAC maps.
  • Pick a random number less than the total population.
  • For each degree of longitude by degree of latitude, subtract its population from the random number until it’s less than zero.
  • Use the coordinates the random number pointed to as the person’s home.
  • Find the nearest country to the coordinates.
  • Use Von Luschan’s chromatic scale to get a sense of the person’s complexion.
  • Look up the five nearest cities to our person’s location as their likeliest homes.
  • Look up the country in the CIA World Factbook to find demographic breakdowns, using them to guess the character’s demographic attributes such as gender, age, ethnicity, religion, literacy, and so forth.
  • Use the nationality and gender to get a possible name from UI Names and, if necessary, transliterate the name for my mostly-monolingual eyes to process.
  • Use global reported percentages (probably wrong) to estimate other demographic features, such as gender/sexual minority representation, physical impairments, and psychological impairments.

This tool became extremely handy when I wrote my book, because (as I discuss in the post) it gave the characters more life than me just picking the first name to come to mind (probably “Bob”) and not giving any consideration to who the character might be and what they might look like. I only rarely state that information explicitly in the story, but it was nice to be able to “see” my characters and use that to give them some personality beyond their function in a scene.

Ruby on Rails Is Still Fun

For about three years, I worked exclusively in Ruby on Rails to launch a few web applications and loved it. Then I went back to office jobs and mostly walked away from the Ruby ecosystem, because my area is very big on Microsoft technologies.

But at my last job, we had several conversations about the limitations of ASP.NET. Always recognizing that a lot of features and thinking of ASP.NET’s MVC system come from Rails, I’ve wanted to get back there to see how the state of the art has advanced since I last looked in, since everybody else seems to have been following it for the last fifteen years.

So, now that I’m no longer at that job, I have been tinkering with Rails again using React for the interface and really like what I see. Hopefully, I’ll have new services to announce in the near future. Maybe one will even be Federated.

CEFSharp Is Fussy, but Worthwhile

One of my bigger work projects, this year, involved a problem with .NET’s WebView control. We started seeing DCOM errors when our desktop application ran overnight on some end user computers. Nobody seems to know what this is, but we knew that WebView is based on Internet Explorer’s Trident HTML rendering engine. While Internet Explorer is still technically maintained, it’s unclear how seriously Microsoft takes it how that interacts with any updates that .NET might get.

So, we looked into alternatives, finally landing on CEFSharp. It took some work and the documentation isn’t always 100% clear, but I eventually figured out how to make JavaScript-to-C# calls, make C#-to-JavaScript calls, and (with a lot of help in a GitHub issue) even stop the strange crashes that resulted from all the tweaking I needed to make the other two things work.

I can’t provide any of that code, because it was for my job on a contract for a client, unfortunately, and no longer have access to it, but I can tell you that CEFSharp worked far better than the default .NET control.

Linux Still Has Its Problems

I’ve been using Linux at home for about ten years. I have been very happy with it, with only a couple of small glitches along the way, nothing destructive.

Unfortunately, this year, I’ve been unable to play DVDs no matter how many times I re-install the (completely legal) codecs and have been having all sorts of strange problems (slow downs, failure to recognize, etc.) with a new external hard drive I’ve been trying to move data to. My desktop session also sometimes glitches.

Granted, I’ve had problems like this with Windows, too, but it’s still a nuisance when there’s no indication as to where the problem might be. Without any real information to provide, other than a suspicion that it’s related to switching to the GNOME desktop, it seems like a waste of time to file bugs.

Technology…Isn’t Technical

Those of us working in engineering and engineering-adjacent fields are immersed in a culture of “hard skills” (tools and techniques you work with to ship a product) and “soft skills” (dealing with people). But that’s not really true.

Yes, the job does require being able to work with specific tools and understand their trade-offs. But as I look at things more, software development especially, and possibly all engineering, more closely resembles anthropology than other fields.

I’ll probably dig back into this in the future as I study up, but consider how closely the five sub-fields of anthropology map to shipping an application:

  • Cultural Anthropology studies how people make sense of the world, which is a huge part of any engineering effort, albeit often limited to the problem domain.
  • Social Anthropology studies relationships, which can apply to product architecture, how the engineers interact, and how users will interact with the product and each other.
  • Biological Anthropology examines factors that affected human evolution and lead to variation in the population, which sounds like an unlikely connection, except that it’s a big part of ergonomics and user experience.
  • Archaeology studies history through what people left behind, which is comparable to dealing with legacy code and exploring systems that need to be automated.
  • Linguistic Anthropology tries to understand the processes of communication, which is central to any development work, if the product is to be at all usable.

Still hung up on the technology? Keep in mind that the idea of design patterns comes from Christopher Alexander’s A Pattern Language, a book about designing spaces to be more useful and better able to handle traffic.

So, if our “hard skills” look this much like traditional “soft skills”—you can take almost any of these descriptions and add “but with code” to turn it into programming—are they really so hard?


And I’ve learned a thing or two about myself, I think.

Writing a Novel Is Possible

While I’ve worked on a lot of things and sipped some projects on a tight schedule, up until I finished Seeking Refuge, I never would have imagined that I could put together a mostly-complete novel—or, really, any creative writing that isn’t purely mechanical and descriptive—let alone finish the draft in a month.

Don’t Get Attached to Technology

After decades of advising people to let technologies come and go and only use what actually works, I somehow cornered myself into trying to produce this blog with Gatsby, even when I kept running down blind alleys and needed to start over.

Had I been more skeptical of Gatsby in spite of the good (and, I think, well-deserved) press and looked for a simpler alternative sooner, this blog could have been up and running in Summer 2018!

Job-Hunting Is Annoying

I already knew this, of course, but looking for a job is an exercise in frustration. Among other problems I’m probably forgetting:

  • Companies seem to expect to have the only job candidates are interested in, while wanting to treat candidates interchangeably. One person asked me what it was about the job posting (which I applied to weeks prior) that drew me to apply, but was clearly only looking at my work history for the first time.
  • Speaking of which, keeping track of these jobs takes a lot of effort. I’m pretty sure I’ve applied to some jobs at least twice and I don’t even think they were that good. Add in scheduling the tests and phone screens as well as staying on top of the latest postings and it’s more than a full-time job, itself.
  • Similarly, job postings have always been unclear, with the list of “requirements” that may or may not be things I need to know well to be considered. Since we all know that this style is often a problem for candidates from non-traditional backgrounds, it’s a drag to see that nobody is fixing the problem by talking about “skills you’ll learn” and “skills we hope to need in five years.”
  • So many companies that clearly have money want to cry poverty. I spent the last four years at a small consulting company that needs to keep its rates low to prevent clients from defecting, so I took an artificially lower salary for the potential learning opportunities and because I liked the team. In this job search, several companies pitched me salary ranges that were less than that, without any opportunity or team.
  • Getting sick derails everything. I got hit by the flu in the middle of this, derailing me for a few days from being able to talk on the phone or focus on code to handle screening tests. A lot of opportunities that seemed to be going well needed to abandon me, which is understandable, but a lot of wasted work all around.
  • Too many companies are planning for an exit rather than sustainability. Of the companies that seemed to treat me like a person and didn’t try to offer me a salary from a decade ago, when I asked questions about the business model, about half of them told me that their expectation was to bleed money for a few years and get acquired by a much larger supplier who could absorb the cost.

Which is all to say that I need to hold my nose and dive back into it, so that I don’t miss the one job that’s being offered by people who are worth working with.

Just Get the Flu Shot

As mentioned, I got slammed by the flu for a few days. I rarely get sick and I don’t generally interact with many people, so I don’t usually bother to get the vaccine. But I was out of action for close to a week and could easily have spread it wherever I went the day I caught it, and that’s unacceptable. It’s also mostly preventable, so I’ll need to start doing that preventative work.

I Don’t Actually Like Quora

I was someone who thought Quora was one of the few companies getting things right and so spent a lot of time on the site interacting with people, writing over six thousand answers and an untold number of comments. This year has been big in that context, as I watched myself go from visiting daily to twice a week to weekly maybe every couple of weeks to just not bothering to go back.

It used to be a site that cultivated a good community and treated people well. However, in the quest to earn money, it’s become yet another advertising-funded social media site with all that implies. So, I’ll probably still check in from time to time, on the chance that anybody has sent me messages that I’d like to respond to—there are obviously still nice people there—but I’m much happier without the rest of it.

I may dig deeper into these changes, someday soon.

And, since Free Your Stuff still worked (Quora keeps changing its site to stymie these efforts) when I was still writing there, you can bet that edited versions of a lot of that content will end up here, eventually.

My Standards for People I Like Are Too Low

In the past year, I heard myself claim that a specific company was doing a lot of work to improve its approach diversity and inclusion, because an executive told me they were, despite all the evidence to the contrary, like using the same hiring techniques to hire the same kinds of people from the same place. I should have spotted that.

I also had a failure of judgment, I think, when a community I was a part of (which I won’t bother to name) was taken aback by accusations of abuse against the community’s central members. I spent a couple of weeks ignoring the claims outright, because they seemed intrusive and the base assertion sounded like clickbait. When I finally realized I should know what was going on, I excused my continued association with the community as “but this was a long time ago, and they seem like they’ve done a lot of work to improve.”

Then the responses came. First, almost everybody involved chimed in to say some version of “everything here is true, except the parts that make me look bad,” which wasn’t great, but I convinced myself that I wasn’t there and didn’t know any of the story. Then, the claim was that everybody involved needed to “work from the outside-in,” ignoring the worries in the community because they thought it was more important to talk to their friends about it, first. The claims that they didn’t understand what abuse looked like came after that, along with evidence that they weren’t bothering to read the actual accusations because it made them too uncomfortable.

(Hint: Facing the bad things you’re responsible for should be uncomfortable. That’s called learning.)

As the misogynist defenders started spouting off the “maybe the accusations are all lies,” “at least it wasn’t as bad as what this other person did,” and “why isn’t everyone already satisfied?” rhetoric, the central person gave an interview where the prior admissions and public apologies (never a private apology to the wronged person, which seems like a no-brainer) were replaced by flat rejections and public relations-friendly claims that memories differ, alongside a marketing stunt that “profits” from an upcoming product would be donated to RAINN.

Now, I donate to RAINN, myself, so I don’t fault the choice of charity. But I do fault the weasel-word “profit” on a digital product (is it revenue minus cost? minus expenses? minus the amount they want to save for a rainy day?), putting the onus of the donation on customers instead of taking it out of pocket, and making that decision on the heels of the sudden denials. It’s dishonest and completely opaque.

I should have realized much sooner that I was excusing a lack of growth and willing perpetuation of issues, just because I liked their personalities and work. It’s only the difference of a few weeks, but I gained nothing from those weeks but grief.


Like any year, there were some losses and some wins. But there’s one important thread through a lot of these bits, I think: Growth takes affirmative effort and isn’t something that just happens, whereas it’s very easy to neglect yourself into bad habits. That’s a good lesson for all of us, I think.

Credits: The header image is Kekeno by an unknown photographer from PxHere, made available under the CC0 1.0 Universal Public Domain Dedication.