The Death of Civilised Debate - <AUTHOR> https://www.spectator.co.uk/2019/10/the-death-of-civilised-debate/ <comment><USER2> Twenty years ago, people's ideas, good or bad, were not immediately published on a broadband medium available to virtually everyone on the planet, at once.

You had a conversation with your peers. Maybe you got some new ideas from that conversation and modified your idea. If you were to be published, at the very least it was reviewed by a local newspaper editor before being published in the "letters" section. Or it was reviewed by a publisher, or a group of professional peers.

Now everyone can publish their ideas and opinions immediately, and this is the result. We are awash in bad ideas. We are awash in misinformed reactions to good ideas. And because everyone is on a somewhat even playing field (at least as far as social media goes) people who once relied on authorities, editors and tastemakers to present them with ideas, are left with few reliable intellectual guideposts.

</comment><comment><USER3> > She has been chosen and elevated precisely because she is impossible to > oppose.

When Al Gore was chosen, he turned out too easy to oppose. Now we need something better - and fortunately Greta makes herself heard.

I understand "chosen" here as "heard and understood to have valuable ideas by a critical mass of people".

> I have often wondered about putting out an advert for a disabled Danish > 14-year-old who loves fossil fuels. In a Scandi child-off with Greta would > such a candidate win? I suspect not, though it remains unclear what the > rules are.

Danish - or rather his ideas - would lose, and the rules are simple: respect facts and logic.

> Last week the bishops of the Church of England called for calm and > respectful language from parliamentarians in the Brexit debate. An appeal > that would carry more weight if the Bishop of Leeds — to pick one example — > had not in January used his pulpit to call Boris Johnson an 'amoral liar'.

Isn't it a rather old invention - would similar behavior 150 years ago cause similar response?

> There are ways through. They include us trying to interpret the words of our > opponents, and not only our allies, in a spirit of generosity. To realise > that ideas are difficult and that mistakes are a votive offering demanded by > answers. To treat the past as well as the present in a spirit of toleration > and understanding. But most of all we must once again permit ourselves the > messy luxury of heresy, including heretical thinking.

I think it's a good approach.

</comment><comment><USER4> Garbage opinions:

"The invitation goes like this. 'Here is our 16-year-old autistic girl. Listen to her as she demands that you destroy the best system of economic growth.'"

"I have often wondered about putting out an advert for a disabled Danish 14-year-old who loves fossil fuels. In a Scandi child-off with Greta would such a candidate win?"

This person reveals everything about their politics with this line of thinking.

</comment><comment><USER5> Yes indeed, a lack of respect for people with different opinions is messing up politics, and general public discourse.

</comment><comment><USER6> There's quite an interesting discussion of this phenomenon called "The War on Sensemaking" worth watching/listening if you can sit through more than 10 minutes of discussion.

</comment><comment><USER7> One of the main hypothesis here is that people are not voicing criticism of Greta Thunberg because of our current social media environment... at the same time I see social media littered with conservatives calling her out for being autistic or not being in school or the supposed double standard of people listening to 16 year olds political opinions while at the same time having sex with a 16 year old is statutory rape. We can agree that the civilized part of the social media debates is under pressure. But I refuse to buy the premise that it's because anyone is staying silent.

<comment><USER8> And calling her out for being autistic means that the discussion became ad hominem. Keeping that away from discussions is the lowest standard virtually everybody agrees on. The article doesn't condemn this, it seems more like a random rant.

I used to be a big fan of discussions in political talk shows, the kind you might maybe see on PBS (or C-SPAN). Unfortunately this style is dying out in the sense that it has no more visibility.

Most discussions visible through media seem to be pretty aggressive and ignorant of what other people say. To be informed about a topic before joining the discussion is no more a requirement. This wouldn't be such a big problem but of course of this omnipresence it's a role model of how people communicate in everyday life and in the workplace.</comment></comment>


A README maturity model - <AUTHOR> https://github.com/LappleApple/feedmereadmes/blob/master/README-maturity-model.md <comment><USER3> > User testimonials and evidence of past performance in real development > situations

Please, not in a README.

My problem with documentation remains: It's always out of date, and frequently contradictory. I'm trying to work with Kubernetes right now, and by this "maturity model", it's a Level 5. That doesn't actually provide any real help though, since k8s is moving so quickly the tremendous volumes of documentation which make it so attractive to managers and leaders just can't keep up.

What arguments should I be providing to kubelet? Depends on whether you're reading the code, the admin guide, or the getting started from scratch guide. None of which, by the way, reference the version of k8s you're going back to.

The API docs generated from the code are a bit better, but they were written as part of the code, and the descriptions are incomplete and confusing without the context of the code (separate rant - that codebase is split between so many repos you'll go slightly mad trying to learn what is where if you're not already familiar with it).

In the end, we always end up going back to the code; even k8s documentation acknowledges this by constantly linking back to GitHub.

<comment><USER4> I just had an idea, but more in relation to documenting source code: what if there was a tool sort of like gofmt in that it has to be run in order for code to successfully compile, but instead of formatting, it actually checks if some or all of the variable names in functions or objects appear in some corresponding comment (like Python docstrings [0] or javadoc comments [1]).

I just came up with the idea and the first (bad?) heuristic now, and I didn't check to see if tools with these characteristics already exist. It would be bad initially [2] and it would be onerous for sure, but it would be a start.

[0] [https://www.python.org/dev/peps/pep-0257/](https://www.python.org/dev/peps/pep-0257/) [1] [http://www.oracle.com/technetwork/java/javase/documentation/...](http://www.oracle.com/technetwork/java/javase/documentation/index-137868.html) [2] [https://en.wikipedia.org/wiki/Colorless_green_ideas_sleep_fu...](https://en.wikipedia.org/wiki/Colorless_green_ideas_sleep_furiously)

<comment><USER5> In rustdoc, documentation examples are compiled and run whenever you run your tests. It's very helpful for this kind of thing.

[https://doc.rust-lang.org/stable/rustdoc/documentation- tests...](https://doc.rust-lang.org/stable/rustdoc/documentation-tests.html)

<comment><USER4> Thanks for the example!

To be completely clear, this is what I meant:

Suppose this is the function we want to document (using examples modified documentation tests:

      fn foo {
        let x = 5;
        let y = 6;
        println!("{}", x + y);
      }

Suppose we have a documentation requirement/heuristic of requiring the comment to have all the variables that are declared in the body of any given function. Then a comment like this would pass because whatever compilation step /processor sees that `x` and `y` both appear in the comment.

      // Prints x + y

This would fail because `x` is not found:

      // Prints z + y

This would pass but is not useful/misleading/wrong.

      // y - x FTW!!!

This example is trivial and only uses the one simple heuristic such that it is both onerous and useless, _but_ it would force the writer of the code to also write comments in accordance with said heuristic. In this particular case, if someone modifies the variable name, adds a new variable, or removes and existing once, then the compiler would force that individual to make a necessary change to that particular comment such that the comment cannot become stale (but the heuristic is bad, so it could still be useless :) ).

<comment><USER6> I would argue that externally documenting declarations inside the function is not particularly helpful.

</comment></comment></comment></comment></comment><comment><USER7> This reminds me of the worst readme I ever read: [http://dpdk.org/browse/apps/pktgen- dpdk/tree/README.md](http://dpdk.org/browse/apps/pktgen-dpdk/tree/README.md)

It's extremely long and almost impossible to read. It starts off as it means to go on:

      Pktgen is a traffic generator powered by Intel's DPDK at wire rate traffic with 64 byte frames.

For that to work as a sentence, it needs the phrase "capable of generating packets" putting in the middle.

A bit lower down it spends 200 lines showing what happens if you type "ls" in various folders on the developer's machine. Helpful.

It's fascinating to try to read because it's so mad.

If you are the author, I'm happy to provide some more constructive feedback...

<comment><USER8> The worst thing is that I could actually use something like this, but that 1500 line stream of consciousness README makes me seriously consider how much time I want to put into it.

</comment></comment><comment><USER9> This is one area that Perl's CPAN really got right. Pick just about any random module, and you're immediately greeted with a short synopsis showing the use- case. When you search for something and find 5 matching modules, you can quickly evaluate them on the basis of how easy they are to use relative to your codebase.

Random obscure module: [http://search.cpan.org/~prasad/X12-0.80/lib/X12/Parser.pm](http://search.cpan.org/~prasad/X12-0.80/lib/X12/Parser.pm)

OK so in the first paragraph, I know how to parse an X12 transaction file and get the results into my code.

This boils down to _know your audience_.

<comment><USER10> I think this is a great example. I don't even know what an X12 transaction file is, but boy howdy, I know how to parse it now!

<comment><USER11> It is a double-edged sword though. It makes it easier for people to use a module without understanding it fully (or at all). The CGI.pm fiasco is one example, where people were copy-pasting the one-liner in the synopsis and opened themselves to an attack. A lot of things are complicated and can't be usefully summarized in a few lines.

<comment><USER12> I wasn't around for this fiasco, what exactly was it?

<comment><USER11> Check the "Perl jam" series of talks given at CCC. They are quite inflammatory, but the author does have a few good points. Specifically, he shows that one of the examples in the documentation for the CGI.pm module had an exploitable vulnerability.

<comment><USER13> _Specifically, he shows that one of the examples in the documentation for the CGI.pm module had an exploitable vulnerability._

I think that's overstating things. He reported a "vulnerability" in Bugzilla which wasn't a security problem in Bugzilla because Bugzilla uses taint, which didn't do any database injection like he claimed, and which is unrelated to CGI.pm becaues Bugzilla doesn't use CGI.pm:

[https://bugzilla.mozilla.org/show_bug.cgi?id=1230932](https://bugzilla.mozilla.org/show_bug.cgi?id=1230932)

Furthermore, the examples in his presentation don't actually work, he relies on ignorance of lists and Perl data structures, and the one potentially interesting point he makes about calling functions in list context in hash initializers has been documented well understood as a potential mishap in web applications since 2000:

[https://events.ccc.de/congress/2014/Fahrplan/system/attachme...](https://events.ccc.de/congress/2014/Fahrplan/system/attachments/2542/original/the- perl-jam-netanel-rubin-31c3.pdf)

His presentation may have some value to someone spending their first week with Perl in a web context, but that person would have to wade through a lot of nonsense to get at that value.

</comment></comment></comment></comment></comment></comment><comment><USER14> >Embedded visual aids like diagrams and demos.

>The build status identifies specific project aspects that are incomplete and/or causing instability.

>One or more badges showing code coverage or other quality metrics.

I really have to disagree with points like these. I always hate cloning a project and then opening the README to find a totally unreadable mess of Markdown links and images or worse still - literal HTML. As an example, look at uBlock's README.md[0], which even though uBlock is a fantastic project in it's own right, has a horribly unreadable README. If you're already adding a README file within your code repositoy, you should assume that people will read it locally, without fancy HTML rendering. The whole point behind markup was to have a syntax which could be easily parsed by computers and humans alike (it was inspired by the plaintext email formatting style after all!).

Graphics and badges should be put on a website, in this case for example GitHub's github.io service. Specifics should be placed in a man page or something comparable. Links should either be autolinks[1] or reference links[2], to keep the document clean and structured. I'm sure others could come up with more and better recommendations on how to use "normal" markdown to still create a decent README's for GitHub. Maybe we don't even need Markdown and we can just use plain utf-8[3]...

[0]: [https://raw.githubusercontent.com/gorhill/uBlock/master/READ...](https://raw.githubusercontent.com/gorhill/uBlock/master/README.md)

[1]: [http://spec.commonmark.org/0.28/#example-565](http://spec.commonmark.org/0.28/#example-565)

[2]: [http://spec.commonmark.org/0.28/#reference- link](http://spec.commonmark.org/0.28/#reference-link)

[3]: I recently downloaded a dwm statusbar manager called "dstat" (from [https://www.umaxx.net/](https://www.umaxx.net/)) and it's README was a really nice surprise: [https://sub.god.jp/f/JmiFHE9S.txt](https://sub.god.jp/f/JmiFHE9S.txt) (extracted and uploaded, since there's no public version)

<comment><USER15> I've put this into a bash function to render markdown files in the terminal window

      function markdown()
      {
          pandoc -s -f markdown -t html "${1}" | sed 's/^<pre class/<p><\/p><pre class/' | lynx -stdin
      }

... which doesn't really address your main complaint, but can help in cases where you really don't want to exit your command-line.

Requires the pandoc package, which isn't installed by default in Ubuntu.

<comment><USER16> > Requires the pandoc package, which isn't installed by default in Ubuntu.

Neither is lynx, since you mentioned it.

Neat trick :).

</comment></comment></comment><comment><USER17> Nice project.

Shame that the history of the maturity model looks like this: [https://github.com/LappleApple/feedmereadmes/commits/master/...](https://github.com/LappleApple/feedmereadmes/commits/master/README- maturity-model.md) Even when editing in the web UI you can - and should - <USER2> a commit message so one can actually understand how a document evolved without going through the diffs.

<comment><USER18> Next Up: Git Commit Maturity Model

<comment><USER19> _A level five commit is product-oriented, contains a vision statement for the change, has its own slogan and is updated at weekly or even daily intervals, so inaccuracies are unlikely._

<comment><USER18> You surpassed my level of snark and reached limits I considered unachievable. Well done!

</comment></comment></comment></comment><comment><USER20> This maturity measure seems related to blog post driven development, as outside-in development. Are there any other related principles, approaches, and measures?

[https://en.wikipedia.org/wiki/Outside%E2%80%93in_software_de...](https://en.wikipedia.org/wiki/Outside%E2%80%93in_software_development)

[http://blog.estimote.com/post/119525082855/user-stories- on-s...](http://blog.estimote.com/post/119525082855/user-stories-on-steroids- how-estimote-uses-blog)

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

<comment><USER21> Github-Star-Driven development?

</comment></comment><comment><USER22> The rules for traditional README files are documented here:

[http://en.tldp.org/HOWTO/Software-Release-Practice- HOWTO/dis...](http://en.tldp.org/HOWTO/Software-Release-Practice- HOWTO/distpractice.html#readme)

[https://www.gnu.org/prep/standards/standards.html#index- READ...](https://www.gnu.org/prep/standards/standards.html#index-README-file)

</comment><comment><USER23> I feel like GitHub is partially being overrun by cheap and easy repositories to farm for stars, why would you ever need a README maturity model?

<comment><USER24> I'm curious, what does star farming get you? Is it just like farming karma on HN or is there a more practical reason to do that?

Also, while I'm sure there's a gigantic amount of rather useless repos on github (I contributed my share...) doesn't mean that it's not a good idea to have guidelines to write usefull READMEs for projects that do matter.

<comment><USER25> Trust / credibility / reputation attacks, of various sorts.

</comment></comment></comment><comment><USER26> I believe it's a mistake to try and cram everything into the README. We've gone the opposite direction with Material-UI.

Compare 0.x (before): [https://github.com/callemall/material- ui/blob/master/README....](https://github.com/callemall/material- ui/blob/master/README.md)

With v1-beta (after): 1.0-beta: [https://github.com/callemall/material- ui/blob/v1-beta/README...](https://github.com/callemall/material- ui/blob/v1-beta/README.md)

</comment><comment><USER27> Don't completely agree with the guidelines presented in the maturity model, but I do think that a well written README goes a long way in making your project discoverable, identifiable or even presentable. I have had old projects for which I am now really glad that I took the time to write good READMEs when I did, because I can refer back to them and still know what I am reading through. It's a good practice, like commenting your code.

</comment><comment><USER28> Please also include a line about the license in your README.

The full license can go into a separate file, but a paragraph like "This project licensed under the GPL v2 license. See the LICENSE file for details" can be extremely helpful, and is missing far too often.

</comment><comment><USER29> These levels are known to SREs as Initial, Repeatable, Defined, Managed, and Optimizing: [https://en.wikipedia.org/wiki/Capability_Maturity_Model#Leve...](https://en.wikipedia.org/wiki/Capability_Maturity_Model#Levels)

These levels are known to Discordians as Chaos, Discord, Confusion, Bureaucracy, and The Aftermath: [https://en.wikipedia.org/wiki/Principia_Discordia](https://en.wikipedia.org/wiki/Principia_Discordia)

</comment><comment><USER17> > A line about the average response time to issues and/or pull requests.

Does someone know any projects that have this?

<comment><USER30> There should be a README-embeddable badge service for this. Anyone up for writing one?

<comment><USER31> I know that there is an embeddable image of issues/PRs closed/opened over the last weeks, that is used in some READMEs, but I can't remember any of the repos right now.

<comment><USER32> I'd start with a scan of [https://shields.io/](https://shields.io/)

</comment></comment></comment></comment><comment><USER33> Here's a bootstrap template for creating your own README.md:

[https://github.com/jehna/readme-best- practices](https://github.com/jehna/readme-best-practices)

You can use it to quickly go through most common information you should include in your own readme.

<comment><USER17> I like how the project name is formatted as code.

It's missing a TOC though, scrolling through it doesn't give an overview what it contains.

<comment><USER33> Documents like README have a tendency of getting out of date really quickly — especially if you add dependencies between different content inside the file. I think anyone using Confluence (or similar wiki-style space) can agree.

Including table of contents in your README is pretty big overhead if you cannot generate it automatically. This template is meant to be a good starting point for any size of project, so it was a conscious decision to leave table of contents out of it.

<comment><USER17> I actually replied to the wrong top comment here, this was meant for [https://news.ycombinator.com/item?id=15561356](https://news.ycombinator.com/item?id=15561356). This links to [https://github.com/mcohen01/amazonica](https://github.com/mcohen01/amazonica) which is 25 pages printed - and then you definitely should have a TOC just to be able to learn what the content is all about.

If you are doing TOC manually in Confluence you are doing it wrong by the way: Both TOC or links to subpages can be done automatically.

</comment></comment></comment></comment><comment><USER34> Speaking of, I wouldn't mind getting some feedback on my latest README.

[https://github.com/billmalarky/react-native-image-cache- hoc/...](https://github.com/billmalarky/react-native-image-cache- hoc/blob/master/README.md)

It's pretty much the first time I've put effort into trying to make a README before since I'm now trying to make good documentation a serious development habit.

I'm still adding coveralls but I'd be interested to hear anyone's feedback.

</comment><comment><USER35> [https://github.com/mcohen01/amazonica](https://github.com/mcohen01/amazonica) is the best README I've seen. Relevant examples for every piece of the library, and some nice-to-have performance graphs. The 95%-use-case getting started is really the best thing you can do in a README in my opinion, and amazonica totally nails it.

<comment><USER17> I like how the project name is formatted as code.

It's missing a TOC though, scrolling through it doesn't give an overview what it contains.

<comment><USER35> The "Supported Services" is the table of contents

<comment><USER17> If this is the intention, then it is a really terrible one. First link sends me 1/3 down the page. This actually only links to the examples, the 10 other (documentation) sections/headlines are missing.

<comment><USER35> Yeah, that could maybe be tweaked a bit. The examples are really where this one shines for me. :) I didn't feel more ToC was overly necessary.

</comment></comment></comment></comment></comment><comment><USER36> I like this idea of a maturity model. It makes sense that READMEs grow in scope with their projects and can be evaluated accordingly.

To add to the README discussion, I made a small website a few months ago for README guidelines, though it's more geared towards beginners: [https://www.makeareadme.com](https://www.makeareadme.com)

</comment><comment><USER37> One simple requirement is that a README file should include, near the top, a brief summary of what the project is.

I've seen too many README files that leave that out. Knowing what changed in the latest point release doesn't help me if I don't know what the whole thing is for.

<comment><USER38> Also applies to landing pages. Just explain briefly what the project is about.

</comment></comment><comment><USER39> Their own README is at most only level two. No badges.

</comment><comment><USER40> Level 4 actually seams best to me.</comment>


Face transplant man Richard Norris has 'life restored' - <AUTHOR> http://www.guardian.co.uk/science/2012/mar/28/face-transplant-man-richard-norris

<comment><AUTHOR> I wonder if we will ever reach the point where doctors will be able to transplant your brain to a new body.</comment>


Why Washington Is the Best State in America - <AUTHOR> https://www.usnews.com/news/best-states/articles/2019-05-14/amazon-clean-power-help-fuel-washington <comment><USER2> No mention of the lack of state income tax hmm</comment>


Heyzap launches a way for developers to reach its mobile game network users - <AUTHOR> http://venturebeat.com/2012/06/28/heyzap-launches-way-for-developers-to-reach-its-mobile-game-network-users/#

<comment><USER2> gogogo jude and immad!</comment>


23andMe sold the rights to a drug it developed from its genetic database - <AUTHOR> https://www.theverge.com/2020/1/10/21060456/23andme-licensed-drug-developed-genetic-database-autoimmune-psoriasis-almirall <comment><USER2> I think this is great, this is how I would hope they would use this information. They internally create a drug, based on information - then sell the drug to someone who actually knows how too distribute it.

Where these companies are scary, is if they sell personally identifiable information to insurers, or someone who can use the info to actually create rates based on your dna.

Or the other scary way in taking them, is in theory at some point an insurance company can ask if you have ever taken a dna test, and if yes, they could ask you to tell them about it, and then you can't lie.

pretty sure the above is currently illegal, but who knows in the future.

<comment><USER3> In the US, health insurance can't use genetic information (GINA law). It is unlikely to change, as the uproar would be significant.

</comment></comment><comment><USER4> Being in the industry of identifying target variants from cohorts for pharma - I doubt 23andMe has a chemistry research organization dedicated to independently developing their own drugs.

</comment><comment><USER5> Does the media have to clutch pearls every time 23 and me does something?

1\. No, the FUD that insurance companies are going to discriminate against you is not going to happen. (At least in the USA) [https://en.wikipedia.org/wiki/Genetic_Information_Nondiscrim...](https://en.wikipedia.org/wiki/Genetic_Information_Nondiscrimination_Act)

2\. Many of us, myself included, submitted data to them so they could hopefully make drugs. And I hope they can sell them at a profit.

Look back when I had family working with Eli Lilly we would take soil samples on vacation in various remote areas to send back to their research lab. This was pretty common as they were looking for new and unique antibiotics. You know what happens to a drug when no one can make a profit on it? No one makes it.

I hope that we come up with some novel an unique drugs that will help people around the world. I don't care for any form of payment or compensation, and I am happy my genetic code is one of many millions in the dataset.

<comment><USER4> Every time anyone does literally anything in genomics it gets publicized. That's how the industry works. [https://www.genomeweb.com/](https://www.genomeweb.com/)

<comment><USER5> That's great, actually my point. I just see so many of these news articles get posted and the same two posts come up with each one. There is a very anti- genomic analysis group. I think they can be as noisy as the anti-vax movement.

I am really happy with the work 23 and me is doing and I hope more comes out of them.

</comment></comment></comment><comment><USER6> cool, good job. psoriasis is a bad disease.

I hope they use their genetic data to develop more drugs.

</comment><comment><USER7> The downside is that it's probably going to be another immunobiologic that costs the price of a sedan for one dose. Still, good on 23AndMe.</comment>


Show HN: My first jQuery plugin: easy data tables using a django-tastypie api - <AUTHOR> https://github.com/sspross/tastybackbonepie

<comment><AUTHOR> I'm looking forward to constructive feedback, but please be gentle, it is my first jQuery plugin :) Thanks!</comment>


India Transport Minister: "We won't allow driverless cars in India" - <AUTHOR> http://www.hindustantimes.com/india-news/won-t-allow-driverless-cars-that-take-away-jobs-says-union-minister-nitin-gadkari/story-JCDjBMoDQ4yzXrWv3ltxsK.html <comment><USER2> I think a bigger issue would be getting the automated cars to work on India's busy streets. The driving there is much more chaotic and requires a fair amount of aggression just to get places.</comment>


Taxi drivers block streets of Rio in protest against Uber - <AUTHOR> http://www.i24news.tv/en/news/international/americas/79635-150725-taxi-drivers-block-streets-of-rio-in-protest-against-uber

<comment><USER2> ...and now everyone in Rio knows what Uber is.</comment>


Introducing the Startup Genome Project - <AUTHOR> http://maxmarmer.com/2011/04/introducing-the-startup-genome-project/ <comment><USER2> I am through to page 20 now of the 67 page report #1, and the more I read the more lack of novelty there seems to be. An example:

"We attempt to provide that evidence for the existence of the Marmer Stages intwo ways:1) The Marmer Stages correlate with traditional indicators of progress. 2) Startups that don't move through the stages consistently, show less progress."

How does that prove the existence of something new if it correlates with traditional progress indicators (which themselves are validated by #2)? This sounds like repackaging more than discovery.

There might be something here. Will continue reading.

</comment><comment><USER3> Bad/not-conclusive data on their special sauce.</comment>


A professional mapping drone - <AUTHOR> https://www.sensefly.com/drones/ebee.html

<comment><USER2> Sounds perfect for a fun day at the beach, right? Not so fast … its $12,000 price tag makes it more suitable for more serious endeavors, such as surveying and mining.</comment>


Is intellectual property law the new protectionism? Canada should be wary - <AUTHOR> http://www.theglobeandmail.com/report-on-business/rob-commentary/is-intellectual-property-law-the-new-protectionism-canada-should-be-wary/article27372889/ <comment><USER3> Most the benefit of IP law goes to media and consumer products as opposed to software anyway. Our industry is much less protected, and perhaps that's one reason there's been so much more innovation in tech. Imagine the concept of "open source" applied to other industries, it almost seems ridiculous.

<comment><USER4> Fashion, a design-heavy field, is effectively open source. You like the Armani jacket? You can make one just like it or copy elements you like (without the branding, of course). The industry innovates pretty quickly too, as your theory predicts.

<comment><USER5> Is there any innovation in the fashion industry? Or just . . . changing fashion?

<comment><USER4> I know very little about fashion msyelf, but let's be careful not dismiss advances in a field simply because many people here have no interest in it.

<comment><USER5> Let's also be careful not to overuse "innovate" until it has no meaning. Fashion _changes a lot_ but that does not mean it's _advancing_.

</comment></comment></comment></comment></comment><comment><USER6> Hardly "new". Smart people have been identifying it as protectionism since at least Benjamin Tucker (Ca. 1880) and probably before, too.

</comment><comment><USER7> "Intellectual property is designed to encourage innovation and the dissemination of knowledge by, somewhat paradoxically, restricting access to knowledge."

For software this still makes no sense. As far as protectionism is concerned, protectionism is precisely the way first-world economies became such. It's a myth that trade liberalization moved any economy indigenously forward. (This does not mean that all liberalization is bad)

<comment><USER8> I'm having a hard time parsing this sentence:

> It's a myth that trade liberalization moved any economy indigenously > forward.

What does "indigenously forward"? Are you implying that trade liberalization does not move indigenous economies forward? Or is "indigenously forward" a term with which I'm not familiar?

I'm having a hard time with the statement as a super-majority of economists agree that liberal trade is a net boon, and hence, am wondering where the myth part comes in, but without understanding the latter part of the statement, I'm confused.

<comment><USER9> >I'm having a hard time with the statement as a super-majority of economists agree that liberal trade is a net boon

Not the OP but familiar with some of these arguments.

Free trade is held to be pareto optimal outcome - you and I get cheaper tshirts, people in bangladesh get higher incomes because of tshirt manufacturing, everyone is better off because of comparative advantage, etc.

However, if we distinguish between _development_ or _industrialization_ , then free trade provides strong disincentives wrt investing in capital intensive industries where one does not have a comparative advantage.

If I have capital to invest in Bangladesh, it does not make sense for me to try to create a high-end equipment factory; German manufacturers are way more efficient and effective, so it will be very hard for me to compete.

The competitive advantage of my region is cheap-labour, so all investment will be biased towards that. Unfortunately, this means that it's very hard to create high-value-added industries that can substantially raise average incomes.

If we look into the historical record, we find that the industrial revolution was a period of high tariffs and protectionism; the British empire had a great advantage in acquiring raw materials but IIRC, the French textile industry was more efficient at the time.

As a result, they were incentivized to export raw resources and import high value added materials. This is a loser's game. Instead, with the application of high tariffs British manufacturers were now able to compete and thus were incentivized to develop their own industry.

Again, IIRC, you can basically take every well-industrialized nation and look back to the period where they gained their industrial edge and you will find high tariffs and protectionist policies aimed at protecting and developing their own internal industries.

(This is a decent segue into talking about how pareto optimal outcomes, without taking the initial distribution of resources into account, aren't automatically moral or just [http://www.interfluidity.com/v2/5537.html](http://www.interfluidity.com/v2/5537.html) )

TLDR: free trade makes things cheaper, and spreads money around, but it does not automatically make poorer countries _substantially_ richer.

<comment><USER10> I'm not sure your argument is valid. People in Bangladesh are competing by offering their cheap labour becaus that's the most effective way for them to compete, and the best investment of their time/money.

Sure, you could make a high-tech plant in Bangladesh, but it would cost you much more (in time and money) than making one in Germany. Instead, you first invest into a low-cost low-skill plant, make the workers' lives a bit better, they can afford better education, and so on, and very soon you'll have high- tech companies there as well.

I think the main problem with free trade is completely different - <USER2> countries don't just compete on cheap labour, but also (mainly?) on lack of regulation - the West tries to pass laws protecting the workers, people's health, the environment... but companies simply product their products elsewhere where these protections don't apply, and then sell these products in the West with comparatively low tarrifs - destroying the local competition that actually abides by all the health/conservation/safety laws.

<comment><USER11> >Instead, you first invest into a low-cost low-skill plant, make the workers' lives a bit better, they can afford better education, and so on, and very soon you'll have high-tech companies there as well.

This is confusing - if the goal is to have high-tech companies there, and it should be, why wait? If it's more expensive, spend the money - it's an investment. Why spend years and years crawling along on low-margin sales of labor? The workers lives will be "a bit" better, but this sort of accumulation will be extremely anemic. It's hard to get ahead sewing T-shirts.

Meanwhile, compare Korea or Japan, which built actual industries instead of pursuing their comparative advantage and became economic powerhouses.

<comment><USER12> I believe that Japan has historically had maybe not "high tariffs", but other protectionist policies: [http://www.huffingtonpost.com/ian-fletcher/japan-the- forgott...](http://www.huffingtonpost.com/ian-fletcher/japan-the-forgotten- prote_b_850269.html)

I think that Japan is an example of a very protectionist economy that built up internal, high tech factories and educated workforces. It's a counter-example to the free trade argument.

<comment><USER11> Nearly all developed economies are counter-examples. Korea is the same way, as is the US, England, etc. All of these nations used tariffs to protect their native industry while they were developing. The same argument could be made for China, that they liberalized slowly over a period of decades to protect their native industry.

<comment><USER13> This sounds like some stuff I read from a Ha-Joon Chang book once. Who or where can I read more along these lines?

I am Peruvian so the topic is extremely interesting to me.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER14> There's nothing wrong with protectionism, check your assumptions.

<comment> vezzy-fnord Not innately. However, protectionism strongly encourages modeling the economy in adversarial and conservationist (status quo-preserving) terms. It's the same logic that people use when talking about how immigrants are crowding them out of the labor market. There's a kernel of truth, but taken too far it becomes destructive to pursue.

The end result of protectionism taken to its conclusion is autarky, which has some highly notable and horrible failures, _especially_ in more contemporary times. The protectionist agent is, of course, the state. And contrary to many social critics who shriek of "market failures," there are also corresponding government failures that are often far more disastrous, as public choice theorists have written on the subject, for instance. This along with the problems of state power that we all know too well.

Autarkies necessarily have high levels of central planning that lead to such issues as undersupply, allocative inefficiencies from distorted signaling, more frequent rationing, shortages incurred by price controls and high amounts of idle or unproductive labor with possible frantic/erratic production cycles ("employed unemployment").

<comment><USER14> Free trade traps agrarian societies into eternal peasantry enforced by the WTO and clinging on to the Ricardian comparative advantage of nations.

<comment><USER15> You're very efficiently generating pithy sound-bites, but I'm not sure that you're either listening or thinking...

<comment><USER14> I leave the deep thought to the professionals

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

<comment><USER15> Yeah... um... you might do better with a bit more range in the professionals whom you allow to do your thinking for you...

<comment><USER14> Gosh, yes, thanks for the advice. I'm looking forward to reading my second book. I'm hoping it's about why Spanish people are really good at making shoes.</comment></comment></comment></comment></comment></comment></comment>


Rails Best Practices - <AUTHOR> http://www.slideshare.net/ihower/rails-best-practices

<comment><USER2> One tip (of the many, many good ones in there) that I'd like to pull out for you is using scoped finds, as it establishes security by convention rather than requiring programmers to make the right choices every time.

Actual examples from my code base:

@word_list = @user.word_lists.find(params[:wl])

versus the alternative (of which there are multiple variations):

@word_list = WordList.find(params[:wl], :conditions => {:user_id => @user})

This will work fine... right until one of your programmers forgets to put that condition statement in there. Then, you'll allow folks arbitrary access to other people's data, silently. I have seen a lot of Rails code that guards against this by checking access before critical actions -- again, this will work fine until you forget to do it. Instead, establish the convention that you _only_ instantiate the model objects through something which guarantees authorization, and then the existence of the model object is proof that access to it is authorized. (Adjust as required if you work in banking or state secrets. I write bingo cards for a living.)

</comment><comment><USER3> I love the "Always add DB Indexes" slide.

It's amazing how many projects I run across that completely lack proper indexing. Many lack any indexes at all. It's almost like db:migrate should warn you if you've run a migration that lacked any indexes.

Rails makes it so easy to forget about the database (yes, I'm talking about you database constraints in the actual database), that users often forget that it can be a pretty important piece of their application (especially when it gets popular).

</comment><comment><USER4> For a Rails newbie like me this was very, very helpful. I still haven't used the framework enough to know what a complex code base looks like, so this is a useful reference.

I hope this will be republished as a text article sometime, because that would make referring to the code examples easier.

</comment><comment><USER5> The examples presented here could be handy for learning about Rails techniques or (in my case, at least) helping you re-evaluate scenarios in your own code.

Very thoughtful presenation.

</comment><comment><USER6> Very good presentation. Of course, you can add few minor points (use publish!, instead of publish etc.), but the overall message is excellent.

<comment><USER7> I agree, although I never liked using observers. I want to glance at the model and know what's going on. But if you're going to use observers, do it as a practice for all the callbacks on your models. Don't mix inline callback methods with observers - that just adds confusion.

<comment><USER8> I always make the call on inline callbacks versus observers based based on whether they're critical for the model's state. If your representation of whatever domain concept your model is doing relies on the behaviour in a callback - it belongs to the model. If not, in an observer.

The often suggested use for observers is for caching (which is a good example). In our big app, if the cache expiry doesn't happen the site will look a bit funny but the underlying transactional data is fine. Mixing those together wouldn't communicate the difference in how important they are.

</comment></comment></comment><comment><USER9> Quick note: The "publish" method on slide 29 won't work as expected. You need to pass in the current_user object.</comment>


Unusual experiment reveals the power of non-mainstream media - <AUTHOR> https://arstechnica.com/science/2017/11/unusual-experiment-reveals-the-power-of-non-mainstream-media/ <comment><USER2> Key takeaway (spoiler)

> King and White determined that it only took three stories in small outlets > to boost public discussion of a given topic by 62.7 percent on Twitter. The > same number of stories also swayed public opinion by about 2.3 percent in > the direction of the stories' ideological positions. So media may not be > able to change our opinions very much, but it can certainly change what > we're talking about.

</comment><comment><USER3> Flagged for content free click-bait headline.

<comment><USER4> The original paper title might be substituted, though it's not much clearer: "How the news media activate public expression and influence national agendas".</comment></comment>


macOS Big Sur Preview - <AUTHOR> https://www.apple.com/macos/big-sur-preview/ <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=23603852](https://news.ycombinator.com/item?id=23603852), which is also on the front page and was posted earlier.</comment>


A study of Louvre visitor behavior using Bluetooth data - <AUTHOR> http://senseable.mit.edu/louvre/

<comment><USER2> I love the way you can plot people's movements via bluetooth, but it's also the reason I turn my own bluetooth off.

I wonder if there's a need for something that broadcasts like bluetooth does with minimal power, but allows you to change your identifier at will instead of relying on your MAC address. An app on your phone would let you configure how often your token rotated, or to not broadcast at all. The problem that I see with this is that nobody would install the app because it provides no benefit to them. Maybe that's what's missing, such tracking needs to be beneficial for the customer but at the moment it benefits only the retailer.

</comment><comment><USER3> I wonder why they used Bluetooth when the Louvre already has over 500 WiFi antennas in place for their guide.

[http://www.nintendo.co.jp/csr/en/report2013/02_2/index.html](http://www.nintendo.co.jp/csr/en/report2013/02_2/index.html)

[http://louvreguide.nintendo.com/](http://louvreguide.nintendo.com/)

<comment><USER4> I did work on a project concerned with tracking via Bluetooth a couple of years ago. Depending on the way you try to locate the mobile devices one advantage of Bluetooth can actually be its smaller range compared to a Wifi AP that's running at its full range.

With regular consumer hardware it is basically impossible to use signal strength indication between an AP and a mobile device to do any kind of serious range estimation. Your best bet is therefore to use a whole grid of APs. The easiest way to locate devices is then to run all of them with a limited range and locate mobile devices based solely on proximity to a single AP. A more complex but potentially more accurate solution would be to run them with larger overlapping ranges and calculate the mobile device's location based on the intersections. Running too many Bluetooth APs that actively broadcast for peers, however, may have the unintended side effect of jamming the 2.4 GHz band.

All in all, I actually agree that Wifi is the better solution nowadays. Symbian was the last smartphone OS that had Bluetooth set to visible by default. Since the switch to Windows all of the major smartphones will be invisible by default which was not the case in former years. Also, quite a few smartphone users will have Wifi enabled at all times which means their phones will actively broadcast for networks which makes them easy to track in a passive way using hardware that is already installed.

</comment></comment><comment><USER5> Curious, is the entire map, data points, and movement coded in d3? Or is this a mash-up of d3 and other libraries?</comment>


Types of People Startups Should Hire, but Don't - <AUTHOR> https://trifinlabs.com/people-startups-should-hire/ <comment><USER2> I'm sorry but if your resume shows you've never spent more than 12 months in a job over the past X years then I pretty much drop it.

I don't really care why your career has played like that.

At best, you are a an awesome employee who won't stay with them more than your "frequency period".

At worst, you get discovered and fired within your frequency period.

Especially true for senior roles. Team lead for 5 months? Drop the resume.

Not always true, but in general terms if you are a great employee then you tend to hang around.

I know these are generalisations but when I am sitting there reading 300 resumes in a row and trying to work out who is going to get through an employers gruelling assessment process then if you hop jobs then it's just not worth the effort to even try to assess you.

In software development, there is a co-investment between employer and employee in which time spent in a job tends to result an an increase of value through knowledge of the systems and therefore productivity. Job hoppers don't accumulate such value, and leaving early removes that value from the employers side of the relationship.

<comment><USER3> What if I was part of a university co-op program where I work for 4-8 months at a time between academic terms (which I am) ? I've left an interview where I could hear the CTO say "so why was he fired after 4 months?" as I walked out the door.

I understand you have 300 resumes, though -- should I put _Co-op_ or _Internship_ in big red letters before the item?

<comment><USER4> Just make the heading on the section be "4 month internship at blah". That should be fine.

You may have met a CTO that wasn't paying attention but that's not the problem here. Having short periods of work while you're studying is fine.

Flipping more than a couple of full time jobs is a big red flag. You need a really good reason.

<comment><USER5> Agree with you. Caveat is that a "couple" can vary based on the length of your career. If you have been working for 20 years and in that time, you had 3 jobs that you only held for 6 months, I'd look at that very differently than someone with a shorter career span.

<comment><USER4> That's fair. It's the narrative that counts. If you look like you're a good investment then you might be asked to explain but, at least, you'll probably have the opportunity.

If your history says risk then you need something special to counteract it or you won't get the chance.

</comment></comment></comment></comment></comment><comment><USER6> One could apply these recommendations to all companies really.

I guess the one interesting point was hiring freelancers but in my experience good freelancers are really expensive amd moreover if someone is not invested with a long term view they usually end up taking a lot of shortcuts which leads to a lot of technical debt. Of course, this is just my experience.

</comment><comment><USER7> I think its more important to consider who startups should NOT hire and give large 'management' roles to. Namely middle managers who come from large bureaucratic, declining public companies.

they bring in all the baggage that startups are supposedly supposed to operate without.

of course there are exceptions (the individual is creative, very high IQ etc)...but if your sole reason for hiring them is 'oh they were the senior director of x at [fortune 500 company]'...just no.

<comment><USER8> Funny thing about "declining companies", some of these will see more money in their bad times than the sexiest startups in their heyday. It's cruel, but true.

I wouldn't look down on a manager who comes from such a company; they bring a different set of experience that a startup has not gotten to yet. I also think having access to relatively more money allows these managers to develop different kinds of skills.

<comment><USER9> There's a stage in a startup's growth when that different set of experience is valuable, and at other stages it's often harmful.

I.e. the experience of a manager coming from a 500 person organization is valuable when the startup is scaling to 100 people and is building the structures and processes required for those 100 (and later on 200 and more) to work efficiently; there's a lot of organizational know-how and perspective that would be useful to take into account. The same experience/perspective from the same person are not that valuable and potentially wrong/misleading if you're currently scaling from 10 people to 20.

<comment><USER10> This assumes that the middle manager knows what they are doing. Sadly in my case I haven't been lucky enough to get someone who understands the job, nevermind the process and politics which has just resulted in a lot of firefighting, inconsistent policies, and then being blamed when we don't know what the policies actually are. No matter where you are having the right people for the actual problems seems to be the correct plan of action.

</comment></comment></comment></comment><comment><USER11> As someone definitely in the intersection of "weird dude", "freelancer", and "successful alumnus of a startup", I'm on board with this, strangely enough.

One of the advantages of freelancers is that you get a little bit more consultative relationship than with employees. For myself at least, I bring strategic perspective not just boots on the ground, and that can make a big difference in heading off pitfalls.

I see a lot of startups running from three alarm fire to three alarm fire without the ability to tie things up over the longer term, and that often comes back to bite them. Automate and standardize all the non-core parts of your business or you will pay in distraction.

<comment><USER12> > running from three alarm fire to three alarm fire without the ability to tie > things up over the longer term

No offense but that is incredibly frustrating for employees. It really sucks being in a team that is continually chasing fires with no time to do something strategic -and the a manager will bring some highly paid freelancer who works 9-5 without stress telling you how it should be done. What I'd like is the managers to bring in people to do the shitty work while employees get some downtime to improve things for a change.

<comment><USER13> Doing the shitty work is hard and unpredictable. I wouldn't be very likely to want to hire per-hour contractors to fix bugs.

</comment></comment></comment><comment><USER14> I'm not sure about hiring the job hopper. Sure you may get a great talent, but my experience is they will leave you at the worst possible time for your startup.

<comment><USER15> Me either. I think maybe swap that out for the "Old Heads" of IT and it's a solid list.

<comment><USER14> I agree, lots of wise "old heads" out there who could make a large contribution. Super smart idea because they're being ignored by everyone else in the talent search.

</comment></comment></comment><comment><USER16> I'm more interested in "Types of People Startups do Hire but shouldn't"

<comment><USER17> Friends.

People who have no experience operating without the support of a Fortune 500.

People who are addicted to trends.

</comment></comment><comment><USER18> I'm quite disappointed to not find something along the lines of "Hiring employees of different races, ethnicities, sex, socio-economic backgrounds, etc."

<comment><USER13> You probably should just hire the best person for the job and ignore their race, ethnicity, sex, socio-economic background.

<comment><USER18> It's a poor perception to think that those factors wouldn't have any relation to who is the "best" candidate. Especially when you apply context and subjectiveness to what "best" really means at its core.

<comment><USER13> You can analyze things to death, but sometimes those factors truly aren't relevant.

</comment></comment></comment></comment><comment><USER19> What frequency of changing jobs is considered job hopping?

<comment><USER5> It's subjective and depends on the field. Software engineers tend to move around more frequently than say, petroleum engineers, probably owing to the larger number of companies who they can potentially work for. For me, looking at a software engineering resume, ideally I'd want to see at least a few stints lasting two years or more, but I'll forgive occasional short stints, since even great engineers can be bad fits in some companies.

I tend to look at this from a Bayesian perspective. If someone has left a lot of jobs after short stints, then that's a red flag. There's a possibility that they just got very unlucky (e.g. they are an amazing worker, but 5 companies they worked for folded within a few months), but it's also possible that they, for example, don't get along with people or lose interest in things very quickly. The more of a discernible pattern I see, the more likely I am to conclude the latter.

I might decide to hire that person anyway, but it's probably something that's going to weigh against them in the hiring decision.

</comment></comment><comment><USER20> Perfect. I'll send this with my cover letter next time :D</comment>


Quake on an oscilloscope - <AUTHOR> http://lofibucket.com/articles/oscilloscope_quake.html <comment><USER2> This was how we did computer graphics before there were affordable (less than $50K) frame buffers in 1980. In my 1975 MIT Digital Systems Lab my team constructed a hardware Game Of Life out of TTL gates. I designed the display as timed X-Y points on an oscilloscope. In those days a kilobyte of RAM still cost a hundred dollars, so the computer lab rationed the number of memory chips each team could use. I recall we stored the automata in a dual 64 x 64 bit frame buffer or two kilobytes overall.

The first generation computer graphics languages were vector-oriented to support either oscilloscopes or pen-plotters.

My first color frame buffer terminal was 512 x 512 x 8bits $30K AED in 1980. I think this costs than a dollar on a low-end cellphone now.

<comment><USER3> Ancient desktop is todays (or at least yesterdays) embedded. I guess this dates me but instead of taking the legacy Z80 embedded micro controller class a long time ago, I took the then new brand new 68hc11 class, although the Z80 guys got to use two DACs and a scope to display a cube on the scope as one of their labs. Now using a mhz class cpu to output a table at khz speeds isn't very impressive, so logically the next step in the lab was rotating the cube. I donno if they had to dream up their own trig or got a canned library. Maybe they canned the whole thing and just stored 30 or so frames of rotation data and switched which frame they displayed every tenth of a second or whatever. Donno didn't take the class but we got to see their work on lab day.

I would imagine whatever took a "sheet of paper" sized development board with dedicated hardware DACs and eproms around 1990 could be done as a single chip solution today, assuming you can find a single chip solution that actually has two on board DACs. Or up the challenge by synthesizing PWM signals and low pass filtering them, essentially a class D amplifier controlled by software.

<comment><USER4> It is definitely plausible that they were rendering their spinning cube in real-time. A lot of people have written wolf3d-style raycasting engines for z80 (mostly z80-based TI graphing calculators, which are clocked between 6MHz and 15MHz. much faster than a TRS-80 to be fair). This guy even made a doom- style engine: [http://benryves.com/journal/3739423](http://benryves.com/journal/3739423) (see animated screenshot). The stuff the demoscene has done with z80 microcomputers can be even more impressive.

<comment><USER3> True, but I was concerned with it being a school lab, they were already demonstrating dual dacs, linked list data structure with semi-complicated data structure (well, OK, x and y values and maybe just a dumb lookup table) in assembly. Asking them to add a third aspect of trig might have been too much for one lab so maybe they canned the rotation and just had a very large data table animation rather than calculate on the fly.

My project for the demo day in 68hc11 class was the 68hc11 was a weirdo among microcontrollers for having an external memory bus, so I slapped a 32k sram onto it making it a 32K MC and made what amounts to a drum sampler, press this button to record a couple seconds off the onboard A/D and press this button to play it back using an offboard DAC. Now a days of course microcontrollers rarely expose their memory bus and you'd just buy a COTS MC with more memory on the chip. We only had one day to prep for demo day and asking the Z80 kids to do DACs, and a vector algo, and trig all in one day might have been asking too much.

Its been awhile, but I think the demo day theme was we all had to use at least one off chip DAC.

</comment></comment></comment></comment><comment><USER5> I'm old enough to remember when my college computer lab had an analog display for one of its systems...if I remember right, it was used for LaTeX applications and development, which during those days was still an interesting CS direction.

I used to be mesmerized by it..everything looked so clean and _modern_ , much better then the crappy 80x25 "workstation" displays of the VAX's and PDP-11's.

<comment><USER6> This doesn't make sense in my head: I don't think vector displays were ever used for type setting, but I would love to be proven wrong. Do you have anymore information?

<comment><USER5> Well...maybe not LaTex, but some sort of mindblowing text to my CS101 mind.

What I remembered was this device... [https://en.wikipedia.org/wiki/Tektronix_4010](https://en.wikipedia.org/wiki/Tektronix_4010)

 _The 4014 had a series of commands for drawing both text and graphics_

I was at the Florida Institute of Technology in 1985, and Lamport had just published the LaTex language and their was some interest in the department in getting a version of it running the the 4014...

I think someone hacked a version of it...but my aging memory fails me.

<comment><USER6> Vector displays don't usually handle text very well. They can draw perfect curves, but I don't think they could ever do the Bezier curves that fonts depend on.

Anyways, what you are referring to is in between vector and rasterized displays. Still very interesting. I should ask my dad about this (he worked for Textronix in the 70s).

</comment></comment></comment></comment><comment><USER7> >This means the frequencies emitted are very high (5 samples per period is 19.2 kHz) and it seems the audio output is being low pass filtered resulting in silly wobbly lines.

That effect actually looks amazing. I'd totally play a game with that aesthetic.

<comment><USER8> Would it be possible to recreate that effect on a raster display with a shader?

<comment><USER9> Part of it would be done on a shader (mainly the visual portion, like the glowing and whatnot) but I think most of the effect would need to be done on the CPU.

You might be able to make it work with clever usage of geometry or tesselation shaders though, and maybe also transform feedback.

Honestly though, since the effect necessitates simple, low-poly geometry, doing the effect on the CPU shouldn't be too unreasonable, and would be where I would start.

EDIT: Actually, now that I look closer, the one on the right here[0] could be done more reasonably in a shader, I was thinking closer to the one on the left (and how it actually looks in the video).

[0]: h[http://www.lofibucket.com/articles/img/speed_comparison.jpg](http://www.lofibucket.com/articles/img/speed_comparison.jpg)

</comment></comment></comment><comment><USER10> Always fascinated to see people use alternate input methods. I wonder if there is some possibility for steganographic applications with this? I.E., plug a soundcard into an oscilliscope, play a specially crafted .wav or equivalent file, and viola, secret message?

<comment><USER11> Here's a music track which is its own music video when played on a 2D oscilloscope:

[https://www.youtube.com/watch?v=GvX5UWnUYTc](https://www.youtube.com/watch?v=GvX5UWnUYTc)

<comment><USER12> clicking around after this video i came across this: [https://www.youtube.com/watch?v=YqSvkNjWnnQ](https://www.youtube.com/watch?v=YqSvkNjWnnQ)

wow that looks and sounds amazing.

<comment><USER13> Hypnotic. I wonder how the artist designed the visuals - is it only by math?

<comment><USER14> He used framework called Pure Data to build the sounds by additive synthesis (of pure sine waves). If you do that with some care (and you can pick the phases of the sine waves freely), you can build/explore/craft some pretty funky visuals quite easily, I imagine. It's the large scale composition, making it into a coherent whole that seems hardest to me (then, that is always my weak point when making music, I'll just keep practising :) )

</comment></comment></comment></comment></comment><comment><USER15> Didn't Woz have the original Apple computer outputting letters to an oscilloscope before he made the circuits to output to a television?

<comment><USER16> Lots of older systems had vector rather than raster displays, from what I've heard of people who used them (too young myself) they were highly interactive - you could design movement and animation much more easily, and make the display very responsive. The major downside was not being able to do colour (easily), and not being able to cope with a lot of on-screen complexity (like the line count here not being much to shout about). Rasterised displays are a special case of vector, but with fixed bandwidth requirement.

<comment><USER17> There was a game console for vector games, named Vectrex.

The games that ran on it were really interesting.

Many modern games use the now high-resolution of raster displays to imitate Vectrex-style graphics.

[http://www.binaryzoo.com/games/echoesplus/echoesplus_4.png](http://www.binaryzoo.com/games/echoesplus/echoesplus_4.png)

Note that the corners between straight lines are brighter, it is because on Vectrex the way to control line brightness was to draw it over itself, also line crossings were brighter too.

Important to mention that many vector displays could NOT make curved lines though.

<comment><USER18> Several of the famous commercial arcade cabinets were vector too, including Asteroids, Battlezone and (as tomswartz07 mentioned) Tempest.

<comment><USER19> Don't forget the original Star Wars cabinet!

[http://www.i-mockery.com/minimocks/50arcadecabinets/star- war...](http://www.i-mockery.com/minimocks/50arcadecabinets/star-wars- arcade.gif)

</comment></comment></comment></comment></comment><comment><USER20> This would be a very cheap way of representing cyberspace in a b-movie. It already looks massively better than the Matrix's falling green thingies.

</comment><comment><USER21> That looks really trippy. I think it would actually be a cool rendering mode to have in FPS games in general, on computer screens, particularly the cyber-/techno-punk kinds.

</comment><comment><USER22> At first, I thought this was just going to be another person discovering that analog TV sets were really just oscilloscopes with predetermined sync; and then setting up a sync for the scope to turn it into a little TV...

How nice to be wrong! Hats off on this one. Nice hack indeed.

</comment><comment><USER23> I wonder if the limit on lines was due to 20 kHz filters on the audio output. When the 24/96 audio sampling & perception discussion went by a few weeks ago I seem to recall some testing showing that even high sample rate sound hardware had low pass filters just above 20 kHz. This kind of issue should have been easy to spot in development and testing, though, so maybe just a limitation of the medium.

I've got an old hobbyist oscilloscope, it was my former boss and mentor's first scope. I really should hack up something with it along with some of these low cost cpu boards.

</comment><comment><USER24> Wow, great!

I can only try to imagine how it would look on a oscilloscope with more MHz and a better soundcard.

</comment><comment><USER20> Given that this is a realtime 3d space squished into the bandwidth of audio, could a variation be done with a worn kinect to feed into headphones an audio waveform version of current surroundings that is capable of being translated by the brain back into 3d. As that sounds like a possible hack for giving some form of vision to the blind.

<comment><USER25> I'm not so sure. The brain's ability to process and interpret visual information and form an intricate understanding of 3d space seems to me a "hard-wired" process.

Sure, you could convert information encoding 3d space around a user and convey it to them in any number of methods, but that wouldn't leverage the brains very specialized mechanism for processing and interpreting visual information(which I rightly or wrongly conceptualize as a mix of hardware(some analogue of a video coprocessor for the brain) and software(the algorithms the brain uses to interpret the data).

<comment><USER20> Examples such as Daniel Kish suggest otherwise -

[http://en.wikipedia.org/wiki/Daniel_Kish](http://en.wikipedia.org/wiki/Daniel_Kish)

[https://www.youtube.com/watch?v=ob-P2a6Mrjs](https://www.youtube.com/watch?v=ob-P2a6Mrjs)

<comment><USER25> The first link is interesting, it does say the saw signs of activity in the same brain region of a blind echo-locating person as a sighted person who is activity looking at something, but it is hardly a smoking gun.

Perhaps if you are defining "3d" information as something very primitive to the point of being "is there something directly in front of me", but nothing even as close as rich as even the quite crude 3d information being conveyed on the hacked oscilloscope outlined by the OP.

I do see technology eventually giving blind people some sort of "sight" back, but not for quite some time, perhaps after there is some sort of workable neural interface that currently lives solely in sci-fi.

</comment></comment></comment></comment><comment><USER26> Regarding the sound card, from the description it looks like the "crappy" sound card also employs a high-pass filter.

Is there a reason for it? What kind of circuit design in the DAC could cause low frequencies/significant distortion to require a high-pass at these frequency ranges?

Genuine curiosity here.

<comment><USER27> Most PC sound cards employ so-called single-supply designs running their chips only between Ground and a single positive supply, e.g. 5V or 3.3V. So typically for a headphone output the amplifier will swing around 1.5 or 2.5V or so. To get rid of this offset, a capacitor is used. This capacitor, together with the headphones impedance, will function as a RC hipass.

<comment><USER26> Thanks for the explanation!

</comment></comment></comment><comment><USER28> That's awesome.

You truly can play quake anywhere. I always liked ttyquake, which replaced the renderer with an ascii-art output. Actually quite playable if you set your font size small enough and your xterm large enough...

</comment><comment><USER29> definitely the coolest cyberpunk thing ever

I wonder if it could be emulated with a shader...

</comment><comment><USER30> To bring this full circle, is anyone aware of a software oscilloscope for Windows / iOS that you could 'play' the wave file into to render his Quake demo via software?

<comment><USER31> try baudline [http://www.baudline.com/screenshots/full_screen.png](http://www.baudline.com/screenshots/full_screen.png)

</comment></comment><comment><USER32> Awesome idea and execution. I'm wondering whether it would work better with an edge detection algorithm instead of using the triangle edges.

<comment><USER7> Sounds neat, but a bit complicated. You have to take those edges and turn them into an efficient set of paths for the oscilloscope to trace, and you have to do it very fast.

<comment><USER33> Treat the edges as nodes in a graph, then run a graph traversal algorithm like

[http://en.wikipedia.org/wiki/Eulerian_path#Hierholzer.27s_al...](http://en.wikipedia.org/wiki/Eulerian_path#Hierholzer.27s_algorithm) algorithm adding invisible edges to the next closest visible edge if you get stuck.

One could get higher bandwidth by using the three color channels of an analog VGA output to control X, Y, and intensity.

</comment></comment></comment><comment><USER34> I don't know how oscilloscopes work. Is the sound in the game producing the actual image or is it generated from something else?

<comment><USER35> An oscilloscope is a cathode ray tube that has an electron beam that can be moved around by applying varying voltages to its inputs. In this case it works as an XY plotter, i.e., you specify the X co-ordinate by the value of the voltage on one input and the Y co-ordinate by the value of the voltage on the other input.

You can display lines on the oscilloscope screen by giving a specially generated two channel audio as its input; one channel works as the X co- ordinate and the other one as the Y co-ordinate.

The game (Darkplaces which is a source port of Quake) renders a scene that has the lines to be drawn (triangles, in fact) on screen. The output of the game, i.e., the lines to be drawn on screen are sent to an audio synthesizer process(PortAudio). This process uses a sound card to create the audio. The output of the sound card is connected to the inputs of the oscilloscope which draws the lines on its screen.

So it's not the sound in the game that is producing the actual image. The output of the game is converted to an audio signal which when given as input to the oscilloscope creates the actual image.

</comment></comment><comment><USER36> Maybe it's just me, but the audio output sounds really cool.

</comment><comment><USER37> Fantastic example of how constraints form art.

</comment><comment><USER38> This was posted earlier and set off the voting ring detector. I haven't looked closely, but that may have been a false positive. Since it's a good post and didn't get the attention it deserves, we won't treat this one as a duplicate.

<comment><USER39> It was/is on top of proggit, so people must've just reposted it here en masse, driving the upvote count up quickly.

<comment><USER38> I think that explains it. Thanks!</comment></comment></comment>


FemtoCleaner – A bot to automatically upgrade your Julia syntax - <AUTHOR> https://juliacomputing.com/blog/2017/08/17/femtocleaner.html <comment><USER2> But will it upgrade your 1 based indexing to 0 based?

<comment><USER3> (For those not accustomed to checking usernames, I feel fairly certain this comment was made in jest ;-) )

<comment><USER2> Yes, I made it in jest, thinking that I should say it here before anyone else does. ;-)

<comment><USER4> My high hopes were then shattered on the rocks below! Partial jest ;)

I am looking forward to giving Julia a third look when it hits 1.0. Great work by the Julia team!

</comment></comment></comment></comment><comment><USER5> Every evolving programming language should have something like this!

<comment><USER2> It sounded like magic the first time I heard Keno describe this. But seeing it built and spread to 700 repos in a few days, it appears obvious in retrospect. The only question now is - why didn't we do this sooner?

<comment><USER6> Maturity of the ecosystem and a growing awareness of the problem that this solves, perhaps?

It's a kind of ripeness for change which, I think occurs in every large project. There's that gnawing feeling that something is more difficult than it should be, followed by a sudden realization that the basic tooling now exist to solve the underlying problem without an epic amount of work.

Attobot has been tremendously helpful, and femtocleaner will be too. Nice work guys!</comment></comment></comment>


Mysterious Gamma-ray Flashes in Earth's Atmosphere - <AUTHOR> http://science.nasa.gov/headlines/y2010/29jan_firefly.htm <comment><USER2> Question: Would this effect be harnessable for interstellar communication through a modified AM/FM usage? Should SETI be looking for this?

Gamma rays are one of the universes longest travelling emissions that remain unobstructed by background dust, so I wonder if it would ever be harnessable to provide interstellar communication to our nearest neighbors. In theory, you'd only have to establish receivers. Also would it be scalable to use on a gas giant (as to our current knowledge, they're presently more plentiful than rocky planets, and may be necessary to the evolution of habitable planets) to send an amplified message?

<comment><USER3> Well, I have wondered for a long time about lightning itself and how we could harness the energy from that. There doesn't seem to be much work going on with that.

I imagine that you could do both, but it is not clear yet how to do either one of them.

<comment><USER2> Like all good ideas regarding electricity, Tesla already had it.

Tesla coils operate in reverse to turn high-voltage into high-current. This was the base of Tesla's idea for wireless electricity. One Tesla coil can deliver power through the air to another coil, however it typically only has a fraction of the power of the input. However Tesla coils are capable of receiving atmospheric electricity (lightning) and outputting current, however only Tesla appeared interested in this.

A large enough Tesla coil could survive a lightning strike and produce huge amounts of high voltage direct current, which is incidentally exactly what's required for producing hydrogen.

It would be nice to see a company build a large tesla coil capable of surviving lightning strikes to produce hydrogen for fuel cell vehicles.

<comment><USER3> Any thoughts on why it hasn't been done as yet?

<comment><USER2> My guess would simply be because the applications are limited in the West. Europe would have no demand for the technology as yearly lightning strikes can be less than .1/KM^2, while parts of the US can easily get to >50/KM^2. Lots of Africa, and many parts of the southern hemisphere, can receive lightning strikes of >200/KM^2 yearly.

Aside from the US and Australia, quite literally no technologically advanced country gets lightning on the scale needed for this to have the great potential it has. Even though much of Asia has high lightning strikes, China and Japan have virtually none. Leaving just India who would have the means to research something like this.

Honestly I believe the major problem is the current produced. A positive lightning strike can hit at 300kA, and electrical discharged requires a voltage of 3 million volts/meter traveled (IIRC a lightning bolt averages 100 million volts). This means to get it down to 110V, you're likely dealing with ~300 gigaAmperes. >60 Amps will allow you to weld 16 gauge steel wire. So you would have to have enough conductive material to handle the flash-heating produced by a surge of 300gA. This flash heating may, however, be productive if use was intended for a power plant as it would provide massive amounts of flash-boiling.

Another problem, however, is that the receiver has to be high enough that no alternative route is provided to the lightning, or nothing will be received. However, creating an ionized path above the receiver (or multiple paths at 45 degrees away from the receiver) would enable it to 'catch' a lot of strikes, increasing strike rates.

I'd say it's certainly possible with present off the shelf technology, however I doubt its very practical and at worst, you could vaporize a lot of valuable copper.

</comment></comment></comment></comment></comment><comment><USER4> What would be really cool:

1) We find out these flashes are all over the place 2) We put a ton of batteries in space powered by these flashes and send them to earth 3) Number two is cost efficient

</comment><comment><USER5> The causins are here!</comment>


Monthly Hashes 2020-07 - <AUTHOR> Here you can post hashes of, say, your Git repo current revision, or maybe the work-in-progress text of a book you're writing but didn't show to anyone yet. <comment><AUTHOR>
        Talkyard origin master Git SHA1, 2020-06-20: 236226766862c1a92b127d3cf6006197784967fb
        Talkyard w-km7d, 2020-07-10: 6bf922fda6c486973dc192ffd7115f19d2dbd095 (backlinks & link previews — will squash & rebase, disappears)</comment>


Spanish coronavirus deaths higher than official count - <AUTHOR> https://elpais.com/sociedad/2020-03-27/el-coronavirus-causa-mas-muertes-de-las-detectadas.html <comment><AUTHOR> Mods, feel free to replace with a translated version. The is fromEl Pais, Spain's leading newspaper. They estimate using the spike in all cause mortality during the coronavirus period.</comment>


Wordpress or Typepad? Just roll your own - <AUTHOR> http://hoisie.com/post/an_interesting_exercise

<comment><USER2> How can you not figure out how to make a new Wordpress theme (HTML/CSS) but yet roll your own which will obviously include a theme of its own (HTML/CSS)? While I agree a basic blog system is not hard to write, I think the author just wanted to write his own to be able to talk about it. Making a new theme was one of the first things I did with Wordpress years ago. It took all of five minutes to see how it was done and put the design I had into its own theme. His design is very unoriginal anyway, there's probably even a pre-made theme for WP that would have worked.

</comment><comment><USER3> I don't agree. I'm not a fan of bloated software (i.e. features I don't use, etc.), but one thing that Wordpress and Typepad have going for them is a large user base that helps to uncover bugs like security flaws.

Rolling your own, while a good exercise, will most likely lead to problems.

</comment><comment><USER4> whatever happened to the "focus on the business" mindset? It seems building your own blog past the basics a frame work can do would eventually be more work then just using wordpress.

Unless your businesses is blogging perhaps your efforts are better spent elsewhere.

<comment><USER5> What does this have to do with business? Making a blogging app is a great way to learn a new framework/language/development technique (say, test-driven development) that you might have been wanting to explore.

It seems obvious it falls into the category of pleasure, not business.

Now, that said, feel free to tinker so you can learn Rails/Django/whatever, but _please please please_ add support for Akismet or other robust spam filtering. Don't make spammers rich with your ignorance.

</comment></comment><comment><USER6> This is horrible advice and smacks of NIH syndrome.

How did this get modded up so high?

Ok, so instead of focusing on other aspects of your main business, let's reinvent the wheel and waste 3 months when we could have had the thing set up in 3 days?

Brilliant! Sign me up!

</comment><comment><USER7> Although I am currently running on WordPress, I tend to agree. I find I haven't really tweaked my blog to my liking very much, simply because I am not very proficient in PHP and I have no interest in learning it or the WP specific aspects. Also, I am hindered by the security apsects of hosting WP and the multiblog problems, so I still haven't added the ability to even upload images (currently using the debian hack for multiblogs, but it doesn't provide for per blog content directories). The task to redesign my blog gets delayed indefinitely.

Also, when I think about cool things a blog could do, it is an even greater hurdle to get into WP plugin development. Would be much easier to do it with my own framework. Also, the WYIWYG editor of WP seems to suck anyway.

The only rationale for learning to write WP plugins would be to create something that could become wildly popular (similar to "you have to have a Facebook app", maybe you also have to have a WP plugin).

</comment><comment><USER8> He lost me when he said that Wordpress was "broken" and "not worth the effort".

</comment><comment><USER9> Although I'm generally leaning this way I don't think it is for everyone. I'm currently using serendipity with a whole block of custom code duck taped on for the non-blog areas of my personal site.

When I put that code together it did everything I wanted and seemed to be fairly flexible. That was over a year ago now and I'm again considering a complete rewrite because making even small changes is just too painful.

If you can clearly see how you'll be using your site a year from now then rolling your own may work well for you. If not then you may come to regret not taking the time to leverage an existing project.

</comment><comment><USER10> aka the "how to get 0wned" strategy

<comment><USER11> 95% of blogs might as well just be a single flat html file edited as needed. No security problems there.</comment></comment>