Tuesday, April 22, 2014

What Are We Testing For?

Recently, Jaya Jha had a bad experience recruiting programmers for her company. She set up an online test for the interviewees and they cheated (googled the results on the internet.) For her, it was an ethical problem. It seems that some people told her to ignore the incident and interview these candidates anyway. She chose not to.

While this may have been an ethical issue for her, to me it raises a different question. Why do interviewers ask questions whose answers can be easily googled anyway?

To some extent, this is a hangover from our pre-internet, information-scarce world. I've had the good fortune (?) or having living memory of both worlds. Back in middle school, all we had was a single non-networked PC with the Turbo C++ compiler on it. It came with a function reference. We had a few C++ books in our school library. In those days, it was important to remember the nook and crannies of the language we were using, API references and compiler quirks. If you were stuck, you were stuck. You had to wait a day or two before you could go to the library and consult a precious language reference.

Times have changed. Programming today is mostly googling StackOverflow. And while good memory always helps, it's not critical. What matters more is being able to make engineering and design judgments. What API among the multitude available should I use? Which language is suitable for a new project? How do I make my app more user friendly? How do I scale? How do I make my code more maintainable and scalable?

Silicon Valley has been struggling with this question for some time now. Even the Microsoft Interview is passe. Companies now look at patches and github accounts. Recruiting needs to get smarter.

Duplo - The Flipboard Layout Engine

Last month, Flipboard published some details about how their web and Windows 8 layout engines work. It is fascinating.

Duplo is a new layout engine that starts with the ideas in Pages but uses a modular block and grid system to quickly fit content into thousands of page layouts in all sizes. [...]

However, while Pages looks at about 20 candidate layouts, Duplo looks at anywhere between 2000 to 6000 candidates, searching for the best layout to fit the content.
This is the kind of attention to detail that Donald Knuth paid to typography with TeX back in the 70s. This is also the first time that I've seen an algorithmic approach to design out in the wild.

Sunday, April 20, 2014

The Zen of Computers

  • No computer works the way you want it to. This is a problem not with the computer, but with you.
  • Pick a computer (or software), any computer (or software), and stay with it. When it stops working, abandon it, pick something else, and stay with that.
  • It is okay to be a fanboy or an ideologue. But it is not okay to let fanboyism or ideology make your life, or the life of others, miserable.
  • If you cannot decide between using one tool or another, you probably need to use both of them.
  • Occasionally, you will find peace with your computing machine. But this peace shall not last.
  • All exciting software will always seem to exist on the some other OS/Platform/Hardware that you're not using. Know this to be an illusion.

Monday, March 10, 2014

Software Updates are Not Exciting Anymore

I recently realized that I'm not excited about software updates anymore. A younger me would eagerly await the release of the next version of a particular piece of software. Often, I would get impatient and just download and install the beta or the release candidate. Not anymore.

Software isn't doing anything new anymore. When was the last time that a new software genuinely allowed you to do something that you could not do before. Most action is being seen the smartphone and tablet world which are just slowly painfully catching up with what their desktop counterparts have been capable of for at least a decade. The desktop counterparts themselves are busy reinventing the wheel with no real benefit in sight. (What, exactly, does Window 8 do that Windows 7 doesn't?)

Perhaps all the low hanging fruit of software has already been picked?

Tuesday, March 01, 2011

the mind/body divide is meaningless

We often think of our minds as something that inhabits a body. We think of the mind as separate from the body that it inhabits. Literature is full of this idea. In Freaky Friday, a mother and her daughter exchange bodies. Apparently, the only thing that changes is their bodies. Their personalities remain intact. In Harry Potter books, wizards and witches can transfigure, turning themselves into an animal or a piece of furniture. Prof. McGonagall is known to turn herself into a tabby cat. But even as a tabby cat, she still remains Prof. McGonagall. Her essence, her mind remains intact in this new body.

This kind of mind/body divide is artificial. Minds cannot be separated from bodies in this fashion. Let us do a thought experiment. Suppose that you suddenly acquire a sixth finger on one of your hands. Do you remain the same person, albeit with six fingers on one hand? I think not. You are now a person who has six fingers. You are person who knows how to use this sixth finger. When you hold something, your perception of that object has changed. Your perception of the abilities of your body has changed. All of this is also part of your 'mind'. Bodily sensation cannot be separated from the mind.

See Also: