7 ms·
The title is misleading - it's actually about how and why they did end up writing their own db. From the article: > There’s an old adage in software engineerin
by faitswulff 9y ago
The title is misleading - it's actually about how and why they did end up writing their own db. From the article:
> There’s an old adage in software engineering — “never write your own database”. So why did the OneNote team go ahead and write one as part of upgrading OneNote’s local cache implementation?
- lmilcin 9y agoWhat I am really objecting to is those hard "rules". "Never optimize early". "Never roll your own database", etc. All those rules work for most but not all projects. It's the same as saying "You shall allways obey traffic rules". Maybe I should, but sometimes I may not want to brake on yellow light when I have clearly impatient driver tailgating me. As we gain experience we learn the world is not black and white. Akin's law #8 says: "In nature, the optimum is almost always in the middle somewhere. Distrust assertions that the optimum is at an extreme point."
- plorntus 9y agoThe article deliberately contradicts the title, it's literally stating the same thing you're saying but with a real world example (One Note) and why they needed to write their own.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- ksk 9y agoBut your objection is rather silly!! Those rules are meant for beginners. If you're not a beginner you already know when/if/how you can break the rules. It is correct to teach kids that they should tell the truth in every scenario, even if as adults we don't.
- anyfoo 9y agoExactly. Fully understand why should never do x, so that fully understand when you actually have to do x.
- voodootrucker 9y agovalues > principles > practices You are free to violate any of those on the right in the interest of the ones to the left.
- deleted 9y ago[deleted]
- hutzlibu 9y ago"It is correct to teach kids that they should tell the truth in every scenario, even if as adults we don't." Not correct. Example, a stranger: "are you alone a home?" or "what is the keycode for the door" etc.
- dragonwriter 9y agoI don't agree that these are counterexamples; there's a difference between telling the truth and telling the truth someone else wants to hear. “I am not going to answer that” is a true, correct, and appropriate response to both of those questions.
- hutzlibu 9y agoBut to a potentiell hostile stranger it is better to lie, than to tell the truth. More extreme examples come to my mind, with active agressor wanting to know something, where it is smarter to fool the enemy, than to tell the truth. "I don't knoe the code instead of "I am no allowed to tell". But besides, most kids learned to lie pretty well, to circumvent various restrictions - and learning from the adults who tell them no to lie, but do it by themselves. I am in favor of leading by example. If I am lying, how can I possible demand it from kids, to do otherwise? When they find out, they loose confidence in me. But when I tell them to only lie in extreme situations to "enemys" and act accordingly, they are much more likely to become truthful by default as well.
- fgonzag 9y agoI'm fine with those rules. Until you can understand why the rule exists (on a technical level), can you break it. Because anyone who knows all the edge cases, filesystem issues, contention issues, deadlocking and integrity guarantees with databases will search hard for an OOB solution that fits his requirements, and will consider rolling his own a last resort.
- brightball 9y ago“Never use absolutes.” - Brightball’s Law
- prmths 9y agoExactly. Exceptions prove the rule. But this applies to everything, not just databases. Never write your own OS, unless you are faced with an exception where you have to. If you have a special case where RDBMs can't fill your need, then you obviously have to build your own. But these cases are so rare that it proves the rule.
- youdontknowtho 9y ago"Never roll your own authentication" seems to hold up pretty well though...