786 reputation
2613
bio website philosopherdeveloper.com
location San Francisco, CA
age
visits member for 4 years, 1 month
seen Sep 30 at 16:58

Author of The Philosopher Developer (my blog), Lazy.js, Autodoc, and SafeYAML, among others.

GitHub: dtao
Twitter: @dan_tao
SoundCloud: dantao

I’m a software developer currently residing in San Francisco. I work at Google on the Ads Review team. Previously I worked at Cardpool, and before that ThoughtWorks (and before that, a real-time trading company in Philadelphia that no one’s ever heard of).

I studied philosophy at Duke University, then a couple of years later went to Carnegie Mellon Silicon Valley for a graduate degree in software engineering (hence the name of this blog). In between I lived with my wife in Namibia for a year through WorldTeach, an organization that places volunteer teachers in developing countries around the world.

One of the principles I believe in most strongly is that there’s really no place for arrogance in this world. Living in Silicon Valley, I can’t help but feel that most of us in this industry are encouraged to forget that. The culture here is one seemingly designed to inflate egos and reward self-importance. Having said that, I realize that I’m guilty of it from time to time as well. So let this serve as my perpetual apology for ever letting my head get too big, or acting like I know what I’m talking about.


Jul
20
comment Is there a name for the new “shake phone” interface convention?
Seeing it referred to as "Shake" within the iPhone API itself was all I needed!
Feb
4
comment Where do I begin when dealing with my first corporate client?
True, excellent point. I'm really not interested in bleeding some company dry, especially considering it's my wife's place of employment!
Feb
3
comment What are the so-called “levels” of understanding multithreading?
That is indeed a nice model. I'm accepting JB King's answer just because I'm relatively certain he correctly identified the concept I was referring to (or anyway, the concept underlying that concept).
Feb
3
comment What are the so-called “levels” of understanding multithreading?
Haha, I think so! What I must be remembering is someone referring to these stages and applying them to the topic of multithreading. Good call.
Feb
3
comment As a C# developer, would you learn Java to develop for Android or use MonoDroid instead?
These were all good answers, but I think this one's my favorite.
Jan
27
comment Why do some programmers hate the UI part of the development?
Just a little additional info for those who might be interested: it is actually not 100% clear which hemisphere plays the bigger role in determining math ability.
Jan
1
comment As a C# developer, would you learn Java to develop for Android or use MonoDroid instead?
Interesting—so the appeal is more about getting access to the .NET libraries. Do you happen to know if .NET offers a lot of convenient functionality, relevant to Android, that's more difficult to achieve with the Java Android APIs?
Sep
20
comment How do you name your private variables in C#?
@mathepic: When Will says "class variables" he means (private) instance fields. You seem to have interpreted what he said to mean static members; but that's not what he said.
Aug
18
comment How do you educate your teammates without seeming condescending or superior?
@Paul Sasik: Haha, I feel like we're dealing with the robot butler from this cartoon. Clearly some users do not like this question.
Aug
18
comment How do you educate your teammates without seeming condescending or superior?
Wow, very nice answer! Thanks for the links -- good stuff!
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
@Paul Sasik: I just thought CW was for subjective topics where users upvote answers based on how much they like them as opposed to how useful they are. I guess it doesn't matter much to me whether it is or isn't; if the question does happen to get reopened, I'll gladly mark it CW. Incidentally, does anyone happen to know where the generally accepted definition of CW can be found? The FAQ doesn't really clarify this point for me.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
I find Chris's code to be generally well designed, if lazily implemented; that is his code, while highly readable/maintainable, is often very inefficient. Adam and Brian on the other hand tend to write clever, efficient code that's difficult to read and very tough to maintain.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
@Beth: That was someone else's decision (our boss). If Chris had it his way I'm pretty sure Adam would be off the team. Adam actually produces good stuff from the user's perspective. I just have this fear that his code is going to be very difficult for the rest of us to understand or contribute to.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
I like this idea a lot. Thanks.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
You raise an excellent point. Honestly, it hadn't occurred to me to see the situation in this way, and I think the reason is that Chris doesn't actually make much of an effort to teach the other developers. Sometimes I think he's more interested in telling them why they're wrong than showing them how to be right. Maybe I can convince him to give me a shot at filling that role.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
This sounds great, but I have to ask: how exactly do you achieve this? Getting them to ask you questions, I mean.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
I have to give you +1 for pointing out my obvious failure to stand up to Chris as I should have (of course, Adam and Brian really should do so as well). It's clear that I inaccurately portrayed myself as a team lead in my original post; I've updated the question to clarify that I am not in a leadership position on this team (though I feel I am respected as probably the most knowledgable member). Nonetheless, I feel your points are quite valuable and can probably be adapted somewhat to my circumstances. I'll think on this answer some more.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
Ha, I probably should have indicated from the beginning that I'm not the team lead; Chris is. So, as you can imagine, that last part is probably not the best idea in my case (though it is tempting sometimes).
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
This definitely makes sense. How is this normally implemented? As rotating pairs? I guess my biggest concern with this idea is that everybody would always dread being paired with Chris.
Aug
17
comment How do you educate your teammates without seeming condescending or superior?
@fletcher: I've seen Adam on the site before. I am pretty sure none of them has an account, though. I wish they did; this site could probably do more good for them than I ever could. Come to think of it, maybe that should be my first order of business...