The Teamwork Myth

During my college years, I was constantly being bombarded by the message that teamwork skills were going to be essential in the Real World. This is true, but this idea was uniformly misapplied in the classroom. Many courses that were superficially about learning technical things like data structures or operating systems turned into an exercise in herding cats and dealing with people who couldn’t tell an algorithm from their ass. I’m sure that many other competent programmers before me and after me will have to deal with the same. This is sad because this teamwork “curriculum” is based on a lie. Continue reading “The Teamwork Myth”

There's no Magic Setting to Increase Adsense Earnings

Browsing the various SEO forums you will come across the wackiest and most incorrect advice you’ll find anywhere. Most of these are pure theories or oft-repeated “common knowledge” that turns out to be baseless conjecture. Still more have an air of pseudo-scientific evidence, often based on a single sample and with no controls for the hundreds of variables that can affect earnings from day to day. Some of these include: The day of week, the day of month, advertising budgets, the economy, the news, the time of year, the price of gas, the weather, inbound or outbound links… Continue reading “There's no Magic Setting to Increase Adsense Earnings”

IBM Software Engineer Interview Questions

Here is a dump of some questions from an IBM software engineer interview.

Note, these questions are mostly behavioral, and are geared towards a student who will or has recently graduated from school. Copious notes are taken during this process.

Whether these should be questions of import in a software engineer interview, I will leave for another time.
Continue reading “IBM Software Engineer Interview Questions”

The Amazon SDE Interview

Amazon recruited on campus at UMass over last fall and I was lucky enough to snag a spot after running into them at the career fair. The rep at the table quizzed me on some generic stuff, recording my answers (what is the algorithmic complexity of the best comparison sort?) on the back of my resume.

The interviews are done over several days by 4 interviewers on campus. Each one lasts about 45 minutes. In the first interview, I am randomly assigned to one of the interviewers. I was not asked very challenging questions, but we briefly went over my resume and he described his engineering department and product. Continue reading “The Amazon SDE Interview”

Ruby: Too Smart for its own Good

A few years ago when I was learning rails, I sounded off that Ruby’s lax policy surrounding parentheses was a problem. Specifically, that it is impossible to tell the difference between a method call and a variable reference. There is now an open bug against Ruby 1.9.1 at https://redmine.ruby-lang.org/issues/1801 that demonstrates the problem. Continue reading “Ruby: Too Smart for its own Good”

User-Agent is not a Security Feature

Using a user-agent string to prevent session hijacking is roughly equivalent to a stupidity test. “Hello, I see you’re trying to hijack a session there. Why don’t you prove to me you can supply the target’s UA string?”

Session hijacking is particularly useful for hackers because anyone with a familiarity with protocol understands that login credentials can’t be sent in the clear. So devs and ops work SSL into their login pages and call it a day, providing a false sense of security even though the next page request after logging in can compromise the entire session. Oops. Continue reading “User-Agent is not a Security Feature”

Virtualization is Bad for Database Integrity

One of the lessons about Amazon’s cloud failure last week is that the cloud is incredibly overhyped. The cloud doesn’t necessarily deliver a lot of the things implicitly promised – such as improved uptime or reliability, or even cost savings. But the real problem with the cloud is that you actually get less database reliability than proper hardware. This is because each layer of indirection introduces an additional unknown that must be accounted for. Continue reading “Virtualization is Bad for Database Integrity”

Things you didn't know about Java

Java — and in a more general sense — the garbage collector is partly responsible for the huge productivity gains in the past several decades as development moved increasingly to memory-managed environments. This has come at a cost, with less attention paid to the amount of memory consumed in such environments. Continue reading “Things you didn't know about Java”

The Microsoft SDE Interview

This is the first of several interviews from fall of 2010 that I will document.

The Microsoft Software Development Engineer Interview is hard. While no interview process is perfect, they do a lot of things right in terms of setting a high bar, as well as showing off what the company has to offer. It is exactly what you’d expect from a world-class software company that has fairly high standards for engineers. Continue reading “The Microsoft SDE Interview”