I now have exactly 1000 followers on Twitter. Thank god for arbitrary, meaningless achievements we can celebrate. 🍾
Twitter Followers.png

My first printed magazine experience

As I opened my mailbox today, among the countless spam flyers there was an issue of the first printed magazine I’ve ever subscribed to.

The issue’s yellow cover had the word “PROG” written in large letters. I run an indie Mac software company and do a lot of programming. But this magazine is not about PROGramming (as my sister, who happened to see it lying on the table, assumed). It’s about PROGressive Rock music. Yes, that music that was most popular in the early 70-ies, or as my former bandmate, Michael, introduced the Pink Floyd medley we were about to play: “This music was written before we were born. Nevertheless, it’s good.”

Prog Magazine

I love Progressive Rock and adjacent genres, like Jazz-Rock Fusion, Progressive Metal and everyone’s favourite: Classic Rock, whatever this means for you.

But this story is not about music. Rather, it’s about my weird first interaction with the magazine.

As I tore the thin cellophane in which it arrived and removed a one-page ad, which I didn’t care to look at, I was surprised to find a CD attached to the magazine itself. Its thin paper sleeve had a nicely designed cover with flying ravens, which reminded me of Steven Wilson’s melancholic song from 2013, “The Raven that Refused to Sing.”

Steven WilsonI know that adding “melancholic” was redundant here. Just as Michael Jackson was the King of Pop, and Elvis was the King of Rock’n’Roll, Steven Wilson is the King of Melancholy. But I digress.

The CD has a sample of new songs from various artists. It would’ve been nice to listen to it.

Except: who listens to CDs nowadays?

My stereo system in the living room doesn’t have a CD or DVD player attached to it. Two Macs that I use, an iMac from 2015 and a MacBook Pro from 2012 don’t have a CD slot. Yes, I do have 3 CD devices at home: my son’s PC, my older MacBook Pro from 2010, which my wife uses to run Windows, and Xbox One, connected to the TV in the basement, which kids use. Basically, nowhere I can listen to music and enjoy it.

I already imagine you asking: “Who reads printed magazines these days?”. And you’ll be right. I’m surprised myself. I’m pretty sure I’ll cancel the subscription because I also subscribed to their online version, which is cheaper, doesn’t have to ship from the UK and available all the time.

But then again, maybe not. There’s something about the feel of its glossy paper and the curiosity of just flipping through it. And, frankly, I forget to read the online articles. There’s so much to read online already. But I digress again.

So, after looking at the cover of the CD and wondering how I’m going to listen to it, I flip it over and look at the small print on the back:

CD Back

“If you experience any problems using this disc, you should first visit our support page at: www.futureplc.com/discsupport.”

Why yes, I do experience a problem using this disc! It might be not the problem you people expected when you built this support page but… still, I wanted to try my luck. Deep inside, I had a vague hope that maybe, just maybe, there’s a way to listen to the tracks on this disc online and they had instructions on this page.

I carefully type the address.

I press Return.

The page slowly loads.

And I’m presented with:

404 page

Nobody cares about discs anymore. I bet Steven Wilson could write a great melancholic song about it.

TL;DR Programming

TL;DR, an abbreviation for “Too long; didn’t read”, is Internet slang used in reply to a lengthy online message. It is also used at the beginning of a summary of such a message. — Wikipedia.

TL;DR

This essay explores TL;DR in programming context.
It tries to find out if the trend of TL;DR behaviour spreads to software development as well, and what are the dangers of that.
It’s about Bob. It’s not about you. Good programmer don’t TL;DR. Good programmers read.

Enter Bob

Robert Kode1 is a long-time programmer. Bob loves to code. He was programming since his early teens and is fluent in six languages. He speaks only English but can read and write the other five. These five are not used for speech.

Over the years Bob developed good know-how in many areas of software development and has an intuitive understanding of many concepts. He can crunch code fast and his code is fast.

It just so happens that Bob is a TL;DR programmer.

Too Long; Didn’t Read

TL;DR comes from the increasingly short attention span of today’s Internet generation. Do programmers also fall victim to the short attention span which leads to TL;DR?

Bob believes that programming is about writing. Writing code. Writing code comments. Writing commit messages.

Bob was assigned to write a new module for an application. He skimmed the requirements for the module. He skipped half the paragraphs in the email that described some focus points. He didn’t get back to them when he churned out lines of code.

Eventually, Bob’s module implemented half the cases it was supposed to support. In some cases, it did what it wasn’t meant to do. QA filed a ton of bugs and Bob found himself in Tester Driven Development mode.

Now he cannot afford to skip reading the bug reports.

Too Lazy; Didn’t Research

How much research had to be done before writing the first line of code for Apollo Project?

Bob’s got years of programming experience, as I said, so he relies on his intuition. Oftentimes more than he should.

This time our Mr. Kode got the kind of task that he liked. He was supposed to implement a peculiar data processing algorithm for, well, the data.

Bob had prior experience writing some algorithms and was excited about the new challenge. He conceived the general approach of the algorithm as he was reading the requirements. He might have overlooked some of the intricacies of the requirements (see above) so it didn’t help either.

Bob went right ahead to writing it. After half a day it kind of worked. There were some edge cases that required attention. It was also slow. It also didn’t scale well for high amounts of data. Another day went on trying to optimize it. Then another day. Then it started giving the wrong results. And crashing on the edge cases.

Robert didn’t invest the time to think through his idea before developing. It’s not easy, so he trusted his intuition instead.

Bob also didn’t run a relevant search on Google. If he had, he might have stumbled upon a paper, or a blog post, or an answer on Stack Overflow, any of which might have helped him select and implement the right approach. Research is hard. Bob didn’t research. Bob was a bit too lazy.

They say good programmers are lazy. But they say it for a different reason.

Q&!A

Q: Does TL;DR programming lead to the culture of Stack Overflow questions of “please give me code to do X”?

Q: Do we see more bugs today because of TL;DR attitude? Including critical bugs like Boeing 787 bug which could bring the plane down in one case? Or more security omissions?

Q: How many programmers just try things out until they work, sometimes without understanding the theoretical basis of why and how? Or choose a simpler, inadequate solution?

Q: Could this also apply to other aspects of the software business, like product and project management, software architecture and market research?

Q: Are you a little like our Bob?
A: I am

👉 Discuss on Hacker News.


  1. Fictional character ^

Orange is the new Blue

Ever since Microsoft Windows days the blue color was the dominant hue used in user interfaces. Blue is considered to be comfortable on the eyes, especially when used as background and other large surfaces in the user interfaces.

In HTML, the default link color is also blue. It’s distinguishable from the default black while still possessing the “blue” qualities of being easy on the eyes.

But in the last year or so I notice following trend:

orange is the new blue

Several prominent publications had designed or redesigned their sites to use a darker shade of orange as the main emphasis and link color. The Verge, The Next Web and Ars Technica are now all look similar, as far as their main color palette goes:

Ars technicaThe vergeThe next web

Don’t get me wrong. I actually do like the new designs. I especially love the design on The Verge. It was the first site where I saw orange used prominently. I think other have followed, though I believe that Ars used the orange cycle in its logo for a long time and some of its elements were orange then, but the new design is much heavier on the color. Same with The Next Web. I believe it had more red colors in its old design and certainly not so much of orange.

I wonder if other big sites will follow this trend:

TUAW

Gizomodo

I’m @apparentsoft both on Twitter and on App.net.

I think I have a million-dollar idea

Late night two days ago, before retiring to bed, I went to the bathroom, as usual. Suddenly, right there, an idea hit me, which is not as usual.

Moreover, the idea itself is not a usual one for me. It had nothing to do with computers or high-tech, for that matter. It was about the light switch to the bathroom.

You see, I have two kids. One of them is now 4 years old. She feels old enough to go to the bathroom by herself. In fact, she can do the whole procedure herself. Except one thing. Turning the lights on and off. So it happens like this:

I’m half-lying comfortably in our bean bag chair, minding my own business. She comes to me and notifies that she wants to pee. I say “Sure, let’s go”. “No, I’m big enough, I can go myself!”, she replies. I feel lucky that I no longer have to get up from the bean bag chair for this, because it’s quite an exercise, in fact. She feels grown-up.

So she leaves, arrives to the bathroom and calls me from there: “Light!”. Oh, man.

So I had this idea about designing a light switch that usually looks and behaves like a regular one. But, when you have such kids at home, you can pull a rope from there that will allow the them to pull it and turn the lights on and off. There are “pull the rope” switches like that available but I never saw one integrated with a regular light switch, so that both parents and kids could use it. And it should be retractable into the switch when the kids grow, for esthetics.

Yes, I know that kids can stand on a short footstool to make themselves high enough to reach the regular switch. Yet it’s not so comfortable. She needs to carry it between the rooms. Yes, there’s the same problem with her room lights as well.

As far as marketing of this special switch — when the expecting couple comes to the baby store to buy the needed stuff for the upcoming baby, have the seller propose these switches to them along with all the other stuff that they buy. This way they’ll be ready to pull the rope on the first “I can go to bathroom alone”.

And the kid will also feel more empowered since she doesn’t need to ask for your help and spoil her achievement.

So here, take the idea and make a million bucks if you believe it’s worth it. I don’t know anything about designing, manufacturing and selling commodity hardware. I’m just a software guy. Pressing keys on the keyboard is all I know.

Thinking Time

Being an indie software developer, developing products and running the business, takes lots of time. I work during normal working hours and then often have a “second shift”, when the family, or at least the kids, fall asleep. Still, I have enough planned stuff to do, when I’m near my Mac, to fill months of work. And most of this better be done sooner than later.

I’m pretty sure that if you’re an indie software developer, a designer, a businessman or almost anything where you have some control over your time and work, you know what I’m talking about.

In this state, we may become so reactive to the tasks that need to get done that we just don’t stop, take a step back and reflect on the whole situation. We may just forget to think deeply, strategically about the business and even about the work tasks themselves.

Enter “Thinking Time”

When I was at the uniquely great NSConference 2011 this March, I had the opportunity to discuss some of this with Matt Gemmell during a dinner there. Matt is a well-known Cocoa developer, conference speaker and, should I say, thinker. He appears to think deeply about stuff and publishes many of his thoughts in the articles on his blog.

So I asked him how he approached the thinking about software design, and his answer included something like “I take a walk, in nature, by the river, and only take my Moleskine and a pen with me.” It’s not a quote but the gist of his reply.

And I thought to myself, “Why, that’s a good idea. Step back from the monitor, the distractions, and devote time to just thinking for some time, writing thoughts down with analogue pen and paper”.

So, on my way back home I grabbed a couple of notebooks at the airport (they just happened to be Moleskine, of course), one for me and one for my partner, Kosta, and decided on having “Thinking Time”.

I put it in my calendar, weekly, as the first thing to do each week. It’s a good way to start a new work-week. While most of the population rushes to the jobs thinking “It’s @#$%@#$ Monday again”, I start the week slower, walking the streets or sitting on a park bench or under a tree to write things down, breathing real air. If the weather doesn’t allow being outside, I’ll sometimes go to a cafe, instead of skipping it completely.

During such couple of hours, I can make good progress planning software architecture, sketching application design, preparing a conference talk, or thinking about strategic business stuff.

Then, by noon, I come back to my home-office, feeling refreshed, satisfied that I already did something important today, and overall feeling inspired for the rest of the week.

Try it yourself

If you don’t yet have such “Thinking Time” on your schedule, I suggest you try it. The beginning of the week works the best for me. But maybe you’ll feel that the middle is actually better because it splits your work week and you get some kind of a break from your regular tasks.

In this age of Internet and social networks with all the fun distractions that they provide, it becomes more important to go away from it all at least for a couple of hours each week, sit down with a pen and a paper (or even an iPad running some notepad-type application), and just think it all through.

Update: take a look at my other article related to this: Think it later