skysight-inc/HackerNews huggingface dataset:
"Maybe a better name for it would be "very global variable"."

The better name for it already exists: it is the Singleton pattern, because OOP software developers already understand this concept. You don't need to invent new names, this is why patterns exist. Also note that whether or not you use the "Singleton" mixin in Ruby, you are still using the Singleton pattern whenever you define a class with no constructor. Yes, you can do this without "include Singleton"; no, this does not mean you're magically using some new concept nobody's thought of before. You're still using Singletons.

* The blog post doesn't use any patterns at all. Given that there are no code examples or suggestions, I don't see how you came to this conclusion. The blog post never tells you how to use patterns, it tells you why you use patterns. Where does it advise you to "pick up components and use them to assemble complete programs"?

* Java did not exist when GoF wrote Design Patterns, so it clearly was not addressing any weaknesses of that language. Your point is DOA and you seem to be pulling this out of your ass. But, to elaborate: GoF isn't describing ways to patch any languages, it's describing ways to attack software problems. The idea of using a Strategy pattern (for instance) is universal among any programming language, it has absolutely nothing to do with code. So is using a factory method. Ever used `ActiveRecord.build` or 'create_with_...'? That's a factory method. The same concept applies with adapters, facades, et al. How you implement the pattern is completely irrelevant to the entire book. You could do it with dynamic dispatch or classes, the book doesn't define the patterns by their implementations. The point is you're using them. Pretending you're not is some kind of childish posturing so you can tell yourself you're "not doing anymore Java". I'm sorry you experienced your Java nightmares, but design patterns have nothing to do with that language.
IPad will be at Best Buy... on launch day
I don't really care whether base-10 or base-2 is used to measure data as long as it's standard for all hardware and software.
Just the sort of response I was hoping for. I wasn't really interested in Node before, now I think I'll check it out.
You're playing semantic games. If we accept your terms, we're adopting the GoF patterns any time we use "method_missing". You're also arguing with a straw man.

The original idea behind the "Design Patterns movement" was to provide a common language for describing recurring concepts in software design. It's the same idea behind Alexander's "A Pattern Language", which is something else you should read.

Nobody is arguing that describing things a little more rigorously is bad. But a lot of people have problems with the way "engineers" and "architects" abuse the pattern concept.

Alexander did not write a book that claimed you could build an entire city by picking out a "44. Local Town Hall" and mixing it with a "69. Public Outdoor Room". He had an idea, that the cart was dragging the horse in architecture, and attempted to use vocabulary to reframe the discussion about why specific choices were being made.

The Gang of Four introduced a minor corruption in that approach --- they had no fundamental thesis about how software should be designed, only a notion that there was folkloric knowledge that should be captured and named --- but their followers completed the corruption wholeheartedly. Instead of a language describing software, the GoF patterns became a perscription for building it.

And so we have Ruby code that includes a "singleton" module into classes, and SOAP4R code that includes "factory" classes (note again how ruby already transparently supports the abstract factory concept), and people argung that we should start "doing a little engineering" by pulling these clumsy ideas back off the shelf.

I can't argue this any better than Norvig can. In fact, I'll invoke him again by suggesting that you don't want to end up like Norvig's "opponent" in the sudoku-solving contet.
The scalability aspect of "NoSQL" is interesting, but I think possibly the more interesting part is the wide diversity of data models (key value, schema-less tables, document databases, etc)

True, some of these models are more restrictive than traditional RDBMSs to provide scalability, but I think some of them will often be useful even if scalability isn't initially a concern.

In fact the term "NoSQL" itself is more relevant to the data models than the scalability.
Will Facebook be the One Ring for Location?
Stands and docks are available, for a price. My wife wanted one of these, thinking $500 was worth it, but when I started to look into it I found that the $500 model is pretty crippled. You need to be near a WiFi access point if you don't get a 3G model ($130 more) and $30/month service plan, so no 'internet all the time' unless you pay extra. The $500 model also has 16GB of storage, and I have no idea if that's a lot or a little. Since 64GB is available I assume 16GB is not much. So that's another $200. Now you're looking at $830 rather than $500, and you still don't get any accessories.

Vanilla Dock: $30

Keyboard Dock: $70 (looks really flimsy and has a fixed angle)

Case: $40 (need to protect that screen if you're going to carry this thing around)

Camera connection kit: $30 (you need a dock to use this)

VGA adapter: $30 (you need a dock to use this too)

Basic set of accessories: up to $170

Total Price: $1000. Hmm... nice round number, huh?

So much for a $500 revolutionary computing device.
Killer App? MTV Developing 'Co-Viewing' Apps for the iPad
FTA, a quote that is ever more true today than possibly when it was introduced: "We are perishing for want of wonder, not for want of wonders." -- G.K. Chesterton

Profound.
Sailing is a really great activity. It can be focused or cerebral as you see fit (with proper planning ahead and cooperative weather)
Funny, I've used that exact technique before. This leaves space underneath to shove the keyboard away and have a go at the pencil and paper ...
How do you even write an paragraph about "whether or not" you'd use the "Singleton" mixin in Ruby? That's the point of this argument. You don't use it. Ever. There is absolutely no reason to use "Singleton" mixins in a language that already represents "classes" as objects.

Similarly, you don't write "Strategy" code in a language that has first-class functions, and you don't write "Factory" code in a language that in which classes are first-class objects like everything else. You don't need a "Command" pattern in a language with closures and lambdas. And you don't need an "Adapter", "Facade", "Bridge" or "Proxy" in a language where function calls are already messages.

You would have to deliberately write a book with no truth in it whatsoever to come up with a list of "patterns" that have no applicability at all. The Gang of Four didn't do that. It's an interesting book with valid ideas. But the approach of constructing programs out of "patterns" has been discredited, particularly and on account of the case where people use the Gang of Four's patterns as their template.

Incidentally, you think I'm blazing new trails of ignorance here, but I am very late to the party with these comments, which I've mostly shoplifted from much smarter developers.

Here's one such comment, from a (probably) better developer and (definitely) better writer than me. Tell me what you think of it:

This practice is not only common, but institutionalized. For example, in the OO world you hear a good deal about "patterns". I wonder if these patterns are not sometimes evidence of case (c), the human compiler, at work. When I see patterns in my programs, I consider it a sign of trouble. The shape of a program should reflect only the problem it needs to solve. Any other regularity in the code is a sign, to me at least, that I'm using abstractions that aren't powerful enough-- often that I'm generating by hand the expansions of some macro that I need to write.
Suggestive: the bailout and drug money. http://www.correntewire.com/was_bailout_largest_drug_money_l...

(I originally saw this story at some less-biased site, but this is what Google brought up.)
Wrong. The main reason why we invaded Iraq was because Saddam wouldn't give full access the weapons inspectors, as was required of him after the cease-fire that ended hostilities in 1991. Granted, we thought that he was hiding WMDs but we really had no way of knowing unless he gave full unrestricted access to the weapons inspectors - which he did not

Also, Saddam did at one point have WMDs, he used chemical weapons to kill over 5000 Kurds.
Stores will still have extra stock for people who didn't reserve one (just called Apple Store SF, though they didn't know how many they'd have). Also, Best Buy is apparently going to be selling them on launch day, though that isn't confirmed yet: http://www.engadget.com/2010/03/27/leaked-image-says-ipad-la...
Who I am (again).

Went through a long divorce and am getting to redefine how I want to be. I think it is going to be a great year.
I'm amazed at the depth Canonical are going into in order to make the user experience for Ubuntu as simple and stunning as possible. It's this kind of attention to detail is making Ubuntu the number one OS out there.
- Driving (I'm 24 and don't have a license... that has to change)

I don't know about your specific situation, but in general driving is overrated. It's a stressful activity that provides no exercise, and owning a car is expensive (more so than most people realize). I think you're best off if you can find a place to live where walking, biking and public transit are all you need. That's what I hope to do.

So if you're feeling self-conscious for going so long without a license, don't. You really haven't missed out on much.
+1 (would love to continue hacking on node-avro, coffeescript, express, etc)
I think that the message wasn't "app database-agnosticism", but "framework database-agnoticism".
You don't "write a paragraph", you use a word. In fact, the point of patterns is to save you from writing a paragraph. Again, not to repeat the entire blog or anything, but that's why the words exist.

# This is a singleton class
class MyClass
class << self
private :new
def instance; @instance ||= new end
end
end

Without looking at the methods or even the implementation I now know not to try to call `MyClass.new` because it's defined as a Singleton class. Simple. No paragraph necessary. You would need a paragraph if you didn't write this simple word.

And guess what? I just used the Singleton pattern.
google.com

http://nginx.org/en/download.html
It wasn't used because it was well suited for the task. It was used in spite of its limitations because it doesn't require software installation. This made such a huge difference in uptake, that it didn't matter that the user experience was inferior in many other ways.
"This is not what Madison and Jefferson had in mind. Their vision was of a strictly limited government, which would perform one basic function, guard individual rights. Its role was to protect the individual’s rights to life, liberty, and property from infringement by thugs and frauds, while otherwise leaving people free to produce and trade in a free market."

I don't recall having read anything by Madison or Jefferson that mentioned "free market trade". It certainly isn't spelled out in my constitution. Was such a concept even recognized as we understand it today at that point in history?
The killer app on the iPad is DRM. Without it, there would be no for-purchase TV shows, movies, books, or magazines as it would be impossible to license the content.

The closed and managed system is not an option for Apple, it is essential to the success of the product.
I implemented something like this for my last project, but I think you can make JS class creation far more ruby-like (and flexible, for that matter), by not passing an explicit hash to your class creation function, but instead building the class in a callback:

// code start
var Event = Class.define(function()
{
this.speak = function()
{
console.log("HI");
}

// since you can just write code in here
// metaprogramming is easy:
["attack", "defend"].each(function(name) {
this[name] = function() {console.log(name);}
}.bind(this));

// or build reusable metaprogramming facilities
// and use them here
this.$setters(["x", "y", "z"]);
this.$memoize("expensiveFunc", function() {
// blah
});
this.$inherited = function(derivedClass) { ... }

});

Basically, the class define method would create a special 'class-creation' object, and would invoke the user provided function with the class creation object as the this pointer. After the callback finished, I would use the class-creation object to build the actual class.

Being actual able to write code inside your class definition is a much more flexible way to define your objects - and it's also how Ruby does it.
OK, but why would you ever want to say, for example, "I use the strategy pattern here to pass a sorting mechanism into this other function" instead of "I pass a sorting function into the other function?" What utility does it have to think of such a thing in terms of a "strategy pattern?"

In Java, I guess it makes sense to have a separate concept for such a thing, since you can't pass around a function or a function pointer, so you need some wrapper code and some extra architecture in order to do it. But in a normal language, who cares about the pattern?
I looked up your comment since making this post. While I can agree that maybe criticizing these early stage startups might be a bit harsh, something about your comment resonated with me. There really seems to be a lack of impressiveness with many of the YC apps, in terms of solving technically hard problems. Maybe that's just a CS student's bias.
India is the great hope for native English speakers who want their language to remain dominant.
> [1] Please note that I haven't tried Haskell, Erlang, OCaml and some other formidible languages yet. Am I'm totally missing out?

It really depends on what were your prior languages.

I was C/Pascal/C++/Assembly type of programmer, and Scheme (or video lectures of Structure and Interpretation of Computer Programs) have blown my mind.

Erlang was interesting and useful, but not revolutionary (to me). I should say that hot swapping is something that no other language, as much as I know, currently has. And is cool :)

I'm now learning Haskell, and I like it. First, I understood little, mostly stuff from Scheme. And few weeks ago I had flash and most stuff was easy... (Monads/Functors/MonadicTransforms) It's probably worth the energy I have spent. IMHO some time has to pass for everything to come in place.

[edit] Bunch of other languages have hot swapping: Pike, Lisp, Smalltalk, and Java
I'll reply to a homeschooling example with another homeschooling example. The reason I'm not sure that the underlying Psychology Today blog article

http://www.psychologytoday.com/blog/freedom-learn/201003/whe...

cited in this submitted blog post gets things right is that children's readiness to learn this or that is surely influenced by early childhood experiences, and the role of an education (parent at home or teacher in school) is to serve up those experiences.

My wife the music major who is a piano teacher by occupation used to play counting and adding games with dice with our oldest son when he was little. I the Chinese major who was then working mostly as a translator and language teacher began guiding him through the excellent Miquon Math materials

http://www.keypress.com/x6252.xml

as he reached typical first-grade age. My son took to math an something fun, not tedious, and eventually at fourth-grade age enrolled in the EPGY math distance learning courses.

http://epgy.stanford.edu/courses/math/elem.html

He enjoyed those, and spurted ahead to finishing the EPGY algebra course by the end of his fifth grade school year. By then he had also tested into the University of Minnesota Talented Youth Mathematics Program (UMTYMP),

http://mathcep.umn.edu/umtymp/

his first taste of somewhat conventional classroom instruction in any subject.

Our son of two non-mathy parents has gone on to do a lot of summer programs in math

http://www.dcu.ie/ctyi/files/Overseas%20Summer%20Brochure.do...

http://cty.jhu.edu/summer/catalogs/os/osmath.html#game

http://www.mathpath.org/newspapers/Colorado.Springs.Gazette....

http://www.math.ohio-state.edu/ross/

and upper-division study of math as a dual-enrollment student at our state university. He is awaiting the last bit of college admission and financial aid news before deciding where to enroll for a double major in math and computer science.

To sum up, I'm not sure that homeschooling parents, or any parents, have to decide "not to sweat it" if a child hasn't learned much math yet. Maybe it's time to do activities that are supportive for learning math.

Our second son's strongest personal interest is literature--he loves to participate in National Novel Writing Month

http://www.nanowrimo.org/

but he applies his highly visual brain (very different from his older brother's "natural" way of approaching math) to learning math, and he is right on track to learn algebra at eighth-grade age, and rather more thoroughly than most students in Minnesota do. My two younger children (one boy, one girl) are also enjoying the Miquon Math and the Singapore Primary Mathematics materials that their older siblings used before them, well known for encouraging children to "use their noggins," as one homeschooling parent described them.

P.S. I grew to recover my childhood liking for math so much while observing my oldest son's study of math that I am now an elementary math teacher by occupation.

http://www.ecae.net/category/saturday-school/
Looks nice, but I'm not sure why JavaScript needs to be like Ruby.
Same fallacious argument: that when you do something that can be described by a design pattern, you're doing pattern-oriented software design.

Same straw man argument: that anybody who points out that the GoF patterns are 'considered harmful' is arguing against concise, regular descriptions of design constructs.

What's your point? The GoF patterns already lead you astray; just a few moments ago, upthread, you had to waste cycles considering whether to use a library to implement a "singleton pattern". The endpoint of this thinking is the SOAP4R code.

Design patterns are code smells.

I have good news for you. You're working in a modern language. You don't need to think about patterns. You don't need to spend even 15 seconds up front thinking about how you might decompose your problem into "Proxies" and "Factories". You can get to work right now on your problem domain.

Because you're in a modern language, when, down the road, you discover that you need, say, to move a component into its own address space to collect calls and cache them, Ruby already gives you a "Proxy" construct. It's "method_missing" and it's idiomatic to the language. You will not need to dramatically alter your architecture to remote the method calls to a cache process; you'll just change the name of the class you call, from ExpensiveCollection to CachedExpensiveCollection, which will be about 15 lines of code long.

And so there's another problem with using the names that OOPSLA dorks came up with 15 years ago. You're fighting the language's own idioms. Ruby doesn't want you to think in terms of "singletons" and "factories" and "commands". It wants you to know how closures work, and how messages are different from simple function calls.

Another good article to read is that post by Wil Shipley about not writing too much code up front. Someone else can find the URL for you.
Apple isn't taking reservations for ipad V2 or V3 yet, so no worries here.
The best estimates peg 250,000 sold to date:

http://aaplmodel.blogspot.com/

Today's news would seem to validate this - given a few weeks back they estimated that preliminary run would be limited to 300,000:

"An unspecified production problem at the iPad's manufacturer, Hon Hai Precision, will likely limit the launch region to the US and the number of units available to roughly 300K in the month of march, far lower than the company's initial estimate of 1,000K units."

http://forums.appleinsider.com/showthread.php?threadid=10742...

Assuming that means 50k in the retail channel, should be interesting.
What an engineer! The pragmatic appeal of his actions is incredible:

By the way, I solved the problem of battery life and [the lack of] multitasking on the iPhone.

Really?

Yeah. I just have two iPhones, so if the battery runs down on the first one, I can use the other. And if I'm talking on one, I can use the other one to look something up. You would not believe how much use I get out of that.
I am Jack's complete lack of surprise. Apple running out of a new product on release just seems to be a given at this point.
Yes, it was worth it. Being a debtor puts a drag on you, even when you've got a positive net worth. Owing debt reduces your freedom and flexibility, because you need to have enough cash flow to make your debt payments. That restricts your choices. Paying your debts off also improves your credit rating quickly, which is important after graduating college because sooner or later you're probably going to want a home, and mortgage you need for that will most likely be more than your school loans were. Paying your loans off first proves you can handle the mortgage debt.
> Think about students going off to college. They want an Apple product, but their parents don't want to spend that much. Now they have the ideal thing. They can go to college and someone may have a whacked-out $6,000 laptop, but the guy with the iPad will get all the attention.

Good to know that the main reason for having a computer in college now is about showing off a gadget with a known logo. And not about silly things like reading, writing coursework, sharing information, taking notes, communicating with others... (where iPad is almost useless in most of these cases)

Are we seriously at the stage where people want "an Apple product"?
There's "no demand" for a simple, easy to use tablet-sized internet/app device that doesn't crash, just like there was "no demand" for a simple, easy to use, pocket-sized music device 10 years ago.

There's plenty of demand for it. Most people just don't know they want one yet. As I argued in my article after the iPad launch, people who don't actually want a computer will be buying this in droves (instead of wasting money on ugly, powerless netbooks - which are priced in the same region!).
Google PageRank update in progress?
Don't kid yourself. They already are.

It's called "founders syndrome" when you can't possibly imagine doing anything else other than pushing the business forward every waking hour, and then are surprised that to your employees, it's just a paycheck and they expect to have a life (and ideas) outside of work.
Lack of classes is one reason to prefer JavaScript to Ruby. People always feel the need to add complexity where it isn't needed.
I've never hired someone who knew Rails. I'm not even sure I've hired anyone who knew Ruby. My lead product dev is a Lisper. Here's an industry pro-tip: when you want to optimize for "good programmer", don't put "must know Rails 2.3.x+ and have experience with one of Sinatra, Ramaze, or Rack". Just look for the smug lisp weenies.

The people who do best in security are the ones who understand computer science. They are:

* Very solid C programmers, or

* Understand compiler design, or

* Know a thing or two about signal processing, or

* Know how to implement compression algorithms, or

etc etc etc.

That's exactly the issue I have with this poll. The cart appears to be dragging the horse. You write web applications to solve problems. What problems are you solving? Very few people will put money up against the problem of "need a better web framework".
It's almost like they plan on this issue...
So wait...people fight wars over resources?
Dennis Forbes Responds to Joe Stump on the NoSQL Debate
I like to think I'm a decent programmer.

Then I read threads like this. :o) Keep learning...