skysight-inc/HackerNews huggingface dataset:
It lets you apply an arbitrary function to a variable or a position anywhere within some structure:

arc> (= flag t)
t
arc> (zap no flag)
nil
arc> flag
nil
arc> (= foo '(1 2 3 4 5))
(1 2 3 4 5)
arc> (zap (fn (x) (* x 10))
(foo 0))
10
arc> foo
(10 2 3 4 5)

BTW, in more idiomatic Arc you'd say

(zap [* _ 10] foo.0)

Here's a line in HN that uses it:

(zap [firstn votewindow* _] (uvar user votes))

This expands into roughly the equivalent of:

(= ((profs* user) 'votes)
(firstn votewindow* ((profs* user) 'votes)))

Not quite, though, because you only want to evaluate the code that gets you to the location once, and the operation needs to be atomic. The actual macroexpansion is much more complicated.
Ask HN: What's a startup and what's a web app?
How do you define a web startup with respect to a single web application?

I've seen things on HN that I would have classified as a web app, but the submitter touted it as a startup, so I was wondering what y'all had to say about that issue.
Facing Lawsuits And Complaints From Celebs, Twitter Launches Verified Accounts
See here for an opinion from an SDK beta tester:
http://daringfireball.net/2009/06/palm_saturday

Scroll down to "Regarding the Mojo SDK and Eating Their Own Dogfood" for the goods.
why is 1/ω=ε ? would it not tend to 0. perhaps I'm misunderstanding you, I don't really grok set theory.
You might be interested in what John Wiegley had to say on the subject (in particular, Haskell has no macros; is this bad?) a couple of months ago:

http://www.newartisans.com/2009/03/hello-haskell-goodbye-lis...

The comments below the article also have some interesting and relevant things to say.
if it is to make money, it is a startup.
if it an application on the web, its a web app.

it can be any combination of true or false for either.
To me a startup is something which is built with hopes for it to eventually be profitable. A web app is something that you build that you don't really expect to make money from
http://news.ycombinator.com/item?id=224861
For somebody with 15 years of Lisp experience he sure managed to mention the most trivial use of macros.
I think the webapp/startup line blurred together in the funding frenzy of the past few years where revenue-less webapps could be acquired profitably for the founder.

But the line is growing more distinct starting as revenue regains its importance in the scene. Startups are projects with clear revenue goals, and relatively detailed plans by which to attain those goals, that the founders expect to turn into some sort of business.

Webapps may just be useful and fun distractions without concrete monetization plans and/or goals. They have the potential to grow into startups, but are missing a lot of the other components that go along with it (business planning, revenue projects, goal deadlines, etc.).

That said, there's still no absolutely clear delineation. Some may alternate between the two definitions.
I think a lot of "startups" would be better off calling themselves projects. There's nothing wrong with being a project: Wikiepdia's a project, GNU/Linux is a project. But neither of them ever expected to make money; the same could be said for many (by no means all) web apps that call themselves startups.
Will paid content work? Two cautionary tales from 2004
A web app is a product. A startup is the structure that monetizes/wants to monetize the web app.
It's clever and I appreciate the sentiment!
http://brh.numbera.com/software/jsonview/
Haskell can do almost everything people generally use macros for without them. But there's always some things only macros can do, so for that you have template haskell.
Arguing about the definitions of words is productive if you're a lexicographer or a lawyer.

For the rest of us, it absorbs time which could be used to separate customers from their money by selling them things they want.
I always considered a startup as an incorporated legal entity and a web app as an application on the web.
Google Apps definetly. As mentioned, the interface is great and search functionality is offcourse excellent. (Not to mention storage)
Very sad news. What exactly happened? I read that it was a "swimming pool accident" on Wikipedia, but none of the sources verified this.
Twitter Launches Verified Accounts
Sure it tends to zero which is ε, being ω the largest and ε the smallest possible.

Never mind, just trying to understand Cantor's brilliant mind.
Is innovation fair?
ha. That'll teach me to turn on error reporting at 3am...
You are obviously a startup then ;)
Search for Change, Respond and Exploit it as an Opportunity
Well, it is good to be clear about what things are and where you'd like to go with them. The 'project' comment elsewhere here is right on - not everything can or should be about making money, and it's good to recognize what sort of thing you're dealing with at any given point in time.
Evolution is not teleological. Your question is meaningless.
> Is this correct in set theory?

More or less:

http://en.wikipedia.org/wiki/Surreal_numbers#.22To_Infinity_...
What the heck is this? Somebody needs to tell this wannabe dating advice guy that giclée just makes people think of gussied up inkjet prints.
Reminds me of Arlo Guthrie's tale of woe at an induction center:
"And friends, somewhere in Washington enshrined in some little folder, is a
study in black and white of my fingerprints. And the only reason I'm
singing you this song now is cause you may know somebody in a similar
situation, or you may be in a similar situation, and if your in a
situation like that there's only one thing you can do and that's walk into
the shrink wherever you are ,just walk in say "Shrink, You can get
anything you want, at Alice's restaurant.". And walk out. You know, if
one person, just one person does it they may think he's really sick and
they won't take him. And if two people, two people do it, in harmony,
they may think they're both faggots and they won't take either of them.
And three people do it, three, can you imagine, three people walking in
singin a bar of Alice's Restaurant and walking out. They may think it's an
organization. And can you, can you imagine fifty people a day,I said
fifty people a day walking in singin a bar of Alice's Restaurant and
walking out. And friends they may thinks it's a movement."
"A startup is a human institution designed to deliver a new product or service under conditions of extreme uncertainty." -Eric Ries
With these claims about intelligence and long term success, I wonder if part of the issue is whether smart people define success differently.
Uh oh. Honest mistake. I must have typo'd my search for this article before I posted it.
A lot of people find their fame posthumously only.
And web apps can switch state. Delicious wasn't originally a company, but it turned into one.
That's ok. A year ago is long enough.
Watch out for the limits though:
http://mail.google.com/support/bin/answer.py?hl=en-uk&an...

So if you're automating a newsletter, bear those numbers in mind.
If you're looking to configure mail from your slicehost and you do go with the Google Apps option (that's what I use), you might like to have a look at this guide to getting sSMTP working with Google:

http://wiki.debian.org/sSMTP

I can't recommend sSMTP enough to anyone that doesn't want to maintain a mail server. All UNIX systems should be able to send mail and this is very much still the case on modern Linux systems, but this is often overlooked.
25 Years of Tetris: From Russia With Fun
Linkbait title, but the (I'm being generous here) thesis is this: the human species has lost prowess (strength, endurance, intelligence) by shifting from our "native" hunter-gatherer diet and activity level, to a sedated lifestyle based upon agriculture.
If that's all it does, then I don't see a problem with implementing it in any language without macros. Let's take simple C. (I didn't test it, or even try to compile - just want to show the idea)

void zap(void *object, void* (*selector)(void *), void (*action)(void*)) {
action(selector(object));
}

Given your explanation: "It lets you apply an arbitrary function[1] to (a variable or a position anywhere within some structure)[2]."

Where object is the structure you're operating on, `selector` is a function taking an object and returning a pointer to the position [2]. The `action` is a pointer to an arbitrary function [1].

Your first example would look like this:

int foo[5] = {1, 2, 3, 4, 5};
void *select_first(void *x) {return x;}
void act_times_10(void *x) {int *i = (int *)x; (*i)*=10;}

zap(foo, select_first, act_times_10);

Or am I missing something you didn't include in the description?
Well, that's a pretty large assumption. At least in american English, the phrase 'this _____' is commonly understood to be self-referential in some manner unless some other context has been previously established. For example:

This sentence contains ten words and is a true statement.

If you haven't read Godel, Escher, Bach, now is the time.
When min-max is wrong
You may find it notable that he specifically mentions his father, a painter, and how that ties into being a maker[/hacker].
its an interesting point thats made. I do believe that google leaves things available/open to us, the users, because we can build useful thing from their ground work. This in turn might get people to spend more time online and therefore use their money making system even more.
so the more free stuff google puts out, the more users build on it and the more google ends up making. S-M-R-T

I also totally agree with the point that todays (well for the history of startups) get-in build a user base and get out really is no way of creating anything sustainable. things will need to change.
Great read
In 2006 over 2 months, I wrote an OCR (optical char recognition - turning images back into text) system in Lisp using macros.

First it finds all 'features' by traversing a 1-pixel wide representation of the text character's image. Then you describe which features you want to look for, in a macro language.

So (in layman's terms) , a 'c' is a top curve curving up, a lower curve curving down, and a stem at the left-hand side close to the left-hand of those curves. So 'c' would be about 3 rules, in this macro language.

It was fun but monstrously sluggish and I never got the 1-pixel wide algorithm (called skeletonisation) that I used, to work 100%.

One thing it did have going for it was you could identify really small font chars and even 10-pixel-high truetype fonts, as long as you normalise so each char is 60 pixels high.

I ported the system to C++ also in 2006 and had to write a simple Scheme-ish interpreter to turn the Lisp ruleset into C code.
I thank you for bringing new eyes to an old article anyways.
"Om nom nom."

"Crunchy, aren't they."
I started developing in GAPE, but stopped because of fears of vendor lockin, difficulty in getting my data out, the limit of only 10 applications (and you cannot change the URL after you create the application, nor delete unused application).

All-in-all, I really enjoyed the interface and got up and running very quickly, but I felt like I was painting myself into a corner.
Hi Mike

Check my other post in this thread. Also, it's OS X 10.5.6. Maximized window.

The first message that comes in (randomly) obscures the text about raising funds. Is it a bug or, respectfully, a design flaw / feature? I would suggest you test this on a netbook.
I'm just curious...what sort of workload are you dealing with that makes XFS a rational choice? It's dramatically less well-tested than ext3, or even ReiserFS, on Linux, and its performance characteristics are not particularly compelling except for a few pretty specific cases.

I have a history of tinkering with odd filesystems, but I wouldn't deploy anything other than ext3 to a production Linux server at this point in time.
This band has some really good music, too.
Look I don't want to be dense here --- and there's a good chance that's exactly what's happening --- but it sounds to me like you're talking about collisions between SHA1, SHA1(SHA1), SHA1(SHA1(SHA1)), etc.

Rename the functions. SHA1(SHA1) is now SHA1', SHA1(SHA1(SHA1)) is now SHA1''.

Explain why I care if there's an m and an n such that SHA1'(m) = SHA1''(n)?

They're two different hash functions.
I used macros a lot in C to initialize structs and arrays with constant information, like keywords for a parser. It would still be useful for languages, like Java, which do not have literals for initializing objects, maps, and arrays. Another use would be DSL's on top of a language like Python. Sure you can do all of this within the languages, but macros would make it more expressive and concise. I really don't buy the argument that we need to be protected from idiots. They will piss in the soup regardless.
At what point do you incorporate?
I want to do a table of time between joins.
I've been reading Founders at Work and I've been thinking about this. It seems that there's basically two main paradigms when it comes to tech startups:

1) Start out building a product/service that you think people will pay for (Viaweb, Excite, VisiCorp) and evolve the idea where appropriate

2) Start out building a product/service that you want to use, and its immense popularity makes it become a company (Facebook, Delicious, Yahoo, Google)

A lot of people (myself included) have thought "the way to make it big is by doing #2: making a neat website, and hoping it takes off incredibly". But perhaps a more statistically sound approach is to do #1. Has anyone done a study of this kind of thing and looked at expected value?
I think Firebug (and Firebug Lite for IE, Safari and Opera) are far better tools than this looks to be.
0:00 first dude is already dancing
0:19 green shirt
0:53 black shirt
1:13 2 more
1:17 6 more
1:26 1 more
1:30 4 more
1:40 dozens
Personally, I think compiler macros are far more interesting than 'regular' macros. I would love to see compiler macros even in mundane languages such as python.

Example, in pseudo code:

<code>
defun regex_find(some_string, regex)
return regex.compile().find(some_string)

def compilermacro regex_find(some_string, regex)
if IS_STRING_LITERAL(some_string) and IS_STRING_LITERAL(regex)
SUBSTITUTE exec(regex.compile().find(some_string))
elif IS_STRING_LITERAL(regex)
SUBSTITUTE exec(regex.compile()).find(some_string)
else
DO_NOTHING
return

</code>

regex_find(MYSTRING, '\w(.+)\b')

A language without compiler macros would compile the regex at runtime, even in those cases that it is a string literal, and could be compiled at compile time. And in the case that both the string and the regex are string literals, the result itself could be computed at compile time. Another alternative, used by lots of languages/libraries, is to maintain a cache of recently compiled regular expressions. Of course, this doesn't help when you have a loop that uses 15 regular expressions but it only caches the last 14, for example.

This is one reason why CL-PPCRE is faster than the C PCRE in benchmarks, it makes great use of compiler macros.

This is a very concrete real world thing, that isn't endlessly debatable, unlike regular macros, and it could be included in languages without any special macro syntax.

One example of a time I really wanted compiler macros in Python was when I was doing some parsing of binary files, using the struct module. The struct module lets you do stuff like struct.decode(data, 'UUUIUH'), where the UUUIUH is some code for Unsigned long, unsigned long, 32bit int, whatever. However, it parses the little code each time you want to use it, which ends up taking way longer than the actual decoding itself. In python 2.x, whatever I was using, they didn't have any way to make any sort of compiled decoder, you had to just use it as above, which is silly, since the code is almost always going to be a string literal and 99% of the work could be done once when the code is compiled.
When you absolutely must, ie. something would break horribly if you weren't an incorporated legal entity. Like you have a term sheet from investors, or you want to start charging people. Incorporating early is fairly pointless, especially if you're just at the idea stage.
Pareto principle: Roughly 80% of the effect comes from 20% of the effort
These two are not exclusive. The first computer Apple made was something the founders wanted, but also something they knew people would pay for.
I also am using the sSMTP + Google Apps combination. It's fantastic and even if I bork up my server I can still send and receive email to my domain.
no less than 23 hours ago, this was on the front page - http://news.ycombinator.com/item?id=644007
Moshe spawned this essay the first time he appeared on HN; maybe it still has some relevance. I wish him the best. http://daniellefong.com/2008/05/15/advice-to-the-bright-and-...
>>I recall seeing the stats somewhere that American students have significantly more vacation time and therefore less school days than their counterparts in Europe and Asia.

Yeah, but I think that the European counterparts are getting a significantly better education. The reason I say this is because we have a lot of emphasis on rounding out students with solid liberal arts foundations in our American undergraduate programs, whereas Europeans are able to skip straight to specialization - probably a result of a more formidable intellectual foundation.
I understand how you feel. However, I'll also say this: the books are increasing your knowledge. Get as much information as you can from them. If they contain proofs and examples, then learn those proofs and examples! Try to derive the underlying proofs yourself! Be more proactive. Also, I know you care about emotion, but it's "effect", not "affect". ;)
Someone please forward that to my SO; I think she didn't know of the criteria.
My target market is the scholastic community, as part of a graduate school project.
I have no resume. Never had one that I actually cared about; the few times I put together a resume in an afternoon was because someone wanted to have something on file, usually a few days after I started :-)
Some folks think so, but I don't. For two different reasons.

The first, rational. Some folks think science will overturn religion because (they so casually assume) religion is false, irrational, and inflexible. Well, that's a touch easier to just assume than to actually argue with a live Christian intellectual, isn't it? I find the viewpoint humorously arrogant, and shall return the favor: Christianity will survive because it is not only rational, but also true. Theology and science both love truth, both pursue it through reason, and anything that is true cannot remain the enemy of either one forever.

The second, human nature. Some folks think religion is nothing more than superstition, and easily overturned by education. I think folks might find that foolish if they actually visited a church and tried it; the roots of religion in human nature are an awful lot deeper than that. The need for God, for purpose, for morality, for mythology, is a very deep and universally human thing. Science, for all its practical success, is a pursuit for intellectuals, but the spiritual is universal. For every cold intellectual you show me, I'll show you ten romantics, and maybe even a couple guys who answer both calls.

Christianity has been around for two millenia; Judaism for four or five. Neither is going anywhere soon. Oh, the institutions will change, the names will change, how they actually function may grow close to unrecognizable. But folks will gather for worship and prayer as they always have, and devout mothers will pray over their children as timeless peers. The hot theological debates will be different, but doctrine and scripture that hasn't changed in three or five millienia is not going anywhere in another ten.

It seems fashionable to pronouce religion dead at least once a century, but it's like the old knight said . . . the church of God is an anvil that has worn out many hammers.
No, you're still missing the point :)

He's saying that SHA1'(m) = SHA1'(n) implies that SHA1"(m) = SHA1"(n).

Let's do this with a very simple, silly hash function.

Let h(x) = (x/2)%10 (in integer arithmetic, e.g, 5/2 = 2, so h(5) = (5/2)%10 = 2%10 = 2.) So then let h2(x) = h(h(x)) = (h(x)/2)%10, and h3(x) = h(h(h(x))) = (h2(x)/2) % 10.

Here's a table:

x: h h2 h3
0 0 0 0
1 0 0 0
2 1 0 0
3 1 0 0
4 2 1 0
5 2 1 0
6 3 1 0
7 3 1 0
8 4 2 1
9 4 2 1
10 5 2 1
11 5 2 1
12 6 3 1
13 6 3 1
14 7 3 1
15 7 3 1
16 8 4 2
17 8 4 2
18 9 4 2
19 9 4 2
20 0 0 0
21 0 0 0
...

Hopefully this table shows that collisions are much more likely for h2 than for h, and more likely for h3 than for h2. The range of h3 is smaller than the range of h2 which is smaller than the range of h.
Weird isn't it? Those who do not understand Unix systems programming are doomed to go language hopping for years.

High scalability and network performance is not a language or a library feature, it's a kernel feature.
Recursion of components with Tapestry 5
It's quite difficult to do recursion of components in Tapestry 5. This blog post shows a technique to do just that.
I don't think this is about activity and lifestyle.

I think the thesis is that eating primarily grains had a lot of negative health consequences for people, as opposed to eating primarily meat and foraging.
Yeah, but we have gained other traits as a result. Evolution has no "direction" - there is no such thing as de-evolving or backwards progress. Evolution is merely progress, that is all.
Now you're talking. But not all are, currently, required to "get verified":

The experiment will begin with public officials, public agencies, famous artists, athletes, and other well known individuals at risk of impersonation.
The startup is the business itself. A web app is an app on the web. Gmail is a web app, even though it's a product of a largish corporation. Windows Live is a collection of web apps made by a company that hasn't been a startup since the Altair was the hot new thing.

Likewise, a startup doesn't have to be or use a web app. Loopt runs on cell phones.
How Wireless Technology Improves Human Standard of Living
Wireless fidelity, or WiFi, is an amazing technology that allows you to network your computers, office, home, etc. without the need for wires. This makes networking so much easier and less messy because wires are not used. The computers simply connect to the network via radio signals. Because of this easiness, many businesses, schools, malls, restaurants, cafes, stores, airports and other businesses have set up wireless hot spots that allow anyone to log onto the network.
Incorporating gives you better liability protection if you do it right. Depending on your product, this may be valuable.

Even if you're not incorporating, it's still a good idea to have a fairly formal agreement if you're working with a team of people.
The computer crash
"I feel it's a waste of time playing video games because it's not helping humanity in any way"

Looks like he still has some things to learn
Amazing video. Some guy just became a prophet while tripping balls.
High school is actually a trick question.

They're trying to teach you to take the initiative and do something other than complain (no offense) or not utilize your tools in front of you at 110%.

Don't like high school classes because they're boring or stupid? Then go to where good classes are. When I was in HS I went to the community college part time -- I just wheeled in and asked and they said yes.
Inspirational code, reminds me why I refused to be a corporate programmer.
A startup offers services or products, some of which could be web apps.

A web app is another form of software distribution, via the web.
They're independent from each other. A startup is young company/business offering a product or a service. A web app can be the service that a startup provides, which is why you see many web startups as web apps.

I can create a web app without making it a startup/business, and vice-versa.
How did they get this article so wrong? 37signals charging for Ruby on Rails?!!!

What sort of journalism is this?
Install Google Page Speed into Firefox 3.5 Beta