2,982 karma · joined March 2, 2011
- A website using a load balancer to offset service to multiple machines
- A hadoop cluster running a series of mapreduce tasks
- A botnet setup to DDOS some target
I love type inference, but I feel like using it in this way doesn't realize its full potential. My functional background primarily stems from SML (and some Clojure), but the logic I'll use should apply here as well. It's true that the compiler is able to infer the most general type itself, but if you rely on it for this you're ignoring an invaluable tool for predicting the correctness of your code.
There are many times where I've used type inference to show me there's an issue with my code before I even run a single unit-test. I always specify the types of my arguments as well as the return type when writing a function, even though it's not technically required at this point. If I've fully reasoned through what it needs to do then this shouldn't be too difficult. Once I've finished I'll make sure it type-checks. If it does then I'll know the logic throughout my function matches the inputs and outputs I've specified.
That gives you a powerful low-pass filter for knowing whether or not your code is more likely to be correct. If you specify the types when you declare the function and they don't match then your code won't type-check, which results in an exception. If you don't, then depending on the type of error your function might still type-check and compile, but with the wrong type. Then you have no choice but to catch the error with unit tests or, even worse, debugging. The interpreter will certainly give you the type for the code that you've entered, but assuming that it's giving you the type for the code you actually need leaves a powerful tool on the table.
Obviously this doesn't cover every class of error you could have in your code of course, but it in my experience it can be very helpful.
Content-wise, your musings on religion seemingly fail to take into account the existence of other religions outside of Christianity (or at the very least, outside of the Abrahamic traditions of Judaism, Christianity, & Islam). There are many non-biblical, non-revealed religions. There are many non-theistic ones as well. I don't feel the need to list them off here. Feel free to research.
Back to your tone, I kindly request that you be respectful of those who do not necessarily agree with you and do not assume you are preaching to the choir, otherwise you do nothing but hurt your own cause. If you reduce the entire concept of religion to nothing but "the ramblings of bronze age goat herders," do you honestly expect anyone who adheres to one of those religions (or to any other non-"goat herder" religion for that matter) to listen to what you have to say?
For the record, I agree with a lot of what you said, especially about awe and amazement not being exclusive to religion. Likewise about how many people (not entire religions mind you, or religion itself, but individuals) claim a monopoly on morality. Again, my issue isn't so much with your content, but more so with how you're presenting it. Just some food for thought.
With that said, I agree that if the core product isn't well engineered then no amount of lipstick on the pig is going to make it usable. You can paint rust any color you like but it's still rust.
NEVER downvote:
1) Just because you disagree with a post.
2) Because you dislike the poster.
3) Because others have downvoted a comment into oblivion and you want to jump on the bandwagon. i.e. No need to kick a comment when it's already down.
4) When you have not explicitly reasoned out why you are downvoting beforehand.
DO downvote:
1) Because the comment is derogatory or offensive.
2) Because the comment is factually incorrect.
3) Because the comment is off topic and/or does not add to the conversation.
4) Because the comment lacked any meaningful content. Ex: "Yes!", "Nice post!", "LOL!", etc.
Ultimately the golden rule applies here. Do not downvote any comment for a reason that you yourself would be upset over if someone used that same reason to downvote a comment of yours. In short, just put some thought into it.
The truth is in the middle of the dichotomy you setup. Yes having notes, referencing materials, etc in the real world is being prepared. BUT, even in the real world, there's a reasonable expectation that you'll store and retrieve as much of that information as possible in and from your own memory. For example, I'm a pretty adept with python. I occasionally need to look at the standard library reference; yet, I try to commit as much as I can to memory. If I didn't, I would spend the majority of my time searching instead of doing. It goes without saying that a person who knows something off the top of his or her head is more efficient than someone who doesn't. You're correct that in the real world you'll rarely be in a situation where you don't have access to a reference of some kind. However to say at the same time that memorization is a skill that you'll seldom if ever use again is incorrect at best and reckless at worst.
I would add to this that it's important to learn how to build what must be built efficiently. If you create what appears to be an elegant piece of software on the surface but resembles a Rube Goldberg machine internally then it's going to be quite difficult to maintain or enhance it later.
Keep in mind most people are not vegans. The majority of their audience may not be aware that vegans would require B12 supplementation. Given the article's subject, mentioning this as an aside fits the context very well. I read that as simply informational more so than critical.
The premise of the article seems to be that America needs to be careful lest it lose its current Internet dominance. I'm an American myself and I'm very proud of the fact that we initiated something as amazing as the Internet. However, is it fair for us to hold that dominant position in perpetuum? The Internet is a global community.
(edit: spelling, structure)