Snorkel AI: Putting Data First in ML Development - <AUTHOR> https://www.snorkel.ai/07-14-2020-snorkel-ai-launch.html <comment><USER2> They totally ignored the open source package in their site. [https://github.com/snorkel-team/snorkel](https://github.com/snorkel- team/snorkel) Moreover, based on the commit history in github, and their README.md , my understanding is that they will stop supporting their open source repo. Best of luck for them.

<comment><USER3> If anyone is looking for an open source library in this space, I work on one called Compose ([https://github.com/FeatureLabs/compose](https://github.com/FeatureLabs/compose)).

With compose, a user defines a labeling function, and then compose scans the historical data looking for training examples to train a machine learning model.

The library has evolved as we apply it to more and more real world use cases, but it is based on approach in this paper from 2016: [https://dai.lids.mit.edu/wp- content/uploads/2016/08/07796929...](https://dai.lids.mit.edu/wp- content/uploads/2016/08/07796929.pdf).

<comment><USER4> can you do multi-label w/ Compose? Snorkel only supports single-label.

<comment> jeff-hernandez Yes, you can represent the labeling function as a class and use its methods to represent each label individually.

</comment></comment></comment></comment><comment><USER5> Myself and a few colleagues attended the _absolutely packed_ presentation the Snorkel folks did at ODSC in Boston last year and came away so convinced by this approach that we actually constructed our interns summer project around using Snorkel for multi-label classification on complex very domain specific financial documents. The project was successful and both us and our intern were very happy.

The main lessons learned from this exercise helped us identify where our efforts would be shifted when using Snorkel. Of course there's never any free lunch, but Snorkel has what I believe to be a very reasonable and effective trade off. Snorkel provides both a huge decrease in overall costs, but critically it shifts costs towards the front of the development process. Writing a good set of labeling functions is a non-trivial piece of work. It requires the data scientist to have deep domain experience or a few fairly large blocks of time collaborating with and learning from a business user that is a already a domain expert. It has the upside though of forcing the data scientist to get a solid foundation of this domain knowledge, which I feel often times is underestimated in many ML projects.

Anyways, congrats to the team! Looking forward to checking out your future work.

<comment><USER4> can you educate me on how you do multi-label w/ snorkel? As far as I can understand that's one it's largest drawbacks.

<comment><USER5> Fair question. I didn't personally supervise our last intern, it was my turn the summer before, so I'm not as deeply familiar with it. Now that you bring this up though, I think perhaps I may have misspoken. When I said muti-label, I think that was our goal originally, but because of the constraints of Snorkel you mentioned, we ended up reframing the problem into many single class models instead. They would both work, but because of how our business users worked, multi-label wasn't super important. For example, not all business users are interested in every label, so I think what happened was more than one model was trained, one for each label, and then ensembled based on the business users interests. Our final output allowed users to effectively sort, filter, and search documents based on any combination of these labels. Keep in mind too, some of these labels are fairly abstract, so just one of them was fairly powerful by itself and could perhaps power an entire team in some cases. I hope that helps, I'm sorry I can't go into too much more detail.

<comment><USER4> yeah, you can do single-label w/ snorkel, but not multi-label. Multi-label snorkel would be the killer feature bc making the negatives (ie for a softmax) is very hard especially when you work w/ user-interaction systems with an unknown negative distribution.

<comment><USER6> You can always do multi-label as a multi-task learning model (or just a set of binary models), which is something we (and many others) have explored before! A lot of the adjustments for mainline Snorkel have to do with (A) the semantics of the labeling functions (need to be able to express that something is _not_ class A and/or have a general per-class prior) and (B) all the infra to support what is just now a bunch of independent per-label binary tasks, at base

<comment><USER4> Snorkel has a label mutual exclusion assumption right?

My core problem is a multi-label problem, but my snorkel data, from the LabelModel is inherently single-label (mutually exclusive). What is the prevailing recommendation to do multi-label w/ Snorkel? Is the below what you are currently recommending?

For a given, k-wise multi-label problem:

1\. Generate k binary datasets w/ LabelModel 2\. Train k separate binary classifiers for each respective dataset 3\. At inference/prediction time pass input though the k classifiers and get scores.

Is this what the current recommendation is? Create a set of binary classifiers?

</comment></comment></comment></comment></comment></comment><comment><USER7> What does it actually do? I know "label data" but anything can do that.

Is it just a pipeline system with some helpers for running a couple of ML related functions?

Is it UI based?

Where do you run it?

I know these areas well and got nearly nothing from reading the splash page on the site.

<comment><USER8> I also have problems understanding what exactly it does. I just briefly skimmed the paper, but it seems like the idea is as follows. Assuming you don't have ground truth labels for your data:

1\. Generate many different nosiy labels for your data by writing functions. These don't need to be correct, but they should make uncorrelated errors. They are basically domain knowledge you have of your data.

2\. Snorkel takes the output of these functions, and based on their (dis)agreement, builds a generative probabilistic model to uncorrelate your labels, which may have had some overlap in the errors.

3\. You train your final discriminative model on the output of that probabilistic model.

So, the main idea is to create many noisy labels instead of relying on a single high-quality label and Snorkel does the hard work of figuring out how to smartly combine these labels so you can train on something clean.

<comment><USER6> Yup! The LFs can also actually be correlated- just not _too_ correlated (roughly, think of needing at least three mostly uncorrelated cliques, to be precise).

Part of the high level description, though, is that a lot of different parts and lines of work are integrated into Snorkel Flow beyond just this original programmatic labeling idea. So also programmatic operators for data augmentation, "slicing" or partitioning of data, and the overall end-to-end platform (UI + SDK) supporting iterative development of ML models via this paradigm of programmatic training data.

</comment></comment></comment><comment><USER9> Forgive me - but how does this avoid the chicken&egg problem here. Without digging through the promo copy, why would one programmatically label training data to do ML on if they have such a program to label data...

<comment><USER10> Labels are knowledge about data. If you already know some rules that work reasonably well based on your domain experience, then Snorkel lets you capture those as "labeling functions" that may not cover the whole ground or can be "noisy". Snorkel can then build a model to label your data accounting for the "noise". Combining that with some "gold" labels (done by humans), you can use the generated labels on a large data set to build a higher quality model that generalizes better. This is similar to how you can take several low quality models and by virtue of them having expertise over different parts of the data, build an "ensemble" model that performs better than any of them.

Imho, Snorkel kinds of tools ("weak supervision") are game changers for ML .. though the biggies get all the press. So I'm excited to see this end to end direction taken by the team.

<comment><USER11> is not this done for years and called synthetic data generation, simulation etc.

<comment><USER10> Not data generation. Label generation. .. but the charitable interpretation of your question is valid - we've been doing such ensembling to make higher quality models for some time now. It's getting some good structure, practice and tooling around it is what I feel.

<comment><USER11> Yeh then advertise it as a tool rather than AI. The problem is that sorkle is trying to sell snake oil on the name of Stanford and AI. Under the hood it is just a data generation pipeline. Remember you can't put label on random data. So "Not data generation. Label generation" is totally does not make any sense and sound to me like "brown sugar".

</comment></comment></comment></comment></comment><comment><USER4> anyone figure out how to do multi-label classification w/ snorkel? It seems like it's current formulation only supports single-label, ie softmax.

I find in practice, especially w/ user-interaction, system most problems are not single-label, but multi-label. Also, in the single-label setting it's often necessary to define an negative "OTEHR" class which is very difficult to define w/ snorkel in my experience.

<comment><USER6> Single label has been the applicable one for most of the applications we've tackled to date, but agreed that multi-label is also very important! More coming here soon...

<comment><USER4> Thanks Alex. I'm sure you can relate that when you have a an unbounded input distribution (like w/ user-interaction systems), defining that other class w/ current snorkel is difficult/impossible.

<comment><USER6> Yeah definitely- and would love to chat sometime, as this is a space I've at least had less direct hands-on interaction with. There's a line of work in the ML literature on "Positive unlabeled (PU) learning"\--basically, setting where there are only positive labels or abstains--with a lot of theoretical ties to what our stuff rests on, I think a tie in here is interesting. Of course, most of these approaches rely on some (to varying degrees) hidden and very strong distributional assumption... anyway looking forward to a chat!

<comment><USER4> Thanks for the lead on PU Learning.

I signed up for a demo of the new platform, looking forward to chatting. Me and a colleague from work spoke w/ Henry last year about a potential partnership but I guess it got lost in the mix...

</comment></comment></comment></comment></comment><comment><USER12> One of the things I'm really curious about is how Snorkel deals with poor labelling functions. More generally, labelling functions are another data source for the model and are just as susceptible to corruption and other real world issues like completeness, bias, counter factual issues and repetition. Perhaps even more so because these are manually constructed. For example, you can imagine that the person writing labelling functions writes effectively the same rule many times over. My understanding of the paper is that Snorkel would then weight this repeated labelling very heavily. I think weak supervision techniques (at least the ones under the Hazy Research umbrella) require a degree of skill in machine learning that is easy to underestimate if you just think about the problem as an issue of domain understanding (or writing labelling functions in Snorkel terms)

<comment><USER13> My understanding is different. I think you are talking about correlated data source. Snorkel's surprising innovation is that it does NOT overweigh correlated data source.

<comment><USER12> So, I am specifically talking about the scenario where all your _labelling functions_ are highly correlated and there is little or no ground truth data to come up with empirical weights for each of the labelling functions. An example is the scenario where you have the label functions: x>5, x>4.99, x>5.01 for some feature x. I am really struggling to see how Snorkel can correct for the correlation, especially given the relatively simple generative model in section 2.2 of the paper. [https://arxiv.org/pdf/1711.10160.pdf](https://arxiv.org/pdf/1711.10160.pdf)

<comment><AUTHOR> The Snorkel paper doesn't cover this in depth, the math is all in this paper:

[https://arxiv.org/abs/1703.00854](https://arxiv.org/abs/1703.00854)

I can't say I followed all the proofs, but it seems that under certain limited assumptions about labelling functions they prove their generative function can do well.

Reading Snorkel it initially sounded like magic in the bad way, but this does make it clear that if your labelling functions are garbage or have certain kinds of problems there's nothing they can do about it.

Even leaving aside the generative model I think the focus on function-based data bootstrapping is great, which is why I've been following Snorkel's projects for a while.

</comment></comment></comment></comment><comment><USER14> I spent some time trying Snorkel (the open source version) and its predecessor DeepDive.

It was extremely complicated to get it to do anything beyond the demos, and I was never successful to get it to do anything useful.

I ended up implementing some of the ideas myself, but I can't say I had any great success.

<comment><USER4> That's too bad. Myself and colleagues have had good success using the current snorkel package.

</comment></comment><comment><USER15> I can see how this would work for tabular and text data, where the labeling functions are well-defined. I don't understand, _at all_ , how this would work with computer vision tasks where heuristics are pretty much impossible to define.

That said, I don't see anything here that would prevent you from using a pre- trained conv net as a labeling function, but I expect that multiple conv nets trained on a small corpus of data would be biased and make correlated errors, which violate their assumptions.

This looks super powerful in some cases, but I'm just not seeing how it can possibly generalize to every ML problem.

<comment><USER6> First: Snorkel Flow _absolutely_ does not generalize to every ML problem :). IMO defining where different systems and approaches do and don't work best is one of the most important and most challenging problems in ML systems research- as noted, we've worked to give detail on this for Snorkel over the years... no perfect answers, but some notes below:

\- As you imply, a lot has to do with the available sources of input signal- whether labeling functions, or 'transformation functions' for data augmentation, or other ops we've worked on... the input is obviously key.

\- For data modalities like image, video, etc: Often the most successful approach is to (A) rely on some pre-processed features or "primitives" and write labeling functions over these- as my co-founder Paroma in particular has published about over the years- and/or (B) use metadata

\- External models are definitely expressable as labeling functions, and we've worked on exactly that problem of modeling (local) biases and correlations!

<comment><USER15> Does it work for semantic segmentation? That's really where I'm struggling to see how this could work.

<comment><USER6> More advanced structured prediction tasks are still definitely on the cutting edge- mainly IMO down to defining the semantics of the programmatic user input like labeling functions for these kinds of tasks. Some recent work ([http://cs.brown.edu/people/sbach/files/safranchik- aaai20.pdf](http://cs.brown.edu/people/sbach/files/safranchik-aaai20.pdf)) has extended these semantics for sequence tagging, as an example- so some exciting moves in this direction!

</comment></comment></comment></comment><comment><USER16> I have a question for the snorkel folks if they're lurking here. With noisy label functions for large amounts of data, I could easily see the cases where the label functions fail correlating with classes that are already having a hard time (disadvantaged/underrepresented/marginalized groups, etc). Has there been any work on using these tools while making sure to avoid dangerous biases? It seems like the kind of tool that could amplify problems while still being really useful for an average case.

<comment><USER6> Lurking for a few more min... great question! Dealing with both class imbalance and issues of pernicious biases in both underlying data distributions and training labels is an extremely important topic. Our underlying theory deals with local biases (e.g. individual labeling functions or sources of training signal being biased) but systemic biases (e.g. the user driving the system being biased) are certainly tougher.

One important and practical answer that we've found: with an approach like in Snorkel Flow, you can _inspect_ the source of the training data and _correct_ it if biased- which you just can't do with e.g. a million hand labeled training data points. So in practice this is a big advantage we've found.

On the theory / research side, this is definitely an area we want to pursue further!

<comment><USER16> Thanks for the answer! The local vs systemic bias thing is particularly interesting for a system like snorkel. I have a clarifying question.

I'm imagining a dumb example like recipes, where "1 tsp salt" is a common format for ingredient. I'd imagine that the majority of ingredients follow that format, so it'd be a natural function to write. I'd also imagine that there's a correlation between following that format and being a recipe with a european background.

Generalize that a little bit, and almost by definition the simplest N rules that get the most coverage will cover the majority cases best. Being outside the majority cases is probably correlated with most "human issues," defined however you want. Being an artifact of the properties of what the simplest N rules cover, I'm not clear whether it'd be defined as local or systemic in the sense you've worked on.

I'm curious whether this falls under the theory you've worked on already or the theory you're talking about pursuing in the future. If it's something you've worked on already, I'd be very interested in reading what you have.

<comment><USER6> Great question! Let me rephrase so you can confirm my understanding: I have some labeling functions (LFs) that are far more accurate on a majority subset of the data than on one or more minority subsets or "slices" of the data... and these subsets are not necessarily correlated with the class labels, so this isn't a traditional class imbalance problem...

We've actually done some recent work on this ([https://papers.nips.cc/paper/9137-slice-based-learning-a- pro...](https://papers.nips.cc/paper/9137-slice-based-learning-a-programming- model-for-residual-learning-in-critical-data-slices)) where we have users define these critical "slices" approximately so that the model being trained can pay special attention to them (extra representation layers) so they don't get drowned out by the majority subsets/slices. But definitely a lot more to do in this area!

<comment><USER16> Cool idea, and thanks for the answer! I'll have to look more closely at the paper :)

</comment></comment></comment></comment></comment><comment> jeff-hernandez As another option, Compose is a ML tool for labeling data. It structures the labeling process and integrates easily with Featuretools which automates feature engineering. Definitely worth checking out!

[1] [https://github.com/FeatureLabs/compose](https://github.com/FeatureLabs/compose) [2] [https://github.com/FeatureLabs/featuretools](https://github.com/FeatureLabs/featuretools)

<comment><USER4> can you do multi-label w/ Compose? Snorkel only supports single-label.

<comment> jeff-hernandez Yes, you can represent the labeling function as a class and use its methods to represent each label individually.

</comment></comment></comment><comment><USER17> Anyone here with practical experience using [Flying Squid]([https://github.com/HazyResearch/flyingsquid](https://github.com/HazyResearch/flyingsquid)) over the open-source Snorkel library? I'm curious if this platform re-uses some of that line of research or if it's not practical for some reason.

</comment><comment><USER18> for those who want more on Snorkel, I recommend checking out Chris Re's prior talks:

\- [https://www.youtube.com/watch?v=yu15Nf5eJEE](https://www.youtube.com/watch?v=yu15Nf5eJEE) (14 min)

\- [https://www.cs.ucla.edu/upcoming-events/cs-201-jon-postel- di...](https://www.cs.ucla.edu/upcoming-events/cs-201-jon-postel- distinguished-lecture-deepdive-and-snorkel-dark-data-systems-to-answer- macroscopic-questions-christopher-re-stanford-university/) (1hr talk - snorkel's predecessor was deepdive)

I went down the rabbit hole in this space about 3-4 years ago, and really got the message around "Dark Data". he's onto something huge and I regret not pursuing it further due to self doubt. hedge funds should be eating this up as well.

</comment><comment><USER19> Does anyone use Snorkel ([https://github.com/snorkel- team/snorkel](https://github.com/snorkel-team/snorkel))? From what I can tell, it seems like a research product. Not sure if any company uses them in a production environment.

<comment><USER8> There are some case studies on the website [0], but I would be wary of them. My experience from working in these kind of research environments is that the case studies are consulting jobs where a few PhD students do work for a company, and in return you can use the company name and write on your website whatever you want. They are probably not actually using the product. I'd be interested to hear about actual users and their experience.

[0] [https://www.snorkel.ai/case-studies](https://www.snorkel.ai/case-studies)

</comment></comment><comment><USER6> Hi all, this is Alex from the Snorkel team- thanks for all the great comments! Excited to respond to a few questions directly, but first highlighting some up here:

\- _Where to find more about the core Snorkel concepts:_ We've published 36+ peer-reviewed papers, along with blog posts, talks, office hours, etc over the years (see [https://www.snorkel.ai/technology](https://www.snorkel.ai/technology) and [https://www.snorkel.ai/case-studies](https://www.snorkel.ai/case-studies)), so I'll defer somewhat to those... but of course, academic papers can be painful to read (even when you wrote them!), so happy to also answer questions here.

\- _What Snorkel Flow is:_ Snorkel Flow is an end-to-end ML development platform based around the core idea that training data is the most important (and often ignored) part of ML systems today, and that you can label, build, and manage it programmatically with the right supporting techniques. This is based on our research at Stanford, where we spent several years exploring the basic question: can we enable subject matter expert users to train ML models with things like rules, heuristics, and other noisy sources of signal, expressed as "labeling functions" and other types of programmatic ops (ex: 'label this document X if it overlaps with dictionary Y'), _instead_ of having to hand-label training data. This type of input, often termed "weak supervision", ends up requiring a lot of work to deal with as it is much noisier than hand-labeled data (eg the labeling functions can be inaccurate, differ in coverage and expertise, have tangled correlations, etc) but can be very powerful if you model it right! And Snorkel Flow specifically is focused on actually making the broader end-to-end process of building and managing ML with programmatic training data usable in production, rather than just on exploring the algorithmic and theoretical ideas as was the goal of our research/OSS code over the years!

\- _Why train a model if you have a programmatic way to label the data:_ In Snorkel, the basic idea is to label some portion of the data with labeling functions (usually it's hard to label all of the data- hence the need for ML), and then use ML to generalize beyond the LFs. In this sense Snorkel is an attempt to bridge rules-based approaches (high precision but low recall) and stats learning-based approaches (good at generalizing). This is also useful in "cross-modal" cases where you can write LFs over one feature set not available at inference time, but use them to train a model that does work on the servable/inference time features (e.g. text to image is one recent example [https://www.cell.com/patterns/fulltext/S2666-3899(20)30019-2](https://www.cell.com/patterns/fulltext/S2666-3899\(20\)30019-2)). But, of course, we believe in an empirical process all the way, which is another reason we like the Snorkel approach: if you can write a perfect set of labeling functions, then great- you don't need a fancy ML model, stop there!

\- _Does Snorkel work??:_ As an ML systems researcher, I'm always a bit perplexed by this question... the relevant questions for any system or approach are usually 'When/where might it be expected to be useful, and what are the relevant tradeoffs?' We've done our best to answer these questions over the years with theory, empirical studies, etc (see links above), and of course its very case specific. But one thing I'll note is that Snorkel is not a push-button automagic approach that takes in garbage and produces gold. It's our attempt to define a new input / development paradigm for ML--one which we've shown can often be orders of magnitude more efficient--but like any development process, it requires effort and infrastructure to use most successfully! Which is a big part of why we've built Snorkel Flow- to support and accelerate this new kind of ML development process.

\- _Who uses Snorkel?_ A few that have a published record: Google, Intel, Microsoft, Grubhub, Chegg, IBM... and many others at very large and smaller orgs that are not public

\- _What is going to happen with the OSS:_ The OSS project will remain up and open under Apache 2.0, same as all of the other research work we've put out over the years! See our community spectrum chat for more.

</comment><comment><USER20> Yeaaaah, I'm skeptical. Especially since they seem to dance around what Snorkel actually does at pretty much every opportunity.

<comment><USER4> Snorkel does weak supervision for you. It takes your unlabeled data and use defined labeling functions (LFs), maps the LFs on the data and then de- correlates relates everything to give you a dataset that you can use for multi-class single-label supervision.

It's very powerful.

</comment></comment><comment><USER21> I presume this does not apply to computer vision datasets? Frankly I am still confused at what exactly Snorkel does.

<comment><USER4> you have a dataset of images and you write code (labeling functions LF) to label the images. Snorkel handles the pipeline but more importantly corrects the conflicts/correlations between the LFs. The output is a supervised dataset w/ mutually exclusive labels a la softmax classification.

the labels are noisy, but you have a quantity that you could not get by humans, AND at a faster/cheaper rate. they provide analysis arguing that, for discriminative models, quantity CAN outweigh quality.

to your point it's not typically used w/ the image-only modality. It's mostly used where there is some meta-data attached.

</comment></comment><comment><USER22> I don't understand why this approach is valuable. If you can label your examples using traditional software, why would you build a model? Why not just use the label function in whatever context you intended the model to exist?

</comment><comment><USER11> Looks like they selling snake oil on the name of Stanford and AI :)

<comment><USER4> Why do think that? It's a very powerful and useful technique. You can get supervised labels in a day (ostensibly for free) vs paying humans to do it and waiting...</comment></comment>


SSL tools we wish we'd known about earlier - <AUTHOR> https://certsimple.com/blog/new-ssl-tools <comment><USER2> My favorite tool is the Calomel Firefox addon. [https://addons.mozilla.org/nl/firefox/addon/calomel-ssl- vali...](https://addons.mozilla.org/nl/firefox/addon/calomel-ssl-validation/)

The article links to [https://badssl.com/](https://badssl.com/), which shows a list of links to good and bad configurations. Calomel gives more details about what is right and wrong, and sometimes surprises with its rating.

<comment><USER3> Another similar add-on I use is SSleuth. [https://addons.mozilla.org/en- US/firefox/addon/ssleuth/](https://addons.mozilla.org/en- US/firefox/addon/ssleuth/) One features it has that Calomel apparently doesn't is that it shows you its "score" for all of the domains on a page, not just for the domain of the top-level document.

</comment></comment><comment><USER4> Am I right to be excited about [http://letsencrypt.org](http://letsencrypt.org) being about to make all of this much more sane? General availability on 2015 Sept 14.

<comment><AUTHOR> LE will mean a domain validated cert is free rather than costing 10-15 dollars, with the same proviso as other domain validated certs. That's a good thing.

But it won't change a lot of the things mentioned in the article: people will still need to configure servers, fix browser errors, researchers need a source for large-scale SSL scans, inspect packets, lookup domain contact info without junk results.

We're working on the configuring servers stuff BTW: we landed patches in node.js to ensure their TLS implementation passes SSL Labs out of the box and I'm hoping to do the same for nginx in future.

<comment><USER5> Letsencrypt offers to configure common webservers automatically. If a lot of people take up the offer, there could soon be much fewer servers with grossly insecure TLS configurations.

</comment></comment></comment><comment><USER6> [https://sslmate.com](https://sslmate.com) \- being able to get fresh certificates in less than a minute right from the command-line is amazing.

<comment><USER7> (Author here, replying with my old openid account due to rate limit.)

The 'freshness' is possible because it's a domain validated certificate - domain validated certificates are < 1 min, and normally cheap or free, as all you have to do to get a domain-validated cert is have an official sounding email address, publish a DNS text record, or some other way to show you have control of the domain. Domain validation doesn't require any investigation of the identity behind that domain, which is why they don't show the company name or the green bar. In Edge, domain validated certs show a hollow grey lock. [1]

EV certificates require checking the actual company - government registration, business status (eg, do you pay your taxes), does the person requesting the certificate have authority to take actions on behalf of the company, does the company have a verifiable physical address, and more [1]. They then show that company's identity in the certificate and browser - as the company name in a green bar.

Nearly everyone you speak to will quote a either a vague figure or 7-10 days to provide an EV cert.

CertSimple only does EV, and our average certificate issuance time is 5 hours. We've been doing them even faster than that recently - check the tweets on the front page of the site. A big part of that is that CertSimple checks a whole bunch of your company's information before you pay us any money. [2]

[1] [https://certsimple.com/blog/dv-ssl-in-microsoft- edge](https://certsimple.com/blog/dv-ssl-in-microsoft-edge)

[2] [https://certsimple.com/blog/are-ev-ssl-certificates-worth- it](https://certsimple.com/blog/are-ev-ssl-certificates-worth-it)

[3] [https://certsimple.com/blog/checking-orders-before-you- pay](https://certsimple.com/blog/checking-orders-before-you-pay)

<comment><USER8> Cool. One question: what if I'm not a company?

<comment><AUTHOR> Woo, rate limit's expired!

If you're not a company, or registered organization, or government department, you can't get an EV certificate right now. The cabforum EV guidelines [1] don't currently have provision for individuals.

I know that sucks. Especially when there is already capability to use government IDs for individuals in the EV guidelines for checking e.g. company directors in some cases [1].

But here's why:

\- The certificate subject for an EV cert, i.e. the thing the CA is attesting to by signing your certificate is the unique in the jurisdiction registration ID.

Eg, visit [https://github.com](https://github.com) and click the certificate in Chrome - you can see GitHub is Delaware company 5157550.

The subject for an individual version of an EV cert would needs to be:

\- unique in the jurisdiction

\- publicly revealable

You couldn't use the number of the ID checked, since passport numbers, drivers license numbers and other are considered 'High Risk Confidential Information' in much of the world [2]

Unfortunately such a document don't exist in much of the world.

[1] [https://cabforum.org/wp- content/uploads/EV-V1_5_61.pdf](https://cabforum.org/wp- content/uploads/EV-V1_5_61.pdf)

[2] [http://security.harvard.edu/book/1-high-risk-confidential- in...](http://security.harvard.edu/book/1-high-risk-confidential-information- hrci)

<comment><USER9> The tuple (Full Name, Date of birth, Place of birth) ought to be a suitable unique subject for an individual.

<comment><USER10> "Meet my two twin sons, Collision (pronounced cole-eye-zon, we call him Cole for short) and Collision (pronounced call-iss-on, though we like to call him Colin)."

<comment><USER9> Luckily you are such a good parent that your twin sons would never dream of impersonating each other online.

And of course the Date Of Birth is really Date/Time of Birth.

<comment><USER10> The point is that "this is unique enough" is not a good standard when the data is sketchy or even subject to manipulation. The corporate ID numbers otherwise being discussed are unique by fiat.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Also useful. sslscan ([http://sourceforge.net/projects/sslscan/](http://sourceforge.net/projects/sslscan/)). Point it to an endpoint and it will tell you all the ciphers and protocols that are accepted, and what the various defaults are, and details about the certificate bound to it. It's available in the Debian/Ubuntu repository for easy installation.

<comment><USER12> SSL Scan is good, but the industry standard for server configuration scanning is SSL Labs:

[https://www.ssllabs.com/index.htm](https://www.ssllabs.com/index.htm)

<comment><USER11> Agreed, but not everything is public facing, and sometimes you need quick verification. ssllabs is great and should definitely be done on all external endpoints, but it takes a while to run.

<comment><USER13> Would being able to specify a HTTP (CONNECT) proxy to SSL Labs be useful to you for the testing of your internal hosts?

<comment><USER14> Being able to use non standard ports would help. I usually just SSH tunnel it in. But needing to use port 443 makes it annoying.

</comment></comment></comment></comment></comment><comment><USER15> If you're not using Mozilla's SSL config generator, you should check it out. The Mozilla OpSec team did a nice job on this. I love when teams give back to the community. [https://mozilla.github.io/server-side-tls/ssl-config- generat...](https://mozilla.github.io/server-side-tls/ssl-config-generator/)

<comment><USER16> It _is_ pretty good, but it's not an "SSL" config generator; it's an "OpenSSL" config generator. It only supports OpenSSL. No GnuTLS, no NSS, nothing but OpenSSL.

<comment><AUTHOR> Specifically it's for Apache/Nginx/HAProxy/AWS ELB which link against openssl (there's also a node port). Are there alternate bindings for any of these for GnuTLS, NSS, etc?

<comment><USER17> For Apache there are [https://mod.gnutls.org/](https://mod.gnutls.org/) and [https://fedorahosted.org/mod_nss/](https://fedorahosted.org/mod_nss/)

I was using mod_gnutls for some sites, but it did not make it into Debian Jessie. mod_nss is still in Debian Stable though.

<comment><USER16> Note: mod_gnutls is present in Debian unstable, and it is possible to backport it to Debian stable:

      dget --build http://ftp.debian.org/debian/pool/main/m/mod-gnutls/mod-gnutls_0.6-1.4.dsc

You will likely get some error about "Unmet build dependencies". If you do; run this:

      mk-build-deps --install --remove mod-gnutls_0.6-1.4.dsc

and try the dget command again. Then install the package:

      sudo dpkg --install libapache2-mod-gnutls_0.6-1.4_$(dpkg-architecture -qDEB_HOST_ARCH).deb

</comment></comment></comment></comment></comment><comment><USER18> A firefox plugin that gives you more details about the ssl/tls connection of the site you're connected to: [https://addons.mozilla.org/fr/firefox/addon/ssleuth/?src=sea...](https://addons.mozilla.org/fr/firefox/addon/ssleuth/?src=search)

It also gives a summary grade. Very few sites are 10/10 (I only remember github having this grade)

<comment><USER3> Python.org and Twitter also get a 10/10 for me. That score is rare because (by default in SSleuth) you need an EV certificate to get the last 1 point and most sites don't have one (and many that do, like the banks I use, don't use the best TLS configuration). I personally treat a 9/10 with a DV certificate as secure as 10/10 with an EV certificate.

</comment></comment><comment><USER19> Sometimes I use this one to validate certs: [https://www.sslshopper.com/ssl- checker.html](https://www.sslshopper.com/ssl-checker.html)

The Qualys SSLlabs scan does not accept an IP address. I'm often in the situation where the cert is installed and ready, but the name is not yet pointing to the new IP address. The above URL can verify that you haven't left out the intermediate cert.

</comment><comment><USER20> Other things I use all the time:

`openssl x509 -in $FILE -text | less`

[https://lapo.it/asn1js](https://lapo.it/asn1js)

[https://golang.org/pkg/crypto/x509/](https://golang.org/pkg/crypto/x509/)

[https://github.com/agl/certificatetransparency](https://github.com/agl/certificatetransparency)

<comment><USER21> There's a load of useful stuff in the OpenSSL commandline, figuring out s_server and s_client can be very useful for debugging.

GnuTLS has some useful stuff too, IIRC

</comment></comment><comment><USER22> The Native OS X Wireshark is great! I always hated the one that required X11 as it rarely ever worked right :(

<comment><USER23> Unfortunately, native interface is too bugged to serious use yet. When trying to "Follow TCP Stream" it will crash with big streams (>20mb) and several tools are missing.

But for quick or simple auditing it works great!

</comment></comment><comment><USER24> There's also sslyze for comprehensive and fast scans, it can test just about any TLS service.

[https://github.com/nabla-c0d3/sslyze](https://github.com/nabla-c0d3/sslyze)

</comment><comment><USER25> Nmap has some very useful SSL scripts, such as ssl-enum-ciphers, ssl- heartbleed, ssl-poodle, ssl-ccs-injection and this one for testing Diffie- Hellman configurations: [https://github.com/eSentire/nmap- esentire](https://github.com/eSentire/nmap-esentire)

</comment><comment><USER26> The whois query works with his Microsoft example but I get a malformed request error when trying it with some of the newer domain extensions like .ninja

<comment><AUTHOR> Author here. The query format is (sadly) server dependent. For a ninja domain, use `whois.nic.ninja` as the server, and don't use the 'domain somedomain' query syntax.

        whois -h whois.nic.ninja domains.ninja

Normally the server would tell you the syntax it supports with `whois -h whois.nic.ninja help`, but whois.nic.ninja doesn't support `help` either.

See [https://certsimple.com/blog/junk-free- whois](https://certsimple.com/blog/junk-free-whois)

<comment><USER27> I really like the Debian version of whois because it solves this problem by automatically picking the correct server based on the query (even for .ninja) and following referrals to a whois server with more details.

[https://packages.debian.org/stable/whois](https://packages.debian.org/stable/whois)

<comment><AUTHOR> Rad. Did some clicking around, here's the upstream [https://github.com/rfc1036/whois](https://github.com/rfc1036/whois)

</comment></comment></comment></comment><comment><USER28> [https://cipherli.st](https://cipherli.st)

This should be on the list of valuable tools as well. It's a site which has strong example configurations for Apache, nginx, Openssh and many many others.. It's a great reference site. It's updated as new vulnerabilities are released, and as new technologies become available too.

Careful about implementing it all though - as their warning says, unless you understand things like HSTS or HPKP, implementing them incorrectly could make your site unavailable for a very, VERY long time.

That said, it's an easy way to get an A+! If you disable everything but TLS1.2, you can get a perfect 100/100/100/100.

<comment><USER29> Clicking through to the relevant "Rationale and tutorial" article on that site is well worth it, those tutorials are very useful for newbies.

I also found Mozilla's documentation for TLS very helpful: [https://wiki.mozilla.org/Security/Server_Side_TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)

</comment></comment><comment><USER30> I find [https://testssl.sh/](https://testssl.sh/) particularly useful

</comment><comment><USER31> No one has mentioned the [https://labs.portcullis.co.uk/tools/ssl-cipher- suite-enum/](https://labs.portcullis.co.uk/tools/ssl-cipher-suite-enum/) perl script yet.

 _The tool performs a similar function to sslscan, THCSSLCheck and sslyze, but differs by crafting part of the SSL handshake instead of using an SSL library to establish a full connection. [...] Libraries either become outdated and therefore incapable of testing for new protocols such as TLSv1.2 or exotic cipher suites; or they are updated and lose support for older protocols – namely SSLv2._

 _Support for SSL testing over SMTP (STARTTLS), RDP and FTP (AUTH SSL)_

</comment><comment><USER32> Another useful site:

[https://ssldecoder.org/](https://ssldecoder.org/)

Source for self-hosting:

[https://github.com/RaymiiOrg/ssl-decoder](https://github.com/RaymiiOrg/ssl- decoder)

</comment><comment><USER15> I find Julien Vehent's CipherScan to be very useful [https://github.com/jvehent/cipherscan](https://github.com/jvehent/cipherscan)

</comment><comment><USER33> I'm hearing this undercurrent in the discussion here that domain validated cents are somehow inferior.

Other than the fact that certsimple sells EVs exclusively, I don't really see any meaningful benefit. The arguments for EV are the Verisign sales pitch from 1999. (Ie. We are very careful!)

</comment><comment><USER34> They listed openssl s_client, which is awesome, but they neglected to mention openssl s_server, which is also an awesome way to set up easy reproductions/testcases for others when something like badssl might not be available due to firewalls and such.

</comment><comment><USER8> [http://sourcefourge.net/projects/xca/](http://sourcefourge.net/projects/xca/) is a nice gui for x509 certificate and crl maintenance, creation etc.

(edit: inb4 kneejerk about sourceforge)

<comment><USER35> Looks like the domain name is misspelled; the URL should be:

[https://sourceforge.net/projects/xca/](https://sourceforge.net/projects/xca/)

<comment><USER8> Heh. Once upon a time, school allowed me to choose my preference, the choice being to either use her Majesty's English or American English, but not both. I chose British and stuck to it, but here is an example of where I'm just taking it too far. _lol_

Thanks for correcting. :-)</comment></comment></comment>


Tesla's new Cybertruck smashed during demo - <AUTHOR> https://www.bbc.com/news/technology-50513294 <comment><USER2> Automotive windows have been a solved problem and commodity for a while. I don't really understand the point of this demonstration, except for two possibilities:

1\. They're gaslighting the Tesla faithful with "super strong" windows that are just normal. Or

2\. Demonstrating they are still wasting tons of r&d dollars on non-problems and ought to bring in an adult who can design and manufacture commodity things efficiently.

<comment><USER3> 3\. It's a PR stunt.

It invites people who don't care much for Tesla or the vehicle itself to share the video, it softens the seriousness and tension of a launch, and it helps to humanise the brand and the presenter.

<comment><USER4> Do you bleieve they are playing that type of self-deprecating meta?

<comment><USER5> I believe that they are PR and marketing experts. They've created a big buzz that has everyone talking about this car.

"Armor glass" that completely shatters when you throw something at it by hand? Come on...

Also, why would it need armor glass in the first place? They picked a gimmick that is irrelevant to the product so that this "failure" does not hurt at all.

<comment><USER6> If you think Tesla's PR and marketing is done by experts, please explain Musk's Thai cave rescue pedophile fiasco last year.

<comment><USER5> What has Tesla's PR team to do with Elon Musk's personal tweets? This is a very poor argument...

</comment></comment></comment></comment></comment></comment><comment><USER7> Conspiracy theory: that incident was on purpose to generate massive PR.

Argument: seriously, how hard would it be to rehearse that thing so that it does not happen live twice?

<comment><USER8> I actually believe this is probably the case. Watching MKBHD's ride on YT indicated they replaced the glass prior to riding the press around, so they probably had this planned in advanced to some extent.

I don't think anyone should have realistic expectations of the outer layer of glass not shattering. That is why there are multiple layers. If you threw a big metal ball really hard at the president's limo, it would likely crack the outer layer as well in similar ways. What fundamentally controls the strength of armored glass is how many layers you have.

<comment><USER9> Elon is a lot of things, but a good actor he is not. Watch the livestream for a few mins before to a few minutes after the throw. He was noticeably thrown off and flustered. The audience knew he was uncomfortable and cheered him for support. The whole thing was cringe inducing.

</comment></comment></comment><comment><USER10> The truck needs a better GPU so they can increase the polygon count.

<comment><USER11> Poly count is low so our roads won't lag.

<comment> Joe-Z-L :0 So that's how it can go to 60 so fast, damn

</comment></comment></comment><comment> kube-system Pretty much all cars in the US are implementing laminated side glass to comply with FMVSS 226 occupant ejection mitigation requirements.

They just figured out an interesting way to demonstrate a feature that nearly every car sold in the US since 2017 already has.

<comment><USER12> I haven't yet seen a car on the road with anything other than tempered side glass.

<comment> kube-system Here's a list of a few:

[https://www.aaa.com/AAA/common/AAR/files/Laminated-Glass- Veh...](https://www.aaa.com/AAA/common/AAR/files/Laminated-Glass-Vehicle- List.pdf)

<comment><USER12> Well that's a handy list of vehicles that won't be on my list when I'm shopping for my next car.

<comment> kube-system You sure? I'm glad I had laminated glass when some projectile hit my driver side window on the highway last year.

There are a far greater number of realistic and common scenarios where a windows pose a safety benefit by operating as a safety barrier than there are scenarios where they pose a safety benefit by being easily penetrable.

</comment></comment></comment></comment></comment><comment><USER13> Reminds me of BillG presenting Windows 98 on live TV [https://www.youtube.com/watch?v=eKy9fV_zX_o](https://www.youtube.com/watch?v=eKy9fV_zX_o)

</comment><comment><USER14> They also hit the door with a sledgehammer as hard as they could and didn't dent it. The video for that is pretty amazing.

<comment><USER15> It looked to me like the guy was clearly not swinging his hardest.

</comment></comment><comment><USER16> Imo, this is not the problem. The glass passed the test when it was not fixated on the car. (assuming the glass used on the freefall test is the same used in the car).

The freefall test height is pretty significant, so either: 1. They were not using the same glass and lying on the freefall test or 2. They mistakenly put another glass type on the demo car. Which is a really bad mistake for the guys staging the demo.

I expect Tesla to give clarifications as well as put the tech specs for their glass.

<comment><USER17> Or the non-fixed glass was fixated on a flat surface that might have absorbed much of the energy or the tester is the fastest baseball pitcher in history.

<comment><USER16> If you notice, on the second test, he was hitting much weaker and the glass still shattered.

</comment></comment></comment><comment><USER18> I thought the way they handled a failed demo was cool. Most companies would have rolled the product off stage or put something in front of it, but Elon rolled with the punches and continued the presentation with two shattered windows. It lowers the probability the truck was hardened or altered for a better presentation.

<comment><USER19> He did look a bit shaken up by it. As if he was less concentrated on the presentation after the incident.

Apart from that, I do think he handled it quite well. Best to laugh it off and not make a big deal.

</comment></comment><comment><USER20> Title is a little dramatic. Saying they smashed the truck when the window glass broke when it shouldn't have but everything else was the same is inaccurate.

</comment><comment><USER21> Perhaps they did it on purpose as a marketing gag.

<comment><USER22> It's honestly amazing how debased our society has become where even outright fucks are excused as "Oh well maybe they're just so clever that their success looks indistinguishable from a normal person failing"

<comment><USER23> This should be the top comment on this thread. The entire presentation was a shambles. Elon Musk mumbling while trying to read stats off the screen behind him, attempting to answer hecklers and ending sentences that he'd forgotten to start. Then some tediously long demos of a man dropping a ball down a tube with amateur magician flourishes. That anyone could watch this and then conclude that he's a genius who did it on purpose is truly mine boggling.

</comment></comment></comment><comment><USER24> Guessing they tested before the live shot, which worked, but weakened the glass. Though the back window gives too, so maybe not.

</comment><comment><USER25> It happens, and it happens more than anyone would like to admit. Remembered me about [https://m.youtube.com/watch?v=LfNQOOr9aR8](https://m.youtube.com/watch?v=LfNQOOr9aR8)

</comment><comment><USER26> With a design like that they're going to completely miss their target audience: the F150 buyers of America.

</comment><comment><USER27> The whole reveal was such a shitshow that I doubt this was a PR stunt. It's just par for the course for Tesla.

</comment><comment><USER28> AFAIK Ford did a similar thing with hemp based plastic car body.

</comment><comment><USER29> This incident should be a good argument against making live product demos (particularly those that test product 'ruggedness'), especially for a brand new/untested class of product.

I'd rather let the broader 'tech reviewers' community test it out for themselves once the product launches to public -- that'll certainly look more authentic and less staged.

<comment><USER30> This is a minor detail in a full event.

The worst case scenario he made a fool out of himself on that moment, which is something he is most definitely used to.

The best case scenario he will get a lot of PR, even haters will be talking about the Cybertruck.

If there are products that deserve live product demos are these that break the mold and leave people scratching their heads.

If you left it to tech reviewers they would probably bitch about the design. When what happened was a truck with an odd design that at first leaves you uncomfortable but by the end of the event you've grown to like it.</comment></comment>


Adversarial Stylometry: Circumventing Authorship Recognition [pdf] - <AUTHOR> https://www.cs.drexel.edu/~sa499/papers/adversarial_stylometry.pdf

<comment><USER2> Huh. I probably should have read this earlier.

I have a toy tool for facilitating style imitation and combating adversarial authorship analysis: [https://github.com/bhickey/doppelsprecher](https://github.com/bhickey/doppelsprecher)

Given two corpora, it generates two smoothed ngram models and produces estimates of per-word entropy ratios. If an author can see the highly entropy portions of a text, they'll have the opportunity to change it.

Pardon the license, it'll change to something sane shortly.

</comment><comment><USER3> so, if you want to hide who you are, choose an author and imitate their style. or rather: he needed to hide. he hid behind hemmingway. it was crude. but it worked.</comment>


Jeff Bezos and the Amazon Way - <AUTHOR> http://www.nytimes.com/2015/08/22/opinion/joe-nocera-jeff-bezos-and-the-amazon-way.html <comment><USER2> I've worked at a big internet company where the culture was very toxic and not a good place to work, let alone be a normal human being. Pushy, rude and underhanded people were plentiful and were willing to throw you so far under the bus at any given moment that you would never find your way back out.

This became evident to me when I went on my lunch break after working there for about 4 months. Each employee was given 1 hour for lunch. I spent ~15 minutes walking to the local burrito place, grabbed a burrito which took about 10 minutes and then walked back. I was gone roughly 45 minutes.

The next day I was called into my managers office because someone didn't like the amount of time that I spent on my lunch break. Lucky for me I had my receipt and logged my work time so I showed him how much precious company time I spent galavanting to the burrito place.

I said something that I definitely should have. "Maybe the person that reported me should have been doing work instead of worrying about my lunch break. If this company can't treat its employees like humans, I don't plan on working here much longer"

I got written up for insubordination.

I was pissed.

I went back to my desk and typed up my 2 week notice.

Good riddance.

<comment><USER3> I probably shouldn't post this but what the heck.

I quit on the spot twice when a company was dickish.

Once I had a friend, previous co-worker, that would visit. He'd come into my office and we'd play games (this was a game company). This had happened about once every month or 2 for a year or so. One time I had to go to the restroom. I came back and he was gone. The new boss had escorted him out of the office. I quit on the spot. Saw that boss at a trade show years later. He apologized.

Another time a boss at a company that was flex and who and never missed a deadline decided it doesn't going to be flex anymore for the next project. I was late one day 45 minutes and he got in my face. I brought up that I'd been an hour and a half early the previous day. He didn't care. Claimed if I worked at "The Gap" I'd have been fired. It was like "this isn't the Gap, I'm not an hourly employee". Arguments escalated, I quit.

Apparently he then laid now the law for the remaining employees with strict hours and strict lunch hours and that you were not to leave the building outside those hours and threatening to doc people's pay if they were late. Of course he probably didn't realized that's probably illegal, at least in the USA. If you dock salaries employees by hours worked they become non-exempt meaning by not letting them choose their hours they are effectively hourly employees that have to be paid by the hour and paid overtime. At least in the USA. Of course IANAL but that's my reading of the law.

I'm not really happy with the way I handled things and it's a life long work in progress to not get heated but I am proud that I didn't take shit and moved on from those situations when I did.

<comment><USER4> First boss doesn't seem that bad, actually. Made a mistake, obviously, but he was new and maybe just getting his footing, and having an unaccompanied outsider inside the office is frowned upon by virtually all companies.

The second manager sounds like a particularly unique combination of dickish and clueless.

<comment><USER5> > First boss doesn't seem that bad, actually. Made a mistake, obviously, but > he was new and maybe just getting his footing, and having an unaccompanied > outsider inside the office is frowned upon by virtually all companies.

He could have stayed with the outsider ("escorted" them) until the employee came back from the restroom. That's what I would do if I found a random person in my work building who had a visitor's badge and claimed to be there escorted by an employee.

</comment></comment></comment></comment><comment><USER6> Okay, these articles are getting really ridiculous. I just finished a Summer internship at Amazon. While it's true that there's more pressure on employees than other places I've worked, it's really not that bad. It definitely doesn't feel cutthroat, and an 80-85 hour work week is _definitely_ not normal! The vast majority (I'd say >70%, and I think that's conservative) of people work 35-45, depending on what needs to get done that particular week - which is completely normal!

There are some teams where it's normal to work longer hours - mostly in AWS. Usually it's the case that a few people on the team have very high expectations for themselves, and that sort of forces everyone else to meet those same standards. I think that's actually not a bad thing - some people just love to work, and they end up producing a lot of really high quality software. But if you don't feel the same way, you can just transfer to a different team! I haven't heard of a manager asking someone to put in extra hours except when there are extenuating circumstances.

Now, don't get me wrong, as an employee you definitely get the impression that Amazon doesn't care that much about you. It's not really a fun place to work or anything like that. But some of these articles make it sound like everyone who works for Amazon is begin taken advantage of, and that simply isn't true.

<comment><USER7> Sorry, your internship is not representative. They are trying got trick you into working there. You were treated special in a number of ways. Further, AWS is isolated to some extend from the abusive nature of the company by being a separate division.

A lot of what you say is right out of the amazon weltanshaung-- its cult has seeped in to some extent.

You're giving us rationalizations for the abusive nature of the work environment. "high expectations of themselves" == code for piling drudgery on people because you won't allow them to create a more efficient process.

He downvoters: I know HN teaches you that silencing people you disagree with is good, but try making a counter argument.

For the record, I had some contact with the internship program and it was treated VERY differently than regular recruiting. It literally is designed to trick the interns into coming aboard... because Amazon knows kids irhgt out of college are going to be easier to manipulate than people who have been treated right elsewhere.

But then, scientologists try to silence critics too... no surprise that the amazon cult would as well.

<comment><USER8> It'd be more appropriate to respond to this comment's assertions than downvoting it.

<comment><USER9> Without backing up his claims, it isn't a very useful comment. Insisting that this person's being tricked into a cult, without any details - that's the kind of stuff we don't need on HN.

In another comment, he says he had worked for Amazon. Adding such a line and explaining why the intern was being tricked into a cult would be useful and wouldn't have been downvoted.

Also, complaining about downvotes is silly. I downvote and flag a fair amount. No one is owed an explanation. I know that we might _want_ one (I feel like that when I get -x points on a comment), but it only increases noise.

Comparing HN to Scientology is stupid. I sorta feel that HN maintains whatever quality it has by being ruthless on downvoting. From personal experience, I should definitely be downvoted more, as it makes me rethink commetns and not write as much shit. Not that I have much to say, but I have found that being downvoted makes me more cautious, and I'll edit or delete or simply not post on HN, whereas on other sites, I don't care. It's better for borderline comments to get shot down and have false positives than allowing more junk on the site.

</comment></comment></comment></comment><comment><AUTHOR> This is just an observation, but a recurring theme in casual conversations with friends in tech is that the quality of work/life balance _as an employee_ (as opposed to a founder) is eroding fast.

One factor that I think accelerates this is that companies that are established and clearly not startups anymore (companies with lots of employees, huge market cap, and revenue, whether they've IPO'd or not) increasingly consider themselves "startups", which often leads to them justifying these toxic work cultures, insane hours, and massive churn.

By refusing to grow up and mature as a company, and admit that this is happening, the owners of the company can have it both ways: you work for a startup when they're talking about passion, commitment, and hours, but you work for an established business when they want to turn the corporatist screws on their employees.

</comment><comment> rm_-rf_slash I see a lot of comments on the Times regarding unions. We take a lot of things like weekends for granted, and many of these tech companies seem to treat them as a flexible inconvenience.

I wonder if a hundred years from now we will look on the taxes to our mental health today as similarly as we imagine the truly backbreaking labor of the 19th century.

<comment><USER10> The level of stress, and the toll it takes on mental health that we experience today is very low compared to a time when productivity and income were 20x lower.

Our lives have changed, and we are immensely richer than we were 100 or even 50 years ago. People have more mobility, options, and opportunity than ever before in human history. One can argue that certain policies or priorities have affected our lives for the better or worse, but we should not try to compare the relatively minor difficulties we face with those of our forebearers, who left us in a life of luxury.

<comment><USER11> This 'feels' accurate, but I don't know how worthwhile it is to say 'well it was shittier back then so...'. People commit suicide, relationships are ruined and diseases appear due to the kind of stressors described in the Amazon exposés. They're worthy of being considered today, in context, not compared to British coal workers in the past or whatever.

</comment></comment></comment><comment><USER12> This story has got to be really hurting Amazon by now. (I don't mean this specific piece, but the exposure of Amazon's terrible cult-like culture and workplace environment as a whole.)

Most engineerish people I know, myself included, had already heard through the grapevine that working at Amazon sucks (friends, friends of friends, posts on forums like this).

But now everybody _knows_ it sucks -- _Amazon is a shitty place to work, and any decent software engineer has many better options_ is now as close to an objective fact as it gets.

This must be hurting their recruiting already, and you have to think it will hurt them for years to come. (And if that is true, then it may eventually change the judgement of whether this style of management "worked".)

<comment><USER13> Amazon needs to unionize, it's obvious that Bezos and his management don't respect his workers. This sort of company deserves a union. And I think both white collar and blue collar workers there would support such a union.

</comment></comment><comment><USER14> I found this interesting, feels like the most realistic account so far - [http://pastebin.com/BjD84BQ3](http://pastebin.com/BjD84BQ3)

I just feel bad for amazon people I meet, the 2 year cliff and high pressure oncall simply isn't a thing at the other tech companies. At least for me and ive worked at a few of them (plural of anicdote isn't data but still) Life seems strictly worse at amazon.

<comment><USER7> His account seems much better than what I experienced. I still think he has swallowed too much koolaide-- and this is why Amazon focuses on the young kids they can make an impression on.

<comment><USER15> I've worked at Amazon and you are absolutely right. The implied "get it done" pressure, basically just socially awkward managers who have no self-value themselves, pushing the new people to work ridiculous hours. Not mentioning hours though, but basically getting unexperienced youth to waste away their lives at their jobs. It's sad.. it's definitely a mental and manipulative tactic. It's really cancerous because these exact kind of mentally defective people who spurry to get things done, usually last-licks from Microsoft, become managers. Then they apply that silly pressure to everyone under them, and elegance fades away. Literally horrible code, with little polymorphism, less elegant frameworks, etc. Just a side affect of "get it done." Anyhow, Amazon isn't rosy. It's a dumping ground, and yeah, the FLP process where people get culled is just a side affect of the value of work-life balance, human empathy there. I would never work at Amazon again.

</comment></comment></comment><comment><USER16> Been reading a lot of Amazon articles the past few weeks. I'll be joining AWS next month as an SA. I met the hiring manager during the interview loop, and he seems like a cool guy. Funny thing is when I told my family and friends that I'll be joining AWS they all emailed me the NYT expose.

Well I do hope it's not as bad as it's portrayed. I do want to see my son grow up (he is turning 2 years old).

<comment><USER17> May I ask why you are planning to join Amazon? It's reputation for being a bad employer is well-established and known in the tech community.

If you're skilled enough to get through an Amazon interview loop, you could also get a job at a company which actually respects its employees (Facebook, Google, even Microsoft).

<comment><USER16> I love the AWS platform, I find the entire thing very elegant. I wanted to move away from software development and get into more high level stuff (hence the SA role), and I'd rather join a company where am passionate about their products.

I have friends working in AWS, and so far none of them have been complaining about work life balance, so am assuming that it's different from the retail side.

</comment></comment></comment><comment><USER18> When it was my own company, I loved the excitement of the hunt. I slept under my desk. We kicked ass. Even though some of us had lives outside of work.

More recently, I worked at at a startup where it was possible to have a family _and_ get stuff done. It was pretty cool!

It seems like, for work-life balance, the US is somewhere between Japan and Switzerland. What would it take to be more like the Swiss?

</comment><comment><USER7> My experience at Amazon was straight up abusive. It is a hostile work environment and it should not be tolerated.

If you have any self respect, do not go to work there. The only way abusive companies can learn is when their abuse is discovered and they have trouble hiring good employees.

The apologists and the rationalizers and the Amazon PR machine are out in full force.

this is not surprising, because the core methodology of Amazon's abuse is its cult nature.

Amazon is very much like a cult. The stories I read about scientology remind me much of my time at Amazon.

They lionize Bezos because they want to pretend he's like steve jobs (these same propagandists are why most of you think steve jobs was an asshole, by the way)

Reality is, he's a master manipulator, a poor business man, and terrible at technology and leadership.

But he did create a cult. He's more like charles manson.

So expect the cultists to continue to be out in force.

<comment><USER19> > Reality is, he's a master manipulator, a poor business man, and terrible at > technology and leadership.

Your argument really breaks down here. Reality contradicts these assertions.

<comment><USER20> > terrible at technology and leadership

While I'm not suggesting that he's not successful in many ways, he's also been (and still is) quite bad at these two things.

On the technology front, the terribleness that immediately comes to mind are the Fire Phone, Prime Instant Video's UI, Amazon's UI in general, their godawful search, and so on.

On the leadership front... well... there are all these accusations of an awful workplace culture stemming from the top man.

<comment><USER21> It appears self-evident that he's at least an adequate technology leader. He's leading a company that is the undisputed (current) leader in cloud computing and running an extremely fast growing and profitable technology business there. IMO, that put his well into the top 0.1% of technology leaders, but even if you don't agree with that, if results mean anything, I think you can agree that he's not terrible at it.

The Amazon UI might not be to your taste or beautiful, but there's no question that it's efficient at enabling customers to find and buy their retail items at a rapid clip. IMO, Prime Pantry's search is pretty decent; the selection over which they're searching is poor, but the search itself seems decent.

</comment></comment></comment></comment><comment><USER22> Amazon is of the sociopath, by the sociopath, for the sociopath.</comment>


Introducing Amino: Desktop Bioengineering for Everyone - <AUTHOR> http://mitadmissions.org/blogs/entry/introducing-amino-desktop-bioengineering-for-everyone <comment><USER2> I love the concept, but I want more details regarding the process I would use to modify my pet bacteria's DNA.

To me the ideal biolab is: digital genome data in, organism(s) out.

I know this isn't promising that, but I want to understand how close it is to full DNA synthesis.

<comment><USER3> Amino only covers the next step; growing your bacteria. The kit comes with a single, "living nightlight", sample that you can grow. They also plan to offer additional samples ("Apps"...) that you can buy. As far as tinkering, it sounds like the only intended modification is to the growth liquid: grow in water vs grow in liquid-X.

The company they're working with, Synbiota, does have a "DNA Tinker Studio" kit that looks interesting. It's not full synthesis either though. It contains specific set of available 'parts' to work with, that you combine and get existing bacteria to take up.

There are services, not difficult to find, that offer actual digital->DNA synthesis. Current state, they are expensive, and are focused-on/able-to create only relatively short sequences. Sequence->Modify->Synthesize->Grow, or even targeted splicing, aren't really available things yet, AFAIK.

</comment></comment><comment><USER4> My fantasy is probably limited by not being a biologist, but I'd need some more examples of what cultures I could grow with this.

> Apps will be priced between $150 and $400, depending on the DNA program and > number of components.

That seems a little steep to switch cultures in the future.

<comment><USER5> One of the nice things about bacteria/yeast is that once you've booted up your app, you can collect a sample, store it, and then re-grow it in the future. As long as you have growth media, an app could result in a lifetime of joy.

More info and some examples of what people are programming cells to do: [https://goo.gl/lfweYy](https://goo.gl/lfweYy)

</comment></comment><comment><USER6> That's quite slick. Love the series of prototypes in the thesis.

</comment><comment><USER7> I chuckled a bit when i misread it as Animo.

</comment><comment><USER8> Anyone up for some anthrax?

<comment><USER9> Please don't post dismissive comments to HN, especially in response to new work.

<comment><USER10> That's probably one of the worst ways of phrasing that, but they have a point.

I'm in love with biohacking and trying to start a biohackerspace myself in my city, but if we're reaching the level of actually making modifications to organisms at home, we _really_ need to have a serious talk about it. Life is not a toy, it's self-replicating nanotech that's literally capable of killing people at scale.</comment></comment></comment>


An algorithmically reversible personal URL shortener - <AUTHOR> http://tantek.pbworks.com/Whistle <comment><USER2> I like the algorithmic reversibility, but this seems to depend on a specific site layout. Would something like this be possible for abitrary URLs without actually making them longer?

Simply converting to base 60 or 64 wouldn't work, but since most URLs have characters that are close to each other, what about storing the differences between characters and/or using Huffman coding (or something similar) to give shorter symbols to the most common characters/differences? Maybe a preshared dictionary of common URL components?

</comment><comment><USER3> I think the author got a little too caught up in flickr's cleverness of making an ID based on different information. For instance, the first letter is the post type, then a group of letters is date, and then there is the post number for that day.

The fact is, not many people are going to go devise their own URL shortening algorithm and implement it. While it is a good idea, I just don't think many people will put in that kind of effort.

What might work is a more general algorithm. An algorithm that can reliably shrink and unshrink any URL.

I'm not sure, but this might not be possible considering that many people have invented compression algorithms, and the general rule is that if you compress data, you are going to loose data. (I'd like to hear someone's opinion on that considering I haven't dove deep into compression)

Edit: By 'possible' I mean 'meaningfully possible'. Taking a URL around 50-80 characters and making it around 20-30.

<comment><USER4> I am not an expert, but for lossless compression I believe the idea is that if there's a mismatch between the size of an encoded symbol and it's information content (novelty) -- then you've got some room for lossless compression.

Is that the case with URLs? Probably not directly. Certain atoms (.com, www) might be encodable to save space, but it'll not necessarily be a big gain.

<comment><USER2> It might be enough to shorten only the most common sites and platforms' URL forms.

</comment></comment></comment><comment><USER5> His argument doesn't make sense to me. Consider the uses he gives for the shortened URL:

      * Presentations
      * Email
      * IM and Twitter

Given these use cases, what, exactly, is the utility of retaining the longer URL? If every time you reference the location it's through the short URL, then the advantages of the longer URL (comprehensibility, mainly) are lost -- because nobody will ever look at it!

It seems like the only reason to do this is to maintain compatibility with systems which impose a particular URL scheme.

The post is a good argument for making shorter URLs in general, not a good argument for a personal and application-specific URL shortener.

</comment><comment><USER6> Yes, but two major difficulties mitigate against its adoption.

First, only a tiny number of people will actually devise, implement, and install their own shortener. Perhaps the major blogging platforms would adopt it, but that still leaves a large number of sites uncovered.

Second, consumers of URL shorteners actually want unique short URLs so they can track clickthru. So even if a site self-hosts reversible personal short URLs, consumers will not adopt it.

I have no alternative positive suggestion. It would be nice if URL shorteners called a webhook on the shortened domain.

</comment><comment><USER7> [http://tantek.pbworks.com/NewBase60#AdditionalImplementation...](http://tantek.pbworks.com/NewBase60#AdditionalImplementations)

I can't find any actual code for the shortener. But the base60 should allow you to come up with your own shortening scheme</comment>


Dynamic languages are static languages - <AUTHOR> http://existentialtype.wordpress.com/2011/03/19/dynamic-languages-are-static-languages/ <comment><USER2> There was a lot of interesting discussion on the previous submission: <http://news.ycombinator.com/item?id=2346590>

Robert Harper's tone seems to rile a lot of people up (some might say he's aggressive, but I would instead use "enthusiastic") and he seems to pick really flame-baity titles, but I'm really glad to have found his blog. It's usually thought provoking stuff.

</comment><comment><USER3> I realize there was another discussion about 2 years ago and the specifics of this post have largely been addressed.

I will say that it's a pretty strong turn-off when somebody appears to be religiously aligned in their technical outlook. I'd rather talk to somebody who appreciates the pros and cons of static vs. dynamic typing and what the actual implications are.

I don't want to talk to somebody who appears to only understand dynamic typing as a strawman and for whom higher-kinded/dependent static type systems are a crusade. I don't trust crusaders to make sound engineering recommendations, I want to talk to people who have a sober, well-reasoned, and experienced outlook on a subject.

I like static type systems, I like compile-time type checking. That's not going to stop me using a dynamically typed language where it's appropriate.

I'm going to loosely reiterate what Hickey has said on the matter: It's often the conceptual aspects of a problem that are difficult. The more quickly you can hammer out what exactly it is you need to do, the better off you are.

Static type systems, as they currently exist in Haskell, Scala, OCaml, Agda, Epigram, Java, C#, C++, et al don't do a lot to help here. I'd rather chuck some Python/Clojure around until I know what it is exactly that I want, then start writing more rigid code.

Part of why I like Clojure so much is that when an API or the "shape" of my problem becomes more clear after the REPL/experimentation stage, I can begin defining things in terms of protocols or interfaces.

What's most interesting to me about this is that the protocols are largely typeclasses which Go's interfaces resemble. You get the same basic expressive power but there are better affordances for the conceptual stage and a greater breadth of how firm/rigid your code is.

Part of my problem with static type systems is that they are often an all-or- nothing proposition (disabled type-checking/type holes/undefined not- withstanding, to avert the inevitable cascade of GHC-extension-(ab)using Haskell users).

To summarize:

It's a progression where your code becomes more concrete and final over time as you better understand the problem. Dynamic type systems that are well- designed suit this model very well. Static type systems are better for performance and for situations where the problem is well-defined and you're mostly satisfying an engineering problem rather than exploring a conceptual one that's subject to change.

Side note/anecdote: We use Python prolifically at my day job, what few type errors that occur are usually related to None and not the general type errors that static-type-users tend to suppose happens on a regular basis. Amusingly, C++, Java, and C# are all subject to this same issue.

We've been cleaning it up over time by using imitations of monads/monoids.</comment>


How I made sure all 12 of my kids could pay for college themselves - <AUTHOR> https://qz.com/165716/how-i-made-sure-all-12-of-my-kids-could-pay-for-college-themselves/ <comment><USER2> The headline is a non sequitur. These points all seem like individually good things to prepare humans for the world, but none of them are sufficient to explain how each child came across $80-120k [0] [1] [2] [3] [4] from part-time work.

[0] [https://finaid.wisc.edu/undergraduate- cost.htm](https://finaid.wisc.edu/undergraduate-cost.htm) [1] [https://onestop.umn.edu/finances/cost- attendance](https://onestop.umn.edu/finances/cost-attendance) [2] [https://admissions.illinois.edu/Invest/tuition](https://admissions.illinois.edu/Invest/tuition) [3] [https://finaid.umich.edu/cost-of- attendance/](https://finaid.umich.edu/cost-of-attendance/) [4] [https://admissions.uiowa.edu/finances/estimated-costs- attend...](https://admissions.uiowa.edu/finances/estimated-costs-attendance)

<comment><USER3> If you take every AP there is and also have a nice story about having 11 siblings, many schools will accept you with generous aid.

<comment><USER4> Also if you put away the money from the chores it may add up to something.

</comment></comment></comment><comment><USER5> I may have missed it but he didn't actually say how he made sure his kids could pay for college. Of course having a good work ethic is a great advantage but there is no mention of if his children took jobs, saved their allowance or are still paying off student debt.

Also their days seem extremely long with breakfast at 5:15 and curfew between 10 and 12. Surely more than 5hours sleep is beneficial for small children.

</comment><comment><USER6> To provide another view: I rarely had chores (other than generally to keep a basic level of cleanliness) and didn't get an allowance. My parents were divorced, so this kind of "family life" is pretty foreign to me, but I never minded. I trained myself early to live without needing much. By high school my mother realized that flimsy "you must work on x between 6-8" rules just weren't going to work on me as I'd simply refuse to do it. I coasted through school explicitly doing the bare minimum. My mother yelled at me and tried every kind of punishment possible for my bad grades, but it went in one ear and out the other. I never did "community service" except the 25 required hours, and left cross country after sophomore year. I never complained about food.

I spent most of that extra time learning how to program. I had no idea it was profitable; I started because I wanted to cheat in online MMORPGs. By the time I was 18, I'd been programming for seven years, and knew enough web stuff to skip college and start contracting. Today I'm 21 and have a job that pays six figures.

I realize CS is anomalously profitable, but I think that growing up in the sort of family described in the article, the kind that makes you do arbitrary character-building exercises, the kind that believes in heavy socialization, would've not only been horribly painful for me but stifled my economic potential.

I personally think extracurriculars as a teenager are a waste of time, because they're always going to be a stunted, baby version set up for you by adults. It's a much better plan to gain financial independence, after which you can do literally anything you want.

Also, giving back to the world is honestly just not high on my list. I just don't think about it. I mean, I think about possibly doing a startup someday, but that's mostly from the perspective of the world having lots of problems that need solving, not some kind of good feeling about giving back to society, which is nice but not really a big motivator. I still don't understand why it's supposed to be indicative that someone has been raised well.

I will say that I strongly agree with the article about standing back and letting kids make and learn from mistakes; and making rules that are consistent.

</comment><comment><USER7> I feel like the eating advice is rather cruel. You're basically starving them until they eat what you tell them to.

I am frequently given this same advice by relatives for my picky eaters.

<comment><USER8> When I was little, my mom was given that advice by my pediatrician to break my picking eating habit. While it can be effective, I'd caution you to dig into the source of the pickiness before trying it. In my case, it was a texture thing and certain foods would trigger my gag reflex. But I was too young to articulate that. Resulting in a standoff over every meal, a generally antagonistic and anxiety-ridden relationship with food and mealtimes, and an aversion to social events that included food. It also made me _less_ adventurous with trying or asking for new foods, because of the pressure previously instilled in me to finish it.

With my daughter, I take a much more collaborative approach to her pickiness. She's not allowed to tell me she doesn't like something (or refuse to eat it) until she's had at least one bite. If she doesn't like it then, she doesn't have to finish it but she has to describe to me why she doesn't like it. I've had enormous success with this, as it not only develops her ability to articulate what her preferences are, it provides me constructive feedback on how to prepare and serve that food next time (and foods with the same negative trait). It's amazing how a slight change to the seasoning or preparation can resolve a lot of pickiness. And now that _she_ understands that, she no longer categorically writes off entire ingredients or dishes, since she knows it could taste totally different and be delicious the next time she tries it.

I also couple that with dynamic portion sizing. If she's not finishing her vegetables, and they're prepared in a way where I know she's fine eating them and is just avoiding them, then I start gradually reducing the portion size of her favorite foods on the plate. She can't get seconds of anything until she finishes everything on her plate, so she can either finish her vegetables to unlock more chicken or she can decide more chicken isn't worth the veggies. Her choice. Over time this has desensitized her to eating things she's not particularly fond of and it's not nearly as big of an issue as it used to be.

I could go on, but my soap box is getting kind of long. Feel free to email me (email in profile) if you'd like to chat more about strategies that might work for your picky eaters. :)

</comment></comment><comment><USER9> "When the kids turned 16, we bought each a car. The first one learned what that meant. As the tow truck pulled a once "new" car into the driveway, my oldest proclaimed: "Dad, it is a wreck!" I said, "Yes, but a 1965 Mustang fastback wreck. Here are the repair manuals. Tools are in the garage. "

Amazing! Will use this one day. The model described in the article seems pretty solid to me. Particularly the focus on teaching problem solving and discipline using self motivation.

</comment><comment><USER10> Jesus, 12 kids? Paying for college is the least of your worries.

</comment><comment><USER11> There is no one right way to run a family. What works for one won't work for another.

I feel like, if you can somehow quantify success on a bell-curve, the values in this article aim to land kids in the middle two quadrants. You won't end up with kids in the bottom quadrant... but you also won't end up with individuals capable of soaring to great heights either. Just overall solid, middling, performers. There just would be no Apple, Microsoft, Dell, or any of the others... because people would have been conditioned not to take risks.

Anyway Plato wrote already wrote a response to this and it was in all the Philosophy 101 classes.

* Plato, "The Allegory of the Cave" || [http://historyguide.org/intellect/allegory.html](http://historyguide.org/intellect/allegory.html)

<comment><USER12> "because people would have been conditioned not to take risks."

Not sure we read the same article, several paragraphs boiling down to "here are my car repair tools best of luck" I've done brake jobs and I'd at least oversee the task if nothing else. Or "here's a plane ticket to Europe come home when your cousins get too annoying"

</comment></comment><comment><USER7> I've yet to find the magic trick that makes kids do chores especially three year olds! I'm not sure how they solved this

<comment><USER13> Punishment maybe? I think making 3 year old kids clean is abhorrent. Get them to help you tidy, not scrub toilets.

<comment><USER14> Actually the opposite. Make it fun. Make it a family event. Give rewards for doing their chores.

</comment></comment></comment><comment><USER15> It's great that a wealthy family tries to instill good values into their kids, but the idea that this kind of model could translate to everyone is a prime example of socio-economic ignorance.

The thing that actually sets kids up to succeed are a stable home life and financial security as a family. 'Doing Chores' and focusing on education and extracurriculars is nice, but there are a couple really important things:

Being able to focus on education and being able to encourage your kids to do extracurriculars is a privilege that is borne from money in the first place. If you can't afford extracurriculars and the various expenses they incur, or you don't have time to monitor and enforce a 'no TV/Computer/Games' time because you have to work multiple jobs to make ends meet, then I guess you make a sacrifice there. If you don't live in a neighborhood when your kids can safely go outside unsupervised, then that's a sacrifice there. In a lot of places, community support services don't exist.

This shit right here:

"When the kids turned 16, we bought each a car....Here are the repair manuals. Tools are in the garage. I will pay for every part, but will not pay for LABOR."

A garage, a manual, tools, any kind of car, the parts. This is a ton of money for one kid, let alone several. To think that this somehow teaches anyone a lesson about the real world is the definition of socioeconomic privilege. That is an entirely insurmountable expense for most people.

This entire article is just that though: It's a wealthy baby-boomer piece written from the stance of someone who's never wanted or struggled for anything. Their idea that you can project their methods onto other kids is unbelievably ignorant of the economic climate of working class America and is so disconnected from the real world as to be painful to read.

You want to raise kids that can pay for college by themselves? Be wealthy in the first place and reap all the implicit rewards that come with it.

<comment><USER16> > the idea that this kind of model could translate to everyone is a prime > example of socio-economic ignorance... It's a wealthy baby-boomer piece > written from the stance of someone who's never wanted or struggled for > anything.

Nowhere in the article does he claim any such thing. It's just a guy telling how he raised his kids up. What's bugging you?

actually, I think a lot of the points he makes about raising kids are applicable to less-fortunate families. Doing chores, their approach to schooling, food, family vacations, community service, backpacking and camping and in general self discipline do not require having lots of money. It just requires that parents be attentive.

<comment><USER15> > actually, I think a lot of the points he makes about raising kids are > applicable to less-fortunate families. Doing chores, their approach to > schooling, food, family vacations, community service, backpacking and > camping and in general self discipline do not require having lots of money. > It just requires that parents be attentive.

What?

In what world do Vacations and Backpacking and Camping require little to no money? Those are expensive activities in both time and raw cash. When you don't have a lot of money, food is also not something you get to be picky about because you don't have a choice -- You can eat what's on the table or you can literally starve. That is the real circumstance for people living below the poverty line in this country of which there are plenty ([http://www.nccp.org/topics/childpoverty.html](http://www.nccp.org/topics/childpoverty.html)).

What bugs me is there are a non trivial number of people, yourself included, who are entirely blind to the circumstances of the poor and struggling. These are the people who insist that if you 'just work hard' you can make it, or that education is some kind of great equalizer. These are the people who also generally have a lot of influence in politics, both locally and otherwise, and proceed to campaign against what little social safety net we have because they couldn't be bothered to give up a fraction of their disposable income so millions of people could have food to eat and running water.

<comment><USER13> I'm with you mkautzm. During my upbringing I went on holiday twice, we simply could not afford it. My Dad worked so many hours including weekends in a physical job, and was exhausted when he got home, being attentive was not really an option. I spend all the time I can talking to and playing with my kids, but it is at a real premium, so I don't waste it running a stupid rulebook.

Growing up we used to service cars ourselves but didn't have the kind of tools to do major jobs, as they cost money. Nobody bought be a car neither.

Personally I would never make 3 year old do cleaning jobs. I think the guy in the article is weird. I also didn't see where he actually paid for college.

Btw I don't have a weird feeding regimen for my kids and they eat just fine. In fact he youngest massively prefers fruit and veg. Perhaps I should force feed him meat because I have a puritanical rule book.

</comment></comment></comment></comment><comment><USER17> This guy smells Mormon. Most of the kids likely interrupted their college with 18 month (girls) or 2-year (boys) proselyting missions. I envy his discipline and dedication.

</comment><comment><USER18> Interesting. I really like some of these (mainly the big focus on self- reliance) and strongly disapprove of some others (5.15AM breakfast? No snacks? No thanks. More seriously, I'm really opposed to the mandatory 2 hours of daily study. I know I would suffer under that, as someone who can only study effectively in 15 minute intervals spread throughout the day)

</comment><comment><USER19> So much virtue signalling. If you've ever wondered why pride made it to the list of 7 deadly sins, this is it.</comment>


Show HN: Vuesence Book – Vue.js component for building documentation systems - <AUTHOR> https://github.com/altrusl/vuesence-book <comment><USER2> This looks neat! Will try it out soon.</comment>


Anger Leads to Apology From Google About Buzz - <AUTHOR> http://www.nytimes.com/2010/02/15/technology/internet/15google.html

<comment><USER2> _sigh_ Google, please test this stuff out with non-Googlers first. We understand that you haven't learned yet about how social media works, after several tries...but we like your ideas anyway. Just let the unwashed masses sanity check your stuff first before you roll it out to everybody and their mom.

</comment><comment><USER3> "Power corrupts and absolute power corrupts absolutely".

This Buzz stunt should haunt Google forever as we clearly can't trust them on "do no evil". This is a at least the sentiment I still have from this Buzz privacy scandal.

<comment><USER4> The unofficial Google motto is "Don't be evil", not "Do no evil". It's a subtle, yet important, difference.

<comment><USER5> The other _subtle, yet important, difference_ is that its an _unofficial_ motto. Everyone assumes its Googles official stance on everything, yet they never said that[1], so really, they can be as evil as they want without going against anything they've ever stated. Quite clever of them, really, to make everyone assume that this is their official motto, when they can later turn around and say,w ith a straight face, _no, we never claimed that_.

[1] Please correct me if I'm wrong. I searched but found no evidence saying otherwise. <http://en.wikipedia.org/wiki/Don%27t_be_evil> doesn't really say that its their motto either, but does certainly suggest that Google has been riding the _Don't be Evil_ publicity.

<comment><USER4> Think about it. What would be the hypothetical benefit? Being able to say "Hi, yes, we're being evil, but it's OK because we never officially promised otherwise"? Do you think such a statement heralds a clear PR win for any company?

Disclaimer: I work at Google. My opinions are my own.

<comment><USER5> Of course I don't think they'll do that, _but_ if they've already messed up PR for some reason, due to being evil, at least they can brush it off (at least a little) on having never claimed that they weren't going to be evil. If it comes to that, they're probably already screwed, but at least they have a counter argument against the _you promised you wouldn't be evil_ crowd.

</comment></comment></comment></comment></comment><comment><USER6> So they're sorry for the "concern", but not the action? Can they really not understand what was the problem with what they did?

It does look as if they've addressed several major concerns, but they're still bulling on ahead. And it's kind of ballsy after all of that to say that "tens of millions of people had tried the service in its first 48 hours" when "trying the service" appears to have been an unavoidable consequence of checking one's gmail, at least during that window of time.

<comment><USER7> -nod- sorry for the concern caused is a huge distance from "we are sorry that we chose viral over virtuous". I can't believe that GOOG top level management (who must be using Gmail as dogfooding), would have been comfortable with their top contacts being shared. Would have made for interesting viewing in light of possible deals and aquisitions..

<comment><USER8> Yeah, how about all GOOG employees release exactly the same information on themselves that they released on others without _their_ permission. That'll show they are sorry.

<comment><USER9> >> how about all GOOG employees release exactly the same information on themselves that they released on others without their permission.

If they use Gmail, didn't they?

<comment><USER8> I dunno, maybe they all opted out during the dogfooding.

</comment></comment></comment></comment></comment><comment><USER10> Google engineers need to understand that in the Real World, Frequent Past E-mails do not relate to "Most Likely to Follow". It seems like this was more of a purely technology centric solution to a human interaction identification problem without taking the "human" part into consideration. Truly scary stuff...

<comment><USER11> Maybe I'm an unusual case, but their picks were pretty good for me. Out of my few hundred contacts, it correctly chose a good top 10 that I would want to follow. Maybe my chat history helped out on that. That being said, they screwed up with the auto-subscribe instead of auto-suggest.</comment></comment>