Disable ⌘-C and change programming forever.

Posted on

I told some friends tonight about an idea I had years ago: disable copy-paste for all software engineers and you’d improve code worldwide overnight. Cut-paste is still totally cool. Feel free to refactor and move code around. But copy-paste… well, it’s just deadly. Copy-pasting leads to so many bugs, unmaintainable codebases and general code bloat. If everyone was forced to think more building reusable abstractions, these could be avoided. An example of a critical error probably (I don’t have proof) caused by copy-paste would be Apple’s SSL Key Exchange bug.…

Read more »

Getting Fit... the Peter Drucker Way

Posted on

2015 is coming to a close, and although it wasn’t a specific New Year’s resolution, I was able to get fit this year. Here’s what worked for me, it may not work for everyone, but I hope it helps give you ideas. I call it “The Peter Drucker Way” thanks to the apocryphal quote of his “What’s measured gets managed.” I started this process with a lot of myths in my head:…

Read more »

Rewrite speed is a terrible, no-good, very-bad metric

Someone on the internet is making the point that Go is awesome because they rewrote a Java service in Go in ¼ the time it took to write the original Java service. This misconception must be stopped once and for all. Off the top of my head: I’ve rewritten Ruby code in Java more quickly with more features than the original Ruby code was written. Same for Python. I’ve rewritten Python in C# more quickly than the original Python was written.…

Read more »

Typescript weirdness: function vs. => and "this"

Alright, I ran into a non-obvious problem with Typescript and want to share. I guess it can also be chalked up to “Javascript weirdness” but the second layer of Typescript confused me. I have basketball games and I want to create a quick dictionary of a team to all of their games. I wrote code like this: class Season { teamsToGames: { [teamName: string]: Array; } = {}; addGame(g : Game) { .…

Read more »

ALS, droughts and running the numbers

Posted on

The fad of the ALS bucket challenge has quickly given way to new thing: fining Californians who take the ALS bucket challenge. California’s in a drought. But that’s not really new. California has been in a drought since inception. Cadillac Desert and, of course, Chinatown cover the topic. The state has very few watersheds near where people live. So what’s up? How big of a deal is this drought? Should we fine people for washing their cars, hosing down their sidewalk, or, you know, taking this 5 gallon bucket challenge?…

Read more »

Remembering what "Technical Debt" should actually mean

“Technical Debt” is a common term thrown around in software development these days. And I think it’s almost always being misused. Everything that needs to be changed in the code gets referred to as “technical debt”. To determine the original meaning, let’s go back to the originator of the term, Ward Cunningham, and read his wiki on it. Note what he says there: During the planning or execution of a software project, decisions are made to defer necessary work.…

Read more »

SOA vs. user experience

This weekend, I pulled out wireshark on the new Sims 4 Create-A-Sim Demo. I was super impressed at how damn fast the community Sims were coming through and had to go behind the scenes. You can scroll this infinite list as fast as you can, and descriptions are there immediately, with the JPEGs fill in async. It’s insanely fast. Wireshark reveals a TCP data connection (not HTTP) is kept open to the EA servers and then the JPEGs are filled in from Akamai over HTTP.…

Read more »

Immutable data performance

Posted on

“Immutable” is a recent discussion point around the water cooler, and it’s not my imagination when I say “recent”:

I think this comes from the functional programming rage – especially in Haskell – where, since all of your data is immutable, every function is composable and concatenatable since there are no side effects. Neat. It reminds me how people did this years and years ago to make image manipulation much faster with tools like Shake.

Read more »

Why should people get paged at night *ever*?

Posted on

Someone over at Etsy posted a nice “Sleep Driven Development” article and it brought to mind my personal jihad against pager alerts. There are a handful of major, well-known tech employers that adhere to “DevOps” or “NoOps” practices and have all engineers on pagers. If you ask exiting engineers at these certain companies what they don’t like about working there, it is very often mentioned that being on-call is one of them.…

Read more »

"Premature optimization" doesn't mean what you think it means

Posted on

Junior developers often seem want to discuss “premature optimization” with me when I bring up things such as scalability and performance. For those not familiar, here’s the entire context of Knuth’s quote. He was talking about gotos! People were using goto statements to improve efficiency and he felt that it was possible to get nearly same efficiency without using them too early when coding. This is entirely different than what Hacker News, Reddit et al.…

Read more »