Comment spam is too much

First, I want to apologize to all those who have put good comments up on this blog and I haven’t approved them for days or weeks. I just don’t have the time to be checking all the comments I get.

Second, I’m certain that I have deleted good comments and for that I apologize.

Lastly, I’m planning on fixing this ASAP. I’ll either be moving to so other blog system like Google or implementing some more spam controls here. I haven’t decided which, but I would love to hear your ideas and suggestions. So, add comments to this entry with your ideas and suggestions and I’ll be sure to approve them all as quickly as possible.

Ego interviewing

I received a reply to my Google post today. Since I get a lot of spam, I filter everything on this blog. Usually any comment that comes in I just make sure it isn’t porn or spam and approve it. This one was extremely interesting, but not very compelling, mostly because it was posted anonymously. This could mean it is a Google employee that didn’t want to be found or just some random person trolling (I do have his IP address however – hehe). Anyways, the comment is a personal attack, so at first I took offense and got defensive. But the more I thought about it the more I began to think about interviewing again. Here’s the comment:

Wow, this entire article is littered with hubris and cocky remarks, but the summary takes the cake. Why didn’t Google hire you? They were trying to best you in a battle of wits and you were too smart! Of course that must be it since you’re an algorithms God!

Seriously Bro, you need to check yourself. Your ego, not Google’s, probably cost you the position.

First things first… I want to clear the air about my post and this comment. The majority of my post has no cocky remarks or hubris. It’s just what happened, pretty simple. I agree that my post got somewhat more subjective near the end, but I was forced to draw conclusions because of the treatment I received. Just to give you perspective, the Google recruiter left me a voice mail telling me I was not selected because they “thought my coding skills were not very good”. You read that correctly, A VOICE MAIL. This was very unprofessional. My phone and Boulder interviews were great and very productive. However, my treatment in California and after was very poor.

As for being a God of algorithms, I clearly state I’m not. I had trouble with some of their questions and that’s the point. They want to challenge you, which I completely agree with.

As for egos and battles of wits, I disagree with the commenter and this is what I’ve been thinking about since I read this comment. Ego is an interesting beast. In an interview, there are a few of possibilities, two of which are:

1. The interviewee has an ego and think they are better than the interviewer or the company. In this case they usually just answer the questions and if they gets stumped it is my experience that they start arguing. In most cases the arguments are defensive and without any pragmatic basis.

2. The interviewer has an ego and think they are better than the interviewee. In this case the interviewer isn’t out to find good candidates. They are out to find the candidates that will make them feel smart. If you answer their questions well, try to create good dialogs or introduce any pragmatism, you’ll probably get the toss.

So, what happened with me? Well, I have no doubt that the dictionary question threw me off a bit. However, I was definitely excited about being able to interview at Google. Even though I didn’t know the answer, I was interested in trying to figure it out with a good dialog. My first reaction was that it might be an early optimization because it could be a complex solution. In truth the optimization isn’t complex, but I didn’t know the answer at first. So, I wanted to begin a dialog about it and try to work through it. This didn’t go over well. In the end the interviewer got annoyed and just gave me the answer after I asked for it (he was about to move on without finishing that question when I stopped him).

Next was the hiring error question. This question had very little information around it and I again was interested in solving it. I did what I normally did and asked some questions, trying to start a dialog about it. This again didn’t go over well. The interviewer actually tried to solve it. I’m not making that up, it actually happened. But he couldn’t. This really made me think that this interviewer had a lot of ego and access to a list of questions to pick from. He picked a few, but hadn’t actually solved them all. After the interview I talked a bit with my local mathematics wiz (2 master degrees and almost a PhD in case people think he’s just some quack I work with) just to see if the interviewer and I were missing something. He confirmed that the question didn’t make sense given the information and that the solution I posed was correct without more information and bounds. You have to reduce the error to fix things.

Lastly, my comments about the tag-along were completely subjective and editorial. I personally thought it was poor form to bring along someone who wasn’t going to participate in the interview. It was uncomfortable and made it difficult to concentrate. Was this ego, maybe. But probably just plain nerves.

Now, I think the commenter was specifically thrown off by my summary and once he had finished that, he forgot about the other stuff I wrote. This summary was completely editorial and just a plain old guess as to the end result. The reason I suggested that I was “grilled” because of my resume is that I’ve had a number of friends interview at Google. Many of them never got the questions I did and my phone interviewer even told me that his questions were the hardest that Google gave. So, why, when I did so well in three interviews prior, would everything fall apart in the end? How was it that when I called my friends at Google they were astonished that I was hired?

In honesty, I don’t know. So I have to hypothesize as to what happened in California. During both interviews I had in California I had a feeling that I wasn’t really a candidate. I wanted to get a sense for what life was like at the company. I asked the first interviewer if people went out for drinks or if there were company activities and his answer was, “I’ve got kids and I don’t do that”. Another interviewer took off part way through the interview. So, given my experience I drew out some conclusions. Were they accurate? Who knows, but I did warn readers that I had nothing to back it up. As for my points:

Have I worked on huge systems? You bet.

Are the systems I’ve built larger that the majority of other engineers? Yes. 3000-5000 servers, distributed, etc.

Do I think that I write solid code? Absolutely.

Do I think I could work at Google on huge systems? Yes.

For these reason, I wrote my summary and made a guess as to the result. This conclusion I came to was based on experience. Having been part of interviewing processes at a number of companies I have seen a few interviewers just clobber lesser candidates but hire them and pass over good candidates. Therefore, I believe that it is fundamentally important to ensure your interviewers are doing a good job and working in the best interest of the company. If they are allowing ego to interfere with making good selections, they shouldn’t be interviewing. Lastly, my summary only applies to my experience in California. My phone interview and Boulder interview were great. Not a single sign of ego during either.

Your framework sucks and I almost lost my job

Just read Bob’s post from a bit back about XML and annotations and it occurred to me that Bob’s like the rest of us. We LOVE pointing out flaws in things that annoy us! My string of “Why Hibernate Sucks” posts pulled in a ton of comments when they first appeared just like Bob’s post pulled in more comments than if he had used the P.C. name of “Annotation Myth Busters”. With my posts, as with Bob’s, the Hibernate folks pounced (the Spring guys pounced on Bob’s post) and we had some nice comments going back and forth. I decided to scaled back the titles to “Hibernate pitfalls” to be more P.C. but really I think in many ways “Hibernate sucks” and probably should have stuck to my guns a bit more.

Just to give you some context of why I changed my post names… A while ago I was working for a company and I made some comments about the programmers at that company being crazy about coding standards. Of course I phrased in a much worse manner. Well, if you did a little bit of Google searching you found my name next to these comments. The truth was the employees at the company were a bit nutso about coding standard. Member variables names must start with underscores, you must not use the this keyword, 4 spaces, no tabs, curlies on same line, no newlines, no continuation indents, etc. etc. I mean it was a like a 10 page coding standard document. Well, I loath coding standards. I code the way that makes sense to me and things like underscores don’t make sense. They are hard to type, slow me down, are ugly to me and don’t add any value except to VIM users who refuse to install plugins.

(EDIT based on comments below. I don’t hate coding standards in general. I hate being forced to use someone else’s 10 pages of coding standards that don’t feel right to me. Feel free to read my comments below to fully understand my position. Also, my moto is ‘if you can’t work in other peoples code and ignore the style, you should probably find a different type of job’)

As it turned out, my manager found these comments. He, luckily, was an awesome guy and very savvy about corporate communication. We talked about the comments and I went back and changed them to make them more PC and of course removed the company name. So, now I’m a bit more careful when it comes to what I write. But the fact still remains that sometimes I really WANT to say “Hibernate sucks”. The fact of life is that its all a game and if you piss off the wrong person, they could make your life miserable or fire you on the spot. Plus, as I’ve learned, it’s much more fun to think of intelligent ways to point out things that suck anyways.

Google is an easy target

I just got done reading the latest Cringley which of course revolves around my favorite bunch, Google.

(For those who don’t know me and didn’t hear my quite amusing story, I interviewed at Google and after the phone screen, 2 Colorado interviews, and the Cali interview they told me I couldn’t code and passed on me – hehe)

Furthermore, Philip Ogren and I had lunch yesterday and he mentioned that he interviewed at Google. He recalled one question that gave him particular trouble, which he believed to be the question that lost him more interviews. It was something like, “from an infinite stream of numbers select the highest 10%.” I had many similar questions such as “How would you find the median of an array that can’t fit in memory?” and “How would you randomly select N elements from an array of unknown size so that an equal distribution was achieved for infinite selects?” These questions are of course statistics based and selection questions, but Philip and I both could not definitely answer these questions for the interviewers. However, I moved on and he did not. In fact, he might have answered the questions better and definitely has more credentials than I do (he’s working on his PhD and I’m obviously not). So, before I get back to Cringley, what’s up with that?

It’s simple. Error is deterministic, guaranteed and often fixed. His interviewer was probably someone different than mine and probably had a larger ego than mine and this introduced error. My phone interviewer was a very cool dude who actually had a PhD in particle physics, but gave up research, probably for more money. Okay, back to the topic at hand – error – Google’s almost unavoidably introducing more error because smart engineers tend to believe they are better than you and this is 100% correct based on the 10-15 folks I’ve met from Google, with the exception of my interviewer and a few friends I have there. This ego-centric view of other developers introduces a high level of error when left unchecked.

Okay, so what does interviewing have to do with Google and Cringley’s belief that Google’s high concentration of smart engineers will be its down-fall? Well, it reveals the fact that Google is an enormously easy target. People talk about Googles hiring mistakes (error), issues with process and policy, and just about anything which is 100% perfect – meaning everything. Microsoft is likewise an easy target. The difference between Google and Microsoft is that Google used to be the good kid and everyone loved them to death. Now it seems that more and more people are shifting that view and looking at all the flaws and issues Google has and looking for ways to theorize their eventual decline into just another software factory that produces new versions of the same products with mundane certainty. Google is becoming just another evil empire, and if you look objectively, you can see that they are already heading full steam into the inevitable abyss where all enormous companies eventually end up. Google is just another company that everyone will love to hate but continue using everything they produce for at least another 10 years. Google self-destruction theories will become more and more common and folks will begin swapping, “did you hear Google messed up X,” stories at parties and events. This will all happen because as a society we tend to be deterministic in our love and then eventual hatred of companies on top. This cycle is quite simple to plot and if we did that exercise, Google would probably be right at the top on the verge of a lengthy but steady fall.

Harry potter madness!

I got the official email from Borders today about pre-ordering my copy of the next Harry Potter book. Unfortunately their online ordering system for the book has been down all day. They obviously weren’t expecting such a huge response and probably sent out the same email to all 500 million folks who signed up to be notified. Crazy madness I tell you!

Maybe they need to reduce the work on the web boxes and put it into a cluster or space on the backend. Then at least we could see the website instead of a timeout. They definitely need a fail forward (i.e. fail fast) approach to their websites.

[tags] harry potter, borders, distributed computing, fail forward, fail fast[/tags] is in the dark ages! (AKA the world needs Google Projects) STILL doesn’t have SubVersion! I mean really? Really? Just not worth it. But then again SourceForge’s crazy FTP crap to release files is just about the lamest thing ever and JavaForge forces you to log in to download files – I mean that could be the lamest idea of them all. The world needs this:

Google Projects
Google projects!

  • A complete API for releasing files
  • A complete API for updating project content
  • A complete API for managing project stuff (mail lists, bugs, etc.)
  • An AJAX project wiki, forums, bugs, lists, etc
  • Google search for open source projects
  • And of course no dumb ideas like login to download files or only offering CVS or FTP uploads.

Okay Google, go forth and code! Or hire someone to code it for you. Or buy some company that does it and make it awesome!

Alderman Tunney is kinda an idiot

The Tune-ster
Funny story. Last night I had a sangria craving and so Kenz, Eliot and I went out to buy brandy and some fruit. We noticed that our brand new sidewalks were complete. Our old sidewalk had a HUGE 2′ envraving in it that said “Brian”. Wasn’t me who put it there and I for one liked it and it got me thinking. I thought, “well I’ll just do something really small with Eliot’s initials and then bring him back in 10 years and say, look, those are your initial’s I put there right before we moved.”

On our way back from the store I decided to make it so. I went to work while Kenz and Eliot were walking around and started making my 4″x4″ engraving. All the sudden this crazy biker rides up and says, “oh please don’t do that.” For a second I thought, “you know he’s right.” BUT THEN!!! This idiot said something that just made me pissed. He said, “I’m Alderman Tunney and TOO much money went into this project.” That made me mad. Yeah, MY MONEY YOU KNOB! I pay the Chicago of Chicago so much money in taxes that I think I should own my 4″x4″ square of sidewalk. But, this isn’t the funny part… hehe It gets good.

I look up and notice a lady who has entered our property and is using our hose to fill up some water containers. That’s pretty odd. Then I think, wait a second, this lady is essentially stealing water from us. I know it’s not that big of a deal, but this Tunney moron had spotted us from a few blocks away and rode all the way up to tell us to stop putting a 4″x4″ engraving in OUR sidewalk (which you can’t even see unless you’re right on top of it), but doesn’t bother with the fact that there is some lady stealing right in front of him. Oh, Tunney, the-Tune-ster. You’re an idiot.

TDD and Agile pondering

I read an old blog entry by Cedric Beust about agile and test driven development (TDD) and I started thinking about some of his points. I agree that tests are not the specification for an application. They are tests. Seems simple.

I think what most Agile folks are missing is that tests form an additional component of the overall application that helps describe the contract of a piece of code. Contract and specification are different. Contracts are used only by developers and help to solidify and harden the code for production. They also help reduce headaches for the next dude who comes along and either:

  1. calls into the contract
  2. or modifies it

The tests help reduce pain for this second dude when he does #2 above. It does not help when he does #1 above. This is what JavaDoc is for. Especially if said dude doesn’t have access to the source (think offshore or decentralized development or open source or architecture nazis or security clearance or whatever).

A specification is used by managers and product dudes and marketing monkeys and everyone in the company who wants a say in the final product. Specification is something that is loosely technical and mostly business. If you want to talk about technical specifications solely, well than that’s different. Those are in depth manuals of how the code, architecture and components work and to me are very RUPpy. But they are still not the tests because they define parts of the application that tests don’t like IP addresses, multicast groups, routers, deployments, infrastructure, DNS and much more.

Cedric’s second point about the speakers statement: “testable code is worthless” I think missed the mark abit. I understand what we was getting at, but his examples and discussion revolved not around untestABLE code but untestED code. There is a HUGE difference.

UntestED code is not worthless. This is simple as well. It just didn’t get tested because of timelines or bad coders or dumb managers or whatever. The ideal solution is just to write some unit tests. Something else that Agile and XP tend to dislike is this notion of going back and writing tests. “Tests should be written first!” Yeah whatever dudes. This ain’t gonna happen with deadlines and customers and press releases about some new alerting system that went out before the code is written. Just live with it and start embracing the possibility that tests written after the code is written are equal if not better than the tests written before the code. You already know the soft spots! You just have to be man/woman enough to break your own code. Most of us have an issue with this and we usually test lightly after the fact because we are scared of the possibility of breakage. Again – grow a back-bone and realize that breaking code is a good thing! You can then fix it and now you have a test for it. I personally love writing tests after the code because I LOVE finding bugs. I love writing tests that just freak code out and make it barf. Then when you fix the code and polish everything up, you KNOW – I mean you 100% KNOW that your code just rocks the house!

Okay, back on track…. UntestABLE code is not worthless either, but should probably be carefully considered and usually rewritten so it is testable. This is really where as engineers we need to focus our efforts, not on writing tests first or even on writing docs or specifications or whatever. We need to focus on ensuring that we can test code when we have time. There are ALWAYS (that’s right kids – ALWAYS as in never gonna stop being – as in for eternity there will be) cases where you have some code that just can’t be tested in an automated fashion. Most folks understand how hard it is to test javascript in the browser and even harder to test javascript that effects CSS that could end up making the page look like crap. Try testing that in an automated fashion. Just not gonna happen unless you build a new piece of software that can understand human esthetic enough to look at a GUI and determine that it looks like dung. Yeah – good luck with that!

So, I think everyone who codes should go write tests and docuementation and the best code that they can under the conditions of the job. Even if it is two unit tests for 50,000 lines of code and four javadoc’d methods, still it is a start. Good luck and may the code be with you.

The hunt has slowed drastically

The person who left the last comment has not yet revealed themself but they did state that they did not sign up for the GMail account. This is a bummer, but doesn’t mean that the hunt is off. Perhaps the secret GMail person will find my blog and post a few clues. In the meantime, I think it better to switch my efforts to the commenter. I do have their IP address: This should help me narrow it down. Another clue is that their IP address hasn’t changed since the previous comment. I should be able to do a little network snooping and narrow down a location. The problem after that is determining who out there knows my blog and/or knows me. Probably some guess work will ensue. I can just hope that the commenter keeps checking back so my guesses don’t go un-answered.

The hunt is on!

The person who signed up for the GMail account left me a comment last night around 10:00 PM. The message is here:

I’ve done a bit of investigation today and found very little, but a bit more than I knew before.

  • The person lives in Chicago area (looks to be Plainfield)
  • The person uses Comcast for their broadband provider.
  • The IP address, unless Comcast’s DHCP is renewing things fast, is pingable meaning they either have it hooked directly into the computer or they have a router and decided for whatever reason to respond to pings. My guess is that it is the former, but I could be wrong. If it is the former, than the person is probably less tech savvy because they probably only have a single computer where most geeks I know have a minimum of 3 and usually have a wireless router of some kind.
  • The IP address doesn’t appear to be Linux or Unix based because it doesn’t have SSH open. Thiis is a lame assumption, because they might have router and just decided not to open SSH and still be a Linux or Unix user.

So, very little is know thus far, but more than yesterday. We’ll have to wait and see if they drop another clue….