What if Ansible used XML for configuration management? - <AUTHOR> http://djwonk.tumblr.com/post/87548491694/what-if-ansible-used-xml <comment><USER2> This post is ridiculous.

A very valid complaint would be that Ansible isn't idempotent, which I think is what the author was trying to get at. Nixos would be a great example of an idempotent system, and you might be able to convince me that Docker would qualify, too. As much as I like Ansible, its lack of true idempotence is a weakness.

But that has _nothing_ to do with yaml v. XML v. anything else. You could trivially write an idempotent description language in XML, and you can trivially write a horrible state-based system in a Haskell DSL or Prolog. As far as I can tell, the author is complaining that people _think_ that Ansible is idempotent because it has yaml. That is incorrect, but I don't think that it'd be better or worse if they'd pick something else; merely more verbose. (Look at Maven and Gradle for an example.)

<comment> dj-wonk Yes, the post is somewhat ridiculous. I can take the blame for that. Still, I think the choice of language for these tools matters a lot. With so many experiments in configuration tools, my goal was to raise the point in a light- hearted way.

I'm really interested to see if or how a community with diverse preferences (developers and system administrators) might agree on a small number of configuration management tools. Or are we destined to have these tools splinter across languages?

<comment><USER3>
        > I think the choice of language for these tools matters
        > a lot

I read the post, and still don't know _why_ you think it matters, when comparing two data-interchange languages.

<comment> dj-wonk I'm saying that using a data interchange language (whether it be XML or YAML) is no substitute for a programming language.

</comment></comment></comment></comment><comment><USER4> Good points.

Ansible playbooks are not always declarative. There is often stuff that looks like this:

\---

       ---

       # Launch Job to count occurance of a word.

       - hosts: $server
         user: root
         tasks:
          - name: copy the file
            copy: src=inputfile dest=/tmp/inputfile

          - name: upload the file
            shell: ...

          <more names and shell pairs ...>

\---

That is just specifying a set of steps. So then it calls for for loops, if conditions, and so on.

I noticed that pattern in examples when looking at Ansible and kind of shook my head.

But oh well, I guess, it depends on how you arrived at Ansible. I think if you view it as "better than SSH-ing and running shell scripts". Ok it looks nice. But if you want a more mature declarative based configuration system, then maybe you'll start to see various flaws or design issues with it.

Chef seems more powerful. Also played with saltstack. I like saltstack better so far but aside from playing with it still use shell scripts and OS packaging pre-/post- install scripts to handle tasks like these.

<comment><USER5> You say that they're not always declarative like it's a bad thing. Personally, I find it nice that we have the playbooks to build out our infrastructure and the playbooks that perform a rolling upgrade of our application using the same syntax, variables, and inventories. If you keep your declarative playbooks separate from your procedural ones, you get more power than a declarative system alone can provide. (FWIW, we chose it not just for this, but because of its lack of an agent - we can use our configuration management to deploy software to customers' infrastructure without colliding with their own CM.)

Further, this (using a data language as a programming language) isn't without precedent. Both XSL and Ant have standard conditionals, loops, etc available for use.

<comment><USER6> XSL and Ant are the poster children for why this is a bad idea.

</comment></comment></comment><comment><USER7> People don't necessarily hate XML, but man do we hate tags. One huge feature of YAML is its clever use of whitespace to eliminate a lot of cruft from the syntax.

That said, I'm starting to warm to the fact that Django uses straight Python for its settings. If you're going to use a Turing-complete language to write your config file, might as well use a familiar one.

<comment><USER8> I hate XML. It's unnecessarily complicated, it breaks easily and it's verbose.

YAML is kind of sucky as a data transfer format (chopped up YAML is still valid which leads to all kinds of screwed up behavior), but its mirror equivalent JSON is good for that. Equally, JSON sucks for declarative configuration but YAML really shines.

Django's settings file is also one of the thornier bits of django. I'm not sure if should necessarily have become declarative, but making it a monolithic python file causes a lot of headaches with integrating modules, state changes, etc. The fact that you can often move a bit of config from one end of the file to the other and change the behavior completely is a bit screwed up. I think it would work better if it were a bit more ansible-y.

<comment><USER7> I never did like using JSON as a configuration format (I'm looking at you, Sublime Text). But it's still miles ahead of using XML as a config format.

I can see where you're coming from regarding Django's settings file. Lord knows how many hours I've wasted hunting down stray configurations thanks to frameworks which abuse inheritance for its settings config (I'm looking at you, Mezzanine). Still, the fact that it is Python, and can therefore be debugged like any other Python script instead of obeying its own special syntax, is a plus in my books.

<comment><USER8> I was actually thinking of mezzanine when I wrote that (and django-cms is worse!). Both packages gave me a real headache while setting up settings.py. There was no clean separation between code and declarative configuration.

</comment></comment></comment></comment><comment> vezzy-fnord The author's complaint isn't really related to YAML or XML, it's his disdain that Ansible uses a data serialization language, instead of a full-blown programming language.

<comment><USER4> Another way to look at it though is the author wouldn't mind using either YAML or XML if Ansible scripts were fully declarative. Once the need for if conditions and for loops comes about, any configuration file language (or data transport) language is going to be a little awkward.

<comment><USER7> "Once the need for if conditions and for loops comes about, any configuration file language (or data transport) language is going to be a little awkward."

Occasionally, it would spawn a whole new language: [http://www.lua.org/](http://www.lua.org/)

</comment></comment></comment><comment> lost-theory This wraps up my feelings about CM tools very well. They all seem to follow this "language agnostic" / "it's not really programming!" model, whether it's chef's ruby DSL or ansible's YAML. I don't understand what's so special about this field that it requires a totally different paradigm.

In chef's case, I would rather write simple classes & functions in plain ruby than use the DSL and write "Lightweight Resource Providers".

In ansible's case, I even did a little experiment to show what it would look like to use & call ansible modules as normal python code:

[https://github.com/lost- theory/ansible/blob/module_experimen...](https://github.com/lost- theory/ansible/blob/module_experiment/demo.py)

[https://groups.google.com/d/topic/ansible- project/Zv3Veo77gP...](https://groups.google.com/d/topic/ansible- project/Zv3Veo77gPQ/discussion)

I would love to see a CM tool that embraced plain python or plain ruby and not try to go the pseudo-"declarative" route, which ends up being IMO too constraining for not much benefit and needlessly reinventing a bunch of wheels (e.g. looping & conditionals, as the article mentions).

<comment><USER9> I think the intention is to appeal to traditional sysadmins with limited development experience, who don't know ruby, and more importantly don't _want_ to know ruby.

I haven't worked with Chef so I can't comment, but I work extensively on the puppet-openstack project and my experience is that this aversion to actual languages is part of a pipe dream. The only people who are able to work with the modules in any meaningful way are the ones that understand the Puppet DSL and runtime in its entirety, and it's not much simpler than the Ruby language it's based on.

Honestly I don't know what the solution is: part of the DevOps movement is introducing development practices to the management of systems, but that brings with it an inherent requirement that the operators actually embrace the development practices. A quick example of where this can easily fall down is if you maintain a puppet environment of any complexity, you'll end up keeping both the data inputs and the modules in git repos, but if your sysadmins aren't comfortable with git, the adoption simply won't happen.

<comment><USER10> > A quick example of where this can easily fall down is if you maintain a > puppet environment of any complexity, you'll end up keeping both the data > inputs and the modules in git repos, but if your sysadmins aren't > comfortable with git, the adoption simply won't happen.

As someone who is traditionally more dev side, but has done a lot of casual system administration, this part of things like chef and puppet drives me nuts. I don't want to version my infrastructure in git and then throw it, with no versioning context, up to a server and have it version it again in its own unique, quirky, and honestly haphazard way.

</comment></comment></comment><comment><USER11> Of course, Ansible doesn't really use YAML. It uses a YAML parser, but each individual command goes through quite a bit of parsing inside ansible as well. An ansible command like this:

       - command: chdir=/foo echo {{ bar }}
         when: bar is defined

Really parses down to something like:

        - action:
          - module: command
          - arguments:
             - chdir: /foo
             - command: echo {{ bar }}
          - when: bar is defined

More parsing is done by ansible than is done by YAML. I'm not necessarily saying it's bad, but it definitely leads to some gotchas and weirdnesses.

How it mixes in Jinja2 is also strange. In the above example, there are two expressions: {{ bar }} and 'bar is defined'. Normally if you paired a templating language with a text format, you would expect the templating language to apply to the whole file. Ansible applies it afterwards, and selectively. That's the right thing to do, but it does make it confusing.

Many people choose ansible because they don't want to learn Ruby as well as a CM tool; ansible isn't much simpler. I'm not a huge fan of ansible, it's just better than everything else I've encountered so far.

</comment><comment><USER12> I've been using Ansible a bit recently (and _really_ enjoying it) and agree that YAML can be a little wonky at times, like having to escape any template line with :{ in quotes because YAML interprets it as a dictionary. However I don't think Ansible wants you to code all your logic in YAML. You can easily write a plugin with Python and have all the proper syntax and capabilities of a programming language.

Where Ansible really shines is giving you a huge library of quality plugins/components and a simple YAML-based DSL for composing those plugins. Want to spin up an EC2 instance, copy over your code, and ensure a service is started? No problem, it's a 4 or 5 line Ansible script. When you want to do something more advanced, look at the extension points Ansible provides to plugin your own code: [http://docs.ansible.com/developing_plugins.html](http://docs.ansible.com/developing_plugins.html)

<comment><USER13> Right, if you need more complex logic, then you write a module in a normal programming language. The YAML is intended to keep the intention and orchestration logic simple and readable.

<comment> dj-wonk Does this work well in practice? I'm new to Ansible.

<comment><USER14> It works okay. One shortcoming, as mentioned at [https://news.ycombinator.com/item?id=7831680](https://news.ycombinator.com/item?id=7831680), is that there is no clear model for state transitions. Let's say that on day 1, you want to use Apache:

      - apt: name=apache2 state=present

Then, on day 2, you realize that Apache isn't hip, so you switch to nginx instead:

      - apt: name=apache2 state=absent
      - apt: name=nginx state=present

It works, but you're stuck with entries in your playbook that are there for purely historical reasons.

<comment><USER13> It depends on your deployment model to a degree. In the case where you build a new image for your web server on every deployment, then this isn't an issue. For longer running systems, like databases, it would still be an annoyance.

I think that Ansible is still a transitional glue tech though, and projects like flynn.io may move things forward by making the CM part of the infrastructure a developer task vs. a devops one.

</comment></comment></comment></comment></comment><comment><USER15> One of the things I like about Saltstack is that you can build your formulas using any renderers you like. You can try to remain strictly declarative in YAML, or if you like build your states completely dynamically in Python or a Python-DSL. The default uses an inbetween that takes YAML buts lets you template that YAML with Jinja.

[[http://docs.saltstack.com/en/latest/ref/renderers/](http://docs.saltstack.com/en/latest/ref/renderers/)]

</comment><comment><USER16> Build tools also had a similar evolution. Ant's XML syntax first started out as all declarative, but then later on had to add more control structures (ant- contrib, IIRC). The currently popular build tools - Gradle, Rake, Grunt etc - all use a dynamically typed full-blown programing language for specifying tasks and their dependencies.

<comment> dj-wonk As another example, Leiningen is largely declarative, but since Clojure code is also data, it is possible to insert code alongside. See line 211 in the sample project.clj.

[https://github.com/technomancy/leiningen/blob/stable/sample....](https://github.com/technomancy/leiningen/blob/stable/sample.project.clj#L211)

</comment></comment><comment><USER17> I find YAML to be code shoehorned into YAML and think it's ambiguous whether under the GPL (the license itself, not AnsibleWorks' interpretation of it) the YAML is subject to the GPL. It seems to be class declaration, iteration, and function calls (to GPLed functions) to me.

</comment><comment><USER8> The part of ansible that really kind of bugs me isn't the YAML, it's the default JSON output of commands.

I ended up integrating this into all my projects:

[http://blog.cliffano.com/2014/04/06/human-readable- ansible-p...](http://blog.cliffano.com/2014/04/06/human-readable-ansible- playbook-log-output-using-callback-plugin/)

Which fixes the problem (sort of), but I really don't understand why the default isn't looking something like that.

It's a real pain parsing through some JSON with a ton of \n...\n...\n...\n's in order to find the source of the errors.

</comment><comment><USER18> I'd say leave the programming languages to modules and compose them together with a data language. Forced simplicity for configuration is a good thing.

<comment> dj-wonk You'd prefer to allow composability in the middle and bottom layers (the modules) but have a different language on top?

I have to admit that I'm a fan of turtles -- the same kind of turtles -- all the way down. Many of the abstractions I see in configuration management tools seem to be fancy names for modules. I don't see why a role, a playbook, a play, and a task really need to be different things at all. Why is the hierarchy necessary?

<comment><USER18> > You'd prefer to allow composability in the middle and bottom layers (the > modules) but have a different language on top?

Absolutely. IMO, the top layer should be a summary of what the configuration manager will be doing and should have the project-specific data in it. The rest should be reusable modules. When you let a full program language into the top layer, you inevitably get people trying to put smaller routines in the top level itself mixed in with reusable modules, which results in bloated spaghetti.

</comment></comment></comment><comment><USER6> Any Java programmers here?

Thank God IntelliJ treats Spring XML as Java code, because so much logic and conditionals and variables live in those files. The actual program can be very different than what you would expect only looking at the Java files.

It pains me to see other tools make the same foolish mistake, even if I don't happen to use it.

</comment><comment><USER19> I suspect that Web Components will evolve this way as well, declarative language used imperatively. [http://clipperhouse.com/2014/03/31/web- components-have-we-no...](http://clipperhouse.com/2014/03/31/web-components- have-we-not-been-here-before/)

</comment><comment><USER20> Yeah, why not use a language like bash that we use everyday for config management instead of reinventing the wheel in YAML.

This is pretty much why I love fucking shell scripts. [http://fuckingshellscripts.org/](http://fuckingshellscripts.org/)

<comment><USER21> Because modern configuration management tools like Ansible (or Puppet, or Salt, or whatever) allow you to do more things more easily.

Also, because Bash is a particularly horrible language. I have a lot of experience writing bash scripts, and I hate bash.

</comment></comment><comment><USER22> Please! Not that horrible, horrid poop called XML. Keep it away from my beloved deployment/management tool. The world has plenty of other bloated packages that will gladly not care if they are bogged down with XML, just leave ansible alone!

I have a visceral hatred, _a la_ Erik Naggum, towards XML. His arguments against XML capture a lot of my feelings, so I won't rehash them here.</comment>


NASA Struggles Over Deep-Space Plutonium Power - <AUTHOR> http://www.scientificamerican.com/article/within-nasa-a-plutonium-power-struggle/ <comment><USER2> It is sad we spend so much money on military yet can't give NASA more money. I hate politics!

<comment><USER3> Don't "I hate politics." Get more involved. There are people who only see positives in tax cuts and hate "BIG GOVERNMENT" means we don't have money to spend on science that benefits humanity.

Best thing people can do who don't like what is happening with their tax money is to vote and be vocal. If you negate yourself into I hate politics you reinforce the need to feed the proponents your disagree with.

<comment><USER4> Get involved how, exactly?

I do vote. I have a hard time convincing myself that it's even worth the time it takes to do so, but I do it.

I've tried writing to my representatives to express my views. I get form letters in response, with absolutely no indication that my voice has been taken into account in even the smallest way.

People say you should get involved in local party meetings and such, but there are no viable parties that I agree with even remotely, and in any case I'd rather stab myself in the eyeballs with a toothpick than attend such meetings.

<comment><USER5> > I get form letters in response, with absolutely no indication that my voice > has been taken into account in even the smallest way.

They listen; they just don't have the staffing to write an individual response to every comment. Unfortunately, they listen by having a staffer say "We had X people contact us in favor of this; Y were opposed." But they do listen. Or: Our voices have been abstracted into sort of a reverse-poll thanks, in part, to technology.

As an anecdote, the only time I had a staffer actually respond to my opinion with more than "I'll pass along your comment" was during the SOPA/PIPA call ins. The staffer I spoke to was clearly (and kind of understandably) irritated with the volume of calls and was somewhat short with me. I think everyone views that whole thing as an exception, though.

<comment><USER6> _They listen; they just don 't have the staffing to write an individual response to every comment._

The latter statement _really_ calls the first into question. Similarly, they care about my vote, except to the extent that it's completely lost in the noise of thousands of other votes.

<comment><USER7> I can't prove it, but I imagine we'd be surprised at how few letters they actually get during parts of the election cycle. Depending on your district your congressman may be far more accessible than you think.

<comment><USER6> I know my _state_ representative and senator are accessible; I've had email conversations with both in the last couple of months. I've never contributed to either of their campaigns.

However, there's an obvious difference when one sends letters or emails to the federal level. _When_ I've gotten responses, it's always been at least several weeks later, and sometimes several months. The messages I've received have been loosely related to my original message, but they have never addressed any actual point I might have made. I'm not feeling the love.

<comment><USER3> THIS is why local politics are so much important and yet they receive the least participation.

<comment><USER8> Politics is also a hierarchy and its worth keeping in mind that local politicians may have much better connections to people in the next tier than you do from outside. Your local state senator may have much better access to your federal senator and that level of access can turn into opportunity for them to influence them. If your state representatives know how important their behaviour with regards to federal issues is to you as a voter, you stand a much better chance of the system working how it's intended.

It's systemic lack of involvement that's causing the most issues in American politics. From the top with "lifetime senators" largely immune from their constituencies, and from the bottom with voter turnouts under twenty percent.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> This is such a non-issue (from the article):

"The project is planning to produce new Pu-238 at a rate that supports currently projected NASA missions," says Rebecca Onuschak, program director for the DOE's plutonium infrastructure. "There is no shortfall of material projected to meeting those needs, and so no remedy or action plan has been implemented."

\---

The argument that if NASA had more RTG's laying around it would be doing more is a bit suspicious as that's not how space missions are planned. Not to mention, Charles Bolden just wrote a letter to Congress asking them why they can't fund the SLS properly. There's no extra money laying around.

<comment><USER10> I think you've got it wrong; Bolden is mad at Congress for funding SLS at the expense of Commercial Crew, which includes SpaceX and Boeing's new CST-100 vehicle: [http://spaceflightnow.com/2015/06/11/commercial-crew- spacesh...](http://spaceflightnow.com/2015/06/11/commercial-crew-spaceships- face-likely-delays/)

SLS is a white elephant that currently has nothing to do. The first crewed mission is scheduled for 2021, and plans beyond that are hazy. NASA managers have looked into "how seldom" they can launch the thing while still maintaining a safe and viable program.

And the article describes a chilling effect which keeps plutonium-dependent missions from being seen as viable, so of course there will be enough plutonium for all the planned missions (of which there are precious few).

<comment><USER9> Bolden very clearly stated that he's upset that there's money for all these Russian ISS launches, but not for his SLS and the CCV programs. There is no bigger cheerleader for CCV than Bolden. This SLS vs CCV "controversy" is 100% manufactured.

[http://www.theverge.com/2015/8/28/9221541/NASA-Charles- Bolde...](http://www.theverge.com/2015/8/28/9221541/NASA-Charles-Bolden- Congress-open-letter)

It costs around $81 million to send just one astronaut on the Soyuz. Bolden says it will only cost $58 million per seat to send astronauts on the Commercial Crew vehicles. "It's as if we keep ordering expensive takeout because we haven't yet set up our own kitchen — only, in this case, the takeout meals are costing us hundreds of millions of dollars," he writes.

<comment><USER11> Congress keeps insisting that NASA spend more on the SLS than it wants to, and less on the CCV. Even if we were to fully fund CCV this year it wouldn't be until 2018 or so that we could stop hitching rides with the Russians so I don't think it's fair to say that the CCV and Russian ISS launches are in conflict right now.

<comment><USER12> It is about 70% through 2015.

</comment></comment></comment></comment></comment><comment><USER13> Why not use polonium? It's very rare but at least it's not as rare as an element that has to be actually be created.

The Russians use polonium for the same purpose in their spacecraft as the US does using plutonium; heat to generate power suing thermoelectric generators.

<comment><USER14> Polonium 210 has a half life of 138 days vs 88 years for Plutonium 238. I believe Russia used it for short duration moon missions. For missions that last years or decades it is not an option.

</comment></comment><comment><USER15> NASA's budget is way less then what USA gives out in international aid to other countries at times which is in a way used to buy influence in that region of the world. It is a tragedy how politicians decide to use their brain in general.

<comment><USER11> I wouldn't call it "way less." We spend $32 billion on aid compared to $18 billion for NASA. Those are large numbers but they're not so very different considering the $4 trillion total.

</comment></comment><comment><USER16> Why don't they take the fuel from their nuclear missiles?

<comment><USER17> >Pu-238 cannot be used to make atomic bombs, nor is it particularly useful for fueling nuclear reactors, which are widely considered too controversial and expensive for practical use in space missions.

Look up the difference between Pu-238 and Pu-239 (what most nuclear warheads carry) and deduce why shooting a rocket filled with Pu-239 might be a bad idea.

</comment></comment><comment><USER18> "...maintaining it all costs upwards of $50 million per year"

It's really dumb that we're going to sit in ignorance of SO MUCH STUFF because someone in the government somewhere is getting into a tiff over this tiny, tiny drop in the government budget. For some perspective, apparently the US Gov spends about $1.7 Billion annually maintaining empty or abandoned federal buildings/land [1]

[1] [http://www.npr.org/2014/03/12/287349831/governments-empty- bu...](http://www.npr.org/2014/03/12/287349831/governments-empty-buildings- are-costing-taxpayers-billions)

<comment><USER19> > about $1.7 Billion annually maintaining empty or abandoned federal building

and a lot more on killing people overseas.

<comment><USER20> Well, they weren't gonna kill themselves...

Edit: Seriously? Y'all downvote the parent and upvote this blatantly inflammatory nonsense? Clearly I have no idea what motivates people.

<comment><USER21> Humor is rarely permitted on HN, for fear that it would suddenly turn the site into Reddit. Somehow.

</comment></comment></comment></comment><comment><USER22> Two words: Thorium reactor.

<comment><USER23> Every time someone gets all giggly about Thorium I'm suspicious. Could you provide some documentation about why this is a viable option in space?

<comment><USER22> I agree thorium isn't without its problems, but the end byproduct of a lftr reactor is plutonium.

<comment><USER24> LFTR's produce 239Pu (among a mess of other stuff), that's the stuff that goes BOOM in nuclear bombes, not 238Pu that glows warmly to make power for spacecraft.

<comment><USER25> As Jobu points out from Wikipedia: _he second proliferation resistant feature comes from the fact that LFTRs produce very little plutonium, around 15 kg per gigawatt-year of electricity ... This plutonium is also mostly Pu-238._ According the article this seems like quite a bit more than is currently being produced, is it not viable for use in RTGs for some reason? Or is the cost of a LFTR over the course of a year less cost effective than the current method of Np to Pu?

I have very little knowledge of the science here, I'm just not sure what all I'm missing.</comment></comment></comment></comment></comment>


Ask HN: Why do different TLD have different prices. What or who sets it? - <AUTHOR> <comment><USER2> The registry sets their own prices. For the new generic TLDs it is basically the Wild West - they can charge whatever they choose, hence the fact that most new gTLD registries go for bargain basement pricing in the hope that they can get enough volume for someone to want to buy them before the whole sorry mess comes tumbling down.

For country level TLDs it's a little more nuanced I guess. Extensions like .fm, .io, .co and .ai have either managed to position themselves as a fashionable alternative to the very crowded .com (or whatever you first choice is) or have been fortunate enough to have an extension that "fits" a particular industry. Because they work and for some people have become an "accepted" alternative to .com they can charge a premium for brand name fit.

<comment><USER3> To expand on that -- the registrars also set their own prices on top of the arbitrary price for a domain (TLD) set by its registrar.

For example, .dev domains are more expensive from everyone else besides Google Domains (Google is the registrar). Seems kind of unfair, but such as life I guess?

</comment></comment><comment><USER4> [https://www.namecheap.com/blog/why-some-domains-cost- more/](https://www.namecheap.com/blog/why-some-domains-cost-more/)</comment>


Ask HN: Best paid courses you've taken? - <AUTHOR> For 2020 I've decided to focus on taking online courses to further my education. With that, I have a rough budget of $50/month to spend. Looking for suggestions on paid or free courses you may have taken that you found beneficial.<p>edit: 2020, not 2019 <comment><USER3> I haven't taken any paid online courses that fit within your budget, but there are plenty of high quality free courses. Depending on your experience, I'd recommend the following:

\- Coursera Learning How To Learn: [https://www.coursera.org/learn/learning- how-to-learn](https://www.coursera.org/learn/learning-how-to-learn)

\- Harvard's Online CS50: [https://cs50.harvard.edu/college/2020/spring/](https://cs50.harvard.edu/college/2020/spring/)

\- MIT's Introduction to Computer Science and Programming Using Python: [https://www.edx.org/course/introduction-to-computer- science-...](https://www.edx.org/course/introduction-to-computer-science-and- programming-7)

\- MIT's algorithms course: [https://ocw.mit.edu/courses/electrical- engineering-and-compu...](https://ocw.mit.edu/courses/electrical-engineering- and-computer-science/6-006-introduction-to-algorithms-fall-2011/)

\- MIT's distributed systems course (going on now): [https://pdos.csail.mit.edu/6.824/](https://pdos.csail.mit.edu/6.824/)

All of the above have high quality video lectures and assignments to work on to get some practice with the concepts.

<comment><USER4> Highly unpopular opinion, I know, but I didn't find learning how to learn very useful. It might as well have been a 30-minute video, and it wouldn't lose much of its content. A lot of the content seems to be rather inspirational than educational.

<comment><USER3> Kind of like any book or course like that, I found that the magic wasn't in watching the lectures or reading the book but in deliberately applying some of the strategies to my own learning process.

It was easy to watch and think "OK that makes sense". It was much harder but much more worthwhile to deliberately set aside time for diffuse mode, practice spaced repetition, and quiz myself as I worked through a reading.

</comment></comment></comment><comment><USER5> Depends on what your interests are. If I had exactly $50.00 /month to spend on online education, I'd consider spending it on either a Coursera subscription or a Linux Academy subscription. The latter is especially valuable if you're interested more in "infrastructure" kind of stuff, and IT industry certifications around things like Docker, Kubernetes, Linux, AWS, GCP, Azure, etc. The former includes more of what you might call "theoretical" material and has more focus on Data Science, Computer Science, Mathematics, etc. (among many other subjects).

FWIW, I actually do maintain subscriptions to both Coursera and Linux Academy and have found both valuable. On Coursera I have found value in Andrew Ng's ML stuff, the Johns Hopkins sequence on Data Science, and the Duke sequence on Statistics with R. I used Linux Academy to prep for my AWS Certified Solution Architect certification, and am currently working on the Docker Certified Associate and Certified Kubernetes Administrator certs.

<comment><USER6> I self fund Linux Academy because the hands on labs make it much more useful than many of the other options. While I do have my own home lab and cloud accounts the LA setup makes it easy to pickup a course when I'm on the road with just my work laptop.

I had pluralsight too but stopped when I realised I'd watched lots of videos but not done many labs.

</comment></comment><comment><USER7> There are a few courses on Edx (that I think) are worth paying for (under the new scheme, where you can audit courses for free, but lose access to videos, homework etc once the course is over). But, for such courses, edx also requires uploading of a government issued photo id, which I have no intention of doing.

If anyone at edx is reading this, I'll be glad to pay for retaining videos beyond the course period, and the ability to do assignments, but I don't want "verified certificates" (which presumably requires photo id etc). Right now there is no way I can pay for the former without also asking for the latter.

<comment><USER8> Why are you against uploading your ID?

<comment><USER9> Not OP, but I don't trust startups to responsibly handle my PII. It's not a good gamble, based on incentives, and also based on recorded history. They usually don't encrypt it, they usually don't understand their own backup system, they usually have employees who copy it as "sample data" or "seed data" to developer laptops which are then stolen with some probability greater than 1%, they usually don't delete data on a reasonable timeframe, etc etc etc.

And it's one thing to have my email address, my phone number, etc. And if it was just MINE, shrug. But if you're asking for mine, you're asking for that of many people. And that means that criminals looking for PII for identity theft will know to target you. Or hackers who accidentally steal my data will be able to sell it as part of a bundle. Or it'll happen with your servers, at auction, when you go under. Etc.

So if a service that I very much want to pay for requires me to scan and upload ID, I dunno, maybe it's still worth it to me, but it just makes me so uneasy that I just procrastinate until I forget. This has happened a number of times.

If you're not the government, I want my business with you to be as anonymous as possible, because frankly you're probably not a very good steward of my privacy.

(Actually, I'm even more afraid of government IT, and I know my personal data has been stolen from my federal government at least once, but I've got no options on this one.)

<comment><USER10> > I don't trust startups to responsibly handle my PII.

Smart, but:

Any web developer knows most uploads go to a folder on disk ... likely readable by the web server process.

Harvest away!

<comment><USER9> That's a "but"? That sounds like you're agreeing!

</comment></comment></comment></comment></comment><comment><USER11> I recently became interested in ML and started with THE course for having a good intro into ML (Coursera's ML by Andrew Ng). That one is offered for free on Coursera and you only pay if you really want to have the certificate once you are done.

That course was so interesting to me and the way Andrew Ng explains - <USER2> enthusiasm, his sincerity, the way he talks, his authority on the field mixed with his unbelievable modesty - it is all a mix of things I love in a teacher. He is so inspiring. So I continued.

I am about to finish the Deep Learning Specialization that has 5 courses and my next one will be Tensorflow in Oractice.

I pay for a Coursera subscription (44 EUR/MO) and I am very very happy with the quality of the courses I mentioned above.

When I was studying in depth regarding database development and performance optimization (MSSQL mostly) I really really liked the courses on Pluralsight.

<comment><USER12> I am doing the ML course on Coursera as well, and it is clearly a must have if you want to understand Machine Learning.

<comment><USER13> Just registered, thank you!

</comment></comment></comment><comment><USER14> I think O'reilly has one of the biggest catalogs for that budget: [https://learning.oreilly.com/signup/](https://learning.oreilly.com/signup/)

You have access to hundreds of good quality books, learning courses, conferences, etc.

Now, I've seen that for the best courses fos something in particular, you'll find material from different sites, and buy them individually can get much more expensive. I've seen good courses for specific topics from Linkedin learning, others very good from educative.io and even others from packtpub so it's a big decision just to go with one.

<comment><USER15> I utilize this as well, have had a membership for almost a decade now. Great resource!

</comment></comment><comment><USER16> I took "Become a Product Manager" ([https://www.udemy.com/course/become-a- product-manager-learn-...](https://www.udemy.com/course/become-a-product- manager-learn-the-skills-get-a-job/)) and was quite happy with it. The title is a bit tacky - it is not instantly going to turn you into a product manager. But it is a nice overview of the field.

I paid about 10 bucks during one of the countless sales. Never pay the full price at Udemy. Their pricing policy is ridiculous. I feel like you only have to wait a few days for the next 90%-off-discount to come along. I counted three times during the past few weeks.

<comment><USER5> _I paid about 10 bucks during one of the countless sales. Never pay the full price at Udemy. Their pricing policy is ridiculous. I feel like you only have to wait a few days for the next 90%-off-discount to come along. I counted three times during the past few weeks._

Second this. If you want to take a Udemy course and the listed price is more than about $12.00, just wait. It'll be on sale for $9.99, $10.99, $11.99 or something like that, within a couple of weeks. They're almost always running various sales and promotions... just be patient.

</comment></comment><comment><USER17> Kubernetes - Ansible: [https://kodekloud.com](https://kodekloud.com)

Linux - DevOps: [https://training.linuxfoundation.org](https://training.linuxfoundation.org)

AWS - DevOps: [https://acloud.guru](https://acloud.guru)

</comment><comment><USER18> Personally wanted to be able to generate ideas / prototypes quickly. Focusing on learning Vue.js best decision I have so far made in 2020. Good learning material is

[https://vueschool.io/courses/](https://vueschool.io/courses/)

</comment><comment><USER19> Udemy was instrumental to helping me learn modern web development and switch from backend to full-stack development. In particular, I liked Andrew Mead's JS, React, GraphQL and Node courses.

</comment><comment><USER20> [https://learn.tylermcginnis.com/](https://learn.tylermcginnis.com/) for JavaScript. Pure gold. :)

</comment><comment><USER21> Currently paying C$30 per month to a Quebecois private French video tutor. And it's literally the best thing ever. Unfortuneately I can't recomennd, it's a personal connection. But I would try and find a mentor relationship in sinmilar vein. We chat almost everyday. Enough to praticer mon francais bien tot. Montreal is a hub of AI

Also current YC SUS Winter 2020 cohort. YC is magical. Its not just they revolutionized seed stage in founders favor. Or give you the blueprint for startup creation. It's the people YC attracts. The rational elite. Who don't belong anyplace else

<comment><USER22>
        praticer mon francais bien tot

*pratiquer mon français bientôt

</comment></comment><comment><USER23> First try to read a book and if you find interesting only then spend money on online courses. Most of the online courses are very basic and you won't learn anything.

</comment><comment><USER24> Piano lesson, for £25 pounds for 1-1.5hrs some stoner dude comes over to my house usually once a week. He's a really good teacher and piano player!

<comment><USER25> I want to do this. Do you have a legit piano or keyboard?

</comment></comment><comment><USER4> I would recommend:

\- Pluralsight for dev-focused courses

\- Linux Academy for DevOps-focused courses

Also, save up for certs and do some certs. Kubernetes certs (CKA, CKD) seem to be popular and difficult (which is great!), or there were some new-ish NodeJS certs. I find certs really force me to learn something and not just scratch the surface.

Just a suggestion. You can use Pluralsight and LinuxAcademy without the intention to pass certs as well.

<comment><USER26> I have both and I can't count how many times I need to understand something in some detail and put on a course. I learned Jenkins from LinuxAcademy and Devops principles, went on to build our jenkins server with all the jobs for our builds/automated testing.

</comment></comment><comment><USER27> Splunk University. Happens once a year in Oct.

In 3 days you learn to build scalable business applications to work with any data. Gold.

And tons more.

</comment><comment><USER28> I really like Wes Bos' courses, they cover full stack Javascript and some other FE stuff if you're interested in that. [https://wesbos.com/courses/](https://wesbos.com/courses/) is his list of courses.

</comment><comment><USER29> Loved it. Design thinking

[https://emeritus.org/management-certificate- programs/innovat...](https://emeritus.org/management-certificate- programs/innovation-design-thinking/)

</comment><comment><USER30> Go suscribe to linkedin learning, I used to be on it before it was called that, but it's worth every bit of that price. There are basically 10 courses for everything you want to learn (until intermediate level, by which point you probably should be learning by yourself while implementing). It's where I started python.

Alternatively, you can just start implementing stuff in a language of choice, if you have programming background this might be a much better way to learn, not suggested for beginners to the entire concept of programming though.

</comment><comment><USER31> Taken few courses related to AWS on AcloudGuru and Udemy.

For a crash course like ML, Photography, JS etc; Udemy is a great bargain for $9.99

Tried pluralsight couple of years ago. I found content to be bit old and not updated reqularly.

I have bookmarked below url containing list of courses offered by different universities worldwide.

[https://qz.com/1437623/600-free-online-courses-you-can- take-...](https://qz.com/1437623/600-free-online-courses-you-can-take-from- universities-worldwide/)

</comment><comment><USER32> Shameless plug (the ongoing content project in my profile): a tenner gets you a kindle booklet with a summary of the most recent academic and industrial trends for one of a number of general or applied subjects in the 2020s, each booklet also with an executive summary to get up to date in half an hour plus 105 free internet references, explicitly linked for your own consultation, in the case you want to go deeper.

</comment><comment><USER33> Penetration Testing With Kali Linux by OffSec.com. Along with 90 days of lab.

Relatively cheap and a really deep, wide-ranging curriculum. And fun, to boot.

</comment><comment><USER34> Check out LinkedIn Learning, we've got technical courses at all levels, and a bunch of other topics like creative stuff and professional skills as well. All available as part of a monthly membership that's within your $50/mo budget ($29.99/mo or $19.99/mo depending on duration). Disclaimer: I work there, creating some of the technical content.

<comment><USER35> Why is this downvoted? Linkedin learning is a rebrand of Lynda.com after Linkedin bought it. Lynda.com was probably the first online course website ever and has a lot of good material.

</comment></comment><comment><USER36> I'd say you don't have to spend any money for some of the best classes, but it matters what you're interested in / specialty. Check out OSSU on GitHub for a lot of really good free courses. Only time I'd recommend spending money is if there a specific course within a specialization

</comment><comment><USER37> Linux academy for cloud was great. Frontend masters is really good for web stuff. Pluralsight for c#/.net

</comment><comment><USER38> OSU series of permaculture courses will change your view of the world. start with the free intro [https://open.oregonstate.edu/courses/permaculture/](https://open.oregonstate.edu/courses/permaculture/)

</comment><comment><USER39> Spend $15 of it on Laracasts.

I don't even use PHP and it's still one of the highest ROI purchases I've made. The videos on editors, tooling, Vue, and the ideas I can take from the Laravel world into my Phoenix/Elixir world are well worth it.

Jeffrey Way is an incredible teacher!

</comment><comment><USER40> Data Structures and Algorithms from UCSD on Coursera: [https://www.coursera.org/specializations/data-structures- alg...](https://www.coursera.org/specializations/data-structures-algorithms)

</comment><comment><USER41> Salesforce and for free. I can even give you an online free course. Learn Salesforce on trailhead.com. It gave me the opportunity to work on awesome projects. Besides, this tech is so hyped on the market. Jump in the bandwagon!

</comment><comment><USER42> I strongly recommend [https://classpert.com](https://classpert.com) (specially if you're on a budget), before you decide in which course you should enroll yourself to

</comment><comment><USER43> I paid for a year of text-based courses on [https://www.educative.io/](https://www.educative.io/).

Definitely good value and they're always adding more content.

</comment><comment><USER44> Bang-for-buck-wise it's an O'Reilly subscription hands down.

[https://learning.oreilly.com/signup/](https://learning.oreilly.com/signup/)

<comment><USER6> You can save a few $$ by signing up for ACM instead.

[https://learning.acm.org/e-learning/oreilly](https://learning.acm.org/e-learning/oreilly)

<comment><USER45> Any subscription will do or do I have to get one with the "digital library"? I think it's $198

<comment><USER46> You can get the professional subscription for 99 USD.

[https://services.acm.org/public/qj/profqj/qjprof_control.cfm...](https://services.acm.org/public/qj/profqj/qjprof_control.cfm?promo=PWEBTOP&form_type=Professional)

</comment></comment></comment></comment><comment> a-saleh Do you have a community, where you'd learn together?

I wonder if it weren't more efective to i.e. buy books and organize book-club with your colleagues.

<comment> a-saleh Our manager is running one right now, but he usually proposes books about team-work, e.t.c.

Just finished 'Turning ship around', next on the list is probably 'The phoenix project'

</comment></comment><comment><USER47> Web development Bootcamp on udemy by Angela Yu. Only like $10-15 if they are having a sale but it gets a basic understanding of dev in you head.

</comment><comment><USER48> I took one graduate level Database course almost 20 years ago. Have built my entire career off that one course... and I only got a B.

</comment><comment><USER49> If I had a $50/month budget, this is how I'd spread it:

      $10 - https://subscription.packtpub.com/
      Are you interested in frontend?
        $40 - https://frontendmasters.com/
      Otherwise
        $29 - https://www.pluralsight.com/
        $10 - go for a random course on something I've never done

Courses I've (extra)enjoyed:

      - 60% of Rust courses on Packt
      - https://mastery.games/p/flexbox-zombies
      - https://laracasts.com/series/learn-vue-2-step-by-step

Shoutout to Jeffrey from Laracasts, it's been years since I've taken his Vue class, and I don't use Vue anymore, but the calm, straight-forward way he explains things stuck in the back of my head. When I have to teach something, I try to be Jeffrey.

Packtpub has been the best resource for my area of interest. It should take one a really long time to run out of _free_ resources and into buying subscriptions. There are few good courses, that are not inflated with BS to increase their length.

When I find a course I'm interested in, I pirate it. If I consider it got me enough value to justify the asked price, I'll buy it as well. More than 80% don't.

\</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----

 _Some learning resources:_

      > These are just a few, trying not to post a wall of text.

      Standard course sites:
       - https://www.packtpub.com/
       - https://www.coursera.org/
       - https://www.pluralsight.com/

      Academia(/ish):
       - MIT OCW
       https://ocw.mit.edu/courses/captioned/
       https://ocw.mit.edu/resources/
       Notable:
        - https://ocw.mit.edu/resources/res-tll-005-how-to-speak-january-iap-2018/
        - https://ocw.mit.edu/courses/physics/8-04-quantum-physics-i-spring-2013/lecture-videos/
       - MITx - https://micromasters.mit.edu/
       - https://www.edx.org/course

      Math:
       - https://www.mathsisfun.com/
       - https://mathproblems123.wordpress.com/

      Frontend:
       - https://frontendmasters.com
       - https://scrimba.com/
       - https://mastery.games/

      Devops:
       - https://www.aws.training/
       - https://linuxacademy.com/
       - http://linux-training.be/
       - http://write.flossmanuals.net/command-line/introduction/
       - https://www.tldp.org/LDP/abs/html/

      Places where you can practice (development):
       - https://projecteuler.net/about
       - https://open.kattis.com/
       - https://www.codewars.com/
       - https://codeforces.com/contests
       - https://codingcompetitions.withgoogle.com/codejam
       - https://www.techgig.com/challenge
       - https://www.hackerrank.com/contests
       - https://app.codility.com/programmers/challenges/

      C:
       - https://www.learn-c.org/
       - http://cslibrary.stanford.edu/101/
       - http://2016-aalto-c.mooc.fi/en/Module_1/index.html
       - https://www.guru99.com/c-programming-tutorial.html
       - http://c-faq.com/index.html

\</comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment></comment><comment>----

Sorry for the bad formatting and the non-clickable links, it's just the way it is on HN.

<comment><USER50> How do you like Pactkpub? Seems like it's a hit and miss situation. Some contents are good, some are not so good. They churn a lot of books though and some of them are niche (which is good).

<comment><USER49> I go for video only, maybe that's why my view is skewed. Many of the books are very Udemy-like quality (full of useless fluff), and I generally try to avoid books.

</comment></comment></comment><comment><USER51> Can someone suggest a Linux basics course?

</comment><comment><USER52> pluralsight has lots of stuff

<comment><USER53> I second pluralsight for that budget. I've been a customer for a few years, and I find that I've always gotten the value out of it every year. Some months I won't touch it, other months I'll do course after course integrating the learnings into a side-project. Variety is huge.

</comment></comment><comment><USER54> 2020 _

<comment><AUTHOR> fixed, thanks

</comment></comment><comment><USER55> no one?</comment>


Venezuelan Prostitutes Earn More Selling Dollars Than Sex - <AUTHOR> http://www.bloomberg.com/news/2014-06-09/venezuela-prostitutes-earn-more-selling-dollars-than-sex.html

<comment><USER2> Url changed from [http://www.businessinsider.com/prostitutes-trade-dollars- in-...](http://www.businessinsider.com/prostitutes-trade-dollars-in- venezuela-2014-6), which points to this.

<comment><AUTHOR> Didn't know that. Thanks!</comment></comment>


[Show HN]Readability in your mailbox - <AUTHOR> http://snipek.com/read

<comment><AUTHOR> Send any URL in subject line to firstname.lastname@example.com.</comment>


Canary - Smart home security device for everyone - <AUTHOR> http://canary.is/ <comment><USER2> I think this looks really cool and interesting (esp. given that I'm looking for a home security system right now).

However, please can you make your website simpler and just have a regular scroll? The javascript scroll effect makes it really difficult for me to explore how this works and the benefits / features. I'm on ubuntu linux & chrome and using my scroll wheel is super slow and painful. The js scroll effect is taking away from letting me figure out how this works.

<comment><USER3> It's very easy to scroll through and see the highlights merely by browsing without javascript. Whitelist AWS and you get basically all the images and words on one page. That said, just go straight to the indiegogo page rather than mucking about on the product site.

<comment><USER4> How do you whitelist AWS?

<comment><USER3> Oh, just via NoScript/RequestPolicy and allowing it through. :) It doesn't need to be WL'ed if already let through.

<comment><USER4> I use NS+RP too but I did not see anything listed for AWS.

<comment><USER3> The images interspersed were hosted on AWS, but weren't required to understand what was going on.

</comment></comment></comment></comment></comment></comment><comment><USER5> It seems like they don't take the physical security of the device into consideration at all. For example, I don't see anything about battery backup, so if I have above-ground power lines and my would-be intruder cuts mine before breaking in, am I screwed? Supposing I thought ahead and got a UPS, what about the phone or cable line? If I try and connect to it from the outside and can't, can I distinguish between a failure because Comcast is having an outage, and a failure because someone smashed my Canary with a sledgehammer, or stole it?

Security companies sell an overpriced product, but they've been at this for a while. Most security systems don't have to be in plain view because they're not also the sensor, so someone would have to find one to disable it, and would probably have to cross through the paths of more than one sensor before doing so. Battery backups in case of power failure are also a standard feature, and GSM backup modules are readily available for dealing with communications failures. And this is without even considering many of the other advantages of standard systems: UL-licensed call centers, modular sensor systems so that you can easily add, e.g., flood sensors, if you're prone to basement flooding, etc.

I get that they're going for an easy-to-use product with nice industrial design, but comparing it side-to-side with a real system because it looks like an Apple product and has an app is disingenuous.

<comment><USER6> If robbers are cutting your power lines before entering your house like a scene out of Panic Room, you have bigger problems.

For people who don't have any security system at all because they are too complicated, unfriendly and expensive, this is a great way for them to add a basic level of security and awareness into their home that they didn't have before.

<comment><USER5> You're right; that was a little movie-plot-threat-esque. Something that might be more realistic: what's to stop someone from waiting until the power goes out to rob me?

And yes, I recognize that something is better than nothing. I was motivated to post by two things: firstly, _my_ security system comes with a battery backup, and my sense is that this is a standard feature. I assume if that didn't provide useful additional security, it wouldn't be a standard feature. Secondly, if you're going to have a side-by-side table that lists a bunch of ways your security product is better than the industry-standard product with which it's meant to compete, as they do on their indiegogo (going so far as to call current technology "broken"), you should be honest if it does so by being less secure. They imply an equivalence that isn't justified.

<comment><USER7> No it's not. If you live in a detached house your phone line, power, water, cable, etc, is readily accessible from outdoors. I've never robbed a house, but it seems pretty prudent to cut those things with an axe before you enter. Maybe thieves aren't doing that _because_ security systems are commonly battery backed? They would have to be cellular as well. I'm not sure, but your original concern does not seem far fetched.

</comment></comment></comment></comment><comment><USER8> This looks interesting but unless I could set up my own infrastructure so I would have total control of where the video stream goes I would never use one, especially in light of recent events.

</comment><comment><USER9> Two things that would make this work for me, as opposed to my home grown old Linux laptop + webcam setup.

1\. Make these devices cost < $100, so getting 2-5 of them makes sense. 720p HD webcams are ~$17 retail. Raspberry Pis are ~$35 retail.

2\. Encrypt everything on the device, upload to your hosting solution (but let me use my own location if I want), and then make the client do decryption using my key. No one but the user should be able to decrypt/view anything.

But what I _really_ want is for someone to create a "base station" that handles all the fancy stuff with little wireless(/encrypted) webcams that are (optionally) battery powered and tiny so you can stick them everywhere. To save power they could have a motion detection sensor and only start transmitting video wirelessly when there's motion.

$120 for the base station + $40/wireless "agent" cams would sell like hotcakes.

<comment><USER10> > Make these devices cost < $100

You're paying for the software.

Yes, you can get the hardware cheap. I can build a similar device that detects all of the things theirs does for about 75 bucks. The problem is the software will be a complete mess and a complete horror to use.

<comment><USER9> I think the problem is that they're trying to make significant profits from the hardware or they just designed it to be expensive. If the product was sufficiently high volume and they got most users to sign up for remote hosting they could make far more money.

</comment></comment></comment><comment><USER11> My first thought: I wonder if the FBI/NSA/etc could compel Canary to give them access to live audio/video feeds of your home.

<comment> test-it Lets not talk about that. Ycombinator is about rich people funding startups. Rich people of course like the status quo. Criticizing it, won't get you funding, but a hell ban ;-)

</comment></comment><comment><USER12> The risk / reward for early adopters seems insufficient to me. For a 20% discount (249/199) you're accepting the risk that the device is delivered and works as advertised. I wish them luck, the device does fills a need, but as a consumer the pricing doesn't work for me.

</comment><comment><USER13> I've set up my own home security monitoring in the past using a camera, Zoneminder, and other tools.

Zoneminder is not that great, and I would love to have a packaged commercial solution which isn't too locked down from it's owner. I think there are nice opportunities for business in this area.

That all said, I hate gimicky javash*t websites like this. If I have to noscript-enable sites like jquery.com, your site probably is too sleazy for me to look at. Stop hiding your product behind cheesy effects.

<comment><USER14> I've used Zoneminder and, you're right, it's not all that great.

If you can stomach running Windows you might have a look at the Geovision NVR software ([http://www.geovision.com.tw/english/Prod_GVNVRV85.asp](http://www.geovision.com.tw/english/Prod_GVNVRV85.asp)). I find it to be a lot more polished than Zoneminder. The user interface is a bit ugly but the functionality has been satisfactory. I have a client using it in a 100 camera installation, and another using it with just a single camera and it works well in both cases. A license to use the software is included with any of Geovision's cameras, which are also quite nice (and Linux-based, though they don't allow you to get root on the cameras).

</comment></comment><comment><USER15> If I can't run the backend on my own server - I don't want it...

<comment><USER16> I was going to say the same thing. I'm not going to get burned by another nice gadget that becomes a useless paperweight when the company that made it shuts down.

<comment><USER7> Well, they picked an industry that has _always_ had that problem. People mostly don't think about it now because everyone but ADT went out of business.

<comment><USER16> That's true if a security company is involved. But you could perfectly well have a device like this without involving a third party if all it's going to do is alert me.

</comment></comment></comment></comment><comment><USER17> This looks awesome - won't lie. But the paranoid skeptic in me has me concerned about the device being hacked. Imagine this siren being triggered in the middle of the night.

Also imagine people spying on you, in your home - if I am at home, how do I know if the camera is on? I assume that there isn't a big red light on the front, because if an intruder is there then that will give away the fact that they are being recorded. But if someone else, nefariously, accesses the device and starts recording me I would love to know that immediately.

Also, a potentially 'always-on' video & audio recorded in wake of Prism is actually more scary than people breaking in.

I love the idea though, and I feel like those issues can be addressed by the company.

<comment><USER18> > _I assume that there isn 't a big red light on the front, because if an > intruder is there then that will give away the fact that they are being > recorded. _

Most surveillance cameras DO have a light when they're on. An intruder may recognize a security camera, realize it's recording, and leave. Would you rather have a burglar steal possessions from your home or be deterred from the presence of a camera? (a possible problem with the Canary is it doesn't look like a camera so regardless of light an intruder may ignore it)

That said, burglars are probably wearing some sort of mask obscuring their face, so neither scenario may make a difference. What really matters is monitoring in real-time and receiving alerts of suspicious activity and acting upon it.

<comment><USER17> > _What really matters is monitoring in real-time and receiving alerts of > suspicious activity and acting upon it._

That's true....perhaps I am over thinking it.

After hearing all the cases of people's laptops being hacked and their webcams being turned on - I can see a crazy incentive for people to start hacking these devices. That's a bit scary to me.

</comment></comment></comment><comment><USER19> The video on their indiegogo page is way more useful IMO:

[http://www.indiegogo.com/projects/canary-the-first-smart- hom...](http://www.indiegogo.com/projects/canary-the-first-smart-home- security-device-for-everyone)

</comment><comment><USER20> I think this looks really cool, but I have a smartthing. I'd be interested to see this encompassed by their system, because one device does not a secure home make. But by itself I'd have to buy one for every room and angle to make me feel actually secure.

For those who want more info on smartthings here ya go. [http://www.smartthings.com/](http://www.smartthings.com/)

<comment><USER21> Currently not taking orders.

<comment><USER22> Yeah, perhaps [http://ninjablocks.com](http://ninjablocks.com) instead...

</comment></comment></comment><comment><USER23> Not sure I'm a huge fan of the all-in-one approach. I'd prefer a distributed network of sensors. Also, looking at their ad copy --- sensing fire using a temperature sensor is a fool's game. By the time the temperature changes appreciably, you're in deep trouble, depending of course on the sensor location.

</comment><comment><USER24> I've been trying to find an outside security camera for years my only two requirements are 1. resolution greater than 640x480 2. able to be used outside in temperatures lower than 0°C (preferably -20°C).

There's nothing out there and anything close is thousands of dollars and commercial/industrial only.

<comment><USER14> I don't want to seem like I'm shilling for Geovision in this thread. I have two clients who have Geovision cameras and they have had great luck with them.

Have a look at: [http://pd.geovision.tw/datasheet/BX-E/Datasheet_IPCamBX120DE...](http://pd.geovision.tw/datasheet/BX-E/Datasheet_IPCamBX120DE.pdf)

That camera is housed in an outdoor enclosure rated at -40°C and has a 1280x1024 resolution (there are higher available in that product line). That's about a $700 camera. I haven't worked with that model, personally.

One of my clients has a number of this model installed: [http://pd.geovision.tw/datasheet/Bullet/Datasheet_IPCamBL121...](http://pd.geovision.tw/datasheet/Bullet/Datasheet_IPCamBL1210.pdf)

This camera is only rated to -10°C, but is more like a $500 camera.

<comment><USER24> Thanks but that's what I would class as industrial. I'm looking for something I can set up at my parents, aunts, uncles places connected either wireless (preferred) or cable to a standard PC (Win/Mac).

No offense but that camera shown in that link would make the place look like a crack house or Hells Angels clubhouse.

D-Link makes a nice 360 degree fairly low profile camera the DCS-6010L but it's not very durable it can't operate under OC.

</comment></comment></comment><comment><USER25> I wonder how the insurance market will respond to this? One of the incentives for installing an alarm (although this is a cheaper proposition) is a reduction in contents insurance.

In my experience, the question is not "do you have an authorised / specified alarm service" (although there is usually a distinction between monitored and unmonitored alarms), but simply "do you have an alarm system?".

</comment><comment><USER26> Not smart. How could 1 device in 1 location be optimized to detect motion, video and environmental conditions.

I went with the iSmartAlarm (which was an Indiegogo project from last year which uses wireless, battery powered sensors which report back to the central device plugged into my router.

Makes a lot more sense to put the sensors where they're best positioned to detect the specific activity for which they're designed.

</comment><comment><USER4> I would like to know what the "air quality sensor" does. A lot of the places I would want an air sensor are locations in the house where many of the other features would be useless and/or unwelcome. The placement/howmany guide suggests that the use case is largely entrances. Entrances are the last place I would want to put a air sensor, thermometer and/or hygrometer.

</comment><comment><USER27> Put this in my server room - give it a few Ethernet ports to let me know if my switches have link, throw in the option to log video locally, and make it so I can bolt it down so that the thief doesn't run off with it.

<comment><USER28> This is the main problem. Thieves watch TV and have facebook accounts. They will see the Canary and be on alert. Thieves aren't that clueless, contrary to other types of criminals. The premeditated nature of robbing someone's house allows the provisions for obstacles like pets, alarms, cameras (e.g. masks), time for police to arrive (i.e. 3 minutes), canaries (unplug, toss into trash), etc. At best, the Canary will tell you, a masked intruder unplugged me and tossed me in a closet; or in a bag with the rest of the stolen goods ;) lol.

Just kidding.

</comment></comment><comment><USER29> Interesting idea, but if you have a pet, is there any value at all to such a device?

<comment><USER9> Pointing the camera above their height works pretty well for me (I have small dogs). Creating motion detection "zones" in areas they can't go also works.</comment></comment>


Necuno Mobile: An Open Phone with Plasma Mobile - <AUTHOR> https://dot.kde.org/2018/11/29/necuno-mobile-open-phone-plasma-mobile <comment><USER2> It's exciting to see another company looking at making truly open phones, and with a similar chipset and GPU, we're going to see a lot that works between this and the Librem. The real start of an ecosystem.

No mention here of availability, price, or carrier compatibility, so who knows when this will come out and who will be able to use it.</comment>


Emoji Dick; - <AUTHOR> http://emojidick.com/

<comment><USER2> The preview link at the Lulu page[1] does not show any examples of the translation.

The video on the kickstarter page[2] shows a few very blurry examples. (EDIT ADD: The page section below the video does show 4 more examples but it's not in the format that will appear in the actual book.)

The New Yorker article[3] shows a translation of the first sentence.

Since there are no substantial excerpts, there's not much substance to discuss on HN. I'm tempted to flag the post as spam.

[1][http://www.lulu.com/shop/fred-benenson/emoji-dick-hard- cover...](http://www.lulu.com/shop/fred-benenson/emoji-dick-hard- cover/hardcover/product-12555990.html)

[2][https://www.kickstarter.com/projects/fred/emoji- dick](https://www.kickstarter.com/projects/fred/emoji-dick)

[3][http://www.newyorker.com/books/page-turner/the-revolution- wi...](http://www.newyorker.com/books/page-turner/the-revolution-will-be- crowdsourced-and-cute)

</comment><comment><USER3> I noticed this title with passing interest a few days back, but upon discovering that the only preview I could find goes no further than the TOC and hence shows no actual sample of the usage of emoji to tell the story, I really couldn't see the value in spending $40 on it.

At this point, I am still not entirely clear whether the editor intended this as an actual work of art he wants to sell or just a farce. If it was a farce, I'd at least recommend selling fractions of the book for $1 each. I imagine he'd at least get a chunk of curious visitors to take a peek.

</comment><comment><USER4> The CC-BY-SA pdf can be found here: [http://www.czyborra.com/unicode/emojidick.pdf](http://www.czyborra.com/unicode/emojidick.pdf)

</comment><comment><USER5> That "language" seems extremely whimsical to me. But then, it's probably just sign-of-the-times — as a parody, it would hit the spot. In two or three generations, we won't be able to read letters any more anyway, so we might as well switch to pictograms right now. They're also more economic with mobile touch-screen interfaces. I'm sure there's an app for that.

Nevertheless, I miss a peek inside the book. Can't imagine what it looks like. Will it actually be readable (if you want to call it that) or is it just an alternative resting place for the dust on the shelf?</comment>


Is There Enough Food Out There For Nine Billion People? - <AUTHOR> http://www.tnr.com/blog/the-vine/there-enough-food-out-there-nine-billion-people

<comment><USER2> One of the commenters on the article points out that we already produce enough food to feed more than nine billion people, so the reason people go hungry isn't because there isn't enough food it's because the food isn't in the right places. The infrastructure in places like the U.S. can handle food distribution for a much larger population, but in third world countries there is obviously a problem even with the current population. So what we really should be thinking about is how to get the food to the people who need it, not how to produce more food.

<comment><USER3> Famine was a solved problem three hundred years ago in peacetime Europe. The challenge isn't growing food. The challenge is making sure thugs with guns don't take it between the place where it is produced and the place where it is consumed. (It matters little to this analysis whether the thugs with guns are cops or robbers, since if you live in a country with famine they are probably only distinguishable by the color of their uniforms, if that.)

</comment></comment><comment><USER4> Cool article!

I have no idea on the true scalability of it to billions of people, but Havana is a good example of low-tech high-yield food production that helped out when lots of people were going hungry in Cuba after the Soviet Union collapsed.

A byproduct is that it's relatively labor-intensive to get high yield out of the small urban farms, thus providing extra good jobs.

Would be interesting to see if these kind of low-fi solutions could contribute meaningfully to the problem of feeding 9 billion people in the coming years...

<comment> barry-cotter _A byproduct is that it's relatively labor-intensive to get high yield out of the small urban farms, thus providing extra good jobs._

Farming is horrible backbreaking, unending, relentless labour. A good job it is most emphatically not. My great-grandfather would no doubt think that modern farmers are total wusses, what with not having to even muck out horse stalls since we've now got tractors. Even so, farming is a crap job compared to the alternatives available to those capable of doing it properly for most of those capable of doing it. You have to be willing to work like a dog for a substantial portion of the year, and if you've got animals you never get any proper time off, ever. Being a small businessman in any other sector is a much better prospect financially, a hell of a lot safer (there's a reason why non- farm and farm work related workplace fatalities are reported separately) and you can live in something resembling an urban area.

Oh, and extra good jobs? This is an example of what's variously termed the lump-of-labour fallacy or make-work bias.

tl;dr _Farming sucks_

<comment><USER4> Your response is correct in the context of later 20th century farming when mechanization and subsidies allowed less labor to be involved, allowed food to become a commodity product, and vastly reduced market prices. Of course it's pretty well recognized that all of that is not a sustainable model and will need to work differently.

I'm not recommending that we re-establish the farms that your great- grandfather worked on. There are higher-tech ways to produce. (Hydroponic greenhouse vegetable producers are a good example - they require more labor than planting fields with a tractor, but it's not the back-breaking labor of manually tending fields.)

As for the financial prospects - if more people need food and less of it is available, prices will rise. From what I understand, this has played out in Cuba...people who grow and sell food outside the planned economy live quite well.

The make-work bias is really only applicable if we're holding up two equivalent systems and I'm arguing for the more labor-intensive one because it is more labor-intensive. I guess mentioning the extra labor was kind of superflous because what I was proposing is that high-yield microfarming might play a roll in feeding more people in the future. More labor demand would just be a byproduct...

</comment></comment></comment><comment><USER5> It's possible to feed 50billion. It's just a question of cost.

Consider a skyscraper with a farm on each level (vertical farming). The vFarm is located right next to a nuclear plant that desalinates seawater for irrigation. Your flour will be $10/lb but it's _possible_.</comment>


Amazon.co.uk gets Amazon.com redesign finally. - <AUTHOR> http://amazon.co.uk? (When you're signed out) <comment><AUTHOR> (You need to be signed in. They are slowly rolling it out it seems)</comment>


Detect/Parse Mailing Addresses in Text - <AUTHOR>

Are there any open source/commercial libraries out there that can detect mailing addresses in text, just like how Apple's Mail app underlines addresses on the Mac/iPhone.
I've been doing a little online research and the ideas seem to be either to use Regex or a full on NLP package such as Stanford's NLP, which usually are pretty massive. I doubt iPhone has a 500MB NLP package in there, which makes me to believe there should be an easier way. Too bad UIDataDetectors is not open source.
Thanks,
Drew <comment><USER2> Are you only trying to detect US addresses, or anywhere in the world?

For US addresses, a quick check for known zip codes or state names/abbreviations might be a good place to start if you're looking to roll your own.

<comment><AUTHOR> Yes, US only. I prefer to use a lib/tool that already exists.</comment></comment>


The Relationship Between Profanity and Honesty (2017) - happy-go-lucky https://www.gsb.stanford.edu/faculty-research/publications/frankly-we-do-give-damn-relationship-between-profanity-honesty <comment><AUTHOR> _" These two forms of norm-violating behavior share common causes, and are often considered to be positively related."_

Why do the authors assume dishonesty is "norm-violating"?

It seems logical that some forms of dishonesty are norm-conforming and some forms are norm violating. In any case, whether dishonesty actually violates norms should itself be tested rather than assumed (the paper's body actually notes some forms of dishonesty coming from social pressure but the heading is still there).

I mean, I might say that the _dishonest_ statement "everyone aspires to honesty and honesty is what we value" is one socially acceptable kind of dishonesty. But that's my idiosyncratic point of view.

<comment><USER2> Yeah - the elephant in the room is that full honesty is essentially a social disability. The social expectation is to learn how to lie on your own at appropriate times.

</comment></comment><comment><USER3> I have a mild stammer. I struggle sometimes with certain sounds, I can never order lasagne without stammering.

Oddly enough if I swear I can have the fucking lasagne whenever I want.

<comment><USER4> I wonder if this "workaround" would stop working if people around you found it acceptable for you to swear when ordering lasagna.

<comment><USER5> Surely it would depend on whether the speaker thought it was acceptable or not?

<comment><USER4> Maybe. No idea. Even if people started to accept the swearing maybe the speakers knowledge that he has a special exception allowing him to say these words and it's okay would be enough. Or maybe he still considers it bad to swear even if other people thinks it's okay. It's not like brains always act in some predefined logical way.

<comment><USER3> I think it's more to do with my ability to produce certain sounds that various swear words make easier. It's not that I've any major hang up about swearing. The mental hang up is elsewhere, such as feeling anxious ordering food.

</comment></comment></comment></comment></comment><comment><USER6> I wonder whether that effect should be normalized against a profanity baseline for the given person.

i.e. I find it somewhat plausible that in an individual, swearing more than usual is positively correlated with being more honest than usual. I find it less plausible that people who swear a lot in general are more honest than people who don't.

<comment><USER7> I can see it.

The purpose of swearing, as it applies to primates, is suggested to be an additional channel of communication indicating types of danger (can't find the paper to link to, damnit). This includes a general "unknown" danger, as opposed to a directional danger from the ground or air. So the dispense of social norms (saying fuck a lot) to be more communicative is somewhat antithetical to sociopathic mimicry behavior, where you want to be more social nomative to achieve your predatory/anti-social goals.

<comment><USER6> The baseline of how much swearing is customary varies by context (social class, profession, etc). It appears e.g. that swearing is quite common in Wall Street trading culture — not an environment known for a particular commitment to honesty.

</comment></comment></comment><comment><USER8> A lot of journalists are swearing lately, including in high profile places like NYT and The Guardian, and especially on Twitter. I suspect it's because they realized (consciously or not) that it increases credibility.

<comment><USER9> And yet when the freshman Congresswoman Rashida Talib said "we'll impeach the motherfucker" everyone lost their shit and MSNBC/CNN and any other left leaning news network dropped their shit to jump on the bandwagon of harassing her.

<comment><USER10> > and MSNBC/CNN and any other left leaning news network dropped their shit to > jump on the bandwagon of harassing her.

How was the the coverage of the right leaning news sites?

<comment><USER9> Really really negative coverage, but that's obvious.

</comment></comment></comment></comment><comment><USER11> Submitted to [http://lolmythesis.com/](http://lolmythesis.com/) as _Swearing is caring._

</comment><comment><USER12> Profanity is honest in the sense that is show your emotional state but it doesn't tell if you are right or wrong.

Additionally, it often doesn't help to engage conversation with people having an opposing view point.

</comment><comment><USER13> An interesting followup would be looking at whether this is consistent across different reasons for using or not using profanity. For example, does the correlation hold if you separate people who don't use profanity due to personal moral conviction and people who abstain due to social norms?

</comment><comment><USER14> Well this is good news, my six year old is a very honest kid.

</comment><comment><USER15> For those who don't want to click on the link:

> There are two conflicting perspectives regarding the relationship between > profanity and dishonesty. These two forms of norm-violating behavior share > common causes, and are often considered to be positively related. On the > other hand, however, profanity is often used to express one's genuine > feelings, and could therefore be negatively related to dishonesty. In three > studies, we explored the relationship between profanity and honesty. We > examined profanity and honesty first with profanity behavior and lying on a > scale in the lab (Study 1; N = 276), then with a linguistic analysis of > real-life social interactions on Facebook (Study 2; N = 73,789), and finally > with profanity and integrity indexes for the aggregate level of U.S. states > (Study 3; N = 50 states). We found a consistent positive relationship > between profanity and honesty; profanity was associated with less lying and > deception at the individual level, and with higher integrity at the society > level.

<comment><USER16> > ... a linguistic analysis of real-life social interactions on Facebook ...

How can they tell if people are being dishonest on Facebook?

<comment><USER17> > The honesty of the status updates written by the participants was assessed > following the approach introduced by Newman, Pennebaker, Berry, and Richards > (2003) using LIWC. Their analyses showed that liars use fewer first-person > pronouns (e.g., I, me), fewer third-person pronouns (e.g., she, their), > fewer exclusive words (e.g., but, exclude), more motion verbs (e.g., arrive, > go), and more negative words (e.g., worried, fearful; Newman, Pennebaker, > Berry, & Richards, 2003). The explanation was that dishonest people > subconsciously try to (1) dissociate themselves from the lie and therefore > refrain from referring to themselves, (2) prefer concrete over abstract > language when referring to others (using someone's name instead of "he" or > "she"), (3) are likely to feel discomfort by lying and therefore express > more negative feelings, and (4) require more mental resources to obscure the > lie and therefore end up using less cognitively demanding language, which is > characterized by a lower frequency of exclusive words and a higher frequency > of motion verbs. Equation and usage rates in this study are summarized in > Table 2.

> Newman et al. (2003) achieved up to 67% accuracy when detecting lies, which > was significantly higher than the 52% near-chance accuracy achieved by human > judges. Their approach has been successfully applied to behavioral data > (Slatcher et al., 2007) and to Facebook status updates (Feldman, Chao, Farh, > & Bardi, 2015). Other studies have since found support for these LIWC > dimensions as being indicative of lying and dishonesty (Bond & Lee, 2005; > Hancock, Curry, Goorha, & Woodworth, 2007; see meta-analyses by DePaulo et > al., 2003 and Hauch, Masip, Blandón-Gitlin, & Sporer, 2012).

So it's all purely from linguistic analysis of the status updates. Seems like a stretch to me but I wouldn't doubt the overall result is true.

<comment><USER16> Thank you for finding the details of the methodology. I find this unconvincing. 67% accuracy, while better than a coin flip, is still pretty low. 1/3rd of their data points on the relationship between dishonesty and profanity on Facebook are wrong by their own admission.

</comment></comment></comment></comment><comment><USER18> Honesty maybe but not truth:

"This fucking statement is not fucking true".</comment>


Bananas vs. Sports Drinks? Bananas Win in Study - <AUTHOR> https://www.nytimes.com/2018/04/04/well/move/banana-sports-drinks-exercise-workout-carbs.html <comment><USER2> This might be great for pro cyclists who have people handing them food from the sidelines, but there's no way I'm going for four-hour ride on a hot summer day with a banana in my bag. I'll probably stick to Clif bars and HEED powder for now.</comment>


Many of the Brexit Party's Twitter followers appear to be bots - <AUTHOR> https://www.engadget.com/2019/05/19/brexit-party-twitter-bots/ <comment><USER2> I thought _everybody 's_ twitter feed has an army of bots included. I'm pretty sure a good chunk of mine are, and I'm nowhere near that high level.

Some time back I got the impression that bots simply follow the trail of twitter suggestions and the users who show up in the feed for retweeting things from those you currently follow. So the more followers an account has, the more bots will find it.

</comment><comment><USER3> Link leads my browser to guce.advertising.com and gets blocked by ublock</comment>


Donald Knuth: Mathematical Ideas, or Algorithms, Should Not Be Patented - <AUTHOR> http://www.groklaw.net/article.php?story=20090603224807259 <comment><USER2> U.S. patent 1,048,576 1970 January 1. "A method for distributed editing of publications with micropayment incentives", Knuth D. E.

<comment><USER3> Good find, but a man can change his mind. Also, given the existing patent system, you're practically forced to seek patents to avoid getting trolled.

<comment><USER2> Good find?

[Edit: I just picked a computationally relevant number that approximates the patent counter circa the epoch.]

<comment><USER4> Way off. That patent is from 1912.

[http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sec...](http://patft.uspto.gov/netacgi/nph- Parser?Sect1=PTO1&Sect2=HITOFF&d=PALL&p=1&u=%2Fnetahtml%2FPTO%2Fsrchnum.htm&r=1&f=G&l=50&s1=1,048,576.PN.&OS=PN/1,048,576&RS=PN/1,048,576)

<comment><USER5> Right order of magnitude; close enough. ;)

</comment></comment></comment></comment></comment><comment><USER6> >Surely nobody could apply mathematics if it were necessary to pay a license fee whenever the theorem of Pythagoras is employed.

I've seen this argument why algorithms and mathematics shouldn't be patentable before. A fact that is always overlooked is that this hypothetical patent would have expired sometime in the 5th century BC. To make this argument one would have to find more recent examples. How about anything created within the last 20 years? In my view, the greatest things aren't practical to be patentable and the practical ones aren't anywhere close in magnitude to the Pythagorean Theorem. So, where is the problem? And by the way, comparing algorithms to "words" (in this context) is just silly, with all due respect to Knuth.

<comment><USER7> Exactly, at one point in time the ball point pen was patented, You couldn't make a ball point pen without paying someone.

How is the fruit of my labor any different from the fruit of a ME EE or ChemE's labor? The lot of us practice applied math in different domains.

<comment><USER8> A patent on a ball-point pen only affects how you make your pen. A company can make a competing, non-ballpoint pen that still writes on the same paper and is still the same color (though it might be more expensive or messier or whatever), so not licensing the patent isn't disastrous. Even with a patent on something like an engine, I can still design my own (likely less efficient) engine, which'll still drive on the same roads and probably even use the same gasoline that works slightly differently.

A patent on something like MP3 or One-Click-Ordering prevents competitors from including a feature. If I want to make an e-commerce site, I have to have multiple clicks to order something or I have to license Amazon's patent. If I want to make any sort of media hardware or software that can encode/decode or import/export or even play the content out there, I need a slew of patents licensed. There's no work-around or alternative method, I simply can't include that feature without licensing.

It's the difference between "licensing this patent lets me build off the work of another company to make my product better" and "licensing this patent is mandatory to compete in this field". In my mind, patents of the first type are fine, while patents of the second type are bad.

I should be able to create something that can (for example) play MP3s without licensing, but do so at the cost of efficiency or power (because I'm using a less effective method).

</comment></comment></comment><comment><USER9> Protip: for those who have only read about him, his name is pronounced "ca- nuth." The K is not silent. I learned this the embarrassing way.

</comment><comment><USER10> I really would like to see algorithms black-boxed rather than patented. I should be able to reap the benefits of figuring the same thing out on my own some time later than a competitor did.

<comment><USER11> You've just explained the difference between a patent and a trade secret. :)

</comment></comment><comment><USER12> I know Knuth for his _The Art of Computer Programming_ and TeX, and he's clearly amazingly smart - I'm curious about what algorithms he has invented, for what applications. e.g. Is there a "Knuth's Algorithm" (like Dijkstra's)?

<comment><USER13> Wikipedia gives a few...

<http://en.wikipedia.org/wiki/Knuth%27s_Algorithm_X>

[http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pr...](http://en.wikipedia.org/wiki/Knuth%E2%80%93Morris%E2%80%93Pratt_algorithm)

[http://en.wikipedia.org/wiki/Knuth- Bendix_completion_algorit...](http://en.wikipedia.org/wiki/Knuth- Bendix_completion_algorithm)

There are probably others as well. KMP is well-known and, I believe, commonly implemented for text search. Algorithm X is implemented in his "dancing links" method, and can be used (among other things) to solve Sudoku puzzles.

<comment><USER14> I learned of the Fisher-Yates shuffle as the Knuth shuffle, but apparently both names are used for it.

<http://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle>

<comment><USER15> I have used an alternate shuffling approach in the past of my own naive creation, which is to go from 1-N items, each pass selecting a random number to swap the current position with. This would not require counting over missing items (those copied to result) on each loop. What is the flaw in this approach I wonder?

<comment><USER14> I've used that method too. The flaw is that it is biased; some permutations will be more likely than others.

Each shuffle will consume N random numbers between 1 and N (inclusive). This gives a total of N^N equally probable N-tuples of random numbers, all corresponding to exactly one output permutation.

But there are only N! possible permutations, so some of the N^N N-tuples must share the same output permutation. Since N! does not usually divide N^N evenly, some permutations must be more probable than others.

<comment><USER15> Ah....clever. thx.

</comment></comment></comment></comment></comment></comment><comment><USER16> As a community that does a lot of work dealing with algorithms, I'm curious as to how others feel about this. I think it is important to protect trade secrets (and algorithms would certainly fall under "trade secrets" for some products), but I also believe that hindering anything mathematical or scientific is, for lack of a better phrase, negative.

If your company depends heavily on a huge body of code, are you in favor or against software patents?

<comment><USER17> Once you patent something it ceases to be a trade secret. This is an important feature of the patent system; to ensure that what would otherwise stay as trade secrets (eventually) become available to the public.

My company depends heavily on a huge body of code, but copyright protects us more than enough. The ideas are cheap, the code to implement it is hard. I think it is fair game if somebody came along and implemented the same ideas we do. Patents stifle this kind of healthy competition.

<comment><USER16> Thanks for the response.

I'll now pose a different question. Do people in this community keep their ideas out of the patent records, or do they patent? I come from a finance background and have recently returned to school to pursue an MSFE. In the financial world, new strategies, often implemented through algorithms, are the lifeblood of a lot of quantitative firms. Do people think it is better to not publish a patent if your business depends heavily an a very unique idea?

<comment><USER7> If you sat down everyone in the industry who had the same amount of education and professional experience, how many of them would have come up with a similar system? Sure there is more than one way to skin a cat, but after years of cat skinning school and years of professional cat skinning everybody comes to do it in close(maybe not identical) to the same way. I would step back and try to consider how unique the idea really is, and how easy it would be for someone with a similar background to figure it out just by looking at inputs and outputs.

<comment><USER12> Testing obviousness with the benefit of hindsight isn't always fair. :-)

One test for non-obviousness is if the problem has been known for a long time, but no one has solved it; or (even better), the standard approaches that are taught for it lead _away_ from your solution.

</comment></comment></comment></comment></comment><comment><USER18> The interesting bit is if you read his letter with the attached question and answer session, he talks about how trivial items that could be discovered by a student on their own shouldn't be patented. It's a great point because it seems there is a mutually exclusive situation here: either teachers (starting from grade school) are inhibiting students from becoming creative with math and making proofs, in which case they are told to just learn existing material (that is presumably patented and in the course work) so as not to deviate from the other children. Or they are offered the other option in a software patent free world of ideas where they can think for themselves.

Lockhart's Lament: <http://news.ycombinator.com/item?id=130499>

</comment><comment><USER12> How do you get a patent, if you have developed mathematical ideas to solve a practical problem?

I guess the answer is to patent that specific _application_ of the mathematics - like Pagerank. This narrows the patent, so it doesn't impede progress in general; and it doesn't harm you, since that's the only area that you're working in anyway. From a business point of view, it would suck if someone was absurdly successful by applying your mathematical ideas exactly in an unrelated field... but would be kinda cool for you as a knowledge-creator. As an inventor, you're doing both.</comment>


This 70-Year-Old Programmer Is Preserving an Ancient Coding Language on GitHub - <AUTHOR> https://motherboard.vice.com/en_us/article/78x5ba/this-70-year-old-programmer-is-preserving-an-ancient-coding-language-on-github <comment><USER2> Here's the specific software being talked about:

> SPITBOL is, Shields says, a "quick and dirty" implementation of a 60s > programming language called SNOBOL4, written by Robert Dewar. It's terse and > to the point—28,000 lines of code altogether, half of which are comments—and > is chiefly meant to manipulate text and symbols, and recognize patterns. > While SNOBOL4 was seen at the time as powerful but slow, SPITBOL was built > for speed.

Another implementation of SNOBOL4 which I'm familiar with which has also been maintained and made freely available under a simple permissive license is Phil Bunde's CSNOBOL4, based on the Macro SNOBOL4 from Bell Labs:

[http://www.snobol4.org/csnobol4/curr/](http://www.snobol4.org/csnobol4/curr/)

Release 2.0 is from January 1, 2015.

He maintains a website with lots more information about SNOBOL and relatives:

[http://www.snobol4.org/index.html](http://www.snobol4.org/index.html)

</comment><comment><USER3> Ah, SNOBOL. I learned in a class, apparently because the instructor had written a book on it. The good news was that the book was out of print, and so he provided photocopies. The better news was that it prepared me to encounter awk and Perl.

</comment><comment><USER4> He's got the right idea. I think if people want to leave a legacy, open source projects are the way to go. github and wikimedia really facilitate that.

The content could survive longer than the pyramids if human civilization makes it that long.

</comment><comment><USER5> SNOBOL's BREAK and SPAN matching operators provide the inspiration for the names of functions in the <string.h> library of ISO C.

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

</comment><comment><USER6> SNOBOL is a really interesting domain specific language. You might never use it, but knowing a little bit about it will certainly broaden your thought processes. I'm glad somebody is trying to keep it alive.</comment>