skysight-inc/HackerNews huggingface dataset:
There's also this macro I wrote that I couldn't live without, I call it fmask.

Problem: I always hated that (loop for element in list collect (my-fun element)) translates trivially to (mapcar #'my-fun list) but (loop for element in list collect (my-fun element my-constant)) doesn't. You'd either have to stick with the loop version or use something ugly and inefficient like (mapcar #'my-fun list (make-list (length list) :initial-element my-constant)) or write out the lambda: (mapcar (lambda (element) (my-fun element my-constant)) list) (my-constant could actually be an arbitrary form).

None of these solutions appealed to me. So I wrote fmask. With it, the example is simply rewritten as (mapcar (fmask #'my-fun ? (? my-constant)) list)

Another example:

(mapcar (fmask #'list ? (? (1+ (length ?))))
'(3 8 2) '(("some" "items") "A string" (nil "test")))

=>((3 3) (8 9) (2 3))

Here's the implementation:

(defmacro fmask (function unknown (&rest args))
(check-type unknown symbol)
(macrolet ((autotraverse-let (bindings &body body)
(let ((gensyms (iter (repeat (length bindings))
(collect (gensym "TRAVERSED")))))
`(let (,@(iter (for (nil value) in bindings)
(for gensym in gensyms)
(collect `(,gensym ,value))))
(symbol-macrolet (,@(iter (for (var nil) in bindings)
(for gensym in gensyms)
(collect `(,var (prog1 (car ,gensym)
(setf ,gensym (cdr ,gensym)))))))
,@body)))))
(labels ((unknownp (arg)
(etypecase arg
(atom (eq arg unknown))
(cons (some #'unknownp arg))))
(literalp (arg)
(or (typep arg '(or array keyword pathname number))
(and (consp arg)
(or (and (eq (first arg) 'function)
(cdr arg)
(not (cddr arg)))
(eq (first arg) 'quote))))))
(let ((unknowns (iter (repeat (count-if #'unknownp args))
(collect (gensym "UNKNOWN"))))
(knowns (iter (for arg in args)
(if (not (or (unknownp arg) (literalp arg)))
(collect (list (gensym "KNOWN") arg)))))
(known-function (and (consp function)
(eq (first function) 'function)
(symbolp (second function))
(second function))))
(autotraverse-let ((an-unknown unknowns)
(a-known (mapcar #'first knowns)))
(let* ((unknown-function (gensym "UNKNOWN-FUNCTION"))
(call-function (if known-function
(list known-function)
`(funcall ,unknown-function)))
(main (let ((inner `(lambda (,@unknowns)
(,@call-function
,@(iter (for arg in args)
(collect (if (unknownp arg)
(subst an-unknown
unknown
arg)
(if (literalp arg)
arg
a-known))))))))
(if knowns
`(let (,@knowns)
,inner)
inner))))
(if known-function
main
`(let ((,unknown-function ,function))
,main))))))))
As I understand it, if Haskell didn't already have syntax for

let vars
in expr

you wouldn't be able to use Template Haskell to create it from scratch. Any domain-specific languages you make have to mimic existing Haskell syntax.
There's also jsDump if you don't need/want a fancy GUI:

http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-an...
Oriol espinal
Why with the "sarcasm"?
It seemed like a slight overreaction here, but I have a feeling this was built-up rage over something else.
Two great points : 1) the models are untestable, and contain, by necessity, a large number of fudge factors
2) not all change is necessarily bad or destructive
Sure, working with code in someone else's domain-specific language is hard. But not as hard as working with a lower-level translation from a domain-specific language which only exists in their head. Even if Clojure were only used for one project in the world, I'm still better off learning Clojure than trying to maintain the JVM bytecode it happens to compile to.
Ha ha, I just noticed the Wikipedia page for Arrington:

J. Michael Arrington (born March 13, 1970 in Orange,
California)[1] is a troll, entrepreneur and was the
maintainer[2] of TechCrunch, a blog covering the Silicon
Valley technology start-up communities and the wider
technology field in USA and elsewhere.

Wonder how long that'll stay up..
"Are we supposed to think Arc is a pragmatic language for shipping production applications"

No.
Obligatory xkcd comic: http://xkcd.com/451/
Ay, please let's not start. Arc is still in development. I've never made any claims for the current version except that it works reasonably well for basic web apps.
This reminds me of a textbook from college where the author tried to explain the concept of hegemony by writing 20 pages of unintelligible language, and failed to explain anything at all. Wikipedia, on the other hand, manages to explain the concept in about 3 paragraphs.

The professor wasn't much help either because he was too busy telling stories about what it was like when he fought Mussolini's fascists in WW2. It's no surprise I dropped out...
Agreed, Arrington's initial comment seemed to be a joke playing on all the accusations of him not disclosing his interests in start ups that are reviewed on TechCrunch.
If you convert the dollar amounts to the actual value that the players will experience, then the problem dissolves.

Adjusting for the marginal utility of dollars at various levels of wealth should make this whole problem a non-issue. Am I missing something?
Because C macros have no sense of context; they're replaced in the raw character stream while lexer is reading in a file. C macros are mostly stupid string-replacements of the s/foo/bar/g type.

Lisp macros operate on the abstract syntax of the code forms, after it's parsed. They're tree-transforms. They could also be nested, so one macro would operate on the result of another. All of them could also operate on the values read by reader macros, which are Lisp's C-like preprocessor macros: A lisp macro that frobs vectors could, for example, processes code that looks like any of the following: foo[], vector foo, (vector foo), (array 1 ..), etc. if the appropriate reader syntax is defined for them. That's right, ONE macro to do all that.
The only thing this video did for me was remind me of TechTV. Never seen this side of him but I really do miss TechTV.
It's not sarcasm, I'm sure he's implying that while the two techniques have identical names, they are totally different in essence
Not really. European universities, many of them aren't that hard to get into, but the dropout rate rate is brutal. Streaming is a lot more institutionalised and certified, something the US could stand to emulate. That's a huge part of the difference right there. The top 60% are well served everywhere but the insistence in the US that everyone is potentially college material e.g. in CA the graduation standards are set on the basis of the admission standards for the UC system, set up for the top eighth of the secondary school graduates.
For you Tetris aficionado's out there, you might be interested in a bot I built a few years back for TetriNET, an online multiplayer Tetris network:

http://www.mattmazur.com/2009/05/creating-a-tetrinet-bot/

For a long time after I stopped working on it I saw Tetris metaphors just about everywhere... it was kind of sick.
To be consistent across the lisp and c code, I just want to point out that the definition of the c code should be:

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

compared to

(mac zap (op place . args) ... )

But I also think what the c code really represents is an abstraction. You still need to write out the definitions of the functions each time you call zap. With the lisp code you write one line, which is the whole point of macros: write a single line of code which expands to several lines.
Actually, I should point out that the presence of a high level of social and economic mobility does mean that this is not a plutocracy by definition.

As to your point about gaining money through political power, that can be legitimate. For instance, while the Clinton's were certainly rich before the presidency, Bill Clinton's speaking fees went up substantially after his presidency. Similarly, Mr. Obama's book sales went up significantly as he climbed the political ladder.

America is far closer to a meritocracy than any other country.
Ask HN: Review My App - Alchitect
maybe the other 80% of the effort is experiments and learning so that it can deliver the 80% of the effect with 20% of the effort in your next project? Somehow it seems that if you always do the east 20%, you lose something.
True,

ls | grep 5

is reliable where

ls *5*

is not. (Well, except for awful names that require "find -print0", or preferably having the file taken out and shot along with its creator.)

I'm actually not a fan of xargs. It's more unixy, but somehow I find its options hard to remember. Off the top of my head I find it easier to do

find -exec blah {} +
I think you're missing the fact that in the C version you have to write a specialized selector function each time (to find the thing you want to zap), whereas the macro works generically on any place. ("Place" here is an abstraction meaning "settable thing" that is closely related to Lisp macros and is analogous to the left-hand-side of assignment statements in most languages, but far more manipulable by the programmer.)
A youtube comment says "Arrington is feared, Laporte is loved."

Feared? really?
James Gosling's Toy Show
Well, it makes me angry that so many people have been made worse off in the name of helping them.

With regard to the school system in particular, I would suggest completely cutting off all government benefits - direct funding, indirect funding, accreditation approval, credentialist laws, licensing laws, everything. If only that were all it took. ;)

Before you downvote to disagree, he did ask!
Extremely cool toys. FF through the first 2 minutes of annoying MC guy.
YouTube commenters are known for their erudition.
Please use Lisppaste to show gorgeous code :-)

http://paste.lisp.org/new
"I suddenly learned that I didn’t have the slightest idea what to say to someone like him."

It's really not that difficult: watch sports. For men, it's the easiest icebreaker. A plumber in Boston? Chances are good he knows that the Red Sox swept the Tigers this week. There ya go - instant conversation.

Like I said, this tends to work for men. As for talking to women... I'll let somebody else handle that one.
Most people think macros are for "compacting" code, or factoring out common parts.

Macros are for introducing new control primitives, syntax and evaluation models into the language.
I believe plutocracy is defined as government by the wealthy, so it appears you are using a different definition.

As for Clinton, that depends on what you mean. The fees did go up because of his earlier political power.

America is far closer to a meritocracy than any other country.

I'm inclined to agree, but being closer to a meritocracy than any other country does not mean America is not a plutocracy.
The point was to document what was going on, so that users of the MyVidoop service would make a decision about whether to stay or not.

As well, it was a post on my personal blog — kind of the point to be somewhat personal, right? ;)
Believe me - nothing is perfect.

No school, no ideology, no government, no schoolbook, no person. Don't spend your time lamenting that fact and using it as an excuse not to do your best.

In your situation right now, this week, this month, you can try to make the best of what you have. Understand the limitations, sometimes improve the system around you.

By complaining and feeling helpless, you will defeat yourself. I have lots of experience at this :)
Thank you for answering. (I'm not sure why a legitimate question and a legitimate answer would be downvoted.)
Was I cherry-picking things? I tried to be pretty balanced, though that might be impossible given that I was among those laid off.

Things are still apparently being figured out among the remaining management, but that there was no public acknowledgement that the company was out of money seemed irresponsible to me, and needed to be addressed. I think their lack of disclosure affects the real lives of others more than telling the story of what happened and where things are known to be at — especially for a company that deals in security.
Any of you with iPhones should go try out the multiplayer iPhone falling tetromino game some friends of mine put out (they had me quickly bang out most of the graphics a few months ago), Mino, and tell me what you think.

App store link: http://ta.gd/mino
Not wrong but misleading. Agriculture lead to a massive increase in effective population size and in selection parameters, some of which were very strong and sustained. The higher population means more mutations which means more raw material to work with in terms of potential beneficial mutations. As for recently selected alleles the canonical example is probaaly lactose tolerance. You can make a good case its behind the spread of the I-E language family. As another example alcohol tolerance, better tolerance for high starch diet and lower levels of ADD in populations with long histories of agriculture. Contrast recent hunter-gatherers like Oz aboriginies or 'nesians with Europeans or Chinese. Diabetes, alcoholism, poor educational outcomes because of the ADD and other things. AFAIK ADD is practically unknown among East Asians, subsistence rice farming and more than a millenium of civil service exams as social mobility would both select against it.
No problem. I'm not sure either, so I upvoted your question.
Leo was justified to call Arrington out. What a douchebag thing to imply honestly.
I guess Leo is genuinely interested in technology. Arrington? I don't know off course but he doesn't seem to care.
I usually listen to TWIT as a podcast, but this makes me want to tune into the live feed to see if there is a follow up.
Nice post. I really like your writing style.
Probably. It's such trash journalism this Arrington guy deals in. He should probably be covering celebrity gossip, not technology. Anyone can go try out a Pre, many people have review units, and he didn't even let him answer the question before suggesting bias.
Macros expand into other code, so in the literal, obvious sense, there isn't anything you can do with them that you can't do without them. The question is whether you can do it as briefly, as clearly, or as composably.

Here's another example. I work on a spreadsheet app. A spreadsheet has many operations that apply to either a row or a column (e.g. selecting a row/col or resizing it). The fact that they occur in transposed dimensions make them difficult to abstract over with functions. You probably end up with a bunch of boilerplate that says things like "if this is a column, change the first co-ordinate, otherwise change the second", or most likely would just write the code twice, once for the horizontal case and once for the vertical. In Lisp, we can write such a function for one dimension and then use macros to generate a transposed version of the same function that does exactly the same thing in the other dimension.
PG asked "How do you implement that in a language without macros?". I responded with a simplest translation of the example, but a more general solution exists too. Nothing stops me from using GObject instead of void*, which can provide named "places" and as much generic functionality as needed. `selector` and `action` can even operate on property tables, which would be a closer translation from lisp.

I was simply surprised that PG asked about something like that - I still think it's pretty simple and the code in C is as close to the macro as possible (with whatever object abstraction you need).

However I have to admit that I thought about other languages now and it seems that the described zap() is not possible in python... and that's interesting / worrying:

action(object[place])

cannot assign a new value to `object[place]`, while

object[place]=action(object[place])

has to do the lookup twice.
but you know...we need photo-realistic graphics to enjoy our games >_>
I don't understand the obsession with doing realistic things in ever more realistic settings when it seems preferable to do insane things in impossible settings.
sigh TechCrunch is a whole bunch of trolls, but there aren't enough startup news sites. I read TechCrunch in my pile of feeds, but with a large grain of salt. Is there a site which covers basically the same news, without the silly Twitter love fest, and with less asshole-ish editors?

I'd really love to see real journalists who believe in "be good" doing a solid site. If that were to happen, people could send their exclusives and firsts there to slowly put TechCrunch out of business.
I don't think tech recruiters want to see a colorful/fancy resume. They want to see experience, relevant skills, GPA, etc. I mean, if your resume was in the form of a quine that included the relevant information or something I guess that would be cool, but in general I think unusual resumes work best for jobs focused on creativity and design.
When people talk about airplane safety issues I like to point out that awesome avionics software, a ridiculous thrust to weight ratio and a great pilot landed an F-15 that had lost it's wing.

http://www.airliners.net/aviation-forums/tech_ops/print.main...

The simple fact is bad things happen all the time to airplanes and mostly they just keep on flying. People want 100% safety, but 99.99% is about as far as we can push things when we want to cheaply fly thought the air at 600+ MPH tens of thousands of times a day for hours at a time. Consider the idea that out of all domestic flights on 9/11 less than 1/1000 of them had any real problems.

PS: On a normal day there are 30,000 domestic flights, but most of them where canceled on 9/11.
Google Lunar X Prize - Underdog Team Aims For Moon
Having real writers probably made it hard for people to join, because they felt they needed to do really well. This guy, on the other hand, doesn't dance very well, which makes it easy to join in and not look bad.
Sure. But “epic fail”?! Come on, that’s just absurd.
The interruption was a bit rude. Arrington is a lawyer, and that's just what legal folks do. Laporte felt it was a bit disrespectful, and though the level of reaction was not warranted, a reaction was understandable. Laporte has been around forever, and I think he's earned a pretty good reputation amongst nerds. Also, have you seen crunchgear? These people do not know their tech -- that much is clear. They are in the business of selling tech, not creating it. That being said, they're important.

I'm a recovering lawyer myself and I left because working with lawyers was worse than anything I had experienced before (which was working mainly with startups and non-profits in NY).

Its fascinating to me. There are a lot of bitter nerds out there who passionately hate T/C, like fanatically so. It seems the slashdot/reddit crowd has repeatedly criticized those guys for being marketers rather than geeks, and they are right in that basic premise but I think the level of animosity is unwarranted. Even if these guys aren't pedigreed nerds, they are fascinated by and love technology and they are an important part of the industry.

Its one of the reasons I like HN -- it has a much more nuanced view of the important role folks like Arrington and the VC community play in the bigger world outside of nerdland.
Actually social mobility in the US is lower among the native born than in a whole swathe of other OECD countries, Israel, the UK, most of the Nordics IIRC. That's what you'd expect with a hirtory of rough meritocracy preceding the rest of the world and assortative mating. Ye've been "settling" longer so there'll be fewer people born into one social class who are wildly outside the norms for it. Standard provisos about statistics being a lot more useful talking about populations than individuals apply.
Arrington is a complete hole and Leo does actually care about technology. I was kind of puzzled why Leo started with the Gilmore Gang anyway. The show is 98% attitudes and is generally idea-free. It was good to see Leo blow up over Arrington's trolling.
I've used this script and it's saved me a lot of work. It reduces the time setting up DNS from 30 minutes (give or take depending on how many CNAMEs, A records, and MX records you need) to about 10 seconds.
Why would you think removing government funding would reduce the ability of rich people to send their kids to high quality schools, or help poor people go to good schools?
Some of those are cool, but I suspect that a clear, concise cv combined with a portfolio would better serve everyone's needs.

I've often thought about what a cool developer resume on paper might look like, one that would satisfy HR and upper management's need for keywords and employment history, while at the same time conveying one's passion and interest in technology to the geeks.

When I'm interviewing one of the things I really, really appreciate is a resume that gives me a few places to start the interview. The ideal resume should start a conversation.

Also, most large shops totally textify resumes for distribution, so fancy formatting can be all for naught.
If Leo pressed on, wouldn't that have been a case of feeding the troll? Arrington even eggs him on with "Whatcha gonna do about it?" What a prick.
By using C you are changing the problem, as your C pointer passes by reference instead of value. The lisp macro works equally well when passing by value, so try rewriting your function to operate on a struct (and, not a struct pointer). It is likely that PG was referring to this functionality when asking how to implement this as a function.
I agree. I just want to add that this is what happens when the financial sector gets so heavily subsidized by the government, directly and indirectly. That's where the money is sent, so that's where the fat salaries are.

I've heard truly disgusting stories about how cash is spent on Wall Street.
Arrington responds to the Gillmor Gang thing
Note the reason discussion on programming languages.

http://gmarceau.qc.ca/blog/2009/05/speed-size-and-dependabil...

Lisp and scheme do pretty poorly on the power scale. Even going back to the original data neither finish in the top 10 and Lisp gets beaten by java.
Leo Laporte comments on TC article:

"Thanks for the post, Mike. Apology accepted. Now that I know what was going on in your mind, I apologize to you.

There seems to be something about the Gillmor Gang that just engenders over the top passion. I’m embarrassed by my overreaction. Peace."
I subscribe to TWIT and Macbreak Weekly. I enjoyed the panel members (which are differently for the two shows, both the regular ones and the occasional). But what I enjoy the most is Laporte himself. I like his style and the effort that he puts in day in and day out to understand the technology. But mostly he is a very generous person, never cut off his guests and always let them be the experts. This is the first time that I have seen him standing up for himself and I like it. Good going, Leo.
Agree wholeheartedly. Techcrunch has its faults, but its the only site doing what it does. To nerds who are used to civilized, crowd-moderated discussions on slashdot/reddit/HN, sites like TC and mashable look like big troll kingdoms, but we have to take what we get.

The other thing worth noting is that outside of geek world, just about everything seems like troll kingdom. I want to puke when I see sites with millions of visitors but without threaded discussions, but its a sad reality and a slow process. The nerds are always ahead of the curve. The sad/funny thing is that slashdot didn't have these issues in the late 90's.

In terms of a site that covers the same news without the dickishness, aren't we on it right now? This is the best startup-news site I've ever found. And when t/c posts something worth reading, its usually here within minutes.
The privileging of solid over fluid mechanics, and indeed the inability of science to deal with turbulent flow at all, she attributes to the association of fluidity with femininity. Whereas men have sex organs that protrude and become rigid, women have openings that leak menstrual blood and vaginal fluids...

I'm having a hard time believing this can be anything other than satire.