Liblfds, a portable, license-free, lock-free data structure library written in C - <AUTHOR> http://www.liblfds.org/? <comment><USER3> "If however for legal reasons a licence is required, the license of your choice will be granted."

Very well, I want an exclusive license, meaning I'm the only person who can use this software. Also perpetual, of course, so the license never expires. And don't forget to indemnify me. But don't bother indemnifying yourself, so I can sue you if the software doesn't do everything I ever dreamed. And...

(I'm being sarcastic here. My point is that you can't get away with not licensing your free software, or saying the equivalent of "I don't care." It's not like there's a dearth of free licenses to choose from.)

<comment><USER4> I don't know about the specific intentions of the author, but I also refuse to put an explicit license on my code, because I firmly believe that code cannot be owned, sold or licensed anymore than the Pythagorean theorem can. In that sense, I consider the refusal to put a bunch of legalese nonsense on/near my code a form of protest against the current copyright laws. I'm here to write code and I don't want to put a license on my work just to appease some lawyers, as it lends credibility to a system that I reject on principle. Doing it this way only presents a problem for people and companies who subscribe to the view that copyright is indeed a real thing.

<comment><USER5> So, you accept potential legal hassle for you and the users of your software in order to "protest against the current copyright laws"?

 _> I'm here to write code_

Exactly. So why not just add a brief MIT license [1] to your code, painlessly clarifying your legal stance?

[1] [https://en.wikipedia.org/wiki/MIT_License#License_terms](https://en.wikipedia.org/wiki/MIT_License#License_terms)

<comment><USER4> > So, you accept potential legal hassle for you and the users of your software > in order to "protest against the current copyright laws"?

Yes.

> Exactly. So why not just add a brief MIT license [1] to your code, > painlessly clarifying your legal stance?

Because that does not clarify my legal stance at all. My legal stance is that code does/can/should not have a license and that no license is necessary to use any code. I feel like adding a license (even a permissive one) undermines this very idea.

The only people who insist on a license are exactly the people that this form of protest is meant to oppose.

<comment><USER6> >> My legal stance is that code does/can/should not have a license and that no license is necessary to use any code.

Is this an aspirational stance? Because at the moment that's not what the law says (in any country I know of) and simple licenses like the MIT are probably the easiest way to legally say that you're allowing any use the recipient likes.

<comment><USER7> Actually something with strong copyleft semantics might actually be more appropriate than MIT in this case (if we're already willing to legitimize the copyright system by having a license, which is necessary).

If the argument is that everyone should be free to use whatever code however they want, then MIT lets delivers on the "however", but not the "whatever". GPL slightly limits the "however", but delivers on some of the "whatever" due to its viral nature.

</comment></comment></comment></comment></comment></comment><comment><USER8> The first two questions I want to know when I see a lock-free library:

        - how does it handle the ABA problem?
        - how does it handle the safe memory reclamation problem?

The answers to these questions were not easy to find for this library.

It appears that it solves the ABA problem by requiring DCAS (double-compare- and-swap). This rules out some platforms:

"Note that the Alpha, IA64, MIPS, PowerPC and SPARC architectures do not provide contigious double-word compare-and-swap and as such, liblfds cannot be ported to those architectures." \--[http://liblfds.org/documentation/mediawiki/index.php?title=r...](http://liblfds.org/documentation/mediawiki/index.php?title=r6.1.1:Porting_Guide_\(lfds\)#Detailed_Platform_Requirements)

An earlier release had a note that the library could theoretically be ported to an architecture supporting LL/SC instead (load-linked/store-conditional), but this note seems to have been removed in later versions:

"Currently, liblfds has been ported only to platforms which provide a contigious double-word compare-and-swap (x86, x64 and ARM). It is entirely possible to port to a platform which instead provides load-link/conditional- store where non-load-linked loads can be performed inside the LL/SC pair (this is how ABA is solved using single word LL/SC) but this has not yet been done and it is not reasonable to ask a third party to undertake such a port until I've done it and documented it." \--[http://liblfds.org/documentation/mediawiki/index.php?title=r...](http://liblfds.org/documentation/mediawiki/index.php?title=r6:Porting_Guide#Detailed_Platform_Requirements)

I could not readily find an answer to the question of how safe memory reclamation is handled. When elements are removed they are placed on a freelist, but there's no indication that the freelist is protected from prematurely deleting things at all. Perhaps the library is using DCAS somehow to ensure that deleted nodes are never dereferenced.

<comment> ah- While reading the rather hilarious blog of his, I stumbled upon this possible explanation why that sentence is gone:

 _I 'm going to ditch LL/SC implementations, in part because they're just too unreliable and in part because they prevent the library from being able to simply offer the caller a choice - "garbage collection or not?" which in turn removes a TON of stuff which otherwise has to be explained to the end user._

[http://www.liblfds.org/blog/index.php?entry=Quick- update](http://www.liblfds.org/blog/index.php?entry=Quick-update)

</comment></comment><comment> lfds-admin Hej. I am the author. I understand there are a range of simple and well understood licenses, such as the MIT license, which can be used. However, this implies the I agree with and abide by the notion of licensing as it exists today. This is not quite the case. I think property rights are correct, but I think freedom (all contracts must be voluntary and well-informed, except in self-defence) is correct, and so the situation as it stands, where other people decide the law regarding licensing _and we have no choice but to adhere to it_ , this is unethical.

Be clear here - it is not so much the _purpose_ of licensing which I disagree with (for it fairly closely implements property rights, which I profoundly agree with) but rather the method of implementation - there is a single set of law, decided by others, and we have to obey that law. This violates my idea of freedom.

So with regard to the licensing text on the library, I am attempting to meet the legal needs of users by giving them a carte blanche; they can _know_ their (reasonable, sane) licensing needs will be met, and this I hope simply removes the issue as far as they are concerned, while honouring my ethical views.

<comment><USER9> It's sort of like not to check the values of parameters passed to a function, expecting than only reasonable, sane values will be provided, and no one will try to exploit the function.

This may be a fine assumption for a private function. But for a public interface, be it a function or a license, you have to program defensively.

</comment></comment><comment><USER10> Why choose this over Concurrency Kit ([http://concurrencykit.org/](http://concurrencykit.org/))?

<comment><USER11> +1. Concurrencykit is awesome and really well-maintained.

<comment><USER12> Both look good. See if we can support them in biicode.

</comment></comment></comment><comment><USER13> If it's distributed without a license, it's illegal to redistribute the software, or to distribute modified copies. You can only distribute patch kits which can be applied to the original codebase, which everyone must acquire from the original developers.

[http://cr.yp.to/softwarelaw.html](http://cr.yp.to/softwarelaw.html)

> Once you've legally downloaded a program, you can compile it. You can run > it. You can modify it. You can distribute your patches for other people to > use.

... and that's it.

<comment><USER13> I read the page:

> You are free to use this software in any way, for any purpose.

This is a license. It can't possibly be anything else. It's a simple, permissive license, but it's a license. Them claiming it isn't a license is nonsense.

<comment><USER14> Is public domain a _license_ , or is it no license?

I'm wondering the same thing.

<comment><USER13> > Is public domain a license, or is it no license?

Public domain means nobody owns the copyright to that work. Anyone can use it for any purpose whatsoever, because there's nobody to tell them they can't.

So, no, it's not a license. It's putting something in a category where a license wouldn't even make sense.

</comment></comment></comment></comment><comment> lfds-admin To answer various questions people have asked and to make one or two notes of my own;

1\. The current version of the library contains a profound design flaw - <USER2> allocates memory. This is not viable in any way. The next release (which is very close to completion, but has been deferred for the last month due to a crisis project at work) does not. Regarding ConcurrencyKit, it is an excellent project, and I know Samy (I was involved in him getting his last job); he is an excellent programmer. He said to me about four years ago I needed to make a new release :-)

2\. Regarding ABA and memory reclaimation. There is a comment noting that it is hard to find this information in the docs. I apologise. It is indeed not particularly explained. The docs were written with a view to a non-lock-free informed user wishing to use the API, so technical information regarding the internal implementation is lacking. In the current release ABA is resolved by the use of DCAS (limiting the library to ARM and Intel), and there is no memory reclaimation. In the next release, memory reclaimation has been implemented (removing the limit of ARM and Intel). I also implemented on ARM LL/SC versions of the algorithms, but these have been removed, because it's too hard to know which platforms they will or will not work on. ARM is still supported of course, but by using LL/SC to emulate CAS.

3\. The blog, ah, yes. It's where I let off steam in the heat of frustration, which is off course not always pleasent - however, it's nice to vent. I am thinking of getting rid of it though, because it's not very professional.

4\. The reason for a new github repo on each release, and the naming strategy, is to permit the concurrent use of multiple releases of the library. By allowing a new release to be used in parallel with old releases, existing code does not have to be modified. This minimizes work and risk. For minor releases and bug releases, where APIs do not change, a global search and replace will permit a full change to the new version.

5\. Regarding frames. The site uses a number of third-party applications, such as a forum and a blog. These all emit HTML which assumes they are generating the whole page - they have a <HTML> tag in their output. Their output then has to exist in a frame. If I capture it and send it to a DIV, the DIV renders incorrectly.

Finally, please note the forum (which is fairly new) needs to be upgraded to reduce spam attacks (I've been too busy to do so). Currently I see hundreds of attempts each day, by robots, to generate accounts and so it is impractical to continually scan the lists of requests to find any real requests. The forum does now offer a captch for this, and as soon as I get time (one or two weeks) I will upgrade to this.

<comment><USER15> > The reason for a new github repo on each release, and the naming strategy, > is to permit the concurrent use of multiple releases of the library. By > allowing a new release to be used in parallel with old releases, existing > code does not have to be modified. This minimizes work and risk. For minor > releases and bug releases, where APIs do not change, a global search and > replace will permit a full change to the new version.

You can just have multiple branches in a single github repo. :) That is what most people do.

<comment><USER16> I wanted to ask you if tags on a mian dev branch, wouldn't be enough, but I guess the reason for branches is the ability to port back some changes etc.?

</comment></comment></comment><comment><USER17> I am using this. Has been working well for years in a low latency environment. Great stuff.

</comment><comment><USER15> Looks interesting.

Funny thing I sort of judge projects now by being on github and looking at issues and PRs to see quality and health of the project -- I really would like to get a sense of the number of bugs and the issues people are running into while using it.

Thus an independently hosted project like this is thus hard to for me to objectively judge.

</comment><comment><USER18> The blog is amusing..

<comment><USER19> It's like the prelude to an early heart attack.

</comment></comment><comment><USER14> Why show off about 7.0 when there is none?

Where is the VCS?

<comment><USER20> Good question. The GitHub account is odd. There appears to be a new repository for each release.

[https://github.com/liblfds?tab=repositories](https://github.com/liblfds?tab=repositories)

<comment><USER14> With all due respect, frames on the website? Creating a new repo for version releases? I would like an explanation from the author.

Many people judge books by their cover - I say let's see the code. But superficial things like that do matter in people's perceptions.

edit: below, frames.

<comment><USER20> I assume you mean frames and not iframes.

</comment></comment></comment></comment><comment><USER21> This guys blog is hilarious~!</comment>


Long, Pointy Shoes in Medieval Fashion - <AUTHOR> https://www.atlasobscura.com/articles/medieval-europeans-pointy-shoes <comment><USER2> Similarly, the pointy shoes still live on in Mexico and Southern USA: [https://en.wikipedia.org/wiki/Mexican_pointy_boots](https://en.wikipedia.org/wiki/Mexican_pointy_boots)

<comment><AUTHOR> The story mentions modern day successors in the form of winklepickers which were apparently a highlight of 1950's/1960's fashion [0][1]. I'm predicting a resurgence in the early 2020's until the TSA declares them a menace to airport security at which point they fall out of favour again until the early 2050's.

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

[1] [https://gucinari.co.uk/shoes/boots/the-history-of- winklepick...](https://gucinari.co.uk/shoes/boots/the-history-of- winklepickers/)

<comment><USER3> I had read the term "winklepicker" a few times in the past, with no photo or description, and just assumed it was the snappy British equivalent of the American "clamdigger" \-- a sort of short pants you'd wear collecting mollusks.

A classic example of "what you know that just ain't so."

</comment></comment></comment><comment><USER4> A restored pair that illustrates the appeal -

[https://collections.mfa.org/objects/122170](https://collections.mfa.org/objects/122170)

</comment><comment><USER5> The pointy shoes are a shibboleth. They identify a group not despite their impracticality but because of it. Another example is the belief in miracles, the more unlikely the better, because it is the absurdity of the belief that distinguishes you from unbelievers.

There are oodles of such shibboleths in modern times, particularly in politics. Just think of any political proposition that is absurd on its face and more absurd on reflection. If it's still widely supported by a particular group that may well be because of its group-identifying absurdity rather than despite it.

But it is often not a scam of any kind, but sincerely accepted by adherents. This kind of cognitive flexibility goes a long way toward explaining modern politics and not so modern religions. I suspect pointy shoes may have been the same, with their wearer's convinced of their inherent value.

<comment><USER6> > not despite their impracticality but because of it

This isn't part of the definition of a shibboleth, as I understand it. A shibboleth is simply a marker of group identity (the original case was the speaker's accent when pronouncing the word 'shibboleth').

You seem to be referring to something more analogous to peacock feathers, where hewing to some practice in spite of its impracticality signals the depth of one's commitment.

<comment><USER5> OK, but it's a better marker of group identity the more peculiar it is to that group. So absurdity or impracticality are common characteristics of effective shibboleths because they make the marker a better discriminator with fewer false positives.

</comment></comment></comment><comment><USER7> Hmm, wasn't there a James Bond where there was a stiletto-like knife hidden inside a shoe?

Also, apparently the trend of the pointy shoe came back [1]. Most recently in Mexico.

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

<comment><USER8> It was Rosa Klebb in From Russia with Love.

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

<comment><USER9> Played by none other than Lotte Lenya, famous singer of the 30s and 40s.

</comment></comment></comment><comment><USER10> I did not bother reading the article, but the title made me think of signaling. "I can afford them, and I don't even need to work for that so I don't care how impractical they are".

[http://www.washingtonpost.com/wp- srv/style/feed/a41653-1999d...](http://www.washingtonpost.com/wp- srv/style/feed/a41653-1999dec28.htm)

"Elegant dress serves its purpose of elegance not only in that it is expensive, but also because it is the insignia of leisure," Thorsten Veblen wrote in his classic "The Theory of the Leisure Class" (1899). "It not only shows that the wearer is able to consume a relatively large value, but it argues at the same time that he consumes without producing."

<comment><USER11> Medieval conspicuous consumption?

My first thought looking at the examples in the article was that the soles of the shoes don't look much thicker than the uppers.

I read an article not too long ago about how the medieval walking style was different than today. The author believed it was more "toe-centered" [0] primarily because of thin-soled shoes.

[0] [http://mentalfloss.com/article/505105/why-people-walked- diff...](http://mentalfloss.com/article/505105/why-people-walked-differently- medieval-times)</comment></comment>


Programming on Parallel Machines: GPU, Multicore, Clusters and More - <AUTHOR> http://heather.cs.ucdavis.edu/parprocbook <comment><USER2> Professor Matloff can add the FGPA+CPU to a session of this book.

A lot of interesting research can be done with FPGA+CPU in parallel computing.

<comment><USER3> I feel I can talk about this! My master's thesis was computation of a neural network using FPGA + CPU. The original SNN code was in C++, my thesis implemented in in OpenCL. This was using the Altera OpenCL to FPGA implementation

Essencially taking the inner-most loop (that computed if a neuron would spike or not) and implementing it as a kernel in OpenCL.

Step 1 was showing increase from single-thread C++ to OpenCL kernel. Increase was 6-10x using a i7-2600k and running on all logical cores. Step 2 was implementing in FPGA. This means pre-shipping data to the FPGA while CPU calculated other things, and beginning computation on the FPGA, and receiving responses back on CPU. Performance was 75x compared to single-thread C++ code.

Important notes that I didn't expect: Bottleneck was memory transfer bandwidth across PCI-E. Power consumption was less on FPGA compared to CPU. Development time was significantly lessened. Altering the design is simple when going from OpenCL > FPGA, compared to Verilog > FPGA

<comment><USER4> Interesting....

What kind tool do you use for OpenGL to FPGA?

<comment><USER5> OpenCL - [https://en.wikipedia.org/wiki/OpenCL](https://en.wikipedia.org/wiki/OpenCL)

</comment></comment></comment></comment><comment><USER6> I took this class IRL with Matloff when I was an undergrad. Highly recommended, great course from a great professor <3

</comment><comment><USER7> This kind of book is always my favorite kind of books. When you talk about the whole topic and devote a chapter to each topic, you are essentially given a broad and firm grasp of what's going on in your field to your readers. These kind of books are perfect introductory books.

Sincerely, Thank you.

</comment><comment><USER8> Thank you so much for this resource! Just the thing I've been studying lately. :)

</comment><comment><USER9> If I read this book, would it be practical to build an Erlang VM targeting GPUs? The Erlang GPU work I've seen provides access via NIFs, but as I understand it, those are going to continue to hit the PCI-E bottleneck. I'm speculating about the feasibility of Erlang putting its "processes" onto the GPU cores, and the data staying on the GPU until it needed to do network, disk, or other OS mediated access.

If the question is ignorant, I plead guilty.

<comment><USER10> GPUs are best under SIMD conditions: single instruction, multiple data. You're talking about running `eval` thousands of times. Each unit of execution is going to have different data, because each process is executing different code (especially when you consider different branches of a conditional statement).

So, it wouldn't work that well :-)

<comment><USER10> I confusingly used 'data' in two senses there... the second was is in the sense of 'code is data'.

</comment></comment></comment><comment><USER11> My only complaint is that the PDF is formatted for print and uses typographic ligatures. To me, HTML-first makes sense for anything intended for widespread digital sharing. Reflowing and screen reading text are minimum _design_ accommodations for a large number of people because of physical or hardware limitations.

Or to put it another way, I think that over the long run, such features are more important than the license because there are non-technical work arounds for the license that don't require duplicated effort.</comment>


On Oliver Sacks and His Obsession with Weightlifting - <AUTHOR> https://lithub.com/on-oliver-sacks-obsession-with-weightlifting/ <comment><USER4> Dinner party conversation comment for you all.

People who are into lifting are more likely to associate the term Weightlifting with the practice of Olympic Weightlifting. This article is about powerlifting.

Olympic lifting focuses on the two dynamic, technique-driven main movements. The clean and jerk, which is a two-part lift and the snatch, which is a single movement lift. Up until 1972, the press was also an olympic movement, but it became too hard to judge and was so removed. There are rigorous criteria in competitions.

Powerlifting, as the article goes onto state is centered around three movements, the squat, the deadlift and the bench press. Just like olympic lifting (or weightlifting), powerlifting has strict criteria for competition lifts. The aim of powerlifting though is to move as much weight as possible.

For people who do not lift, they typically hear the phrase "weightlifting" and think of the practice of bodybuilding which is concerned with hypertrophy of muscle groups to build a balanced and awe-inducing physique.

Context: I like to dabble in weightlifting as a fun pursuit and held a very minor title for a short time period. It was a hollow victory, as due to my only competitor weighing in 0.4kg too light, I ended up as the only person in my age/weight category. I won because I made all my lifts. I was competing against myself.

<comment><USER5> Do I really need to squeeze my shoulder blades together and pull my shoulders down during bench? It feels SO unnatural..but otherwise my shoulders hurt.

<comment><USER6> You don't _need_ to. But it will allow you to press more weight with less risk of injury. It only feels unnatural because you're used to just lying flat on the bench with a relaxed back - doing _that_ now feels "unnatural" to me.

Try this: walk over to a nearby wall and "try" to push it over. That is, put yourself into the position that feels like you have the best brace and power to transfer force into the wall, and actually do it. Notice where your hands, elbows and shoulder blades end up. That's basically the same position as a good powerlifting bench.

<comment><USER7> What about back arch? I just cannot arch as much as some people seem to without it really feeling painful.

Perhaps coincidentally, my bench is considerably weaker than my other 2 lifts.

<comment><USER8> Improving your squat and deadlift will make your back more flexible.

<comment><USER7> 335 squat, 440 deadlift, 215 bench... I feel my deadlift and squat are good. Squat a bit weak but it's progressing. I've been at 215-235 bench for years.

</comment></comment></comment></comment></comment></comment><comment><USER9> Ancient ideas:

"No citizen has a right to be an amateur in the matter of physical training…what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable." - <USER2>

"In order for man to succeed in life, God provided him with two means, education and physical activity. Not separately, one for the soul and the other for the body, but for the two together. With these two means, man can attain perfection." - <USER3>

<comment><USER10> I don't mean to be a killjoy but both these quotes are obviously fake for anyone familiar with Plato. (The concept of god was not used like this in Ancient Greece and Socrates didn't talk like that.)

<comment><USER11> They're not fake, just mistranslated/corrupted.

Mistranslated/corrupted:

"No citizen has a right to be an amateur in the matter of physical training…what a disgrace it is for a man to grow old without ever seeing the beauty and strength of which his body is capable."

Closest quote:

"Besides, it is a disgrace to grow old through sheer carelessness before seeing what manner of man you may become by developing your bodily strength and beauty to their highest limit." \- Xen. Mem. 3.12

Mistranslated/corrupted:

"In order for man to succeed in life, God provided him with two means, education and physical activity. Not separately, one for the soul and the other for the body, but for the two together. With these two means, man can attain perfection."

Closest quote:

"For these two, then, it seems there are two arts which I would say some god gave to mankind, music and gymnastics for the service of the high-spirited principle and the love of knowledge in them—not for the soul and the body except incidentally, but for the harmonious adjustment of these two principles." \- Plat. Rep. 3.411e

</comment></comment></comment><comment><USER12> A majority of modern day office workers would really benefit from learning the deadlift. Sitting for hundreds of hours a month, mixed with the standard American diet is really bad for your health. The deadlift is a fantastic compound movement that targets so many areas weakend by sitting, it also incorporates a hip hinge which is a quite natural movement.

<comment><USER13> It would cause a lot of serious muscle injuries, that's for sure.

<comment><USER14> Weightlifting, in general, is a pretty safe sport. It has a way lower injury rate per hour spent than soccer or running. The deadlift, specifically, is a very easy lift to learn how to perform. And if you perform it properly and only add 5lbs to your max from workout to workout, you'd have a pretty difficult time injuring yourself.

</comment></comment></comment><comment><USER15> I'm surprised to see no mention of Sacks' mental state at the time. The gloss seems a little too upbeat.

He was clearly unhappy in his late 20s and early 30s. Despondent at Oxford, he spent a summer in Israel working on a Kibbutz. After finishing his medical degree, he travelled across Canada and tried to joint the Canadian Air Force as a pilot. When he began working in San Francisco, he was drawn to obsessive weightlifting. He also began to regularly consume copious amounts of hallucinogenic drugs, and briefly joined Hell's Angels.

Sacks says that things only fell into place when he began writing.

<comment><USER16> Also not mentioned: He was a gay man, which he never seemingly really came to terms with after coming out to his father at 18 and then being unwillingly outed to his mother who declared him an "abomination", and it clearly fucked him up. He remained celibate for decades and never directly addressed the issue until his memoir written/released when he had terminal cancer. It's hard not to think of his interest in weightlifting as related to his internal conflicts over gayness and masculinity.

[https://www.washingtonpost.com/news/morning- mix/wp/2015/08/3...](https://www.washingtonpost.com/news/morning- mix/wp/2015/08/31/the-tragic-story-of-oliver-sackss-celibacy-and- homosexuality/?utm_term=.2258d109e9d8)

And not mentioned: He also had some serious lasting physical problems from weightlifting, as did other of his competitive weightlifting friends:

[https://medium.com/the-polymath-project/oliver-sacks-on- how-...](https://medium.com/the-polymath-project/oliver-sacks-on-how-our- hobbies-can-kill-us-2342f95c08)

I am an avid weightlifter, I think its really great and overall healthy, but the linked article paints a rosy picture of something more complicated for Sacks.

<comment> rv-de Oliver Sachs being mentioned always strikes my attention since having a read a couple of books by him. I was not aware though of his troubled past. Makes him more relatable in some way. Also brings this article into perspective. For all the positives that come with lifting weights (of what ever kind) it is obvious that most of the time it is born out of a desire to compensate a perceived shortcoming.

</comment></comment></comment><comment><USER17> I would add that many people who do brainwork that isn't physically demanding feel the urge to engage in something physically strenuous as well; I certainly feel that way. And the history of people interested in developing the body goes back a long ways; the book _The Temple of Perfection_ is okay on this subject: [https://www.press.uchicago.edu/ucp/books/book/distributed/T/...](https://www.press.uchicago.edu/ucp/books/book/distributed/T/bo20174729.html).

<comment> saiya-jin The old truth is (at least how I heard it maybe 20 years ago) - if you work physically, relax by doing some mental work and vice versa.

<comment> rv-de I suppose we need a new truth then addressing the 90% of the adult population who neither work physically nor mentally (to any significant degree). How are they supposed to cope?

</comment></comment></comment><comment><USER18> I wish they would change the title of the article to powerlifting, not weightlifting. I blame the sub-editor of the website. It's correct in the article text.

Anyway, here is a pic of Oliver Sacks squatting 600lbs/272kg: [https://cdn- images-1.medium.com/max/1200/0*3-yWU2in-5YvucmG....](https://cdn- images-1.medium.com/max/1200/0*3-yWU2in-5YvucmG.jpg)

Truly a renaissance man.

<comment><USER19> Man that bar is really bending! Any bar at a competition today would be barely flexing.

<comment><USER20> Dating myself with this one, but

"if the bar ain't bending, you're just pretending"

:-)

</comment></comment></comment><comment><USER21> I had associated Oliver Sacks with swimming based upon this New Yorker article : [https://www.newyorker.com/books/page-turner/swimming-with- ol...](https://www.newyorker.com/books/page-turner/swimming-with-oliver-sacks)

</comment><comment><USER22> It's all about training the nervous system. The mind body connection is the whole thing.

<comment><USER23> It's not _all_ about that. It's also about building muscle which is about training over time with appropriate rest and diet and can't really be short circuited without steroids.

<comment><USER22> Perhaps I'm misinformed. Can you tell me what part is not tied to mmu?

<comment><USER6> It's all _tied_ to the nervous system. But given a certain muscle mass, there's a limit to how much weight you can move, even with optimal technique and an optimally trained nervous system. Eventually, you'll need to add more muscle in order to move more weight. Of course, more realistically, beginners will add more muscle over the course of normal training. Intermediate and advanced lifters will need to schedule muscle-building blocks into their training to add muscle.

</comment></comment></comment></comment><comment><USER24> Great article! My only knowledge of Oliver Sacks comes from his appearances on Radio Lab. I've just added _On the Move_ to my wishlist. He seems like an interesting fellow.

If somebody wanted to get into weightlifting, where would they even start?

<comment><USER25> I got very far with Starting Strength: [https://www.startingstrength.com](https://www.startingstrength.com)

<comment><USER26> Mark Rippetoe, the author, is a broken old man as a result of his methods. He is also known as a loudmouth that gets more attention than he deserves in the community. I would not recommend his methods or book. Although his book got popular among amateurs, it has no place in modern powerlifting and is considered antiquated and rife with bad advice.

<comment><USER27> What would you recommend as alternatives?

<comment><USER6> Beginner's Guide to Powerlifting by Chad Wesley Smith: [https://www.jtsstrength.com/product/beginners-guide-to- power...](https://www.jtsstrength.com/product/beginners-guide-to- powerlifting/)

I have not read the book, but Chad is a respected competitor and coach in the community. I have watched the Juggernaut Training YouTube channel for a few years now, and they always have sound advice for both beginner and expert lifters.

</comment></comment></comment></comment></comment><comment><USER28> The benefits of weightlidting are very marginal compared to cardio. There's very little weifhtlifting does anything for your body besides getting stronger. Cardio on the other hand increases cognitive performance, life expectancy, decreases chances of getting dementia and parkinson's.

<comment><USER29> Have you ever done squats or deadlifts? For reps or volume (overall weight moved)? It gets your heart going.

My best 2 mile time (14:11) came after doing a month straight of the Stronglift 5x5 routine. I didn't run once the month before.

A good heavy lift is cardio _and_ strength training.

<comment><USER4> I agree but I think it is worth pointing out the two activities (cardio vs lifting) use different energy pathways (aerobic vs anaerobic). You almost certainly know that, so my comment is aimed at giving other readers some deeper context.

I routinely hit 180bpm deadlifting and squatting.

<comment><USER30> It's also worth pointing out that no energy pathway acts alone. You're always using all of them in _some_ degree, but a particular activity will use one of them over the others. You will strengthen them in conjunction, though what you focus on will improve the most.</comment></comment></comment></comment>


The tapeworm that turned into a tumour - <AUTHOR> http://www.nature.com/news/the-tapeworm-that-turned-into-a-tumour-1.18726 <comment><AUTHOR> This case is _not_ the very recent case from Napa, California (see cbslocal link posted subsequent to this for that story)</comment>


Statistics with Julia [pdf] - <AUTHOR> https://people.smp.uq.edu.au/YoniNazarathy/julia-stats/StatisticsWithJulia.pdf <comment><USER3> I'd really recommend anyone doing mildly numerical / data-ey work in python to give Julia a patient and fair try.

I think the language is really solidly designed, and gives you ridiculously more power AND productivity than python for a whole range of workloads. There are of course issues, but even in the short time I've been following & using the language these are being rapidly addressed. In particular: generally less rich system of libraries (but some Julia libraries are state of the art across all languages, mainly due to easy metaprogramming and multiple dispatch) + generally slow compile times (but this is improving rapidly with caching etc). I would also note that you often don't really need as many "libraries" as you do in python or R, since you can typically just write down the code you want to write, rather than being forced to find a library that wraps a C/C++ implementation like in python/r.

<comment><USER4> >you can typically just write down the code you want to write, rather than being forced to find a library that wraps a C/C++ implementation like in python/r.

I don't think this is really a feature. It's nice that you can write more performant code in Julia directly and don't need to wrap lower level languages, without question, but the lack of libraries or library features is not a good thing. It's always better to use a general purpose library that's been battle tested than to write your own numerical mathematics code (because bugs in numerical code can take a long time to get noticed)

For specialized scientific computing applications, which would normally be written in C/C++, I would absolutely look into using Julia instead (though not sure what the openmp/mpi support is like). But I would also recommend against rolling your own numerical software unless you need to

<comment><USER5> I don't just think it's a feature, I think it's a killer feature.

You are much less likely to reinvent the wheel if you can add your one critical niche feature / bugfix to an existing library. In python, learning C and C build systems and python's C API are gigantic barriers to doing that.

More importantly, if every fast data manipulation needs to be written in C, a few of them can be profitably shared, but you need more than a few of them. Pretty soon you wind up with a giant dumping ground of undiscoverable API bloat. See: pandas.

<comment><USER6> Maybe I don't understand what API bloat is in this context -- can you give some more detail regarding your thoughts on pandas?

<comment><USER5> Here's one of the fifteen API ref sections in pandas:

[https://pandas.pydata.org/pandas- docs/stable/reference/serie...](https://pandas.pydata.org/pandas- docs/stable/reference/series.html)

Even though it's long, it undersells the problem, because many of these methods have nontrivial overload semantics that open up like a fractal when you look in turn at their docs. The link also undersells the problem because this junkheap is evidently so incomplete that people are frequently forced to rely on numpy to extend it.

APIs should make hard things easy, but API gloveboxes like this make easy things hard. Minimal API + Performant Glue >> We do everything for you + You can't ever touch your own data or your perf dies + Good luck reverse engineering _these_ semantics if you've forgotten the context and need to port it.

<comment><USER6> Okay, I think I see your point. The different object methods you are seeing as API calls, and because they are granular and have capacity to do many common and uncommon tasks this is viewed as bloat. Makes sense from that perspective. Thanks.

</comment></comment></comment></comment></comment></comment><comment><USER7> This looks like a good reference for the fundamentals of both statistics and Julia, as claimed. I have a small critique, since the authors asked for suggestions.

The format for the code samples goes like (code chunk —> output/plots —> bullet points explaining the code line-by-line). This creates a bit of a readability issue. The reader will likely follow a pattern like: (Skim past the code chunk to the explanation —> Read first bullet, referencing line X —> Go back to code to find line X, keeping the explanation in mental memory —> Read second bullet point —> ...). In other words, too much switching/scrolling between sections that can be pages apart. Look at the example on pages 185-187 to see what I mean.

I'm not sure what the optimal solution is. Adding comments in the code chunks themselves adds clutter and is probably worse (not to mention creates formatting nightmares). I think my favorite format is two columns, with the code on the left side and the explanations on the right.

Here's what I have in mind (doesn't work on mobile): [https://allennlp.org/tutorials](https://allennlp.org/tutorials). Does anyone know of a solution for formatting something like this?

<comment><USER8> I'm not sure how that allennlp site is doing it, but source is here: [https://github.com/allenai/allennlp/blob/b0ea7ab6be2787495fa...](https://github.com/allenai/allennlp/blob/b0ea7ab6be2787495fa52efd0f603659197c7d76/tutorials/tagger/basic_allennlp.py)

<comment><USER8> Here's what they're doing: [https://github.com/allenai/allennlp/blob/master/tutorials/ta...](https://github.com/allenai/allennlp/blob/master/tutorials/tagger/convert.py)

</comment></comment></comment><comment><USER9> Note that Julia 1.2[1] is on the verge[2] of being released. Also, it is interesting to see the list[3] of GSoC and JSoC (Julia's own Summer of Code). A lot of projects target the ML/AI applications. Personally, I am waiting for proper GNN support[4] in FluxML, but seems not much interest in it.

[1] [https://github.com/JuliaLang/julia/milestone/30](https://github.com/JuliaLang/julia/milestone/30)

[2] [https://discourse.julialang.org/t/julia-v1-2-0-rc2-is-now- av...](https://discourse.julialang.org/t/julia-v1-2-0-rc2-is-now- available/26170)

[3] [https://julialang.org/blog/2019/05/jsoc19](https://julialang.org/blog/2019/05/jsoc19)

[4] [https://github.com/FluxML/Flux.jl/issues/625](https://github.com/FluxML/Flux.jl/issues/625)

</comment><comment><USER10> Julia looked interesting to me, so I tried 1.0 after it came out. I have a oldish laptop (fine for my needs), and every time I tried to do seemingly anything, it spent ~5 minutes recompiling libraries or something. So I've been waiting newer versions that hopefully stop doing that, or for me to buy a better computer.

<comment><USER11> Yes, this is ones of my problems with Julia. It seems to be optimized for long runs and REPL/notebook usage.

Take, for example, a simple program that creates a line plot ([https://docs.juliaplots.org/latest/tutorial/](https://docs.juliaplots.org/latest/tutorial/)):

        using Plots
        x = 1:10
        y = rand(10)
        plot(x, y)

After installing the package, the first run has to precompile(?), and subsequent runs use the package cache. But ~25 s to create a simple plot is incredibly slow and frustrating to work with.

        $ julia --version
        julia version 1.1.1
        $ time julia plot.jl
        julia plot.jl  73.71s user 4.45s system 110% cpu 1:11.04 total
        $ time julia plot.jl
        julia plot.jl  24.41s user 0.39s system 100% cpu 24.633 total
        $ time julia plot.jl
        julia plot.jl  23.38s user 0.36s system 100% cpu 23.519 total

<comment><USER12> The time to second plot will be a few milliseconds, in the same process - <USER2> the same Julia session. So, while the time to first plot is frustrating, it is ok if your interactive session times are longer.

Of course, we continue to work on improving compile times. About half of the time is spent in LLVM compilation, which has actually become slower over time.

<comment><USER6> What prevents the plot compilation from being pre-compiled at install?

</comment></comment></comment></comment><comment><USER13> This is a very good resource. The one thing I would ask is that I would like to see examples of using DifferentialEquations.jl when you get to the section on dynamical systems, especially when doing discrete event simulation and stochastic differential equations. I opened an issue in the repo and we can continue discussing there (I'll help write the code, I want to use this in my own class :P)!

<comment><USER14> I agree it's a wonderful resource. Which is exactly why I disagree with your suggestion. The book is uncommonly clear in how it explains fundamentals and bringing in such a powerful library ends up moving quite a bit away from that. It will no longer be just about the fundamentals of Julia on one hand and on the other, the algorithms will no longer be implementing language invariant. Losing that invariance IMO makes it less of a text on fundamentals.

<comment><USER13> I would say calling an ODE solver is pretty fundamental to a lot of real scientific workflows, but I am pretty biased on that.

<comment><USER15> I do not remember using much calculus other than usign it to pass the college courses. Can you point me to some resources that would teach me how to use calculus(or ODE if that's more interesting) to solve interesting problems?

</comment></comment></comment></comment><comment><USER16> I invite everyone to check out julia. The language is pleasant and gets out of the way. The interop is nuts. To call say numpy fft, you just do

using PyCall

np = pyimport("numpy")

np.fft.fft(rand(ComplexF64, 10))

Thats it. You call it with a julia native array, the result is in a julia native array as well.

Same with cpp

[https://github.com/JuliaInterop/Cxx.jl](https://github.com/JuliaInterop/Cxx.jl)

Or matlab

[https://github.com/JuliaInterop/MATLAB.JL](https://github.com/JuliaInterop/MATLAB.JL)

It's legit magic

<comment><USER17> How does Julia handle typing for interop?

<comment><USER18> If I understand your question correctly, the answer is that there are a fixed number of native types supported by Python and NumPy, all of which correspond naturally to Julia types and are converted bidirectionally by PyCall. Julia and NumPy arrays are memory-compatible and Julia knows how to handle arrays with memory allocated by other systems, so conversion back and forth between Julia arrays and NumPy arrays is zero-copy. Other types like Python dicts are proxied in Julia as special types that Julia knows how to work with as dictionaries (user-defined data types are common in Julia), while general Python objects are just proxied transparently and `obj.method` calls are passed through to the embedded Python runtime. You can even define a function object `f` in Python and call it using `f()` syntax in Julia and vice versa. It's all highly transparent and smooth.

</comment></comment></comment><comment><USER19> Can someone explain how this is more powerful than someone use an Python/R based workflow? E.g., I currently use a combination .ipynb, python scripts, and RStudio and this feels like it covers everything I need for any data science project.

<comment><USER7> I think Julia has a cleaner focus on scientific and mathematical computing than either R or Python (both for performance and understanding). i.e. the language is designed in such a way that corresponds more directly to mathematical notation and ways of thinking. If you've been in a graduate program that's heavily mathematical, where you spend equal time doing pen and paper proofs and hacking together simulations and such (and frantically trying to learn a language like R/MATLAB/Python while staying afloat in your courses), you'll appreciate the advantage of this. To my eyes, Python is too verbose and "computer science-y" and R is too quirky to fulfill this niche (I say this as someone that bleeds RStudio blue, and enjoys using Python+SciPy). I don't think Julia is aimed at garden-variety / enterprise data science workflows. Caveat—I'm not a Julia user currently, so this is sort of a hot take.

The "Ju" in Jupyter is for Julia, so it's designed to be used as an interactive notebook language also. The Juno IDE is modeled after RStudio.

<comment><USER20> > R is too quirky to fulfill this niche

I'd like to offer a counter point or add on to this.

It's quirky enough to have many packages backed by some expert statistician.

I hope Julia get to be successful in this regard too.

<comment><USER7> The way I wrote that comes off as more dismissive than I intended. I think it's quirky in the sense that there is a wide variance in styles of accomplishing things in (base) R, so something that appears perfectly natural to me can look foreign to someone else. I think this is partly the user base and partly the language itself, and of course the two are interdependent. To me, it's a joy to write R code because of it's flexibility and power, but I often have dreaded sharing it with others (especially as a beginner). It's easy to look at someone else's R scripts and think "this is horrifying". By the way, this is referring more to scientific/statistical workflows—for more general purpose data science in R, the Tidyverse (or even just the pipe operator %>% around which the Tidyverse is built) goes a long, long ways towards helping people write expressive but readable code.

By contrast, Python feels a bit too rigid/standardized. Everyone's code looks like it was copy+pasted from a book of truth somewhere. This is good for sharing and engineering, not as good for expressing mathematical ideas.

So whereas R has evolved organically over decades and Python is for everyone (and alternatives like MATLAB or SAS are first and foremost software for industry rather than languages), Julia seems to be thoughtfully purpose-built to be a modern language for numerical/scientific computing. It polishes off the rough edges and blends some of the best features of each language. Again, this is just an impression from someone who already thinks in R but is learning both Python/Julia.

More to your point, maybe Julia is at a stage of development where it's good for both students (for developing computational and mathematical thinking) and experts (for slinging concise but performant code), but not yet the rank-and- file users looking to just get things done.

</comment></comment></comment></comment><comment><AUTHOR> Accompanying code here: [https://github.com/h-Klok/StatsWithJuliaBook](https://github.com/h-Klok/StatsWithJuliaBook)

</comment><comment><USER21> In section "1.2 Setup and Interface" there is a very short description of the REPL and how it can be downloaded from julialang.org, as well as a much longer description of JuliaBox and how Jupyter notebooks can be run from juliabox.com for free.

Although JuliaBox has been provided for free by Julia Computing, there has been discussion that this may not be possible in the future. However, Julia Computing does provide a distribution of Julia, the Juno IDE, and supported packages known as JuliaPro for free.

For new users, would the free JuliaPro distribution be a good alternative to JuliaBox and/or downloading the REPL and kernal from julialang.org?

<comment><USER22> No, I think you should simply download the ordinary version. Jupyter, Juno, etc. are easy enough to install locally. I forget the precise details, but I think JuliaPro comes with certain versions of packages, and it's less confusing just to get the latest of what you need (using the built-in package manager).

JuliaBox (and [https://nextjournal.com/](https://nextjournal.com/)) are cloud services, but if you have a real computer and want to do this for more than a few minutes, just install it. (There's also no need for virtualenv etc.)

</comment></comment><comment><USER23> For people who have more Julia experience -- is this (thinking mainly of chapter 4) representative of how most Julia users do plotting? It looks like a lot of calling out to matplotlib via PyPlot. I know Julia has a ggplot- inspired library called Gadfly.jl, is PyPlot more commonly used?

<comment><USER24> There is not yet a universally-used package for plotting. One recent tool is Makie.jl [1]. Many use Plots.jl [2] as an interface to PyPlot, GR [3], and other backends. I.e. you can change the backend with a single command.

[1] [https://github.com/JuliaPlots/Makie.jl](https://github.com/JuliaPlots/Makie.jl)

[2] [https://github.com/JuliaPlots/Plots.jl](https://github.com/JuliaPlots/Plots.jl)

[3] [https://github.com/jheinen/GR.jl](https://github.com/jheinen/GR.jl)

</comment></comment><comment><USER25> whats the selling point with Julia? why would i use it over something like R?

<comment><USER23> In R, most of the high performance code isn't written in R, it's written in Fortran or C or C++ (R has really good C++ integration via Rcpp). Python has something similar. The value prop of Julia is supposed to be that you have a language flexible enough to do the high-level stuff you'd normally do in R/Python, plus the ability to write high-performance code without having to drop into another language.

I remain skeptical that this solves a lot of real-world problems (I know a lot of users of R/Python who never need to resort to writing their own C/C++ code), but that's the sales pitch.

<comment><USER3> I think if you're just plugging together reasonably "vanilla" components from python / R libraries, and only using vectorised operations, those languages are fine and you can get away with using vectorised libraries wrapping C++.

The moment Julia shines is when your workloads can't be phrased by stringing together the limited set of vectorised verbs that python / r libraries give you: this is anything stateful and loopy like reinforcement learning, systematic trading, monte carlo simulations etc. It's also useful if you really care about performance and are doing "vanilla" computations at a truly large scale. If you want to avoid copying memory (i.e. doing vectorised operations), or want to tightly optimise / fused some numerical operations, it's great.

The other issue with python / r wrapping c++ libraries is that different libraries will generally not play well together (without coming out into python / r space, and doing a lot of copying / allocation). This tends to encourage large monolithic c/++ codebases like numpy and pandas, that are pretty impenetrable and difficult to extend / modify.

<comment><USER22> One more advantage to these libraries being written in Julia is that, if they are almost do what you need but not quite, it's often pretty easy to reach inside and patch the function which needs changing. You already speak the language and don't need to stop the world to do this. The barrier to doing this to (say) numpy is just much higher.

</comment></comment></comment></comment><comment><USER26> Would love to see chapter exercises to test comprehension and reinforce learning objectives.

</comment><comment><USER27> I was going to ask is there any Kindle version of this, then I skimmed over the book, and I don't think it will be readable on a Kindle. And even if it does, the reading experience will definitely be inferior.

<comment><USER28> The book will be published by Springer (at which point the online draft will be removed).

Yoni Nazarathy.

</comment></comment><comment><USER29> Julia is everything python could have been, and much more. I'm stuck with python right now as a lot of people in the data science/ML community are, but it's becoming increasingly viable to use Julia for "real" work. The Python- Julia interop story is pretty strong as well, which allows you to (somewhat) easily convert pandas/pytorch/sklearn code into Julia using Python wrappers. Julia has some unconventional things in it but they are all growing on me:

1\. Indices by default start with 1. This honestly makes a ton of sense and off by one errors are less likely to happen. You have nice symmetry between the length of a collection and the last element, and in general just have to do less "\+ 1" or "\- 1" things in your code.

2\. Native syntax for creation of matrices. Nicer and easier to use than ndarray in Python.

3\. Easy one-line mathematical function definitions: f(x) = 2*x. Also being able to omit the multiplication sign (f(x) = 2x) is super nice and makes things more readable.

4\. Real and powerful macros ala lisp.

5\. Optional static typing. Sometimes when doing data science work static typing can get in your way (more so than for other kinds of programs), but it's useful to use most of the time.

6\. A simple and easy to understand polymorphism system. Might not be structured enough for big programs, but more than suitable for Julia's niche.

Really the only thing I don't like about the language is the begin/end block syntax, but I've mentioned that before on HN and don't need to get into it again.

<comment><USER30> I can't believe I'm jumping into the inevitable 1-based indexing discussion, but I'm surprised to see you say that one-based indexing results in "less "\+ 1" or "\- 1" things in your code". Most arguments I've seen come out to "it's fine" (certainly) or "it's more comfortable for mathematicians" (which I can't speak to).

Besides Dijkstra's classic paper[1] showing why 0-based indexing is superior, in practice I find myself grateful for 0-based indexing in Python because of how slices and things just work out without needing +1/-1.

I'd like to understand. Could you give an example of when 1-based indexing works out better than 0-based?

[1] [http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF](http://www.cs.utexas.edu/users/EWD/ewd08xx/EWD831.PDF)

<comment><USER29> The classic example is getting the last element of an array. With 1-based indexing the length of the array is the index of the last element. It has a nice symmetry to it.

Also I find it elegant that for 1-indexing that the start and end value for slices are both inclusive, instead of the first one being inclusive and the last being exclusive.

Also, isn't it just weird that the index of an element is one less than it's "standard" index? Like if I take the first nth elements of a list, it would stand to reason that the nth element should be the last element, right?

The reason for zero indexing is historical, related to pointer offsets. I don't think anyone chose them to be easier for people. They just made them that way because it maps closer to how contiguous values in arrays are accessed.

Also, with 1-indexing I can multiply numbers by arrays and get reasonable offsets. 3 x 1 is three, so I would get the third element of the list. But with 0-indexing, I have 0 x 3 which gives me the same element, clearly inconsistent.

There are some good reasons for 0-indexing and I have been using it in every language for my entire career. The amount of code I've written in Julia is marginal compared to my 0-indexing experience, so I might be missing something.

One nice this about 0-indexing is that I can slice a list in half with the same midpoint. For example a Python array with 10 elements:

fst, snd = arr[0:5], arr[5:10]

A little nicer than:

fst, snd = arr[1:5], arr[6:10]

Though you could have inclusive slices with 0-indexing, but it would be inconvenient and suffer from the same problem as 1-indexing.

<comment><USER30> > The classic example is getting the last element of an array.

Good point, in Python I don't notice that the last element is arr[len(arr)-1] because Python provides arr[-1]. I think in general your point is that it's natural for the nth element to be arr[n].

> The reason for zero indexing is historical, related to pointer offsets.

There is that, but Dijkstra's paper makes the case from first-principles that the closed, open interval of [0,n) for sequences is the most appropriate.

> with 1-indexing I can multiply numbers by arrays... 3 x 1 is three...

Sorry, I don't understand this. It makes sense that the point I don't understand is probably most-related to why Julia chose its indexing scheme and why Matlab et al. do the same.

> One nice this about 0-indexing is that I can slice a list in half with the > same midpoint.

Yeah, arr[0:index] + arr[index:len(arr)] is the full list. And to your point earlier ("if I take the first nth elements of a list"), len(arr[:n]) == n seems natural.

Edit: I've been trying to formalize why Python's indexing scheme, along with its negative-indexing, is optimal (slight pseudocode):

        l = ['a','b','c']
        n = len(l)
        i = -n
        while i < n:
            print(l[i++])

prints "a b c a b c". That code makes no reference to any bound but 'n', nor any constants (1,0) or offsets, yet it iterates over the list twice through its range (first negative indices then positive).

<comment><USER31> Dijkstra's write-up is full of subjective aesthetic judgements that certain things are ugly. I personally don't find `1:0` for an empty sequence to be ugly, and I do find using `1:1` to refer to an empty sequence and `1:2` to refer to the sequence `{1}` to be ugly. I would encourage everyone to read over his reasoning and see if you agree with his aesthetic judgements.

<comment><USER32> I'm constantly baffled by the way people hold that paper up as some sort of objective proof that 0 based indexing is superior.

<comment><USER33> Zero based indexing objectively has various convenient properties which one- based indexing doesn't.

The value of convenience over inconvenience isn't objectively better, that's all.

Objectively speaking, if I find the least positive residue of some integer modulo M, I get a value from 0 to M-1. If my M-sized array is from 0 to M-1, that is objectively convenient:

      hash_table[hash(string) % table_size]

Objectively speaking, if I have some files in a directory and I give them zero based names like file000, file001, ... then I can objectively refer to the first volume of ten using the single pattern file00?, and the next volume as file01?. If they are numbered from 001, I need file00? file010 to match the first ten. For the next ten, the file01? pattern unfortunately matches file010 so I objectively need some way to exclude it.

Objectively speaking, if I have zero based indices to a 3D array, I can find the address of an element <i, j, k> using the homogeneous Ai + Bj + Ck rather than Ai + Bj + Ck + D, which objectively adds an extra term.

Objectively speaking, the zero-based byte index B can be converted to a four byte word index using B / 4 (truncating division), and within that word, the zero-based byte local offset is B % 4. Objectively speaking, the same conversion from 1-based bytes to 1-based words requires (B-1)/4+1 and (B-1)%4+1, which is objectively more syntax and more nodes in the abstract syntax tree.

There is no reason I should like shorter, simpler, faster; that's a purely subjective aesthetic. After all, a short poem isn't better than a long one; a bacterium isn't better than a rhinoceros; and so on.

Hey, how about those one-based music intervals? C to E is a major third and all that? We have a diatonic scale with _seven_ notes, right? As we ascend, whenever we cycle through seven notes, we have passed ... one more _oct_ ave. And to invert an interval, we subtract from ... why, _nine_ of course! And a fifth stacked on top of a fifth is a major ninth. There is objectively more cruft in 1 based music theory than 0 based. But there is no accounting for people liking it that way, right?

<comment><USER34> "Objectively speaking" there are pros and cons to each system. The largest pro of 0-based indexing is of course that it can correspond to a memory address plus an offset, which is the reason C (and derived languages) use 0-based.

But it is also an objective fact that using 1-based indexing means that the index corresponds to the ordinal numbers, e.g. index 1 is the first element, index 2 is the second element and so on. This _also_ have a number of convenient properties.

For example February is the 2. month, so if you have a list of the names of the months, you would expect month_names[2] to be February. With zero-based you would have to do month_names[month_number - 1]. And if you want to get the month number from the name, you would have to do month_names.index_of(month_name) + 1. Be careful not to switch up the +1 and -1!

As for music theory, a third is called so because it _spans_ three half-notes. It describe the _size_ of a range which is independent of the offset of the indices. By the same token decades are 10 years (not 9) and centuries are 100 years (not 99).

<comment><USER33> Some machine-level implementation convenience is the _smallest_ advantage. Zero based would be better even if it cost more at the machine level. Of course it doesn't cost more because the advantages are relevant at the implementation level also.

> _For example February is the 2. month, so if you have a list of the names of > the months, you would expect month_names[2] to be February._

That's not 1-based indexing being _good_ ; that's _conforming to_ (or reflecting) an externally imposed 1-based system that is _itself_ questionable.

Should the seconds of a minute go from 1 to 60 instead of 0 to 59? Dates and times are full of poorly chosen conventions, including ones that don't match people's intuitions. For instance, many people celebrated the new millennium in January 2000. People also want decades to go from 0 to 9; the "eighties" are years matching the pattern 198?, not 1981 to 1990. Yet the 20th century goes from 1901 to 2000.

In many situations when 1 based numbering is used, it's just symbols in a sequence. It could be replaced by Gray code, greek letters, or Japanese kana in i-ro-ha order.

When the arithmetic properties of the index matter to the point that it's involved in multiplication (not merely successor/predecessor relationship), it is advantageous to make the origin zero.

If month_name[1] must be "January", I'm okay with wasting month_name[0]; that's better than supporting a one-based array (let alone making that default).

> _As for music theory, a third is called so because it spans three half- > notes._

No it doesn't; in that very same music theory, a "major second" interval is also known as "one step" or a "whole step"! A third is "two steps"; that's what it spans. (I don't know what you mean by "half-notes"; I sense confusion.) This nonsense was devised centuries ago by innumerates, just like various aspects of the calendar.

<comment><USER34> But it is not some arbitrary historical accident that months are numbered from 1. It is the same reason the days of the month are numbered from 1. It is how ordinal numbers work!

Neil Armstrong was the 1st man on the moon - not the zero'th. Everywhere you have a sequence of discrete units, they are numbered starting from 1.

The thing with array indices in C is they are not ordinal numbers. They are offsets. Which means you can (at least in theory) do x[-1] to get the element _before_ x. So a C array is not actually an array in the mathematical sense, it is just syntactic sugar for relative offsets in a larger array.

So what makes most sense? It really depends on what you want to achieve.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER35> I find Julia's .> , .==, .*, ./ (dots for element-by-element ufunc)... really ugly. Numpy's design is cleaner and better.

<comment><USER36> Why? When I see the '.' I immediately know it's a broadcasted function (for example * for matrix multiplication vs *. hadamard product), and I get the vectorized version of any function I write for free with no extra boilerplate (and the compiler will even automatically fuse them together if I chain them to avoid wasting allocations). You can even customize the broadcasting and the fusion.

</comment></comment><comment><USER37> Commenting to find later.

<comment><USER38> You can effectively bookmark submissions by using the "favorite" link or just upvoting. The submission will show up in your profile under "favorite submissions" or "upvoted submissions", respectively.

<comment><USER39> In addition, I hear that modern browsers support a ground-breaking functionality called "Bookmarks".

<comment><USER15> I would not rely on browse bookmarks too much. Recently I lost a large amount of bookmarks for google chrome sync overwriting my local copy. The bookmarks.bak file was missing too.</comment></comment></comment></comment>


11 Questions to Ask Your Plastic Surgeon - <AUTHOR> http://visual.ly/11-questions-ask-your-plastic-surgeon <comment><USER2> You know who wrote a surprising book is actually awesome if you are considering plastic surgery? Joan Rivers of all people.

Joan Rivers wrote a book about surgery called Men Are Stupid and They Like Big Boobs and it's fantastic. She is super smart, had a LOT of experience with many varieties of surgery :P , and conveys it all in layman's terms in a refreshing and funny tone. I'm a nurse and I loved it. I recommend it to all of my patients who are thinking about anything from injectables like botox and minor procedures all the way through facelifts, liposuction and rhinoplasties.

[http://www.amazon.com/Men-Stupid-They-Like- Boobs/dp/14165992...](http://www.amazon.com/Men-Stupid-They-Like- Boobs/dp/141659924X)

RIP Joan. Fyi the above book is way more helpful and extensive than this clickbaity listicle.

<comment><AUTHOR> The book looks fine for me :)</comment></comment>


The software company in India doing web developments - <AUTHOR> http://citadel-soft.com <comment><USER2> SPAM - Delete this link.

</comment><comment><AUTHOR> We are doing the website development , E-commerce solutions and customized softwares

<comment><USER3> _'... We are doing the website development ...'_

are you guys serious? I can't read your menu. So what are you posting of interest to startups here? Here's one I find interesting, _"we use the waterfall model"_ ~ <http://citadel-soft.com/howwework.htm>

So you write full specifications for a changing process that leaves wiggle space for min-interpretation? Can you explain how changes through development take place?

<comment><USER4> I wonder what they thought of this conference: <http://www.waterfall2006.com/>

<comment><USER3> i was looking for the event details till I read _'Waterfall 2006 features no concurrent sessions'_ :)</comment></comment></comment></comment>


Peter Thiel: Ban is not religious test - <AUTHOR> http://www.usatoday.com/story/tech/talkingtech/2017/01/28/peter-thiel-joins-tech-execs-refugee-ban/97202584/ <comment><USER2> Obama kills Muslims with drones, even an American kid, without due process. Nobody bats an eye. Trump refuses entry to countries where we already ban encryption exports and block trade. Everybody loses their minds.

<comment><USER3> > Obama kills Muslims with drones, even an American kid, without due process. > Nobody bats an eye.

The second sentence is not grounded in reality, which is ko d of fatal to the entire argument you are trying to build on that premise.

<comment><USER2> Sure it is. Ask anyone you know if they know who Abdulrahman is. You'll get a blank stare.

<comment><USER4> So what's your point?

<comment><USER2> If you get this enraged over temporary travel bans from nations that sponsor terrorism against the US, what are you going to do if Trump starts droning American kids with the precedent Obama set? It's a bit like the boy who cries wolf. Blowing something small out of proportion is stupid, because nobody is going to listen when the big stuff starts happening.

It's not a Muslim ban. People who say that are only burning their own credibility. Indonesia isn't banned. Bangladesh isn't banned.

Libya, Yemen, Iran, Iraq, Sudan, Somalia, and Syria. Somalia is infamous for its pirates, Libya for Benghazi, Iran for its nuclear program, do I even need to continue?

<comment><USER5> Yes. Please explain how a blanket travel ban on entire countries helps national security.

<comment><USER2> After you explain how incorrectly characterizing it as a Muslim ban isn't going to be used as terrorist propaganda. Who's actually hurting nation security here?

<comment><USER5> Characterizing it as a Muslim ban isn't wrong. It's a travel ban that will mainly effect Muslims.

It would be much easier to defend this ban as not targeting Muslims from countries that don't have the political capital to defend themselves if blanket bans like this one actually improved national security. Can you honestly make the claim that it does?

<comment><USER2> There are more people in majority Muslim Indonesia than there are in all seven of the other countries combined. Add in Pakistan and Bangladesh, and you easily have double the number of Muslims. If Trump wanted to ban Muslims, he'd ban Indonesia. Instead, he banned those seven countries because they are known to have connections with terrorists.

If a pipe bursts, temporarily turning off the water main while you figure out how to fix the problem isn't a bad strategy.

<comment><USER5> You're making a No True Scotsman argument by saying that it's not a Muslim ban because Trump didn't ban enough muslims. You're also completely ignoring the fact that Bannon very likely spent some time determining what sort of ban would and wouldn't be defensible. The use of 8 U.S. Code § 1187 wasn't by accident.

Also, your excuse about connections to terrorists needs citations because, from what I've read, these connections don't actually exist.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> Peter Thiel remains an epic and inspirational figure, brave enough to zag when others zig. And become a billionaire by doing this. A real hero to me.

</comment><comment><USER7> Thank you, Peter, for clearing that up. We were all waiting for your rational and level-headed insight to know what to think about these sorts of matters. The language of the EO mentioned religion, but obviously if you think that's not what was meant, that's not what was meant. Now we can all sigh a breath of relief and go about our lives. What would we do without people like Peter?

<comment><USER8> It's not a religion ban. Indonesia has the largest population of Muslims on earth, at 200+ million. Not one of them is banned from America. Only immigrants from countries with direct ties to terrorism are banned, temporarily.

Once gain, it has nothing to do with religion. It's geographical. You can be a Christian in Iraq, and you would be ban too.

</comment></comment><comment><USER9> Come on.

</comment><comment><USER10> Fuck you Peter Thiel. I realized you were a major douche when you supported Trump's madness while simultaneously BECOMING A NEW ZEALAND CITIZEN.

After you guys rob the country blind y'all have a nice escape hatch and just leave the mess y'all made to the rest of us.</comment>


Full Details On Mint's $14 Million Series C Round - <AUTHOR> http://www.techcrunch.com/2009/08/12/full-details-on-mints-14-million-series-c-round/ <comment><USER2> I've been a long time user at yodlee.com which powers the backend of Mint.com and other account aggregators. Yodlee gave up on the idea of trying to monetize the customer information they have. They instead reinvented themselves as the technology provider for all other financial institutions.

I am sure Yodlee.com is a profitable company but I do not think their investors will ever see much return on the 110 million dollars worth of investment since 1999.

If you take away Yodlee powered backend, Mint.com does not have much going on for them other than the subscriber base. If you have a hard time monetizing from the subscribers you have, It's just going to be a long painful ride for everyone involved.

<comment><USER3> Yodlee has dozens more features than Mint does, yet Mint has so many more users. Why is this?

Because personal finance is intimidating, and nobody wants to do it. By having virtually nothing to do in Mint, it lowers the intimidation factor that people have when thinking about managing their money. It's a way to get people in the door, and getting that far has always been the struggle behind personal finance sites.

<comment><USER2> I've made use of Yodlee so much so that over the years, I've told it to anyone within earshot. The most common excuse I get from even the tech savvy programming crowd is "I do not want to have all my account information in one place, it's a single point of failure".

While true, the same holds for all information that we have online that is important to us. But it's a big mental block that both these sites need to overcome. Yodlee kinda shifted that burden by selling software to financial providers whom we already trust by opening accounts.

</comment></comment></comment><comment><USER4> I think mint is having a hard time monetizing. I love their value proposition (i.e. costs BofA $300 to acquire a new mortgage customer, mint charges $150 referral while saving mint's user x from their previous mortgage) but I have never been interested in any kind of offer from Mint. Maybe it's because I am satisfied with my financial accounts or I just rather hear a referral on a great new card from a friend. Has anyone ever taken up mint on their offer? Or even clicked through?

I'd like to see Mint leverage on it's user data but since it hasn't yet I doubt it is as simple as turn on AdSense and watch the money pile up. Which leads me to wonder when will they start leveraging it and how?

<comment><USER5> We (RescueTime, YC08) have a lot in common with Mint.

Having experimented with it a fair bit, I can safely say that if it's not a content site with CRAP-TONS of page views, it's really hard to make PPC ads work. Stuff like Gmail is not a big win in terms of CTR because users quickly learn to ignore the ads-- and neither is Mint or RescueTime (our baby). Mint can play the leadgen game (sending people to different banks) but bank changes and new mortgages are rare decisions and I'd imagine that Mint users often ignore the lead gen links and focus on their own content.

I also imagine that they have a similar problem that we do-- giving people data visualization isn't inherently sticky and people drift away from data like this. It gets boring. And because it's self-improvement/awareness focused, it's like a gym that doesn't have a membership fee and has no cancellation cost-- few people are disciplined enough to stick with it.

On the data asset front, we have the same type of asset. But it only really has value (beyond linkbait/PR) if it's a representative population. I'd wager Mint's userbase decidedly doesn't NOT represent a cross-section of America.

I think Mint has a lot of promise, but I think they have some tough problems to solve. And by taking $14m (presumably on a $50m valuation), they've just signed up for a very very long road.

<comment><USER6> I'm curious: Where did the $50MM pre-money valuation number come from?

<comment><USER5> Oh, I was guessing (and had post-money valuation in my head FWIW). No clue, really!

</comment></comment></comment></comment><comment><USER7> Hope they spend some of it on supporting Canada

<comment><USER8> TD Bank actually works with Mint.com (then again TD is also in America)</comment></comment>


Show HN: A camera made not to disturb in concert. - <AUTHOR> https://itunes.apple.com/app/kimd/id850479896?mt=8

<comment><AUTHOR> Hi, This is a side project I've been working on with friends during our spare time.

As concertgoers, we were annoyed by all the lights and flashes created by smartphones during concerts so we made a little app to try to make concert halls a better place.

Our website : www.kimd.cc

Hint: I'm a designer ;)

<comment><USER2> This is a great idea and I just downloaded it. Actually I will use it when I want to take stealthy pictures which I do frequently (not wanting the display to show).

However under ios6, after download, it isn't working. Opens up the splash screen then it just quits.</comment></comment>


With 850K Users In 2 Months, Circle Of Moms Comes Out Of Nowhere - <AUTHOR> http://www.techcrunch.com/2008/12/04/with-850k-users-in-2-months-circle-of-moms-comes-out-of-nowhere/ <comment><USER2> I don't think I've ever heard of such growth. What new monster of virality did they cook up?

<comment><USER3> Facebook apps. But I doubt they'll be as effective with facebook's relatively new layout.

The TC commenters (yeah, I know) are calling bullshit on the growth numbers.

<comment><USER2> Oh, is it 850k FB app users? I thought they meant actual users of their site.

<comment><USER3> Should have clarified: according to them it's actual site users, but their FB apps are what drove the growth.

I can't believe I'm writing this, but I tend to agree with the sentiment reflected in the TC comments: something isn't right.

How can a site with so many users be dead everywhere else?

<http://www.quarkbase.com/show/circleofmoms.com></comment></comment></comment></comment>


Zuckerberg defends political ads that will be 0.5% of 2020 revenue - <AUTHOR> https://techcrunch.com/2019/10/30/zuckerberg-political-ads/ <comment><USER2> From the article:

> Update: It wasn't clear if issue ads and PAC ads were counted in Facebook's > 0.5% figure, but now the company says that number is just for ads run > directly by politicians.]

I'm more curious what % of Facebook's ad revenue was from political ads for each of the last few years. I believe Zuckerberg stated during his most recent congressional testimony that it was a single-digit percentage of total ad revenue, but I could be misremembering.

<comment><USER3> I am also curious how much political advertising takes place on facebook, outside facebook's ad campaigns - i.e.: viral posts. I am more worried about those kinds of "ads", as those are more difficult to track.

</comment></comment><comment><USER4> Is it really about the 0.5% of revenue or is it about the political influence? As one of the larger intermediaries, Facebook is going to have some influence, possibly with plans to expand it going forward.

</comment><comment><USER5> A figure from ca. 2004 was that the U.S. collectively spends one half the amount the chewing gum industry does in advertising a year in political advertising during a presidential cycle.

I found such comparisons a glib way to normalize malfunction.

</comment><comment><USER6> Is 0.5% supposed to be low? Imagine if 0.5% of GDP were spent on political campaigning. That's a huge amount, next to all the _actual economic activity_ that should be occurring.

<comment><USER7> 0.5% puts in context that if a small drop in facebook usage would make the political ads a net negative. Just 1% of users dropping facebook in protest, or a small percentage of users reducing their usage because of fatigue from politica adverts would make political adverts not worth the cost. The tiny share of revenue for political ads is going to jeopardise the massive majority of revenue.

The real underlying issue we need to address is that it's nothing to do with revenue. Facebook has a political position that nothing may be out of bounds for facebook. Facebook must be everywhere, everything must be on facebook and that must be acheived at all costs. It's an obviously morally repugnant position, but nonetheless, it's not being challenged.

<comment><USER8> Agreed. They would only lose a fraction of the 0.5% anyway, since they would just run other ads in their place. This is all about Facebook controlling the political process.</comment></comment></comment>


Why the Student Loan Bubble Won't Burst - <AUTHOR> https://www.forbes.com/sites/robertfarrington/2018/12/12/student-loan-bubble-wont-burst/#78b61c267680 <comment><USER2> "The banks are too big to fail." "Bitcoin will just keep going up and up." "Stocks are on the rise, it'll never end!"

"The student loan bubble can never burst!"

I don't care what you think, bubbles /always/ burst. I agree with the article's points in a temporary sense and understand the argument but no matter how good your soap surface tension will always catch up.</comment>


As Uber Comes to New York, Its Legality Is Questioned - <AUTHOR> http://www.nytimes.com/2012/09/05/nyregion/as-ubers-taxi-hailing-app-comes-to-new-york-its-legality-is-questioned.html?_r=1&ref=nyregion

<comment><USER4> Interesting. It looks like the various taxi heavyweights of the world are due to battle it out in New York. Uber from SF, Hailo from London, GetTaxi from Israel...

A telling quote from the Betabeat[1] article:

 _Uber has 10 to 15 yellow cab drivers pre-registered to use its app, whereas Hailo has 2,500. A representative from Uber scoffed at that number. Reached by phone, Hailo confirmed both its planned launch and the number of registered drivers in New York City_

It'll be interesting to see if just being the first into market will allow Uber to overcome odds like this, but that is a giant difference. 10-15 cab drivers is nowhere near enough to satisfy demand from New York customers.

[1] [http://betabeat.com/2012/09/uber-launch-yellow-cab-taxi- app-...](http://betabeat.com/2012/09/uber-launch-yellow-cab-taxi-app-pay-hail- new-york-city-09042012/)

<comment><USER5> I've since updated that number in Betabeat with the figure from tonight's NYT article, which says Uber planned to launch with 105 pre-registered cabs and plans to add 100 a week. (The initial, incorrect number was what I had when I broke the story this afternoon, and tried to confirm with Uber. Apologies for that.) Agreed though--it's going to be really interesting to watch, with each player having a corner of the market. There's also Taxi Magic.

</comment></comment><comment><USER6> 2 things:

1\. It says something about the quality of what you're doing when the competition has to selectively enforce laws (or change them as the DC City Council tried) in order to compete effectively.

2\. Probably a good move for Uber - basically adding a ton more data about pickups/dropoffs in the city across NYC's taxi fleet (which would be insanely useful if they ever launch a p2p service like Lyft has done) and, even more crucially, gets them to a more mass-market price point.

<comment><USER4> _adding a ton more data about pickups/dropoffs in the city across NYC's taxi fleet (which would be insanely useful if they ever launch a p2p service like Lyft has done)_

New York City's TLC actually already offers this data for the entire yellow cab fleet. An interesting data set, for sure.

<comment><USER7> Where do you get it? I couldn't find it on the site...do you have to file a FOIL request with them?

<comment><USER4> Unfortunately, yes. But it's >60GB of data for 2011 alone, hosting it might be prohibitive.

</comment></comment></comment></comment><comment><USER8> Remember when you used to ask people for directions and comedians told jokes about how as soon as they heard the directions, they forgot them?

In a few years we'll think about hailing cabs by whistling or flagging them down in the same way. Plus, the taxi drivers won't be able to bypass particular minorities with quite as much immunity from being caught anymore. "You accepted the hail, we have the record for that, but then decided not to pick the passenger up. Why?"

<comment><USER9> It is like the floppy disk icon for saving.

Someday hailing a cab will be a button that says "hail a cab" and no more.

There should be a word for this.

<comment><USER10> > There should be a word for this.

Roughly, <http://en.wikipedia.org/wiki/Skeuomorph>

</comment></comment></comment><comment><USER11> I can't speak to the politics of the taxi commission and laws in NYC regarding Uber. I just got back from NYC, on arrival I took a yellow cab from JFK to Battery Park (far south end of Manhattan).

Our cab ride was during the morning rush hour and since I had the time, I was checking out google maps and other traffic info. Looking at the route the cabby was taking, I asked him why he was going all the way up to the Williamsburg Bridge in order to get back down to Battery Park (basically hitting Midtown to have to go back downtown). He was rather indignant and said he had been driving for 20 years.

He asked what direction I would take, I mentioned a few streets and one of the more southern tunnels or bridges. After sitting in a bunch of traffic, he mentioned that I was probably right, but that going surface streets in Brooklyn isn't always popular.

Experience certainly means a lot, but realtime data can trump that. I think choice is a good thing and Uber will help with that. However, with highly concentrated markets like NYC, leveraging technology could provide even more benefit.

<comment><USER9> Well, data-oriented experience will certainly get trumped by actual data.

I can't believe most cabs don't have real time traffic data.

<comment><USER11> It is surprising. My last two trips to NYC have involved probably about two dozen cab rides plus two town car rides back to JFK. Not one of the vehicles had any visible device capable of real time traffic data (mounted smartphone, gps, etc).

Maybe there is something in the laws governing cabs?

<comment><USER4> There is. NYC cab drivers are forbidden from using devices while driving. I forget the exact wording, but it's something that Uber will have to deal with- they mention in the article about only using the app when at a stand-still.

Pretty stupid, but it is what it is.

</comment></comment></comment></comment><comment><USER12> > There is the high-pitched whistle, the two-handed gesticulation, the rapid > snapping of fingers. Many favor the classic wave — an open palm raised high, > stretching into coming traffic.

Does _anybody_ honestly do anything but stick their hand out (Statue-of- Liberty style)?

On a more serious note:

I'm surprised they're even attempting this with medallion cabs. I honestly don't see the need here - Uber's availability in NYC is decent... could be improved, certainly, but there are well more than enough gypsy cabs/car services around to tap into, it seems.

The NYC medallion system is one of the few that I think works well. Unlike in other cities, the rules that Uber would potentially be violating are those which _only_ affect medallion cabs, and explicitly exclude car services like Uber. (The intent is to have the medallion cabs resemble a 'public' transportation system more, in that they cannot refuse service to anywhere within the boroughs, cannot refuse passengers etc.), while the private cab companies can do whatever they damn well please, more or less.

I'm not sure what Uber has to gain by doing this - it's a hefty risk, especially since the forces they're probably up against here in New York are very powerful and very well-funded, and the laws are already rather lenient - they've been able to establish a successful business already without pushing the envelope.

<comment><USER13> Oddly, I have seen some of these other gestures used to hail a cab - <USER2> luckily it's not very frequent.

I just had my first Uber ride today - it was such a breeze and my driver Julien was friendly and very easy to talk to. One of the first things I noticed (and checked for) was that he had a TLC issued license plate - so I know he is paying his dues somewhere. One of the more interesting parts of our conversation included the fact that he owns his own vehicle and pays his own TLC fees - but at this point he only takes fares via Uber. He said it's hassle free and the people seem friendlier overall (except the one lady who rated him 1 star because there was traffic - who knew Manhattan could have traffic congestion?!)

I like the idea of Uber and hope they succeed in the NYC marketplace - <USER3> just a little bit more money, the experience was far better than I have ever had in a standard medallion cab, and even some of the other car services out there.

<comment><USER14> I'll throw in another datapoint in here. I've lived in NYC for the last 2 months and have taken NYC taxis only five or six times since mostly everywhere I go is on the same subway line. I used Uber last weekend to get a ride to JFK last minute from Brooklyn and it was a fantastic experience. The price was similar to that of a taxi and I ended up paying much less because it was my first ride and I had both a $20 off first ride coupon (Add it! It's YelpSF, it worked for me in NYC) and I had $15 coupon from something else I don't remember, so I ended up paying barely $30 for a quick cab ride from Brooklyn to JFK.

The driver was extremely friendly, but he wasn't a regular taxi driver, he had a day-time job and did Uber on the weekends and nights only when he needed the money. I thought it was a bit weird since I've read articles on here about NYC's weird medallion deals, but it seemed great for both sides.

Oh, and I forgot: The driver was so god damn friendly it was a weird experience, we had a conversation the entire time to the airport versus being in regular taxis where the driver is on his cellphone talking to someone the entire time.</comment></comment></comment>


Zuckerberg Defends Hands-Off Approach to Trump's Posts - <AUTHOR> https://www.nytimes.com/2020/06/02/technology/zuckerberg-defends-facebook-trump-posts.html <comment><USER2> Mr. Zuckerberg held firm even as the pressure on him to take action on Mr. Trump's messages intensified. Civil rights groups said late Monday after meeting with him and Sheryl Sandberg, Facebook's chief operating officer, that it was "totally confounding" that the company was not taking a tougher stand on Mr. Trump's belligerent posts, which have contributed to the rhetoric around the protests over police violence in recent days. And several Facebook employees have publicly resigned, with one saying the company would end up "on the wrong side of history."

If the "sides of history" are a spectrum, with Facebook on the "wrong" side, what social networks are on the "right" side? I'm sure the Fediverse and Mastodon are on the right side, and Matrix/Riot are as well. Signal should be on the right side, but probably closer to the middle of the spectrum, but not as close to the middle as, say Twitter or Reddit.

How would fellow readers of HN plot current social media on the sidedness of history spectrum?

<comment><USER2> I meant to indicate that the first paragraph was a quote from the article, but I forgot the quote marks. My comment starts with 'If the "sides of history"...'</comment></comment>