42 karma · joined April 18, 2012
I'm sorry but I really find that sentiment to be totally inaccurate. I've never seen a good experienced programmer write hard-to-test or coupled code, regardless of whether they are using TDD or not. A hallmark of when makes them good is that they all have some testing methodology that enforces this and works for them. TDD is one, but there are many others (and yes, that includes good manual-only testing).
I also don't see why you believe TDD is the only way to successfully refactor code, or that only developers who use TDD continually refactor their code to eliminate technical debt and increase productivity. Again, every good programmer does this. TDD is one way to get there. It is not the only way.
I agree, however, that it can be really frustrating to spend a precious several minutes farming or searching for power ups only to lose it all in a freak accident, an unlucky wall spawn, or even just getting outplayed by someone. I think somewhere in between would be the best of both worlds -- maybe losing about a third to a half of your power ups would be a good balance. Then you don't lose all the fruits of your efforts in an instance but the incentive to not die is still strong. Yet dying will still happen frequently enough that the overall level of power ups that people have will be low enough to keep game play fun and reasonable.
(I was actually planning on paying $10, until I couldn't see how to enter different shipping addresses, at which point I changed my plan to pay $0 and enter just my shipping address. And then I proceeded to fail at both plans, not submitting the form at all due to my own forgetfulness.)
I then went about my business, completely forgot about the question I asked on facebook (because they never answered), and never ended up submitting the form.
Oh well.
On top of programming, I also do system ops, ui design, customer service (and client service), project management. Developing a web site takes a lot more than programming, especially if the team is small.
And really the joke is on CoffeeScript evangelists, not CoffeeScript.
Did you add the "s" manually, for, I dunno, the sake of art ;) ?
Rant aside, I actually do applaud them. Impressive bit of engineering here.
It's an opinion of course, but I personally find the hacker news design to be dreadfully ugly; yet it's one of the sites I visit and interact with the most frequently. It's simple and very usable. A flashy modern design might make it look better, but if not done well it might also impede functionality, and thus make me visit it less often. And the obvious lack of pretense is psychologically satisfying. Simple and ugly is fine if it's functional.
irb(0main):001:0> Object.methods - Object.new.methods
=> [:allocate, :new, ...]
That means doing "Array.new.methods - Object.methods" is subtracting things that may potentially be methods of an Array instance that should not be subtracted. It just so happens to work in this case because Array has none of those methods. But it doesn't work in the general case.Consider for example, a "Person" class with a single instance method "name". In this case, "Person.new.methods - Object.methods" will not include "name", because this happens to be a method that applies both to Person instances and the object Object. The correct comparison is what vidarh said, "Array.new.methods - Object.new.methods".
The author's main point, however, was that you can write code like "Array.new.methods" and "Object.methods" at all, and that you can write code to subtract them. And this example shows that nicely.
Not knocking Rails, it's just that you'll get a really narrow and somewhat skewed perception of Ruby if you learn it through Rails (you'll have no way of easily separating the Rails magic from plain Ruby as you learn things).
One potential victim is an employer who believes they are hiring someone with objectively-evaluated qualifications. I think this argument is easily shot down; institutional evaluations are not actually objective, and in fact the person doing the copying is actually in a better position to evaluate their abilities than the institution. But, someone else may believe differently on these points than me.
Another potential victim is the person being copied from. They may feel socially pressured to allow someone to copy from them whether they actually want to allow it or not, and they may submit to that social pressure (and this isn't made up -- in certain circles it would be considered a little rude to not allow your friends to copy your answers). But if the institution finds out about it, both parties (copier and copiee) may get in trouble. While this is probably a rare case, it's still true that a person knowingly using that social pressure to their advantage is doing something unethical.
Anyway, I basically agree with you on this point, but it's fair to say that this issue is not as definitively clear-cut as you make it out to be.
It's absurd that Adobe can't even do this for a digital product.
I once worked with a brilliant programmer who was studying Classics and English Literature and he had an entirely novel approach too, and brought real value to the team.
That's the cool thing about programming -- it's an abstract thinking skill, so anybody with any sort of formal training will bring their specific ways of working and thinking into the game.
As for transporter technology, I don't even think we have the beginning of the science behind that, so I think that's even more distant from today's science than warp drive engineering.
Just as an example let's say "q", followed by a space, followed by the command with the appropriate number of parameters, e.g., "q get username". That would allow otherwise-reasonable tweets that are currently being mis-interpreted ("get better" vs. "q get better").
That's just an example. There are other ways around the problem too without making things too inconvenient on a smartphone user. And sure it's possible someone somewhere will want to write a real tweet that says "q get better", but that's far far less likely than someone somewhere wanting to tweet "get better". And the point is that allowing a non-trivial portion of the tweet-space overlap with the command-space is a bad decision. A trivial overlap (like "q get better") would have been a much better decision.
I agree with treetrouble, however, this was a really bad engineering decision. They should have come up with a tweet prefix to mean "command", some symbol that would not ever start a real tweet.
But I'd add that even tasks that only require a quick-and-dirty solution can frequently benefit from quick-and-dirty automation. A few throw-away lines in an interpreter environment like irb, for example can often shave several minutes of certain tasks, and throwing a lit bit of code into such tasks can certainly make some otherwise dull processes more interesting.