Andrej Karpathy talks about how Tesla's NNs are structured and trained [video] - <AUTHOR> https://www.youtube.com/watch?v=oBklltKXtDE <comment><USER2> Fun fact for all of you:

Some time ago (around ~10 years) this guy (the presenter) was internet famous for being a Rubik cube speed solver and making tutorials and videos about that: [https://www.youtube.com/watch?v=609nhVzg-5Q](https://www.youtube.com/watch?v=609nhVzg-5Q)

<comment><USER3> I'll always know him as badmephisto. In a recentish reddit AMA, he says he still keeps a cube on his desk so he can practice a bit and not forget his algorithms.

<comment><USER4> Can you provide the link to that AMA?

</comment></comment></comment><comment><USER5> The competition in this space is great but I can't help but wonder what would happen if instead all these companies pooled their resources and went after the goal collectively. There is so much duplication going on and the paths do not seem to me - as an outsider - to be all that divergent, which is usually a pre-condition for having a lot of independent efforts one of which will succeed.

It's as if everybody wants to be the one to exclusively own the tech. Imagine every car manufacturer having a completely different take on what a car should be like from a safety perspective. We have standards bodies for a reason and given the fact that there are plenty of lives at stake here maybe for once the monetary angle should get a back-seat (pun intended) to safety and a joint effort is called for. That would also stop people dying because operators of unsafe software are trying to make up for their late entry by 'moving fast and breaking things' where in this case the things are pedestrians, cyclists and other traffic participants who have no share in the monetary gain.

<comment><USER6> > The competition in this space is great but I can't help but wonder what > would happen if instead all these companies pooled their resources and went > after the goal collectively.

It would probably slow down. 9 women can't have a baby in 1 month. Besides that, the disagreements about approach, politics, or eventual competitive interests would probably bring things to a halt for a long time.

I don't think the solutions to this problem are resource-constrained. Many companies would happily find more resources in order to be first to market with this technology.

<comment><USER7> Exactly. Look at Human Brain Project: $1B and 10 years later what exactly have they achieved? Just like you said - disagreements about approach, politics, or eventual competitive interests _did_ bring things to a halt for a long time

<comment><USER5> The human brain project was DOA from day #1. Unrealistic goals, no clear reason why more money would lead to better results and no concrete deliverables that anybody needed.

<comment><USER7> Same can be said about level 5 autonomy!

<comment><USER8> To me, the fatal flaw of HBP (or USA's competing HBI) is that they are akin to "cargo cult science", the idea that we can replicate the superficial structures to a significant enough degree that they system they impart will suddenly somehow become activated.

But just like the Melanesians with their coconut-shell headsets, there won't be anyone listening on the other end...

<comment><USER7> If we replicate a car with a sufficient accuracy it will start. I don't see why this wouldn't apply to any other piece of machinery, including a brain.

HBP should have tried a simpler task first, e.g. replicate a fruit fly's brain.

<comment><USER9> Having replicated the fruit fly's brain, what are you going to do?

Replicate the rest of the fruit fly so that you can install the brain in it? And then replicate the world so that your software-simulated fruit fly has a natural context in which to operate?

Or just stimulate the brain with random inputs not associated with any real- world stimulus?

<comment><USER7> I'm pretty sure simulating fly's neural inputs would be a far easier task than simulating its brain. After verifying it works correctly we would proceed to simulating a more complex brain, say a frog. And so on.

<comment><USER9> To simulate the fly's neural input, you need to simulate the fly's entire environment, including fluid dynamics for the air around the fly, the physics of every object the fly interacts with, hormonal responses to changes in the flies blood concentration of various substances (O2, glucose, ...).

This already strains our technical capabilities (at least for the amount of money we are willing to spend on it).

For any animal whose behavior is the product of a lot of learning, and who deals with other such animals in daily life, you have to solve all the problems you had to solve for the fly and also deal with a much larger connectome and also deal with the fact that, until you can passably simulate mouse, you will never be able to simulate the way a mouse learns to behave in the presence of another mouse.

<comment><USER7> No need to simulate any of the environment. You only need to record the neural inputs to a fly's brain. Sure that's also challenging, but nowhere as challenging as simulating the entire fly's brain. My point is if you manage to accomplish the latter, the former would be a breeze.

<comment><USER9> > You only need to record the neural inputs to a fly's brain.

I don't think that's true. As soon as your simulated fly's behavior diverges from the actual fly's, all of the recorded input after that point is invalid/useless because it will not match the simulated fly's position/orientation/whatever.

Also, how many dollar of investment and years into the future do you think we are from being able to record all of a fly's neural input while it is moving freely?

<comment><USER7> To start with you only need to study input-response pairs (sensory input causing motor commands). You enter the neural inputs from a real fly into the simulation, and compare responses of the real fly and the simulated one. Once you understand what's going on, proceed to do sequence of inputs, and compare the sequence of responses. The goal is not to produce the identical sequence of actions by tuning the simulation, it's understanding how the actions are being computed from the inputs.

Having a detailed simulation like this would greatly accelerate Numenta's style research, where instead of piecing together information from published papers, you would get it straight from the experiments you control.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> His team is hiring;

[https://www.tesla.com/careers/job/software- engineerdeeplearn...](https://www.tesla.com/careers/job/software- engineerdeeplearning-49779)

[https://www.tesla.com/careers/job/machine- learninginfrastruc...](https://www.tesla.com/careers/job/machine- learninginfrastructureengineerautopilot-48125)

[https://www.tesla.com/careers/job/machine- learningscientista...](https://www.tesla.com/careers/job/machine- learningscientistautopilot-48414)

<comment><USER11> lol i just did the interview and failed. had to find shortest path between tesla chargers. all in C++. completed it but failed

<comment><USER12> Very likely not for the positions above! (they all focus on Python)

<comment><USER13> Slightly off-topic (but related to the side thread where people didn't realize you went to Tesla): your HN about still says you're at OpenAI :).

<comment><USER12> oops, thank you, fixed :)

<comment><USER13> As long as you're here, I'd love to get an updated PyTorch vs TF from you in the sibling thread as payment :).

</comment></comment></comment></comment></comment></comment><comment><USER14> Awesome presentation. Crazy that they're developing their own training hardware too. It's going to be a very crowded space very soon. Can they really stay ahead of everyone else in the industry? Can it really be cheaper to staff up whole teams to design chips for cutting edge nodes, fabricate them, build supporting hardware and datacenters and compilers, than to just rent some TPUs on Google Cloud?

I can see the case for doing their own edge hardware for the cars (barely), but I really don't think doing training hardware will pay off for them. If they're serious about it, they should spin it out as a separate business to spread the development cost over a larger customer base.

Also, I'm really curious whether the custom hardware in the cars is benefiting them at all yet. Every feature they've released so far works fine on the previous generation hardware with 1/10 the compute power. At some point won't they need to start training radically larger networks to take advantage of all that untapped compute power?

<comment><USER15> Nothing crazy about it. TPU-like stuff is ~10x the energy efficiency of GPUs and several times the speed. When you're spending megawatt-hours and days to train a single model, it adds up in both real and opportunity costs.

Also, Google TPU TOS prohibits the use of TPUs for stuff that competes with Google (and I'm assuming with other companies under Alphabet umbrella), at Google's sole determination. Not that it would be a good idea to upload Tesla's proprietary data into Google Cloud even if it did not. Cloud, after all, is just somebody else's computer.

<comment><USER14> > Google TPU TOS prohibits the use of TPUs for stuff that competes with Google

I don't think this is true. If you're talking about [https://news.ycombinator.com/item?id=19855099](https://news.ycombinator.com/item?id=19855099), it doesn't apply to TPU hardware, as is explained in the comments there.

> TPU-like stuff is ~10x the energy efficiency of GPUs

10x is probably overstating it when talking about newer GPUs because they have ML hardware in them now. Also, that still doesn't make it a good idea to build your own chips because there will soon be many third party options to choose from. Doing your own chips is a bet that you will out execute dozens of companies ranging from startups to industry giants. Simply taking your pick of the best commercially available options is likely to be a better choice in the near future.

<comment><USER15> Yep that's the clause. The clause itself is not that problematic for Tesla. What's problematic is that it can be changed over time, and it'd be foolish to single-source something as important as deep learning compute without the option to go elsewhere. Not to mention the rather extravagant Cloud pricing. So Tesla is taking a page out of Steve Jobs' playbook and it will control its own core tech. That's smart, especially considering that they already have bits and pieces of the IP that they'll need.

<comment><USER14> That clause doesn't apply at all though. It's not even for the same product.

As for single-source, the models are written in PyTorch, not TPU machine code, and they're pretty standard models anyway (e.g. Resnet-50). They can easily transfer to other hardware if necessary. There's not a ton of lock-in there. It doesn't justify the massive costs of ASIC development just to avoid this nonexistent lock-in and imaginary TOS clause.

</comment></comment></comment></comment></comment><comment><USER16> Really liked this talk.

Looks like they are really nicely orchestrating workloads and training on numerous nets asynchronously.

As a person in the AV industry I think Tesla's ability to control the entire stack is great for Tesla... maybe not for everyone who can't afford/doesn't have a Tesla.

<comment><USER17> >maybe not for everyone who can't afford/doesn't have a Tesla.

Affordability is not as much of an issue as some make it out to be. Cost-wise it's like owning a Camry or an Accord, if you go for the lower end models. If you mean not everyone can afford a new car, then sure I agree with you.

Edit: if you think I'm wrong about this, please explain or ask me to clarify anything?

<comment><USER16> As a small anecdote, my parents couldn't afford/didn't want to spent over $30k for a car. Surely we could've gotten a Tesla for $5k+ more, but given the relatively new infrastructure with electric charging stations (and the fact that none are available in the apartment I live in) my parents didn't find all the new cool features appealing and instead got a regular Toyota Sienna that has nothing fancy, just enough to take the family around.

Similarly, the infrastructure around electric charging stations I believe hasn't fully matured yet and as a result many people who've already owned a car, I believe will stick with gas cars since there's no huge incentive to change, unless it becomes easier to charge (faster, more convenient).

Do note that I don't have a drivers license. I never intend on getting one (I believe in what I do in the AV industry). I'm just guessing on the habits of people, not that I have any real experience in buying a gas/electric car.

Also note I didn't think you were wrong, not sure why the downvotes.

<comment><USER17> Thanks for the reply. Living in an apartment is not a big issue for me... we have two, live in an apartment with no charger.

That's interesting that you relate something you do in the AV industry to not ever getting a car... what's that about?

I do think that it's possible in the future the majority of people will never need to own a car.

<comment><USER16> I think for a good majority of people especially in America will go along the lines of "If it ain't broke, don't fix it" for gas cars.

Regardless, I think Ghost Locomotion and Comma.ai have a lot of potential for what they're doing now. I think they'll coincide with fully driverless cars like Cruise, Waymo, or Aurora. Regardless of if they're electric or not (I think electric cars will be more heavily adapted if we use Cars as a Service)

Also, yes, I don't ever intend of getting a license. This problem is really fascinating and I'm excited to play a little part of it. By not having a license, I can spend more time having the perspective of a person in 20-30 years when drivers licenses will become less common and utilize it in my work.

<comment><USER17> >I can spend more time having the perspective of a person in...

This is awesome. I've always found that only by really experiencing the future (or some part of the leading edge that is soon going to become the future for most people) you gain much more understanding of it, ahead of others, and can apply it in your life planning. It would be worth living this way even if only temporarily just to get that as you say perspective... Not ready to give up driving forever, heh, but it I might have to try a short sample of that non- driving lifestyle sometime.

</comment></comment></comment></comment></comment></comment><comment><USER18> I'm still _amazed_ that Teslas team isn't using a map... I know maps get outdated and are sometimes wrong, but having inaccurate knowledge of what's around the corner is far far more helpful than not having any clue whats around the corner.

The smart solution would be to consider a map a probabilistic thing, which neural networks are really good at handling.

<comment><USER19> I'm still amazed Tesla has decided not to use lidar and instead just stick with cheap cameras. Better sensors are there, they're available, they're cheap and they can probably "see" better than plain old cameras... it doesn't make too much sense not to use them IMHO. But then again, I am not coding NNs for Tesla...

<comment><USER18> While LIDAR's are certainly 'better' from a technological standpoint than not having anything, from a business standpoint it's less clear.

LIDAR's are cheap, but not cheap enough yet to not seriously affect the bottom line if you put them into every car. It also will kill the resale price of cars without it, which in turn hurts the companies image and stock price.

<comment><USER20> If you are first to market with a level 4 autonomous taxi, unit economics will likely be great regardless of whether you put LIDAR or cameras in.

<comment><USER18> Yes, but the current reality is they need to pay for the hardware, and still make a profit, _without_ any guarantee of that autonomous taxi market.

It all depends what you see are the chances of the autonomous taxi market developing within the lifetime of these cars.

</comment></comment></comment></comment></comment><comment><USER21> Interesting that they don't have a full 3D world model. I'm certainly not a machine learning expert. I'm still amazed the route from image recognition to a 2D map of "what's drivable" to autonomous driving is so direct. One would expect to hit a ceiling really soon with that approach.

To me it seems we're still in really early days.

<comment><USER22> They're doing 3D for the road path, and even predicting it beyond corners:

[https://youtu.be/Ucp0TTmvqOE?t=8137](https://youtu.be/Ucp0TTmvqOE?t=8137)

And later in the video they show 3D reconstruction from cameras and saying they use it in the car.

Watching the full talk is recommended if you have the time (talk starts around 1:10:00 in the video)

<comment><USER21> Thanks, seems my original comment is wrong then!

</comment></comment></comment><comment><USER23> One thing I didn't quite understand is how training sub-graphs in parallel works. If you are editing a sub-graph of a monolith type model, aren't you affecting other graphs that have dependencies on the one you're editing? If these are independent graphs, then what's a "sub-graph" even mean?

<comment><USER24> In PyTorch you have full control on the graph and weight, everything feels like Python. So feeding some of the learning between "sub-graph" is easy. Not sure if this is possible on Tensorflow/Keras?

He describes the sub-graph training in the context that they they have all the predictors in one big model, and with control of the network can feedforward and train sub-graph (read sub-parts) of the model.

<comment><USER23> This is possible in keras, just drive new models that are functions of a monolith model and train independently. I still don't understand the point though. If you train a "subgraph", the other tasks dependent on the part of the graph will have to get retrained anyways, since those edits will affect the other tasks.

</comment></comment></comment><comment><USER25> For those who want to learn more, I would start with Mask-RCNN where you have a very similar architecture: one shared backbone with multiple heads that can be retrained for various tasks (bounding boxes, masks, keypoints, etc): [https://youtu.be/g7z4mkfRjI4?t=628](https://youtu.be/g7z4mkfRjI4?t=628)

</comment><comment><USER26> Anyone knows why Andrej's team chooses PyTorch (as oppose to say TensorFlow?)

<comment><USER27> Some potential reasons:

\- TensorFlow is great at deployment, but not the easiest to code. PyTorch isn't frequently used in production until recently.

\- If you have the resources for great AI engineers and researchers, your team will be good enough to build and deploy both frameworks.

\- Preference toward the easier framework your tech leads prefer.

\- Lots of new academic research is coming in PyTorch

\- TensorFlow is undergoing a massive change from 1.1x to 2.0; if you choose TensorFlow, write on 1.1x just to then refactor to TF 2.0? Or write on TF 2.0 now and deal with all new edge cases? Or write in PyTorch (easier) but handle the more difficult deployment process.

\- ML code quickly rots. Bad PyTorch code is just bad Python code. Bad TensorFlow code can be a nightmare to debug.

\- PyTorch's eager execution makes coding NNs much easier to prototype and build.

</comment></comment><comment><USER28> The good news for me is that the upper bound for fully autonomous self-driving cars is no more than 50 years away. What a time to be alive. If it happens before then, that will be an absolute bonus.

</comment><comment><USER29> Andrej Karpathy is such a treasure.

He is an excellent presenter who really has a passion for teaching.

Im not really involved with the industry, so I cant really speak to how he holds up to other experts. However he is by far the most digestable resource I have found for learning about NN and science behind them.

If you are just discovering him now, google his name and just start reading. His work is truly binge worthy in the most meaningful way.

</comment><comment><USER30> The description of SmartSummon about halfway through the talk is interesting. One of the views looks like SLAM using a particle filter, but Andrej seems to say that it's done entirely within a neural net.

</comment><comment><USER31> Jeeze and I can't get my pytorch to stop leaking memory. I couldn't imagine trying to drive a car with it

<comment><USER32> Pytorch is used to train models on servers/cloud, not to drive the car later. The trained model is converted to something native to the embedded environment of the car.

</comment></comment><comment><USER6> I wonder if the environment the car discovers includes elevation. Would be necessary for handling many carparks.

</comment><comment><USER33> Wow

</comment><comment><USER34> The trick for level 5 is learning the mapping between the lidar point cloud and the video stream. It's the best of both worlds.

<comment><USER35> Tesla doesn't have have a lidar point cloud at all

<comment><USER34> That's the point. You train with lidar, deploy with cameras.

</comment></comment></comment><comment><USER36> Oh he's no longer with OpenAI? Sam Altman must be worried about this..

<comment><USER37> Without meaning offense to Sam, I thought he was an investor / YC head. What credentials does he have to be at OpenAI?

<comment><USER38> Teaching the CS231n course at Stanford, for one.

<comment><USER39> Andrej Karpathy taught cs231n. The question is about Sam Altman who didn't teach anything related to NL. He's on the board of OpenAI because he was one of its founding investors.

</comment></comment></comment></comment><comment><USER40> Meanwhile Waymo is way ahead.

<comment><USER41> Do you belittle everyone that gets second place in the Olympics because the winner is "way ahead"?

Your comment just reeks of anger and hostility.

It seems like you'd rather Tesla didn't try at all, and instead we all just give up and go back to the status quo.

<comment><USER42> Elon belittles lidar saying it is doomed and will never work yet Waymo and Cruise will probably be operating self driving taxi fleets in California next year. Tesla deserves getting dumped on for those comments because they are no where near self driving.

<comment><USER43> Andrej Karpathy just started working on Tesla's software 2 years ago, before what Chris Lattner did was a mess (he wanted to just have 1 task that learns magically everything), Andrej had to start everything from scratch.

Waymo had a 20 year advantage, but Google lost many key people there in the meantime as Larry Page didn't want to launch partial self driving.

I think both approaches are great and I wouldn't want to choose between the 2, just be a happy user of the end result of the competition.

<comment><USER5> > Larry Page didn't want to launch partial self driving

That's the responsible thing to do.

<comment><USER43> If you look at self driving automation as a black box, sure.

But at the same time people understand that on a highway Tesla Autopilot is safe enough to be used on a long boring road, and dricers generally feel less tired (and can focus more on the harder parts of the road).

<comment><USER44> There have been notable Tesla fatalities on "long boring roads". The software has a long way to go..

</comment></comment></comment></comment></comment></comment></comment><comment><USER45> Just listening to this talk scares me. The amount of errors - even in a seemingly normal, sunny day - is mind boggling to think people trust this crap.

How can we rely on the output of eight cameras? This is not a kid's science project.

It's all fancy neural networks until someone dies. Pretty callous and Silicon valley-mindset for such an important and critical function of the car.

Will never buy a Tesla after having seen this.

<comment><USER46> _> mind boggling to think people trust this crap_

It's also mind boggling to think we currently trust organic tissue to do this crap, some of which is bathed in psychoactive chemicals.

And yet we do, and as a result, horrendous catastrophes occur every minute of every day.

 _> It's all fancy neural networks until someone dies_

No, that can't be the standard, not when people are dying _right now_ in the current regime.

Unless the new regime kills and maims _at a higher rate_ than the current regime, there is no reason for fear.

<comment><USER47> No, it needs to be a lower rate since it will kill at random. Today's rate includes drunk drivers, people on their phone and other "unsafe" drivers. If you are an attentive driver your chance of death would actually go up if the overall death rate was the same.

<comment><USER48> if you are an attentive driver you can get killed anytime by these other drivers

<comment><USER47> I'm maybe missing your point, but this is reflected in the overall death rate now. Similarly in the future the overall death rate will include deaths of the occupants of self-driving cars and also the cars/people that they hit.

The perception will be different however, since in the public eye the drunk driver "had it coming" and the only real loss is the other driver/passengers/pedestrians. If a self-driving car kills its own occupants and the occupants of another car then there are more "innocents" than in the drunk-drive scenario.</comment></comment></comment></comment></comment>


Ask HN: I've made some it projects. What to do next? - <AUTHOR> Hi everybody I made in last couple of years some projects to manage hardware in clusters and have no idea what could I make with it next. Unfortunately area of users is very narrow. One of this projects is iaas cloud, so installation requires a lot of experience and hardware, second is framework for decentralised applications in c++.
First project from the beginning was open source and it had some interest around, from users, but very low. Only advantage which I see as OS is that it was much easier easier to get appointments for conferences, as free software. I'm wondering about making second project open source - what do you think, is it worth? Now it is closed source free for use library in c.
I know that I can invest in some ads again, to promote it, but my experience says that in such narrow area it is not worth. Maybe you have some other ideas what to do with such projects to make some society around it? Years ago usenet was proper place, and what is now?
Maciej <comment><USER2> > Now it is closed source free for use library in c.

If you don't plan to charge for the use of this library, open source it. Or you can put a dual license like qt does.

> Years ago usenet was proper place, and what is now?

You have Reddit, Github and many other specialized forums. In fact, you are in one right now.

Do a Show HN of your library in here. Write some blog posts about the library and submit them to HN, reddit and other forums.

<comment><AUTHOR> Thanks, so I have to write some nice description of both :) Dual licensing seems to be ok, especially that this is library, not a gui or web application, so it would be easier to get it as source code.

Btw. do you know any incubators for such projects? I don't look for financial support (spend too much own money on that, don't want to waste somebody's money), but rather menteurship. Is it also provided here? Sorry for silly question, but I know ycombinator from interesting discussions on this forum only :)

<comment><USER2> > but rather menteurship. Is it also provided here?

Unfortunately, no. But you can try to talk to some known developers working in the same language/problem space. Many are willing to help out.</comment></comment></comment>


Microsoft Build 2020: Teams gets more versatile, Fluid Framework now open source - <AUTHOR> https://www.techrepublic.com/article/microsoft-build-2020-teams-gets-more-versatile-and-fluid-framework-goes-open-source/ <comment><AUTHOR> 'Microsoft has announced a number of new features for Teams, its collaboration app, as well as an initial public preview of its Fluid Framework as part of Microsoft Build 2020. Build 2020 is being held entirely online due to the COVID-19 pandemic, but that doesn't mean there will be fewer announcements to excite developers and motivate Microsoft product users.

'Microsoft Teams is stepping up its battle with Zoom for remote collaboration dominance with a number of new features designed to "streamline the development of Teams apps and enable deeper user engagement."

'Along with a bevy of Teams improvements, Microsoft has announced big changes for its Fluid Framework. Originally announced in 2019, Fluid Framework is a set of tools for building cross-app collaboration on the web that allows simultaneous collaborators, building block-like files, and bot support.'

Along with a new preview, Fluid Framework is also being made completely open source, which Microsoft said will allow "developers and creators to use key infrastructure from Fluid Framework in their own applications. Coupled with the release of additional developer documentation and tooling, this provides a new opportunity for developers to work alongside Microsoft to create and evolve Fluid Framework as it is developed."

'Fluid Framework will be available as a GitHub repository "in the month following Build," Microsoft said. '</comment>


Hendrix 3.0.0 - <AUTHOR> https://github.com/hendrix/hendrix/releases/tag/3.0.0 <comment><USER2> Any mention of performance? Is it on par with modern servers like `uvloop`?

</comment><comment><USER3> Nice, I didn't realize you were still working on this!

<comment><USER4> Yeah, me either. I was really excited about this a couple years ago, and in the last six months this has actually come back in line with stuff I need. Excited to try it out again.

</comment></comment><comment><USER5> TLDR: "A python web server focused on async and offbeat network traffic" now with Python 3 compatibility (for those not familiar with the project)</comment>


Announcing RethinkDB 2.3.6: the first release under community governance - <AUTHOR> https://rethinkdb.com/blog/2.3.6-release/ <comment><USER2> Just about to decide between Mongo and Rethink. I know HN is not on good terms with Mongo but I'd like to have insights on...

\- Setup of a replica set: is it easier/faster than with Mongo (which I find complicated)?

\- Sharding: Easier than with Mongo?

\- Rethink's query language: Is it really better than Mongo's after you used it for some time?

Happy to hear more insights if you know more noteworthy stuff and please no bashing of any of them. Just try to make an educated decision.

<comment><USER3> Depending on what your goal is: Did you consider elasticsearch?

Reolication/clustering is real easy to set up.

Sharding is easy.

Scaling is easy.

I cant comment on query language vs mongo or rethink, since my experience with them is too limited.

<comment><USER4> For one thing, it isn't really a database. You can use it as one, but where elasticsearch shines is mostly write once and read often.

Correctness isn't the primary focus, so unless you are willing to lose some stuff, don't use elasticsearch as your primary database.

[https://www.elastic.co/blog/found-elasticsearch-as- nosql](https://www.elastic.co/blog/found-elasticsearch-as-nosql)

</comment></comment></comment><comment><USER5> Anyone got an insight into how well this is going? Compared to when the company was active, how fast is progress? Would you bet on Rethink in this day and age?

<comment><USER6> I did bet on it and so far I'm happy as long as it continues to work. Sure, I would like it to be developed further, but what I have now is great and works well.

As for progress, it slowed down to non-existent during the handover period, and now seems to be picking up.

<comment><USER7> Great to hear that! Is there any issues close to being show-stoppers or any "it would have been immensely helpful to have this but I can work around it" features? Also, what would be the thing that RethinkDB is really good at that makes you keep using it?

<comment><USER6> I use it for two major reasons:

1\. It's distributed. I can elastically add/remove nodes. I need this not so much for scalability, as for reliability, and I want to be future-proof.

2\. Changefeeds. Nothing else even comes close, and my entire application is built around them.

I have no show-stoppers. The thing works. Sure, I'd love to see some things done differently (ReQL looks nice at a first glance, but has many limitations in practice, causing code that ends up being quite complex), but overall even if it were to stay exactly the way it is now, I'd continue using it.

</comment></comment></comment></comment><comment><USER8> I'm really happy to see progress again. Hopefully we'll see more... I appreciate everyone that worked to make this possible.

side note: the node driver in npm still hasn't been re-published with the license type in the package.json, so doesn't show the license. Only noting as this can cause issues in some organizations.</comment>


Ask HN: Best platforms for conversational UX development - <AUTHOR> I've recently started looking into building conversational UXs. I've looked at Amazon Alexa and also briefly looked at Actions on Google & API.ai.
Does anyone here have comments on where each of them shine, and what their shortcomings are? I'm particularly intrigued by how you can build conversational agents for multiple platforms on API.ai, but their documentation seems a little lacking at the moment.
Are there other platforms that are worth considering at this time? I'd imagine Apple will likely open up SiriKit to arbitrary intents soon. <comment><USER2> Microsoft's Cortana is allegedly going to support Alexa skills real soon now.</comment>


Ask HN: Why isn't wireless connection to computer monitors ubiquitous? - <AUTHOR> There might be solutions in the market (I've seen one that transmits VGA signal using a USB dongle- very low-res for today's screens), but not of them are widespread. Instead, pretty much everyone connects to an external monitor with a cable (and if you're on Mac, add a dongle or two).
Definitely not an EE person, but: probably to transmit UHD data might stretch the limits of the physical layer (although there are some reasonable assumptions that we can make - e.g. very close proximity, clear line-of-sight, etc). But something as basic as casting a Chrome tab to TV works OK and maybe can be improved.
HN readers more hardware-inclined than me, I'd appreciate your responses. <comment><USER2> It takes a LOT of bandwidth. Otherwise the quality degrades, and we don't accept 90% quality.

There are options but you start to push towards licensed frequencies and then your 6 feet of cable free cost $30k

<comment><AUTHOR> But even for non-video use cases? Eg development, photo editing, where the fps isn't (probably) that important.

<comment><AUTHOR> Naive question: I can stream 4K to my tv over general-purpose 801.11ac (meant to be non-directional/line-of-sight). I'd imagine that a purpose built protocol/phy should be able to push even more bits in sub-1ft distance with direct LoS, no?

<comment><USER3> I think the issue with the tv streaming example is that you'd have no idea what the lag time is, the delay would be two whole seconds but as long as the video doesn't skip you wouldn't even know, versus moving a mouse around which would make the smallest amount of delay extremely noticeable.

<comment><AUTHOR> Latency is a thing for sure. But we're talking a few inches of distance that the signal needs to travel, so I don't think it's a significant issue. The latency when "casting desktop" to TV is pretty tolerable (to the point that I hadn't noticed it until I read your comment).

<comment><USER4> Try typing when casting for a visceral demonstration of the latency. Also you might not see it but that casting is generally very compressed video

</comment></comment></comment></comment></comment></comment><comment><USER5> I think the best technology is WiFi based such as chromecast, miracast, or airplay.

My TV upstairs is connected to an XBOX ONE that has a Miracast receiver app installed and it works well with my Windows laptop. I also have a miracast dongle that attaches to any HDMI port and that is in my go bag.

Still if I want to play a console style game I don't want the laptop on my lap, so I get a USB-C to HDMI cable and plug it into my A/V receiver and put the computer wherever -- the cable is so thin and long I could have it on my lap in the couch if I wanted.

Those tech will benefit from advances in WiFi, if they have a big flaw it is that frequencies and the radio resources are shared so very well all that WiFi transmission degrades the Bluetooth channel which makes the game controller unreliable. Some devices have better radio compatibility with others, but vendor A hardware just might have trouble with vendor Q in some circumstances so it is hard to realize a brand promise the way that HDMI does.

Schemes based on other technology have had limited success. I think 60 GHz and UWB are highly dependent on path characteristics. Even at close range (inches) a misalignment or occlusion by the metal ground screen in the LED panel or any other metal could cause the picture to go out.

</comment><comment><USER6> 1\. Why should this be wireless? Wires are a robust solution.

2\. You'd need your monitor and your video source (computer, phone, whatever) to agree on a protocol. I know my Samsung TV could get signal from a Samsung phone, but my iPhone needs an adapter app. Maybe one day there could be a standard but don't hold your breath.

</comment><comment><USER7> Because normally the monitor is pretty close to the computer anyway.

All in ones are a solution to this too.

Necessity is the mo of all invention.</comment>


GM shares more secrets of its Ultium battery technology - <AUTHOR> https://www.cnet.com/roadshow/news/gm-ultium-battery-wireless-management/ <comment><USER2> > GM has essentially figured out how to fit its battery packs with Wi-Fi. WBMS > allows individual modules in the system to communicate through a wireless > network instead of traditional cables.

what could go wrong with that ?</comment>


IPad games for cats - <AUTHOR> http://www.ipadgameforcats.com/

<comment><USER2> I once read the phrase "this perfectly captures the zeitgeist of our times" and I'm glad to say that applies here.</comment>


15-line hash table in C - <AUTHOR> http://pastes.archbsd.net/graphitemaster/15_line_hashtable <comment><USER3> People understand that the compiler/executable doesn't run any faster the less newlines there are, right?

This is cute, but as others have pointed out it, it isn't really a correct implementation of a hash table. Also, it wouldn't pass a code review anywhere I've ever worked.

<comment><USER4> > This is cute

Well that's the whole point, right? This is clearly written for fun, it's not production code, it's not supposed to pass a code review. It's just supposed to be cool and interesting, and a challenge for the author.

<comment><USER5> Exactly! Building cute but ultimately useless[0] programs is a lot of fun and makes for great brainteasers. It's also a great way to interact in a friendly but still technical way with your programmer peers. I recommend it to everyone!

[0] - [http://lelandbatey.com/posts/2014/09/binary-tree- printer/](http://lelandbatey.com/posts/2014/09/binary-tree-printer/)

</comment></comment></comment><comment><USER6> There's no bounds testing in hget(): some valid sequences of operations will cause buffer overflows. For example, this should segfault:

        int (**table)[2] = hnew();

        for (int j=0; j<40; ++j) {
          hset(table, (10 + j*SIZE), 0);
        }

The problem is, the probing function doesn't wrap (the "t += h" part), so if you have have several colliding keys, it will probe for them past the end of the table.

<comment><USER7> Every time a lookup is performed, isn't it linearly looking through the table to find that key... That doesn't sound like a hash! Maybe am missing something here.

<comment><USER8> Instead of a linked list to store hash collisions, it's using linear probing, which just uses the next open spot in the table. (Maybe I'm misunderstanding the question, it looks like they're indexing into the table correctly to me)

</comment></comment></comment><comment><USER9> I love how a comment thread about a fun little program turned into HN showing off their wisdom in software engineering coupled with occasional boasting about tight code reviews.

I will not understand how and why people's egos get threatened by things like this.

<comment><USER10> I actually enjoyed reading this thread. Yes, there are some snarky comments about missing newlines, but there are also a lot of constructive comments here!

</comment></comment><comment><USER11> This code reminds me why clever is the enemy of good.

<comment><USER12> Exactly. Why people try to write code in less lines of code? More lines == better readability, better debugging, easier to move around, easier to fix single parts and so on.

<comment><USER13> I do not code much, but I have to read a lot of code when I investigate bugs. I never see very concise code, but I have quite often verbose code. The readability of verbose code is very bad: I have to scroll a lot more to understand algorithm and often, it is split in many files.

In my experience more lines == reduced readability, more difficult to move around, more difficult to fix single parts (any change requires to modify many files) and so on. More lines of code is often against the simplicity.

I have seen code that was very difficult to understand. Rewriting it to make it simple never needed to increase the number of lines.

<comment><USER14> I agree in that I'd much rather read terse expressive code than pages of dribble convey anything meaningful, having seen a lot of verbose code too. That said, code should be well formed. When I started out in C I only used curly braces when I needed to. After creating several bugs stemming from this I now add them as a rule of thumb. That particular issue is compounded here by the fact that multiple statements are shoved on a single line - also poor form.

</comment></comment></comment></comment><comment> je-so (See [http://pastebin.com/KypbginU](http://pastebin.com/KypbginU))

// corrected overflow hget

      for (int k2=k,o=0; t[k&(SIZE-1)] && **t[k&(SIZE-1)] != k2 && o<SIZE; ++k,++o);
        return t+(k&(SIZE-1));

// hset now allows overwrite

      for (int (**a)[2] = hget(t, k); a && (*a || (*a=malloc(sizeof(**t)))); (**a)[0]=k,(**a)[1]=v,a=0);

</comment><comment><USER15> I can see two legitimate cases for writing very short, very dense code.

1: Implement an algorithm in a very concise and straightforward, even if not very efficient, way. An example is the classic quicksort in Haskell, which most literally implements the idea of the algorithm:

        qsort [] = []
        qsort (p:xs) = qsort [ y | y <- xs, y < p ] ++ [p] ++
                       qsort [ y | y <- xs, y >= p ]

2: Implement an algorithm in a super-efficient, while non-obvious, way. An example is the inverse square root calculation made by famous by John Carmack ([http://www.codemaestro.com/reviews/9](http://www.codemaestro.com/reviews/9)).

The linked hashtable implementation, to my mind, is neither very elegant nor fiendishly clever, nor even reasonably correct.

<comment><USER16> There is something funny about stating that most "literally" implements the idea of the algorithm, when the main "idea" of the algorithm is to be quick. :)

Also, even in examples of super efficient ways, be wary. The inverse square root you are referring to is actually slower than what many CPUs can do with a single instruction nowdays.

Also, I think you are missing out on the main reason this code was written. Essentially a puzzle to see if it can be done.

<comment><USER17> Just because it's one instruction doesn't make it faster

<comment><USER18> In the case of a reciprocal square root estimate it probably is, particularly compared to the code given. A fast reciprocal square root estimate function usually takes less than 5 cycles - and is less than 1/4096th out, so the accuracy is better too.

</comment></comment></comment></comment><comment><USER19> Thank god, I was just about to run out of newlines!

</comment><comment><USER10> For those of us who actually ship code, I'd like to suggest khash[1], which is a pretty nice implementation of a hash table in C. It uses lot's of macros, so if you're looking for a brain teaser you will be satisfied as well :)

[1]: [http://attractivechaos.github.io/klib/#Khash%3A%20generic%20...](http://attractivechaos.github.io/klib/#Khash%3A%20generic%20hash%20table:%5B%5BKhash%3A%20generic%20hash%20table%5D%5D)

<comment><USER20> uthash[1] is another good solution. It's pretty bulletproof and has lots of options. Also implemented with macros, if that's a plus :-).

[1]: [http://troydhanson.github.io/uthash/](http://troydhanson.github.io/uthash/)

<comment><USER21> I don't think being implemented with macros is a plus. I've seen some friends use it and get stuck whenever it was failing because it's impossible to know how it's working. It's the same type of cleverness some people criticize in other comments. Yes, it may be complete and useful but it's opaque.

</comment></comment></comment><comment><USER22> will need the clockwise spiral rule to parse this: [http://c-faq.com/decl/spiral.anderson.html](http://c-faq.com/decl/spiral.anderson.html)

<comment><USER23> The author helpfully explains the code by way of un-optimizing it to something readable: [http://pastes.archbsd.net/graphitemaster/hashtable_explinati...](http://pastes.archbsd.net/graphitemaster/hashtable_explination)

<comment><USER24> see why couldn't the code be written this way by default! then they would've been understandable from the beginning!

</comment></comment></comment><comment><USER25> So, I have been looking at this implementation for several minutes. Ignoring what others have already posted about the code being way too dense for no benefit, how is this a hash table? It looks like a bog-standard associative array.

<comment><USER26> No doubt, I prefer to have actual hashing going on in my hash tables.

</comment></comment><comment><USER27> Why the hell does this thing get upvoted ? What's good about this implementation? It's cryptic, it's buggy and it's useless for any practical purpose.

Why is this better than an array of structs ? How much longer can that be ?

</comment><comment><USER28> If you rewrote this exact logic in Python it would be longer, because then the code would actually be readable.

However, fortunately it's just two chars: {}

<comment><USER29> It seems to me that the exact logic behind those two chars is roughly 150 times longer :) ( [https://github.com/python- git/python/blob/master/Objects/dic...](https://github.com/python- git/python/blob/master/Objects/dictobject.c) )

</comment></comment><comment><USER30> Is this some common style?

        int (**hnew())

I've never seen parens used like that. Usually it's:

        int **hnew()

<comment><USER31> [] has higher precedence than *, so without the parens you get "function returning array of two pointer to pointer to int" (which is illegal) instead of the desired "function returning pointer to pointer to array of two int".

<comment><USER32> So would that be equal to this?

        typedef int arr2int[2];
        typedef arr2int** ptr_arr2int;

        #define SIZE 1024
        static ptr_arr2int hnew() {
            return calloc(sizeof(int**), SIZE);
        }

</comment></comment></comment><comment><USER33> This doesn't seem to use the hash in the first access. So the first hset, seems to always go to the first row of the table.

Perhaps this is what is desired (fixing roll over issue as well):

        static int (**hget(int (**t)[2], int k))[2] {
          int (**t_old)[2] =   t;
          int h = k & (SIZE - 1);
          for (t = t + h; **t && ***t != k;
               h = ((h + 1) & (SIZE - 1)), t += h, t = t_old + ((t - t_old) & (SIZE - 1)));
          return t;
        }

</comment><comment><USER34> everything is 15-line when you have semicolon.

</comment><comment><USER35> Won't hget() easily run off the end of the array if it has a few collisions? The function doesn't save off the original value of t and then does an unbounded number of (t += h) operations.

edit: someone else pointed this out already. How did this make it to the front page of HN?

</comment><comment><USER32> Is this even a hash table? It looks more like a regular associative array. It seems like look ups are linear in time which is ditching one of the biggest advantages with hash tables.

Also since keys are integers, how this would be useful? Isn't the same that a regular array?

</comment><comment><USER36> It took me some serious thinking to figure out why you could take __t, despite _t being NULL.

If I managed to understand it correctly, it is because __t is an array, and arrays are special.

_ t is a pointer to an array, i.e. it points to the first element of the array. __t is an array, which means it behaves like a pointer to the first element.

The remarkable consequence of this is that _t and_ _t have the same numerical value, but different types._ t== __t evaluates to true.

</comment><comment><USER37> A bug nobody has pointed out yet is that star-star-t (sorry, can't figure out this site's markup for escaping stars) dereferences a null pointer. It appears to work because gcc decides to generate the same code for star-star-t as for star-t (which is correct behaviour if star-t is not NULL, and moot if t is NULL). The code should just be star-t there.

Also, sizeof(int star-star) in hnew should be sizeof( int (star)[2] ).

</comment><comment><USER38> I'd call this 16 lines - multiple statements on one line is cheating; if we're going that route this could be 3 lines.

</comment><comment><USER39> A small improvement could be to hash the key using a prime multiplier and successive multiplications, instead of using the key and increments of one. It'd reduce the collisions at the expense of a more computationally expensive hash function.

<comment><USER40> The problem with that method is that it doesn't have data access locality, while linear probing does. Linear probing ends up being more efficient because it is easy on the cache.

<comment><USER41> It seems to me this would only be true if the keys that collide are related to each other, or you have a vastly oversized table that you collide a lot in, at which point you're just accidentally synthesizing a smaller table.

What am I missing here?

[edit] I guess the other situation would be if the keys are largely sequential, but then a hash table seems like an odd choice of data structure.

<comment><USER40> Linear probing works by initially hashing the value, call it h(x), then if there is a collision, it checks h(x)+1, h(x)+2, ..., h(x) + k, until it finds a open slot. Lookup works in the same way, and deletion is a bit more complicated.

This model plays nicely with the cache, although its downside is there tend to be more "runs" of contiguous filled slots in the hash table. This method still provably takes an expected insert/lookup time of O(1) with a 5-wise independent hash function and a load factor smaller than 1.

<comment><USER41> I do know how linear probing works, thanks. ;)

But now I see where the confusion lies. I was taking your post to be replying more to the hash function part of the GP, but you were talking specifically about the skip distance. Yes, now I see what you mean, and I'm not actually sure how I misinterpreted so badly in the first place.

</comment></comment></comment></comment></comment><comment><USER42> (Insert my usual rant about not checking malloc()/calloc() for failure.)

<comment><USER43> Note that on many systems (e.g. Linux), malloc/calloc won't always return NULL when you're out of memory because of lazy memory allocation policies. It will only crash when you start reading / writing. That makes it arguably less useful to test the return value.

edit: clarity.

<comment><USER44> However, mmap and the functions which rely on it will return MAP_FAILED/NULL if no gap large enough is found in the virtual address space or if you've used MAP_FIXED and the area isn't free. If you don't check for errors, the application could potentially end up trying to dereference a NULL pointer.

<comment><USER43> Ok, let me rephrase then: On modern systems, checking the return value of malloc() is not a proper way to check that the system is out of memory and therefore it doesn't guarantee that the program will run correctly in any case.

That's what I wanted to point, and I agree that it remains useful to detect other types of errors such as the ones you mentioned.

</comment></comment></comment></comment><comment><USER45> What's with the hardcoded size though...

<comment><USER46> Generally it's easier if the height of a hash table is a fixed value (which can be calculated once at runtime based on how much memory the table can consume) so that the hashing logic is:

target_row_number = table_height % int_value_of_key

If table height keeps changing then this formula would be inconsistent. This code isn't using % but kind of doing the same using &

</comment></comment><comment><USER47> Just add this line to make it much more readable typedef int ( __table_row)[2];

Replace ( __int)[2] with table_row :)

</comment><comment><USER48> Is learning how to create a hash table necessary for a software engineer?

<comment><USER49> Yes. Hash table, linked list and a graph of some sort are those fundamental datastructures that everyone should have implemented at least once by themselves. IMO, the core to excellent software engineering his having a lucid intuition about fundamental things such as those.

Mainly because they are simple, and lot of problems are solvable by using them without resorting to Someone Elses Gigantic Platform Framework.

</comment></comment><comment><USER50> hset doesn't allow you to overwrite old entries. But you can do it manually with hget.

</comment><comment><USER51> why would you a 2 element array of int here instead of defining a struct of 2 ints?

<comment><USER52> A wasteful struct - are you kidding?

<comment><USER51> I'm not. Is there some performance penalty for using a struct over a 2 element array?

<comment><USER53> No performance penalty. It would make the code longer.

Consider "<Foo> in <bar> lines" type articles to be performance pieces - <USER2> point is to make it short, not readable or user friendly.

</comment></comment></comment></comment><comment><USER54> unreadable code is unreadable

</comment><comment><USER55> just think how amazing and readable it could be in 100 lines

</comment><comment><USER56> C++ wins again.

<comment><USER57> C++ never won.</comment></comment>


Retail Stock Broker TradeKing Dives Head-First Into Social Networking - <AUTHOR> http://wallstreetandtech.com/printableArticle.jhtml;jsessionid=PERGSOYSTMBWKQSNDLPCKH0CJUNN2JVN?articleID=212900584&_requestid=273848

<comment><AUTHOR> Here's what that part of their web site looks like: <http://community.tradeking.com/></comment>


Ask HN: Do any of you dislike using Visual Studio Code? - <AUTHOR> Given how very popular it is, anyone here actually dislike using it? <comment><USER2> Just in case you mean the question literally, yes, some people on HN have said they dislike using it. I'm not one of them. I like it.

But you're probably asking for people who dislike it to tell you what it is about VS Code they dislike. I do like it, but in case they don't answer: When people have said they tried it but abandoned it, they usually say they like the snappier speed of the QT-based Sublime Text. Most of us, it seems, find the speed of VS Code good enough, but some people have said that they don't.

The next complaint isn't really dislike per se, but some people find that even though VS Code might work in general, their specific work is better done with more specialized tools, ex: xcode for iOS, Android Studio for Android, full Visual Studio for Windows apps, JetBrains IDEs for Java or Python, etc.

Those two are the reasons I've heard most from people who have rejected VS Code.

<comment><USER3> Sublime Text is not QT-Based.

According to Jon.[0]

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

<comment><USER2> +1. Thanks for that. I've heard it was QT many times, but Jon is the ultimate authority.

</comment></comment></comment><comment><USER4> Yea not a fan. Font rendering has always been hideous in Electron apps. Even with a 4k monitors it doesn't render like Mac native apps do. Simple things you take for granted in Sublime like it opening, typing speed, ui scaling correctly. Plus things like no sidebar customization (literally every other part of the editor is customizable). Icons in the editor are hideous.

Then issues like these

[https://github.com/microsoft/vscode/issues/67288](https://github.com/microsoft/vscode/issues/67288) [https://github.com/microsoft/vscode/issues/67413](https://github.com/microsoft/vscode/issues/67413)

I question the people who use it and their attention to detail. If you zoom the editor all sort of issues start popping up. Stuff just shifting everywhere in the editor. So yea I don't like it and will be using Sublime for a long while, or at least until someone figures out how to do text input in Electron apps.

<comment><USER5> Not sure why you are getting downvotes. The question is literally asking for people who don't like vscode to voice their criticisms.

</comment></comment><comment><USER6> As someone (non-programmer, yet text-curious) who spent ~9months of this short life learning Emacs so I could use org-mode, I love using VS Code.

It's non-esoteric, easy to pick up, easy to kick ass with, and easy to show others how to kick ass with it.

The terrible parts:

\- I don't trust it , from a privacy-first standpoint, as much as I trust Emacs

\- There appears to be absolutely NO security around third party extensions (not good for newbs nor enterprise envs)

[https://stackoverflow.com/questions/55126683/how-is-vs- code-...](https://stackoverflow.com/questions/55126683/how-is-vs-code- extension-security-handled?r=SearchResults)

</comment><comment><USER7> I like it but have some bugbears with it:

\- I feel like once every couple weeks one or more of my extensions stop working properly, and I need to either restart vscode, or worse, I sometimes need to reinstall the extensions.

\- it's the heaviest 'lightweight ide' I've ever used, if that makes sense.

\- kind of part of the last issue, but I need to say it explicitly: Electron

</comment><comment><USER8> Nearly everyone at my shop uses vscode, but I stick with spacemacs for a few reasons: \- I know the shortcuts fairly well. If it ain't broke, etc.

\- Magit is a good enough reason to use emacs all by itself. The git integration in vscode can't touch it.

\- With vscode, if you want a given feature you have to search for extensions, vet them, pick one, etc. With spacemacs (most of the time) just search the docs, it's probably already there and all you need to do is make a keybinding. At worst you add a line or two to your config file.

\- Emacs was laughably slow on 80's hardware. Electron apps are laughably slow on 2010's hardware.

\- The vi bindings available for vscode aren't as deeply integrated as evil- mode is. If your muscle memory expects home-row navigation, it's extra frustrating when even most of your editor doesn't use it.

<comment><USER9> Do you do frontend stuff on your emacs? If yes; Mind if I take a look at your .emacs?

</comment></comment><comment><USER10> I am a Vim guy but find VSCode is the only option for TypeScript; none of the Vin plugins work quite as well. I'm happy with it. I much prefer my Vim setup, though, but for TS the seamlessness of VS Code is too good to give up. I enjoy the IDE part of VS Code; the editor, not so much.

<comment><USER11> Vim for vsc works pretty well. What don't you like about it! The word and line jump to are great.

</comment></comment><comment><USER12> Unfortunately, the Java support for any semi-serious multi component Java project is an absolute joke. It saddens me because I am basically forced to use VS Code for everything else and then IntelliJ for those projects, which breaks my workflows and my muscle memory for keybindings.

<comment><USER13> Same, my only complaint is that the java support isn't as good as intellij.

I use VSC for everything other than java without a hitch. The only issue I run into is sometimes the tslint plugin gets slow/refuses to clear certain errors - but a restart of VSC clears it up.

I'll agree with muscle memory for keybindings being an issue. I've re-mapped a bunch to be more consistent, but there are still some weird ones that throw me.

</comment></comment><comment><USER14> With Vim/Spacemacs/Tmux, Automator workflows (I am a Mac user), Notion/Org/Git[hub/lab] for tracking my project work;

I don't know if there is any need to switch to anything else. Yes, for my Mac land work, I bit the bullet and use Xcode.

So to answer, I dislike even the idea of moving onto something else with an already productive setup. I keep reading these VSCode articles, but I haven't found anything ultra special that inclines me to try out, maybe I am missing something here. And then their is always the fear of telemetry!!!

</comment><comment><USER15> What I don't like about VScode for C++: sometimes find source is very slow (much slower than doing a grep and opening the file yourself), and it opened the wrong file for one of my colleague, and find usage never work.

And I never managed to configure vim the way I wanted ('correct' usage of multiple tab when opening a function/file definition) That said I still prefer it over Eclipse or CLion..

<comment><USER15> Oops, I meant that even though VScode has many flaws (copy paste from the LinuxVM to Windows doesn't work), it still work better for me than Eclipse, CLion or Vim.

</comment></comment><comment><USER5> I want to like it but I have some problems with it.

I'm trying to use it to replace Jupyter notebooks, but some things don't work like I expect, the UI feels cluttered, and for some reason I've been having weird issues with the autocomplete when running code in kernels.

Right now I still prefer my Jupyter lab + pycharm setup. I may continue to try and learn better workflows with VScode because I think it has the potential to replace both for me and alleviate many pain points.

</comment><comment><USER16> I'm used to using Vim with a bunch of plug-ins as my IDE. VSCode allows me to get an almost identical setup plus some extra features set up in a fraction of the time. This comes with too big tradeoffs though: customizability and speed. I've found VSCode can get laggy, particularly on older machines or with many plug-ins loaded. There are also all kinds of UI things I find myself unable to configure (status bars etc.).

</comment><comment><USER17> I don't like VS Code git integration, WebStorms (JetBrains) diff/merge tool with syntax highlighting is superior.

<comment><USER18> Debugger also much better in JetBrains products

</comment></comment><comment><USER19> Compared to vim, yes. It's heavier, slower and depends too much on the mouse. I also have a vimrc I've maintained on github for the last 6 years, so configuring vim is as easy as running "git clone." That said, I could start doing the same with Code since it uses settings.json for everything.

Compared to everything else, no.

</comment><comment><USER20> I was a big sublime text user, but my work uses Vscode so I do too.

I hated it at first but am always amazed at the maturity of the whole extensions ecosystem. Could be the only thing from Microsoft I actually like!.... And all they did was fork Atom Editor...

</comment><comment><USER21> I just wish it worked better on the toaster machine I have to work on.

</comment><comment><USER22> After installing some extensions in VS code on windows, it do becomes slow. So I don't like that much. But vs code is better than others in the market.

</comment><comment><USER23> I like VSCode, but I get slightly annoyed at how its auto-indentation doesn't auto-de-indent after a closing brace (the way emacs does).

<comment><USER23> Disregard. Updated version works the way I expect it to. It must have been a while since I last used it.

</comment></comment><comment><USER24> I tried it and disliked it. Felt very heavy and complex compared to SublimeText.

</comment><comment><USER25> Ha, I still love TextPad, but more for writing, not coding. Let the editor wars begin!

</comment><comment><USER26> I think it's ok, but I like Sublime better and that's what I use.

</comment><comment><USER27> I like because it's free. But autocomplete is very slow.

</comment><comment><USER28> ITT: People saying they like VSCode</comment>


Can't stand sitting in an office anymore.  Suggestions? - <AUTHOR>

I've been a web developer and software engineer for 10 years now.  It's a blast, and I have outside projects I work on as well.  But I've gotten to the point where I can't sit in an office for 8 hours a day anymore.  I feel like my world revolves around the office, and I've lost touch with the outside world.  Any job suggestions for someone that needs to be up and about and interacting with the rest of the world, but with my job qualifications? <comment><USER2> Buy a boat and work there! You can work just like you do in an office, but the experience is so much more fun. The view is great, you can feed some ducks while you think over hard problems, and people love to visit because it's novel, fun and has a taste of freedom. You can sail off and throw an anchor somewhere and have long meetings and brainstorms. It's not as hard or expensive as it sounds.

It only works if you live near some large body of water of course...

<comment><USER3> You could always buy a boat an live in it in your garden, I know someone doing that.

</comment></comment><comment><USER4> Quit. Go solo. But first find yourself a single paying customer, and one that is prepared to pay you a bit up front and the rest on delivery.

That way you're out of the office and in and out of everybody elses.

Doing contract jobs for a while is great way to use the same skillset that you already have (job qualifications matter a lot less when you're contracting then when you're being hired for some odd reason).

Your new 'interview' will be the 'pitch', where you sell yourself and what you can do.

Start with offering your services back to your old boss :)

Beware though, there is no safety net, no guaranteed paycheck. It's not for everybody but if you can handle the lack of security and you are somewhat business savvy you'll do fine.

</comment><comment><USER5> Maybe I'm missing something; if you're in the office 8 hours a day, what are you doing with the other 16 that leaves you feeling out of touch with the outside world?

</comment><comment><USER3> Do it now, you won't regret it.

You already have outside contracts to get you 'ramen profitable'. What are you waiting for?

Try something completely mad if you want to get out and interact with the world. What about moobile web development? Pull up next to the burger van at you local car boot sale, in your Mr. Webby trailer and offer 'By one, get one free' websites. IDK, just an idea.

<comment><AUTHOR> Love it.

</comment></comment><comment><USER6> Volunteer a bit of your time to a charity or non-profit. It can be extremely rewarding to give like that, and it might help you feel more connected to the world.

Or, you could ditch your office job all together and find a day-to-day "work" activity that does help you feel more connected to the world.

</comment><comment><USER7> Can you work from home? At least part of the week? Maybe just come in for meetings?

If you can, then any place with a wireless network can be your office... (a good wireless network anyway).

I'm sure I stole this suggestion from someone else, so if you want credit feel free to take it.

</comment><comment><USER8> Move to another country and sit in an office there? Ok, sure, you're still in an office, but the novelty of it all will be a good experience.

</comment><comment><USER9> How about teaching?

<comment><USER3> Please, please don't go into teaching if it's not something that you feel really driven to do. The education system is full of unmotivated seat warmers just there for the paycheck, and missing the whole point of how crucially important teaching is.

<comment><USER10> Yes, no one wants bad teachers. But teaching seems like one of those things that you have to actually do in order to know if you could be successful at it. I know quite a few teachers who thought they were passionate about the profession and quickly burned out. Others came to it from other fields after some searching and became good teachers.

While I agree that you shouldn't just pick teaching as your career on a whim, like so many other things in life, sometimes you just gotta try things out to see whether you're good at them and enjoy them. The hard part is moving along when you know you need to.

</comment></comment></comment><comment><USER11> I have the exact same problem and it's driving me nuts. I really love what I do, but I have to force myself to get and walk around with nowhere to go. It just doesn't seem natural.

One of the things I'm examining is a position as a "sales engineer". I would go on the road and help sell, train users, teach, and evangelize the technology. I'd get to program a little (proof on concepts, demos, example apps, etc.) but not sit in an office all day long. Best of both worlds. Stay tuned...</comment>


Ancient Maya traded dogs for use in religious ceremonies, new study shows - <AUTHOR> https://arstechnica.com/science/2018/03/ancient-maya-traded-dogs-for-use-in-religious-ceremonies-new-study-shows/ <comment><USER2> Sure, you could probably keep some spare pooches in an underground mausoleum until you needed them. It was probably the world's first crypt dog currency.

<comment><USER3> A Dogecoin precursor, for sure.</comment></comment>


Unicorn has become Unirest - <AUTHOR> http://blog.mashape.com/post/48795953944/unicorn-has-become-unirest

<comment><USER2> I'm guessing you aren't ruby guys then :)

<comment><AUTHOR> You would be correct. I think we learned our lesson and actually came out with a better name and website in the process.</comment></comment>


Ask YC: Suggest a good IDE for Scheme please.  - <AUTHOR>

Or am I doomed with DrScheme.
<comment><USER2> What's wrong with DrScheme?

Here's a Scheme editor plugin for Eclipse:

<http://schemeway.sf.net/>

I use emacs myself.

<comment><AUTHOR> Just bugged with the looks. Thanks for the eclipse link. I will try that out. Or 'go back' to emacs.

</comment></comment><comment><USER3> Emacs</comment>


EasyDNS refuses to host The DailyStormer domain - <AUTHOR> https://www.easydns.com/blog/2017/09/08/easydns-refuses-to-host-dailystormer/ <comment><USER2> Somewhat dichotomously, I agree with every position mark takes in the linked post, but at the same time, I'm quietly waiting to see where Daily Stormer ends up landing, so that I can start treating them as the 'real' bastions of free speech, and very likely start throwing them my business.

It isn't because I'm sympathetic to the nazis in this scenario, but if you're trying to position yourself as "the free speech registrar", but draw the line at white supremacy because you're in an interracial marriage, then the signal I get from that is that you clearly don't cherish _all_ free speech, and gives me pause that one of my community sites might end up running afoul of whatever those arbitrary policies are in the future.

<comment><USER3> Preface: this is an honest question, stemming from my own life and current group of friends--the circumstances that frame the issue for me--it isn't intended as snark or a take-down or anything...

Do you have many friends right now who are people of color, or queer/gay, or even Jewish? How do you explain to them that you'd like to support the business that goes against the grain and hosts Nazi/white supremacist material?

I'm asking this because, right now, most of my friends are not white/hetero, and right now, they're all terrified of the US political climate for different reasons--the brown folks of being attacked (physically) by white supremacists and knowing the cops won't defend them (and in a lot of cases, the cops ARE the white supremacists), and the gays of being attacked by everyone. They're largely living in fear, and that's shitty.

I don't know if I could look them in the eye and say, "I've switched over to registrar X, because only they stood up for the Daily Stormer."

Actually, I know I couldn't say that to them, because what kind of asshole would I look like to my friends if I did that?

Again, this is my experience, but I'm curious how ours differ.

<comment><USER4> They would not be standing for the Daily Stormer, they would be standing for Free Speech.

The concept that allowed the struggles from minorities to be heard in the first place, and therefore to improve things tremendously for gay and black people.

We can see that this is not a given, for example Russia is starting to crack down on 'pro-gay' speech : [http://thegroundtruthproject.org/russias-assault- on-gay-free...](http://thegroundtruthproject.org/russias-assault-on-gay-free- speech/)

But defending free speech is sometimes hard, because it also means letting people you disagree with speak freely even if it obvious to you they're spewing bullshit. You can't force them to stop, legally or otherwise, but you can expose their bullshit for what it is.

It is much harder to actually argue with someone (or 100 of people), especially when they're unreasonable/stupid, than to shut them down. However, the alternative is to have some kind of moral police to decide what is allowed or not, and force the literally unquestionable selected truth on everyone, which is much more dangerous overall in my opinion (see what could be done with Trump and climate change, or Putin with gay people).

</comment></comment></comment><comment><USER5> Their reasoning seems to be this:

We are a free speech registrar. free speech means a private company shouldn't be forced to host content it disagrees with. We are a company and we disagree with the content, therefore we will not host it.

OK fine, but this reduces "free speech registrar" to something pretty meaningless from a consumer point of view.

<comment><USER6> free speech, for us

</comment></comment><comment><USER7> In an earlier post ([https://www.easydns.com/blog/2017/09/06/why-does-easydns- pro...](https://www.easydns.com/blog/2017/09/06/why-does-easydns-provide- services-to-martian-separatists/)) supporting free expression, EasyDNS says that they will only refuse service to sites that advocate or encourage "physical violence or harm toward an identifiable minority." I have never been to the DailyStormer site, so I don't know if they meet that criteria. If they don't, EasyDNS, while well within their rights, is not living up to their own standards.

<comment><USER8> Random page: [https://web.archive.org/web/20170516210944/https://www.daily...](https://web.archive.org/web/20170516210944/https://www.dailystormer.com/happening- berkeley-street-war-is-going-down-without-ann-yes/) Asking people to be beaten up.

<comment><USER9> I don't want to read whatever that is too closely but looks like some random blog post where some idiot claims 'antifa' or 'right wing protestors' located at some rally 'deserve to be beaten up'.

You may find there are other blogging platforms out there with actual requests for violence, often justified with a tagline 'Punch a nazi!'.

<comment><USER10> The OP asked if the daily stormer hosted content calling for physical violence and evidence was given. I'm sure plenty of other blogging platforms call for physical violence, whats the point? Are they EasyDNS customers? If they are, you should probably let EasyDNS know. If not, your comment is entirely worthless.

</comment></comment></comment></comment><comment><USER11> > It even means a restaurant should be able to refuse to seat (pick one): > black people, white people, males, redheads, left-handed people or > introverts. Whatever. They probably won't stay in business very long, it's a > form of corporate Darwinism.

I think the point of the argument is that you can't pick and choose when discrimination is OK. But then the second half, about corporate Darwinism, is a moral escape hatch, possibly because the author senses how manifestly wrong that argument feels.

There is no one-size-fits-all solution. Right vs. wrong will be a "you know it when you see it" case by case basis. And the test for that will mutate as our society mutates. Things that feel right today will embarrass our children.

What I think is important today is not to rely on capitalist mechanisms to protect minorities from discrimination. Wheelchair ramps are needed by a tiny fraction of our society. Many businesses probably wouldn't bother with accessibility, but it's mandated, because the disabled don't have a large enough wallet to bankrupt companies that don't put ramps in.

<comment><USER12> "There is no one-size-fits-all solution. Right vs. wrong will be a 'you know it when you see it' case by case basis."

this is something i observe people, especially intelligent people, rejecting almost out of reflex, and it bothers me more and more. reasoning from first principles and justifying each step of reasoning is fine, but it is only an exercise in making models and thinking through those models. the general terms you make up along the way are only objects of your thinking. in actual reality there are only unique, concrete circumstances. human judgement has a place, but so often people act as if it doesn't, and they act as if holding that view makes them less biased-- not biased by their own judgement, i suppose. but it doesn't, they only apply that treatment to everything... but for some things it never occurs to them. their biases are still there, hidden in their tepidness, even if they never say this or that is wrong, or _because_ the never say this or that is wrong.

</comment></comment><comment><USER13> > It even means a restaurant should be able to refuse to seat (pick one): > black people, white people, males, redheads, left-handed people or > introverts. Whatever. They probably won't stay in business very long, it's a > form of corporate Darwinism.

I wonder how the civil rights era would have gone if the courts agreed.

<comment><USER14> > It even means a restaurant should be able to refuse to seat (pick one): > black people, white people, males, redheads, left-handed people or > introverts. Whatever. They probably won't stay in business very long, it's a > form of corporate Darwinism.

I find it ironic that this is (presumably) precisely the position The Daily Stormer would take on those issues.

<comment><USER15> The civil rights era argument outlines a pretty solid meta-principle. Certain public accomodations should be open to all. I think this list should be limited, but a public service that effectively acts as a gateway to public speech could be argued to meet the criteria. I think we're seeing an illustration of the point(also made during the civil rights era) that the cost of discriminating against a disliked minority can in fact be very low, so low that the market tolerates this inefficiency. Or perhaps it isn't irrational at all, as the market majority may indeed reward the discriminator for providing this non-monetary good. I hope they find a provider, on principle.

<comment><USER13> The cost of discriminating can be negative, for example, if the wealthier group that you allow in prefers your establishment if you keep the group they dislike out.

</comment></comment></comment></comment><comment><USER16> "It even means a restaurant should be able to refuse to seat (pick one): black people, white people, males, redheads, left-handed people or introverts. Whatever. They probably won't stay in business very long, it's a form of corporate Darwinism." Well unless, racism, islamophobie, or antisemitism are en vogue, then the minority is screwed.

<comment><USER14> Right. Societies without a government, or without an effective government, have no succor for the despised minority: If the majority hates you, nobody _except_ the government can push back on that hatred.

Racism is like pollution, in that being the first to stop doing it has disastrous downsides, even if you don't like the end result. It's a Nash Equilibrium.

</comment></comment><comment><USER17> With companies now coming up with exceptions to their free speech ideology, whats the technical solution? Seems the only place left for these unwanted groups, the dark web of tor.

The thing that interests me is technical issues of a site nobody wants to host. Deny them DNS, Deny them DDOS protection, Deny them hosting, whats left?

<comment><USER18> > Deny them DNS, Deny them DDOS protection, Deny them hosting, whats left?

I mean, not being a neo-Nazi is an option...

<comment><USER19> The fear that most Free Speech absolutists have is that tomorrow it will be: "I mean, not being a socialist|capitalist|religious individual is an option..."

From an Ideals perspective, its a valid and valiant fear, but I don't understand the absolutist position. Legitimate verbal threats are still allowed under absolute free speech, but they obviously produce harm. Should we really allow anyone to threaten the life or livelihood of another human being without repercussion?

Absolutism in the other direction is just as dystopian as well. Follow the exact line of populist opinion or else.

So "Free speech on principal" people, where does it end? What ISN'T "Free Speech" to you?

<comment><USER20> Anything that doesn't directly call for violence. If you're presenting a position that others are free to evaluate on the merits, then free speech covers it. The point of allowing free speech is to be open to the truth. That doesn't mean that the truth is never ugly or in disharmony with fashionable opinion.

</comment></comment></comment></comment><comment><USER21> This is part of a disturbing new trend of "political discrimination". If someone opposes the policies of an identity group, in this case mixed-race marriages, but it could be women, gays, or rural white Christians, then that opposition is labeled "hate". Once labeled, their speech is deemed offensive and censored, and they become fair game for political discrimination, to be fired from their jobs, kicked off social media, and otherwise ostracized.

<comment><USER22> Can you explain what you mean by the "policies of an identity group"?

In general the minority identity groups only policy is that they ought to be treated just like everyone else. I'd say that if you're trying to maintain a status quo where the majority is treated preferentially that your opposition is "hate" as is meant by the word today.

<comment><USER20> What does "treated like everyone else" mean and how do you know when it's been achieved? This kind of standard ranges from the most minimal legal equality of opportunity to full on equality of outcome.

</comment></comment></comment><comment><USER23> The unfettered free market has historically not been very swift or efficient in correcting discrimination

<comment><USER24> Please provide us with some examples of the "unfettered free market," thanks

</comment></comment><comment><USER25> >It even means a restaurant should be able to refuse to seat (pick one): black people, white people, males, redheads, left-handed people or introverts.

That is an odd position for a man in a mixed-race marriage with a mixed-race child to take, because not too long ago it would have meant his child might not be served or seated. It's only because our government took steps to end discrimination (after being forced to do so by the people) that it's safe to hold such unenlightened opinions. I wonder if he'll ever explain to his own child that it's OK they were discriminated against because "corporate Darwinism".

One can and should be able to discriminate all day long on the basis of ideas or actions, which is what has happened with Anglin and his crew of a-holes (sort of - I suspect it's more ass-covering than principle in a lot of cases).

But, discrimination should not happen based on something an individual cannot change, which is what the OP seems to be OK with.

<comment><AUTHOR> > That is an odd position for a man in a mixed-race marriage with a mixed-race > child to take, because not too long ago it would have meant his child might > not be served or seated.

That's not an odd position at all. Would I want to force some white supremacist line cook and their inbred waiter to serve my wife and child in their restaurant? No thanks. I'll go somewhere else.

</comment></comment><comment><USER26> > I've stated numerous times in the past that I uphold the right for any > business to decide for themselves who they will or will not conduct business > with. In the long run I firmly believe an unfettered free market would sort > out who is on the right side or the wrong side of history.

> That means that you can't force a bible-thumping fundamentalist baker to > make a cake for a gay wedding if he doesn't want to.

> It even means a restaurant should be able to refuse to seat (pick one): > black people, white people, males, redheads, left-handed people or > introverts. Whatever. They probably won't stay in business very long, it's a > form of corporate Darwinism.

Unfortunately, it doesn't always work that way. Consider just how pervasive and resilient segregation was; or, how a restaurant might actually _attract_ business from like-minded customers who want to make a point (e.g. Chik-fil-a)

</comment><comment><USER27> Something of a parable (not my words) follows:

In Chesterton's The Secret of Father Brown, a beloved nobleman who murdered his good-for-nothing brother in a duel thirty years ago returns to his hometown wracked by guilt. All the townspeople want to forgive him immediately, and they mock the titular priest for only being willing to give a measured forgiveness conditional on penance and self-reflection. They lecture the priest on the virtues of charity and compassion.

Later, it comes out that the beloved nobleman did not in fact kill his good- for-nothing brother. The good-for-nothing brother killed the beloved nobleman (and stole his identity). Now the townspeople want to see him lynched or burned alive, and it is only the priest who – consistently – offers a measured forgiveness conditional on penance and self-reflection.

The priest tells them:

> It seems to me that you only pardon the sins that you don't really think > sinful. You only forgive criminals when they commit what you don't regard as > crimes, but rather as conventions. You forgive a conventional duel just as > you forgive a conventional divorce. You forgive because there isn't anything > to be forgiven.

He further notes that this is why the townspeople can self-righteously consider themselves more compassionate and forgiving than he is. Actual forgiveness, the kind the priest needs to cultivate to forgive evildoers, is really really hard. The fake forgiveness the townspeople use to forgive the people they like is really easy, so they get to boast not only of their forgiving nature, but of how much nicer they are than those mean old priests who find forgiveness difficult and want penance along with it.

From Scott Alexander: [http://slatestarcodex.com/2014/09/30/i-can-tolerate- anything...](http://slatestarcodex.com/2014/09/30/i-can-tolerate-anything- except-the-outgroup/)

Forgiveness here is somewhat like free speech. If you are for free speech when you do not find it objectionable, you are not really for free speech at all.

</comment><comment><AUTHOR> Parenthetically... I notice that the comments on this thread which provided the address the dailystormer domain in a ccTLD and the .onion address, have been completely removed. Not downvoted, but they look totally gone to me.

</comment><comment><USER28> Do you consider it net neutrality violation?

</comment><comment><USER29> Another cowardly "free speech but..." Either you support free speech (including Nazis or whatever today's boogeyman is) or you don't support free speech at all. Claiming you support free speech only when you like the speech is abjectly idiotic. When you start blocking people from using your service for their speech, it's time to stop calling yourself the "free speech registrar."

<comment><USER30> Why does it have to be either/or? Society does not operate by strictly logical principles. I see no problem with "mostly free speech, except for extremists".

<comment><USER29> "Extremists" like that communist agitator Martin Luther King and all those "extremist" satanic homosexuals spreading AIDS? Good thing we stopped them from speaking, right? Go to Saudi Arabia, they support free speech, except for those extremists who claim Mohamed wasn't the true prophet of Allah. Back in the USSR they supported free speech, except for those extremists who undermined worker morale.

Pretending you and your allies can quasi-objectively categorize "extremists" is exactly the sort of mass delusion we need free speech to prevent.

<comment><USER31> The particular speech in question matters here at _some_ level, doesn't it? Society is messy and collaborative, and applying a first amendment-style rule to literally everyone on literally every subject is untenable.

In a sense it's even paradoxical. You can't say that everyone must uphold free speech on every subject without restricting their own freedom in some way.

<comment><USER32> The paradox being "either 'everyone must let others speak freely' or 'you are free to decide when others can't speak freely' but not both?"

Why would this paradox arise in a just society? Specifically the second condition.

My (Kantian) ethical justification for the first is "in any situation where I use the rule, I would want its use to be universally established", whereas in the second condition it is clearly false to say that every situation where I restrict someone else's speech coexists with my desire for everyone else to decide when another's speech should be restricted, since my desire to censor and my opponent's opposite desire would contradict that I am acting how I would if I wanted the rule to be universal.

Isn't the only freedom you're restricting by upholding free speech, the freedom to arbitrarily restrict freedoms all for the sake of promoting big- picture freedom? I find it hard to see this as consistent. What kinds of scenarios do you see as too messy/exceptional/extraordinary where freedom of speech becomes a self-imposed restriction?

<comment><USER31> "you are free to decide when others can't speak freely" is a bit reductionist considering we're talking about a platform providing the capability for others' speech. Other situations that introduce nuance are private spaces, individuals' social media feeds, etc.

It's not about "freedom" to restrict others' speech- it's about freedom _not_ to support it or to listen to it.

<comment><USER32> Fair enough, I see how providing the medium for another person's actions is different than putting yourself in a position of authority over them.

That said, there is an argument to be made that a host should not worry that they are partly to blame for, or that their non-intervention suggests tacit approval of, a user's detestable messages - simply because the host just isn't accountable for the user's actions. The solution to not supporting it, imo, is to be explicit about the host's scope of permissions and banned content right up front, before problems occur, because then the responsibility for the user to not do so is recorded. [If the agreement clause is really vague and allows nearly anything, it doesn't change that the user can expect it to be used.]

Freedom to not listen to speech is in my opinion just as valid as the freedom to speak; maybe I'd call it the freedom to silence :P

[An extreme example of Kant is that, if a murderer asks, you _should_ tell them where the person they say they are going to kill is, instead of lying. The reason goes: right and wrong having nothing to do with morality (universal law) so you can't justify lying to the murderer if you see them as a person who is an end in themselves- rather the lie is a way to pursue a right and wrong based in single situation hypotheticals (whether you should manipulate the murderer to save lives), which means it can't derive its value to you from being universally applicable, from not originating from a categorical truth. The reason although people are worth more than a means, you still can't mislead the murderer so as to protect a valuable life, is that the potential murderer, also an undeniable end in themselves, is the one upon whom the responsibility for the murder should be placed - you are not responsible whether or not the murderer tells the truth that they will kill or if they lie. They are still totally free to choose not to murder the person after you give their location away anyway. Do I think I would act this way? I really don't think so. Another way to resolve it is to keep quiet lol]

</comment></comment></comment></comment></comment></comment></comment><comment><USER33> Do Nazis have a right to running water, electricity, fire department services, access to medical care, and police protection? Yes.

Do Nazis have a right to have their op-eds published in the New York Times? No.

Where does DNS lie on this continuum? It feels pretty infrastructure-y to me. Perhaps there should be a "public option" for DNS.

</comment><comment><USER34> There was an article in WSJ yesterday highlighting the hypocrisy of Big Tech when it comes to Net Neutrality. Everyone keeps railing against telecoms that they might start censoring things or making them unprofitable, while there isn't a single example of that anyone can name. Yet there are a lot of recent examples where tech companies censor or demonetize the material they don't like. Daily Stormer is an extreme example, of course, but there are far less extreme ones as well. The other day Dave Rubin got a lot of his videos demonetized without explanation. There's no "hate speech" in his videos and never was. And that's just one example out of dozens just recently.

You can't eat your cake and have it too. Tech companies should not be in the business of censoring views they dislike, even in the extreme cases such as this one, especially if they insist that telecoms must operate like utilities.

</comment><comment><USER35> People like to forget that private companies don't have to care about your first amendment rights.

<comment><USER23> They do have to care about the Civil Rights Act of 1964 though.

<comment><USER36> The Civil Rights Act of 1964 bans discrimination against protected classes, including sex, race, and religion, but not political ideology.

</comment></comment></comment><comment><USER8> I really, really like it. Thank you guys. Hate speech, yeah, free speech. But you are not free of the consequences.

</comment><comment><USER37> _" I uphold the right for any business to decide for themselves who they will or will not conduct business with. In the long run I firmly believe an unfettered free market would sort out who is on the right side or the wrong side of history. ... It even means a restaurant should be able to refuse to seat (pick one): black people, white people, males, redheads, left-handed people or introverts. Whatever. They probably won't stay in business very long, it's a form of corporate Darwinism. ... But as a man in an interracial marriage with a mixed-race child, being asked to risk our business and our customers, to put our asses on the line for a bunch of white supremacists?"_

Bollocks. I agree with the right of his company to refuse to host a neonazi/hate speech mongering site. However, it wasn't the "unfettered free market" that resulted in civil rights laws being implemented, it was long drawn out resistance (with great costs especially to minorities' lives) and eventual government intervention that changed the status quo in the US and to suggest otherwise is asinine.

His reasoning also falsely suggests that he'd be fine with repeated psychological harm at minimum to his family if they were to face multiple blatantly racist encounters like being insulted/threatened/refused service anywhere because of who they are, since they'd be comforted with knowing the free market would eventually sort it out.</comment>