54 karma · joined June 3, 2009
I really appreciate a well-thought out static language like Haskell, but it still has some way to go for the common programmer. For now, I don't think that the practical outcome of this article is for programmers to abandon dynamic languages.
When I started, I acquired a barbell, two dumbells, a swiss ball and about 80 pounds or so of plates. I quickly got a squat rack (just something simple; you can only lift so much up to your shoulders and drop it back down safely), but I only recently got a bench. I now have over 200 pounds of plates, which I got at a used-equipment store. I've found that you need a lot of weight for a) squats and b) so you can move from one exercise to another quickly without having to move plates from the bar to the dumbells.
I also got a "power gym": the pull-up device that hangs in a door frame. With slight modification to one of my door frames in the basement, I found it works pretty well.
Or even just knowing when to step aside and let the next (evolved) generation take over? (or will that still naturally just happen, via accidental death or death by lack of resources to live)
Solution: install token software and pretend that the problem is solved.
I like the Unix way better myself, as it's more about building up functionality through composition, rather than setting out to create grand unified architecture. Speaking (possibly too) generally, I find large architectures tend to be harder to fix.
A growing pool of displaced labour is also a growing un-tapped resource (or a growing revolution, depending on how well society manages it).
http://www.economist.com/sciencetechnology/displayStory.cfm?...
...which basically says that entitled people in positions of power tend to hold others to a higher moral standard than themselves.
Building the smallest possible marketable product doesn't mean building a low quality product.
It would have made more sense if I had some other piece of information to inject in, like if you had a database reference that needed to be passed in to the Delete() method.
Then:
AddButton("Delete " + obj.ToString(), () => obj.Delete(db));
Vs. var d = new DeleteHandler(obj, db);
AddButton("Delete " + obj.ToString(), d.DoDelete);
EDIT: fixedWith Closure:
foreach (var obj in objects) {
AddButton("Delete " + obj.ToString(), () => obj.Delete());
}
Without closure: class DeleteHandler {
public DeleteHandler(TYPE obj) {
_obj = obj;
}
private TYPE obj;
public void DoDelete() {
obj.delete();
}
}
...
foreach(var obj in objects) {
var deleteHandler = new DeleteHandler(obj);
AddButton("Delete " + obj.ToString(), deleteHandler.DoDelete);
}Take Microsoft Windows for example. Regardless of its own intrinsic value, I think that a lot of people would chose it over, say, a Mac (or Linux) purely based on their own social network, due to the ease of which they might be able to get help and share experiences. The opposite is also probably true (if everyone you know uses a Mac, you'd be more inclined to use one yourself).
For those that like what some other OS has to offer, and they aren't afraid of figuring things out for themselves, then they would go with that regardless of any network effect, because they're more interested in the value of the product itself.
(a) more people have run into the same problems as you, and have either posted their own solutions or pressured the company into fixing them (b) more people may have built extensions on the product (c) more people may have written helpful tutorials on the product (d) more people will know what you're talking about when you speak in the product's language.
I think there needs to be more 'marketing' around the idea of simple software that's easy to use and doesn't screw up. Not enough people really appreciate these things in the quest for more features.
I was inspired to do this by Aikido, where one of the techniques is a pressure-point application using the bones on the inside of your hand to apply specific pressure while holding someone's wrist in a grip.
What is best in life?