46 karma · joined January 27, 2012
http://hnofficehours.com/profile/tim_h/
I like the simplicity of this approach. It's best to keep the low-level stuff as simple as possible when building distributed systems. It will get complicated soon enough at the higher levels.
Edit: I'm surprised to see this downvoted. Care to comment why?
Is it not paying attention to the news cycle? Or knowing that the company is on a bad trajectory but still working there? Surely it's not the focus on work-life balance.
I could see myself working at Yahoo. I bet they still have interesting problems to work on. Yahoo Research does awesome stuff with computational advertising. Hypothetically speaking, would this opinion disqualify me from your hiring consideration?
I'm trying to estimate the chance that me not knowing C++ will pose a problem later in my career. I normally pick up languages quickly, but the C++ learning curve seems a bit steeper, both in terms of language nuances and libraries. So my normal approach of "wait until I need it" may not work that well.
1) Minimize the overall time investment required to have an acceptable solution to the problem. Time investment includes maintenance and debugging.
2) Make sure the marginal benefit to additional time spent in one area of the project exceeds the opportunity cost of focusing on other areas. E.g. It's good to spend a lot of time on getting the overall architecture right but it matters far less to optimize the business logic (for one thing it tends to change more often and for another it's hardly ever the performance bottleneck).
Contrast this with physical-stuff engineering (which I think is what you're referring to by saying "engineering background"), where the requirements tend to be better-defined and the cost of experimentation/refactoring is a lot higher.
> The most important characteristic of a suffering-oriented programmer is a relentless focus on refactoring. This is critical to prevent accidental complexity from sabotaging the codebase.
I can't tell you how many times I've seen accidental complexity creep in because someone adds a new feature without taking the time to refactor to the simplest set of abstractions. But - and here's the flaw in the approach - you have to be an expert in the code to produce such a set of abstractions, which is a potential bottleneck when your codebase is big enough to require multiple developers. Not everyone has the time/capability to be an expert.
My question is: how was consistency maintained? What mechanism prevented the same record from being changed both in Tokyo and in New York while the network was split? Or, what mechanism resolved the conflicts? I think the article might be glossing over some details here. I'm guessing that either one side of the split was offline (or at least read-only) during the outage or that the writes were made without guarantees.
Having said all this, I want to point out that my doctor told me that different medications work for different people. I may just be lucky enough to have the right body chemistry for a drug like Dexadrine to work well for me.
Perhaps the timeline will help overcome this tendency. By making everyone's history more visible, maybe people will become less sensitive to seeing past examples of immaturity and therefore weigh them less when making judgements about a person.
My doctor had me try various medications. Adderall was too intense. It got me high and gave me a tendency to focus too much on the wrong level of a problem (I would obsess over details). Worse, my body acclimated and I found that I needed a higher and higher dosage to have the same "benefit".
Everything turned around for me when I found out about a different medication from a friend - Dexadrine. My doctor never mentioned it to me but once I asked him about it he agreed to let me try it. Boy am I glad he did. To make a long story short, I finally went to college, graduated at the top of my class, then went on to Stanford to earn an advanced degree. Now I have a job that I love.
I've been on this medication for almost 10 years. I never acclimated to it (in the sense of needing a higher dosage for the same effect) and the side effects are very mild (slight loss of appetite, slightly harder to sleep).
Recently I decreased the dosage by almost 50%. I've found that over the years I've somehow learned how to concentrate better, and that therefore my need for the med has decreased. This makes me think that my brain has somehow changed for the better. Perhaps all the concentrating I did while on a higher dosage served as practice and that the benefits from all this practicing apply even without the medication. Maybe some day I'll be able to get off of it completely. But for now I still have a tough time concentrating without it.
At first I wasn't going to mention this (lest it become the reason he doesn't share the details), but then I realized, here's a smart guy who has a device that makes him even smarter, so I figure he probably already knows. :)