skysight-inc/HackerNews huggingface dataset:
An array with invalidation instead of deletion doesn't have to be O(n) on deletion-from-the-middle. I think anyone would have to concede that if you routinely need insertion in the middle, you can't use a flat data structure.
Not necessarily all evil. Only text-book implementations require that one allocate individual nodes. Most implementations I have seen in Linux and FreeBSD can pool allocate the nodes. One can also pull off neat tricks to append link chains in these implementations to expand the list without the need to reallocate memory as needed by arrays.
McIlroy on Coroutines (1968)
So your “do both” suggestion is good, if it is possible: evolve JS while tracking up-and-coming languages, and try to align JS as it evolves with the best-of.

C# seems to have pulled this off over the years. It keeps taking ideas from other languages (I'm mostly aware of the Ruby ones) and leaping forwards. It's just a shame there's a stigma attached to it.
http://weblog.raganwald.com/2007/01/what-ive-learned-from-sa...

The whole "nobody likes s-expressions" is as well-worn and pointless a cliche as "I miss Lisp boo hoo."
Note though, this would be really hard to evolve. As an analogy, the photosynthetic center RuBisCO is fairly wasteful, so any organism that can improve on RuBisCO would have a huge advantage. Only problem is RuBisCO is not easily evolvable (like brittle code), thus we don't know of any improvements although they are quite possible theoretically.
Right, SBCL supports both multithreading and networking (and a whole lot of other good things).
ASUS Eee Note EA800 released
Database shows how bees see world in UV
I second this.

This book is the textbook for my 'Heuristic Problem Solving' course @ NYU this semester. I'm normally not one to touch my textbooks, but over Thanksgiving break I decided to crack it open - suddenly I was 200 pages deep into it.

(Check out what we do in the course at http://cs.nyu.edu/courses/fall10/G22.2965-001/index.html )
"that's what she said."
A monad is a type that has certain associated functions — to wrap values in the monad and do calculations on what's inside. The type itself obviously cannot execute code, but the associated functions obviously do. Monads can be used to implement exceptions.

As an example, lists are monads. The operator for doing calculations with the value in a monad is >>= (pronounced "bind"). To double every item in an array, you could do:

[1, 2, 3] >>= \n -> [n * 2]

(The syntax "\n -> [n2]" defines a function that takes one argument, n, and returns a list containing n 2.)

There's clearly work going on behind the scenes to pass each value in the list to the associated function as "n", and then combine all the resulting [n * 2] lists into one big list of the same type as the original. But that's all transparent to the programmer. He only sees the interface that the monad offers.
What is a seed script?
Yes, I remember seeing this at least 6 years ago. People should really date their articles.
I think what your parent and I are in support of are something that can be guaranteed, regardless of price. If I have contractual obligations to people regarding my webhost's uptime and bandwidth, I want the webhost to give me something more than "It changes a lot, don't use too much".

When the barrier to entry for an internet-based business is so low, I expect ISPs and other service providers to understand this requirement, and provide plans and prices accordingly.
Only because bogosort wasn't tried.
Let's say you wanted to implement I/O in a language without side effects. You could put all your interactions with the world in a special "World" object. Every time you called world.putString("foo"), you'd get back a new world object that represents the state of the world with "foo" having been written out.

So the code (quoting from samstoke's hello world):

main :: IO ()
main = do
putStrLn "Please enter your name"
name <- getLine
putStrLn ("Hello " ++ name ++ "!")

would get translated to:

main :: World -> World
main world = let newWorld = putStrLn world "Please enter your name" in
let (newerWorld, name) = getLine newWorld in
let newestWorld = putStrLn newerWorld ("Hello " ++ name ++ "!") in
newestWorld

Note that this makes the order of operations explicit, and that no World needs to be modified. Note also that now main has to take and return one of these World objects, so that a World needs to be threaded through all computations that will interact with the World (just like IO actions can only be executed from within other IO actions).

A monad lets you thread implicit state through a computation.
I'd also like to plug my own rspec extensions, Saki:

https://github.com/ludicast/saki

It lets you write your specs with "smart contexts" so you can do stuff like:

with_existing :user do
that_has_an :article do
that_has_a :comment do

or

with_existing :user do
on_visiting edit_user_path do
it { should let_me_edit(@user) }
end
end

I'm obviously biased, but I think this sort of testing kicks ass. I initially wrote them as extensions to Steak, but then ripped them out to use with vanilla rspec.
Also posted here: http://news.ycombinator.com/item?id=1997973

I checked the twitter feed for Operation Payback when I first noticed the site was down; there's no mention of any ongoing attack.
Funny, my experience with systems programmers has been that the real dangerous part is the unmaintainable and unportable code they write.
Bad science journalist draws conclusions not stated in the research reported upon. It's clear to me that scanning for DNA fragments cannot tell you anything about chromosome abnormalities, so I doubt the researchers said any such thing.

Thus, this research is completely useless to anyone who would choose to screen for the most common birth defects (not just sort of useless -- if you are doing CVS or amnio, you have a cleaner source of DNA).

This technique seems only really useful for people who want to screen for specific recessive diseases like tay-sachs or sickle cell, and don't want to do a more invasive test.
> With the GPL, you can do whatever you want with the software except prohibiting users to do whatever they want with the software

The GPL can prohibit me from distributing the program modified to depend on proprietary closed-source code, even if that's what I want to do with the software.

> with BSD you can do whatever you want with the software including prohibiting users to do what they want.

Exactly - the point is that BSD doesn't limit me at all, and the GPL limits me fairly severely. The GPL guarantees that the code under the GPL and all its derivatives will remain free forever - the code is free. The BSD license guarantees that I have the freedom to do whatever I want.
I now see there are several in Wisconsin. My mistake.
If there was a code editor with tight Git integration and easy connection to a build service, I might not actually need a laptop. But I guess that is still some ways off.
Besides Linux, SBCL supports multithreading on FreeBSD, Mac OS X, and Windows.
Previously: http://news.ycombinator.com/item?id=1944551
That's a janky lookin shadow my friend!
A monad puts you into a box and only gives you a few interaction points with the outside world. You can do whatever you want in a monad, but you are never allowed to leave the box.

This is not true for many commonly used monads, except for the IO monad. You can extract values from the list monad, Maybe monad, state monad, etc.

Put simply, a monad specifies how values can be wrapped in a 'box', and how such boxes are combined. For instance, Maybe is a box that can contains either a variable or nothing. In Haskell:

data Maybe a = Nothing | Just a

The Maybe monad specifies how expressions resulting in a Maybe are combined. Expressions are evaluated until/unless one of the expressions returns 'Nothing', and the value of the monad becomes Nothing.

Comparably, the IO monad specifies how IO actions are combined, the State monad combines expressions in such a manner to create 'state', etc.

We have tried to illustrate Monads with a Haskell-ish example here:

http://www.nlpwp.org/book/chap-words.xhtml#id3390030
Is anybody using their iPad with org-mode? I've installed MobileOrg, but I don't really care to subscribe to the whole workflow they've gone for (with push and pull commands on the emacs side, and staging directories). I'd really just like to find a text editor with support for Dropbox and a basic understanding of org files. Bonus points if the editor can manipulate outlines and provide a quick asterisk button.
In this particular case it comes across as more than a little bit shady.

When you advertise aggressively with high volume/high bandwidth, when you even rename your company from 10tb.com to 100tb.com, then one would hope you'd handle it a tad bit more professionally when someone calls your bluff.

I wonder if they considered that by pulling the plug on SimpleCDN like this they've also effectively terminated their own business. Nobody in their right mind will host at 100tb after this event.
You seriously think that C is an improvement over Algol?
Thanks for your insight. I see what you mean about the bait-and-switch which makes sense for recent customers but I don't think it could be seen like that for the ones that have been with use for many years if we only increase the price by 5-10% which is around inflation anyway.

We have toyed with the idea of charging more for new customers and are about to implement a program of free laptops for referrals so it's good to hear someone else make the same recommendation.
There is a large distinction between hating on the language and hating on the users. Ruby and Python were both sort of anti-Perl, but it was not usually expressed along the lines of "Perl users are too stupid to write Hello World in our language." It was more like, "Dang, Perl users. How do you manage to get anything done with that rotting fish-head of a language? Check out what we have over here in civilization!"
Pool allocation only addresses one of the problems with linked list; it still leaves you chasing pointers to iterate, it still decreases locality, and it still adds 4-16 bytes to every element in the container.

Meanwhile: you aren't really saying most people use pool-allocated lists, right? I see people hand-hacking malloc'd lists all the time. I rarely see custom pool allocators. It's what people were taught to do.
Like I said, in context, it's amusing. That contract term, though, is totally reasonable.
How does DNA get into the bloodstream? It shouldnt be getting out of the nucleus let alone the cell membrane and beyond that there's that whole placenta thing.

This sounds bogus to me.
Each of your statements seems plausible, even profound in itself.

Then I try to combine them and my head explodes.

You don't need to understand Monads to understand Haskell but they're how you print "Hello world"?? Yeah. Your other example also seem pithy and worthy, and again leave me feeling like the result is utterly opaque. You've shown goodness and power and all but it feels like you're holding the real definition behind your back to make the magic look even more magical-er.

How's-about-ya-spit-it-out. What the heck's a monad?

I feel like I've gotten as far as thinking that a monad's like a little interpreter/pre-interpreter. You pass it something like raw code and it binds more meaning to the variables as well as change the context of execution etc, all before that code gets eventually interpreted. Kind of like how you pass fragments of code to Ruby functions and kind of like how c++ templates are parameterized by type.

Wikipedia says "A monad is a construction that, given an underlying type system, embeds a corresponding type system (called the monadic type system) into it (that is, each monadic type acts as the underlying type). This monadic type system preserves all significant aspects of the underlying type system, while adding features particular to the monad." http://en.wikipedia.org/wiki/Monad_(functional_programming) At least that definition doesn't leave me feeling like someone's said "I can't tell you but they're really great"...
Umberto Eco on the future of books (2003)
Amazon.co.uk and .de are down
It appears that the UK domain for online retailer Amazon is down. With reports all over Twitter and confirmed by TNW personally, the site does not appear to be responding regardless of the location from which you’re trying to access it.
Kinect hacked to control a mouse
Pandora > Create New Station > "Ratatat".
You say "manipulative", I say "persuasive".

Is it manipulative to optimize the tag line on your landing page? You're trying to persuade a visitor to buy your product. Or are you trying to manipulate them to buy your product? The same principal applies to keeping customers.

I'd call this manipulative when it becomes disingenuous. For example, had they put actual speech bubbles above my friends' heads and led me to believe that they actually were asking me to stay. Until then, this is roughly akin to saying "Hey man, don't leave the party yet. We haven't had cake yet!" To which I'd reply "OK, well twist my arm why don't you" and then eat some cake.
There are ways of separating individual enantiomers from a racemic mixture of both. For example, crystallization will create separate crystals of each (this is how it was done first by Pasteur).
How broadband pay-per-use will change web apps
farmville is basically one long manipulative tug
Disclaimer: I miss Lisp too, and have noticed myself wishing I could define new syntactic constructs in Python.

That being said, there is something of a difference between hating Perl and saying that Lisp loses because it's too good and you have to be too smart to understand it. In short, Perl fundamentally sucks in ways that impact your life in big ways on a day-to-day basis. Python does have its problems, and it sucks in some respects, but I would claim that it doesn't reach nearly the level of fundamental suckage on an absolute scale that Perl does.

And, moreover, while Lisp fails to suck in certain ways that Python sucks, it ruins your life in other ways that Python doesn't. For example, I use lots of numpy/scipy/matlab/what-have-you style code. I also use lots of Cairo/GTK. In Python, all the stupid crap to take care of doing that in a Python-idiomatic way has been done already; it's known as pygtk and pycairo, and it's available in every package manager I care about.

In Lisp, all that stupid crap has not been done, or if someone has tried, they have not achieved remotely the level of polish of the Python version. So if I want to use Lisp, I have to spend a pretty big quantity of time becoming the maintainer of the equivalents of pygtk, pycairo, etc., and at least last I checked, the amount of crap and slowdown involved there was much greater than the amount of crap and slowdown that resulted from Python's various sucky bits (slowness, lack of threading, lack of macros, shitty lambdas).

And, moreover, Lisp's lack of syntax is a big win in some kinds of code, but in other kinds of code, it's pretty horrible; for example, with Numpy, I can say

myarray[where(other_array > 0)] = foo(bar(5))

or

myarray[:, baz(bum(4)):baz(bum(5))][bum(baz(6)):, :]

and that's going to be several times more succinct than writing my own slicing code and then having to say 'aref' or equivalent for each node in the syntax tree where there's some array indexing going on. In other words, syntax makes the common case fast for some very key common cases.

So saying that a key part of why Lisp fails is because it's too good and people have to be too smart to understand it is mischaracterizing people who decide to use Python because they don't want to deal with the library problems and lack of common-case syntactic convenience.

(I'm not wedded to being one of the latter people, but I do think that there are some strong points in that direction.)
“Stupidity is infinitely more fascinating that intelligence. Intelligence has its limits while stupidity has none. To observe a profoundly stupid individual can be very enriching, and that’s why we should never feel contempt for them.” Claude Chabrol
All European sites now.
You don't have to pick them out or balance them in any lisp. That's what paredit is for.
Not caused by 'Anonymous'/Operation Payback, apparently: http://twitter.com/#!/Adrianchen/status/14065278329561088
For the record parent is the only non-stupid post in this entire thread.

If I really wanted to read arguments about why Lisp sucks from people who don't program in Lisp, and complaining about issues that have been solved half a dozen years ago from people who can't be bothered to check a web page, I'd go read comp.lang.lisp archives.

The rest of you can go back to trolling about how Lisp sucks and Clojure will solve all its problems even though you've never used Lisp and have no plans to ever use Clojure.
Evolution doesn't seek out advantages, it just happens statistically that changes which carry advantages have more probability of rising to fixation within a species. Plus as ptpu touched on (and I'd wager he's more knowledgeable than I am) it's probably hard to even get the necessary mutations let alone having them stick around, or the species lasting long enough, etc.
Let's say a terrorist had a plastic container with a wirelessly detonatable bomb inside surgically implanted in his abdomen. After a few weeks to allow the incision to heal, the guy went through airport security. Given the number of implantable devices on the market, I bet the TSA folks are quite used to feeling the odd lumps of pacemakers, etc. on people's torsos. While the backscatter xrays might show a bunch of wires and such, would the image look much different than someone who had a pacemaker implanted with various leads into the heart? What if that guy was rubbed down with the bomb detection cloth pad (name?) which is then placed in the explosives detector? After a few weeks of being sewn up, would he trigger an alarm?

What's interesting about this scheme is that the bomb would be ready-to-go, and the terrorist could throw himself right before hitting his remote control button toward the area of the plane deemed to maximize the likelihood of death.

Is this scenario at all possible? How could the TSA possibly deal with it without harassing a bunch of people with pacemakers installed? If a single terrorist tries such a scheme, I predict that everyone with any sort of implanted object will have be added to some sort of pre-screening registry so the TSA can sort-of verify the legitimacy of the thing which shows-up on xray/pat-downs/etc.

As is obvious to most HN readers, the TSA's security measures can only make it more difficult for terrorists to operate. However, the scenarios thought to still be possible do not seem terribly sophisticated compared to the incentive to commit these acts.
It's interesting that the only time Facebook seems to want to offer you any kind of emotional experience is when you're trying to leave the site, and the experience is designed to be a negative one, rooted in guilt.
Claude Paillard Making a Vacuum Tube (video)
"Did your friends really enjoy that party? Yes, but based on their proximities to one another they split into 3 groups with little overlap. Maybe try to have separate parties next time, or set up some icebreakers. The following games and exercises have worked in similar occasions in the past. Sally has done some of them before so maybe she can organize."

Michael...... Vassar. Just making a note of that so I can be sure I never end up at a party at this guys house.
Umm...are there any reasons, other than the JVM, to use Java? I'd much rather write plain old JS (or even better, CoffeeScript) than Java any day.
Good point. C# also has the advantage of being single-vendor if not single-designer.

That single-vendor status, and the identity and reputation of the particular vendor, account for a lot of the stigma, in my opinion. This in spite of C#'s technical merits and more responsive evolution compared to, say, Java (which is also all too clearly single-vendor now, if it wasn't always).

JS evolution is on the uptick, but can Ecma TC39 keep pace while specifying the changes correctly and clearly?
> You say "manipulative", I say "persuasive".

i say false dichotomy. you may have persuaded your friend to stay at the party. you didn't do her any favors if she has to get up early tomorrow. a user at that final screen has clearly made up their mind.

also, saying "* will miss you" is not too far from putting "i'll miss you" in a speech bubble above them. i wouldn't miss >%50 of the people on my fb list and it misrepresents me to say i would miss them.
Well the deactivation page did automatically say that the users "friends" would "miss" them. Did they actually check with these users to see if they would want their image and identity to be used in this way? If not, then it seems pretty disingenuous to me. How do they know that these users will actually miss them? Why is facebook assuming that my friends would not respect my decision to leave facebook if that was the case..
Forget code editors for the ipad. What about code editors for the mac?
Your options are jedit (hideous) or smultron (buggy abandonware), or pay through the nose for textmate (also abandonware)...
The classic (apocryphal) chinese curse:

"May you live in interesting times"
Found the date: 2006. http://web.archive.org/web/20061119052800/www.technicat.com/...
I like your experiment of making /new the homepage for a trial run and see what happens
You seem to forget the venerable classics: vim and emacs. In particular, I've seen a fair number of "Why I've given up TextMate for vim" articles here on HN in the last few months. I've been using MacVim quite happily for the last year or so.
Vast quantities of existing code?
Amazing how quickly the comments on that post degraded, especially over a question that deserved to be asked.
Thanks for addressing that.
For Oracle's sake, let's hope Google doesn't have patents on GWT.
In what sense are sorting algorithms more fundamental than say font rendering algorithms? Nowadays, they are both supplied in standard libraries and few programmers would implement either.
I feel compelled to point out that Woz isn't Apple's anymore and hasn't been for a long time unless I'm completely missing something.
See also: http://news.ycombinator.com/item?id=1997973

Interesting watching everyone immediately crediting 'Anonymous'/Operation Payback for this one...
cageface missed the major reason why Lisp in general is powerful: prefix notation is really the only clean way to implement macros.

The rest is just icing on the cake.
If we're talking about a JVM impl (rather than a source-to-source compiler á la GWT), being able to use better languages like Clojure, Python (via Jython), Ruby (via JRuby), et al. would be a huge reason.
Public invited to inform on those renting to Arabs - Israel News, Ynetnews
That's a TSA website - it also claims that they are professionals working for our security.
Another nitpick: There isn’t a written procedure or automated script for creating it from the bare metal.

I would say "from bare metal" rather than "from the bare metal"
BBedit (for anything), Xcode (for non-web & iDevices), Coda (for web & collaborative), NetBeans (for anything), Komodo (for javascript?). And others I'm probably forgetting.

And yes, most on that list cost money. But nothing a couple hours or so of work couldn't cover.
I don't know but this trend of making Javascript a compilation target is making me want to shoot myself (from a compiler-design perspective). JVM->Javascript seems like they're begging me to head over to Oracle and scream "Guys! You're going the WRONG WAY!"
Hearsay, but I read it was a Mastercard problem limited specifically to the UK.
Maybe you could charge them something reasonable (not much different from small business charges), and reap the benefits of increased word-of-mouth/client-roster, but offer them the option of an exclusive (N-year) licence for an outlandish guaranteed amount. You could discern a lot by how they try to negotiate the exclusive position. Although I suppose that whole exclusivity thing is more relevant to wholesaler-retailer type relationships.