Towards an understanding of technical debt – Laughing Meme

I’ve spent the last few years rather flippantly stating, “Technical debt doesn’t exist.”

What I was trying to say was, “I’m deeply uncomfortable with how our industry talks about this thing, I think it’s probably harmful, but I don’t know quite how to express what I mean. Also, given that everyone seems to be really focused on this tech debt concept, I’m kind of worried that the problem is me, not the term or the industry”.

When I first heard Peter Norvig say, “All code is liability”, that felt closer to right.

via Towards an understanding of technical debt – Laughing Meme

Ubuntu on Windows

Windows 10 Anniversary Update came out last week. I haven’t heard very many folks talking about  one of the most interesting features I’ve seen from the New Microsoft: Linux.

I think part of the reason people aren’t excited is because they don’t understand what this is:

  • It’s not a virtual machine
  • It’s not a container like Docker
  • It’s not Cygwin – you can run pre-compiled ELF binaries

This is basically WINE in reverse – it translates Linux system calls to Windows system calls at runtime. That means it can run pretty much anything that Linux can. To take it for a test drive, I installed nvm and node, then Calypso and then ran make run. It worked! (I had to sudo apt-get install gcc g++ make first, but that’s just more proof that this is Ubuntu)

I love developing on Unix-like systems, and OS X macOS has been a great balance of a Unix system with good consumer support.  However I’m concerned that so much of Apple is focused on iDevices that they will start to care less and less about computer. As of August 23, it’s been 462 days since they have updated the MacBook Pro, and they’ve discontinued the Thunderbolt display.

Meanwhile, Microsoft is open-sourcing things left and right. And now actually running Linux on Windows, something that 10 years ago would have sounded ridiculous. It’s not perfect – the terminal window still sucks compared to iTerm or even – but now you can use a real OpenSSH instead of PuTTY. Maybe soon I can live the dream of the same machine for development and gaming.

The funny thing is that IBM tried this with Windows 20 years ago. IBM had OS/2, which had a Windows compatibility layer so that OS/2 could run Windows 3.1 apps. This backfired for IBM – as a dev if I have to choose between writing an app for OS/2 or Windows, why not write for Windows since it will run on both? A comment on Hacker News claims that the Linux subsystem was originally developed for Windows phones to run Android apps. Maybe Microsoft chose not to go down that path for fear of the same fate as OS/2 Warp?

I strongly recommend anyone who likes Linux command lines to give it a try to see what works and what doesn’t (I had to manually install the update first). There are a lot of shortcomings but if it’s supported this could lead to more devs switching back to Windows.

I’m an Automattician

At the beginning of August, I joined Automattic, a company that is closely tied to WordPress (but they are not one in the same). That probably means I should blog more.

I got excited about working at Automattic (or “a8c” as in an “a” followed by 8 letters followed by “c”) after talking with my once-and-future coworker Drew. Drew joined a8c last year and we were talking about how I love open source and the open web. He pointed out that a8c was all of those things and I should really look at signing on. The only hurdle was the hiring process.

Automattic’s hiring process is well documented (hn discussion) but appears to have evolved since that was written. My own process was résumé, then chat on Slack, then code test, then paid trial project, then a chat with Matt Mullenweg on Slack. Happily, that resulted in an offer and here I am.

The trial project is a great way to get to know how the company works, so you can get a feel for if this is really a place you want to work. Remember – interviews should be as much about finding out if you want to work there as a company finding out if they want you to work. Both parties are taking a risk with an accepted job offer. A trial project adds a lot of information which removes risk.

I’d love to tell you more about what I’m doing as a JavaScript engineer at a8c, but I’m not actually doing it yet. Everyone’s first 3 weeks is the same: support rotation. A couple days of training and then you are thrown into the deep end. It’s a really good exercise (and that word fits, since it’s something that creates growth even if it’s tough); it teaches you a lot about what users are doing and a lot about what goes on behind the scenes. It also communicates that the company really values user experience in a way no mission statement can.

I don’t know if the support rotation would work at other companies but it’s been a better on-boarding than I’ve experienced anywhere else. It might only work because WordPress is already familiar to new hires, unlike the financial services companies I’ve worked at in the past. It might be the culture of using internal blogs and chat so that there is a ton of searchable documentation. There’s also a tech talent war. I wonder if other companies would be able to hire if they said that you’d start off doing front-line support (and I wonder how many big egos a8c has avoided by warning new hires they’ll have to do front-line support).

I’m really excited to be working at a fully distributed company and at a place that believes in making the web a better place.

In Life-Imitates-Snow-Crash News…

E-residency: The power to choose your nation

At the time of writing, the e-residency project has just come out of its beta stage and has been fully live for two months. During the 60 days more than 4,000 people have signed up to become members, doubling the target number that was set for twelve months. Kotka may be getting carried away when he suggests that “hundreds of thousands, or millions will come after three or four years” but there is an element of truth to his words when he says that the scheme has “already found its place in history”.

By paying a paltry 50 euro fee anyone, anywhere in the world, is able to become an e-Estonian. You don’t become a resident of the country and it doesn’t allow any rights to move to the country, but it allows you to become a digital citizen and, as such, removes some national borders.

I’m looking forward to a future where I can use an app to gain citizenship to Mr. Lee’s Greater Hong Kong or, at least become an annoying Brooklynite without having to move to Brooklyn. Plus you know that Elon Musk is eyeing Sealand for his startup virtual nation-state.

MacBook Pro Gaming PC

This is kind of amazing: using the Thunderbolt connector on a MacBook Pro to connect 2 desktop gaming GPUs! An upgradable gaming PC at home and a portable MacBook Pro on the move, it’s the best of both worlds. Right now it’s very much a DIY not-ready-for-consumers thing but external GPUs are the future.

What a time to be alive.

My Life With SmartThings (so far)

I’ve been using SmartThings for home automation for about 6 months now and figured it’s worth getting some of my thoughts down.

I’ll start in this post with what I’ve got set up:

5 GE Link LED bulbs in my family room. I actually needed to get an updated firmware for these to work, so I put in a support ticket on a Saturday after noon and got a response saying the firmware was updated in less than 10 minutes. I was impressed enough with their support to remember all that.

When I started going down the home automation path I was thinking about what I had done with X-10 many years ago and expected outlet switches to be the way to go. It turns out that a $15 LED bulb is cheaper than a $40 outlet switch.

I originally had them set to come on at sunset, but that became kind of annoying because it was still light out, so now we just turn them on with the app. Still easier than turning on 5 lights individually, and I can turn them off from my bed.

My bedroom lamps on some Z-Wave outlet switches. It’s been extremely nice to come upstairs to a lit room; the placement of outlets and switches in our bedroom made it annoying to turn on lights when we got into the bedroom. But I also have to open the app to turn off the lights, which can be annoying. (I’m hoping the iOS 8 widget will smooth this process)

A water sensor in my basement. I’m paranoid about water down there and this gives me peace of mind. I also moved it to my bathroom after doing some plumbing so that I knew I wouldn’t walk into a flood zone some morning.

A smoke/carbon monoxide sensor, also for peace of mind and if my family is out and there were an emergency I could get the fire department over ASAP (assuming that the internet didn’t go out first).

A window sensor in my daughter’s room so that my wife and I can figure out if we left it open without having to wake her.

2 super cheap IP cameras – again, great for checking on a toddler without waking her. The second one is deployed to watch the front door, mostly so I can see what the dogs are barking at while I’m in the basement. When baby #2 comes in October that one will get moved to childcare duties as well

Finally, SmartThings can host applications, so I’ve installed SmartTiles (née ActiON Desktop) as a simple way for house guests like my mother-in-law to turn stuff off and on:

The thing I like about this hobby (and it’s totally a hobby) is that it can be iterative and cumulative. When I want to play around with it, I can start adding new things and integrating them. Then, when I don’t have the energy to mess around with it, I can let it coast in its current configuration for a while until I’m game to playing with it again.

What I want to focus on next is providing more physical access (switches and buttons) so that I don’t have to use the app (and so that house guests don’t need a web interface).

The Speak Test for Remote Working

This is a pretty good test for how well a company supports remote workers:

  1. Does your team have a shared, public method for asynchronous communication?
  2. Does your team have easy access to high-quality video and audio conferencing tools?
  3. Does everyone on your team have access to all the tools they need to do their job?
  4. Do you have time set aside at regular intervals purely for communication?
  5. Does your team have 4 or more hours of work day overlap?
  6. Are priorities clearly defined and communicated in advance?
  7. Can your team make most decisions on their own without waiting on others?
  8. Is every task in the organization tracked in a shared project management tool?
  9. Does your team meet up in person at least a couple of times a year?
  10. In case of emergency, is there a way for team members to call for help immediately?
  11. Do team members use cloud based collaborative tools wherever possible?
  12. Is your team made up of self-motivated, self-managing individuals?

It’s not perfect – some of these have a lot more wiggle room than the questions from The Joel Test – but if you’re looking to work at a company as a remote worker these are good topics to discuss.

About that new stadium in Detroit…

Two years ago Detroit got approval to spend over $283 million of taxpayer money on a new arena for the Red Wings just six days after the city filed for bankruptcy even though the Red Wings’ owner is Mike Illitch the founder of the Little Caesar’s pizza chain who’s worth an estimated $5.1 billion.

And if you think that it’s OK because it will put the money back in the economy…

A major review of almost 20 years of studies showed economists could find “no substantial evidence of increased jobs, incomes or tax revenues”

Yahoo! Pipes 😭

I just deleted a draft I wrote about Yahoo! Pipes closing because Reflections on the Closure of Yahoo Pipes says it all.

looking back, it seems to me now that the whole mashup thing arose from the idea of the web as a creative medium, and one which the core developers (the coders) were keen to make accessible to a wider community. Folk wanted to share, and folk wanted other folk to build on their services in interoperation with other services. It was an optimistic time for the tinkerers among us.

The web companies produced APIs that did useful things, used simple, standard representations (RSS, and then Atom, as simple protocols for communicating lists of content items, for example, then, later, JSON as a friendlier, more lightweight alternative to scary XML, which also reduced the need for casual web tinkerers to try to make sense of XMLHttpRequests), and seemed happy enough to support interoperability.

The death of Pipes doesn’t sting because it was a tool I need to get through my day. It’s just a sign that the times have changed and API openness isn’t valued like it was a decade ago. “End of an era” kind of sting.

A world that used Pipes as often as Excel is a world I want to live in. Where every company I do business with says “of course we have an API!” Imagine what Siri or Google Now or Amazon Echo look like in that world. That’s the world that Pipes represented, the world I’m mourning.