Ask HN: [is this] The Weapon of Mass Destruction Nobody Is Talking About - <AUTHOR> https://medium.com/@glenhendrix50/the-weapon-of-mass-destruction-nobody-is-talking-about-4ae37b7e452a <comment><USER2> What are the downsides to incentivizing drug production?</comment>


Ask HN: Fair price - c-smile This is about my Sciter engine ( http://sciter.com )
Sciter has 3 price models for the license: INDIE (3 employees), BUSINESS (20 employees) and ENTERPRISE.
Customer: company producing portable medical devices ( ultrasound scanners with displays, each device is about 5,000 euros or so ). Their stuff is around 100 people.
They want to buy Sciter's INDIE license with the reasoning that they have just 2 programmers.
I am happy that team of just 2 programmers can create as firmware as associated desktop software with the Sciter. But somehow it does not sound fair.
How you would decide what to do in such cases? Sell them INDIE license or insist on at least BUSINESS? <comment><AUTHOR> Enterprise purchasing people are always going to try to get the cheapest license, because that's their job! Just tell them licensing is based on total headcount, not number of programmers.

<comment><USER2> you also may want to update it your site for the future.

</comment></comment><comment><USER3> IMO the pricing page should put the employee information in the pricing boxes; I had to scroll to see anything at all relating to size.

Your licensing is clear (delta the discoverability thing). You explicitly state it's the number of employees, not the number of developers. I don't see how it's even a question.

You have to weigh the potential loss of a single customer, who might move to something like Electron, vs. keeping your pricing model intact.

The idea of offering a first-year discount isn't unreasonable.

<comment> c-smile Problem is that they have sent me a message and I replied that this is about number of employees, not number of programmers, etc.

And they are keep asking for INDIE. Sigh.

<comment><USER3> So, you either say "That's not what it says", or you work a deal.

</comment></comment></comment><comment><USER4> Shouldn't be too surprising they're going to try to pay as little as possible. You should charge what you think that you should charge, especially if you have reason to believe they can afford it.

</comment><comment><USER2> You could give them a discount $1000 off the first year. That way you continue to get $620/yr.

<comment><USER2> but, if there aren't reasonable alternatives or your the cheapest stand your ground.</comment></comment>


Arthur Whitney's 'B' Language - <AUTHOR> http://kparc.com/b/ <comment><USER2> I studied this code for a long time. I have lots of notes, going through everything almost line by line. I would be embarrassed of making them public because I never finished (at some point, I was just rewriting the x64 reference), but if somebody is interested I do not mind sharing.

I would recommend everyone doing C to have a very careful look at this. The code is full of nice tricks and you start appreciating the terse style after a while. I understand why this style is not more commonly used, but I really like it.

<comment><USER3> I wish* exist a simplified implementation of this (or APL) in "normal" looking code.

Array languages are the most "obscure" of all paradigms I have looked into. Even concatenative ones have some few resources about how work.

Also, the community live in a parallel world! So when asked about stuff, redirect me to [https://code.jsoftware.com/wiki/Essays/Incunabulum](https://code.jsoftware.com/wiki/Essays/Incunabulum) or [https://github.com/kevinlawler/kona](https://github.com/kevinlawler/kona) as if it somehow make everything so obvious ...

P.D*: Because I'm building a language that try to draw some ideas from kdb

<comment><USER4> > Array languages are the most "obscure" of all paradigms I have looked into. > Even concatenative ones have some few resources about how work.

Have you tried looking at APL books? There are dozens of books on APL you can find. There are journals and conference proceedings from ACM, IBM, Dyalog, and Vector UK. I started to get into APL more seriously last year and lack of resources is definitely not a problem in my experience, lack of time to read them all is. Also, it's more about thinking of algorithms in terms of matrix and array operations. A lot of the techniques and algorithms can be easily adapted from Matlab.

<comment><USER5> Well there are books like "Mastering Dyalog APL", but they don't help you think in the language. There is the "Finnish APL Idioms" book which helps a bit. APL and J certainly have libraries, but a lot of functions and libraries that are builtin to most languages are omitted from APL as you can replicate with 3 characters. That's where knowing idioms helps. I am just a novice, but really enjoy writing APL & J. Aaron Hsu has been on a couple of APL related posts on HN that I have linked to multiple times. He is a scheme guru that switched to APL a few years back and wrote the Co-Dfns parallel GPU compiler for Dyalog APL. He has some enlightening talks on YouTube as well. I mention him here as his APL code is extremely terse and similar to Whitney's C, and he did an excellent job defending it in the HN post which changed the way I look at code. Second, as a University TA, he's taught multiple courses on APL as a first programming language and has talked about writing a book that tries to teach how to THINK in APL and not just this is how you transpose the matrix using this symbol...etc. My problem is that I know what the symbols do, but don't know how to switch from imperative/OO thinking to how to think in terms of array primitives (inverse, transpose, sort, outer product...etc).

<comment><USER6> "J for C programmers" is, in my opinion, an excellent resource for how to think in array-oriented style. [http://www.jsoftware.com/help/jforc/contents.htm](http://www.jsoftware.com/help/jforc/contents.htm)

<comment><USER5> I've flipped through it before, but didn't remember it being very enlightening (note that I didn't read the full thing and do all the excercises). I'll have to give it another shot. Thanks for the tip!

</comment></comment></comment></comment></comment></comment><comment><USER7> For those interested but needing a little help deciphering Thomas Lackner has a handy repo:

[https://github.com/tlack/b-decoded](https://github.com/tlack/b-decoded)

</comment><comment><USER8> Q is one most important language here at BitMEX. Complicated or not, it's on KDB that all our trades happen, up to $8B in 24H volume last summer - it's highly efficient at its task, and never made us or any of our customers, loose a single Satoshi.

<comment><USER9> With all due respect, requests to BitMEX during times of high load have >50% probability of hitting a 503 Service Unavailable error. Meanwhile, competitors with similar volume/activity don't have this problem.

<comment><USER10> They've done studies, you know. They say 60% of the time, it works every time.

</comment></comment></comment><comment><USER11> Whitney's code is what I expect code to look like post-singularity when hyper intelligent AI program themselves!

<comment><USER12> +1 thanks

You got me thinking how AlphaGo reinvented the style of Go for human players. A real AI taught one of our programming languages would code in a way that would be alien to us.

Whitney's code is fascinating. I thought that someone might use a good C IDE to rename symbols to longer human readable names, but, that would harm the terseness of the code.

</comment></comment><comment><USER13> Doesn't look like B. I'm a bit irritated.

[https://en.wikipedia.org/wiki/B_(programming_language)](https://en.wikipedia.org/wiki/B_\(programming_language\))

</comment><comment><USER14> Whitney is so fascinating to me. His code is simultaneously awe-inspiring and horrifying. It's like he struck a Faustian bargain to gain programming powers beyond the ken of mere mortals, and is now cursed to write transcendently beautiful code that manifests as unintelligible gibberish to everyone else.

<comment><USER15> Everything surrounding APL gives me that feeling, but then I remind myself that, just like Chinese (which appears just as baffling to those who haven't learned the language but have experience with Latin family ones only), there's a not-insignificant number of people who use the language every day and are highly productive at it.

I like terse code and my style is closer to the early UNIX/K&R, yet I've noticed a lot of people already find that too terse; the "normal" style these days seems to be gradually getting more and more verbose (look at typical C# or Java, for example.)

IMHO the readability argument in favour of verboseness is a bit of a misnomer --- you can easily "understand" a file full of extremely verbosely named functions all consisting of a single line, but that doesn't help at all with seeing the big picture. Judging by the amount of file-flipping and stack- jumping when I have to debug a project in that style, it probably hinders it.

On the other hand, this is "code with a learning curve". You can't glance at it and understand immediately, but once you do take the time to read it carefully, you can understand more of the whole than if it was written in a more verbose style.

<comment><USER16> My sense is that, once you get to a certain size of project, it becomes both impossible and undesirable for everyone in the project to be able to keep the whole thing in their head. And that this boundary is something of an event horizon in terms of what's desirable in a coding style - up becomes down and down becomes up.

There's also a lot of code that's so tightly coupled to some business domain that it's natural to write it in the language of the business. That way you don't have to maintain separate mental models and translate between them.

</comment></comment></comment><comment><USER4> I think a good introduction to this style of coding is the first "proof of concept" prototype interpreter for a small subset of J, also written by Whitney:

[https://code.jsoftware.com/wiki/Essays/Incunabulum](https://code.jsoftware.com/wiki/Essays/Incunabulum)

Once I realized it was K&R C, I thought it was pretty straightforward.

<comment><USER17> I ran it through gcc -E and clang-format.

[https://pastebin.com/21qiRDi5](https://pastebin.com/21qiRDi5)

<comment><USER4> And not surprisingly that makes it less readable. It is a lot harder to have one-character names when you need to scroll across many pages to look up what they mean. So the more code you have, the longer code you need. As Eric Evans points out, naming things in computer code is difficult and important; wrong names can be misleading. This style avoids the problem by avoiding names.

</comment></comment></comment><comment><USER18> This was helpful to me: [https://en.wikipedia.org/wiki/K_(programming_language)](https://en.wikipedia.org/wiki/K_\(programming_language\))

</comment><comment><USER19> This is from 2015. I really wish something more from Whitney/kparc would materialize.

Whitney/kparc previously covered on HN:

[https://news.ycombinator.com/from?site=kparc.com](https://news.ycombinator.com/from?site=kparc.com)

<comment><USER20> He just released a new product a few weeks ago: [http://shakti.com](http://shakti.com)

Downloadable now: [https://www.reddit.com/r/apljk/comments/b1l5hi/shakti_trial_...](https://www.reddit.com/r/apljk/comments/b1l5hi/shakti_trial_via_anaconda/)

Didn't get much attention on HN: [https://news.ycombinator.com/item?id=19326007](https://news.ycombinator.com/item?id=19326007)

<comment><USER21> It got attention here: [https://news.ycombinator.com/item?id=19418570](https://news.ycombinator.com/item?id=19418570).

</comment></comment></comment><comment><USER22> Well, at least there are comments, right?

<comment><USER2>
        // :+-*% ^&|<=>  x64 JJ Jj o2 cc tst RET cll psh pop acdbsbsd89..  o[m[s|d]] c3 eb+1 e8+4 e9+4 [f2/66/4*][0f] 5* 7*+1 b*+4 0f8*+4  03 23 2b 3b (6b 83) 89 8b ..

</comment></comment><comment><USER23> [https://gitlab.com/k7db/k](https://gitlab.com/k7db/k)

Wasn't this public?

[https://duckduckgo.com/lite/?q=https://gitlab.com/k7db](https://duckduckgo.com/lite/?q=https://gitlab.com/k7db)

Reference: [https://cs.nyu.edu/cs/faculty/shasha/papers/tutorial](https://cs.nyu.edu/cs/faculty/shasha/papers/tutorial)

<comment><USER24> Binaries can now be obtained from Anaconda: [https://anaconda.org/shaktidb/shakti](https://anaconda.org/shaktidb/shakti)

Not sure what was on gitlab, I assume not source?

<comment><USER23> The install for Anaconda is over 500MB.

If it is anything like k, the "shakti" binary is probably small, maybe under 260KB.

Is there a way to download just the shakti binary?

What are the restrictions on the trial version of shakti?

Is it time-limited (e.g., 30 days)?

Does it need an internet connection to be able to phone home? (I think FD/Kx started doing this with their 64bit trial.)

The backstory for all this is that Whitney sold his remaining interest in Kx around July of last year for around 53 million.

Quick US trademark search does not show any filings for a "shakti" mark that covers computer software.

<comment><USER25> Just download it 'manually' [https://anaconda.org/shaktidb/shakti/files](https://anaconda.org/shaktidb/shakti/files) and tar -xf

bin/k is 185K

<comment><USER23> Thank you! Exactly what I was looking for. Even give us a static binary.

Alas, I am getting "Illegal instruction (core dumped)". Will have to try another kernel.

<comment><USER2> You need avx

<comment><USER23> I guess I need to try a different CPU. Cheers.

</comment></comment></comment></comment></comment></comment></comment><comment><USER26> Why does the makefile need to run $(CC) under sudo?

<comment><USER27> It's writing directly to _/ bin_.

<comment><USER26> Got it. I guess that answers my question but leaves my eyebrow raised.

<comment><USER28> Is that the only thing that makes you raise your eyebrow?

:)

<comment><USER26> If I'm honest, I think it's the most intelligible file in the folder (besides the readme) so its issues were more accessible to me.

</comment></comment></comment></comment></comment><comment><USER29> This code is a horrid abomination. I don't care if this guy is a genius and could single-handedly write the best OS in the history of computing; his code is write-only, unmaintainable garbage. There's nothing elegant or praiseworthy about this at all.

<comment><USER30> In your opinion. I have no issues with it. But it helps if you work a lot with k/j I guess. It is not write only at all; it just feels like it more as it is so terse that if you change something, it will generally affect more % of the code than in other languages. And the readability; again it is so terse that it probably will take you more time to inderstand an A4 of this than an A4 of C#, however, I find it easier to comprehend complex code written like this than the same code spread out over 100s of files with design patterns sprinkled on top. But ymmv; just until you did significant work in an APL, I am not sure you can comment like you did. It is another world.

In short: Like Whitney, I hate scrolling in code. Multiple high res monitors and with bunches of tabs and files open and then scrolling and trying to figure things out with IDE 'jump to implementation', 'find references' etc is just really not very efficient compared to this. In My Humble Opinion.

<comment><USER31> I, too, hate scrolling in code (and almost never used Visual Studio's "jump to X" navigation helpers) but the reality is that each and every non-trivial program we write (which is practically _ALL_ of them) will never come close to fitting on our screens. The real problem is always the limit of our ability to hold the mental model of the code within our mindscape as we operate on the patient. For me, having another abstraction to wade through on the screen is just another murky impediment to my reshaping the model.

As an inveterate simplifier of code and its formatting for clarity, I have gone to only doing a single thing on a single line, even variable declarations [Note I only have personal projects now]. The primary purpose behind this is that such extreme simplification will make it easier to process algorithmically, for both meta-code (i.e. IDEish) work and to narrow the horizontal extent of its format on both paper and screen.

Now that I think about it, it seems that Whitney's perspective might flow from his not using a code-folding editor, where each chunk of code can be collapsed to its header comment that states what it does. Aren't we usually dealing with the higher-level flow of logical chunks instead of the itty-gritty details of each?

</comment></comment></comment><comment><USER32> Did he ever release K OS?

I seen a few bits and pieces from Geocar but never seen a release or download.

</comment><comment><USER33> It says same ops, but it seems some are missing? I see no modulus. Am I reading this right?

</comment><comment><USER23> Where is k.c?

<comment><USER34> Why would you expect a k.c? This is b. There's a b.c.

<comment><USER30> It's referenced in the Makefile.

<comment><USER35> On a possibly unhelpful tangent, I'm expecting it to look something like this: [https://code.jsoftware.com/wiki/Essays/Incunabulum](https://code.jsoftware.com/wiki/Essays/Incunabulum)

<comment><USER36> It sure does: [http://kparc.com/b/b.c](http://kparc.com/b/b.c)

<comment><USER35> I'm so tempted to just respond with "wanker", though I know HN norms don't allow that. Either the code is for human consumption (in which case, fulfil that goal) or you're writing demoscene assembler which displays virtuosity without any positive impact on society.

<comment><USER36> I think the problem is, we intuitively estimate the readability of code based on the space it takes up, when we should take into account the information density.

That code is extremely readable - if you assume it will take just as long to understand as the entirety of the GCC compiler: [https://github.com/gcc- mirror/gcc](https://github.com/gcc-mirror/gcc)

<comment><USER6> Read "A programming language", where APL came from - [https://www.amazon.com/Programming-Language-Kenneth- Iverson/...](https://www.amazon.com/Programming-Language-Kenneth- Iverson/dp/0471430145) \- you might get more understanding why it is the way it is.

It is the mathematical notation, put into, as Dijkstra expressed, "technologies of the past", completed (to be Turing-complete) and made executable.

At least, I think, this is the basic idea.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER37> Programming is not telling the machine what to do. That's the easy part.

What programming is about, and what's hard, is telling _the next programmer_ what the machine does.

This makes the easy part a bit easier, and the hard part much harder, than using C. And I already disliked C to begin with, for similar reasons.

<comment><USER38> Now I think you're right, but there is two strategies which boils down to the following: "you can either make a program that's so complex there is no obvious defect, or you can make a program so simple it's obvious there is no defect."

What it says is that the hard part to make the next programmer understand what the machine does is not reading code, it's code complexity. Training yourself to read terse code is O(1), understanding code is at least O(N) where N is the number of lines of code.

Before you start arguing, _try it_. Try writing code as simple and succinct as possible. You won't go back to anything else because it works. It does make programming simpler and more productive.

<comment><USER28> I did, once, when I was at school. It was great - everything was so fast to type, the program (a somewhat complex game) would fit in on two screens. I almost finished it in a week.

And the I had exams, and did not touch the computer for two weeks. When I came back, I forgot it all. Cx? Dzy? Those names were meaningless.

This was a very importantly lesson - programs must be maintaineable. Unless you want to spend your entire life working on a single piece of software, you want to be able to context switch, and do it quickly.

<comment><USER39> Many people use descriptive variable names to carry semantic information.

APLers use extremely consistent, stereotypical naming conventions which also carry semantic information. Think "Hungarian Notation" except it's just the prefix part. With consistently applied terse names, the same idea will result in the same code. Easier to visually pattern-match.

It's also worth considering that longer names are not necessarily more meaningful. It's pretty common for everyday programmers to use single letters for something like a loop induction variable. Sometimes longer is just... longer. Consider these three semantically identical K definitions:

        a:{x*x}
        b:{[n]n*n}
        c:{[number]number*number}

Is that third version _really_ clearer than the first?

<comment><USER40> Most people have difficulty with the fact that an array expression can very compactly represent some powerful functions. For example,

      (+/*)\:

is matrix multiplication. The following computes the transitive closure of a binary relation (represented as a boolean square matrix):

      {x|x(|/&)\:x}

Its core has a similar "shape" as matrix multiplication:

      (|/&)\:

So in a sense variable names don't matter all that much! To grok this code you have to stop thinking in terms of item at a time operations and start thinking of operations over collection of items. If you know how to write unix shell pipelines you are already somewhat familiar with this paradigm except that a shell doesn't provide most of the more useful features of array languages!

</comment></comment></comment></comment></comment><comment><USER41> Whitney follows the enlightened solution to the NL=\n|\r\n debate, just don't end your lines ever.

<comment><USER42> It is notable that newlines are a relatively new invention anyways in the history of writing. But then again, so is white space.</comment></comment>


Memcached internals, tips & best practices - <AUTHOR> http://www.igvita.com/2008/04/22/mysql-conf-memcached-internals/

<comment><USER2> Thanks for this. I'm investigating Memcached now along with distributable applications across servers</comment>


Packaging can make food more flavorful - <AUTHOR> http://www.newyorker.com/magazine/2015/11/02/accounting-for-taste <comment><USER2> Reminded me of this article: [http://www.nytimes.com/2013/02/24/magazine/the- extraordinary...](http://www.nytimes.com/2013/02/24/magazine/the- extraordinary-science-of-junk-food.html)

This article is fun, but big food companies are gonna use everything they can to get you to enjoy something that costs them less to make (and is potentially worse for you).

</comment><comment><USER3> tldr = taste is psychological and therefore multisensory</comment>


Show HN: My Heroku based Happy Bday Card to my GF - <AUTHOR> http://happybirthday.meghanmcnamara.me

<comment><AUTHOR> I thought maybe some of you guys would appreciate this, or use it as inspiration! I bought my GF a domain for her birthday, but I wanted to make something special as well.. and, since I'm on a ramen startup budget, why not make the only thing I know how? A rails based website!!!!</comment>


Git from the Bottom Up (2009) [pdf] - <AUTHOR> http://ftp.newartisans.com/pub/git.from.bottom.up.pdf <comment><USER2> Web version: [http://jwiegley.github.io/git-from-the-bottom- up/](http://jwiegley.github.io/git-from-the-bottom-up/)

A nice resource in the same vein -- build a bare bones git in javascript: [http://kushagragour.in/blog/2014/01/build-git-learn- git/](http://kushagragour.in/blog/2014/01/build-git-learn-git/)

And finally, Linus's one page explanation of git's central concepts for the initial commit of git: [https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca...](https://github.com/git/git/tree/e83c5163316f89bfbde7d9ab23ca2e25604af290)

<comment><USER3> I have just created EPUB and MOBI versions from the latest commit on the original book's repository (2015-08-03): [https://github.com/johnrezzo/git- from-the-bottom-up-ebook](https://github.com/johnrezzo/git-from-the-bottom-up- ebook)

</comment></comment><comment><USER4> This is the right way to learn Git. I don't know how good this is, but I feel most of the strange unintuitiveness of git went away and was replaced by a feeling of productivity since I understood what happens under git's hood.

<comment><AUTHOR> The big take away for me was the idea of blobs and trees as Hickeyian values and commits as Von Neumann places. [1] If there is one weakness is the article it is ending with _stash_ , which to me seems to be a bit of a feature in search of a workflow more than something that enhances distribution and sharing among a team in so far as the class of problem it addresses seems to result from larger issues of team structure and workflow [if it's worth saving then the whole team should know about it and have access].

It's useful to know about, but placing it at the end makes it seem like a high order bit rather than something for a corner case.

[1]: [http://www.infoq.com/presentations/Value- Values](http://www.infoq.com/presentations/Value-Values)

<comment><USER5> I find stash useful primarily as a place to hold things for a few minutes, and no longer. In particular, I frequently use "git stash", followed by "git pull --rebase", and if all went well, "git stash pop". I could just as easily do "git commit -a -m 'WIP'", "git pull --rebase", and "git reset HEAD^", but I find stash more intuitive.

<comment><AUTHOR> That sort of gets at my point, stash makes sense in a corner of a high disciplined workflow. But the article presents it as approaching "best practice" and as a belt to sport with one's lederhosen. By analogy it's a bit like multiple inheritance in C++, on occasion and for some people it might be just the thing, but it's probably not a good starting assumption at the design phase.

Though again, it's a minor criticism and mostly related to the impression of importance positioning it at the end of the article suggests [i.e. placing the strongest point in paragraph four of the five paragraph essay].

<comment><USER6> > as a belt to sport with one's lederhosen

That sounds to my American ears like the most German thing I've ever heard.

</comment></comment></comment></comment></comment><comment><USER7> Talking about merges in Git always reminds me of this Linus post:

[http://marc.info/?l=linux- kernel&m=139033182525831](http://marc.info/?l=linux-kernel&m=139033182525831)

 _there 's clearly a balance between "octopus merges are fine" and "Christ, that's not an octopus, that's a Cthulhu merge"._

(Also, GitHub's logo is reminiscent of the "octopus merge".)

</comment><comment><USER8> Related, for visual learners, Git for ages 4 and up: [https://www.youtube.com/watch?v=1ffBJ4sVUb4](https://www.youtube.com/watch?v=1ffBJ4sVUb4)

<comment><USER9> this is awesome, thank you!

</comment></comment><comment><USER10> Seems to be down ATM. Archive link: [http://web.archive.org/web/20150906053023/http://ftp.newarti...](http://web.archive.org/web/20150906053023/http://ftp.newartisans.com/pub/git.from.bottom.up.pdf)

</comment><comment><USER11> There's also Git from the Inside Out: [https://codewords.recurse.com/issues/two/git-from-the- inside...](https://codewords.recurse.com/issues/two/git-from-the-inside-out)

*Part of a new publication by Recurse Center/Hacker School

</comment><comment><USER12> Related: [https://git-scm.com/book/en/v1/Git-Internals-Git- Objects](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects) (and other sections in that chapter)

<comment><USER13> This chapter was updated for the 2nd edition:

[https://git-scm.com/book/en/v2/Git-Internals-Git-Objects](https://git- scm.com/book/en/v2/Git-Internals-Git-Objects)

</comment></comment><comment><USER14> My favourite introduction to Git internals is by Scott Chacon:

[https://github.com/pluralsight/git-internals- pdf/releases](https://github.com/pluralsight/git-internals-pdf/releases)

</comment><comment><USER15> This is the document got me really understand Git. It's really helpful to know the internals as the surface of Git is too many to comprehend on their own.

</comment><comment><USER16> This was the first explanation of Git that made sense to me.

</comment><comment><USER17> What tool was used to create this document?

<comment><USER18> Could be pain Tex, but I doubt it. Could be troff, but because it was easily converted to html, I doubt that to. Best bet is Markdown + some typesetter.

</comment></comment><comment><USER19> Old but gold. This is how I learned git, and I think it's the only proper way.

Actually I did `git help tutorial` first to get started.</comment>


The nature of water: unveiling the most detailed view of water on Earth - <AUTHOR> https://blog.google/topics/google-europe/nature-water-unveiling-most-detailed-view-water-earth/ <comment><USER2> Don't you love those days when you want to cry as someone copies what you've done on a larger data set and gets it into Nature.

[http://www.sciencedirect.com/science/article/pii/S0034425715...](http://www.sciencedirect.com/science/article/pii/S0034425715301929)

[http://www.ga.gov.au/interactive- maps/#/theme/water/map/wofs](http://www.ga.gov.au/interactive- maps/#/theme/water/map/wofs)

<comment><USER3> Frustrating, but your work still counts and matters.

<comment><USER2> Thanks.

I just do the work because it's fun, that's the rewarding part for me. I just like to wander around working on random "mathy" pure and applied problems in a variety of areas...

</comment></comment></comment><comment><USER4> I wonder if anyone has done the same kind of analysis on groundwater / well- water reservoirs.

I wish there was a simple way to combine different sources of map data to produce new visualizations. This is the 21st century, maps should be as easy to make as memes! Are there standard formats? Where would one even begin?

<comment><USER5> How would they? That's the kind of thing that does not show up on satellite images, and would need to be collected / collated through manual measurements. I'm sure the data is there, at least in some parts of the world, but it's not as accessible as satellite images, since it requires access to local / country-specific data.

</comment></comment><comment><USER6> Very interesting data set! I'll have to download it when I get back to my computer and take a look.

One thing that bothers me is that the language used seems to be somewhat alarmist about loss of water, when the real problem is much more complex and the surface area of water is actually growing. Maybe it's a nitpick but I think alarmist language can tend to prevent people from taking an honest look at important data.

Side note, I've been looking for a map of the world's fresh water that I can plug into Google Earth. This may contain that data, I'll have to check, but is anyone aware of related datasets that I could use to find things like bodies of fresh water in deciduous forests, for example?</comment>


Ask PG: Accessing HN via Tor - <AUTHOR>

It seems that Hacker News is inaccessible via Tor.  Is this because of manual blocking of exit nodes, and if so can this blocking be lifted (at least for read access)? <comment><USER2> [https://news.ycombinator.com/item?id=5864439](https://news.ycombinator.com/item?id=5864439)

<comment><USER3> Confirmed. The IP bans are mostly automated. If an exit node is blocked, it's because someone else ruined the fun for everyone.

<comment><USER4> I hope that this doesn't also mean that running a Tor exit node puts you at risk of getting banned (from HN or elsewhere). I think the people running exit nodes are providing an essential community service, and I would hate to think this might be how they're thanked.

<comment><USER5> Wikipedia bans your IP from editing if you run a Tor node. It definitely biases their content and discourages operation of Tor nodes.

<comment><USER6> Wikipedia bans Tor editors because editors who use Tor are overwhelmingly doing so to avoid bans. I'm sure there are a subset of Tor editors who are good-faith contributors, but, just like with HN, a bad-faith majority has ruined it for them.

</comment></comment></comment></comment></comment><comment><USER7> I just tried this myself to verify that I couldn't reach it through Tor and I couldn't either. I agree that there should be at least read access for people browsing with Tor.

Also, I would be curious to hear from PG (or others) what went into the decision making process to make this site (or others) not accessible from Tor.

<comment><USER8> Unfortunately easily accessible proxies, like Tor, are very frequently abused by spammers and other script kiddies. It's easy to write, or use, a bot that takes in a long list of proxies (or uses the Tor daemon API to frequently acquire a new circuit) and spams a website with hundreds or thousands of submissions per minute.

</comment></comment><comment><USER9> I'd hesitate to use any of your existing regular-internet accounts over Tor. Start with a fresh browser.

</comment><comment><USER10> Part of HN's deal with the NSA ;-)</comment>


My experience at a coworking space in Osaka, Japan - <AUTHOR> http://www.whosbacon.com/welcome-to-osaka-n <comment><USER3> My favorite part about the coworking movement in Japan -- and I don't get much exposure to it since it hasn't arrived in force in Ogaki yet -- is that it provides a community and social reinforcement which says "Just because you're not a salaryman doesn't mean you're a homeless vagabond!" to participants.

Japanese young folks, in particular, can really use that message. It is not a particularly popular message in Japan, which is largely organized for the benefit of salarymen and supports a few variants like "stay-at-home mothers" and "retired people" but institutionally is almost entirely unaware that there are exotic options like "freelancing."

I generally work out of cafes in Ogaki when not working from my kitchen table, and have been told _three times_ by well-meaning cafe owners "Don't worry kiddo! If you hang in there I'm sure one of these days you'll find a job! Just keep sending those emails!"

<comment><AUTHOR> I'm impressed by how many people are working on the side. It's not unusual to see 5, 10 people coming in around 6, 7 pm to work on their ventures or open sourced projects. I never got to ask, but I assume they have other day jobs or duties to fulfill.

<comment><USER4> Well, doesn't the majority of us have some kind of side-projects? If I had a good coworking space nearby, I'd head there after work too, instead of trying to anything at home.

</comment></comment></comment><comment><USER5> Osaka, hisashiburi desu!

Thanks for sharing. I really couldn't tell if this was in Osaka until I saw the pictures of takoyaki being shared. Yup. Only in Osaka!

My favorite co-working space in Japan is Super-Deluxe [1] coworking in the daytime, bar / event space at night. Wish there were more funky spaces like that in the world!

[1] [https://www.super-deluxe.com/2014/04/](https://www.super- deluxe.com/2014/04/)

</comment><comment><USER6> I had a little experience last Nov/Dec coding at/from 2 coworking spaces in Tokyo

One, co-ba ([http://tsukuruba.com/co-ba/](http://tsukuruba.com/co-ba/)) I picked mostly because it was closest to where I was staying. They have 2 floors, one of which is open 24 hours. When you sign up full time they give you an RFID card that lets you into the 24hr floor anytime.

On the non-24hr floor they often organize events that start at 7pm. They also organize many social outings which I find a huge plus.

Also, as a programmer they invited me to be part of the "programming section". I'm not sure what all their activities are but one I enjoyed more than I thought I would. That was, every Friday at 4:30pm, if you wanted to you could participate in a coding exercise.

Someone would propose a very simple programming problem like "write code to draw a multiplication table", something that could be done in a few minutes. Their goal was 30 mins or less. We'd then go over everyone's solutions. I got exposure to languages I hadn't had experience with. I got exposure to solutions that hadn't occurred to me. They'd even ask style questions like "why you name your variables like that" which brought up interesting discussion as well.

Now that has me wondering if USA based co-working spaces are similar.

I also helped at some friends who worked from one of the [http://co- lab.jp/](http://co-lab.jp/)

Both of them had rented permanent desks. I just sat at an open table when helping them out. I don't really know what that place was like other than it exists. It was much bigger than co-ba.

Not a co-working space but there's also the Pico Pico Cafe in Kichijoji ([http://www.picopicocafe.com/](http://www.picopicocafe.com/)). It's run by the guy making Voxatron ([http://www.lexaloffle.com/voxatron.php](http://www.lexaloffle.com/voxatron.php)). It's effectively his office. He opens it 3 days a week as a cafe and works on his projects those days as well.

</comment><comment><USER7> Anyone know if they hold any English/Dual Language events? I'm working for a Biotech startup in Osaka (www.quantumbiosystems.com) and am interested in getting to know the local startup community.

Actually, we're kind of interested in starting a hacker space in Osaka too as a bunch of people we've hired are from the Hacker/Maker/Open hardware community (Bunnie's novena is our embedded compute). If anyone knows of anyone else who might be interested in working on that please let me know (address is profile).

<comment><AUTHOR> There's a HN Kansai that's pretty tech and startup oriented. They meet once a month, rotating between Kobe, Kyoto, Osaka. Most of their events are in English and attendees cover both Natives and Expats. Worth exploring. [http://hnkansai.org/](http://hnkansai.org/)

</comment></comment><comment><USER8> Looking at the photos, I started to think, is there any young developers who use PCs instead of Mac's, any photo of a coworking space I saw lately shows that everybody is using Mac.

<comment><USER9> Macs just work. I was an Ubuntu user for over 10 years, first on an older Thinkpad (rock solid but eventually slow), later on a decent HP (with a little hardware problem).

I bought Airs for my wife and daughter. I would help them with something, then return to my machine, and feel a little more frustrated each time.

Airs have better hardware, better software, a better user experience, and are rock solid (if you don't hit them too hard). They don't get in your way, they just do their thing.

Macs are no-fuss machines that allow you to do your work without requiring you to babysit the machine. I'm no fanboi, I just recognize quality when I use it.

<comment><USER10> > I was an Ubuntu user for over 10 years

That's impossible. The first Ubuntu release was on October 20th, 2004 - <USER2> than 10 years ago.

<comment><USER9> You are correct: I installed Ubuntu on my first laptop, which I bought in 2001 - I forgot that it ran XP for a time, until I finally got pissed at how I could not access my data the way I wanted to. (Thanks for forcing me to dredge back up those memories, thank you very much.)

I cannot remember if I started with Breezy or Dapper, but it was one or the other.

So a long time then: From B or D to September 2013, when my Air arrived.

</comment></comment></comment></comment><comment><USER11> Thinking about Japanese culture ... I would think coworking spaces are spectacularly more successful than in America. Even misfits in Japan feels a strong need to bond with their affinity groups, whereas misfits in America can take it as a point of pride.

</comment><comment><USER12> This sounds pretty awesome, does anyone know of a co-working place similar in Tokyo?

</comment><comment><USER13> "My weapon of choice is Python." Cool way to put it.

<comment><USER13> Don't know why my benign comment deserved a down vote. Just thought I'd say something positive.</comment></comment>


A Review of the Surface in a Microsoft Store by Marco Arment - - <AUTHOR> http://digital-possibilities.com/blog/a-review-of-the-surface-in-a-microsoft-store-by-marco-arment/ <comment><USER2> Original, full article: <http://www.marco.org/2012/10/26/an-alternate- universe></comment>


OpenCola Soft Drink - <AUTHOR> http://www.colawp.com/colas/400/cola467_recipe.html <comment><USER2> I made a batch of OpenCola a few years back, I actually prefer the taste in comparison to that of Coca Cola. Brew up the syrup and get yourself a Soda Stream or any other carbonation device and you've got a tasty cola you made yourself.

Word of warning, making this stuff is SUPER expensive compared to just buying some Coke from the shop. All of those oils are not only hard to find (especially in Australia), but can be quite pricey when you total them up. Neroli oil is expensive in itself (about $25 AUD for 10mls of the stuff) follow the recipe right down to every warning (you could easily end up poisoning yourself if you make it incorrectly). Remember to get food grade, 100% undiluted oils or you could make yourself really sick or as I said, poison yourself.

I skipped the caffeine in mine and it seemed fine without it, but probably would taste better with it. I did notice something was missing, not sure if that's due to the lack of caffeine though I skipped primarily because the dangers of caffeine and the fact small amounts can actually kill you.

Don't go making this if you're expecting a 1:1 Coke copy. This has its own unique taste, slightly syrupy. I think the recipe definitely needs more work, but considering it's a free and open sourced recipe it's pretty good as it is.

<comment><USER3> > _Word of warning, making this stuff is SUPER expensive compared_

Not really. Sure, 5ml of neroli oil costs about $40. But that is enough for 20 batches of 7X formula.

I haven't calculated exactly, but a batch should yield about 40-60 liters of cola. The other ingredients are maybe around $40 in total. So 800-1200 liters of soda for maybe $80-90. That's pretty cheap.

As for oils being hard to find: That must be Australia. I ordered all of mine from G. Baldwin & Co. [1] in the UK. There are plenty of good sources in the US, too.

[1] <http://www.baldwins.co.uk/>

</comment></comment><comment><USER3> I love this recipe. I make it now and then so that I have a glass of syrup in the fridge that I can mix with carbonated water from a cartridge system.

(For a while we had the cola on tap in the office via a carbonator, alongside a colleague's home-brewed beer. It was very popular.)

I easily prefer this recipe to commercial Coca-Cola. On the one hand, it does lack a certain something that Coca-Cola has, and I attribute this mainly to the fact that I don't use any coca-leaf extract; you can get this online, and it ultimately comes from the same source as Coca-Cola uses, but I haven't bothered.

But on the other hand, it just tastes _better_. Fresher and more vibrant. Very different from off-the-shelf cola syrups such as SodaStream's. It's closer to a "indie" cola like Fentimans or Boylan's. My hypothesis is that Coca-Cola's current "natural aroma" ingredients are no longer natural essential oils, but synthesized versions of these, although I have not been able to confirm this.

<comment><USER4> It's illegal to possess cocoa leaves and extracts of cocoa leaves in the United States of America without a DEA license or prescription. [1]

[1] <http://www.erowid.org/plants/coca/coca_law.shtml>

<comment><USER3> I am talking about denatured ("decocanized") leaves and leaf extract. In the US, these are ultimately from Stepan, who is the sole American company authorized by the DEA to import and process cocoa leaves. This is coincidentally the company that Coca-Cola buys their denatured coca leaves from.

[1] <http://en.wikipedia.org/wiki/Stepan_Company>

<comment><USER4> Thanks for the clarification. I've Googled around and can't find any decocanized sources online. Seems like it would be an interesting business opportunity for someone in South America. I bet Coca-Cola would find some way to put a lot of pressure on you, though.

<comment><USER3> There is this [1] source. Apparently it's intended for weight-control supplements [2]. Unfortunately, it's $1,000 per kilogram, with a minimum order of 5 kg.

It's possible that coca tea would work. [3]

[1] <http://www.macoca.com/>

[2] [http://www.nutraingredients- usa.com/Suppliers2/Decocainized-...](http://www.nutraingredients- usa.com/Suppliers2/Decocainized-coca-leaf-extract-debuts-for-weight- management-sector)

[3] [http://www.amazon.com/s?url=search-alias%3Daps&field- key...](http://www.amazon.com/s?url=search-alias%3Daps&field- keywords=coca+tea)

[4] Hacker News really needs to get Markdown link syntax.

</comment></comment></comment></comment></comment><comment><USER5> The author mentions the soda stream carbonation doesn't really produce the desired effect. A tangentially related question: How does commercial carbonation work? Is it just keeping the liquid under pressure for a while with CO2 present? Is it done on a per bottle / can basis, or is it done in big vats and then sealed quickly afterwards?

<comment><USER3> Commercial carbonation is simply done by pressurizing water together with CO2. It's done in big vats, and the bottles are filled and immediately sealed.

For a while we had our cola on tap in the office (and we'll probably do it again). We used the same carbonator system we use for the beer tap, which is basically a CO2 tank hooked up to the source liquid, like this [1], and which injects the CO2 into the water on demand. It's the same principle used in soda fountains. It doesn't scale to real bottling operations, though.

As for the article, I disagree that "the soda stream carbonation doesn't really produce the desired effect". I have an off-the-shelf carbonation system that's similar to SodaStream, and it works really well. But these units vary a lot in carbonation quality, so it may be that the author of the article did not have a good enough carbonator. The important factor is the size of the bubbles; smaller bubbles means they last longer and provide a "fuller" effervescence.

[1] [http://www.popsci.com/diy/article/2012-06/how-make-your- own-...](http://www.popsci.com/diy/article/2012-06/how-make-your-own-home- carbonation-system)

</comment></comment><comment><USER6> If neroli oil is so expensive, why add it at all? There are so many different oils in it, is a single one of them that important for the whole taste?

<comment><USER7> This stuff is super tricky. I tried experimenting around, e.g. doubling the amount of orange oil to make it more organge'y tasting. But it had in my opinion very little impact on the overall taste. It is really hard to get that stuff right. If you have a few $ to spare give it a try.

It is fun, but very very time consuming because you need to stretch ~10ml into 7gallons of water until you can know if you are on the right track.

<comment><USER3> Personally, my only change to the recipe was to subtract 0.25ml of cinnamon oil, because otherwise the cinnamon is somewhat dominant.

I have also experimented with adding vanillin, which I believe commercial Coca-Cola contains, but which is curiously absent from the OpenCola recipe. It's great, though you end up pretty much with Vanilla Coke.

As for those 7 gallons: If you want to experiment you can scale down the formula/syrup quite a bit to avoid that problem. Just add a drop or two of formula to a certain amount of water, and then add the same weight of sugar (eg., 100ml water = 100g sugar), and then continuing adding another drop of formula until the syrup balance is right. The citric acid and caramel colour isn't needed for taste experimentation. Now you can either mix some syrup with carbonated water to taste the mix, or you can just taste the syrup directly. (I bet a real flavourist with a sensitive palate will be able to just mix the formula with some still water and taste that without any sugar, though.)

The real problem is that you have to properly emulsify the formula when changing the balance of ingredients. But you can make the process easier by doing a base emulsion and using that to branch off of. For example, if you want to see how it tastes with more orange and less neroli, make a base formula with everything in place except no neroli, then pour off some of the formula, add a bit of orange, re-emulsify, and then make a small syrup batch from that. Time-consuming, sure, but doable.

<comment><USER8> 100g of sugar for 100ml of water? that would be way too sweet... coke for example has only ~40g per 355ml (or about 11g per 100ml)

<comment><USER9> That is to make a syrup concentrate, which you then dilute further.

</comment></comment></comment></comment></comment><comment><USER10> <http://en.wikipedia.org/wiki/OpenCola_(drink)>

</comment><comment><USER11> It looks like these indie cinema folks worked out the GPL recipe. They sell the concentrate through their web store. <http://cubecinema.com/cola/>

</comment><comment><USER12> ~2 kg (!) of sugar to just ~2 liters of water? I know there's a lot of sugar in cola, but that just seems like ... a lot.

After some googling, I'm guessing it's off by an order of magnitude and it should be 0.236 kg of sugar ...

<comment><USER3> The recipe is correct. The concentrated syrup is 50% sugar by weight, but it's mixed 5:1 with carbonated water, so you end up with about 100g of sugar per liter of finished soda, which is pretty much the same as in commercial Coca- Cola.

</comment></comment><comment><USER7> A few month ago I tried brewing this stuff myself. It "kinda" works, but it tastes inmho very different from "regular" Coke. It tastes a bit more along the lines of RedBull Cola.

<comment><USER13> It does have a tinge of "not-cola" about it that's hard to describe. Almost like a carbonated cough syrup vibe to it that's not quite right.

More hacking required!

</comment></comment><comment><USER14> Is it possible to make a powder out of this formula so we only add carbonated water at home?

Easier to transport and store instead of moving millions of gallons of water around the world.

Just an idea for a startup.

RockaCola?

<comment><USER15> You could add the oil mixture to maltodextrin to turn it into a powder until it is hydrated where it will turn back into a slightly sweeter version of the oil mixture. Maltodextrin is really quite cheap. It's not a startup idea though...

</comment></comment><comment><USER16> How does it compare to Red Bull Cola (which some revile; I think it's really nice and different from everything else)?

</comment><comment><USER17> "Free as in beer, not free as in speech."

<https://en.wikipedia.org/wiki/Free_Beer>

<comment><USER18> The rest of the food world would call this a 'recipe', rather than 'open source food'.

</comment></comment><comment><USER19> I can't help thinking it would be a lot cheaper to just drink normal cola.

</comment><comment><USER20> Great, expanding crap-food to the open source world.</comment>


Ask HN: Contracting in Brazil - <AUTHOR>

If a US software engineer would get $150 an hour with 10 years of experience in Java, what would a comparable Brazilian guy get? Any negotiation tips ? Any other tips on IP/licensing, biz culture, etc. would be much appreciated, like should I expect to be able to sell my code to someone else. <comment><USER2> The correct rate is that which the market will bear. I'm a U.S. citizen living in the Philippines but I charge the same rate as I did when I lived in the U.S. There is no reason that I should be charging less because I live in the Philippines.

However, the market rate is higher on the world market than it is in the local market of my location in the Philippines. If I were selling to a local mom and pop shop in the city I'm living in, I couldn't charge much. If I were to sell to a major corporation with an international presence but based in the Philippines, then I could probably charge more than I charge my typical client base. So, the answer to your question depends on your target market. Different markets can bear different rates.

Much more important is the overall value you offer your clients, the demand for your services (of course, great value will likely lead to more clients) and your ability to sell. A developer charging much higher rates than most developers might still provide a better value. The more clients you have demanding your services, the more scarce your time becomes, and that leads to your time being worth more. But the developer whom makes the most money is the one whom can sell and take care of the client. The tech stuff is easy, running a business and taking care of the clients is the hard part.

I do find there are some issues that might get in the way of a developer from the Philippines making as much money as I do as a U.S. citizen working from the same country. Overall the Philippines in many ways has the feel of the U.S. from several decades ago. All of machinery which makes life in the U.S. run so smoothly doesn't run quite as well in developing countries. Businesses here leave much to be desired in areas such as customer service, quality control, technical expertise, etc. The Philippines even has a term called "Filipino time" which means "30 minutes late." When you grow up in a society like this then it might be difficult to anticipate and meet the expectations of clients from developed nations whom might expect more than you are accustomed to giving.

Also, if you are dealing with a world economy still very much dominated by the English language, you should be able to speak English well. Time zone differences might be another issue if you are expected to be available at certain times to certain regions. Some of these factors might lead you to slightly lowering your preferred rates, and you can certainly charge less and still have more disposable income than a developer in a much more expensive area, but the cream of your industry gets cream rates.</comment>


You Are Being Exploited by the Opaque, Algorithm-Driven Economy - <AUTHOR> https://www.fastcompany.com/40447841/you-are-being-exploited-by-the-opaque-algorithm-driven-economy <comment><USER2> Back to the... 1984

<comment><USER2> (for moderators: delete this comment, its posted in wrong place)</comment></comment>


Fedora Release Name process ended - <AUTHOR> https://lists.fedoraproject.org/pipermail/advisory-board/2013-October/012209.html

<comment><USER2> Good. The last handful of release names were moronic, and the number of person-hours wasted debating the merits of the various names in IRC and on mailing lists was staggering.

<comment><USER3> I think it wasn't always bad. It gave personality to projects. But I agree with you that it's time to move on.

</comment></comment><comment><USER4> Fedora naming convention was always a bit strange.

we went from Sulfur, Cambridge, Leonidas and Constantine (examples)

to Beefy Miracle, Spherical Cow... and... Heisenbug..

the previous names seem stronger to me for some reason.

<comment><USER5> No stranger than a very popular distro that uses names from Toy Story for its releases.

<comment><USER6> FWIW, there is at least a "method to the madness" behind the naming of Debian releases. Fedora and Ubuntu, for example, seem to come up with names at random.

<comment><USER7> For Ubuntu, each release uses the next letter of the alphabet. And the names are chosen by Mark Shuttleworth, who writes up an explanation of each one.

The adjectives used also indicate the mission of that particular release--the LTS releases' names have attempted to indicate their relative stability: Dapper, Hardy, Lucid, Precise, and Trusty. Whereas the intermediate releases which debut new ideas and tools have names that indicate their freer status: Edgy, Maverick, Raring, Jaunty, Feisty.

Silly it may be. Pointless? Definitely. But random it is not.

<comment><USER8> I had no idea there was actually "logic" to the naming. Thanks.

Still stupid names, but at least with a goal in mind.

</comment></comment></comment></comment></comment><comment><USER9> Can someone please get me inline with why we have Fedora in comparison to the CentOS community? It seems as if CentOS was more inline with the Redhat commercial enterprise edition. I've been a Mac user for a while, so my Unix has be branded on Darwin vs. others - so this seems like a legit place to get the difference nailed down. Thanks!

<comment><USER10> CentOS is a clone of RHEL - there is work involved in running the build systems, mirrors, de-branding and such. It is intended for those who want to use RHEL - personally, non-profit, etc., who just cannot justify the support licensing of RHEL.

Fedora, on the other hand, is Red Hat's "next generation". Software packages have a change to mature, be soundly tested and stabilify there before being introduced to RHEL, to give those "enterprise" users a fair degree of security on system stability, at the expense of a slow lead time (for example, one of my employers still recommends RHEL 5.x, which is "current", though 6.x is out. RHEL 5.x uses Kernel 2.6).

</comment></comment><comment><USER6> Perhaps Ubuntu will follow suit. They have came up with some really stupid names over the years and, as a non-Ubuntu user, it's impossible to keep track of what actual version "Retarded Rhino" corresponds to.

<comment><USER11> At least the Ubuntu where alphabetical so you knew the the release starting with R was released after the release starting with Q. Apple, Fedora and Debian releases on the other hand are completely random and every time I see something like "Mountain Lion or later" I have to Google release names to find out what it actually means and if I can run it or not.

</comment></comment><comment><USER12> This is coming after Fedora 17 Beefy Miracle and Fedora 18 Spherical Cow.</comment>