Foldl and foldr considered slightly harmful - <AUTHOR> http://docs.google.com/viewer?url=http://research.sun.com/projects/plrg/Publications/ICFPAugust2009Steele.pdf&pli=1

<comment><USER2> I posted this previously: <http://news.ycombinator.com/item?id=814632>

The highlight of the discussion (if you ask me) was this video link of Steele giving this talk at ICFP:

<http://www.vimeo.com/6624203>

</comment><comment><USER3> Well, I'm convinced! No more cons lists for me.

There are other benefits to programming techniques built around general catamorphisms, too! For instance, by abstracting all recursion into the catamorphism framework, the destructor function that does all the heavy lifting can often be easily expressed in a subset of the language that contains only total functions (that is, functions that always produce a valid result in finite time), allowing (comparatively) simple proofs of correctness.

This also pairs well with the mirrored approach of building (potentially infinite) data in an "on demand" manner. Abstracting the corecursion into the anamorphism likewise allows the constructor functions to often be total.

Turing-completeness is overrated!

<comment><USER4> That was so far over my head I'm not even sure I have a head anymore.

</comment></comment><comment><USER5> Is Google Docs now the new scribd when it comes to PDF links on HN? Give the real URL and note that it is a PDF in the title!

<comment><USER6> I would never have noticed. I've been using the Chrome extension to open PDFs in Google docs for weeks now. Chrome is now my preferred PDF reader. It is fast, usable, and lives where I live: in my browser.

<comment><USER7> Where do I find this plugin? A quick search doesn't find any useful results.

<comment><USER8> Maybe he meant: [https://chrome.google.com/extensions/detail/nnbmlagghjjcbdhg...](https://chrome.google.com/extensions/detail/nnbmlagghjjcbdhgmkedmbmedengocbn) ? For me that's the top hit at <http://www.google.com/search?q=chrome+extension+pdf>

The greasemonkey script I linked above behaves a bit differently, but also works in Chrome.

<comment><USER6> Yup, that's it.

</comment></comment></comment></comment></comment><comment><USER9> Dupe: <http://news.ycombinator.com/item?id=814632>

</comment><comment><USER10> Very clear thinking there. I suppose this may be old hat for some people, but I found it informative.

<comment><USER11> It seems like a pretty logical step to go from cons cells to these conc structures. I wonder if Rich Hickey knows about this and can get it into Clojure somehow (if it isn't already being used somewhere). It seems like a perfect fit for Clojure.

<comment><USER12> There's a good overview of how persistent vectors are implemented in Clojure here - [http://blog.higher-order.net/2009/02/01/understanding- clojur...](http://blog.higher-order.net/2009/02/01/understanding-clojures- persistentvector-implementation/)</comment></comment></comment>


After Decades of Growth, Colleges Find It's Survival of the Fittest - <AUTHOR> https://www.wsj.com/articles/after-decades-of-growth-colleges-find-its-survival-of-the-fittest-1519209001 <comment><USER2> I've been in serious debate with myself over whether to encourage my son to go to college when it is time. I guess it depends on what field I see him become interested in. I could provide enough resources for him to learn enough to get an entry level job, if he chooses tech. But I guess I still have that romantic notion of him getting a well-rounded education in many subjects that I couldn't help him with, making friends, and meeting interesting professors. At least I could help him find a good college. I was the first person in my family to even graduate high-school, so I was flying blind.

Besides the notion that so many jobs expected it when I was starting out, I'm not really sure what good it did for me. Put it this way, I couldn't even tell you where my diploma is. But once a month I still go online and pay for it.

<comment><USER3> You want your child to go to college because:

1) The average run of the mill degree results in twice the earnings and half the unemployment of those with just high school.

2) The average run of the mill degree results in a $900k lift in lifetime earnings (for men) over a high school diploma. The lift for women is not quite that much but that might have something to do with the types of degrees that each get.

These numbers are averages so if your child completes a stem degree from say MIT, the lift in lifetime earnings is likely quite a bit more than that.

Want more? Check out : [https://www.bls.gov/emp/ep_chart_001.htm](https://www.bls.gov/emp/ep_chart_001.htm)

<comment><USER4> This shows correlation but not causation. Hypothetically: people with certain background (social class) and traits (IQ) are more likely to go to college, and they would fare as well or better without college. I'd be very interested in stats of lifetime earnings difference that was corrected for selection bias.

<comment><USER3> Would a 1% sample of the US population that included level of education and earnings do the trick for you?

[https://factfinder.census.gov/faces/tableservices/jsf/pages/...](https://factfinder.census.gov/faces/tableservices/jsf/pages/productview.xhtml?pid=ACS_pums_csv_2016&prodType=document)

It is not going to have variables like "Social status of your parents" or "IQ" but it does have a rather extensive list of demographic variables to control for.

Let me know what you uncover.

<comment><USER5> Sample size doesn't impact the fact that you shouldn't draw causal conclusions from merely correlative data.

<comment><USER3> Then perhaps you might want to check out some twins studies:

[http://davidcard.berkeley.edu/papers/causal_educ_earnings.pd...](http://davidcard.berkeley.edu/papers/causal_educ_earnings.pdf)

and/or

[http://www.nytimes.com/1992/08/19/education/twins-study- show...](http://www.nytimes.com/1992/08/19/education/twins-study-shows-school- is-sound-investment.html)

I'm going to strongly encourage my kids to go to college.

Frankly if you/anyone is not convinced that higher education leads to increased earnings then by all means forgo college and keep your kids at home.

My kids will have plenty of competition for jobs from those with higher degrees from around the world as it is.

<comment><USER5> Pointing out that you should not draw causal conclusions from correlative data does not mean that I would not encourage my kids from going to college. It means that you should not conclude that going to any college _causes_ better outcomes. It also doesn't mean that you should conclude that going to college _does not cause_ better outcomes.

<comment><USER3> I agree. In fact, I pointed out that the data set I referenced was unlikely to include items like "Parental Social Class" and "IQ" specifically for these reason.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> ""You're going to see, over the next five years, a real increase in the number of schools in serious trouble," Dr. Vedder said. "A degree from a top school is a still a pretty good signaling device [to employers]. It means you're smart and hardworking. But a degree from one of these lower schools doesn't mean much of anything.""

Any discussion about third level education needs to take into account price and hence ROI.

I'm really surprised that this article doesn't talk about the high rate at which US college tuition costs increased from 2008 to present. Especially for law schools. The closest it gets is the following paragraph:

"But in the past few years, the winds have shifted. The birthrate fell, the pay advantage for college graduates over high-school graduates declined, states cut $9 billion in funding to public colleges and student debt soared."

Tuition in the US has gone up a lot while wages for many jobs have stayed relatively flat:

"In during the 1980-81 school year, the average college tuition at private universities was $9,882. By 2014-15, that number exploded to $26,740.

For public universities, the tuition figures went from $2,196 to $8,534"

[https://businessinsider.com/this-chart-shows-college- tuition...](https://businessinsider.com/this-chart-shows-college-tuition- growth-since-1980-2016-8)

This is the main reason why colleges are struggling in the US.

</comment><comment><USER7> This has been predicted in higher ed for the past ~2 decades. It's relatively easy to look at the number of students in the pipeline, and you can see there were two big peaks in the last half century: baby boomers in the 60s-70s, and their children in the 90s-2000s. They managed to keep the boom going a little longer in the late 2000s with increased international enrollment, but it's over now (peak enrollment was 2010).

the other big trend has been that colleges in the US are disproportionately concentrated in a broad arc from New England through the Midwest for historical reasons, but young people in the US are increasingly concentrated in the South and West. I suspect we'll see a die off of lots of the small colleges that really only appeal locally throughout those areas. It's going to be pretty painful, look at what happened with Sweet Briar, which just managed to stay open (and admittedly suffered from another big trend: the death of women's colleges).

The best source for all of this (as with most news about how universities are run in the USA) is the Chronicle of Higher Education.

</comment><comment> purple-again More on point with the article, I hate when information is delivered like this without any context. Less than 20% of schools are failing? Wow thats...I don't know what that is. Whats the median for failing colleges per...decade? How long does a college usually take to fail?

</comment><comment> purple-again Woah, I was all ready to come back here and discuss the article when I figured, what the hell lets give the comments section on the WSJ a chance.

Maybe I'm out of touch in my little tech/business cross section of the world, but where did that overwhelming hate for higher education come from? Nearly all of those comments are...not making very logical arguments worth discussing either.

<comment><USER8> I have little love for an institution that profits off dreams and naivete and destroys lives with un-dischargeable debt. But hey, at least the football coach is rich and the gym is fancy! Also in retrospect I learned almost nothing useful in college. Loads on my own time, though.

Also, how the hell is college so damn expensive when the people teaching classes are paid 12 bucks an hour because they're "adjuncts"?? where tf is the money going?? (see above)

Exception: my local junior college was great, and reasonably priced. If you want to do uni, go to jc and then to europe.

Oh. Also there's a whole university cargo cult. It made some baby boomers wealthy so obviously the solution is for EVERYONE to go to college.

<comment><USER9> > Also, how the hell is college so damn expensive when the people teaching > classes are paid 12 bucks an hour because they're "adjuncts"?? where tf is > the money going?? (see above)

A non-trivial portion goes to legal expenses and risk management. It started with the concept of in loco parentis (in the place of the parent). University students stopped being adults and became children.

Obama's interpretation of Title IX was also catastrophic for expenses. All of a sudden you had to set up your own internal pseudo-court system and have an entire mechanism for handling even the most dubious of accusations. These things are not free.

This has snowballed into other pseudo-legal aspects and the social justice movement is just monumentally expensive to deal with. It's not a question of if a #metoo incident happens on your campus, it's a matter when. What steps did you take to prevent it? What staff do you have in place to react?

And the worst is that once you've hired these staff they're there forever. There will never will a point of mission accomplished, perfect equity, or an environment sufficiently free of even the smallest of nano-harassments for a university to rid itself of this burden.

Don't get me wrong, there's a country club and sports team aspect to a lot of university expenses, but the primary purpose of most universities is not education, research, or anything along those lines - it's to avoid getting sued into oblivion.

<comment><USER10> I'm sorry, but without some sort of citation from a reputable source, I just don't buy this as a contributing factor at all and call BS.

I spent years as a student and working at a large research University and let's be very, very generous and say that there were 30 people detailed to this "#metoo incident" mitigation and action squad. Of the thousands and thousands of other nonfaculty staff payroll; of the many millions the library system pays for journal access alone, let alone special collections and acquisition; of the cost of running the steam for heating the buildings, the computing infrastructure; etc., etc. how non-trivial do you expect this Title IV portion to be?

</comment></comment></comment></comment><comment><USER11> No blocker:

[https://web.archive.org/web/20180221130021/https://www.wsj.c...](https://web.archive.org/web/20180221130021/https://www.wsj.com/articles/after- decades-of-growth-colleges-find-its-survival-of-the-fittest-1519209001)

<comment><USER12> Not sure what the HN position is on commenting bots, but can we automate this process? Someone has to do it every single time a NYT/WSJ/WAPO article gets posted.

<comment><USER13> Agreed, the web links haven't been working for me for a while.

</comment></comment></comment><comment><USER14> Did not expect to see my Tigers featured when I clicked on the link. Clemson has been exploding over the past 20 years. It's a special place.

The former president set a goal to become a top 20 public university. At the time, Clemson was around 70. I want to say it took close to 9 years but they finally did it. That mission directed a whole host of changes around the school to improve.

Some things were university wide like the "communications across the curriculum" program, that eventually developed into the Pearce Center ([http://pearce.caah.clemson.edu/programs/waccac/](http://pearce.caah.clemson.edu/programs/waccac/)). That primarily came from businesses telling the school that they were getting graduates who were technically sound but had difficulty working with non- technical people.

They embraced the research focus of the university with the Creative Inquiry program ([https://www.clemson.edu/centers-institutes/watt/creative- inq...](https://www.clemson.edu/centers-institutes/watt/creative-inquiry/)). I can't remember the name of the program, but at one point part of the curriculum was to have cross-major teams assisting with different professor's research projects on campus. You might have an agriculture professor with a team consisting of students from psychology, computer engineering, accounting, architecture, etc.

They developed the Clemson ICAR facility ([http://cuicar.com/](http://cuicar.com/)) in Greenville to capitalize on the automotive presence there along with undergrad to doctoral programs on automotive engineering...where the students actually design and build a car ([https://jalopnik.com/this-mini-concept-car-was-developed- by-...](https://jalopnik.com/this-mini-concept-car-was-developed-by- engineering-stud-1819506872)).

Also moved the entire MBA program to downtown Greenville to be more accessible to people working. Clemson is very rural, so that was a challenge.

Exciting times at the school. :-)

It even include going as far as an academic review committee for football recruits. It blew up around 2007 when the committee told the coaches they couldn't recruit a top wide receiver who then turned around and went to UNC...years later we found out why.

</comment><comment><USER15> The bottom tier called out in this article are failing, above all else, because they lack a sense of place and purpose and instead make decisions marked by insecurity.

I have a whole lot to say on this issue so I'll try and keep it briefish...context, I'm finishing up my PhD in Engineering Education at a 'top tier' university. I also have a BS and MS in an engineering discipline.

Several friends in my program, as well as myself, have been applying for faculty jobs this year. Two of us have experience as technical founders, as working engineers, have prior experience teaching engineering, and now have PhDs in how to teach engineering well.

More than one _teaching focused_ university has specifically told us that our degrees in teaching engineering are DISQUALIFYING to teach engineering at their schools. They will only take PhDs in that field of engineering. Those students, because of the nature of modern research universities, are often explicitly discouraged from developing teaching expertise - it distracts from the research their advisers need accomplished to get tenure there. So you have schools that produce future faculty discouraging them from getting the preparation needed for the majority of faculty jobs, and the schools that do the majority of teaching not interested in educational expertise.

One department head specifically told me during a phone interview they didn't see how a degree in how to teach engineering would be relevant to what they do. That school advertises that it's focused entirely on undergraduate engineering education, does not have graduate students, and rewards tenure almost entirely based on teaching performance. I pointed out that I had two degree in their discipline, worked as an engineer in the field for years, had already been teaching engineering before I returned to graduate school, and went back to school specifically to learn how to teach better. Silence. The last person they hired (who has become a friend/mentee of mine) went straight through from their BS to MS to PhD in a single engineering discipline. No teaching experience and no industry experience - but a PhD in the field.

The trend there doesn't just apply to teaching, it applies to research and to broader visions of what a university can or should be.

Really, summarized, the issues we are seeing are issues of strategy - but that is a dirty word at universities. The schools have all, teaching as well as research focused, managed to entirely divorce Schein's three levels of culture from each other. They have artifacts they use for promotion, tenure, and measuring the school's activity. Many have ceased to try and argue those artifacts are linked to the values that they espouse. They simply state they are linked and then stigmatize anyone who points out otherwise.

At many schools, the faculty pathologically fear losing input on governance yet are unwilling to contribute to running of the university in a meaningful way. They complain about perpetually rising tenure standards, but they are the ones enforcing those standards. Trying to engage in these discussions is a dirty word because that would require them to confront things outside of their bubble. Trying to individualize isn't within the capacity of the faculty because ongoing disciplinary ossification, narrowing, and inlooking. It also isn't in the capacity of the outside managers they bring in to run the 'business' side - because they don't have the foggiest understanding of how education works, and get stuck on traditional metrics for business success and solutions that prevent any real change.

Its easy to blame sports, and they sure don't help, but the culture of the way universities are run - lacking in any reflection, self-awareness, or broader world view. It isn't complying with title IX, but thats a convenient scapegoat. It isn't building nice dorms, that's a symptom not a cause. Each school looks up the ladder of rankings and then does their damnedest to make themselves look like the school above them. In an attempt to 'compete' they all actively commodify themselves.

As an academic I find it sad. As an engineer/entrepreneur I find it frustrating. As a citizen I find it actively dangerous. In the broadest sense, these aren't just problems of education, they are problems of a society that (on the whole) seeks a black and white understanding of the world and seeks an education system that reproduces what it thinks it wants, rather than what it could be or might need later.

<comment><USER16> Here's a hypothesis... When you have top school's materials online, it makes no sense to go to a second tier, or n-tier school other than for the networking. And by definition a 'n-tier' school is not going to be all that great at providing networking opportunities.

Would you take a machine learning course from an unknown, likely outdated professor when you could listen to Andrew Ng for free?

What the internet has brought is a 'winner takes all' for education.

<comment><USER17> Counterpoint: Ng's Coursera machine learning course is outdated now, unlikely to ever be updated, and focuses on applications of old algorithms without teaching the underlying fundamentals.

<comment><USER15> appeal to theory: The issue with education is rarely the currency of content. To assert that models education primarily as an information transfer process, which it isn't...or at least shouldn't be.

</comment></comment></comment></comment><comment><USER18> This makes sense. With average enrollment going up at the top, with the market growth in applicants less than that, eventually the bottom will lose out. Maybe there is nostalgia for some colleges be it history, alums, or what not. At the end of the day, students vote with their feet and if a college is not good enough, then it should go out of business.

</comment><comment><USER19> I wonder how much of these circumstances stem from the fact that people do not want to have children as much as they used to, concentrating on their own needs? Perhaps it would be in the best interest of colleges to somehow show people that it is possible to have children and an interesting career?</comment>


Why so much capital?  - <AUTHOR> http://www.webpronews.com/topnews/2007/03/06/eons-earns-22-million-in-funding <comment><AUTHOR> I happened to interview with this company, Eons, a year or so ago. At the time they were looking to do a RoR knockoff of their existing site. I'm not sure where they went with that.

I'm wondering about a few things. The founder I believe was involved with Monster, .ie. has a track record. How do startups with this kind of capital succeed? The money itself is going to attract all sort of folks who won't necessarily add value. Does it come down to just leadership?

How this contrast with the approach of Y Combinator, where S,K, and I with a large dose of youthful energy provide a complete basis :)

<comment><USER2> when you say "... money is going to attract all sort of folks..." are you talking about employees? end-users? useless affiliates? all of the above?

<comment><AUTHOR> all of the above, in that a corporation is a collection of interests. Depending on the capital structure, different players have different interests. Managing all of those in a way that promotes collaboration towards a common goal is a fine art, as they certainly will not all be aligned.

This is what intrigues me about the Y combinator approach. Anyone with 50K can fund a couple of kids out of school and if the chemistry is right, the idea has some merit, and a dash of luck (hard work always brings some luck), it can fly.</comment></comment></comment>


Freelancer.com: verify users before spamming them - <AUTHOR>

I have a full name that is fairly common in a certain area of the world. On top of that, I was fortunate (?) enough to get the firstname.lastname@example.com account for my name (back when gmail was still invite-only).
Over time, many people have attempted to sign up my e-mail address for various sites or tried to link my gmail account to another one. Whether these are mistakes or phishing attempts, I always try to take the appropriate action. If the provider supports it, I indicate that I did not sign up for this service, otherwise I ignore or mark as spam. Most services are good about not bothering me if I do not verify the account.
This morning, someone signed my e-mail address up to Freelancer.com. Not only did I get the verification e-mail, I got about 10 other e-mails about the "project" I had posted, which was apparently possible without the account being verified. When I woke up to these e-mails, I emailed Freelancer.com to let them know what had happened and asked them to delete my account. Since then, I have had one e-mail from a Freelancer.com concierge to offer to help me better market my "project".
All of these interactions, with an unverified user. This is of course scary to me because there is a small possibility that my e-mail account was hacked (in order to sign up to freelancer?!), so I'm hoping for a quick resolution. But, in the likely case that Freelancer.com is just treating unverified users no differently than verified one, all I have to ask is: WHY? <comment><USER2> My mail is like this: firstname.lastname@example.com, and I suffer the same thing all the time.</comment>


Apple's Remote Desktop client is bundled for free with every Mac - <AUTHOR> http://benguild.com/2011/02/14/apples-remote-desktop-software-is-secretly-bundled-for/

<comment><USER2> A couple of things:

1) This isn't the same as Apple's Remote Desktop product, which can be used for a host of other things related to remote system management like installing software and automation. See the product page for details:

[http://www.apple.com/remotedesktop/](http://www.apple.com/remotedesktop/)

2) You don't need to dig around in Library/CoreServices to use this, which is why Apple didn't put it in utilities. Vis a vis iOS, you start from the opposite end that you normally would on a desktop OS. Just like in iOS how you navigate to your photos in order to send a photo, you navigate to the computer you want to control in order to initiate a remote session.

HOW TO: Remote control a Mac on your network without digging around in CoreServices

First - Make sure "Remote Management" is enabled on the _target_ machine.

1\. Launch 'System Preferences'.

2\. Click 'Sharing'.

3\. In the service list on the left, check the box next to 'Remote Management'.

Second - Initiate remote control from your computer.

Note: You must have "Show Toolbar" enabled to follow these steps.

1\. Launch a new finder window.

2\. In the left pane of the Finder window, scroll down to 'SHARED'.

3\. Click the name of the computer you wish to control.

4\. A gray bar should appear at the top; click 'Share Screen...'.

Viola! Screen Sharing should launch automatically and connect.

If you're an old school Mac user, you might have disabled 'Show Toolbar' in the finder. You can get it back in one of two ways. With a Finder window active:

1\. Press Cmd+Opt+t.

2\. In the menu bar, click 'View', 'Show Toolbar'.

There are, of course, other ways of getting to the 'Network' portion of the Finder browser, but the 'SHARED' bar on the left is pretty easy and always accessible.

<comment><USER3> _Viola! Screen Sharing should launch automatically and connect._

Syntax nit: A viola is a stringed instrument. "voilà" is French for "see" or "there!"

<comment><USER4> Not everyone can type accents on their default keyboard. I don't think anyone was really confused between that and teh stringed instument given the context.

<comment><USER5> Accents aside, the 'i' and 'o' come in different orders.

</comment></comment></comment></comment><comment><USER6> How does junk like this get posted on a tech web site. This is the built in VNC client and is very publicly shipped with OS X, and it has nothing to do with Apple's remote desktop.

You could always do CMD+k to bring up the "Connect to server dialog" and type

        vnc://ComputerName.local

to VNC into it (if screen sharing is configured in the system prefs on the target machine).

<comment><USER7> Ironically, I wrote this back in 2011 and someone else submitted it earlier today. :D

The thing is... Apple doesn't make this feature prominent. The only real consumer-friendly way to access Screen Sharing was through iChat back in the day. The Application is buried within the System folder and most people think you have to pay $50 USD for Apple's commercial Remote Desktop solution.

Most people don't need all of the features of the full client, such as remotely installing packages or managing machines. They _just_ want to access their machines through the LAN or through Back to My Mac. [https://www.apple.com/support/icloud/back-to-my- mac/](https://www.apple.com/support/icloud/back-to-my-mac/)

It's not the same software, but it's basically a scaled down version to get the job done.

</comment></comment><comment><USER8> Mac power users have known about this feature for over a decade. Theres also a pretty powerful wifi diagnostic tool in the coreservices folder, if you're going to be digging around in there anyway.

<comment><USER9> Do you mean the "Network Diagnostic" application?

<comment><USER8> Yes, that is it. I walk around my flat with it open to find low SNR spots. It also helped me diagnose a failing wifi radio chip.

</comment></comment></comment><comment><USER10> You can access Screen Sharing from the Finder with the same ol' cmd+k (Connect to Server...) and enter a url (e.g. vnc://my_remote_mac).

<comment><USER11> Works with the open command from a shell too: open vnc://my_remote_mac

</comment></comment><comment><USER12> This is not a secret. And it's the Remote Desktop (VNC) client, not the management application sold by Apple

</comment><comment> matt-attack $ open vnc://myhost.example.org/

<comment><USER13> Or Finder > Connect to Server -> vnc://myhost.example.org

<comment><USER14> Or Finder > Cmd+K -> vnc://myhost.example.org

</comment></comment></comment><comment><USER15> ScreenSharing used to work perfectly for me. I could see my second Mac listed as a "Shared" device in the left-panel of my Finder which would keep in-touch over iCloud. Even if the home machine was asleep, connecting with ScreenSharing would wake up the remote machine and allow me to connect. Since updating to Mavericks I'd say I'm about 20% for this method working. For whatever reason, I can no longer wake-up my remote machine using this method. Wish it was as reliable as it used to be - but I haven't found a fix.

</comment><comment><USER16> I used VNC a few times to connect to a Mac build box ( I only used Linux professionally ) and ran into a lot of problems with artifacting ( even on a dedicated Gigabit LAN ) or more annoying the remote service would crash and the only way back in was to SSH into the Mac box, kill the remote service, kill all user sessions, and restart.

</comment><comment><USER17> This is NOT remote desktop. remote desktop does so much more than screen sharing. This is just a vnc client.

<comment><USER9> Microsoft publishes a free 'Remote Desktop Client for Mac', which can be found at [http://www.microsoft.com/en- us/download/details.aspx?id=1814...](http://www.microsoft.com/en- us/download/details.aspx?id=18140)

<comment><USER18> And despite the similar naming, this is a completely different application. The Microsoft application is an RDP client.

</comment></comment></comment><comment><USER19> That's a post from 2011. Screen Sharing is available to any mac under System Preferences>Sharing

</comment><comment><USER20> This is more of a useful tip than a secret. If you've got Back to my Mac set up, your other Macs will appear in the Finder sidebar. Just select one and then click "Share Screen…" Other Macs on the local network may show up with the option too.

</comment><comment><USER21> This is Screen Sharing. Not Remote Desktop. And it isn't hidden: if there's a Mac on your local network, and you navigate to it in finder, there's a "Share Screen" button right there.

</comment><comment><USER22> Blog post from "14 FEB 2011"

</comment><comment><USER23> Note that excellent Microsoft Remote Desktop app is free and available from AppStore.

</comment><comment><USER24> Who the fuck is up voting articles from 2011? Where is the moderation around here. Make sure the date is in the title.

<comment><USER25> Because something that people might not know that's from 2011 is less relevant in 2014?

</comment></comment><comment><USER26> Dipshit article from someone who clearly has just installed osx.</comment>


What You Can't Say - <AUTHOR> http://www.paulgraham.com/say.html <comment><USER2> More timely than ever.</comment>


Transcendigital Imagination: Developing Organs of Subtle Perception - <AUTHOR> http://www.interferencejournal.org/transcendigital-imagination-developing-organs-of-subtle-perception/ <comment><USER2> >technology leaches the soul of an environment

If you read Plutarch (iirc, not a classicist) you get to read probably the first example of this kind of mororse and reactionary bitching - he too was afraid that the times (they are a' changin') were leaching the soul from the natural rural order. It was probably not a new thought then.

The problem with reading all the hottest and most fashionable thinkers is you don't notice when you're just repeating an argument that has been done ad- nauseum, a sort of philosophical smudge through the years that starts off sharp, has some interesting turns, but ends up just grey and greasy.

Why not take the opposite route? Why not explore the new, subtle, perceptual possibilities of 'cheap' recording technology - instead of doing this tired old harking back to the pure innnocence of an imagined prior experience? I think it would be a more interesting line of thought. I think it's more relevant to our time - we are, after all, encountering the biggest sense organ ever devised, the internet. Seems a bit more interesting than some seriously hackneyed oppositions between raw natural experience and technologically mediated illusion.</comment>


Git from 10,000 feet (My non-Django talk from Djangocon) - <AUTHOR> http://www.slideshare.net/err/git-machine

<comment><USER2> This was a really great talk - hopefully the video of it goes online quickly because I think the delivery was a huge part of what made it great.</comment>


Uber co-founder Travis Kalanick is on pace to sell his entire stake - <AUTHOR> https://www.cnbc.com/2019/12/22/uber-co-founder-travis-kalanick-is-on-pace-to-sell-his-entire-stake.html <comment><USER2> Anyone witha brain can see that Uber is a dead horse - still moving, so those who want to keep any of their equity better sell tomorrow, Tuesday will be too late...

</comment><comment><USER3> Probably investing in something new?

<comment><USER4> He's got a new venture, kitchens for restaurants that only deliver.

[https://fortune.com/2019/11/08/uber-travis-kalanick-cloud- ki...](https://fortune.com/2019/11/08/uber-travis-kalanick-cloud-kitchens/)</comment></comment>


What's next for Apache OpenOffice - <AUTHOR> https://lwn.net/SubscriberLink/699755/533f89639e8b53f0/ <comment><USER2> From what I can see, if Apache OpenOffice wants to be a viable project with Libreoffice already out there and well ahead from a user perspective, it needs to focus on things that are attractive about it that differentiate it from Libreoffice. Right now, to the best of my admittedly limited knowledge, that's primarily their license. My thought on this is that they need to pick some (fairly radical) directions to take the project in that will provide clear alternatives to LibreOffice. Maybe they could review the ideas here: [https://wiki.documentfoundation.org/Development/Crazy_Ideas](https://wiki.documentfoundation.org/Development/Crazy_Ideas) and pick some of the more ambitious ones that Libreoffice is unlikely to attempt.

<comment><USER3> The best thing that could happen to the community at this point is to hand over the Openoffice trademarks to The Document Foundation and for them to retire the Libreoffice branding, shift everything over to the more recognizable Openoffice branding.

That way, it would actually bring people on board who are not technical, since pretty much no one who isn't into Linux knows what Libreoffice is.

<comment><USER4> This! Some people can even save face by calling it a merger, much like when io.js "merged with" node.js.

</comment></comment></comment><comment><USER5> I think the answer to the headline is "sadness." but the situation is important to understand on two levels, both from technical level and from a governance level.

In my experience, understanding governance is not something that comes easily to engineers. This project however provides a textbook example of the forces involved. Governance, or the right to set direction, can be imposed if the governed are prevented from expressing an opinion on it or choosing an alternative. Dictators who simply kill anyone who stands against them, small groups where a superior assigns governance like a VP telling your group that some person is your new manager. But actual, durable, governance only occurs with the _implicit assent_ of the governed.

Libreoffice (LO) and Apache Open Office (AOO) both existed at a point in time of the fork, when a portion of the governed (in this case the developers) withheld their assent to the impositions by AOO and started LO. From that point forward there were two options for working on open software for business tools.

Given the choice, contributors chose the LO governance over the AOO governance, and as a result what was the premier and leading open office software project is now contemplating its own demise. No one person was responsible, everyone was responsible. This sort of thing happens all the time in all sorts of situations, whether it is countries that lose faith in their leaders, or startups that are suddenly involuntarily losing all their staff, or open source projects that stop being relevant.

From a technical level this is a tremendous validation and condemnation of the power of open source. The ability to fork the software and produce a better, more secure, more maintainable product is huge. I have had the opposite experience of watching a proprietary program I really liked die because the "owner" of the software lost interest in maintaining it. It was frustrating to be unable to contribute to its survival.

But it is also a condemnation in the form of how open source is so loosely governed, there was no effective process of keeping it from getting to the fork or die state. There doesn't exist any sort of neutral arbitration board that would allow troublesome developers who were out of sync with the governed to be removed from the project. I believe that is part of the reason we have a dozen different window systems for Linux.

So bottom line is that it is a sad day for the once dominant Open Office platform, but a very good learning experience for the community.

<comment><AUTHOR> > Libreoffice (LO) and Apache Open Office (AOO) both existed at a point in > time of the fork, when a portion of the governed (in this case the > developers) withheld their assent to the impositions by AOO and started LO.

I'm sorry, but this is wrong. LibreOffice was started almost a year before AOO. Take a look at [https://en.wikipedia.org/wiki/LibreOffice#History](https://en.wikipedia.org/wiki/LibreOffice#History) for details.

<comment><USER6> That's basically quibbling, though the OP did err in his history a bit. AOO existed before that point too, it just wasn't called AOO and it wasn't part of Apache; it was run by Oracle, and before that, Sun. It was still the same project before Oracle dropped it on Apache. The portion of the governed were mad at the impositions by _Oracle_ , not Apache, and started LO. A year later, with almost no developers left and all the Linux distros having switched to LO, Oracle finally threw in the towel and gave the dying OO.o project to Apache, where it became AOO, and the few people still hanging in there yell at clouds.

<comment><USER7> > That's basically quibbling

It's absolutely not quibbling, the OP framed his whole post around the governance of Apache OpenOffice vs LibreOffice:

>> Libreoffice (LO) and Apache Open Office (AOO) both existed at a point in time of the fork, when a portion of the governed (in this case the developers) withheld their assent to the impositions by AOO and started LO.

>> Given the choice, contributors chose the LO governance over the AOO governance

>> No one person was responsible, everyone was responsible.

No, Oracle was DIRECTLY responsible (with some blame falling on Sun). Oracle dumped OpenOffice on the Apache project when it became obvious that their continued involvement would not be profitable.

>> But it is also a condemnation in the form of how open source is so loosely governed, there was no effective process of keeping it from getting to the fork or die state.

No, this was a CLEAR condemnation of Oracle as a steward of open-source projects, and a good example of the community pulling together when the governance structure stopped working.

<comment><USER5> For what it is worth, my comment is, in essence, that the "power" of governance flows from the governed and that the Open Office project provides us with an excellent example of how the governed can express their disagreement with the governance. The example works because the "official" lineage of the project is dying, while the "forked" lineage of the project is not. It also keeps a lot of variables such as opportunity cost, market size, Etc., the same which helps it as tool for learning.

I did NOT mean to imply that it was the Apache foundation that killed (or at least mortally wounded) Open Office. What I was trying to state was that a series of governance choices killed it, the breaking point can be identified in time as the moment LO forked itself. Then from that point forward, you can compare the governance choices made by the OO lineage, and the governance choices made by the LO lineage, and see what worked and what did not. And that is what makes it such a great example (in my opinion).

For people reading and following along, and who might be considering being the steward of an open source project, they might take a moment and look at both paths thoughtfully to understand the limitations of being "the boss" on a project and how those limitations are manifested.

I get where you are coming from Cam, I screwed up by not pointing out it was Oracle in charge of Open Office when LO forked, but as that screw up changes nothing about how governance is perceived by the governed or rejected by the governed, I expect that is why your point might be considered a quibble.

<comment><USER7> I still must emphasize that you picked the incorrect governance system to include in the conflict with the developers in the open source community. The governance choices of Apache OpenOffice were largely irrelevant. Sun owned StarOffice, and continued to pay developers to work on the codebase after releasing it as OpenOffice.org. This justified their strong control over the governance of OOo, despite the friction this caused for the community. Had the community forked, it would have been uncertain which codebase would have won (gotten the most development and usage). The governance system in this case was not that of a pure open source community, but rather heavily influenced by a single corporate entity.

When Oracle acquired Sun, they ceased to govern and pulled their developers off of the project. At that point it became impossible for the community to continue working within the existing project, so the remaining developers forked to create LibreOffice. It is not adequate to say that "governance choices" killed the project, Oracle killed it but held on to the trademark.

I can think of no reason why Oracle would decide to donate the OOo project to the Apache foundation other than to generate confusion in the marketplace and deflect criticism.

At this point, I don't think the AOO has done anything wrong governance-wise, but there's just very little reason for LO to work with them. AOO development is mostly stagnant, and going through another governance restructuring and licensing change probably doesn't seem appealing to LO. I doubt the Apache project will donate the trademark to LO because they probably don't want to give up on an Apache-licensed project.

I do completely agree that governance requires assent by the governed, and the project owning the OOo trademark does not have that, but your post mis- attributed the who and the how.

<comment><USER8> >I can think of no reason why Oracle would decide to donate the OOo project to the Apache foundation other than to generate confusion in the marketplace and deflect criticism.

For a tax break? No, those assets have already been written off as R&D. Maybe it's just for the PR. I cannot conceive of Larry Ellison doing anything out of altruism.

<comment><USER9> Can you write off IPR as R&D? You could probably massively over-inflate the value of the OO.org trademarks (and the copyrights). Donating then might be a financial mechanism, it dumps the trademarks but also prevents others from using them without having to use them yourself???

Oracle and Apache's accounts would show what's happening there.

<comment><USER6> This is a conspiracy theory, but perhaps MS paid them off to do it this way just to generate confusion.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> In the interest of full disclosure, I am a contributor to AOO, albeit one who has not been as active as I should have been in the past. Which makes me part of the problem. But that aside...

Rumors of the demise of AOO are _very_ premature. Some internal speculation aside, there's no particular reason to think the project _will_ be shut down. Yes, the ASF board wants to see certain things happen, but none of them are things that all of us don't also want to see. Security fixes being released in a timely fashion? Of course we want that. Frequent releases? Yep. Awesome new features? Hell yeah!

So the question is, can we get back to a place where we can deliver those things? I think so. And here's some reason why:

1\. This recent "retirement" discussion has served as something of a "call to arms" or rallying cry for some AOO contributors. Count me among their number, just to show an example. I'd been pretty slack about contributing, but this has motivated me to get off my arse and get busy doing stuff. And I don't think I'm the only one.

2\. We've had a number of new contributors, or at least potential new contributors, show up in the past week or so.

3\. We're starting a new, more focused recruiting effort to recruit developers to the cause. Perhaps _you_ yourself have given some thought to working on an OSS office suite? Here's a great chance!

4\. We have had a release manager volunteer step forward to manage the 4.1.3 release.

5\. A lot has happened just in the last week in terms of cleaning up documentation around the build process and clarifying issues there. I think it's safe to say we want to make it as easy as possible for new (or existing) contributors to build and run AOO.

Now the realist in me demands that I acknowledge that we still face a tough slog ahead. But nobody said this stuff was easy. And I feel confident that we can get this project back on track and re-establish it as the world's most awesome office suite.

Anyway, again, please consider getting involved now if you have any interest in office suites. And this is especially true for Mac users, as we could especially use more help from people who can build and test on the Mac platform.

<comment><USER11> AOO IS NOT MAINTAINED. It can't do builds, it can't make releases. It can't apply a security bug fix and build a release within 9 months. For an office suite, that's not OK.

LO is where all the active OpenOffice developers went to, LO is the continuation of OO.o.

AOO is an old and unmaintained snapshot of OpenOffice, with an apparently long-broken release build process.

I don't think there should be just one office suite, or even just one open source office suite, and I don't think everyone should just use the one with the most features. Not at all. But the AOO situation is just tricking people unfamiliar with it, to use the OO.o from 3 years ago instead of the OO.o with security and other fixes, and updates for compatibility with new operating systems (and new features which may or may not be desired).

If you hate LO developers or project, maybe you have some good reasons, and you should be able to work on a competitor based on whatever open-source code base you want. But the right thing to do at this point is abandon the "OpenOffice" name. Random people looking for "OpenOffice" need to be confronted with the fact that there are now two forks, LibreOffice and something else. And, at least for today, they should definitely choose LibreOffice.

<comment><USER12> The real, non-political competitor to the OpenOffice lineage has always been Calligra[1]. It sees dramatically less development, but it is also one of the KDE related projects that has a knack for using its toolkit to dramatically reduce its own code bloat - what takes hundreds of thousands of lines of reinventing the wheel in OO/LO is several hundred lines of extremely well maintained Qt data structures.

Even when the zombie AOO dies it does not mean the end to competition in the free office suite space. Even beyond Calligra there are some Gnome based efforts and third party projects (including web based ones) that provide similar tools. There is no shortage of competition, and if there were ever a slowdown in LO we would just see another fork akin to the Oracle escape.

[https://www.calligra.org](https://www.calligra.org)

<comment><USER13> > Calligra

That webpage though. If I told my aunt to download Calligra she would have no idea what to do once she got there. You have to click the tiny "Get Calligra" in the upper right, then scroll down and click "For MS Windows" in the middle of a list, then read through a list to find the download that's actually Calligra, then download the right msi for your architecture. Compare that to openoffice.org, and then to libreoffice.org, and watch the page get better and better for aunts everywhere.

> several hundred lines of extremely well maintained Qt data structures

Sounds amazing to me, I may try it out too. But people who aren't tech literate and are looking for a free alternative to MS Office know OO.org, and that's the real crux of the issue - OO.org is effectively dead. If OO.org instead redirected to libreoffice.org with a little disclaimer, more people would be using better free software.

The OO.org codebase isn't going anywhere. But Apache has a responsibility to its users and its reputation, and IMHO they should redirect the OO.org domain to LO.org, and let the community decide if the original OO.org codebase is worth resurrecting.

</comment></comment></comment></comment><comment><USER14> Looks like this well end up like X.Org/XFree86 (yes, [http://www.xfree86.org/](http://www.xfree86.org/) still exists)

Edit: I should have reloaded before posting, the argument is much better made by Grishnakh above.

<comment><USER15> "Exists" is a strong word. The CVS link [http://www.xfree86.org/cvs/](http://www.xfree86.org/cvs/) is a 404 (and, uh, is CVS), the FTP server isn't accepting anonymous logins, and the HTTP releases URL is giving the most amazing 404: [http://ftp.xfree86.org/pub/XFree86/4.8.0/binaries/](http://ftp.xfree86.org/pub/XFree86/4.8.0/binaries/)

<comment><USER13> How is their 404 page Yahoo? Do they use yahoo for hosting??

</comment></comment></comment><comment><USER16> The discussion from a few days ago on this topic was pretty informative: [https://news.ycombinator.com/item?id=12411747](https://news.ycombinator.com/item?id=12411747)

</comment><comment><USER17> It is a shame that the article is behind a paywall; it sounds as if it is a very well balanced article.

There seems to have been many things that people forgot about when following the previous thread ([https://lwn.net/Articles/699047/](https://lwn.net/Articles/699047/) and [https://news.ycombinator.com/item?id=12411747](https://news.ycombinator.com/item?id=12411747)), which I hope to relate here:

1\. The whole issue was an open and honest DISCUSSION. Many people took this as an indication that AOO was dead. I fear that my own response to Dennis' post on-list went a bit too far in reinforcing that (mis)belief but the lack of (perceived) developer energy was the basis for the whole discussion. Dennis did not say "AOO is dead, what should we do" but rather that the AOO community should discuss, __as a contingency plan __what a retirement would look like.

I may plan or discuss my funeral (or final wishes), but that does not mean I am dead or dying. :-)

But think about this: what other project would be so open and candid? Such openness, and the true appreciation that discussion be done in __public __is a core part of the Apache Way. It 's also a core part of what open source work.

2\. Because of this "publicity", the AOO has been overwhelmed by lots and lots of offers of support, which have been graciously and thankfully accepted.

3\. People have also forgotten that choices, even in FOSS, are a Good Thing. LibreOffice is very successful, and they should be congratulated for their success. But certainly there is room for other players in this game, and certainly room for one (or more) that are under a permissive license. The thing is is that they don't have to be __clones __; they can have different audiences, different "missions" so-to-speak.

4\. It is sad when we in the FOSS community degrade ourselves to simple, base license-wars. There are good, solid reasons for permissive, weak copyleft and strong copyleft, and I've contributed to them all.

IMO, what's next for Apache OpenOffice is what the Apache OpenOffice community decides; it sounds as if this whole kerflunkle has served as a kick-in-the- arse to the AOO team: they see how important AOO still is to numerous people, and they have loads of new volunteers offering to help. A 4.1.3 release is forthcoming so that is good news and a step in the right direction.

<comment><USER18> > But certainly there is room for other players in this game, and certainly > room for one (or more) that are under a permissive license.

Why is "like $X but under a permissive license" something that people champion for? Are we not all in the same boat, trying to replace proprietary software so users can live in freedom? Permissive licenses simply do not help achieve this goal as effectively as copyleft licenses do.

If you want to argue that AOO will be technically superior or whatever, that's fine. But championing "we also allow proprietary forks" is not helping any users of free software.

<comment><USER19> _Permissive licenses simply do not help achieve this goal as effectively as copyleft licenses do._

I use to share that view, but I'm no longer sure if this is true. Do you have evidence you could point to, or is this a instinctual opinion? I don't have evidence going the other way, but I don't think it's a clear cut truth.

<comment><USER18> > Do you have evidence you could point to, or is this a instinctual opinion?

The Sony PlayStation is based on a fork of FreeBSD. It is entirely proprietary. Lots of different embedded device also use BSD because they are permissively licensed. Anybody who gets such a device is screwed because they cannot modify it or even know what the device is doing. This is true for the majority of IoT devices (which is a serious problem going forward). To be fair, there aren't nearly enough GPL enforcement lawsuits as there should be (which is why I donate to the Software Freedom Conservancy) so it's not like the copyleft side is /much/ better but at least copyleft does help achieve the goal.

In addition, GPLv3's anti-tivoisation clauses are quite unique in the free software world and are _specifically_ written to ensure that users have freedom over devices that try to undermine the spirit of the GPL. You won't find any permissive license that has such protections for your freedom (because it's not enforceable without making the license copyleft).

This argument doesn't hold for standards, generally. Because what matters for a standard is _adoption_. Sure, you're making it possible to have a proprietary fork of your reference implementation but at least users can be sure that the specification is actually used (and if the spec is Apache licensed then you're safe from patents which is something that can't be said of proprietary specifications). But Apache OpenOffice isn't a standard, so this is not really all that relevant.

</comment></comment></comment></comment><comment><USER20> AOO supporters want to get more developers working on it. But I think whether or not new developers decide to do that is going to depend greatly, for most of them, on whether or not they think AOO is going to succeed in the future.

So let me ask the AOO supporters, where do you predict that AOO will be in a year from now, and two years? And give some specifics, like code clean-up, infrastructure, security fixes, new features, and so on.

And finally, if a year from now, AOO is far behind what you have predicted, will you still keep telling people that AOO is going to be a success? And ditto for two years from now.

<comment><USER10> _So let me ask the AOO supporters, where do you predict that AOO will be in a year from now, and two years? And give some specifics, like code clean-up, infrastructure, security fixes, new features, and so on._

I'll only address the things I have knowledge of / intend to work on.

I am working now on getting a dedicated server setup for running code analysis tools / fuzzing tools /etc. against the AOO code-base. My plan is to make this an automated process that runs frequently (although the exact details remain TBD) and delivers reports that the AOO developers can use to improve code quality and security. It is my hope that this kind of initiative can help make a major improvement in the quality of the releases.

From a feature standpoint, I have some ideas regarding integrating Calc more with the "Big Data" ecosystem, which - coincidentally - largely revolves around the ASF. A lot of the ideas aren't fully fleshed out yet, but I am picturing Calc as a front-end for working with various analytics processing engines. I think that at one time there was an Uno based R integration for Calc, so I'd also like to look at where that stands and see if that could use some work.

Also, I _hope_ that we can dramatically improve the build system and associated documentation to make it markedly easier for new developers to grab the code, produce builds and get going. But I don't know that that's an area I personally will have much time to work on, plus there are other people working on that anyway.

I think we'd all like to see more frequent releases, so definitely put that down as a goal at least.

I have some other random ideas percolating in my head as well, but if I talk about them, somebody will interpret that as a commitment to deliver them, and since I probably can't justify making that kind of commitment right now, I'll stop here.

 _And finally, if a year from now, AOO is far behind what you have predicted, will you still keep telling people that AOO is going to be a success? And ditto for two years from now._

I don't tell people that AOO is or isn't going to be a "success". It already _is_ a success by many standards, and not so much by others. I don't think looking at it in such binary terms is productive. As long as there is one person using the code, and one person hacking on the code (and the might be one and the same) then I'm all for it.

</comment></comment><comment><USER21> Even with the "Crazy Ideas" there currently is no reason to assume they would be blocked from being implemented, if only the resources for that were available. So, once the hard part of finding the resources for them is solved, why should one not put them on LO right away -- which is a much better maintained and stable base than the aging AOO?

</comment><comment><USER22> [https://news.ycombinator.com/item?id=2608700](https://news.ycombinator.com/item?id=2608700)

Check those comments from 5 years ago. Some managed to predict the current mess.

<comment><USER23> Everything that happened was completely predicted, because it had just happened with Apache Harmony when IBM pulled out of that.</comment></comment>


Ask HN: Toptal, it is worth the effort? Any story? - <AUTHOR> Hi all,
I am wondering if getting into the toptal network is a good choice.
What are the pays? It is good interesting work? It is worth to pour effort into the application?
Any story to share? <comment><USER2> It's not clear to me that you understand how Toptal works. They get software development jobs and place their developers on those projects. They take a cut, in return for marketing, negotiation, billing, payment, etc. The rates depend on the developer and the project, as one would expect. Whether the work is interesting or worth it, to you, isn't something anyone can answer. You can say "no" to projects they offer you.

If you have a reputation and network and can hustle your own clients, and do all of the business-related stuff yourself, then Toptal and similar companies may not add much value. I work through an agency and find they add considerable value and get better rates for me.

</comment><comment><USER3> Toptal removes a lot of the work around finding high paying clients, but like any freelance marketplace, you wont be paid nearly as much as if you found your own clients.

If you need money in the door or just hate sales / finding clients, then Toptal solves that needs. But if you can cut out the middle man, all the better.</comment>


Robot Stitches a Grape Back Together - <AUTHOR> https://www.youtube.com/watch?v=0XdC1HUp-rU&feature=youtu.be

<comment><USER2> Human controlled robot arms:

[https://news.ycombinator.com/item?id=9519316](https://news.ycombinator.com/item?id=9519316)

[https://news.ycombinator.com/item?id=9517813](https://news.ycombinator.com/item?id=9517813)

It's an ad for da Vinci surgery.</comment>


Police Force Suspect to Unlock Phone with Face ID - <AUTHOR> https://www.theatlantic.com/technology/archive/2018/10/face-recognition-iphone-unlock-police-force/572353/?single_page=true <comment><USER2> Since the FBI got a warrant and were responding to allegations of a sexual assault, I can respect the argument for doing this in these circumstances.

Though I don't like that the difference in the way the law treats passcodes vs biometrics may weaken privacy rights.</comment>


Show HN: A solution to the broken IT recruitment - <AUTHOR> I'm looking for feedback from the developer community regarding the project me and my colleagues have been working on during the past few months.
As we all know, developers are heavily contacted by recruiters, who, unfortunately, often do not have a technical background. This makes it hard for them to deeply discuss the most inspiring parts of a job for a developer: What he/she is going to create to help the company, with which tech stacks he/she will use to master the challenge, and why the project is a technical challenge in the first place.
Therefore we aim to tackle the status quo of IT recruiting by reversing the order of contact. When CTOs and Tech leads are the first touch point, the discussion starts with the inspiring aspects and you'll know immediately if the job is for you or not.
To achieve this we have built nexten.io – a platform obliging employers to let their tech profiles (instead of non-peers) contact developers who have registered and look for new opportunities. We have been online since April this year and have on-boarded more than 120 companies who agreed to let a technical profile do the contacting. Now we're working hard to improve the experience (with many tickets in the pipeline) and hope feedback will help doing so.
If you've read this far, I hope you'll take a look. We'd be glad to know if our approach makes sense to you. <comment><USER2> I tried to upload a profile picture and it never responded, now I can't submit my profile edits because the uploader is broke.</comment>


Invisible Bike Helmet - <AUTHOR> http://www.hovding.com/en/how/

<comment><USER2> You will regret forgetting to put it on charge for Monday morning...</comment>


Show HN: How to write a recursive descent parser - <AUTHOR> http://www.craftinginterpreters.com/parsing-expressions.html <comment><USER2> I don't understand why so many people glorify hand-written parsers. Maybe because they never used good parser generators (not unlike type systems and Java) ?

Personal opinion: writing parsers is the least interesting part of an interpreter/compiler, and your grammar _should_ be boring if you want your syntax to be easy to understand by humans.

Boring, in this case, mean LL(*), LR(1), or another well known class. Just pick a damn parser generator and get the job done quickly, so you can spend time on the really difficult tasks. The grammar in this article is LR(1) and is trivial to implement in yacc-like generators, locations tracking and error messages included.

Bonus point: since your grammar stays in a well known class, it's much easier for other people to re-implement it. You can't introduce bullshit ambiguous extensions to your grammar (C typedefs, anyone ?). This article gives a good explanation of this: [http://blog.reverberate.org/2013/09/ll-and-lr-in- context-why...](http://blog.reverberate.org/2013/09/ll-and-lr-in-context-why- parsing-tools.html)

<comment><USER3> Hello, I work on the C# compiler and we use a handwritten recursive-descent parser. Here are a few of the more important reasons for doing so:

* Incremental re-parsing. If a user in the IDE changes the document, we need to reparse the file, but we want to do this while using as little memory as possible. To this end, we re-use AST nodes from previous parses.

* Better error reporting. Parser generators are known for producing terrible errors. While you can hack around this, by using recursive-descent, you can get information from further "up" the tree to make your more relevant to the context in which the error occurred.

* Resilient parsing. This is the big one! If you give our parser a string that is illegal according to the grammar, our parser will still give you a syntax tree! (We'll also spit errors out). But getting a syntax tree regardless of the actual validity of the program being passed in means that the IDE can give autocomplete and report type-checking error messages. As an example, the code "var x = velocity." is invalid C#. However, in order to give autocomplete on "velocity", that code needs to be parsed into an AST, and then typechecked, and then we can extract the members on the type in order to provide a good user experience.

My personal opinion is that everyone should just use s-expressions. Get rid of this whole debate :P

<comment><USER2> While I agree with you those 3 points are extremely important, it turns out there is at least one parser generator that can do all of it: [http://gallium.inria.fr/~fpottier/menhir/](http://gallium.inria.fr/~fpottier/menhir/)

It supports both incremental parsing and an API to inspect and recover incomplete ASTs (which powers Merlin, the IDE-like thing for OCaml). It provides stellar debugging features for ambiguous grammars and a way to have good error messages (which is used in compcert's C parser and facebook's reason).

So, it's not impossible. Most parser generators are not that good, though.

<comment><USER3> That is super impressive! I can't find the part on incomplete AST or AST reuse in their reference docs though.

<comment><USER4> Details about the "incremental" mode are listed in the documentation PDF[0] at section 9.2

Here are the first couple of paragraphs:

 _" In this API, control is inverted. The parser does not have access to the lexer. Instead, when the parser needs the next token, it stops and returns its current state to the user. The user is then responsible for obtaining this token (typically by invoking the lexer) and resuming the parser from that state. The directory demos/calc-incremental contains a demo that illustrates the use of the incremental API.

This API is "incremental" in the sense that the user has access to a sequence of the intermediate states of the parser. Assuming that semantic values are immutable, a parser state is a persistent data structure: it can be stored and used multiple times, if desired. This enables applications such as "live parsing", where a buffer is continuously parsed while it is being edited. The parser can be re-started in the middle of the buffer whenever the user edits a character. Because two successive parser states share most of their data in memory, a list of n successive parser states occupies only O(n) space in memory."_

There does not appear to be a specific mention of having the partial AST available.

[0] - linked from their front page and available at [http://gallium.inria.fr/~fpottier/menhir/manual.pdf](http://gallium.inria.fr/~fpottier/menhir/manual.pdf)

</comment></comment></comment></comment></comment><comment><USER5> Here's a recursive descent trick worth mentioning: instead of decomposing expressions into levels called things like "term" and "factor" by the precedence of the operators involved, you can do it all using a while loop:

        function parseExpressionAtPrecedence(currentPrecedence) {
          expr = parseExpressionAtom()
          while op = parseOperator() && op.precedence < currentPrecedence {
            if op.rightAssociative {
              b = parseExpressionAtPrecedence(op.precedence)
            } else {
              b = parseExpressionAtPrecedence(op.precedence + 1)
            }
            expr = OperatorExpression(op, expr, b)
          }
          return expr
        }

The parseExpressionAtom function handles literals, expressions in parentheses, and so on. The idea is to keep pushing more operators on to the end of an expression until a higher-precedence operator appears and you can't any more. This technique (called precedence climbing) makes parsing these sorts of arithmetic expressions a lot less painful.

<comment><AUTHOR> Yes! Using explicit functions for each precedence level is a little tedious. It's also really simple and fairly common, though, so I thought it was a good gentle way to ease people into parsing.

In part III of the book, when we write a second interpreter in C, we use a Pratt parser for expressions and it's a lot less boilerplate-heavy.

<comment><USER6> By going to the other extreme, you can use _only_ precedence climbing (with just a grammar) by using Floyd's algorithm, which will treat all tokens as operators. It uses two precedences functions instead of one, a left and right precedence.

[https://en.wikipedia.org/wiki/Operator- precedence_grammar](https://en.wikipedia.org/wiki/Operator-precedence_grammar)

</comment></comment></comment><comment><USER7> Oh my god, a dream come true!

I had always hoped Bob Nystrom would write a book about interpreters/compilers.

Back when I tried to learn how to write a recursive descent parser, the examples I found either ignored correct expression parsing or wrote an additional parse method for each precedence level. Writing a parser by hand seemed just too much work. Along comes this great article about pratt parsers [http://journal.stuffwithstuff.com/2011/03/19/pratt- parsers-e...](http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers- expression-parsing-made-easy/) and all can be done with two simple functions, a loop and a map. :) Saved my enthusiasm right there.

Another great example is this article about garbage collection: [http://journal.stuffwithstuff.com/2013/12/08/babys-first- gar...](http://journal.stuffwithstuff.com/2013/12/08/babys-first-garbage- collector/) Instead of making things more complicated than they are, Bob Nystrom simplifies daunting topics and makes the accessible.

Thanks so much for your work! Really looking forward to this one. Will there be code generation too? :)

<comment><AUTHOR> You're welcome!

Some of the book will revisit topics I've already covered in my blog (but I'll write all new prose to seamlessly integrate it into the rest of the material and the language we're building). In Part III where we build an interpreter in C, it will use a Pratt parser and we'll implement a mark-sweep GC from scratch.

The book doesn't touch on native code generation because (1) that's a really big, messy topic and (2) I don't have much experience with it.

The C interpreter does compile to _bytecode_ , though, so we cover a lot of the basic concepts around lowering the code into a denser more efficient representation, representing the stack and callframes, etc.

</comment></comment><comment><USER8> One piece of advice I have for people writing a new language.

Consider making your language so you can do one-character lookahead, with something like the 'shunting algorithm' to handle precedence.

I work on a system called gap ( www.gap-system.org ), and when parsing we only ever need to look one character ahead to know what we are parsing. This makes the error messages easy, and amazingly good -- we can say "At this character we expected A,B or C, but we found foo". It also makes the language easy to extend, as long as we fight hard against anyone who wants to introduce ambiguity.

If your language is ambiguous, and you have to try parsing statements multiple times to find out what they are, then your error handling is always going to be incredibly hard, as you won't know where the problem arose.

Of course, if you are parsing a language given to you, you just have to do the best you can.

<comment><USER9> Does anyone have any examples of popular languages that are very easy to parse or ones that have a lot of ambiguity?

I assume the lispy type languages fall into the easily parsed bucket, perhaps tcl as well? And Perl may be a good example of a language that has notable ambiguity?

<comment><AUTHOR> Smalltalk is famously easy to parse. They always proudly said you can fit the entire grammar on a single page. It's a really compact, neat syntax.

Pascal is also pretty clean and regular. Unlike Smalltalk, it was designed more to make the compiler's job easier, so not only is the grammar pretty regular, but it's organized such that you can parse and compile to native code in a single pass.

C is a pain to parse, it's context-sensitive in some areas. C++ inherits all of that and adds a lot more on top.

My understanding is that Perl can't be parsed without being able to execute Perl code since there are some features that let you extend the grammar in Perl itself?

<comment><USER10> Perl is mostly hard to parse because it using a dynamic lexer. The parser itself uses a normal static yacc grammar, but the lexer drives the parse dynamically. Eg if a class or method is already defined or not, and what types to expect as arguments. It's crazy, but beautiful. Not so insane, more like a very clever hack.

</comment></comment></comment></comment><comment><USER11> Love the confidence of this author:

> Writing a real parser — one with decent error-handling, a coherent internal > structure, and the ability to robustly chew through a sophisticated syntax — > is considered a rare, impressive skill. In this chapter, you will attain it.

<comment><USER12> FWIW Bob Nystrom wrote one of my favorite posts of all times, about Pratt parsers[1]. Really looking forward to read his new work!

[1]: [http://journal.stuffwithstuff.com/2011/03/19/pratt- parsers-e...](http://journal.stuffwithstuff.com/2011/03/19/pratt-parsers- expression-parsing-made-easy/)

<comment><AUTHOR> Thanks!

When we get to the second interpreter in the book (the one implemented in C), it uses a Pratt parser for expressions.

</comment></comment></comment><comment><USER13> I wrote some time back a tutorial on this: [http://lisperator.net/pltut/](http://lisperator.net/pltut/) — but the implementation language is JS, and the language we implement is quite trivial (no objects, inheritance etc.; but does have lexical scope, first-class functions and continuations).

I think Java is ugly, but putting this knowledge in an accessible book is great. Typography is also very nice.

<comment><USER14> I learned a ton doing this! Thanks for making it! I also really enjoyed "A Little Javascript Problem"

</comment></comment><comment><USER15> Why is it called recursive descent, isn't that redundant?

I normally think of any recursion as some kind of descent into deeper levels. Maybe I'm being biased due to awareness of stackframes being a common way to implement recursion.

Or maybe it's a known phrase made popular by a paper or researcher. like "embarrassingly parallel". There are other ways to say it but comp sci people know by convention what an embarrassing problem is and that it's usually a good thing.

If everyone started saying only "recursive parser" would there really be any confusion?

<comment><USER16> > I normally think of any recursion as some kind of descent into deeper > levels. Maybe I'm being biased due to awareness of stackframes being a > common way to implement recursion.

You can write bottom up algorithms using recursion too. It still technically goes down first, but does the real work on the way up.

<comment><USER17> For a simple example, this is like the difference between

        function sum(lst) {
            if (length(lst) > 0) {
                return head(lst) + sum(tail(lst));
            }
            return 0;
        }

vs.

        function sum(lst, currentSum) {
            if (length(lst) > 0) {
                return sum(tail(lst), currentSum + head(lst));
            }
            return currentSum;
        }

In the first case you don't actually start doing addition until after you get to the end of the list, while the latter is doing addition on the way down.

</comment></comment></comment><comment><USER18> If anyone would be helped by an example, I worked on this recursive descent- based compiler a few years ago with a focus on clarity and readability:

[https://github.com/rzimmerman/kal](https://github.com/rzimmerman/kal)

The actual parsing is here: [https://github.com/rzimmerman/kal/blob/master/source/grammar...](https://github.com/rzimmerman/kal/blob/master/source/grammar.litkal)

It's somewhere between a toy language and something professional, so it could be a helpful reference if you're doing this for the first time.

Beware, the project is no longer maintained and probably doesn't work with modern node.js runtimes.

</comment><comment><USER16> Another fun way to write a recursive descent parser is to abstract and parametrize the recursive descent algorithm.

Best done in dynamic languages. I wrote an abstract recursive descent parser in JS which accepts an array of terminal (regexp) and non-terminal definitions (array of terminal/non-terminal names + action callback), and returns the function that will parse the text.

The parser "generator" has 125 lines of code and doesn't really generate anything. It's an extremely lightweight solution to quickly produce purpose made languages in the browser without need for any tooling.

Together with `` template strings to write your custom made language code in, it makes for a lot of fun in JS. :D

<comment><USER19> It would be really interesting to see that code if you ever want to publish it. Thanks!

<comment><USER16> I guess why not. :)

[https://megous.com/dl/parser/tests/index.html](https://megous.com/dl/parser/tests/index.html)

See the code. AGPL.

</comment></comment></comment><comment><USER20> I learned about recursive descent parser by reading Anthony Dos Reis book: compiler construction using java, javacc and yacc[0]. I'm a bit lazy {tired} now I'll just refer to my previous comment. It has been my favorite book. Trust me, you'll learn about compiler technology with this wonderful book.

[https://news.ycombinator.com/item?id=13664714](https://news.ycombinator.com/item?id=13664714)

[0] - [https://www.amazon.com/Compiler-Construction-Using-Java- Java...](https://www.amazon.com/Compiler-Construction-Using-Java- JavaCC/dp/0470949597)

</comment><comment><USER21> Ever thought about using an interpreting parser, which takes a grammar and parses a string/file according to it. (To parse the grammar you use the interpreting parser itself with a hard coded version of the grammar of the grammar.) Have a look at: [https://github.com/FransFaase/IParse](https://github.com/FransFaase/IParse)

</comment><comment><USER6> I've found parser expression grammars (PEG) to be a good solution to avoiding the ambiguity stated at the very beginning. This is done by making all choices (|) into _ordered choices_.

I've recently used PEGs to write a Python parser (parsing all of Python, except for possible bugs) in ~500 lines of Python [2]. Its entirely interpreted. No parser is generated, only trees.

I'll also add that Floyd's operator precedence grammar [3] includes an algorithm which can deduce precedences from a grammar.

[1] [https://en.wikipedia.org/wiki/Parsing_expression_grammar](https://en.wikipedia.org/wiki/Parsing_expression_grammar)

[2] [https://github.com/asrp/pymetaterp](https://github.com/asrp/pymetaterp)

[3] [https://en.wikipedia.org/wiki/Operator- precedence_grammar](https://en.wikipedia.org/wiki/Operator-precedence_grammar)

</comment><comment><USER22> My first project ever as a professional programmer was writing a recursive descent parser - in 1981, in Fortran, of Jovial language code. Of course there were no other choices. Thankfully today you can avoid writing your own, though sometimes it still pays to write it by hand.

</comment><comment><USER23> how do recursive descent parsers compare to parser combinators? so far i've tended to use a combinator library when one of my small projects needs a parser, but now i'm wondering if i should just get good at doing recursive descent parsers instead.

<comment><USER24> They are essentially same.

</comment></comment><comment><USER25> I didn't see mention of first/follow sets. Might be handy to have that in there?

<comment><AUTHOR> One of the hardest things about writing a book is deciding what to _not_ include. This chapter is already over 7k words, which is longer than I'd like. First/follow sets are useful but I haven't found them _that_ useful to think about in my own parsers, so I left them out.

<comment><USER25> Fair point.

</comment></comment></comment><comment><USER26> Very cool Bob! I'm a big fan of your writing and Jasic was a nice and small project that really helped me understand compilers better. I look forward to my lunch hour when I can go over this chapter.

I'm actually going through a similar process at the moment. I would like to write a few articles about implementation considerations in compilers that text books often omit. For example, in the scanner phase, should identifier tokens contain a copy of the identifier name, should they have a length + pointer into the original stream, should they contain an index into a symbol table, etc.

</comment><comment><USER27> Haha, I had assignement to built a recursive descent parser for a simple Ada- like language just 3 days ago. It was fun task, but if this guide was posted earlier, I could have used it.

<comment><AUTHOR> I'm writing as fast as I can. :)

</comment></comment><comment><USER28> I enjoyed experimenting with this project, back when it was active...

[http://www.acooke.org/lepl/](http://www.acooke.org/lepl/)

\-- A recursive descent parser for Python

\-- Grammars are written directly as Python code, using a syntax similar to BNF

\-- New matchers can be simple functions

</comment><comment><USER29> I'm writing a Javascript parser right now so this is actually super useful. Thank you!

</comment><comment><USER30> I worked on a recursive descent JSON parser. That was a valuable learning experience.

<comment><USER31> Was it for fun or for business?

<comment><USER30> Mostly fun. I was initially pissed off out how a JSON encoder/decoder exploded when parsing a large float. After a while, I learned what I wanted to learn about why it works they way it does and moved on to other things.

<comment><USER31> Interesting. What encoder exploded at the large float? I ask because I would be surprised if an encoder/decoder from one of the major languages couldn't handle that.

<comment><USER30> It's Poison, a hex package for Elixir. It blows up if you try to parse a number somewhere between "1e308" and "1e309". That is a limitation of the Elixir standard lib. Elixir doesn't try to handle that in a special way, it just raises and exception. I'd love to see something like a BigFloat, or an plug-in hook giving you the option to not explode if you didn't want to.

In Ruby, when you parse "1e309" with the built in JSON gem, you get "Infinity". That drives me bonkers, too :)

</comment></comment></comment></comment></comment><comment><USER32> If you're serious about writing a parser, why not go for a bottom up parser?

It eliminates a lot of the headaches with top down/recursive descent parsers like left recursion and backtracking.

</comment><comment><USER33> Been there. Done that. Yuck! I so much prefer bison or yacc.

</comment><comment><USER34> It's a shame parsers are such a PITA to write. So many problems could be trivially solved if writing a grammar and generating a parser for it were in any way a pleasant process.

<comment><USER35> This is the pain of text. The text format has won so handily that we rarely consider the possibility that files could be anything other than a sequence of characters. But if it were a _tree_ instead, then "parsing" would be a simple, linear-time process with good error messages.

<comment><USER16> Editing would be annoying as hell though.

<comment><USER35> You would use a different editor: a tree or structured editor. It would be _different_ , but I doubt it would be _worse_.

<comment><USER16> So, where are all the professional programmers doing blocks programming, or something like that? All visual programming is very niche. Last I got close to some was 18 years ago when working with LabView.

It's not just different. It's suboptimal. It's just not compelling. You'd need visual everything. Like visual diff, visual git, make it easy to copy visual crap between various applications. Copy visual code to a web page? Copy it to chat to send to a friend? Instead of just writing, you'd need to remember UI shortcuts/icon to insert visual crap into your codebase...

It's bleh. I clearly hate the idea. :D</comment></comment></comment></comment></comment>


Stack overflow knockoff for machine learning, NLP, AI, ... - <AUTHOR> http://metaoptimize.com/qa/

<comment><USER3> Already the site has its first scoop!

 _Question: What little-known non-convex optimization trick has been used in most Berkeley NLP papers since 2006?_

 _Answer:_ [http://metaoptimize.com/qa/questions/14/what-are-the- state-o...](http://metaoptimize.com/qa/questions/14/what-are-the-state-of-the- art-optimization-algorithms-for-problems-with-numerous-local-minima#74)

I am the person that built this site. I wasn't planning on announcing the site yet, until I disseminated it more widely in academic circles, because I wanted to establish a core highly technical user-base, but I guess this is fine. The quality of the users coming from HN has been great.

What people are saying about MetaOptimize Q+A:

Ryan McDonald (Google): "A tool like this will help disseminate and archive the tricks and best practices that are common in NLP/ML, but are rarely written about at length in papers."

Aria Haghighi (Berkeley): "Both NLP and ML have a lot of folk wisdom about what works and what doesn't. A site like this is crucial for facilitating the sharing and validation of this collective knowledge."

Bob Carpenter (Alias-I): "Par for the course, it's a mix of wildly general (non-convex optimization) and reasonably specific (testing a random number generator) questions." ([http://lingpipe-blog.com/2010/06/29/training- examples-a-stac...](http://lingpipe-blog.com/2010/06/29/training-examples-a- stack-overflow-for-nlp-and-ml-and/))

I'm targetting machine learning, natural language processing, vision, AI, statistics, data mining, neuroscience, etc. and other data-driven fields. As we've learned from StackOverflow, having a broad topic means that information cross-polinates between groups that don't normally communicate. This problem is particularly acute in academia.

It's a site for scientists to share knowledge and techniques, to document our ideas in an informal online setting, and to discuss details that don't always make it into publications.

Also, I've gotten a handful of job offers through answering questions on Quora. So hopefully this will connect people with gigs they like.

Why should you sign up and post a question or answer?

* Communicate with experts

* Crosspolinate information with experts in adjacent fields

* Answer a question once publicly, instead of potentially many times over email

* Share knowledge to create additional impact beyond conference or journal publication

* Find new collaborators

* Get job offers and gigs

The site is powered by OSQA. (<http://osqa.net>) I think it's unfair to the core developers to call it a StackOverflow knockoff, given that StackOverflow is---like most software---itself derivative.

<comment><USER4> Your email validation links appear to be broken -- I keep getting a 404 when I click mine.

<comment><USER3> Sorry about that. I will contact the OSQA developers upstream.

The software wasn't designed to work out of a subdir, so we're still ironing issues out on that front.

[edit: This happens for reasons that neither I nor the core devs understand: <http://jira.osqa.net/browse/OSQA-204> ]

<comment><USER5> Yeah, there's an extra /qa/ in the URL. Removing that works.

<comment><USER6> Thanks a lot for that info. It worked for me too.

</comment></comment></comment></comment></comment><comment><USER7> Very unfair to call it a knockoff, its waaaay more than that. The OSQA project is awesome, and rick & heranin (devs) are great guys, and always looking for more help. My ex-SE site will be using osqa, or is :) , and I will soon make the final migration soon. If you're local to SF, visit SF Answers! Good job bravura - <USER2>

<comment><AUTHOR> I didn't mean "knockoff" to be disparaging, just that the design and functionality are very similar.

<comment><USER7> ok, thanks for the clarification :)

</comment></comment></comment><comment><USER8> Why does it matter if its a knock off or not. If Stackoverflow can't get this type of deep dive into this community, why can't someone else try. Some times you just have to take things into your own hands. Its Joel and Jeffs fault for not opening their code to others like they said they would...

I fully support the decision to make this site especially if its not around yet.

</comment><comment><USER9> Awesome! Really excited about this.. Stackoverflow hasn't been that great of a place to ask ML/IR/NLP questions and expect good answers

Maybe this site will bring together all the ML people and do a better job.

Visually, the site is not that great. The logo is unreadable at first attempt

<comment><USER10> I liked the logo, especially the Idea behind it, I think a darker color or thicker lines in the circles might help though

<comment><USER11> Or change your feature extractors :)

</comment></comment></comment><comment><USER12> This is being referred to as a knockoff, I assumed this was actually based on stack exchange. Can someone clarify?

<comment><USER13> Joel & Jeff are selectively rolling out new StackExchange sites.

The selection process for new sites is community-driven:

<http://area51.stackexchange.com/>

. . . but it looks like a stats site is close to being a reality:

[http://area51.stackexchange.com/proposals/33/statistical- ana...](http://area51.stackexchange.com/proposals/33/statistical-analysis)

<comment><USER3> There are several problems with that approach:

As Chris Manning (Stanford NLP professor) says, Area 51 hasn't gotten any buy- in from the academic community. I have focused on getting academia to be the immediate core of the community, so that the quality of Q+A is high. I am able to do this because of my academic connections.

They are fragmenting the Q+A sites into four: [http://area51.stackexchange.com/proposals/33/statistical- ana...](http://area51.stackexchange.com/proposals/33/statistical-analysis) [http://area51.stackexchange.com/proposals/6607/artificial- in...](http://area51.stackexchange.com/proposals/6607/artificial-intelligence) [http://area51.stackexchange.com/proposals/2761/natural- langu...](http://area51.stackexchange.com/proposals/2761/natural-language- processing-and-computational-linguistics-nlp-cl) [http://area51.stackexchange.com/proposals/7607/machine- learn...](http://area51.stackexchange.com/proposals/7607/machine-learning)

The _last_ thing we need is NLP and ML people communicating _less_. That's why my site encompasses all of these proposals, as well as adjacent fields. As we've learned from StackOverflow, having one site for a broad topic leads to cross-polination of ideas between groups who don't normally communicate.

Most importantly, OSQA (which powers my site) is an open platform, built on Django+Python. That comes with all the benefits of open software. In particular, because the site is open-source, I can experiment with adding NLP to it. I can improve the Related Questions, I can automatically infer tags, and I can implement techniques for helping you organize and navigate information.

<comment><USER11> "Related Questions": tokenize => random hash/project (tokens) => TD-IDF => KD- tree lookup

"automatically infer tag": tokenize / shingle q&a, ORDER token+bigrams BY TF- IDF(token + bigrams)

In both cases a global IDF estimate can be held in memory using a Counting Bloom Filter (or a traditional solr index).

</comment></comment></comment></comment><comment><USER14> I tried to register and the verification link from/for the mail gives me a 404.

Edit: Easy to fix. Replace <http://metaoptimize.com/qa/qa/account/validate/> by <http://metaoptimize.com/qa/account/validate/>

<comment><USER3> Tricky to fix, actually: <http://jira.osqa.net/browse/OSQA-204>

I am getting complaints that validation email links don't work (they have the subdir twice, as you mentioned), even though welcome email links work just fine.

This is weird because they both use the exact same link in the template:

forum/skins/default/templates/auth/welcome_email.html: {% trans "Validate my email address" %}

forum/skins/default/templates/auth/mail_validation.html: {% trans "Validate my email address" %}

<comment><USER6> Perhaps you could include instructions to remove the extra "qa/" in the mail you send? Ugly, but much better than having the validation link 404 in on the face of new users. I immediately got a bad impression of the site when I saw the 404.

</comment></comment></comment><comment><USER15> Jeff/Joel really buggered up. They did a bit of course direction and ended up even further off course. Oh well. The platform is important, but having the skills and personality required to build a bonza community are more important.

</comment><comment><USER16> Do we have a reasonable measurement of an HN "weekend" now?</comment>