Not-a-Science Science
Any field with the word "science" in its name is guaranteed not to be a science.
– Gerald Weinberg, An Introduction to General Systems Thinking
Any field with the word "science" in its name is guaranteed not to be a science.
– Gerald Weinberg, An Introduction to General Systems Thinking
Of all the pop culture beefs going on at the time of this writing (Meek vs. Drake, BoB vs. Neil deGrasse Tyson, Trump vs. Everyone), my favorite is now Tim O’Reilly vs. Paul Graham on income inequality.
When a startup doesn’t have an underlying business model that will eventually produce real revenues and profits, and the only way for its founders to get rich is to sell to another company or to investors, you have to ask yourself whether that startup is really just a financial instrument, not that dissimilar to the CDOs of the 2008 financial crisis — a way of extracting value from the economy without actually creating it.
This has always bugged me in particular. So few startups have an idea beyond "get smart people together, maybe make something, hope that selling the team ends up profitable". We need a much better word for "speculative technology-focused company funded by speculation".
Then, the finish. Stain. Wipe. Wait. Stain. Wipe. Wait. Sand. Wipe. Stain. Wipe. Wait. Check. Seal. Wait. Sand. Wipe. Seal. Wait. Sand. Seal. Wait. And that's if everything goes according to plan.Finishing. It's about woodworking. Or everything. Or sometimes an essay about furniture is just an essay about furniture.
The Blackbird had outrun nearly 4,000 missiles, not once taking a scratch from enemy fire.Apparently its sister plane, the A-12, was not so lucky. I will always be a sucker for SR-71 stories, no matter how many times I may have heard them before.
If you want to learn from a piece of code, you should type it out, instead of just reading it. The value of typing code:
Typing code may be like riding a bicycle. I’m surprised how much more detail I see the first time I ride my bicycle over a road I’ve driven on, mostly because I’m moving slower but also because there’s an additional muscular dimension to the experience.
I love this bicycle metaphor. The slowness of biking engages my brain in an entirely different way than running or driving. Even the mechanical sounds are more pleasant; the consistent whirr of the chain is so much more calming than the revving up and down of a gasoline engine.
The value of typing code holds very true for me; I usually get very little by simply reading code in books and articles. But when I take the time to type it in and actually try to run it, I struggle with it more (not all code examples are perfect) and get more out of it. You should give it a try.
Technical Debt is an interesting phrase. We all have a sense of what it is instinctively, but we rarely want to think about it. If we think about it too hard, we feel somewhat oppressed by entropy. All systems tend to toward disorder and software systems are no different. The big question that we all face is what to do about it.
Systems tends toward disorder. Disorder is hard to reason about and risky to deal with, i.e. you’re likely to avoid dealing with it at all. But, most successful products have a system with more technical debt than you’d like at its center.
Increasingly, I think that the only way to confront technical debt and complexity is to contain it. Languages and tools only seem to help at the margin. Rigorously splitting large, complex, debt-filled systems into smaller, proportionally complex and debt-filled systems is the way to gain traction.
You can’t solve technical debt or essential complexity; you can only hope to contain it.
It is conceivable that a really good machine can learn our hash algorithm really well, but in the case of string hashing we still have to walk some memory to give us reasonable assurance of unique hash codes. So there's performance sin #1 violated: never read from memory.Avoiding Hash Lookups in a Ruby Implementation, on the quest to eliminate the use of ad-hoc hashes inside JRuby. I love that the cardinal sin of a runtime is to avoid memory reads. It makes avoiding random database lookups in web applications look like a walk in the park.
On the other hand, consider how much fun it is to write compilers; their cardinal sin is to avoid conditionals or anything that would stall the processor pipeline. If that seems pedestrian, then consider the cardinal sin of a processor designer: don’t do anything that will take longer than one clock cycle, or half a billionth of a second if you’re keeping score at home.
People want to see action and progress, no matter how small. They want to hear about milestones and rave reviews. Even if you’re not adding new users and customers rapidly, you can still show momentum within the company and product. And if product updates aren’t forthcoming, hopefully you can be forthcoming about why. There are many different ways to make and measure progress, the point is to share them with your community regularly.
Traction by pal Brian Bailey. He's talking about how to get a new app off the ground, but this applies to any kind of business. Communication is winning.