2016 Harold Hotelling Memorial Lecture

The video from the 2016 Harold Hotelling Memorial Lecture has just been posted. This is an annual lecture that Lawrence Technological University hosts in my father’s memory since his passing in 2009. He was a faculty member there and I was fortunate to be able to attend in October before the election.

This year the lecturer was Julianne Smith, former Deputy National Security Advisor to Vice President Biden. It’s a really valuable look at some of the issues that our next president is going to face and I encourage everyone to watch.

The first 9 minutes is an introduction that covers some memories of my father, and every year I’m amazed at how fresh the wounds of losing him are. I have tears running down my cheeks listening to stories about him, reminding me of how much I miss him.

Scott also remembers that shortly after Harold died, and for many months after, he would have this need to go and speak to him. We were in an economic crisis in 2009 and he would start down the hall to go to his office and then regret that Harold was not there anymore.

That’s something I still experience to this day.

Keeping up with “modern web technology”

Chris has a pretty good point. When you sign up to be a developer, you are signing up to never stop learning. That is true no matter what you do in life, but doubly true in computers, and triply so in 2016 putting things on the web.

The fatigue is real. And the meta-fatigue. But each complication that we add to our toolbox needs to justify its existence. Especially new tools. Are we adding them because we need them or because we want an excuse to try them out?

When talking about “modern web technology” you could easily be talking about React, Angular, Angular 2, TypeScript, elm, async/await, Web Sockets, Web Workers, microservices, GraphQL. I can come up with some pretty good reasons for not using them.

When you find out what technologies Chris is trying to use–

–you may get a little more sympathy for his predicament. I did.

What can you do in a situation like this? Part of the job of a software engineer is to be able to justify your decisions. That means being able to point out the benefits that outweigh the costs, and being cognizant of both. The reason the build chain is so complicated is because each link in that chain adds value. If you want to use it you need to be able to explain the problems it solves.

That said, sometimes you just have to recognize when you’re in an environment that doesn’t want to change. Given that your career hinges on changing and learning, you should give a good hard look as to whether your current environment is long-term beneficial for your career.

One last thing on the subject of using work projects to try out new technologies – I kind of like the Choose Boring Technology camp. It’s may actually be better stated as “Choose Mostly Boring Technology” since it’s about limiting yourself to a one or few new technologies. But it’s critical to always be trying out new things. It’s critical that companies need to ensure that people have space to try new things. It’s critical to your career to have that space to try new things.

Photo credit Ashim D’Silva

Testing Code: Intentional vs. Incidental Behavior

Sometimes a maintenance programmer is another developer with an axe. Sometimes the maintenance programmer is ourselves after we have forgotten all about the project. I want whoever gets it to be happy and confident when they make changes.

Having inherited projects in the past (both from others and from past-George), I think it’s important to make sure that a project comes with good automated tests.

Hopefully, in 2016 that isn’t a controversial statement. I do want to explicitly enumerate some of the value tests provide the maintenance programmer:

  1. Testing forces us to simplify and decouple our code, which makes maintaining a system easier. If it’s hard to test, it’s going to be hard to maintain.
  2. Tests provide example usage of the code, so they serve as living examples of how to use the code.
  3. Testing infrastructure. It’s easier to add one more test when they already have tests for other parts. It also provides examples to mimic when someone is getting up to speed.
  4. Good tests define what behavior is intentional.

Let’s talk about #4.

Virtually all code has is intentional behavior and incidental behavior. Incidental behavior is what you get when a detail doesn’t matter to the functionality being developed. An example would be when your UI displays a list in whatever order the datasource provides it. You probably shouldn’t write a test for that; there’s no specified behavior.

In a codebase with tests for the intentional behavior, a maintainer can be confident that any changes they make aren’t unknowingly undoing past decisions. The tests answer the question “is it supposed to be that way?”

When retroactively adding tests (post-hoc testing) you run the risk of documenting the code instead of the requirements. If you find yourself writing tests with the goal of verifying the code works, you aren’t confirming that the code meets the requirements. You’re confirming that the code is the code.

Should you find yourself writing post-hoc tests, what can you do? Try to put yourself in the shoes of the original author. Use git blame to discover why the code was written. Write a test that verifies the original feature and no more.

Finally, I suspect that only testing intentional behavior is in conflict with 100% (or any) code coverage targets. If you have 100% coverage, either you are writing tests to cover code that isn’t part of the specification or you have a specification that is comprehensive to a fault.

Cyber roundup

The Cyber is big again. Huge. I think that Trump’s talk about The Cyber at this week’s debate got a bunch of people talking about cyberpunk. At least, that’s what it looked like in my feeds. I noticed a lot of posts about cyberpunk stuff which I’ve collected here:

Someone built an Ono Sendai Cyberspace 7 deck (the computer used by the protagonist in Neuromancer):

Cyberdeck64

They replaced the keyboard on a Commodore 64 case and stuck a Raspberry Pi 3 in it, but the design is obviously the best thing about it.

Someone else is using the cyberpunk aesthetic for designing their computer space:

Cyberpunk VR Battlestation

And of course someone took the time to adapt the concept art from Cyberpunk 2077 for the Trump campaign:

Cyberdrumph 2016

I wonder if cyberpunk is going to have a kind of retro-futurism revival. It is a sad reminder of the unstoppable march of time to think that the thing that was futuristic in high school is now retro. Time to invest in trenchcoat and mirrored sunglasses.

How to put Amazon Echo shopping list items in Wunderlist

First off, if you use iOS and don’t have an Echo, use Kitchen Sync for your shopping list. It’s organizes everything by area and works with iCloud so it’s super easy to share a list with your family. Plus Adam is a good guy.

We use Wunderlist for our shopping list, so I set up an IFTTT recipe to put our Echo’s shopping list into Wunderlist.

Here’s how you can too:

  1. Go to Mail to Wunderlist Settings and set your Gmail address to go to your shopping list.
  2. Add this recipe (be sure to put me@wunderlist.com as the email address):IFTTT Recipe: Add Alexa shopping list items to Wunderlist connects amazon-alexa to gmail

Some caveats: IFTTT checks the shopping list roughly every 15 minutes, so if something is time sensitive you’re better off using the Wunderlist app. It also doesn’t update the Alexa shopping list when you check it off in Wunderlist, but who looks at the Alexa shopping list anyway?

What I’m Drinking: Bell’s Oktoberfest

Bell's Oktoberfest LabelIt’s September so tonight I’m drinking Bell’s Oktoberfest.

Oktoberfests are sometimes generalized as VMOs because of the overlap between the Vienna Lager, Märzen, and Oktoberfest styles.

Bell’s Oktoberfest is a great beer for when the evenings are getting colder, or in our case just as warm but rainy.

The main thing you notice from an Oktoberfest should be the malt. I enjoy a caramel sweetness in the finish that stays with you, almost cloying, and when the color also evokes caramel. There are definitely dryer and lighter takes on the style too. Bell’s hits the malt notes I love.

The malt should be balanced with noble hops. I couldn’t tell you what Bell’s is using, however I recently had Devil’s Backbone’s Vienna Lager and loved the taste of Saaz hops in the style. As a point of reference, Saaz is the signature hop taste of Bell’s Oberon.

Another Oktoberfest I’ve loved, at the suggestion of my brother Charles, is Ayinger Oktober Fest-Märzen. That my be the best example of the style available. If you can find a bottle this fall I strongly recommend you pick one up. I also really enjoyed Flying Dog’s Dogtoberfest although I haven’t seen it in Southeast Michigan in a few years.

On the flip side is Sam Adams’ Octoberfest. It’s a super tasty beer! But it doesn’t have the toasty sweet malt or noble hops I’m looking for in an Oktoberfest. It might be because I have killed my taste buds and need more malt & hops, but I look for more in an Oktoberfest.

Are there any other VMOs I should check out?

Man Caves and Men

This Guy Studies Man Caves for a Living; Here’s What He’s Learned

There’s a lot of good stuff in here, but the most interesting thing to me was that a man caves are an aspirational space driven by loneliness. If you build it they will come.

Almost every guy tells me he’ll use it to “have people over and entertain.” The conversation gets awkward, though, when I ask him who he’ll have over. Because often, the men will explain, “I don’t have time to have friends over right now. I work a lot and I have children, so I don’t really have friends. But eventually this will be a neighborhood hangout for guys.”

I think it plays into the idea of man caves being a fantasy — a fantasy of male friendship and camaraderie. Research shows that men don’t have as many friends as women, and the kinds of friendships they do have are much less meaningful than those available to women. So maybe part of what they’re building with a man cave is a fantasy of different relationships with men.

Maybe man caves are a symptom of the loss of third places in our lives. We build home bars because our zoning laws prevent us from putting a neighborhood pub actually in a neighborhood. All these people are building a shared space in their home with no one to share it.

The piece also says a bit about the amount of control men feel they have over their spaces as well as their awareness of women’s experience of space in the home.

When I’ve asked straight men what role a man cave plays in their relationship, the most common answer I get is, “I feel like the whole house is hers. And this is a space for me.” When I follow up with, “Okay, but do you think she has spaces in the house as well?” They typically respond, “Absolutely! She has tons of spaces that are essentially hers.” When I press them on which rooms those are, they list off rooms associated with domestic labor, not with leisure — the kitchen, the laundry room, etc.

I think some of this has do with the fact that men feel as though the domestic space isn’t something they have ownership of. I also think it’s a result of men getting more leisure time than women in heterosexual relationships.

Me, I don’t have a man cave. I just have a basement office that I can hang ugly clown paintings, that has my work computer, gaming PC, some various computers I tinker with, a kegerator… OK, but it’s not a man cave because it’s not finished yet…

Photo credit: Cory Doctorow (CC BY-SA)

How Nextdoor reduced racist posts by 75%

In April, Nextdoor started a pilot program to see if it could change its interface to discourage its users from racially profiling people in their posts. A test group of neighborhoods were shown six different variations of the form used to make a “crime and safety” report for their neighborhood.

Some just saw the addition of new language: “Ask yourself: Is what I saw actually suspicious, especially if I take race or ethnicity out of the equation?” Some were asked to say in advance whether they were reporting an actual crime or just “suspicious activity.” Others actually had their posts scanned for mentions of race (based on a list of hundreds of terms Nextdoor came up with) and if a post did mention race, the user got an error message and was asked to submit more information about the person.

via How Nextdoor reduced racist posts by 75% | Fusion

I’ve never noticed any racial profiling on our Nextdoor community, but it’s not very high traffic (due to it splitting our subdivision up and an absentee lead). Still, it’s a really interesting approach when a lot of other social media sites are struggling with bad behavior.

Touch Disease

Today I learned I suffer from Touch Disease on my iPhone 6+. Symptoms include a touchscreen that doesn’t respond to your finger and a grey flickering bar at the top of the screen.

I thought my iPhone was just being weird but now I’m learning it’s an epidemic. The popular theory is that the chip responsible for dealing with multitouch is desoldering as the phone flexes.

In both the iPhone 6 and 6 Plus, the Touch IC chips connect to the logic board via an array of itty-bitty solder balls—“like a plate resting on marbles,” Jessa explains. Over time, as the phone flexes or twists slightly during normal use, those solder balls crack and start to lose contact with the board.

At least one Apple Genius has their head in the sand:

I’ve talked to other geniuses, I’ve talked to engineers via escalations, I’ve talked with management in touch with their higher ups. This issue is caused by logic board damage. And if you haven’t opened your phone, exposed it to liquid, or bent the enclosure, you won’t experience this issue.

✅ Haven’t opened my iPhone
✅ Haven’t exposed to liquid
✅ Haven’t bent the enclosure
✅ Starting to experience the issue

Meanwhile Touch Disease is now accounting for about 11% of Apple Store’s daily iPhone repairs. I really hope Apple does something to address this. Especially now that more folks are on BOYD plans and are starting to keep their phones more than 2 years (something I was planning on with my 6+).

Now is also a good time to be reminded that companies cannot legally void your warranty in the US if you repair your devices, but good luck getting companies to recognize that without a lawyer.

Photo Credit: Omar Jordan Fawahl (CC BY-SA)