02.28.08
Posted in Personal at 11:12 pm by Michael
One of my friends is becoming a very interesting foil to myself. We’re of roughly equal intelligence, started out in the same high school studying the same things, but our paths diverged at college.
It’s very interesting seeing how our differing qualities of education are impacting our trajectories. Of course, education is just a tool, to serve rather than limit its wielder, but I didn’t realize this until last month. His success may come with academia (and I wish him all the best), but mine will certainly come in spite of it. That’s probably why I’m riding on my own ideas now more than ever, though I must say it is a heady feeling to enact change on the power of your own vision.
And yet even after I finish my Ph. D., I’m going to need to go back if I want to study music. Or biology. Or mathematics. Or sociology. Or philosophy. It’s quite a dilemma.
Permalink
Posted in Ideas, Programming at 1:31 pm by Michael
I just read an interesting article on Slashdot (made moreso by the fact that I have an interview with a company looking for the very best developers later today) about how a company can go about finding superstar programmers. As I expected, the discussion veered quickly into what I now call “the scientist bias”. That is, people began talking about how to set up tougher interviews, screening more rigorously, not checking past work, etc. etc. It’s the same sort of closed-mindedness that I lamented about when discussing peer review (and I still lament, even though 4/4 of my recently submitted papers were accepted). Just as you cannot hope to discover great ideas by being closed-minded, you can’t hope to discover great people by being closed minded.
The easiest way to find good programmers, I would think, would be to first admit that, like peer reviewers, you don’t know precisely what you’re looking for. Just as one scientist unfamiliar with the work of another can’t objectively judge the full ramifications of the other’s science, one programmer cannot objectively judge the programming ability of another. Pretending that you can introduces all sorts of ascertainment biases into the loop, not the least of which being that some people just don’t interview well. I know – I’m among them.
Once you admit that, look at the candidate’s past work. Run it. Try to break it. If you’re feeling adventurous, sic QA on it and see what they find. See (or ask) how long it took to make, how much maintenance had to go into it, and how efficient it is. Don’t neglect the circumstances under which it was written, either – I personally wrote some very professional code when I was 12 with no formal CS education, which I think is quite an achievement. I couldn’t have used knowledge I did not possess, but I made up for it with sheer ability. Not many people independently rediscover alpha-beta pruning at 14, for instance
Next, if you want to see how the person can actually code, give him a short assignment and ask him to hand it in the next day, for example. This models a real workplace condition – the skills demonstrated in the assignment are the same that will be demonstrated on the job.
By the time you bring someone in for an interview, you should basically have made a decision to hire already, and the final interview would then consist of making sure the company and candidates were fits for each other. If you ask any sort of technical question, ask it in full and let the candidate work. If you jump in every 5 seconds to change the requirements, it’s guaranteed to screw up the candidate. This happened to me during my final interview at Google and really cast doubt on my view of the whole process. For example:
“Write an algorithm to reverse a string”
*Writes about 80% of it, when suddenly…*
“Do it with just one byte of storage”
*Erases and starts over, getting about 50% of the way*
“Making just one pass over the array”
*Erases and goes again*
etc.
I think that interview actually went well, as I was able to perform everything the interviewer asked without hesitation, but it was a very frustrating process, and prevented me from forming any lasting “big picture” image of the problem.
Anyway, those are just my thoughts on the process. Right now I have to put up with whatever techniques people decide to use, but when I hire people, I’m going to do it my own way.
(Update: And I am completely amazed, but the average programmer apparently only codes 76.7 lines of code per hour. This isn’t a measure of quality, just speed, but now I understand what the mythical man month means about the best developers being orders of magnitude better than the worst.)
Permalink
Posted in Ideas, Research at 11:33 am by Michael
I’ve had this idea for a while, but was constantly debating in my mind whether it was the same thing as an SVM with a kernel. I finally came to the conclusion that it wasn’t:
Start with a hyperplane boundary and then split it into warp/deformation points. Optimize the warping by minimizing MSE using gradient descent (or something) and it should begin to take on the form of the points. Impose some sort of regularization to prevent overfitting. Since warping can modify the plane in three dimensions, it’s no longer a hyperplane, but neither is it equivalent to passing a hyperplane through a kernel.
It should be a very powerful means of performing regression (and thus classification). I might research it later; I have too much on my plate now.
Permalink
02.27.08
Posted in Personal at 11:05 pm by Michael
It’s funny – I’m juggling 9 large projects that all need to be completed in the short term. For most people (or me more than six years ago), this would have been a crushing load. But now? I’m knocking one off per day. I’m in my element when I have to deal with this sort of thing, and I’ve done it so much that it’s second nature by now.
Permalink
02.26.08
Posted in Personal, Research at 8:17 pm by Michael
The IWDM paper has been accepted, which brings my total count for this round up to 4. There’s no way the fifth paper we submitted to ICIP will be accepted (the results are terrible and we know it), so we’ll just end it at that
Permalink
Posted in Personal, Philosophy at 4:45 pm by Michael
It’s really the only way to live life successfully – knowing that any 5 things you’re anticipating could fail and you’re still set. This is important because people can fail – states can change – events can fall through. And since they can, Murphy’s Law says they will
.
Some options aren’t as good as others – but the important thing is to always have options.
Permalink
Posted in Personal at 6:58 am by Michael
The process that will ultimately result in the loss of approximately 40 hours of freedom per week has begun – several months earlier than I wanted, but now is when everyone is looking to hire.
It’s going to test my balancing abilities like they were never tested before. I somehow have to fit everything I’m doing now into the small window of time I’ll have left afterwards.
That or I’ll need to finish it very quickly.
Now I understand why I felt like I was past my prime at 23. I can’t go back and do any of the things I want to do anymore. Biology training? It’s not happening. Music? Nope. Mathematics? I can pick it up, but I’ll never be supported while learning it.
This is why I want to start a school that trains polymaths. Anything less is just such a waste, because it cannot be done sequentially.
Permalink
02.25.08
Posted in Ideas, Literature, Personal, Philosophy at 11:36 pm by Michael
I think I may have just came up with the very distilled essence of secondary integration in the process of sorting my own feelings out:
Defiant
I swim against a prodigious current,
and I know that I must falter.
It draws me towards the fall,
the inexorable fatal plunge.
But each stroke I take,
I count a small victory,
a stand.
For my right to exist.
For the betterment of the world.
For those who came before me.
And for everyone,
who has ever screamed,
defiantly at the heavens:
“No! There is a better way!”
For them,
For us,
I swim against the current,
because I am right.
Permalink
02.24.08
Posted in Ideas at 12:14 pm by Michael
Embedding a computer inside of paper would be an interesting technological advancement. It opens up all sorts of possibilities in HCI.
Permalink
02.23.08
Posted in General at 1:49 pm by Michael
In an effort to avoid spam filters, spam mail is getting more and more abstract. I’m getting things like “make your machine run better”, which confused me the first time I saw it, as it sounded like it was pushing computer hardware upgrades at first glance.
Anyway, if this trend continues, pretty soon they’ll start saying things like “Y your X in the Z!” That would be awesome.
This doesn’t always work well, though. For instance, I just got an email from a diploma mill stating “Bachel0rs, mast3rs, MBA, or D0ctorate”. Anyone who is stupid enough to respond to an email that’s afraid to print the word “Bachelors” in full deserves what he gets.
Permalink
« Previous entries Next Page » Next Page »