You Release Late and Infrequently - <AUTHOR> http://measuringmeasures.blogspot.com/2010/01/you-release-late-and-infrequently.html

<comment><USER2> Just this weekend I watched Machinima.com's documentary series on the history of Valve Software:

[http://www.machinima.com/film/view&id=42271](http://www.machinima.com/film/view&id=42271)

One of the common themes in the series is Valve's frequent choice to delay shipping in order to get things right. Gabe Newell says something like, "Your software is late for a while, but it's bad forever." As far as I can tell, this has worked extremely well for them.

Which makes me wonder what the difference is between Valve's games and Gmail. I think it has something to do with their games being about experiential storytelling, and Gmail is a tool to accomplish tasks. I imagine most software falls somewhere on a spectrum between the "tool" and "experience" endpoints and I wonder if other software besides games might be hurt more than helped by "release early and often."

<comment><USER3> The difference is that valve's software has to have a build installed on the client's computer or worse, a disk you shove into a console.

On the web, your releases update 100% of your client base instantly.

Though I do agree that depending on your market, "release early and often" can hurt you. Getting a bad reputation early can be hard to shrug off later.

<comment><USER4> It's not just the medium. A game with plot and direction won't be the same when replayed. Imagine someone trying to repeat a joke to make it sound funnier, when you've already heard the punch line. So, danger of over- generalisation, but certainly games like TF2 can be improved with updates, extensions rather than revisions.

Perhaps that's his point about bugs vs new features. Releasing often works when you are adding more good bits, not so much when fixing broken bits that should never have been released in the first place.

</comment></comment></comment><comment><USER5> On frequent releases: I absolutely love that there's a new interface tweak almost every time I login to my GitHub account.

<comment><USER6> yea, although a couple of the tweaks have ended up tweaking me out when i can't find something. :-)

</comment></comment><comment><USER7> Wikipedia has links that go nowhere.

But it does still sound a bit dodgey, I think because to get accurate feedback, you necessarily need to fool people. For example, if you had a link that stated it was a proposed feature, it would affect the clickrate. Or maybe it wouldn't? Maybe interest would be enough. Perhaps this could be experimentally tested.

<comment><USER8> Personally, I think I would feel ok about putting the link up and having it go simply to a landing page that said "This feature is still in production. Please comment below on how we could best suit it to your needs."

</comment></comment><comment><USER9> I also feel it's a breach of trust when you mislead the users you have implemented something in order to test demand. Never mind the ethics, it seems it doesn't always work:

<http://news.ycombinator.com/item?id=960721>

</comment><comment><USER10> I was about to raise the point that "release early, release often" is a phrase from free software, and wonder at its appropriation by commerce, but it turns out it's from ESR. Perhaps it is appropriate, then.

(The majority of my hack is not for customers.)

</comment><comment><USER11> The Wufoo example is awful. Shouldn't have taken more than 5 min for them to realize, "HEY the Flash experience on GNU/Linux sucks! Maybe we shouldn't use it so that we can have more customers use the thing!"

Those 3 versions of GMail could have been one version that was most useful. There was no time constraint for it since it was a side-project.

The links to nowhere sounds like a good idea except I don't think it indicates interest in the feature being built. A link's text is usually very short and you don't really get any demographics from a click. If you knew 15 to 20 yr olds were clicking a link but the rest of the site was mainly used by 30 to 40 yr olds, you might want to spin out the link as a separate site instead of just a new feature or something. But how do you know how interested people really are? :/

<comment><USER12> Actually, it turned out that the complaints coming from Linux users about Flash being used in Wufoo in the early prototype was disproportionate to the future demographics of our actual customers and so it honestly didn't make any difference in terms of our revenue today based on our current application usage. I think Linux users account for less than 2% of our user base.

In retrospect, a good number of those complaints came from Reddit users when we were just getting out the door. Our startup was only a few weeks old then and I have to say that the feedback felt overwhelming.

In the end, the decision to remove Flash in the builder was a good one because it resulted in a much simpler interface that was easier to use, but to say that it should have been obvious or that it really mattered, would be overstating it.

<comment><USER11> Then the Wufoo example is mistated in the blog. The feedback was useful for deciding on interface changes but not useful for deciding on platform/technology changes which is what it seems to imply.

So I'll change what I said...It shouldn't have taken you more than 5 min to realize that GNU/Linux users wouldn't have been a huge percentage of your users and you could have gotten away with ignoring their advice on Flash/Javascript.

It's a good case against releasing early and asking for feedback...you have no idea if the market segment using your product is the one you will be targetting in a few months.

<comment><USER9> So the conclusion you think is _obvious_ changes after you get more data, but you still think the data are not important for reaching that conclusion?</comment></comment></comment></comment>


Github search sucks (and how it could be better) - <AUTHOR> https://github.com/isaacs/github/issues/908 <comment><USER2> I use the Mozilla DXR project (or the searchfox.org fork) every day, which is pretty great for code.

Not only can it quickly search across large codebases, it parses JS/Python and the output of clang (for C/C++) to allow quickly finding the definitions of functions, declarations of variables, and so on (try hovering over a variable for instance):

[https://dxr.mozilla.org/mozilla- central/source/browser/compo...](https://dxr.mozilla.org/mozilla- central/source/browser/components/about/AboutRedirector.cpp) [https://dxr.mozilla.org/mozilla- central/source/toolkit/mozap...](https://dxr.mozilla.org/mozilla- central/source/toolkit/mozapps/extensions/AddonManager.jsm)

Nothing that many mainstream IDEs can't do, but having it on the web and being able to quickly link people and not requiring local setup helps tremendously to get people up to speed quickly.

<comment><USER3> I might just be searching for the wrong terms, but am I understanding that this is specific to searching in the mozilla codebase? Is there a version that can work on arbitrary codebases?

</comment></comment><comment><USER4> I would love to be able to search all code for a string and then either (1) sort the resulting repositories by stars/forks; or (2) limit the results to repositories with >X stars/forks. When learning a new framework or library I like to find popular projects that use it and read the code to get a sense of conventions, architecture, etc. For instance, it'd be fantastic to find all repositories with over 20 stars containing a *.py file with "import flask" or "from flask" in them.

<comment><USER5> all files ending with py with "import flask"

[https://github.com/search?q=filename%3A%2A.py+%22import+flas...](https://github.com/search?q=filename%3A%2A.py+%22import+flask%22+&type=Code&utf8=%E2%9C%93)

use advanced search to specify stars:>20 etc.

<comment><USER4> Unfortunately, you can search _code_ by file extension and phrase, and you can use advanced search to search for repository _descriptions_ filtering by stars, but I don't believe you can do both at once.

For instance, searching for "flask" and limiting the results to >1000 stars returns only the 27 repositories with a matching description[0], but the code search returns over 4 million results, ignoring the stars parameter[1].

[https://github.com/search?l=&q=flask+stars%3A%3E1000&ref=adv...](https://github.com/search?l=&q=flask+stars%3A%3E1000&ref=advsearch&type=Repositories&utf8=%E2%9C%93)

[https://github.com/search?l=&q=flask+stars%3A%3E1000&ref=adv...](https://github.com/search?l=&q=flask+stars%3A%3E1000&ref=advsearch&type=Code&utf8=%E2%9C%93)

<comment><USER6> How would you build the search results UI for a grouped query like this? If one repository has 10k stars and has 1000 files with matching strings, should the first 1000 results be from the same repository?

</comment></comment></comment></comment><comment><USER7> The (poor) choice of title here is the difference between "Here are some things that would make my life easier" and "I'm an entitled prick".

<comment><USER8> +1

</comment></comment><comment><USER9> github should try to compile code. Where that succeeds, it will give them full type information for every variable, and information on every function call, just like a good IDE has when doing code completion.

With that info, they would be able to build an awesome search system.

<comment><USER10> That costs a LOT of money to do (infra is $$$) and you also have the issue of sandboxing code.

It would be hard and expensive with not much benefit to their bottom line.

<comment><USER11> Gitlab manages to do CI (partnering with DigitalOcean), which managed to get me at least partially switched, and has further potential for upsell (have more CI servers! with exotic configurations!)

Not all languages which could significantly benefit from pulling out type info even compile. Something significantly smaller scoped would be to have github's search aware of and consume some kind of intellisense-esque database or structured documentation format that any CI process could output. (Of course, someone needs to write the tools to generate said output in the first place...)</comment></comment></comment>


NEW and FREE API to intelligently add voice to your apps and devices - <AUTHOR> http://www.api.ai

<comment><USER2> How is this any different then [https://wit.ai/](https://wit.ai/) ?

<comment><AUTHOR> @dubcanada - api.ai has processed over a billion requests and this technology powers the highest rated voice assistant on the market with more than 12 million registered users

Totally different ballgame!

</comment></comment><comment><USER3> Greatest idea i have ever heard

Turkish language needs to be supported.

We are really lazy to use anything else but voice :)

</comment><comment><USER4> Obviously the most convenient interface (voice, I mean) should come to all apps and devices.

</comment><comment><USER5> This is the best NLP that I have seen! API is super easy to use. Thanks api.ai!

</comment><comment><USER6> Can't wait to start building apps for my smartwatch using this.

</comment><comment><USER7> Pretty awesome that voice recognition is also included. Cool.

</comment><comment><USER8> Wonderful opportunities) Great NLP, easy to use API.

</comment><comment><USER9> Will it be possible to integrate my product base to the Assistant? You have a gold mine of Assistant users that I would like to tap into.

<comment><AUTHOR> That is a great idea

</comment></comment><comment><USER10> SO MANY APPS. SO LITTLE TIME.

</comment><comment><USER11> Ilya is one of the greatest hackers I know and the idea is great. Go Ilya, make any device powered by voice!

</comment><comment><USER12> Great tool for developers!

</comment><comment><USER13> I wish I could talk to people this easily ;P</comment>


Ask HN: How to safely install Mac dev tools? - <AUTHOR> Many popular development tools for Mac are distributed in binary form without signatures on the binaries.<p>- https://brew.sh (Download and run an unsigned script.)<p>- https://atom.io/download/mac (Binary not signed.)<p>- https://emacsformacosx.com/builds (Binaries are not signed.)<p>Is there any way to safely get such tools? At the moment I just need an HTML editor. <comment><USER2> \- brew.sh: shell script is hosted on Github, transferred over HTTPS. Brew is based on using Github to store repos for formulas (=packages), so you need to trust Github. If you don't trust Github, don't use homebrew.

\- atom and emacs are both signed with a Developer ID certificate issued from Apple. macOS doesn't even let you run unsigned binaries downloaded from the internet by default. You can confirm using:

       $ codesign -vv ~/Downloads/Atom.app # verify
       $ codesign -dvv ~/Downloads/Atom.app # display signature info

<comment><AUTHOR> Thank you for explaining this!

I right-clicked the apps and clicked "Get Info", found no signature info, and assumed there are no sigs. Double-clicking shows a scary warning about the app being downloaded from the Internet, with no signature information. Do you have any idea why Apple decided not to show signatures?

<comment><USER2> Code Signatures are pretty complex on macOS. A macOS app can contain multiple executables with embedded code signatures. Non-executable resources in bundles are signed individually. Individual resources could potentially be signed with different certificates.

Then there is the "designated requirement", which allows you to determine what requirements there are on code signatures. Some resources could be optional (eg. so that thinning the bundle by stripping 32bit code wouldn't invalidate the signature). The designated requirement can also be overridden by the OS (Apple has made it a lot stricter over the years, eg. unsigned resources in a subfolder are no longer allowed).

Finally, sandbox entitlements are also embedded in the code signature, making sure that you can't change sandbox permissions without invalidating the signature (and re-signing).

For the user, all that matters is whether the code signature meets the designated requirement (ie. is it valid) or not. I guess Apple could have shown the identity of the developer who signed it, but since they don't do extensive identity verification when you sign up for a developer account, that would just be an opportunity for abuse...

If you want to know more about the code signature + sandbox permissions of an app, I recommend the excellent "RB App Checker Lite" [1], but unfortunately it seems that it is no longer maintained.

[1]: [https://brockerhoff.net/RB/AppCheckerLite/](https://brockerhoff.net/RB/AppCheckerLite/)

</comment></comment></comment><comment><USER3> You can't. Really, it's impossible to vet everything.

I use littlesnitch and ClamXav as an extra security measure, along with what the OS brings but as far as CLI third party tools go, we are all blind: pip, npm, gems, random prexompiled go apps, docker containers and te list goes on and on...</comment>


Bashism - <AUTHOR> http://mywiki.wooledge.org/Bashism

<comment><USER2> Cache link seeing as the server appears to have been hammered by HN:

[http://webcache.googleusercontent.com/search?q=cache:MGUqZp5...](http://webcache.googleusercontent.com/search?q=cache:MGUqZp5W_O0J:mywiki.wooledge.org/Bashism&strip=1)

<comment><USER3> Eww! I find this copy far more readable:

[https://web.archive.org/web/20130728075247/http://mywiki.woo...](https://web.archive.org/web/20130728075247/http://mywiki.wooledge.org/Bashism)

</comment></comment><comment><USER4> I've programmed posix sh (Kenneth Almquist's shell ash) for years. Bash is like a poor implementation of korn. For large programs /(k|z)?sh/ or simply using perl or ruby where it makes sense. Nothing beats writing system with not much more than sed, head, tail, wc, tr, sort, uniq, grep and occasionally awk. No reason to create dependencies where none are needed.

<comment><USER5> That's one of the things I like about Debian, is that /bin/sh is dash (Debian Almquist Shell).

Somehow I got known at work as a guy who knows shell scripting, but people never ask me about simple problems and so I always end up telling them to use Python or C#.

<comment><USER6> At work I'm the ruby|python|perl guy because I almost steadfastly refuse to use bash/sh.

Its less that I don't like shell, but doing complex things in it doesn't scale past a certain point. That and I'd rather use a scripting language than shell. If not that then its time to break out good old C and do it the hard way.

<comment><USER4> UNIX scales very well. This is coming from someone who programs in regular expressions. Nothing wrong with not using bash, or ruby|python|perl when everything can be done in the small one. The posix sh has a 70k footprint. There is nothing that can't be accomplished in the shell with both less code while defeating complexity through both recursion and stream processing. They hit it spot on with the philosophy and operating system semantics. It's just another way of using it.

<comment><USER6> If the argument for posix sh is that its 70k, I'm not sure thats a pro or con. I compared the runtime of a perl script versus shell doing pretty much the same thing, and perl was much faster because there was significantly less fork/exec going on.

Sure the executable is say 70k versus dunno 5 megs for perl lets say. In the end, if you're that constrained for memory, you should be using c not shell or even perl.

My aversion to shell is more related to finding, and eventually having to support, 20k shell "programs". They are inevitably always brittle creations with no tests or even design philosophy behind them. They nominally were cobbled together to fill a niche. From which I'm impressed they work, but inevitably they fall on their own petard. I've rewritten most of them with some scripting language and reduced their complexity by orders of magnitude and made them easier to use as well as orders of magnitude faster. Stream/pipe processing isn't the only way to skin some cats, despite its simplicity.

I guess I just find the "I know i'll use shell" behavior to really really end up being its own detriment in later use. Shell may be turing complete but things like spaces for example really make using it easily and simply very much a losing proposition compared to say tcl.

I'm not against shell, its a great glue language, but it just seems to get over used in some domains.

Eh, time to go drink I'm rambling aimlessly now.

</comment></comment></comment></comment></comment><comment><USER7> I realized how little I knew about sh earlier this year. It struck me that it has by far the highest ratio of "how often I use it" to "how much I know about it"

So (to learn more about it) I implemented a large fraction of the POSIX shell specification. It was rather fun, and fairly easy in any high level language that can call setenv() and fork() and I learned all sorts of interesting things. Example:

        FOO=bar cd .; echo $FOO

will output "bar" in a POSIX compatible shell but not bash. Also, this is completely valid:

        for if in case; do echo {; done

since reserved words are only reserved when in the command position.</comment>


Taking account of misconceptions; avoiding rote learning (MIT OCW video) - <AUTHOR> http://ocw.mit.edu/OcwWeb/Chemistry/5-95JSpring-2009/VideoDiscussions/detail/lec03.htm

<comment><USER2> Strongly reminiscent of this really fantastic talk from Eric Mazur, a Harvard physics professor (and a charismatic speaker!) who was shocked when he discovered the pervasive misconceptions held by his undergraduate students.

<http://www.youtube.com/watch?v=WwslBPj8GgI>

Mazur describes how he discovered and _carefully measured_ the lack of fundamental understanding among the majority of his students, and how after attempting to address the problem in various ways, he found that a discussion- based, peer-assisted method of working through material was much more effective than more a lecture-oriented approach.

<comment><USER3> Thanks for that! You should submit this to the front page. Suggested title: "Students Ace Textbook-Style Physics Questions While Struggling With Basic Understanding."

</comment></comment><comment><USER4> On the hoop / disc question, I could figure out that there is more work involved in rotating the hoop so the disc would go faster. However, what if the incline of the surface is so extreme that both of them are falling? Surely in that case they should fall with equal speed, so alpha would seem to matter.

<comment><AUTHOR> Then it wouldn't be rolling, you need a surface for it to roll. Atleast that is my understanding !

<comment><USER4> Thanks, that makes sense.</comment></comment></comment>


Ask HN: Free for startups, but larger companies pay: where to draw the line? - <AUTHOR>

I'm creating a service that I want to give to startups for free/cheap, but that I want to charge larger companies for. What is a simple way to make the distinction?<p>Ex: companies with <10 people, companies with <$500k revenue <comment><USER2> For private companies, I suspect you may have an issue dealing with pricing your product based on their revenue.

If your product is something that multiple employees use, then it is easier to make the definition based on the number of people.

You didn't really give us much to go on. Take a look at how companies like 37Signals (basecamphq.com), or freshbooks.com seperate their offerings.

Hopefully for you, there is a model which is either # of people using your service, or some other metric you can charge by.

For instance, if only 3 people in a small company would use your product, but only 4 people in a large company would use it, then you can't really price based on # of people in the company (or else, how would you know when the company has grown to the new pricing).</comment>


Show HN: React Guitar – A guitar component for React - <AUTHOR> https://react-guitar.com <comment><USER2> Looks nice! I'm currently working on something similar based on vue:

[https://fretty.app](https://fretty.app)

It's a work in progress but you can already play around with scales and different tunings

<comment><AUTHOR> I really like fretty!

In fact react-guitar is the end result of a very similar project that I never finished.

I needed to reuse the guitar component for another project I am working on now so I decided to make it open source.

<comment> uhoh-itsmaciek These are both great! I also have a similar project: [https://fretboard.cool](https://fretboard.cool)

<comment><USER3> Seems like fretboard apps are a favorite pastime.

Here's mine [http://firemeinterns.com/fretter/](http://firemeinterns.com/fretter/)

<comment><USER4> Mine is downright primitive compared to all of the ones the rest of you are posting, being a command line program in C that I originally wrote around 1986, probably for THINK C on my Mac Plus.

Here is the source code [1], only updated to compile cleanly with a modern C compiler and not to depend on any libraries or functions that were specific to THINK C, plus one bug fix and some reformatting.

Here are some usage examples:

      $ ./chord
      c
      C:  C E G
      <3>|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|-----|-<3>-|
         |-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|-----|-----|-----|-----|
      <5>|-----|-----|-----|-----|-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|
         |-----|-<3>-|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|
         |-----|-----|-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|-----|-----|
      <3>|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|-----|-<3>-|
      c7
      C7:  C E G A#
      <3>|-----|-----|-<5>-|-----|-----|-<7>-|-----|-<1>-|-----|-----|-----|-<3>-|
         |-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|-----|-----|-<7>-|-----|
      <5>|-----|-----|-<7>-|-----|-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|
         |-----|-<3>-|-----|-----|-<5>-|-----|-----|-<7>-|-----|-<1>-|-----|-----|
         |-<7>-|-----|-<1>-|-----|-----|-----|-<3>-|-----|-----|-<5>-|-----|-----|
      <3>|-----|-----|-<5>-|-----|-----|-<7>-|-----|-<1>-|-----|-----|-----|-<3>-|
      c#m
      C#m:  C# E G#
      <3>|-----|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|-<3>-|
         |-----|-<1>-|-----|-----|-<3>-|-----|-----|-----|-<5>-|-----|-----|-----|
         |-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|-<3>-|-----|-----|-----|
         |-----|-<3>-|-----|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|
         |-----|-----|-----|-<1>-|-----|-----|-<3>-|-----|-----|-----|-<5>-|-----|
      <3>|-----|-----|-----|-<5>-|-----|-----|-----|-----|-<1>-|-----|-----|-<3>-|

You simply type chord names, and it shows you what notes are in the chord and where you can find them on the guitar fretboard. The first example is a C chord. It tells you the notes you want are C E G. In the diagram a <1> means that is a place you can play the root of the chord, a <3> is the third, a <5> is the fifth. For the C chord, then, we see that on open first string would give us <3>, the third fret <5>, the root is on the 8th fret, and the <3> is also on the 12th fret.

Chord names are the root note (with # for sharp or b for flat), and modifiers 'm' for minor, '6', '7', or '9' for a 6th, 7th, or 9th chord. (I have no idea why I did not include diminished chords).

If a line starts with '-' it is a command to change settings. Commands are "-cN" to set a capo on the Nth fret

Here are the commands. "-cN" for a capo on the Nth fret. "-t<notes>" to set the tuning for each string, where <notes> is a list of 6 note names (which can each be followed by # or b). "-Td" or "-TD" for D tuning. "-sN" to transpose by N half-steps (N can be negative). "-n" to switch to a narrower display and "-w" to switch back to normal. Narrow display looks like this:

      C:  C E G
       3 |---|---|-5-|---|---|---|---|-1-|---|---|---|-3-|---|---|-5-|---|
         |-1-|---|---|---|-3-|---|---|-5-|---|---|---|---|-1-|---|---|---|
       5 |---|---|---|---|-1-|---|---|---|-3-|---|---|-5-|---|---|---|---|
         |---|-3-|---|---|-5-|---|---|---|---|-1-|---|---|---|-3-|---|---|
         |---|---|-1-|---|---|---|-3-|---|---|-5-|---|---|---|---|-1-|---|
       3 |---|---|-5-|---|---|---|---|-1-|---|---|---|-3-|---|---|-5-|---|

It's always amusing to look at one's old code. Much of it seems like it was written by someone else. For instance, I see a lot more spaces around punctuation than I would use today. I think that is probably because the editor I used back then did not have syntax highlighting, so extra space was needed to make sure you didn't confuse consecutive tokens.

[1] [https://pastebin.com/0rZnaVgu](https://pastebin.com/0rZnaVgu)

<comment><AUTHOR> Thanks for sharing this, I really like how simple it is.

You should properly release it and possibly publish it in the main package managers.

</comment></comment></comment></comment></comment></comment><comment><USER5> Very nice! I have been working on a triad and inversion practice tool in React and may seriously consider rewriting it to use your component. [https://porkloin.github.io/triad-practice- mk2/](https://porkloin.github.io/triad-practice-mk2/)

Any chance that the fingering indicators can take text or color? I use that a lot in my current tool. Not to rush you with feature requests or anything :p

<comment><AUTHOR> So glad you liked it :)

You can customise the content of the indicators with the "renderFinger" prop and render whatever you want inside.

See [https://github.com/4lejandrito/react- guitar/blob/master/pack...](https://github.com/4lejandrito/react- guitar/blob/master/packages/site/components/Demo.tsx#L56)

Feel free to create an issue if that's not enough for you. I'll be more than happy to help.

</comment></comment><comment><USER6> The best interactive guitar UI I've ever found is all-guitar-chords.com and I use several of its features regularly. It might not be built with the hotness but the reverse scale and reverse chord features are really nice and the main use case I can think of for using something like this. I'd like to see this as an open source library and I've started on attempts several times but never finished. I think what would be cool is a "core" functional library written in typescript with all the basic well-unit-tested functions that could be used across different js libraries. Then, for react, a library like react-table that just exposes the functions via hooks (headless/agnostic to ui). then the user could implement the UI as they please using the hooks.

Edit: _Obviously_ this project looks really cool and I love react so I'll be playing around with it for sure. Props to the author.

<comment><USER7> I can't endorse all-guitar-chords.com enough. Arguably, it does need a modern facelift even though I'm fine with the old adobe flash look. But an all- guitar-chords-esque library to port to the UI of your choice is a pretty good idea.

</comment></comment><comment><USER8> Very cool! Too bad we only have one cursor...it'd be cool to have friends join in as extra "fingers" and play melodies in a QWOP-like fashion :P

<comment><USER9> The Amiga used to let you plug in two mice - this is how Lemmings two player works!

</comment></comment><comment><USER10> Pro classical guitar teacher here.

Thank you for your great work! I see some wonderful potential educational uses for this. If you'd like further feedback, please don't hesitate to get in touch!

<comment><USER11> Have you used Soundslice ([https://www.soundslice.com/](https://www.soundslice.com/)) with your students? I help make it and would love to get your feedback.

<comment><USER12> Wow, this is fantastic. Great work!

</comment></comment></comment><comment><AUTHOR> If there is anyone with experience on theming React components I would be really happy to have some ideas/help on how to add support for guitar themes/skins:

[https://github.com/4lejandrito/react- guitar/issues/5](https://github.com/4lejandrito/react-guitar/issues/5)

</comment><comment><USER13> as a left-handed guitarist, I really appreciate the left-handed option.

</comment><comment><USER14> Very clever. Took me a second to figure out how to mute a string. I figured it out, and I can't think of a better way, but otherwise it was quite easy to figure out.

<comment><AUTHOR> I couldn't figure out a better way either.

Thanks for your comment :)

</comment></comment><comment><USER15> Great work! Makes me want to pick up my guitar :)

</comment><comment><USER16> DADGAD? Oh well, time to play some Led Zeppelin!

</comment><comment><USER17> This is awesome! Btw, I personally think that it'd be better to have orchestration feature for a complete music.

</comment><comment><USER18> This is incredible. My only suggestion, make a hotkey (optionally toggle / push to touch) for the hover to play

</comment><comment><USER19> Awesome! Works great on my iPhone SE

</comment><comment><USER20> Very nice! Humble suggestion: Add some Neil Young and Joni Mitchel tunings.

<comment><AUTHOR> Thanks for the suggestion. I've been doing my research (sorry I have limited guitar knowledge, I am learning Spanish flamenco now).

According to [https://en.wikipedia.org/wiki/List_of_guitar_tunings](https://en.wikipedia.org/wiki/List_of_guitar_tunings)

You might be referring to:

Neil Young -> "B-F-B-E-G-B" or "D-A-D-G-B-D"

Joni Mitchel -> "D-A-D-F-A-D" or "G-G-D-G-B-D"

Which ones are the correct ones?

<comment><USER21> All valid, different root chords for different songs.

</comment></comment></comment><comment><USER22> This is so cool! Super responsive and fun.

</comment><comment><USER23> Had fun playing it. Thanks for sharing

<comment><USER23> Recorded some changes here [https://vimeo.com/440905819](https://vimeo.com/440905819)

</comment></comment><comment><USER24> this is awesome

</comment><comment><USER25> lovely- the demo could have a little wider view of the fretboard, maybe 6 or 8 frets at a time.</comment>


Bitcoin hits $17K as bubble fears mount - <AUTHOR> http://www.bbc.co.uk/news/business-42275564 <comment><USER4> Macro-economist here.

I can't wait for this bubble to burst so some non-noxious (inflationistic, fractional-reserve-banking enabling) second- or third-generation cryptocurrency to supplant it and harness the blockchain in a less naive manner.

• Something I wrote about the macroeconomic flaws of bitcoin (posted previously, zero comments): [https://medium.com/@jamesjunghanns/my-0-00000173120-btc-a- pr...](https://medium.com/@jamesjunghanns/my-0-00000173120-btc-a-practicing- orthodox-macroeconomists-unsolicited-views-on- bitcoin-543da352fc49?source=linkShare-229012a5fba0-1512731487)

• An analysis of the rising amplitude and quickening frequency of oscillations in valuation, leading to a projection of peak value and crash time: [https://mynabla.com/2017/11/30/bubble-trouble-exploring- an-l...](https://mynabla.com/2017/11/30/bubble-trouble-exploring-an-lppl- model-for-bitcoin/)

• A financially dignified and macroeconomically sophisticated proposed cryptocurrency (not affiliated): [http://www.getbasecoin.com/](http://www.getbasecoin.com/)

<comment><USER5> >inflationistic, fractional-reserve-banking enabling

The entire point of bitcoin is lack of trust in the financial system and a trust in math. With bitcoin nobody can take it, nobody can dictate what your company is allowed to sell, by holding your access to the financial network hostage; nobody can force you to pay for their schemes by coin clipping or inflation and nobody can hide counter-party risk in fractional reserve- banking. Your money is either there or outright stolen, not messed with by Wall Street cronies.

Bitcoin exists because the current system is untrustworthy. what you are proposing is making Bitcoin less trustworthy.

<comment><USER4> You as many other technologists write knowingly of currencies and economies and how they should/could function as if of mechanics flying submarines. Your assumptions are all wrong.

<comment><USER5> My assumptions are that I can save money by not using them, that one should not take on a debt burden that one cannot pay back and that pumping billions of phantom money into the world will result in bubbles.

Look I know, the average economist disagree with me. But the ideas (other than no inflation, which is more a moral thing than a thing of economics) are not mine - they belong to Hayek and to some degree Milton Friedman. Friedman got a nobel prize in economics; Hayek was the opponent of Keynes, and despite a bit less than a century after the disagreement we haven't gotten rid of cyclic boom and bust.

I believe economies are significantly simpler than economists believe - <USER2> macro economists have an atrocious record of predicting the future.

<comment><USER4> Fair enough, we can agree to disagree about first principles. It just leaves me a bit nonplussed, as if I came to you and started to preach to you about how a computer processor contains sentient elves. I could probably make some workable predictions from that statement, but by overestimating the inherent autonomy of a deterministic processor I'd also make some statements you would hold to be ludicrous. To each his own domain, I cannot really attack your assumptions, just what you derive from them; of your principles and beliefs I can only provide commentary, and on the topic I shall be as succinct as I can.

To wit, the "phantom money" you mention seems to allude to allude to a contrast to non-phantom money, supposedly some kind of "real stuff" that meets your intuition of being a unilateral asset.

National debt for a country that can issue bonds denominated in currency it itself controls is not at all comparable to the debt accrued by the private household or firm. Through varying levels of inflation, that debt-load becomes more manageable over time, a process I am sure you are aware of and conversant with. Insofar as it is a debt repayable mostly to the citizens and institutions of the nation itself, denominated in a currency that the sovereign government controls, it is hardly ever going to be unplayable. Nor will there be wholesale plunder of savings through hyper-inflation or other means... it's usually a measured process.

And the debt provides a place for savers to safely park their excess liquidity. If they did not have the national debt to fund, they would go on the hunt for other, riskier assets to use as interest-bearing vehicles, and they'd bid down the price of risky financial assets and achieve lower expected returns as a result.

Macroeconomics is surprisingly adept at unravelling how capital flows flux through a body politic. We tend to explain retroactively. Now people are putting themselves out there making fairly crisp, and as-yet un-falsified predictions of a crash on the way... we'll see if I was right or wrong to be convinced by their argument.

</comment></comment></comment></comment></comment><comment><USER6> Bitcoin is a massive ponzi-scheme and it _will_ crash imminently. Or, you know, it isn't and it won't.

It's really interesting to me to follow on the side-lines of crypto as the price it's exchanging at moves up. In the last week I've had non-techies mention how they were buying Bitcoin (ostensibly to make fast, easy money).

What intrigues me most is that amid the hysteria, a lot of posters on reddit and elsewhere seem to be of the belief that _everyone_ can get rich on Bitcoin - and that if everyone buys in the price won't crash. Moreso, most of the people I'm seeing discuss it don't seem to have any knowledge of similar financial events from the past (e.g. the dotcom bubble, tulip mania).

I'm not going to begrudge anyone that's made money from Bitcoin, nor am I going to judge anyone else for putting money in at this stage (anecdotally, the chatter I'm hearing in work from non-techies points to an ample supply of greater fools), but I think it should raise alarm bells that financial literacy is so low in the general populace that in most cases people are making these decisions with so little information to hand of what they're buying (I think it's fair to believe at this point that most of the buyers at this level aren't familiar with what the blockchain is as a concept - <USER3> just see rising valuations).

<comment><USER7> What we're seeing isn't the utility of Bitcoin going up, we're seeing what happens when supply meets demand. The total number of Bitcoins that can ever be mined is fixed, but I think the real reason the price is going up is that the current rate of mining can't sustain the rate at which people want to get into crypto. But what change in utility is driving the increase in demand? Right now Bitcoin isn't good at (and no amount of revisionism will change this) it's original purpose of being _currency_ , which is literally Bitcoin's only utility other than the fact that there are a limited number of them. So it's actually less useful now than in the past... meaning the increase in demand is in _spite_ of that change, leading me to believe it's all due to more people wanting crypto.

I feel the same way as you, I think a lot of people who don't know anything about crypto are making rash decisions and it's setting off alarm bells in my head too. I don't even know why people are buying Bitcoin over most alts because to me Bitcoin has so much less utility compared to what BCH, ETH, Monero. Not that Bitcoin is worthless, it's just that it seems like people are only buying it because it has the name "Bitcoin". _That_ 's why I think it's going to crash.

<comment><USER6> I think most of this can be explained by thinking of Bitcoin not as digital dollars, but as digital gold (a perpetually limited, deflationary value store that is immune to central-bank meddling).

A lot of us in tech are _really_ excited about crypto, but the economic realities mean it's very likely that for any particular token to be treated seriously as a currency it would need central bank support - which is anathema to Bitcoin's stated purpose.

<comment><USER7> Yes, I am aware of that. I'm not confusing crypto with Bitcoin, actually I'm bullish about crypto in general.

I'm saying that Bitcoin the currency is like pewter or lead compared to BCH or ETHC. That's why it's not gold. It's like a version of gold that's heavier and more useless than some other perpetually limited, deflationary value store.

In fact I think I'm going to start calling Bitcoin "digital lead" because it's so hard to move it around.

<comment><USER6> Digital lead. I like it.

We ICO on Monday!

</comment></comment></comment></comment></comment><comment><USER8> Same story every time. At 1$ it was a bubble, at 30$ it was a bubble, at 100$, at 1000$, etc. I wonder what needs to happen for the "bubble" people to say - alright, this is not a bubble anymore, I was wrong. Or it will always be a bubble for them?

<comment><USER9> i guess if the value stabilize and people use it as a real currency, then people will stop saying bubble, but now even Steam has stopped accepting BTC

<comment><USER6> Bitcoin isn't a currency, it's a commodity (akin to digital gold). It can't be naturally deflationary and used to facilitate day-to-day trade because, by design (and with all else being equal), you're better holding on to the bitcoin than spending it.

Fiat currencies are the opposite - inflation encourages spending because the money slowly trends towards being worthless if you don't spend or invest.

</comment></comment></comment><comment><USER10> It seems like the bitcoin craze also attracts significant traction for underwhelming journalism.

<comment><USER7> Bitcoin journalism sucks because if a journalist knew enough about Bitcoin to write well about it, they'd be qualified for a better job than being a journalist writing about Bitcoin.

</comment></comment><comment><USER11> All these threads and articles are the same, there's no new information just a new price.

I like to follow a long with the Cryptocurrency, I've got a couple million in Bitcoin right now, and I'm hoping for a big 'crash' to weed out the Wallstreet types and focus again ons some good old-fashioned development.

It's hard to experiment when there's billions riding on it and I feel that we're not done experimenting yet.

Anybody else remember the good old 2011 days of a small community and enthousiasts? I miss those days.

<comment><USER12> > Anybody else remember the good old 2011 days of a small community and > enthousiasts?

I do. It was fun. There was a real sense of community. Where you'd ask advice on IRC on some mining setup, and people would gladly help you tune some settings on your build-in GPU. When, after a full day of mining, I was like "meh, this'll make at most one BTC per day, no way that I'm going to let my computer blast the whole night just for one Bitcoin. Where you knew nicknames and trusted people (and their advice, software, scripts based on "knowing them from IRC")

One thing I've noticed when moving more into the Eth community (I'm developing solidity stuff now) is that Eth is both a friendlier, more helpful community, and feels like a more closed set.

Btc feels all about in-fighting these days. No matter what reddit you visit, there is fighting, not heated debates, but actual, real hate. Eth feels more as a whole group. We -vs- them kinda thing. As opposed to the Bitcoin us-vs- us.

</comment></comment><comment><USER13> I guess it is fair to assume that the bitcoin has become a extra-money sponge that absorbs the extra money floating in the market right now. When there will be less and less "free or cheap money floating" people want to get their money back from the investments they made and this is the exact point where the burst occurs. It would be no problem if the decrease is happening at the same speed as the one of the initial increase, but due to human emotion, the decrease is happening orders of magnitude faster than the increase. At that point, the money will magically disappear.

It's a natural process that balances the value of the money available in the market.

One interesting point to note here is that the value of the entire bitcoin monetary mass is about 0.25 trillion dollars. That's something like 1% of the whole US national debt.

</comment><comment><USER14> A recent September 2017 blog[1] estimated electricity mining costs to be ~$19k. (I don't know if bitcoin community has adjusted the hashing difficulty since September 2017 to maintain the 10-minute block rate.)

Are there realistic scenarios where the _sustained_ value of bitcoin exceeds the mining costs?

What was the mining cost of 1 BTC in May 2010 when the famous request for 2 pizzas[2] for 10000 bitcoins was made?

[1] [https://grisha.org/blog/2017/09/28/electricity-cost- of-1-bit...](https://grisha.org/blog/2017/09/28/electricity-cost- of-1-bitcoin/)

[2] [https://bitcointalk.org/index.php?topic=137.0](https://bitcointalk.org/index.php?topic=137.0)

<comment><USER15> The difficulty of mining adjusts every 2 weeks so that data is certainly outdated.

</comment></comment><comment><USER16> Who cares? In the grand scheme of things, does it really matter that this bubble pops?

I know there are some people out there who'll have invested everything they have in BTC, which will suck for them. However, I'd wager for most people it's still just a fun way to make some spare cash, given that it's actually really difficult to use cryptos on much IRL.

We've got a bit more work to do before cryptos start being useful mainstream money, rather than just a volatile investment opportunity. The underlying ideas in blockchain are brilliant, genius even. Journalists should focus more on the interesting potential of this technology, and less on how much 1BTC costs today.

<comment><USER17> They're fueling the speculation because they are probably invested as well.

And now that options contracts are taking off for bitcoin, the folks with put contracts are banking on a crash.

<comment><USER18> Do you mean futures? Where are options being offered?

</comment></comment></comment><comment><USER19> The market price is pointless to look at, it's driven by people/groups with no understanding or interest in the technology, who are just looking for easy money.

Bitcoin, Ethereum, Monero and others are absolutely incredible pieces of tech. E.g. the EVM is essentially a new paradigm in computing which has never been seen before.

To draw a parallel in history, would you rather have been an investor in Apple when the iPod was launched, or on the engineering team that built the iPod itself?

We can spend all our time discussing the price and gambling on the perception of value OR we can actually get our heads down and build something completely new and cutting edge. I know what I prefer to do.

</comment><comment><USER20> For those unaware of the recent news (briefly mentioned in this article) which is driving the prices crazy the past couple of weeks, it's because the two biggest derivate exchanges form Chicago are launching Bitcoin Futures soon. CBOE launching this Sunday on Dec 10th 6pm EST. CME launching on the 18th [1].

10th would be a very interesting day for traders. I am no expert at all but from what I can tell, this will make it easier for big institutions to short the Bitcoin (all transactions happening off the blockchain though). There are specualtions that prices are going up just before the launch and might take a dive with the shorting after. BUT if there's anything that've learned trading BTC on the side: anything can happen, it's got a mind of its own :)

Either way, I think this is good news for the long run as it legitimizes BTC (There are rumors of Nasdaq and other exchanges globally getting in soon as well next year). If you thought 2017 was fun, wait till you see what 2018 has in store for cryptos.

[1] - [https://www.cnbc.com/2017/12/04/cboe-announces-it-will- launc...](https://www.cnbc.com/2017/12/04/cboe-announces-it-will-launch- bitcoin-futures-on-dec-10.html)

<comment><USER21> > "wait till you see what 2018 has in store for cryptos."

The ability to short might actually bring some stablity to the price (as shorters will produce sell orders when they think others are mistakenly buying too much, and will likewise produce buy orders on the falls).

<comment><USER20> I agree. More stability for Bitcoin but a general uptrend as the adoption increases.

As for the other top cryptos, Bitcoin being legitimized and going mainstream would translate to way more money moving into the space. I'm quite bullish on a few good projects like Ethereum, Litecoin, Neo, etc.

</comment></comment></comment><comment><USER22> "as bubble fears mount"... seriously? I'm pretty sure bitcoin always felt like a bubble even when it was trading at less than a dollar.

</comment><comment><USER23> I do not claim to understand the value creating mechanisms of a cryptocurrency vs. a "traditional" currency.

But without a central trust, the thing that guarantee the value of bitcoin is the network effect, right ?

In that case the usage may show the characteristics of a MMO or a social network.

</comment><comment><USER24> Keep calling it a bubble and it becomes a bubble. This whole thing is entirely psychological. How can we be sure journalists aren't somehow shorting bitcoin on the side while writing these articles? They have a huge influence on the collective unconsciousness.

<comment><USER25> It really is entirely psychological. Based on the two main theories of stock investing: fundamental value and castles-in-the-air speculation, with Bitcoins, it's hard to gauge its real value as it may be argued that it doesn't actually have one. Being an asset that does not produce any profit, it's hard to put a number against it. So therefore the price is driven by demand and by what the mass wants it to be worth and by what it hopes to be worth in the future.

Speculators coming in the Bitcoin ecosystem now are willing to spend a lot of money on it because they know that there will be someone else that is willing to spend even more money on it. It's all driven by mass psychology, exactly like many of the previous bubbles in the history of stock markets: tulip bulb craze, dotcom shares, Japanese land value and so on.

The only thing is... it's very hard to predict the randomness of mass psychology. Everybody wants to get rich.. and everybody wants the price to go up and up... but when they start to sell in order to cash in, the price will drop and if a lot of people do it at the same time, panic will set in and then it will crash seriously. You may argue that the whole thing behaves a bit like a ponzi scheme (with the main difference that there is actually something happening underneath the whole speculation-investing-money aspect, which is, IMHO, the very elegant blockchain technology)

</comment></comment><comment><USER26> Is there any data on the average transaction size when converting between BTC and USD? The price might be $17k per coin, but if people are transacting in $100 amounts for fractions of coins, that's kind of sustainable whether the BTC price is $1 or $100,000.

</comment><comment><USER27> Do we really need to hear about Bitcoin's price changing multiple times every day?

</comment><comment><USER28> Oh yeah but it sharply dropped right ? 14,927.78 -11.45%

</comment><comment><USER29> OK, _Now_ it's a bubble.

</comment><comment><USER30> To the moon, boys. To the moon.

<comment><USER31> To infinity... And beyond.

</comment></comment><comment><USER32> This is insane - is there any "expert" speculation out there on when this will all collapse? Before or after the new year...?

<comment><USER33> Rule #1 of cryptocurrencies, trust nobody.

<comment><USER34> that's rule number 3.

1\. HODL 2\. BUY DIP

<comment><USER27> Reddit appears to be leaking.

</comment></comment></comment></comment><comment><USER35> The modern day equivalent of The Tulip Mania where one specific type of tulip could be traded for a house? [https://en.wikipedia.org/wiki/Tulip_mania](https://en.wikipedia.org/wiki/Tulip_mania)

<comment><USER36> Can you grow a bitcoin in your garden?

<comment><USER37> Some will say you can mine it…</comment></comment></comment>


Show HN: A tool for painless automated backups - <AUTHOR> https://github.com/christophetd/duplicacy-autobackup <comment><USER2> If it uses [https://github.com/gilbertchen/duplicacy](https://github.com/gilbertchen/duplicacy) in the background it needs a (huge?) disclaimer that a $20 per year license for commercial use is required.

What is the license on your code?

<comment><AUTHOR> Thank you for pointing this out, I forgot this specificity of duplicacy. I added a disclaimer: [https://github.com/christophetd/duplicacy- autobackup/commit/...](https://github.com/christophetd/duplicacy- autobackup/commit/6f4b67115ba1990715abd2c89ee2f9fc4eec6fb4)

Regarding the license of my code I'm unsure what to use. The license of duplicacy ([https://github.com/gilbertchen/duplicacy/blob/master/LICENSE...](https://github.com/gilbertchen/duplicacy/blob/master/LICENSE.md)) states that " _Modification and redistribution are permitted, but commercial use of derivative works is subject to the same requirements_ ", so it seems to me that as long as I include such a disclaimer, it should be fine. I opened an issue on the duplicacy project to ask the author his opinion.

</comment></comment><comment><USER3> I used to use duplicacy, but switched to Duplicati: [https://www.duplicati.com/](https://www.duplicati.com/)

Works in mono in all OS's, ive used it on mac, linux and windows. Supports GPG (public) and AES (secret) key encryption, all the cloud backends, etc. Provides a Web UI.

Its also LGPL so no concerns about commercial licensing ala Duplicacy.

<comment><AUTHOR> I initially wanted to use duplicati as well, but I tried it twice at a one year interval and both times the web UI felt very buggy, and I have a hard time trusting for my backups a tool that has a buggy UI.

</comment></comment><comment><USER4> Given how close 'duplicacy' sounds to 'duplicity', and that they have the exact same purpose (backup tool), I'm surprised they haven't been sued yet. Particularly since there is a paid license cost:

[https://duplicacy.com/buy.html](https://duplicacy.com/buy.html)

<comment><AUTHOR> Agreed, the names are terribly chosen and very confusing. There was a discussion on the topic here: [https://news.ycombinator.com/item?id=14507778](https://news.ycombinator.com/item?id=14507778)

</comment></comment><comment><USER5> I find rclone much better ([https://rclone.org/docs/](https://rclone.org/docs/))

<comment><USER6> Can you use rclone for incremental, content-deduplicated backups? Is it as easy as Duplicacy to use?

<comment><USER7> I haven't used rclone, but `rsync --link-dest` lets you create an incremental snapshot using hard links so that you don't have duplicate files between snapshots. Wrap it in a shell script, and you have something surprisingly useful.

I won't link to my wrapper script because I don't want my HN account linked to my github/real name but this guy's work is what I based mine on: [https://blog.interlinked.org/tutorials/rsync_time_machine.ht...](https://blog.interlinked.org/tutorials/rsync_time_machine.html)

<comment><USER6> rsync --link-dest can't do content deduplication, can't upload to the cloud and it's much more inconvenient to use for doing and managing backups than Duplicity, Duplicacy or Duplicati.

<comment><USER8> > rsync _snip_ can't upload to the cloud

First you have to settle on a definition for cloud before you get to make claims about what tools can or can't do.

<comment><USER5> rclone can!

</comment></comment></comment></comment></comment></comment><comment><USER9> Any support for unattended asymmetric encryption, with the private key stored off-box?

<comment><AUTHOR> Duplicacy doesn't support it, so I don't plan to add support for it either.

</comment></comment><comment><USER10> Take this as a positive criticism, I dont want to put you down, but today everyone is considering backup as problem of moving data. Which is wrong. This is far from what I would expect from backup tool. You have many targets but than this is just a data moving tool to the cloud. On the other side rarely any serious organisation moves the data to the cloud and even if they do, it is considered as second tier storage. Primary target is always to the streamer (tape), it is THE only storage that was time proven. Also, there are some concepts; incremential, differential, delta, rehydrating, archiving, lets not even go into deduplication... and there are open source solutions for that. Backup word is not a simple tag, do your homework and study the backup field, it is highly complex and far from moving the data from point A to point B, maybe just a thought to show you the importance, some organisations have separate backbone for backups and disk arrays to minimise downtime, the data are not always on disk, the minimum you need is flushing the disk cache, for the database you will hit into words like freeze, for virtual machines... well.. good luck :)

But anyway, nice to see you like it enough to write a tool, just keep on going :)

\----

After my initial post, I was dowvoted. To justify that: this is not a backup, it is just an alternative to rsync or cp with multiple targets and more of something I would run after a real backup has finished. If someone is looking for real backup, there are multiple open source backup products that know their domain. This one clearly does not.

<comment><USER6> The scope of OP's project is to make Duplicacy (an incremental, deduplicating backup tool) easier to install and easier to use for client-initiated, periodically autoscheduled backups.

Can you recommend anything the OP should do differently to achieve these goals?

<comment><USER10> I did. Now you can downvote me even more. I have finished the discussion.</comment></comment></comment>


Digital: A Love Story - <AUTHOR> http://www.scoutshonour.com/digital/ <comment><USER2> looks cute but has anyone verified the exe is harmless?

</comment><comment><USER3> I ran the exe and it seems fine. The music is great and this really captures the look and feel of the old BBS experience. Well done.

<comment><USER4> And if it installed a keylogger or bot awaiting further instructions, wouldn't that also " _seem_ fine"?

<comment><USER3> Maybe I prefer a life with a little bit of risk and whimsy mixed in for good measure? Also, my software firewall would detect the dubious outbound traffic if it tried to call home. The Python source is also included in case you really wanted to put your detective hat on. Relax, it is fun.

</comment></comment></comment><comment><USER5> downloaded the linux version, nice music and it seems like it mostly takes place through bbs conversations which is great but its a shame you cant type the messages, just click.

Fantastic music</comment>


Ask HN: User-interface design guidelines when building for first-responders? - <AUTHOR> As an exercise, I'm wondering if there are any resources for learning how to design modern graphical interfaces for first-responders (i.e. military, paramedics, police, etc...)? Would material design be suitable for such a high-risk environment? <comment><USER2> Here's a sampling of published recommendations:

MIL-STD-1472G, _Human Engineering_ , § 5.2.2, Displays—content

FAA AC 20-175, _Controls for Flight Deck Systems_ , Chapter 3, Additional Guidance for Multifunction Controls

SAE ARP4032, _Human Engineering Considerations in the Application of Color to Electronic Aircraft Displays_

ISA-TR101.02-2019, _HMI_ [Human-Machine Interface] _Usability and Performance_

IEC 62366-1, _Medical devices – Part 1: Application of usability engineering to medical devices_</comment>


Install Debian packages without starting daemons - <AUTHOR> http://major.io/2014/06/26/install-debian-packages-without-starting-daemons/ <comment><USER2> Another alternative is just bypass the Deb repo's altogether and install from source, but do so using the awesome Debian Alternatives tool [1] so as not to drop a bunch of unmanaged files into /usr/bin, /usr/local/bin, etc. Takes some setup work, but very powerful and useful after you get it working. Example scripts:

[https://github.com/byrongibson/scripts/tree/master/install/h...](https://github.com/byrongibson/scripts/tree/master/install/haskell)

[https://github.com/byrongibson/scripts/tree/master/install/j...](https://github.com/byrongibson/scripts/tree/master/install/java)

[https://github.com/byrongibson/scripts/tree/master/install/s...](https://github.com/byrongibson/scripts/tree/master/install/scala)

Can do similarly with any other package. Download and compile the source to --prefix=/opt/name/version, look at the /opt structure (it will mirror /usr/bin, /usr/local/bin/, /usr/share/man) and script the update-alternatives command correspondingly.

Tons of benefits, among them being better post-install startup control, but also you can install multiple versions side-by-side and swap among with a single command. Upgrade painlessly, rollback if the new version breaks things, all very easily.

Reminiscent of Gobo Linux [2] but still a Debian.

[1]:[https://wiki.debian.org/DebianAlternatives](https://wiki.debian.org/DebianAlternatives)

[2]:[https://en.wikipedia.org/wiki/GoboLinux](https://en.wikipedia.org/wiki/GoboLinux)

<comment><USER3> If you do that then you lose the automatic package updates, for example for a security update. And that's one of the best parts of Debian.

<comment><USER4> Installing packages from source is fine, but then you have to maintain all security updates and patches from upstream, and you need full control over where all the files are populated on your filesystem. This is a lot of administration overhead. It "works", but it's also work. I rarely install software outside of the APT system, for this very reason.

<comment><USER2> Yeah, if apt has the versions you need it's definitely first choice. But for a lot of things it lags too much, and that's where this is useful.

</comment></comment></comment></comment><comment><USER5> Learning this seems to be a rite of passage for anyone who spends enough time doing Debian deployment work.

I think the complaints that starting daemons should not be the default are missing the mark: Debian is there to provide a complete, working system on its own terms. They want you to be able to apt-get install <thing> and have <thing> _working_ , out of the box, with no further work on your part. I get that there are situations where this is inconvenient, and for my money there ought to be an `apt-get install --no-launch` switch rather than monkeying with an obscurely-named shell script, but if you've run into this then you've run into an instance where _the system wasn 't designed for you_.

This is the same reason you probably shouldn't, for instance, do development against the packaged ruby - it's there to run the applications which Debian provides, no more, no less. If your needs align with the needs of the end-user applications which Debian provides, that's great. As soon as you step outside those lines, you're going to have a bad time.

<comment><USER6> > They want you to be able to apt-get install <thing> and have <thing> > working, out of the box, with no further work on your part.

Except that there is practically no way for say, winbind, or openldap, or bind to be able to start up successfully without configuration first. Then the oh so frequent case nowadays of preparing a deployment image in a chroot and bang, install fails because of unwanted starting services that conflict with the host.

> This is the same reason you probably shouldn't, for instance, do development > against the packaged ruby

Excuse me, this is insane. You're using a well-maintained distribution because you don't want to manage your own installation of Ruby or Python or Perl or PHP and countless modules, frameworks and the like, on the production systems. All the point of running Debian is developing against the provided binaries, because you want to use the same versions in dev and deployment, don't you??? and have an easy maintenance, upgrades, etc.

What is needed is a simple switch to apt-get/aptitude/dpkg to NOT start the services when installing, and maybe some other switches to NOT run preinst/postinst. That's it.

<comment><USER5> > Except that there is practically no way for say, winbind, or openldap, or > bind to be able to start up successfully without configuration first.

If you know the configuration you want, you can write the configuration files first. `DEBIAN_FRONTEND=noninteractive apt-get install <foo>` won't (or _shouldn 't_) overwrite pre-existing config files.

> Then the oh so frequent case nowadays of preparing a deployment image in a > chroot and bang, install fails because of unwanted starting services that > conflict with the host.

What I was saying above about the system _not being designed for you_? This is exactly that. I'm not saying this isn't a valid thing to want to do, just that the system isn't explicitly designed to support this use. It is unsurprising that there are rough edges.

I wouldn't be at all surprised if someone comes up with a container-based approach which makes this just work, but I've not seen it done yet.

> Excuse me, this is insane. You're using a well-maintained distribution > because you don't want to manage your own installation of Ruby or Python or > Perl or PHP and countless modules, frameworks and the like, on the > production systems.

No, I'm using a well-maintained distribution so that I don't have to take control of anything I don't want to care about. I know that the system outside what I'm directly responsible for is _stable_. No surprises.

I _do_ want to care about my runtime. I've found it makes more sense to treat the runtime as part of the application I'm working on rather than rely on the distro-supplied packages because the distro's goals are simply divergent from my own. They want absolute stability; I might want to upgrade a patch level so I can take advantage of improvements in GC, say.

This is potentially more true of ruby than, say, perl. Going back to my earlier point, I think this is because there have historically been more apps in Debian _implemented_ in perl, so whatever you're doing, your needs are more likely to overlap with what Debian already provides for itself. The same goes for PHP and Python, to an extent.

> All the point of running Debian is developing against the provided binaries, > because you want to use the same versions in dev and deployment, don't > you???

You don't have to use the Debian-supplied ruby to know that you're running the same version in development and production. Personally, I use the Debian- supplied infrastructure tools to build my own ruby packages, and to provide a repository which both dev and production can pull from.

The bonus from this is that I don't need to do a big-bang upgrade of my app every time Debian roll out a new stable release because they've changed the runtime version and all the associated packages.

> What is needed is a simple switch to apt-get/aptitude/dpkg to NOT start the > services when installing, and maybe some other switches to NOT run > preinst/postinst. That's it.

        apt-get install --recon apache2 | grep ^Inst | awk '{print $2}' | while read pkg; do apt-get download $pkg; dpkg-deb --extract ${pkg}_*.deb; done

...will unpack apache2 and its dependencies without running pre or postinst scripts. Fiddly, but it's doable. Now, for extra fun, you get to check each of the dependencies and find out which pre and postinst scripts you did want to run after all.

I agree that this should be less irritating. policy-rc.d is just way too opaque, and it has the wrong affordance. I don't want to set "don't run daemons" as a system-wide policy; I want it as a setting for a specific call to apt-get. It's another example of a system being used because of what it can do, rather than for what it was designed for. This rarely ends up looking good.

</comment></comment></comment><comment><USER3> If you don't start a daemon on install then it should also not start on reboot.

They go hand in hand.

So this really has nothing to do with install, but with the default configuration of a freshly installed daemon: Is it by default set to start or not.

<comment><USER7> There are good reasons to prevent the auto-start behaviour. Having your own configuration ready for example. Preventing things from breaking when something is already listening on their default port. Preventing creation of the initial files in the wrong place.

You can find many more cases if you do more server automation. Most people don't need them, but it can be very useful. And no, it's got nothing to do with start on (re)boot.

<comment><USER3> > There are good reasons to prevent the auto-start behaviour. Having your own > configuration ready for example.

Certainly. But in that case the daemon should also not start on reboot until configured.

After an install the system should be in the same state as after a reboot - there should not be an "in between state" after an install and before a reboot because such a state is not persistent.

There are tons of daemons that require that they be enabled before starting.

> And no, it's got nothing to do with start on (re)boot.

You are (I hope) confusing start as in attempt to run on reboot, and actually successfully run. Set the daemon to start on reboot, then check the config file and immediately quit since the file is not configured.

This is extremely common in debian installations.

There are also tons of deamons that feel that their defaults are good enough, and start right away.

But the thing in the article about "install" not meaning "run" is a red herring.

</comment></comment></comment><comment><USER4> The post is missing a critical point: per the Debian policy, services should only bind to localhost upon installation. Further, Debain advertises itself as the "universal" operating system. This implies that the defaults are sane for many people, and if the administrator of the system installs a service, the administrator probably wants the service running. So, the only thing left to do, is change the bind address, and restart the daemon. Further, per the Debian policy, when a daemon package is installed, it's configured to start automatically on boot for run level 2. The policy is written in such a way, that Debian system administrators know _exactly_ the state of their system, after installing packages.

This post is written from the Red Hat way of doing things, in that you install the daemon, do configuration, then start the daemon. However, there is no consistency with Red Hat systems. Some package maintainers will have the daemon configured to start on boot, some not. So, after configuring and starting, you also need to use chkconfig(8) to check if the daemon you just installed is ready to start on boot. More often than not, it's "off", which means it won't start. Painful thing to discover when the server restarts, and customers are calling in that their website isn't loading, or they can't access their NFS share.

IMO, I have come to find the Debian way of installing services more sane, than the Red Hat way. I want my system working, and I want to know the state my system is in when making major changes. Red Hat is just too inconsistent here, and it doesn't help that they have the /etc/rc.d/init.d/ historical baggage.

<comment><USER8> I really like the way it's now. But in some _edge_ cases you need the service stopped in the first place.

For example RabbitMQ initiates a database which denies cluster configurations if intact. So in Debian way if you are using some configuration management tool to start a RabbitMQ cluster you have install/stop/resetdb/restart cycle which is prone to failing.

So some edge cases need this kind of 2cents.

<comment><USER4> This is why upstream developers should use /etc/default/ to place daemon configuration files into. Then the configuration file could have "START=no", and even though the policy would start the daemon by default, the upstream developer could prevent this from happening.

<comment><USER5> > This is why upstream developers should

Eh, not so much. Any system which tries to convince upstream to change their ways is going to be fraught, so we're always going to need another way to force the behaviour we want in spite of the upstream.

</comment></comment></comment></comment><comment><USER9> Surely not all daemons start automatically. Some of them source files from /etc/default, with an "off" setting per default. And there are plenty of daemons for which it makes sense to start automatically (eg, installing pulseaudio and expecting it to work without having to figure out how to configure it is not an unreasonable expectation). So maybe:

\- more daemons (eg, puppet) ought to be "off" per default when it doesn't make sense

\- apt-get should provide a switch to prevent newly-added daemons from starting, which could be used by provisioning systems

But saying that "daemons should never start at install" is silly.

<comment><USER10> "daemons without sane defaults should never start at install"

It's silly that certain daemons check for a default settings file to decide if an execution is permitted rather than skipping that logic and defaulting the service off until either user intervention provides sane operating defaults, or the defaults are known to be sane otherwise.

I agree that a switch should be included with the package managers, but I also believe that the package managers should look for a switch from the package maintainers as well.

"areDefaultsSane = 0" should require user intervention to start after install and would be intended for things like insecure network daemons or daemons that control thermals/power/otherwiseImportantThings, whereas things that flagged "areDefaultsSane" as true would be started without intervention, this being intended for things like pulse.

things like thinkfan (a cpu/fan manager for linux) include "run_at_start = False" in the /etc/default file and things like that, but it feels woefully inadequate to rely on the package itself to check for something potentially mean when the environment could handle it in a standardized way, perhaps within whatever metadata is included in the deb file rather than the packages' included /etc/default/? (disclaimer: I don't know how deb files are put together)

<comment><USER11> A file in /etc/default _is_ a standardized way. It's part of the Debian Policy.

Putting it in the metadata wouldn't help, since the point is to be mutable, that is, to allow the admin to switch the default to "run on startup".

</comment></comment></comment><comment> dale-cooper I think a saner default would be to not start daemons on install. It's one of the reasons CentOS has grown on me.

The biggest annoyance is the lack of consistency. Some daemons start on install, others do not. Some use an /etc/default file to control it, others do not.

<comment><USER4> The /etc/default/<daemon> configuration file comes from upstream, and is not created by the package maintainer.

</comment></comment><comment><USER12> This is one thing that has always annoyed me about debian. Nice to see there is a solution.

I rather prefer the /etc/rc.conf approach of BSD systems though.

<comment><USER13> It's actually why I left Debian for another distribution... I think that it may have also had a bad habit of overwriting /boot/grub/menu.lst every time that program was updated. That could have been Ubuntu, though. It was a dual- booter's nightmare! I had to boot from a live cd and fix way too often.

<comment><USER14> I think your menu.lst problem is neither Debian nor Ubuntu, but a change in management of that file by grub itself. Starting from grub 2.0 /boot/grub/menu.lst gets created _from scratch_ on every update of grup, kernel or init.rd, using the parameters given in /etc/grub.d/ (in Debian). If you want to dual boot to another os, you have to place your commands there, and they'll find their way into menu.lst automatically on every kernel update.

That bit me, too, btw :)

</comment></comment></comment><comment><USER15> Would this be a good fit for preventing Postgres from starting on Ubuntu? In the past with ansible I've had to install it, stop it, move the DB files to the non-default location of my choice, change the configs, and start it up again. Would have been easier to skip a couple of those steps.

<comment><USER16> Unless you were happy with the default configuration, in which case it is much easier not having to start the thing manually.

<comment><USER17> What's the current Ubuntu equivalent of services.msc ?

</comment></comment></comment><comment><USER18> This mechanism has existed for a long time. It's a shame that puppet and chef do not use it by default.

</comment><comment><USER19> easiest way i've found is: RUNLEVEL=1 apt-get install ...

<comment><USER20> Nice! You need more upvotes! I think `policy-rc.d` is a hack.

</comment></comment><comment><USER21> I've been bitten myself by this during my Chef days. Good to see a solution!</comment>


Ask HN: Should I open a business entity to be paid by US company? - Just-a-Canadian I'm a 24 y/o Canadian working on contract with an organization in Ontario making decent money (~80k gross YTD). An opportunity has arose to work for an entity in the state of Kansas doing custom development on a similar contract scenario. The question came up of will I be paid directly (as an individual) or do I have (will I open) a business entity to handle the payments. I'm unsure of the best choice in this scenario and I'm looking to HN for help. Obviously this is a question for an accountant who knows my situation but this is only a starting point for gathering information to help make my decision, I'm sure someone on HN has been in a similar situation.
Any help/advice/thoughts are greatly appreciated!
Thanks HN. <comment><AUTHOR> Make sure you receive cheques of under $10,000. Give the entity in Kansas a tax form if you get paid in your name or they will source deduct. A company is similar, keep payments under $10,000. Some tips here. [https://www.snowbirds.org/tax-forms](https://www.snowbirds.org/tax-forms)

and scan these for pertinent stuff. [https://www.google.ca/search?ei=f5kKXKiOGYaJjwTFh5yACQ&q=US+...](https://www.google.ca/search?ei=f5kKXKiOGYaJjwTFh5yACQ&q=US+tax+deductions+for+remote+work+from+home+in+Canada&oq=US+tax+deductions+for+remote+work+from+home+in+Canada&gs_l=psy- ab.3...6817.22544..22833...0.0..0.219.5155.17j26j3......0....1..gws- wiz.......0j0i71j35i39j0i22i30j33i22i29i30j33i160j33i21.oJFUKIavaQc)</comment>


Three.js/Ammo.js Quake 3 Physics Test - <AUTHOR> http://media.tojicode.com/q3bsp/physics-test.html <comment><USER2> Impressive but the controls really let it down. Moving around made me feel sea sick with the room spinning everywhere. The cursor needs to be fixed to the centre of the screen (as in traditional fps's) and not have some sort of momentum whereby you continue spinning round when you're facing the direction you want.

Aside from that it looks really nice!

<comment><USER3> I think you're missing the point. It's a demo of the strength of WebGL and a milestones towards 3D in the browser.

<comment><USER2> No I get that and like I said I think its really impressive! But, I think that the controls detract from properly delivering the message (and it would be much more enjoyable to use if movement was less fiddly).

<comment><USER4> I completely agree. I'm a game developer, and I'd have a hard time _intentionally designing_ a worse mouse look. Ouch. (I realize that they're not using mouse capture intentionally).

That said, it's a fantastic demonstration of what's possible in the browser. I'm really looking forward to seeing what three.js is like in a year or two, and how that rivals Flash.

</comment></comment></comment></comment><comment><USER5> THREE.PerspectiveCamera( 50, window.innerWidth / window.innerHeight, 1, 20000 );

Why on earth did you use FOV of 50? Default on quake is 90, and in most games.

Also, 95% of the professional players play with fov in range 100 - 130. (I personally play with 130)

For the sake of the demo, i think this needs to be fixed to at least 90 deg. This is like trying to walk trough room looking trough a plastic pipe, you see whats in front of you, but you need way more information to move comfortably.

<comment><USER6> It's a trick used by consoles to increase performance.

<comment><USER7> And because they are typically further away, so the view cone needs to be smaller feel right.

</comment></comment></comment><comment><USER8> It took me a while to figure out what the physics part of this demo was. You have to elevate up a bit (click to move) and then throw boxes using the spacebar. Very nicely done by the way!

</comment><comment><USER9> Use ASWD to move, mouse around to get motion sickness, SPACE to throw a cube around.

</comment><comment><USER10> What's amazing is I do NOT have hardware accelerated video yet Firefox 12 is not even breaking a sweat.

My CPU temps are only a couple degrees higher and it's very smooth.

</comment><comment><USER11> I saw the FPS graph and was about to close it, because I thought there was nothing more happening. Add a "Map loading" indicator or something like that.

<comment><USER12> Yeah Three.js is a bit strange like that. It loads all textures asynchronously but doesn't provide a (built in) way to have any kind of loading indicator, so for a lot of the demos until they are fully loaded you just see a blank screen. The car demos are a great example of this: [http://mrdoob.github.com/three.js/examples/webgl_materials_c...](http://mrdoob.github.com/three.js/examples/webgl_materials_cars.html)

</comment></comment><comment><USER13> Fairly impressive how many boxes you can spawn before it starts to stutter.

</comment><comment><USER14> awesome demo! interesting to see the progress.

one thing that is very noticeable though; no multi-threading! as soon as you start moving the 'cube' stops. my guess is physics updating defers to player movement.

</comment><comment><USER15> Holding down space for a couple of seconds was fun!

</comment><comment><USER16> Fun while it lasted. Flew around a bit, was very impressed, then looked toward a teleporter and froze my whole machine. Presumably a Google or Apple/NVIDIA bug (Chrome 18.0.1025.151 on a mid-2010 MBP with a GeForce GT 330M and fully- updated Lion).

Disinclined to try again since I've got work to do. :P</comment>


Introducing ProtonMail Bridge - <AUTHOR> https://protonmail.com/blog/thunderbird-outlook-encrypted-email/ <comment><USER2> I've been thinking about switching to either FastMail or ProtonMail for a while, and an open-source client solution for Linux would eliminate the only remaining reservations I have (inability to use mutt and running unauditable JS with access to the password) without giving up security.</comment>