Remember, "Karma" is for techies! - <AUTHOR>

<comment><AUTHOR> The word karma has evolved and taken a meaning of its own thanks to slashdot's use of it as a point unit.

But I have to say: I consider myself pretty good with computers and even program here and there. Yet, for the longest time I was confused about what exactly "karma" stood for. I knew it was a measurement of some sort(hey what else can a number be?) but I'd no idea about what exactly having "more karma" means.

My point is that when you use such phrases, you are assuming a specific kind of audience. Use of karma for reddit(tech-focused) is fine; even for news.yc it's fine - but for a consumer website, you should be very careful about introduction of new words. And say you love the word karma so much that you insist on using it - in that case, have a page that clearly explains what karma is assuming that the user knows nothing about it.

Karma is just one example - larger point here is to be careful about use of individual words that may have a huge role to play in your website. Thing that triggered me to make this post is I saw another poster use "karma" on their consumer start-up(bad idea IMO).

This is a mistake that is so easy to commit. Heck we did it when we launched. A lot of our users that were playing songs on our site had no idea what "Jigg It!" button meant. After couple user mails inquiring about it, we put up a tooltip saying "Jigg It if you like it!". Suddenly more people were clicking on it.

\--Zaid

<comment><USER2> I think the problem you had with "Jigg It" is that you're copying "Digg It" which is plain English, whereas yours is a made up term that doesn't mean anything. The closest phrase is "getting jiggy with it", which would be nice if shortened.

Another thing to consider is that "priesthood" stuff. Users feel good for knowing stuff about your product that newbies won't know right away. There may be times when it makes sense to use unfamiliar lingo on your site.

</comment></comment><comment><USER3> Actual Karma is defined as "The total effect of a person's actions and conduct during the successive phases of the person's existence, regarded as determining the person's destiny.". In hinduism there is this concept which says that whatever a person does is recorded and sum total will reflect in your next life.

<comment><USER4> Karma simply means "duty". Every other meaning is a derivative of this fundamental definition of Karma.

From that perspective, using the word Karma with a number is utterly meningless :-)

</comment></comment><comment><USER5> Karma is the law of cause and effect. Every effect has a cause and every cause follows an effect, so karma is suggestible.</comment>


Why I no longer contribute to StackOverflow - <AUTHOR> http://michael.richter.name/blogs/why-i-no-longer-contribute-to-stackoverflow

<comment><USER2> This is about a year old and has already been discussed here:

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

<comment><AUTHOR> why are HN filters not catching the duplicate link?

<comment><USER3> You submitted it without the end backslash.</comment></comment></comment>


xkcd: 562k Accounts breached according to haveibeenpwned - <AUTHOR> https://twitter.com/haveibeenpwned/status/1168090499271389184 <comment><USER2> I wonder how many of those passwords are correcthorsebatterystaple

</comment><comment><USER3> I'm one of them :/

The haveibeenpwned description says password hashes are md5, which sucks. But phpBB has used bcrypt by default since version 3.1 (2014)... I wonder if all the hashes are md5 or only those for older accounts?

[https://haveibeenpwned.com/PwnedWebsites#XKCD](https://haveibeenpwned.com/PwnedWebsites#XKCD)

<comment><USER4> Impacted as well, but I'm happy to be part of it. Either they'll crack an old password or, more likely, this is a new style password and they waste a lot of cracking time on it. Using a password manager for everything except a few offline things and my bank account was definitely the right move.

<comment><USER5> What do you use for your bank account?

<comment><USER4> Same as for my master password: a randomly generated, memorized password.

The trick to remembering them is to use them regularly. This is also why I don't use a passphrase: a password is much shorter and less frequently typo'd, thus less annoying for frequent use.

</comment></comment></comment></comment><comment><USER6> This sucks. But on the bright side, we can expect an XKCD comic about it in the future.

</comment><comment><USER7> Who has an 'account' with xkcd? Confused.

<comment><USER8> Me, too. I mean, a xkcd forum is not that surprising but half a million users while I never heard about it existing?

Could that have been a honeypot? At least partly? That's something xkcd would do.

<comment> Tuna-Fish No, it's real. It used to be prominently on the site sidebar, but it got very big around the time xkcd first got popular, and the link was subsequently removed. After that, you had to know it existed and just go directly to forums.xkcd.com, so the only people who knew of it were generally the people who were early xkcd readers or people invited by them. Imho it's one of the better open "offtopic" discussion forums on the web, partly because of insular culture trending towards thoughtfulness.

<comment><USER9> I ran into it by Googling, so it was not hidden well.</comment></comment></comment></comment>


DNSimple Price Increase - <AUTHOR> http://support.dnsimple.com/articles/price-change

<comment><USER2> Anthony Eden, founder of DNSimple here. I'm happy to take questions or comments here or directly through our support address (email@example.com), regardless if you are a customer or not.

Our goal is to be transparent about what we're doing and why we're doing it.

<comment><USER3> Ok, why it's more expensive?

Saying "raising our prices will help us to continue to improve across the board and bring you better, more solid DNS services" is the exact opposite of transparence.

<comment><USER2> 1\. We've invested a significant amount of time and capital into our Anycast network. There are both up front and ongoing costs for this. We could make due with the revenue we have now but it would leave little margin.

2\. We want to hire additional developers so we can get our ICANN accreditation and add new functionality to the system. I won't go into specifics, but we have a long backlog of things we want to make. We're still going to hire slowly and deliberately, however we want to grow none-the-less.

3\. We feel that the value to customers is higher than what we are charging now, and thus we are adjusting the prices for that reason as well.

</comment></comment></comment><comment><USER4> I've thought DNSimple has needed to raise its prices for a long time. They provide so much value and and I'd much rather pay more to help ensure that they stay around and can continue to build.

</comment><comment><USER5> Now the price is a little bit to high I think... But the service is so cool!

<comment><USER6> seems pretty cost competitive next to Amazon's Route53, which I always thought was exceptionally cheap compared to the hassle of running your own nameds</comment></comment>


Elastic Search-powered news feed: How it's built - <AUTHOR> http://chrisamccoy.com/architecture-details-of-the-news-feed

<comment><AUTHOR> Here's an insight of 10-person team building a newsfeed powered by elastic search. Still in the 2nd inning.</comment>


LUA is better than JavaScript - <AUTHOR> http://kasrajamshidi.com/posts/luavsjs/post.html <comment><USER2> Please tell me this article is a hoax: This guy studies Computing Science and writes :

"Javascript is written in Java and meant to script Java programs"

"Javascript only runs on the JVM, which is only available on web browsers. That is only one platform. LUA runs on any CPU that can run assembly code, since LUA was written in C which is portable assembly. It is more portable."

Just one comment : please study more.

<comment><USER3> Don't worry, this article is definitely comedy/parody.

</comment></comment><comment><USER4> There's a lot to like about Lua but the one thing that stops me taking it seriously is that it doesn't have arrays or lists. Its only data structure is an infinite associative map (called a table), in which all keys map to the value "nil" unless otherwise set.

When you need a list, convention is to use a table with integer keys. But, the standard library functions dealing with these "lists" interpret the list as ending at the first element whose value is nil! There is no separate length field or anything (there was, but they took it out).

So, you can't just trust that a list is a generic structure that can hold anything -- you need to be on the lookout for "nil", because inserting it into a list truncates the list to that position.

There are many crazy workarounds for this: [http://lua- users.org/wiki/StoringNilsInTables](http://lua- users.org/wiki/StoringNilsInTables)

But my workaround is to just not use Lua, because as many warts as JS has, it has nothing as bad as that IMO. It's a shame, because Lua is otherwise an excellent language.

</comment><comment><USER5> I assume this is an attempt at parody.

</comment><comment><USER6> What is this even. I think Lua is better too, but this article is really bad. Also it's Lua, not LUA. I couldn't even read it in full after spotting things like "Javascript only runs on the JVM" and "Games are harder than web and programmers choose the best tool for the job, so LUA is a better tool and Javascript wouldn't be able to handle it"

EDIT: oh, I missed the first paragraph "I want to note that the language is technically called "Lua" and the authors explicitly request people to refrain from calling it LUA, but I always shout whenever I say it in real life", good troll :|

</comment><comment><USER7> Lua is better than JavaScript, sure, but this article doesn't make a convincing argument for that proposition. In fact, I might argue that it has a negative effect on any such arguments that may be posted, by virtue of association.

</comment><comment><USER8> Lua is definitely better than JavaScript. Anyone well versed in both languages knows this, I'm undoubtably sure.

But I like that no one uses it. If people knew how much better Lua was over JavaScript, it might ruin the ecosystem with amateurs.

</comment><comment><USER9> This article is hilarious.

</comment><comment><USER10>
      LUA doesn't have any of that functional baloney built into
      it like Javascript. It doesn't have Objects either. Leave
      that cruft to Java, Javascript, and all the other clunky
      enterprise languages like them. Programming in LUA is the
      way it's supposed to be, imperative.

      Conclusion: LUA is hardcore and lightweight, like C.

Actually, Lua was intentionally designed to support functional programming and strong function composition. Lua supports proper tail calls and lexical closures. The former is necessary for functional programming, and the latter makes function composition easier as a practical matter, especially when you consider that...

... one of the beauties of Lua is that you can write "Lua" in either Lua or C. That is, the Lua language was designed so that the Lua C API was a first-class citizen. A Lua function written in C has full access to the power of lexical closures as well as stackful coroutines. (See the paper "Passing a Language through the Eye of a Needle" at [http://queue.acm.org/detail.cfm?id=1983083](http://queue.acm.org/detail.cfm?id=1983083)) No other language benefits from such attention to detail in that regard. If you don't understand the beauty of the Lua C API, then you don't understand Lua.

Also, object oriented programming in Lua is prototype based, just like in JavaScript. But Lua is definitely hardcore and lightweight and fast, even though it's a much more sophisticated language than both JavaScript and Python in terms of language abstractions.

I think people get the idea that Lua isn't sophisticated because it's so simple--that is, it has a small repertoire of language features, and the implementation is small and comprehensible. But that's largely a product of the fact that while Lua is over 20 years old, it never committed to strong backwards compatibility.

Lua 5.3 is the product of decades of ruthlessly discarding failed experiments, and carefully introducing new experiments. And this shows if you pay close attention to the details of the language features, semantics, and API.

For example, look at Lua's stackful coroutines. Some consider call/cc (call with current continuations) the ideal abstraction, but Lua's choice of asymmetric stackful coroutines was carefully considered. The paper 2004 paper "Revisiting Coroutines" ([http://www.inf.puc- rio.br/~roberto/docs/MCC15-04.pdf](http://www.inf.puc- rio.br/~roberto/docs/MCC15-04.pdf)) by one of the Lua authors is widely cited in this area of language research and design.

Lua's lack of backwards compatibility is a stumbling block for uptake. But it's asymptotically approaching the perfect language of it's kind (dynamically typed, etc). The period between major releases seems to be growing (5+ years now), and the changes fewer. The future is bright.

</comment><comment><USER11> Is anything worse than javascript?

</comment><comment><USER8> It's Lua, not LUA. [https://www.lua.org/about.html#name](https://www.lua.org/about.html#name)

<comment><USER12> Did you even read the second paragraph?

<comment><USER8> Thanks really appreciate it, he edited it after I posted. Even if I didn't, it's the fucking title. I read titles before posts.</comment></comment></comment>


Ruby/YARV bytecode compiler for λ-calculus - <AUTHOR> https://github.com/cstrahan/lambda.rb/tree/yarv

<comment><USER2> Needs more combinators! It's already got Y, so why not SKI ([http://en.wikipedia.org/wiki/SKI_combinator_calculus](http://en.wikipedia.org/wiki/SKI_combinator_calculus)) or BCKW ([http://en.wikipedia.org/wiki/B,C,K,W_system](http://en.wikipedia.org/wiki/B,C,K,W_system))?

(I'm not sure if it's kosher to link to it—if not, then please let me know and I'll remove it—but I implemented a SKI combinator reducer in Perl regexes a while back: [http://perlmonks.org/?node_id=809842](http://perlmonks.org/?node_id=809842) .)

<comment><AUTHOR> Nice! I'll have to read that in full later tonight - thanks for sharing!

This was mostly just me trying to wrap my head around Church encodings and such, but I could surely do with a couple more combinators in there :).

<comment><USER2> Just a warning: at least for me, once I got started, it became addictive to try, Oulipo-like ([http://en.wikipedia.org/wiki/Oulipo](http://en.wikipedia.org/wiki/Oulipo)), to write simple programmes in these ever-more-restrictive languages. I was helped along immensely by Hindley–Seldin ([http://www.cambridge.org/us/academic/subjects/computer- scien...](http://www.cambridge.org/us/academic/subjects/computer- science/programming-languages-and-applied-logic/lambda-calculus-and- combinators-introduction-2nd-edition)) and, for, as one would expect, a more friendly but still thoroughly mathematical introduction, Smullyan ([http://en.wikipedia.org/wiki/To_Mock_a_Mockingbird](http://en.wikipedia.org/wiki/To_Mock_a_Mockingbird)). I am not alone in my admiration for the latter; see, for example, [http://www.angelfire.com/tx4/cus/combinator/birds.html](http://www.angelfire.com/tx4/cus/combinator/birds.html).

EDIT to add: Speaking of 'Mockingbird' articles, you may be interested in Appendix A of [http://dkeenan.com/Lambda/index.htm](http://dkeenan.com/Lambda/index.htm), whose author discusses another interpretation, attributed there to Barendregt, of Booleans and numerals. For someone who regards the Church encoding as 'intuitive', they were very surprising!

</comment></comment></comment><comment><USER3> Esoterrorism is at the end of [http://codon.com/programming-with- nothing](http://codon.com/programming-with-nothing) \- nice FizzBuzz version...

What is YARV? :)

<comment><AUTHOR> Yet Another Ruby VM - the "official" Ruby interpreter, if you will (also known as Matz's Ruby, or MRI). [http://en.wikipedia.org/wiki/YARV](http://en.wikipedia.org/wiki/YARV)

Yeah, Tom Stuart is great - that's where I got the idea to create this.</comment></comment>


Doing the Right Things is More Important than Doing Things Right - <AUTHOR> http://www.bothsidesofthetable.com/2010/07/14/doing-the-right-things-is-more-important-than-doing-things-right/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+BothSidesOfTheTable+%28Both+Sides+of+the+Table%29 <comment><USER2> It's hard to argue with anything the author wrote. It's all reasonable and makes sense.

However, I believe that he implies a false dichotomy. I believe that both "do the right thing" _and_ "do things right" are important. I believe that one of the keys to success is to synthesize top-down and bottom-up thinking together.

I believe that you need a supple mind or organizational culture that can ping- pong between the "big picture" and the "devil is in the details" repeatedly and quickly. By doing so, I believe you can do quick sanity checks to ensure that the big picture is practical. It also allows ensures that you don't waste time on unimportant details.

I have no proof this beyond of own experience. :-)

<comment><USER3> Both are important, but doing the right thing is a prerequisite for doing that particular thing right.

If A, B, and C are the keys to success, I may be able to succeed by doing a mediocre job on A, B, and C, but there's no way I can succeed by not doing A, B, and C, even if I do an excellent job on D, E, and F.

</comment></comment><comment><USER4> "Everybody should be able to answer the question, "why am I doing this?" Otherwise they're likely to be doing things right, but not the right things."

This deserves more attention. While it is certainly critical to the point the author makes, I think it goes beyond far that. With every employee being able to answer the question "why am I doing this?" clearly you can achieve a far greater sense of accomplishment among your staff. This has positive side- effects for much more things.

</comment><comment><USER5> I respect how the author has articulated the problem, but the solution I was hoping he would articulate equally as well never came, other than a few simple platitudes in the last paragraph.

Reminds me of the Jack Nicholson line in the movie "As Good as it Gets" - "I'm drowning here, and you're describing the water!"

If you are interested in solving the problem described, check out Steve Blank's entry on "Mission, Intent and Values":

[http://steveblank.com/2009/04/09/supermac-war-story-6-the- jo...](http://steveblank.com/2009/04/09/supermac-war-story-6-the-job-of- marketing-mission-statements-mission-intent-and-core-values/)

</comment><comment><USER6> You may do Bingo Card Software brilliantly, A/B test everything down to the core, but in the end, no matter how brilliant it is, it's still just Bingo Card Software, and the market is limited.

If you pick something else with a much larger upper bound (like a game or so), when you spend all the time optimizing, you'll expand and expand your audience, and make more and more money.

</comment><comment><USER7> This looks like a variation on the same theme as the PG "procrastination" essay. Sometimes you're doing unimportant things (you may do them right, though, and they can be somewhat useful anyway) instead of doing really important things (the right thing).

</comment><comment><USER8> I always heard this as "It's better to have a 70% plan and execute it 100% than to have a 100% plan and execute it 70%."</comment>


Stack Overflow DevDays - <AUTHOR> http://www.joelonsoftware.com/items/2009/05/12.html

<comment><USER2> I'm wondering how many people will wear the suggested identity t-shirts. As cool as wearing your internet identity on your chest is, I'd kinda rather go in regular clothes + a nametag.

</comment><comment><USER3> Hey, they totally stole our schtick! <http://developer-day.com/>

Though we're only doing one city at a time...

</comment><comment><USER4> I must be alone in loving to work with people online but not so much in person. I don't think I could handle an event like that. I do love Stack Overflow, I'm happy it gained so many users.

<comment><USER5> If they sell out all 1,500 tickets it definitely doesn't make you alone in that preference...

</comment></comment><comment><USER6> A conference I can afford! Aside from the celebrity wow, the $99 price tag caught my eye first.

(Not to say that more expensive conferences aren't worth every dollar, but when you're kind-of consulting/running a struggling software/on a ramen diet you have to count your pennies.)

</comment><comment><USER7> The official site is kinda light on details. I'm not sure I would pay $100 for that, at least not yet.

<comment><USER8> I would like to know who the speakers are first. I know, it's more important to meet fellow Stack Overflow folks, but I meet geeks all the time in the Bay Area. "Six great speakers in each city" could be anybody.

<comment><USER9> You can always get a full refund at any point in time. The London event is already half sold out and Joel announced it today (no post on blog.stackoverflow.com or carsonified.com yet either).

</comment></comment></comment><comment><USER10> swap Stack Overflow karma for Hacker News karma and I'm there (london).

<comment><USER11> Ditto. I'd much rather go to a Hacker News event generally. Despite covering a wide range of topics, there's something a bit proprietary/Microsoft-y about Stack Overflow that I can't put my finger on. Besides, I much prefer the wider range of non-programming stuff HN covers :) Thumbs up for HN events!

<comment><USER12> Seconded. Is there a list of local HN meetups anywhere? Or an informal process for announcing or setting one up?

</comment></comment></comment><comment><USER13> I'm pretty bummed on the lack of an NYC event (or greater Northeastern US for that matter).

<comment><USER14> I'd ve loved it if it were also in India. Bangalore.

<comment><USER15> Its far more difficult to organize in a different country. I was surprised to see it being held in London.

PS. I live in Bangalore

<comment><USER16> why is it difficult to organize in India?

</comment></comment></comment></comment><comment><USER17> um ok. Thanks for the heads up ... ... Kind of odd that Jeff Atwood is only going to one of the things isn't it?

<comment><USER18> He's got a newborn son now so he probably want to limit travel for the time being. Just a guess though.</comment></comment>


How a startup is using the blockchain to protect your privacy - <AUTHOR> https://www.wired.com/story/how-a-startup-is-using-the-blockchain-to-protect-your-privacy/ <comment><USER2> [https://news.ycombinator.com/item?id=17492884](https://news.ycombinator.com/item?id=17492884)</comment>


What's Next for Artificial Intelligence - <AUTHOR> http://www.wsj.com/articles/whats-next-for-artificial-intelligence-1465827619 <comment><USER2> > We need to update the New Deal for the 21st century and establish a trainee > program for the new jobs artificial intelligence will create. We need to > retrain truck drivers and office assistants to create data analysts, trip > optimizers and other professionals we don't yet know we need.

I don't think the US government is particularly good at education, even while spending more than almost all other countries. Perhaps it would be better for workplace/continuing education but I doubt it. Education is hard. Predicting the future is harder. Perhaps the government should encourage a bottom up approach.

> The report claimed 24 percent of students in the U.S. had not acquired basic > skills, making it the second-worst high-income country in the world on this > measure, after Luxembourg. The OECD argued that if the U.S. could ensure all > students reached this baseline, over $27 trillion dollars would be added to > the national economy over the course of the students' working lives. [0]

> The United States spent more than $11,000 per elementary student in 2010 and > more than $12,000 per high school student. When researchers factored in the > cost for programs after high school education such as college or vocational > training, the United States spent $15,171 on each young person in the system > — more than any other nation covered in the report. That sum inched past > some developed countries and far surpassed others. Switzerland's total > spending per student was $14,922 while Mexico averaged $2,993 in 2010. The > average OECD nation spent $9,313 per young person. [1]

[0] [http://www.cnbc.com/2015/05/13/singapore-tops-oecds- global-s...](http://www.cnbc.com/2015/05/13/singapore-tops-oecds-global- school-ranking-us-placed-28th.html)

[1] [http://www.cbsnews.com/news/us-education-spending-tops- globa...](http://www.cbsnews.com/news/us-education-spending-tops-global-list- study-shows/)</comment>


Scientists have discovered what makes migration possible - <AUTHOR> http://www.deathandtaxesmag.com/185678/scientists-just-discovered-what-makes-migration-possible/

<comment><USER2> Here's the link to the actual abstract/paper. <http://www.pnas.org/content/early/2012/06/29/1205653109></comment>


Nasven.js – Maven artifacts in JavaScript - <AUTHOR> https://github.com/nasven/nasven

<comment><USER2> why can't you use maven for downloading maven dependencies?

<comment><AUTHOR> This solution uses Maven behind the scenes, but the Maven interfacing is governed by JavaScript code

<comment><USER3> > This solution uses Maven behind the scenes

With a fake POM and shelling out (and uses the go-offline goal, it could be argued that copy-dependencies is probably what you want). The proper way would be to use Aether.</comment></comment></comment>


Pelagic Thoroughbreds - <AUTHOR> https://www.newcriterion.com/issues/2019/2/pelagic-thoroughbreds <comment><USER2> "pelagic", for those wondering, means "relating to the open seas".

i'm mostly familiar with the term from "pelagic zone", which is the upper stratum of the water column where most fish live.

</comment><comment><USER3> Flying Cloud is a wonderful innovation story that connects to the larger story of Matthew Maury, who used US Navy datasets to transform how ships navigated. Gave a talk about this at the US Naval Academy a few years ago, build a bunch of visualizations since NOAA still hosts the data sets [http://ondrejka.net/history/2014/02/28/maury.html](http://ondrejka.net/history/2014/02/28/maury.html)

</comment><comment><USER4> > Trade with China is as old as the republic itself, blossoming initially out > of Salem, Massachusetts, and then later usurped by New York–based merchants.

No Transcontinental Railroad, no West Coast ports, no Panama Canal - so did they sail from Boston or New York, along the length of the Americas, through the Strait of Magellan, and then the long way across the Pacific to China? That's quite a trip. Or was there a portage in Central America somewhere?

The wikipedia article on US - China trade in the era prior to that of the clippers is rather interesting:

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

I had no idea that America bought opium from Turkey, or that ginseng was grown in Appalachia for export to China in the early 19th century!

<comment><USER5> Not through the straits. Around Cape Horn! An old British admiral started his career as a seaman on one of the last of the big square riggers that made that voyage in the 1920's, and brought along one of the earliest handheld video cameras. It's amazing photage ([https://www.amazon.com/Around-Cape-Horn- Johnson-Sailing/dp/B...](https://www.amazon.com/Around-Cape-Horn-Johnson- Sailing/dp/B000W8MMO2)). It gives an amazing view of just how huge the waves are sailing there.

That was the China trade, though. That was bringing bat guano from Chile as fertilizer.

<comment><USER4> Online - i am definitely not keen to do this trip:

[https://archive.org/details/IrvingMcClureJohnsonAroundCapeHo...](https://archive.org/details/IrvingMcClureJohnsonAroundCapeHornOriginalFootageFromOnboardThePekingFilmedIn1929)

<comment><USER6> Superb video, and in the public domain. Thanks so much for the link!

</comment></comment></comment></comment><comment><USER7> Title left me thinking of horse-breeding (on boats) in international waters, presumably for legal or tax reasons.</comment>


Mozilla Lightbeam – Relationships between third parties and the sites you visit - <AUTHOR> https://addons.mozilla.org/en-US/firefox/addon/lightbeam/

<comment><USER2> Looks interesting, just to take it for a quick spin I tested it with a small set of bookmarks. [1] Then I deactivated noScript and Disconnect and reactivated them individually. (Screenshots at [http://imgur.com/a/fRrnp](http://imgur.com/a/fRrnp) ).

So the result is, that there are three sites which do not incorporate third party connections whatsoever (DDG, HN, fefe). Without the addons, the other sites form a connected graph. With disconnect, the graph is less strongly connected. With only noScript, it starts to fall apart. With both activated, the primary sites are disconnected. ( But the combination apparently breaks something, since a second Guardian primary node appears.)

A few caveats, first of all this is of course not reproducible, since it depends on my whitelists for noScript and Disconnect. And the test set is of course not representative for anything except itself. And absence of a edge in the graph does not mean absence of a connection. But with this in mind, I found it quite interesting how connected even a small test set is.

[1] guardian.co.uk zeit.de blog.fefe.de reddit.com [http://natmonitor.com/2013/10/24/ghostly-shape-of-coldest- pl...](http://natmonitor.com/2013/10/24/ghostly-shape-of-coldest-place-in-the- universe-revealed/) ( from reddit) duckduckgo.com [http://linuxreviews.org/kde/screenshot_in_kde/](http://linuxreviews.org/kde/screenshot_in_kde/) (from DDG search)

</comment><comment><USER3> This looks like a cool upgrade to Mozilla's Collusion add-on, which is no longer available. [https://www.mozilla.org/en- US/collusion/](https://www.mozilla.org/en-US/collusion/) Edit: It even gave me a pop-up warning me that it's overwriting my Collusion data.

<comment><USER4> Lightbeam _is_ the new Collusion

 _> Lightbeam began in July 2011 as Collusion, a personal project by Mozilla software developer Atul Varma. Inspired by the book The Filter Bubble, Atul created an experimental add-on to visualize browsing behavior and data collection on the Web.

> In September 2012, Mozilla joined forces with students at Emily Carr > University of Art + Design to develop and implement visualizations for the > add-on. With the support of the Ford Foundation and the Natural Sciences and > Engineering Research Council (NSERC), Collusion has been re-imagined as > Lightbeam and was launched in the fall of 2013._

</comment></comment><comment><AUTHOR> Interesting that they use the list of trackers from TrackerBlock[1]. The license provided is:

        We reserve our copyright as to commercial applications but please contact us if you are interested in licensing for non-profit or educational uses.

        Our source code is available to review for your assurance.

In their extension, the "trackers.json" file is dated as 8/Feb/2012, so almost 2 years old now.

[1] [https://addons.mozilla.org/en- US/firefox/addon/trackerblock/](https://addons.mozilla.org/en- US/firefox/addon/trackerblock/)

<comment><USER5> ... why was this downvoted?

</comment></comment><comment><USER6> [https://github.com/mozilla/lightbeam](https://github.com/mozilla/lightbeam)

</comment><comment><USER7> What I would really like is a plugin that defaults the browser to incognito / private mode when using certain sites. For example, automatically search google.com as if I'm _not_ logged into Gmail.

</comment><comment><USER8> I have:

        network.http.sendRefererHeader;0
        network.http.sendSecureXSiteReferrer;false

and Lightbeam doesn't show anything until I reset them. Though I have a feeling that I'm still being tracked.

<comment><USER9> Yeah you do still get tracked but you really screw up any sort of referrer tracking - you'll appear to be coming directly to every page you visit. Also in some cases you may be blocked because you may look like a bad crawler...

<comment><USER8> It happened to me with [http://blog.bodhizazen.net/](http://blog.bodhizazen.net/) because of some stupid anti-spam Wordpress plugin.

</comment></comment></comment><comment><USER10> So it's like a fancy display of adblock/ghostery (who tracks me on which site) with a correlation of the sites i already visited... ok.. i'm sticking to just some adblocker :)

</comment><comment><USER4> I'm curious - after the first few "wow, nice visualization!", how does this add-on improve the experience of someone already running add-ons like Disconnect or Ghostery?

<comment><USER3> Well, you could make sure they're working? Or double-check that none of your whitelisted sites are doing anything too suspicious. Or maybe just for gloating :)

<comment><USER11> It does not seem to monitor actual requests but only references. I block a lot of domains but they still appeared in this add-on.

<comment><USER3> How are you blocking them? Sites blocked by RequestPolicy and Ghostery don't show up.

<comment><USER11> In my router! I guess it returns a.status that the tool interprets successful connection.

<comment><USER3> It probably counts when the request is made, without waiting for a connection to be successful.

</comment></comment></comment></comment></comment></comment><comment><USER12> Is this part of the Cookie Clearinghouse project? I wish there was more information about the crowdsourcing data collection. What data is collected and how will it be used?

</comment><comment><USER13> As a way to demonstrate to a lay user the insidious relationships on the web, it is pretty cool.

However, this doesn't seem like a good way to collect good quality crowd- sourced data. It can be easily poisoned, and there are simpler alternatives, such as crawling and analyzing the links by themselves. (I am assuming that an entity like Mozilla would have sufficient resources for that).

<comment><USER14> Crawling is certainly a complementary data collection strategy, but it's harder to avoid IP-based "filter bubble" effects w/out also deploying something akin to a bot. The hope is that by using real people using real browsers we'll collect data that reflects actual-behavior-in-the-wild.

You're right that poisoning is a potential problem if/when the data ends up useful enough to warrant poisoning.

</comment></comment><comment><USER15> Ah, I thought it's some new add-on. It used to be called Collusion.</comment>


"So, what do you do?" - <AUTHOR> http://blog.scoutapp.com/articles/2010/08/24/so-what-do-you-do

<comment><USER2> So, what do you do? > I'm a programmer

Oh, who do you work for? > Myself. I started a market research company with my best friend a year ago.

Oh, like a start up? > Yeah, I guess you can call it that. We do some contract work on the side to pay for things.

Hows it going so far? > Pretty good! We've tried out some things that haven't worked out and we're trying out new things. What about you, what do you do?

\- At this point, 99% of people feel as if they know everything about you. So the game, you the more intelligent entrepreneur with your max hax0r people skillz, is to find something interesting about them. If you manage to do that, then you might just have a new friend, and not just another business card.

<comment><USER3> > is to find something interesting about them. If you manage to do that, then > you might just have a new friend, and not just another business card.

Well put. From a recent NYTimes

"With the exception of his time at Oxford, Haden has spent his entire adult life as the guy everybody knows as soon as he walks into the room. His friends say Haden's gift is that he leaves knowing everybody else's stories.

"He has such compassion and humility," said J. K. McKay, who caught Haden's passes at Bishop Amat High in La Puente, Calif., east of Los Angeles, and at U.S.C., where they were coached by McKay's father, John."

[http://www.nytimes.com/2010/08/23/sports/23haden.html?_r=1&#...</a>

</comment></comment><comment><USER4> If you want mortification, try writing for a living. In reality, you're running a small (one and a half person) business supplying IP to large multinational OEMs. But if you say "I'm an author" everyone thinks you spend your days swigging dry martinis by the pool while languidly dictating to your busty secretary -- or that you _want_ them to think that's how you spend your days. The media have a lot to answer for, for turning "author" into a lifestyle rather than a job description.

(I think in future I'll start saying "I run a contracting company in the intellectual property sector". "What kind of intellectual property?" "Stories about space nazis ...")

<comment><USER5> Hmm. So what do you actually swig while languidly dictating to your busty secretary, if not dry martinis?

Thanks for the hours of entertainment I derived from reading the Laundry novels, by the way. I especially loved The Jennifer Morgue. Accelerando was awesome too. More!

</comment></comment><comment><USER6> What's up with saying "I'm a programmer"? Assuming you are, of course. Being a co-founder is not a profession. I think when a person asks this question, you should answer in the most simple and pragmatic way. Because, in my opinion:

1\. Trying to be unconventional when answering this question is wrong. Most of the times you seem like a jerk.

2\. Saying you're a co-founder in any way before saying what you actually do (skill) is wrong. It only serves the purpose of informing others how independent and successful you want to seem.

<comment><USER7> I've tried it a couple of times and it didn't work out, people replay with the same question: "Yeah but what do you really do?"

To this seconds question I've tried to answer with "I make applications to help some companies" but they never understood what an application really is...

<comment><USER6> Really? In my experience they either lose interest, because in their mind I'm a computer guy who does things that seem boring to them or they get interested and we have a discussion.

</comment></comment></comment><comment><USER8> "I run a couple websites." - This usually results in questions about the website subject matter, which is much more fun to answer than questions about revenue and what my actual job is.

</comment><comment><USER9> "I own a software company" is the best I've come up with. Any answer you give people is going to leave a lot of room for interpretation and how I answer that question depends on context and who is asking, but if it's a random person at a bar, you can't beat "I own a software company."

</comment><comment><USER10> "I co-run a company. We break into banks."

I agree; the words "startup", "entrepreneur", and "small business" are all freighted. Just say "company".

<comment><AUTHOR> "I co-run a company. We break into banks."

I am so going to start using that.

</comment></comment><comment><USER11> 'I run a business which does server and application monitoring for IT firms.'

Maybe it's just me, but when a person asks what you do, and you say 'i'm a programmer/entrepreneur/doctor/whatever', you're only scratching the surface.

You're doctor? what type? You're an engineer? What sort of stuff do you do.

Would you ever meet an actor and not say 'would I have seen you in anything'?

If the person didn't care what you did, then hopefully they wouldn't have asked.

Give them the full answer, it's isn't like you're tweeting it!

At the same time, don't get into what sorts of hosted applications or stuff like that, just figure out what people are going to understand.

<comment><USER12> _If the person didn't care what you did, then hopefully they wouldn't have asked._

You wish! It's like asking "how are you?" Most people don't care; they're just being polite/making conversation.

Give the stock answer in an inviting tone. If they want more information they'll ask for it.

</comment></comment><comment><USER13> I make web sites that make money. I'm trying to make them bigger so they make more money.

That's good enough.

Even people who understand nothing about the web understand that some people make money off it, so... It's a good enough answer.

</comment><comment><USER14> As an IT Director managing multiple people/offices over many states, and a former senior engineer at a fortune 500 I would say:

"I'm a Computer guy"

No one actually cares about our jobs/titles. If you were interested in that, go be firefighter. There are vanishingly few people that even know there's a difference between sysadmin and development.

<comment><USER15> Computer Guy generally translates to "this cat could fix my computer sometime." I'm a Network Administrator by day and I don't do any end user desktop support. Telling them I'm a Computer Guy automatically sets me up for "Hey, so I had this problem on my computer..."

I just tell them that I'm a Network Administrator and when the inevitable question comes up, I tell them that I manage the equipment that computers use to talk to each other. If it goes beyond that, I simply tell them it's kind of like telecomm and try to move the conversation to something they're interested in. I rarely tell them that I do software development on the side, that just furthers the confusion.

I remember an article a while back (I wish I could find the link) about a software developer that had the same problem. "You write programs? Oh, great, can you get rid of these viruses?"

<comment><USER5> I get that too, but what I've come to realize is that mostly people aren't really asking you to fix their computers. They just have insufficient information for proceeding with the conversation in a knowledgeable way, so they try anyway with a starting point you can both understand.

The people who ask these questions are usually trying to be _friendly_ , is what I'm trying to say.

<comment><USER15> I hadn't considered that before. Maybe I won't be such a jerk in future conversations.

</comment></comment></comment></comment><comment><USER16> This summer, I've mostly been saying 'machine learning', 'biological machine learning', 'artificial intelligence', 'programming', or 'artificial brains' depending on the person, the situation and where I want to try to take the conversation. AI and brains sound cool to non-technical people and usually they are curious and it stimulates conversation. Sometimes I tell nontechnical people 'programming' if I want to cut short the conversation about professions (most people will lose interest at the mention of programming) and steer it toward something potentially more interesting. Of course, another way to avoid professions is to not mention one at all and stay that I am a student --- but then I have to go on about what I'm studying. I reserve 'machine learning' mostly for EECS/mathy people who might know what that means.

</comment><comment><USER17> "I build apps for people with big YouTube channels."

I find this is always the best answer, because trying to avoid conversations by saying "I have a startup", only results in the re-asking the "so, what do you do" question, to which I have to provide a real answer.

<comment><USER18> That is because saying "I have a startup" is the same as answering "what do you like to drink?" with "fluids".

</comment></comment><comment><USER19> I've had a lot of problem with this question, myself. In that it's hard to succinctly put what I do, and living in not-SF, people don't really understand tech-web-startup-speak.

I guess in the end I've gotten around to saying some version of "I run some websites". Which, if there are followup questions usually evolves into questions about how you make money on websites. I tried variants of "web developer" and the like but then people think I design websites for other clients. I do very little programming these days so any version with "programming" doesn't seem to work. Never liked the term "blogger" and doesn't really fit what I do.

<comment><USER20> So what _do_ you do?

<comment><USER19> I guess "manage"? some content at times, manage writers, site direction, revenue opportunities (banner ad/affiliate stuff), just finished getting an iPhone App done (I didn't code it, I hired someone) for one of the sites. ask/coordinate programmers to implement new features I want on the site. have a couple of sites in the wings that I'm working on getting off the ground.

</comment></comment></comment><comment><USER21> Why does this seemingly come up so often on entrepreneur blogs? People care about perception from strangers _way_ too much.

There's no silver bullet for this. There's no magical phrase that's going to get people unfamiliar with startups to understand or care about the nuances of your multi-faceted responsibilities in marketing, development, sales and the top-down strategic stuff.

So I just say I'm a dolphin trainer most of the time.

</comment><comment><USER22> For this among other reasons, I tend not to use "what do you do?" as an opening query (though that doesn't help you if someone else does). I prefer something more like, "what kinds of things are you interested in?" For some people it's the same, but I've met plenty of people with boring day jobs and interesting projects, so if I don't already know the person I'd rather let them decide what they find interesting to tell me about themselves.

<comment><USER19> I always liked the question "what's your secret dream job?" as a get to know icebreaker. cause (almost) everyone has one, and most people aren't doing it as their day job.

</comment></comment><comment><USER23> I build crowds. Guaranteed.

<comment><USER24> For those who missed the reference:

<http://www.youtube.com/watch?v=4YBxeDN4tbk>

</comment></comment><comment><USER25> Why don't you just say "I'm running an Internet business"?

</comment><comment><USER26> I use, "I make video games."

These guys should say, "I simplify monitoring web servers."

</comment><comment><USER27> "I tell computers and cell phones what to do"

<comment><USER28> Computers do what you tell them to do, not what you want them to do.

<comment><USER29> And that's why us programmers have jobs. We're professionals at telling computers what to do.

Which reminds me of a good xkcd comic about the question "what do you do?": <http://xkcd.com/722/>

</comment></comment></comment><comment><USER30> "Fine thanks. How do you do?"

Don't have an answer? Hack the question.

<comment><USER31> But be prepared to answer questions about a hearing disorder.

<comment><USER30> "The dinosaur is fine too. Thanks for asking."</comment></comment></comment>


Category Theory for the Sciences - <AUTHOR> http://category-theory.mitpress.mit.edu/ <comment><USER2> This comes up every so often and people argue over the merits of learning category theory or not or how useful or abstract it is. The answer is it is very abstract and you shouldn't learn it expecting great dividends in your day to day work. Like with most mathematics you should learn it because it will change the way you think and solve problems. I definitely don't use calculus in my day to day work but the idea of infinitesimal quantities, continuity, and linear approximations have more than once helped me come up with an approximation to a problem that has made the solution tractable.

If you are expecting to apply something immediately to your work then combinatorics and probability theory are way more relevant and practical for day to day programming work.

<comment><USER3> But category theory has direct application to programming: (ignoring non- termination), types and functions form a category and most of the concepts are directly applicable. Functors/map are of everyday use and other CT results are commonly used. Even JavaScript is getting functional, so CT is getting more relevant and practical everyday

<comment><USER4> I love category theory, but I feel that its penetration of JavaScript or most other languages doesn't (and likely won't) get much farther than monads and functors. Many people who use functional languages don't even know about applicatives, even though monads can be viewed as a specialization them.

If you're thinking about new programming paradigms I think the theory behind CT versions is worth knowing, but if most of your monads are maybes or lists it'll be of little practical value.

<comment><USER5> > _but if most of your monads are maybes or lists it 'll be of little > practical value._

I think even this is maybe too much: if all you use are monads and functors, then it's easy enough to learn monads and functors on their own, without any "real" category theory.

</comment></comment></comment></comment><comment><USER6> Category theory has served mathematicians well, but only because they had a great mass of concrete detail which needed to be abstracted away.

An abstract framework like category theory can actually be harmful where there isn't that much concrete detail to begin with. A personal example I faced was being overwhelmed by category theory jargon when starting to learn Haskell a couple of years back. My confidence returned only when I realized that there was just one category in play with types as the objects and functions as the arrows. The jargon was unnecessary. Today Haskellers discuss so many interesting issues about the language and its implementation which do not fit into the category theoretic framework at all.

<comment><USER7> In mathematics, I would describe category theory as an offshoot of structuralism. The main idea is that instead of starting with some "premodel" of what you want to study ("I want to study geometry on surfaces, so I'm looking at subsets of R^3!") and then taking away structure ("...but what is the preferred center of the universe? I better only look at properties which are invariant under translations..."), you try to identify structure in your problem and then determine the consequences. This is obvious in retrospect. If your models describe reality and everything is built out of sets then is 0 an element of 2?

Category theory provides useful tools for identifying structure. It's not necessarily a good vocabulary to talk about these things. Forcing everything into a first-order mold is typically confusing. On the other hand, there has been a lot of work using category theory to solve real problems. This has resulted in some sophisticated tools and a very "scalable" way of looking at things (e.g. universal properties and adjunctions are everywhere).

Category theory is needlessly complicated. There are many redundant side conditions, and the definitions are ... let's be charitable and call them idiosyncratic. This is just more apparent when you apply catgeory theory to programming languages. In semantics you already have a precise way of writing statements (type theory) and you know that everything you can write down is parametric. This eliminates almost all side conditions on most definitions in category theory. So yes, coming from Haskell, catgeory theory probably looks extremely complicated and not worth the effort to learn it.

However, some of the tools from category theory are as useful to computer science as differentiation is to engineering. There are plenty of questions to which you can calculate the answer using some elementary category theory. What is the dual concept to the reader monad transformer? What is the eta law for sum types? Can this data structure be a monad? If not, can I embed it into a monad (e.g. using codensity)? These are all simple questions, but if you don't know the general strategy for dealing with them it seems like I'm asking you to solve a puzzle instead of asking you to compute 7 * 4.

<comment><USER8> > you know that everything you can write down is parametric. This eliminates > almost all side conditions on most definitions in category theory

That's interesting. Can you give an example of a side condition that parametricity would allow you to avoid?

<comment><USER7> Any function f of type

      f : forall a b. (a -> b) -> F a -> F b

Such that f id = id is automatically a functor (respects composition).

In type theory, every equivalence is automatically natural.

There's a lot more and it's made worse by the fact that most of the side conditions are redundant even in normal category theory. For instance, you can specify an adjunction using two functions F : A -> B and G : B -> A, together with an equivalence phi : forall a b. Hom(F a, b) = Hom(a, G b) such that phi satisfies one additional equation. It follows from this that F, G are functors and that the equivalence is natural. Since a lot of definitions in category theory mention adjunctions you can usually simplify the definitions like this. For example the definition of a Cartesian closed category in most textbooks expands to something like 20 equations, but you can simplify it down to the usual few equations which specify a model of simply typed lambda calculus.

<comment><USER8> > the definition of a Cartesian closed category in most textbooks expands to > something like 20 equations, but you can simplify it down to the usual few > equations which specify a model of simply typed lambda calculus

Has that been written down somewhere convenient? I'd like to have a look.

By the way, I found lots of your comments on your post history also very interesting!

</comment></comment></comment></comment></comment><comment><USER9> Table of contents at [http://category- theory.mitpress.mit.edu/toc.html](http://category- theory.mitpress.mit.edu/toc.html)

</comment><comment><USER10> Does anyone here have any experience using the Ologs proposed in the book for doing knowledge modeling or other things? Some anecdotes, or in lieu of that, opinions of this formulation compared to other knowledge model representations would be interesting.

<comment><USER11> The FQL project uses ologs for data integration. There are many papers and presentations at [http://categoricaldata.net/fql.html](http://categoricaldata.net/fql.html) .

</comment></comment><comment><USER12> So. Just to clear up which math is good for a programmer to learn.

All computer science is divided into Theory A (algorithms and complexity) and Theory B (logic and programming language design). Applications of category theory are part of Theory B. If you're a programmer who wants to have real world impact, you should study tons of Theory A and completely ignore Theory B.

That sounds inflammatory, but it is unfortunately 100% true. All of Theory B combined has less impact than a single hacker using Theory A to write Git or BitTorrent.

<comment><USER13> Sadly, Turing wasn't aware of this at the time -- think of the _real world impact_ he could have had.

<comment><USER12> Turing's work was in algorithms, models of computation, and cryptanalysis. All that is considered part of Theory A, see e.g. [http://blog.computationalcomplexity.org/2003/03/theory- and-t...](http://blog.computationalcomplexity.org/2003/03/theory-and- theory-b.html).

<comment><USER13> Take a minute and reflect on the fact that you're arguing Turing had nothing to do with mathematical logic.

His doctoral advisor was Church, his work based on Gödel, his thesis named _Systems of Logic Based on Ordinals_.

Comments like these show the perils of treating mathematics like a cookbook. It's a very limiting mindset.

<comment><USER12> I'm arguing that Turing's impact on computing (most importantly, defining the Turing machine) didn't have much to do with logic. His work on logic is also important, but I don't think it's useful for a programmer.

</comment></comment></comment></comment></comment><comment><USER14> Just on a formatting note, it would be great to have a static generator that takes markdown input and generates this kind of html book with footnotes and references. Similar to [spec-md]([http://leebyron.com/spec- md/](http://leebyron.com/spec-md/)). Anyone know of interesting projects along those lines?

<comment><USER15> Incidentally, the document here smells very stongly of latex2html or a similar generator.

<comment><USER16> It's not that grotty. It looks more like TeX2page, from the navigation style in particular (like the online SICP and How to Design Programs).

<comment><USER15> I didn't mean to imply grotty at all, and apologise if I'd left that impression. I was just noting that this had the hallmarks of LaTeX to HTML translation.

Also the index.

</comment></comment></comment></comment><comment><USER17> Particularly of note:

        1.3   What is requested from the student

        The only way to learn mathematics is by doing
        exercises. One does not get fit by merely
        looking at a treadmill or become a chef by
        merely reading cookbooks, and one does not
        learn math by watching someone else do it.
        There are about 300 exercises in this book.
        Some of them have solutions in the text,
        others have solutions that can only be
        accessed by professors teaching the class.

        A good student can also make up his own
        exercises or simply play around with the
        material. This book often uses databases as
        an entry to category theory. If one wishes
        to explore categorical database software,
        FQL (functorial query language) is a great
        place to start. It may also be useful in
        solving some of the exercises.[0]

This is not a novel, and you don't learn by just reading things. You need to engage topics like this in hand-to-hand combat, and if you're not willing to do that - give up now. Your knowledge will be superficial, and ultimately useless.

 _Added in edit: To reply to both (currently) comments, you don 't learn how to program by just reading and not doing. You can learn_ about _programming, but you won 't actually be able to program, and your knowledge will be superficial. If that's your objective, just to know_ about _this topic, and others in math, then fine. If you want to be able to_ use _your knowledge in any meaningful way, my comment stands. It 's not enough just to read. You have to engage, and do the work._

[0] [http://category- theory.mitpress.mit.edu/chapter001.html#lev_...](http://category- theory.mitpress.mit.edu/chapter001.html#lev_1-3)

<comment><USER18> " _Some of them have solutions in the text, others have solutions that can only be accessed by professors teaching the class._ "

And this is why I don't usually end up doing the exercises.

<comment><USER17> That's your choice, but in my experience that simply means that you don't end up able to apply the knowledge you think you have acquired by reading about a topic.

That might be fine for you, but it's an inherent limitation in reading about something, rather than actually engaging in it.

I've edited my original comment to make a comparison, and expand on why I say this.

But to take you up on this - some exercises have answers in the text. You could do just those. Other exercises don't have the answers, just like code that you write doesn't already exist. When you write the code you then have the ability to check that it does what it's supposed to do.

The idea of having exercises without answers it to foster the ability to understand when your answers are right. Most of the time it's easy to know if you got the right answers, but it's finding the answer that's the challenge. If you choose not to learn this topic, fine, that's your choice. My comment just says: don't expect to understand the material at anything other than a superficial level if all you do is read _about_ it.

As it says in the quoted section: One does not get fit by merely looking at a treadmill.

</comment></comment></comment><comment><USER19> Category theory , among with algebraic geometry, is one of the most complicated concepts ever developed. Trying to extend it to a wide range of applications seems like overkill. Yes, technically you can use it, but it's like using an archaeology kit to dig a hole when a simple spade will do.

<comment><USER20> > most complicated concepts ever developed

I disagree. Much of Category Theory isn't complicated -- it is just really abstract. So you need to have some concrete knowledge that you are going to apply it to before you start learning it or alternatively "mathematical maturity" (or as I like to call it "the ability to just accept abstract statements and go with it").

As a tool it clarifies and unifies relationships between mathematical concepts and domains like nothing else has.

<comment><USER19> but isn't abstract the same as complicated

<comment><USER19> I know I'm probably going to keep getting down-voted ,but if it's merely abstract and not complicated ,why is category theory considered a difficult course? They don't teach it in undergrad. Is it because it is poorly taught, or students don't like abstractions, or students are ill-prepared, etc. The question I'm digging at is what makes something hard to understand versus easy

<comment><USER21> Maybe because category theory makes sense only after you have sufficient math background? Just like it's easier to make sense of the definition of algebraic structures when you're already familiar with enough of their instances.

An other reason, maybe category theory isn't that useful? I'm just speculating here as I have only basic knowledge of category theory, maybe someone else can enlighten us! While all the maths taught at undergraduate level are extremely useful and pervasive in all areas of science, I'm still unsure about category theory. It's certainly nice and elegant as it allows us to reframe different theories and definitions in a same context, but is it useful for an engineer or an applied mathematician?

<comment><USER22> Category theory is very useful for certain branches of pure mathematics (and it instils a very useful mindset in the mathematician), but much less so for applied mathematics.

Also you're quite right that category theory only really starts to make sense when you have a big stock of examples, like "group theory" and "poset theory" and "topology" and "set theory". Once you've got those examples, you can detect these common threads between them and call them "category theory".

<comment><USER23> On the other hand, at least some of the ideas from the category theory have already made their way into the _practice_ of programming. I am talking about the notion of a monad. It has already become an important tool in functional programming; but even in mostly-imperative programming languages such as C# one can discern important patterns as instances of this concept. Contrary to the common perception, it is not hard to understand. Two basic examples: the optional (a.k.a. nullable) type construct is an example of a monad (called 'Maybe' monad in Haskell); a generic list construct is another one. I think it is enlightening to be able to see a common pattern behind these, seemingly different, things. And this is exactly where the power and the usefulness of the category theory lies - in mathematics or elsewhere.

<comment><USER24> > the optional (a.k.a. nullable) type construct is an example of a monad

Nullable (in the C# sense) does not form a monad, because it does not form a functor, because you cannot write fmap, because it does not nest.</comment></comment></comment></comment></comment></comment></comment></comment>


Mars methane discovery hints at presence of life  - <AUTHOR> http://www.telegraph.co.uk/scienceandtechnology/science/sciencenews/4243321/Mars-methane-discovery-hints-at-presence-of-life.html

<comment><USER2> This source is a little less sensational: [http://www.telegraph.co.uk/scienceandtechnology/science/scie...](http://www.telegraph.co.uk/scienceandtechnology/science/sciencenews/4243321/Mars- methane-discovery-hints-at-presence-of-life.html)

<comment><USER3> Thanks. I swapped it in. That Sun story was ridiculous.

</comment></comment><comment><USER4> So NASA is hinting at life on Mars because they may have discovered the presence of alien farts?

A big win for science.

</comment><comment><USER5> From the article: _"Methane is a product of biology. For methane to be in Mars' atmosphere, there has to be a replenishable source"_.

From <http://en.wikipedia.org/wiki/Lakes_of_Titan> : _The lakes of Titan, a moon of Saturn, are bodies of liquid methane that have been detected by the Cassini space probe, and had been suspected long before._

Why would methane be a product of life on one body and not on another? What is special about Titan?

<comment><USER4> I thought scientists had already been arguing about the existance of life on Titan?

<http://en.wikipedia.org/wiki/Titan_(moon)>

or more specifically

<http://www.newscientist.com/article/dn7716>

<comment><USER6> There is no amount of life that could generate those, forgive me, titanic amounts of methane ;-)

If there is some life there, it must be either very efficient in generating methane or very good at hiding itself ;-)

<comment><USER5> Well, the Earth itself has been transformed by life! Most of the oxygen in the atmosphere comes from billions of years of photosynthesis:

\- [http://en.wikipedia.org/wiki/History_of_Earth#Photosynthesis...](http://en.wikipedia.org/wiki/History_of_Earth#Photosynthesis_and_oxygen)

\- [http://en.wikipedia.org/wiki/Earth%27s_atmosphere#Evolution_...](http://en.wikipedia.org/wiki/Earth%27s_atmosphere#Evolution_of_Earth.27s_Atmosphere)

<comment><USER6> Most probably, a big chunk of the oxygen in the atmosphere comes from last month's photosynthesis - we use it to make CO2 and green stuff converts it back, so, it's always brand-new oxygen we see. But free oxygen indicates a far more active biosphere than lots of methane would and I get your point - methane makers are much lower profile than oxygen makers.

As for Titan being covered with life... We really don't know if the lakes we see from space aren't giant amoebas waiting patiently to eat any humans that land on their beaches and just cleverly pretending to be lakes. ;-)

</comment></comment></comment></comment></comment><comment><USER7> No offence but I'm not even going to read a scientific news story on The Sun :)

</comment><comment><USER8> I fully expect us to find organic life on another planets sooner or later. However, I have my doubts about intelligent life. They could very well be less technologically sophisticated, in which case it might do more harm than good to interact with them (cf. Prime Directive).

<comment><USER9> the odds are in your favor

out of the millions of species on earth, only one is technologically sophisticated. And the others aren't even close to being there.

A crazy long series of luck or intelligent design got us to where we are.

<comment><USER10> Intelligent species tend to kill each other off. Note that we aren't the only hominids. Note what we are doing to the most intelligent of our cousins. Note what we did to the Neanderthals.

</comment></comment></comment><comment><USER11> Seems this comes from either:

1) Volcanoes 2) Methanogen microbes

Since no active volcanoes are around, the article posits the more likely explanation is the microbe one. Not sure the half life on methane. Could this methane be lingering from whenever volcanoes were last active? If so, the more parsimonious explanation is the volcano one. If the half-life of methane is too fast for the methane detected to be left-over methane from ancient volcanoes, and if further we are quite certain there are no active volcanoes there now, then perhaps the most parsimonious explanation for the methane would be methanogens living beneath underground ice. If we can rule out the volcano theory, then the next step would be to send Bruce Willis over there to drill for methane and the methanogens that produced it.

<comment><USER12> Methane doesn't come from volcanoes, or from organic life; it comes from primordial deposits of hydrocarbons from the formation of the planet, released by heating of the deposits or sublimation, or whatnot. If there is life, and it is carbon based, then it subsists on these deposits and the evolved methane might be a waste product. I think the speculation is way off in the stratosphere here. I think further analysis is called for before drawing any conclusions.

Further, there is always this to consider: <http://www.nickbostrom.com/extraterrestrial.pdf></comment></comment>


Firefox Is The New Enemy - <AUTHOR> http://www.hopelesscom.de/2012/2/27/firefox_is_the_new_enemy.html

<comment><USER2> TL;DR - Timo Zimmermann believes that your web browser should fetch all content that you decree on your page, regardless of what site it links to. Apparently evil Firefox is adhering to the Access-Control-Allow-Origin header, which makes more work for him.

As a non-standard user, RequestPolicy will let me block all those tracking pixels too.

</comment><comment><USER3> Yeah, why bother doing your research when posting linkbait is so much more fun…</comment>


Ask HN: XMPP/Jabber self hosting - <AUTHOR> I'd like to host my own XMPP server for OTR communications. I've previously used OTR on top of Google Chat/Hangouts, but I would like to try managing the server myself.<p>Does anyone have experience with a modern XMPP server? I found a list of server software at http://xmpp.org/xmpp-software/servers/, however I'd like to hear some experiences before selecting one. <comment><USER2> I've set up a XMPP server using Prosody after evaluating what are typically regarded as the top 3 implementations (ejabberd, Openfire, and Prosody).

I ended up with a Prosody install primarily for two reasons: 1) Memory consumption/stability 2) Authentication support

The XMPP server hosts up to 700-800 simultaneous users and is located on a machine that provides many other services. With both ejabberd and openfire at this scale, memory consumption was in the several hundred megabyte range and (specifically ejabberd) typically had CPU load of 10-20% of a core.

The prosody setup I ended up using was significantly more lightweight and was simple to set up with server authenticating logins against TLS-enabled LDAP.

In the past, ejabberd was avoided because of serious security issues with the software, but in the past few years it looks like they've gotten their act together somewhat. That said, there's still some recent CVEs, you would want to pay attention to this if deploying ejabberd in any public-facinc infrastructure. As an example, ejabberd used to _require_ storing all passwords in plaintext, claiming that this was "more secure" than the alternatives (ref: [https://www.ejabberd.im/plaintext-passwords- db](https://www.ejabberd.im/plaintext-passwords-db))

<comment><USER3> mongooseIM (an ejabberd fork) is also worth considering.

If you are new to XMPP then I'd recommend Prosody, very approachable and written in Lua if I recall correctly.

</comment></comment><comment><USER4> I've been though jabberd2, ejabberd and has since a couple of years stuck with Prosody.

The main strengths are that it is very simple and lightweight, and uses less resources. The drawbacks is that it is simple and lightweight, so anything more complicated for corporate deployments is something you often have to roll up your sleeves and implement yourself.

I was scared to run it at first because it is written in Lua, which is an unknown language to me. However, I must say it is quite an elegant language. I could get an authentication plugin running after looking at an existing one, and I trusted it enough to run in production internally for a small team (and it turned out to work well for us).

Edit: Be sure to get a real certificate (startssl is fine), if you intend to use s2s. During the past year or two, most public servers has started to care.

<comment><USER5> >During the past year or two, most public servers has started to care.

By general consensus, the XMPP community set May 19, 2014 as a deadline for mandatory encryption:

[https://lwn.net/Articles/599647/](https://lwn.net/Articles/599647/)

</comment></comment><comment><USER6> I use MongooseIM and it is a base platform for building high performance messaging systems leveraging XMPP. It is designed to provide communication for millions of concurrent online users in high growth sectors such as Social Media, Gaming and Telecommunications. It is highly customisable due to its clean and modular design allowing easy integration with pre-existing solutions within a company. MongooseIM is truly innovative for building high volume scalable instant messaging solutions, having features specifically designed for enterprise and business.

It's a port of eJabberd and brings it up to ErlangOTP standards.

[https://www.erlang-solutions.com/products/mongooseim- massive...](https://www.erlang-solutions.com/products/mongooseim-massively- scalable-ejabberd-platform)

</comment><comment><USER7> I've been using Prosody for ~2 years on a couple servers and I can't recommend it highly enough: it's extremely simple, lightweight, and easy to configure. Its author is even on HN. [https://prosody.im/](https://prosody.im/)

I don't recommend ejabberd, unless perhaps you need to cluster. It consumes a lot of memory, which is undesirable on a VPS, and once I managed to get an ejabberd server into such a weird state that it required dropping to its REPL and writing Erlang to fix it (fortunately I have a friend who knows Erlang)!

<comment><USER8> Actually, ever since the string handling was moved from erlang strings to binary strings in ejabberd community edition, ejabberd's memory performance is equal or better than other offerings.

Source: Last company I worked for used XMPP as the data channel to and form our data center and IoT/SCADA devices, I oversaw the project of upgrading from a much older version of ejabberd (which used erlang strings) and the much newer community edition ejabberd(which uses binary strings).

You can also write a custom module and use ejabberd solely for it's XMPP wire protocol and excellent routing features, but immediately export incoming data from the server to other processes in your stack without ejabberd ever even parsing the incoming XML(in this case we wrote a rabbitMQ ejabberd module which allowed ejabberd to interact with our data center flawlessly), which is what we did and at that point, a single XMPP server was able to handle our entire traffic. Although we obviously used a cluster and HA load balancer for scalability and redundancy.

</comment></comment><comment><USER9> I run ejabberd on my personal domain. It was easy to set up and has run without really needing any active management for a few years now.

<comment><USER10> I second this. ejabberd is good for your health. This message should not be construed as a replacement for professional medical advice.

<comment><USER11> Indeed, the zero-administration of ejabberd over many years and a few hosts makes it a sort of peace haven in-between grappling with the many tentacles of the email system...

</comment></comment></comment><comment><USER12> [https://www.hipchat.com/server](https://www.hipchat.com/server) is all of the functionality (persistent searchable rooms, image uploads, mobile clients, video, emoticons (allthethings) etc.) of HipChat.com but behind the firewall (on premise). Disclaimer I'm a dev on the project, though to be fair everybody in the Beta has been happy with it.

<comment><USER13> I never knew hipchat was a jabber system

<comment><USER14> We post publicly our XMPP Protocol for people building 3rd party addons that use XMPP (or clients): [https://ecosystem.atlassian.net/wiki/display/HCDEV/HipChat+X...](https://ecosystem.atlassian.net/wiki/display/HCDEV/HipChat+XMPP+Protocol+Documentation)

</comment></comment></comment><comment><USER8> I have worked pretty extensively with XMPP(specially, ejabberd) in a IoT/SCADA context. Setting up your own ejabberd server is fairly painless. Download ProcessOne's ejabberd community edition, and you should be running in an hour. Don't be afraid of erlang as you don't have to get much exposure to it unless want to.

I also had the pleasure working with ProcessOne via the Business edition ejabberd support, as well as commissioning them to build few custom modules that would have taken my C++(embedded team)/C#(back-end team) centric team much more time and money to build ourselves. So ejabberd is a great way to both get your feet wet(open source community version), then scale up in a big way with professional support(commercially licensed business version) should it be needed.

Note: I am not affiliated with ProcessOne in any way. Just had a pleasant experience working with them, and greatly enjoy their product.

</comment><comment><USER15> I'have been using Tigase for our chat application ([https://play.google.com/store/apps/details?id=com.hyperon.sm...](https://play.google.com/store/apps/details?id=com.hyperon.smsall&hl=en)) the decision of selecting server depends totally upon your requirement. I have used Tigase, Openfire and Jabbered 2 for different projects and have done with lots of customization in them. If sclability is your main requirement my suggestion would be

1- Tigase 2- Jabbered 2 3- Openfire

I have also heard of Ejabbered a lot but that is in erlang ( which i don't like ) My top priority is always Tigase ( the only bad thing about it is you really need to dig into it to manage because there isn't lots of support available in term of blogs tutorials etc) Hope it will help you in choosing your preferred one ....

<comment><USER15> [http://stackoverflow.com/questions/8670234/scaling-tigase- xm...](http://stackoverflow.com/questions/8670234/scaling-tigase-xmpp-server- on-amazon-ec2) is a good link if you want to know why i prefer Tigase ....

<comment><USER16> Tigase supports mongodb now, which removes a single point of failure. Nice feature.

</comment></comment></comment><comment><USER17> I've run ejabberd and openfire. I had issues with ejabberd and load issues. I use openfire now. XMPP is kind of beast. With ejabberd and openfire had to get into the code and debug it myself. If I stick with XMPP I'm can see myself wading hip deep in the code.

I'll have to take a look at prosody.

</comment><comment><USER18> I have also been researching this topic for a while. I was using Google hangouts for a while but lately it seems to be dropping messages. Tried Skype next but it will only keep message history on the cloud for 30 days. Next evaluated Facebook. It works quite well but I want to host my own on a VPS. The top three alternatives seem to be prosody, ejabberd and openfire. I was planning to use ejabberd but the issue I have with any of the XMPP solutions is that they have issues with iOS and you need to find a way to get it to work with the push mechanism otherwise the IM clients will go offline in 10 minutes. Any suggestions for this?

<comment><USER2> There's really no good way around this for iOS - it's really a limitation of how push notifications work vs. how XMPP is designed. You'll find that things like IRC clients have the exact same problems on iOS (similar problem space, similar protocol that expects constant connections).

If you want to do this for real, what you end up doing is implementing your own server backend that receives XMPP messages and then sends out push notifications to a mobile client. Generally a pain in the rear, but do-able. Getting your own iOS developer key & dealing with app store approval for stuff like this is probably the hardest part (for shops that aren't already doing mobile development). There are 3rd-party services that help bridge this gap: examples are [https://pushover.net/](https://pushover.net/) or [https://boxcar.io/](https://boxcar.io/)

If you're okay with a hosted solution and don't really want to deal with development or deploying a XMPP solution yourself, many of our clients have had good success with Slack ([https://slack.com/](https://slack.com/))

</comment></comment><comment><USER19> I'm using current ejabberd which is very, very stable and feature rich. As to clients I've [http://www.psi-plus.com/](http://www.psi-plus.com/) on Ubuntu and [https://github.com/siacs/Conversations](https://github.com/siacs/Conversations) on Android (which can be compiled from source if e.g. you don't have Google Play).

</comment><comment><USER20> I would say you go with MoongooseIM. Its a much optimized fork of ejabberd with some things done in a much nicer way ... It support redis session backend , encrypted password, xmmp over websockets to name a few.

Disclaimer:- I personally work on chat server and personally prefer moongooseim to be one of the best available right now.

</comment><comment><USER21> I've been thinking about hosting my own XMPP server as well. Does anyone have any recommendations on the most cost-effective place to host it? Since it's for a small group of friends I'd imagine it wouldn't need anything too resource intensive. Perhaps something like Linode or DO?

</comment><comment><USER22> A Ruby implementation called Vines [0] [1] might be interesting to try out.

[0] [http://www.getvines.org/](http://www.getvines.org/) [1] [https://github.com/negativecode/vines](https://github.com/negativecode/vines)

</comment><comment><USER23> I'm using Prosody. Supports TLS1.2 and Forward Secrecy.

Check your score on xmpp.net if you haven't already. ;)

</comment><comment><USER24> [http://www.igniterealtime.org/projects/openfire/index.jsp](http://www.igniterealtime.org/projects/openfire/index.jsp)

used it on an old project. written in JAVA, not my favorite, but super easy to use and highly extensible.

</comment><comment><USER25> Depends on what you are looking for in terms of features. If you want to build a global cluster, give ejabberd or its forks a shot. I was running it in the past and it was just running without any problems.

I picked it because of its clustering features and ldap support.

</comment><comment><USER26> And how do you solve the problem of reliably delivering messages over XMPP?

For ex, if I switch from 3G to Wifi on my mobile (or just loose connectivity) the server still thinks I'm online and will send messages over the TCP socket (that hasn't timeouted yet).

</comment><comment><USER27> I run MongooseIM, an ejabberd fork. It works fine. It needed a reboot once, after that been running continuously.

</comment><comment><USER28> OpenFire is _pretty_ stable, but not completely stable. It has never not recovered from a restart though.

</comment><comment><USER29> I just actually hooked up XMPP using converse.js + prosody - it wasnt fun but it works

</comment><comment><USER30> interesting / varied support in here. Prosody seems to be popular. Also in the market for something for small corporate IMing. Anyone ever install prosody on a shared host like Dreamhost?

\--

</comment><comment><USER31> ejabberd is written in Erlang which was a turn off for me. Maybe not for you.

</comment><comment><USER32> prosody has worked well for me, and is relatively easy to set up and configure.

<comment><USER33> same here

</comment></comment><comment><USER34> Ejabberd is a good option.

</comment><comment><USER35> ejabberd. Way better than OpenFire in my opinion.</comment>


Alzheimer's treatment appears to alleviate memory loss in small trial - <AUTHOR> http://www.nature.com/news/alzheimer-s-treatment-appears-to-alleviate-memory-loss-in-small-trial-1.20509 <comment><USER3> For anyone that may be interested, you can currently get a very good amyloid plaque reducing drug over-the-counter. [1] It is generally recognized as safe beyond a mild stimulatory effect, but don't take it while trying to get pregnant or pregnant.

It seems like these types of drugs are best used for prevention rather than a cure, so I've been taking it for a year or so now even though I'm not even 30, and plan to continue for the rest of my life. I've lost quite a few relatives to Alzheimer's/dementia, so it is pretty cheap "insurance" to me, even if it turns out it just makes expensive pee.

1\. [https://examine.com/supplements/centrophenoxine/](https://examine.com/supplements/centrophenoxine/)

<comment><USER4> _Generally recognized as safe_ does not mean it's a good idea to take something for 40+ years. If you did a 3 year in depth study on new, mild smokers (under 4 per day), it would probably look safe.

<comment><USER3> You're right, it could turn out to be a horrible idea. Based on the compounds involved and how they work in the body, I don't think so, but please do your own research as to its safety and efficacy, don't take my word for it.

</comment></comment></comment><comment><USER5> To late for my father I fear, but as long as my father and mother are content... on my advice they take Curcumin regularly [http://news.vanderbilt.edu/2015/01/curcumin%E2%80%99s-abilit...](http://news.vanderbilt.edu/2015/01/curcumin%E2%80%99s-ability- to-fight-alzheimer-studied/)

<comment><USER6> Excellent advice, I read that you need to make sure turmeric is in combination with black pepper (bioperine) or it does not get absorbed.

Another very important preventative (and even sometimes disease-reversing) measure for Alzheimers is teaching your body ketosis by consuming little to no carbs, eating more good natural fat and never ever touching processed ("low- fat") foods. It is believed that Alz. is inability of brain cells to metabolize glucose, but with ketosis they can power themselves with ketone bodies just as well.

An obligatory reference: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2367001/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2367001/)

Curiously, humans may be the only (or one of very few) species _capable_ of ketosis: [http://caloriesproper.com/ketosis-in-an-evolutionary- context...](http://caloriesproper.com/ketosis-in-an-evolutionary-context/)

<comment><USER7> Another notable reference is "Alzheimer's Disease Is Type 3 Diabetes–Evidence Reviewed" [1]:

"We conclude that the term "type 3 diabetes" accurately reflects the fact that AD represents a form of diabetes that selectively involves the brain and has molecular and biochemical features that overlap with both type 1 diabetes mellitus and T2DM."

[1] [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2769828/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC2769828/)

</comment></comment></comment><comment><USER8> TL;DR: this drug seems to clear the amyloid plaques, and it also brings a small cognitive benefit.

If that's correct, it's also a demonstration that removing the plaques doesn't remove the cognitive impairment.

<comment><USER9> It could be that the damage, once caused, is irreversible. I wonder if taking the drug before cognitive damage occurs will prevent it.

<comment><USER10> That's been a question for a while, and comes up every time an anti-amyloid antibody reduces plaques but doesn't affect memory impairment. A number of people believe that we need to work on early detection and to start treatment as soon as possible.

<comment><USER11> Isn't early detection and early treatment the solution to a most problems. e.g. Cancer? We still need solutions for late-stage illnesses.

</comment></comment></comment></comment><comment><USER12> Several similar drugs have had similar early results and then failed in more comprehensive trials. Hopefully this time it'll be different, but I think if you polled people in the industry, most would wager that it won't be.

There is a large phase 3 trial going on now [https://www.clinicaltrials.gov/ct2/show/NCT02477800](https://www.clinicaltrials.gov/ct2/show/NCT02477800) but we won't know the results for several years. They are still recruiting patients, so if you or someone you know has early stage Alzheimer's, it's worth considering.

</comment><comment><USER13> If you have a loved on suffering from the disease, your first inclination, like mine, might be: come on FDA! Hurry up and get this in my hands.

But if you dive deeper you realize that they have not demonstrated cognitive benefits. In other words, it might not do anything. So what, you say, I still want to try it.

Then you look and you see that 40 people (roughly a quarter) had to leave the trial because of fluid build up in their brains, that could cause brain bleeds.

No cognitive benefits and brain bleeds would be a sad outcome.

</comment><comment><USER14> In Nature, behind paywall:

[http://www.nature.com/nature/journal/v537/n7618/full/nature1...](http://www.nature.com/nature/journal/v537/n7618/full/nature19323.html)

Maybe there's free news coverage somewhere on Nature.com

<comment><USER15> On sci-hub, not behind a paywall: [http://sci- hub.cc/10.1038/nature19323](http://sci-hub.cc/10.1038/nature19323)

</comment></comment><comment><USER16> If you are interested in treating and reversing symptoms of Alzheimer's take a look at the following:

Article/Study: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4221920/](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4221920/)

Interventions: [http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4221920/table/T1...](http://www.ncbi.nlm.nih.gov/pmc/articles/PMC4221920/table/T1/)

Presentation by the doctor: [https://www.youtube.com/watch?v=QqQ_X3mD16U](https://www.youtube.com/watch?v=QqQ_X3mD16U)

</comment><comment><USER17> [https://jneuroinflammation.biomedcentral.com/articles/10.118...](https://jneuroinflammation.biomedcentral.com/articles/10.1186/1742-2094-8-90)

and

[https://www.sciencedaily.com/releases/2016/05/160525161351.h...](https://www.sciencedaily.com/releases/2016/05/160525161351.htm)

</comment><comment><USER18> Can anyone up to date on this field tell me if there has there been any scientific studies on trying to rewire the brain using mnemonic techniques for Alzheimer's patients? I have seen some stories on some attempts to do that, but I never could find anything which looked very scientific.

For some context, I read in the book "Peak" by Anders Ericsson (who is credited with the 10000 hour rule) [1] that cab drivers in London who passed the cab exam literally rewired their brains during the process of studying and it could be observed in the brain scans. (But also notes that they unfortunately lost some spatial awareness ability which the average person had)

[1] [https://www.amazon.com/Peak-Secrets-New-Science- Expertise/dp...](https://www.amazon.com/Peak-Secrets-New-Science- Expertise/dp/0544456238)

</comment><comment><USER19> Change this to the nature article, it is much better.

[http://www.nature.com/news/alzheimer-s-treatment-appears- to-...](http://www.nature.com/news/alzheimer-s-treatment-appears-to-alleviate- memory-loss-in-small-trial-1.20509)

Other references:

Publicity materials: [http://www.eurekalert.org/pub_releases/2016-08/uoz- arh083016...](http://www.eurekalert.org/pub_releases/2016-08/uoz- arh083016.php)

Paper (not open access): [http://dx.doi.org/10.1038/nature19323](http://dx.doi.org/10.1038/nature19323)

Alzheimer's disease research is perhaps the largest single theme in the aging research community, with the majority of National Institute on Aging funding going towards Alzheimer's programs. The most advanced of efforts in Alzheimer's research are those that seek to clear the accumulation of amyloid-β in the brain through the use of immunotherapies, enlisting the immune system to break down and remove the unwanted amyloid. To date, however, this has proven to be a road of great expense characterized by disappointment and slow progress, to the point at which it was possible to question whether amyloid was the right target. Other theories and lines of research have begun to prosper due to the lack of tangible human results for anti-amyloid immunotherapies, in particular that neurofibrillary tangles of misfolded tau protein are just as much a target for clearance as is amyloid-β, and that perhaps it is time to focus on the decline of known clearance mechanisms rather than the amyloid itself.

Still, over the past couple of years, one of the latest entries to the class of anti-amyloid immunotherapies has lived up to some of the promise first seen in animal studies of amyloid clearance. It may well be that the light at the end of the tunnel is in sight. In a human trial that has now lasted a year, this new immunotherapy cleared near all detectable amyloid-β from patients, and the patients showed improvement in the sense that their decline appeared to slow significantly. The caveat here is that a year is not long enough to declare a slowing of the condition in certainty given the number of people treated in the trial, 165 individuals. Certainty will arrive given time and more patients. Regardless, simply through the demonstrated clearance of amyloid in human patients this is a big step forward for the field. If this holds up over the next few years of larger trials it should become very clear as to the degree to which amyloid-β is or is not in fact the primary cause of pathology in Alzheimer's disease.

I have long said that the best way to answer these questions of cause and contribution is to remove the mechanism in question and see what happens. As an approach that is much, much faster - and thus more cost-effective - <USER2> trying to infer the answer by analyzing the enormously complex workings of cellular biochemistry. This principle is well demonstrated here in the matter of amyloid, I think, given the past decade of theorizing on the degree to which the harm of Alzheimer's is due to amyloid, tau, or other causes, and the lack of progress on that front from theorizing alone. As soon as a treatment can reliably and safely remove the amyloid from a sizable number of Alzheimer's patients, we will have the answer.

<comment><USER20> Yes, change the link. Independent.co.uk does not inspire confidence in a scientific topic.

<comment><USER21> What's wrong with the Independent? Their scientific reporting is usually on point.

</comment></comment></comment><comment><USER22> Yeah, another small trial that might mean anything... Why is Nature even reporting this?</comment>


Florida Bridge collapse: The moment it fell captured on video as rescuers search - <AUTHOR> http://www.news.com.au/world/north-america/florida-bridge-collapse-the-moment-it-fell-captured-on-video-as-rescuers-search-the-rubble/news-story/7690e4bfdf7fe712ab0f018108e9bac1 <comment><USER2> The way it collapsed and the arrangement of broken spans, it looks like it has very little reinforcment bars in it.</comment>


Parsing Expressions by Recursive Descent (1999) - <AUTHOR> https://www.engr.mun.ca/~theo/Misc/exp_parsing.htm <comment><USER2> This is a great article that I've recommended many times for learning about precedence-climbing, but I found it much more intuitive and concise to derive precedence climbing as the refactoring of a recursive-descent parser in two steps. This is succintly describable as:

1\. Notice how all the functions in an RD parser are almost the same: call the next-higher-level, then loop with that call while the current token is at this level. The topmost level is for consuming a terminal or a parenthesised subexpression. That can easily be turned into one parameterised function and a table lookup for the tokens.

2\. The first set of recursive calls always goes "to the top", so why not call that directly. This is the 'P' function in the article. The second set of recursive calls are nothing more than finding the right level to process the current token, so jump directly to that level by calling the function directly with that level number instead of repeatedly descending via recursive calls until the current level matches the token. With the current token being of level n, the parameterised RD parser calls expr(1) -> expr(2) -> expr(3) -> ... expr(n) when it could just call expr(n).

I think this is such an elegantly simple algorithm that anyone learning computer science should have implemented at least once along with the usual study of recursive data structures. It's also a very good step towards understanding how a compiler works.

</comment><comment><USER3> '''Left recursive grammars, such as G, are unsuitable for recursive-descent parsing because a left-recursive production leads to an infinite recursion. While the parser may be partially correct, it may not terminate.'''

I don't see why a left-recursive solution doesn't terminate. Does anyone have an insight to offer, or an example grammar and text on which a left-recursive production doesn't terminate?

<comment><USER4> > an example grammar and text on which a left-recursive production doesn't > terminate

All grammars with left recursion have this problem. The parser has no lookahead (and even if it did, the required lookahead to avoid this is unboundedly large) -- you can't tell, given your input, whether you should recurse or not.

Here's a pretty simple grammar:

        S -> A
        A -> a
        A -> A B (this is left recursion, a rule for producing A that itself begins with A)
        B -> b

The language matches the same strings as the regular expression (a|ab+), that is, a single a followed by zero or more b's.

So, suppose you're the parser. You begin with the start rule, which tells you to expect an A. For the A, you have two choices: recur via the rule A -> A B, or stop recurring and process a literal a. You see the input "a". How can you know which to do?

Compare the analogous right-recursive grammar, which matches (a|b+a):

        S -> A
        A -> a
        A -> B A
        B -> b

Here, you start out expecting an A. When you see the input "a", you know that the only way to make sense of it is to invoke the rule "A -> a", which is a terminal rule. And when you see the input "b", you know the only thing you can do is invoke the rule "A -> B A", since that is the only rule allowing an A to begin with "b".

edit: replaced regexes involving * with uglier regexes using disjunction and +, since HN doesn't allow asterisks in most normal uses.

<comment><USER5> I've implemented parsing left recursions with a memoized recursive descent parser generator. It requires hints to tell the generator it is left recursion[1] - but even with this inconvenience, I think it's more convenient than having to refactor a left-recursive grammar into a right recursive one and then flipping the precedence back. I'm still finishing building the first useful parser using it, there may still be bugs.

It works by dynamically refactoring the grammar at each recursion. [2] The dynamic refactoring only happens if left recursion is hinted for that rule.

[1] See the `left(..)` call in `prefixexp` that tells the parser generator about the left recursion. [https://github.com/meric/l2l/blob/parser- generator/l2l/lua.l...](https://github.com/meric/l2l/blob/parser- generator/l2l/lua.lua#L261)

[2] [https://github.com/meric/l2l/blob/parser- generator/l2l/gramm...](https://github.com/meric/l2l/blob/parser- generator/l2l/grammar.lua#L514)</comment></comment></comment>