World of Beeps

I recently upgraded the family Canyonero to a more recent model. The old one was a 2009 model, so I decided I wanted a newer one with better gas mileage, bluetooth audio, Android auto, and other modern features. This car beeps at every possible thing that can happen during normal operation of a car. Get close to something, cross over a line on the road, etc. I pull up behind a car in a drive-thru line and it starts beeping.…

Read more »

Consoles, what they are, were and could be.

Posted on

Update: It’s been brought to my attention that I left out discussion of the contentious PS5 SSD technology. I should have mentioned it. Believe it or not, my intention here wasn’t to make a flame war. The demo looks cool, but I don’t have much of an opinion on it except to say that consoles can generally offer a more optimized platform for developers than general PC hardware.…

Read more »

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 »