Programmer Testing

One issue about hiring programmers is how to test their technical competencies. If you merely look at their CV, that is only part of the story. I would like to propose a simple way to actually test their ability to problem solve by writing a program.

There are many on-line testing sites available. However, these are all language dependent. Therefore, a programmer’s experience in the language does make a difference. Hiring for a narrow language is a bad idea and it’s better to test on general logic capabilities.

This is where I think that something like the LLVM intermediate language is useful. It is unlikely that anyone has ever learned to use that language before as it is exclusively generated by the compiler. Therefore, this eliminates any language bias that may inadvertently affect the candidates.

To be fair, I think that the candidate should be assigned the tasks and given a suitable time frame to learn the language and complete the task as necessary. I believe that a one-week time-frame should be sufficient to learn enough of the language to write simple programs. This also tests the ability of the candidate to pick up new languages, which is a necessity in our line.

It is also a powerful enough language to do anything. So, the programming tests can be designed to be as easy or as complicated as necessary.

Furthermore, it is an actual programming language that can be compiled into real machine code. This allows the written programs to be tested for functionality as well as performance. It is possible to throw a barrage of test cases at the generated application to see how it performs. The entire system can even be run in a sandbox.

The only thing that is needed then, is an interface to the system. Technically speaking, the candidates can use whatever text editor that they want, and they would only need to upload the code to a centralised testing server, which would then compile and test the code.

For testing digital design skills, an equivalent method can be drawn from using a dead meta language like Confluent. It is, again, highly unlikely that any person has had much experience with the language. The output can be used to generate syntactically correct Verilog/VHDL and tested with standard tools.

I think that this would be a cool project to work on, if I only had the time. Maybe it’s time to hire another intern to do it.

Advertisement

Christian Hacking

I’ve just read an article on The Economist on how hacking is a very Christian thing to do – and so is Open-Source. Let me just quote a couple of parts of the article:

Mr Spadaro says he became interested in the subject when he noticed that hackers and students of hacker culture used “the language of theological value” when writing about creativity and coding, so he decided to examine the idea more deeply. “In a world devoted to the logic of profit,” wrote Mr Spadaro, hackers and Christians have “much to give each other” as they promote a more positive vision of work, sharing and creativity.

Catholic open-source advocates have founded a group called Elèutheros to encourage the church to endorse such software. Its manifesto refers to “strong ideal affinities between Christianity, the philosophy of free software, and the adoption of open formats and protocols”. Marco Fioretti, co-founder of the group, says open-source software teaches the “practical dimension of community and service to others that is already in the church message”.

Don Parris, a North Carolina pastor, wrote an article in Linux Journal in 2004 in which he argued that “proprietary software limits my ability to help my neighbour, one of the cornerstones of the Christian faith.”

While I agree that there are very theological and religious reasons to hacking, it is definitely not in-line with the Christian faith as mentioned in the article:

Moreover, hackers in particular have problematic traits from the perspective of the Catholic church, such as a distrust of authorities and scepticism toward received wisdom. And the idea of tweaking source materials to fit one’s needs doesn’t mesh well with the Catholic emphasis on authority and tradition.

Exactly. Most hackers identify more with Buddhist traditions as typified in Hacker’s Zen and enshrined in the Jargon File. Hacker culture can be easily reconciled with Buddhist traditions and in fact, I would go as far as to say that the Buddha, is a hacker himself – in the sense that he tinkered with and hacked the human condition.

The main reason is because of the fundamental clash of hacker and Christian traits – hackers generally do not take to faith – as mentioned by Eric S Raymond in the article:

Mr Raymond took to his own website to note that he had deliberately equated cathedrals with proprietary, closed-source software directed from above, by contrast with the more chaotic bazaar of equals which produces open-source code. “Cathedrals – vertical, centralising religious edifices imbued with a tradition of authoritarianism and ‘revealed truth’ – are the polar opposite of the healthy, sceptical, anti-authoritarian nous at the heart of the hacker culture,” Mr Raymond declared.

As for Mr Spadaro’s ideas, they possessed a “special, almost unique looniness”.

So, while Christians may want to lay some claim to the hacker culture, ethic and ethos, the hackers have already spoken.

Steve Resigns!

Woke up today to news that Steve Jobs has stepped down as Apple’s CEO. Damn.

I will put him squarely as the one person whom I’d like to emulate in my career. I would like to be able to turn out life changing technologies that will make this world a better place to live in.

I wish him the best and good health.

While I will probably never touch his scale, I hope to at least be able to reach his level in every other measure. I hope that I will be able to build Aeste into a company that is at least, worthwhile having around, nurturing highly talented people to their finest.

He’s an inspiration!

Films as Prior-art

In a patent battle, Samsung claims prior-art exists against the iPad patent that is owned by Apple. As evidence, they present a very iPad-isque device being used in a 1968 Stanley Kubrick film – 2001: A Space Odyssey.

This proves that Stanley Kubrick was a design genius and well ahead of his time. The film predicted the iPad a few years early. So, where’s Hal?

Also, Captain Picard unveils the iPad.

ARM Macs?

There has been some rumours that Apple might switch their notebooks to ARM processors away from Intel ones. Does it make sense to me?

While I have a lot of respect for the ARM processor, it is not yet as powerful as the Intel ones. It can probably give the low-end Intel machines like the Atoms, a run for its money, it does not have the necessary processing power to compete against the higher end Intel parts.

That said, there are product niches where the ARM might make better sense than Intel parts. Apple is already very familiar with ARM processors used in their A4/A5 processor for the iPhones and iPads. However, there is the issue of compatibility.

I will say that if there is anyone who can make an architectural shift painless for the user, it has to be Apple, who managed to maintain backwards compatibility from 68K to PowerPC and Intel. They can definitely do it for ARM too, if they want to.

Except that performance will likely take a hit unless they have some spiffy ARM chips coming up in the A6/A7.

Personally, I hope that they do pull it off because it would just further integrate the Apple hardware. With its own ARM based microprocessors, Apple would be able to do things that they wouldn’t, with Intel processors. For example, they can build in DRM into their microprocessors.

I think that Apple definitely wants to go there. They have always loved doing their own hardware. By switching to ARM, this gives them the opportunity to tightly integrate both software and hardware, making projects like OSX86 obsolete.

From a technical stand-point, it can definitely be done. While the ARM processors are slower than Intel parts, the bottleneck in most computing systems today is I/O and a super high-end Intel processor is no use if coupled with a slow harddisk. A combined SSD-ARM system might actually be pretty speedy for most intents and purposes.

All we need is a decently fast processor, speedy flash storage, high speed RAM. That will create a faster over-all computing experience even if it may be slower for specific computationally intensive applications.

I hope that Apple actually does it. Let’s call it the MacBook Hand or the HandBook (get it?). 😀

Magic.