A first look at WebAssembly performance - <AUTHOR> http://www.stefankrause.net/wp/?p=405 <comment><USER2> The C vs Firefox results are about the same that I'm seeing in my 8-bit emulator ([http://floooh.github.io/virtualkc/](http://floooh.github.io/virtualkc/)). For the Amstrad CPC (currently the most expensive system) on my 2.8GHz Core i5 MBP I'm seeing about 1.3 to 1.5 ms 'emulator time' per 16.6ms frame for the WASM/asm.js version on FF Nightly, and for the native version (clang -O3) about 1.2 to 1.4ms.

This 'core emulator loop' is pretty much 100% integer code, with a lot of 8- and 16-bit integer bit operations (shifting, masking, ...). No calls into the browser or operating system, and almost no calls into the CRT or C++ stdlib (may be a small memcpy here and there).

The performance differences for 'pure' C code between browser- and native- version are so small now that they are no longer relevant, at least for the use cases I encountered, or rather within the normal performance differences when running the code on a slightly different CPU.

Calling out into HTML5 APIs is a whole different topic though ;)

<comment><USER3> Languages like Java and JavaScript don't let you lay data out in memory directly, nor do they give you much on control over how memory is accessed, so any performance benchmark involving C is entirely superficial.

I can write 2 programs in C, both which iterate over some amount of elements and perform the same calculations on the same amount of data, and have one take 500ms and the other take 8s. It's all a matter of how you lay things out in memory.

<comment><USER4> That's a bold claim; Sure it is theoretically possible, to have two versions of the same C program take either 500ms or 8ms purely due to memory layout.

But I would like to challenge you to actually do it! I.e. same number of calculations, on same amount of data and a factor of 60 run time difference, with only the memory layout as actual difference between the two implementations.

Up for it?

<comment><USER5> I'll take that challenge. Here's how to do it, with a little bit of sneaky interpretation of 'memory layout':

have an algorithm which takes a large struct S and looks at a subset Sf to determine what to do with S, for some value of Sf use all of S, otherwise skip it. (e.g. when distance between 2 particles < threshold, calculate force).

Now have a very low pass-rate for the filter so that total time ~= time taken to read all of Sf. Make Sf a single byte and S >= 64 bytes (page size if you really want to beat it).

And now compare array-of-struct vs struct-of-array ;). You should see ~64x performance difference in the assymptotic case.

AoS will use one byte per cacheline read. SoA will use 64 bytes per cacheline. if you're memory bound this will translate to an almost 64x speed difference. There are other ways to achieve the same effect but that is the gist of getting 64x performance. using 1 byte vs 64. if you want to go really crazy, use a single bit and a bitfield array for the SoA. If you use a bitfield the passing chance doesn't have to be that low.

I happened to have to present on AoS vs SoA today so I have a less extreme benchmark to show the difference (~16x because it filters over 32 bit ints)

[http://imgur.com/a/HuXFR](http://imgur.com/a/HuXFR)

<comment><USER6> So you can write code that is 64x times slower when you specifically optimize for a slowdown. Cool.

Can you run that in web assembly and get the same slowdown. If so most of the same things that allow C/C++ to faster than other languages on systems will also allow them to be faster in the browser.

<comment><USER5> Yeah, this will affect any language that stores structs as POD (plain old data) as long as it has somewhat sensible alignment rules and allocation (i.e. doesn't hide every struct behind a pointer, doesn't align char's to 8 bytes).

</comment></comment></comment></comment></comment></comment><comment><USER7> The way I understand it, WebAssembly is all about the size of the binary and parsing overhead. Or, at a higher level, about enabling a level playing field between more languages than just JavaScript.

Speed improvements from a common runtime and bytecode are certainly welcome, but if they are possible with WebAssembly, they are also be possible with plain JavaScript, and therefore shouldn't be visible in a comparison between the two.

I, for one, hope that WebAssembly will enable, say, Lua as a first class citizen on the web.

<comment><USER8> > Speed improvements from a common runtime and bytecode are certainly welcome, > but if they are possible with WebAssembly, they are also be possible with > plain JavaScript

Nope, a static language will execute faster than a dynamic language, because the runtime knows precisely what type everything is and how much space to allocate. Additionally no faffing around with dictionaries for dynamic types. Currently JS engines will have to figure out the types dynamically at runtime, but even then can't always be sure so have to keep to slower dictionary lookups.

Once we have a static language -> webasm, it should execute an order of a magnitude faster than JS -> webasm.

Edit: Additionally, browsers will finally consume less power, CPU time and memory, because the execution runtime process will be so streamlined.

<comment><USER9> That's not really true, as JS engines will already compile things with the assumption that the types won't change and "bail out" if they do.

So if you can "hint" to the JIT that a variable is an integer, and it will stay an integer, then it will not only "unbox" it and treat it as an integer, it will compile the code very similar to how a static language would.

In asm.js, this is done by using little "tricks" of JS to hint to the compiler that something is (for example) an integer by appending `|0` to it.

So there really shouldn't be any major difference between "static language -> webasm" and "JS -> webasm" if the JS is written with performance in mind.

In practice you'll probably see greater performance from a static language simply because you "can't" violate those rules so there doesn't need to be really any "guarding" or checking, but you aren't looking at anything like a magnitude speed increase here, it'd be incremental in most cases.

<comment><USER10> > That's not really true, as JS engines will already compile things with the > assumption that the types won't change and "bail out" if they do.

Which makes for some great benchmarks but poor real world results.

<comment><USER9> It actually works suprisingly well.

After all, no JS engine out there would really tune their engines to benefit benchmarks at the expense of real-world performance.

Even with all the dynamic ability that something like JS gives you, most devs still create an object to store stuff, then don't change it. That means that an aggressive policy of "compile it as it is, and bail if it changes" ends up working much more often than it doesn't.

And in the cases where it doesn't, falling back to the "compile it dynamically" isn't going to be any slower than if they did that first, so it's basically a free optimization (as long as the compilation doesn't take that long).

</comment></comment></comment></comment></comment><comment><USER11> I think there is no js version implemented which accesses the bodies parameters like this:

x = body.x[body_index]

I expect this should be much faster than accessing them like this:

x = body.[body_index].x

Because the latter requires pointer-from-property calculation for every single values access (which must be somehow optimised)

The former just requires pointer-from-property calculation for every array (not element) involved in the nbody loops, the individual element|values are picked out by array addressing which is inherently much simpler than property access.

I've used this method for nbody physics. I can modify a test to it and push to the repo.

<comment><USER12> That would be great. Just send me a pull request!

<comment><USER11> Well I got it completing and its taking about 35% longer than the 'original' method. I do expect index lookups to be faster than property lookups so believe there must be some inefficiency in my hasty refactoring.

Or there might be an issue with there being only 5 bodies in the test. Im a bit puzzled.

Ill send the code later in the day.

</comment></comment></comment><comment><USER13> Our benchmarks show amazing results... but not in speed. WebAssembly for us is about the size of the binary and the speed of parsing more than the speed of execution... A Javascript JIT with enough execution data can be even better than C in theory.

<comment><USER14> You could feed the profile data back into the C compiler in theory, so in practice, I think the C _could_ always be faster.

<comment><USER15> If you have dynamic data the best optimizations could change, and you can't feed the profile back to the compliler while the program is running. (Well... maybe in theory)

<comment><USER10> The JVM has been capable of this for a while. I think the overhead of profiling and applying optimizations has always been greater than any efficiency gains.

<comment><USER16> _' the overhead of profiling and applying optimizations has always been greater than any efficiency gains.'_

Not necessarily, especially if you explicitly rely on them.

For example in C++ you deliberately have to avoid overusing virtual functions if you don't want the overhead. In Java, virtual functions are the default, and you usually don't care: if you call them a lot (e.g. in a tight loop) JVM will adaptively give you the proper implementation - without per call indirection - or may even inline it.

If you code C++ in Java style then JVM will win - so the overhead of (runtime) profiling and applying optimizations not always greater

<comment><USER17> G++ is able to optimize virtual calls to non-virtual calls in most cases (speculative devirtualization) by adding quick checks into the code (like if(obj->vtable == Class::vtable) Class:virtualMethod(obj);) which the JVM would do as well.

So if G++ is able to tell the code paths leading to the virtual call, it does the same optimization as the JVM.

<comment><USER18> g++ cannot do that across dynamic libraries. It needs to see the source code at compile time.

This is where JIT wins, as it can do that with binary deployed code.

</comment></comment></comment></comment></comment></comment></comment><comment><USER19> Am I the only one that was expecting web assembly to be like 10x JS speeds?

<comment><USER20> Well remember, WebAssembly just a different representation format for the same instruction set, executed by the underlying virtual machine (v8, spidermonkey, etc). So you should expect to see much of a performance difference.

The main benefit of WebAssembly is so that we can write code using our favorite languages (not just javascript!) and compile to a common binary format the browser understands. The objectives of WebAssembly never had anything to do with performance.

<comment><USER21> Are there DOM bindings for languages other than JavaScript or is WebAssembly only for backend/webservices?

<comment><USER22> As far as I understand you can call JS APIs from WebAssembly, which means you use the already available DOM APIs. I don't know exactly what the calling convention from WASM to JS looks like, but I guess it's specified somewhere.

<comment><USER23> There are a few, none of them optimal for DOM manipulation yet because they all involve calling javascript. There is plans to add wasm dom hooks eventually. [https://kripken.github.io/emscripten- site/docs/porting/conne...](https://kripken.github.io/emscripten- site/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html)

</comment></comment></comment></comment></comment><comment><USER24> Just wanted to say thanks for being so thorough in describing the compilation flags, versions, etc.

It's really refreshing :)

You also just may want to s/gcc/clang/, none of the gcc compile commands you are running are using gcc, they are all clang/llvm. Apple just aliased the gcc binary to clang on macs.

</comment><comment><USER25> These performance numbers are amazingly impressive considering we're talking about JavaScript vs. C.

Hopefully the various browser vendors can iron out some of the performance problems here and even things up better.

</comment><comment><USER26> I'm surprised Chrome doesn't manage to be the fasted in any of these tests, considering the focus Google has put on performance and the resources I thought they were devoting to Chrome.

It appears as if they'd come out ahead on average, but not by a definitive margin. Especially surprised by FF which I thought had somewhat dropped the ball (and/or simply been overrun once Google's business objectives aligned with the users' interests).

<comment><USER27> Mozilla has done a great job of keeping up; they created some benchmarks to keep track of how well they're doing:

[https://arewefastyet.com/](https://arewefastyet.com/)

[https://areweslimyet.com/](https://areweslimyet.com/)

</comment></comment><comment><USER28> How the author turned off speedstep on a macbook?

I assume he's using MacOS because of the Safari benchmark.

<comment><USER29> He does talk about the laptop he uses at the end of the post.

>All tests were performed on a 2015 MacBook Pro, 2.5 GHz Intel Core i7, 16 GB 1600 MHz DDR3. For all tests the best of three runs was selected for the result.

<comment><USER28> But how do you disable CPU throttling on an intel macbook to do accurate benchmarks?

<comment><USER12> I didn't. I believe that is's better to run a few times and take the best run. I payed for the turbo mode CPU and I'd like to know the performance on my machine. There's a lot going on my machine, and even more when a browser is running. The only thing (besides running on a clean machine) one can do about it is to measure multiple runs. Three runs are maybe a bit to little for scientific results, but I considered them good enough for a casual benchmark.

<comment><USER30> [http://benchmarksgame.alioth.debian.org/for-programming- lang...](http://benchmarksgame.alioth.debian.org/for-programming-language- researchers.html)

Those charts show 300 runs of Java n-body #3.

</comment></comment></comment></comment></comment><comment><USER31> I really want to like web assembly, but every time I read about it I SMH. We already have a bunch of great runtimes, compilers, and opcodes. I hate to see the effort duplicated yet again. Or maybe I'm missing something obvious?

<comment><USER32> > We already have a bunch of great runtimes, compilers, and opcodes.

I'm confused. Are you suggesting we, for example, use the JVM for this instead? WASM is being designed specifically with the web in mind, and has a lot of design goals which just weren't a concern for other runtimes. See: [http://webassembly.org/docs/high-level- goals/](http://webassembly.org/docs/high-level-goals/)

<comment><USER31> Well not exactly, but I feel like the JVM, LLVM, parrot, CLR, or any one of those that have well defined opcodes could be leveraged instead of producing something entirely new. There's quite a bit of investment in those projects... Does that make more sense what I was trying to say?

<comment><USER33> The reason for not using LLVM bitcode or ASM.js is already covered in detail here [https://github.com/WebAssembly/design/blob/master/FAQ.md](https://github.com/WebAssembly/design/blob/master/FAQ.md)

I am unsure how JVM or CLR are relevant. WebAssembly is not a virtual machine byte code (and neither is LLVM, despite the name). As the name "WebAssembly" suggests, it is like an assembly language level target for "the web" (more precisely, for JavaScript interpreters found in web browsers).

It is true that there is a lot of unfortunate duplication of effort and fracturing of technology happening here, due to historical legacy issues with web browsers. JVM and CLR are indeed highly mature and presumably secure VMs today. If we were to wave a magic wand and rewrite the history of the web browsers, perhaps it would be much better if JavaScript never existed and browsers used an off-the-shelf, standardized VM like JVM or CLR and we wrote web apps in C# or Java (or, at our discretion, F#, etc). This wouldn't solve the problem that WebAssembly is solving (i.e compiling native code, eg C++, for execution in the browser), but then maybe we wouldn't have needed that today if everyone (native and web) had standardized on a single VM target. But that's just not how things turned out, browsers created their own parallel technology stack from scratch so things like WebAssembly need to be created from scratch to work within the constraints that we are stuck with.

<comment><USER34> I wrote more on this above, so I won't repeat myself in this comment, but yes WebAssembly is a "virtual machine byte code". It is literally a bytecode language that doesn't target physical machines. It bears no resemblence to x86 or ARM so it has to be JIT compiled or interpreted.

Saying it doesn't target a VM because it targets "the web" is meaningless.

<comment><USER33> Fair enough. You are correct, WebAssembly is a bytecode for the underlying machinery of current ECMAScript/JavaScript engines. I think you raise a very good question, why did the WebAssembly committee decide to implement their own stack machine bytecode instead of re-using an existing bytecode like JVM or CLI (which, interestingly, is an ECMA standard)? It's troubling. The closest explanation I could find is:

"Why not a fully-general stack machine?

The WebAssembly stack machine is restricted to structured control flow and structured use of the stack. This greatly simplifies one-pass verification, avoiding a fixpoint computation like that of other stack machines such as the Java Virtual Machine (prior to stack maps). This also simplifies compilation and manipulation of WebAssembly code by other tools. Further generalization of the WebAssembly stack machine is planned post-MVP, such as the addition of multiple return values from control flow constructs and function calls." [1]

[1] [http://webassembly.org/docs/rationale/](http://webassembly.org/docs/rationale/)

</comment></comment></comment></comment></comment></comment><comment><USER35> if you compare manually optimized JavaScript with manually optimized webassembly ( which was not available to the OP?), could you expect webassembly to be consistently faster than java on all browsers?</comment>


Announcing the Rally Against Mass Surveillance - <AUTHOR> https://rally.stopwatching.us/announcing-the-rally-against-mass-surveillance/

<comment><USER2> The persons with the power and authority to enact change are precisely the ones who would lose power and authority in the doing. So it will not happen, not by working within the system. Rallies and petitions and the like are wholly useless.</comment>


Japan Keeps This Defunct Train Station Running for Just One Passenger - <AUTHOR> http://www.citylab.com/commute/2016/01/japan-keeps-this-defunct-train-station-running-for-just-one-passenger/423273/ <comment><USER4> Lovely story. Hats off to Japan Railways. I'm also happy that The Atlantic/Citylab decided to publish this story. And thanks 'hudibras for submitting it here!

They say that it's the money that makes the world turn, and love only keeps it together. It would be easy for the Railways to ignore that girl. There's no economical reason to keep that station open. It's a waste of time and resources. And yet, someone decided to make that random act of kindness, for a single passenger.

It's a symbol. It represents the best side of our nature. That even in this big and complex world, full of heavy machines and complicated systems, we're still humans, and we care for one another. That we aren't slaves to the processes we brought into existence.

Random acts of kindness like that are happening every day around us. I think that as a society, we need to pay more attention to them. They bring hope and inspiration, which is infinitely better than yet another outrage.

And that girl, she will have one hell of a story to tell to her future friends.

\--

The article links to a Facebook page with some more photos:

[https://www.facebook.com/cctvnewschina/posts/110978428906239...](https://www.facebook.com/cctvnewschina/posts/1109784289062390)

<comment><USER5> The thing is, they (the headline) say "Japan", but this only happened because it's way out in the countryside where people have a "village mentality" of helping each other out (but the trade off is that everyone sticks their nose in your business). Japan railways itself split into several separate companies upon privatization.

This would never happen in Tokyo. As much as we think of the country as being monolithic (in many ways it is), there are great differences between different regions of the country (much like any country).

Tokyo is a place where a train being 2 minutes late causes ire (and a train conductor once killed himself for a mistake as trivial as this). It's a place where if a person jumps into the train to kill themselves, many will curse under their breaths about being late to work. It's a place where if you faint in the train concourse during the morning rush hour, no one will stop to help you. It's a place where young mothers with strollers are given stinkeye on public transit. If you ask someone (in fluent Japanese) to take a photo for you, you will often be completely ignored. Tokyo is _cold_.

I agree with you that this story represents the good in us all. But Japan is like a black box to those who don't live there. I would caution you against idolizing it on a national level as a result of stories like this.

<comment><USER6> > Tokyo is a place where a train being 2 minutes late causes ire (and a train > conductor once killed himself for a mistake as trivial as this).

The driver going too fast from being late was the cause of a (100+ fatalities) train accident about 10 years ago.

[https://en.m.wikipedia.org/wiki/Amagasaki_rail_crash](https://en.m.wikipedia.org/wiki/Amagasaki_rail_crash)

> It's a place where if a person jumps into the train to kill themselves, many > will curse under their breaths about being late to work.

The rail operator will also send a large bill to the jumpers family.

<comment><USER7> > The rail operator will also send a large bill to the jumpers family.

Isn't this the case in most countries? I suspect they do it to discourage other jumpers, since if you jump you know you're saddling your family with a debt.

As a society we could avoid these things if we provided a legal path to requesting to be euthanised, a legal self-determination on the end of your own life. In my country you can request it, but you must be medically found by multiple doctors to be under unbearable and untreatable pain. If we made such a mechanism more inclusive, we could get rid of jumpers, as well as having an opportunity to turn the ship around for people considering suicide.

<comment><USER8> Unless the jumper is under the age of majority the family are not responsible for the debts of the deceased in any country I know of. Is it different in Japan? See [http://www.nidirect.gov.uk/what-happens-to-debts-when- someon...](http://www.nidirect.gov.uk/what-happens-to-debts-when-someone-dies) for instance.

<comment><USER9> The family isn't, but the estate of the deceased might be.

</comment></comment></comment></comment></comment></comment><comment><USER10> Only girl in the village? They are going to close the line when she graduates. Therefore we can surmise there aren't any other younger girls. So much for having a social life. There are parts of Japan where children just aren't around anymore. Towns are becoming extended retirement homes. That's the truly depressing side of this story.

At least this is happening today, when the few remaining kids in such situations can connect via technology.

<comment><USER5> Generally speaking, the population of Japan is going down and the population of the Greater Tokyo area is going up.

Once youth hits college or working age, they disproportionately head for the capitol.

But then there's a small counter current where younger (say, 30's) are moving back to their original prefectures as they realize that they might be able to afford a better QoL making less money but also paying much less in expenditures.

<comment><USER11> _With the country's record-low birthrate, aging population, and the threat of losing a third of its population by 2060, Japan faces a number of crises..._

It will be interesting to see how this plays out in the next few decades. Many European countries have similar problems with low fertility rates, but Japan has the additional disadvantage of being extremely xenophobic. While other countries may be able to bolster their populations with immigrants and refugees it seems unlikely Japan's culture will allow that.

<comment><USER5> I completely (and unfortunately) agree. This population pattern manifests in so many countries. The United States would be in this situation if not for our immigration inflow. South Korea actually has an even lower birthrate than Japan. China has a smaller population base in its youth vs its middle aged segment as a result of their one child policy [1].

I wonder... will _all_ developed nations engage in a war for productive immigrants in order to prevent a population pyramid based collapse of their economies?

[1] [http://www.indexmundi.com/graphs/population- pyramids/china-p...](http://www.indexmundi.com/graphs/population- pyramids/china-population-pyramid-2014.gif)

<comment><USER4> Count Europe out of it for now. If I'm to believe the things I see and read all the time, most of the EU population is rapidly turning _against_ immigration. It's a huge issue on the continent now, and it causes tensions between people and local governments - the latter are being painted as giving out free aid to immigrants while not being able to care for their own people. Population pyramid is a distant concern, when the commonly held fears are that a) immigrants are trying to "steal our jobs", and b) the whole Europe will get slowly converted to Islam if we keep letting them in.

<comment><USER12> It seems to me that the labour market issues we face would exist regardless of how many immigrants are let in. In the long term jobs are at risk from automation. We have fewer middle income people who can afford or are willing to pay high income tax rates.

<comment><USER4> True - but machines tend to sneak in unnoticed, while immigrants, and for us especially Muslim immigrant, are obvious boogeymen. They are human, they are there on TV and newspapers, you can point your finger at them and say "it's their fault!".

It's yet another topic that lets public avoid having a discussion about real, coming issues.

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Japan keeps the entire island of Hokkaido running for too few people.[1] The population is dropping rapidly. Most infrastructure is funded nationally, and the rest of the country pays for Hokkaido. Partly because it's only about 12 miles from Russia at the closest point, and Japan doesn't want Russia moving in.

[1] [http://www.nippon.com/en/in-depth/a03802/](http://www.nippon.com/en/in- depth/a03802/)

<comment><USER14> I'm Irish and out of interest I looked up the area of Hokkaido to see how it compares to the island of Ireland and they're actually pretty close - <USER2> is 83,453KM2 with a population of 5.5M versus Ireland 84,421KM2 with 6.3M. So it is funny to me when you say "Japan keeps the entire island of Hokkaido running for too few people".

Of course, Irelands population is growing while Hokkaido's is dropping...

</comment></comment><comment><USER15> Well it's not that much different from a school bus that only picks up a single student at a particular bus stop, right?

<comment><USER16> considering the time it takes to decelerate, stop, accelerate, making this stop adds at least a full minute or minute and a half to one way journey.

Everybody who is taking the train during the same leg as her, is essentially chipping in 1 minute of their time to support her transportation.

And I think that's just beautiful.

<comment><USER4> Consider also the _energy_ it takes to do those maneuvers. And that the station needs to be maintained; even though it doesn't seem to be staffed, the cost of keeping it in shape over many years was likely nonzero. I am not a train expert, but I suppose that stations require additional infrastructure - like lights and semaphores - which also needs to be maintained and regularly tested. Then you can start pricing in the opportunity cost of the land that could be sold or put to different use. And the organizational overhead of adjusting schedules to match the girl's lesson plan. It adds up to some considerable costs, of which the company management was surely aware...

...and yet they chose to ignore it. That is indeed just beautiful.

<comment><USER17> They were already paying it though. It wasn't an additional cost they had to make. It was a cost they chose not to cut for a period of 3 years. I agree with you, it is beautiful.

</comment></comment></comment></comment><comment><USER18> >"Why should I not want to die for a country like this when the government is ready to go an extra mile just for me," one commenter wrote on CCTV's Facebook page. "This is the meaning of good governance penetrating right to the grassroot level. Every citizen matters. No Child left behind!"

Ironically, the railway is a private one, i.e. Japan Railways Hokkaido[0] is private corporation, not a government agency. And yet the company executives, and to a lesser extent, the shareholders, okayed this arrangement. I can't imagine this happening anywhere outside of Japan.

There's a similar phenomenon in the UK called "ghost trains"[1] that's only superficially similar. Basically there's a ton of bureaucracy in closing down a line, so instead of actually closing a line, we just run an unscheduled and unannounced "ghost train" through it once a week.

[0] [https://en.wikipedia.org/wiki/Hokkaido_Railway_Company](https://en.wikipedia.org/wiki/Hokkaido_Railway_Company)

[1] [http://www.bbc.com/future/story/20150723-why-britain-has- sec...](http://www.bbc.com/future/story/20150723-why-britain-has-secret-ghost- trains)

<comment><USER19> _Japan Railways Hokkaido[0] is private corporation, not a government agency_

Notionally. In practice, their operations are fairly minutely controlled -- sorry, "guided" \-- by various levels of government, which explains, among many other things, why the JRs continue to operate tons of lines that are loss-making.

<comment><USER20> It's public transportation, it's heavily regulated by national and/or municipal governments in most countries.

</comment></comment></comment><comment><USER21> Heart-warming story but too much praise for the government for my taste.

What are the opportunity costs of not shutting down this platform years ago? And of getting the train delayed by 40s twice a day for who knows how many passengers plus some minor costs like acceleration, meetings to change the schedule etc. Considering all this it would almost certainly be cheaper to provide her with a taxi at the train cost, maybe only to the next train stop. Maybe given the choice of getting a taxi twice a day or getting the compensation in cash, the girl would even have taken the money and moved closer to school.

<comment><USER22> Social equality has value. Other people might be resentful if she were given cash or a taxi. Keeping the station open is a strong signal of support for treating people equally. People who approve of this will have an improved opinion of Japan Railways, and that goodwill has value too.

<comment><USER23> I'm not sure I follow. I understood it that they're keeping the station open solely for her and stopping the train to align with her schedule.

They're not (to my knowledge) doing this for anyone else, so it seems to me like she's being given extra special treatment that has a net negative (albeit small) effect on the other users of the system and the environment.

It made me smile though.

<comment><USER22> Being a high school student, presumably she didn't choose to live there. If the station closes it looks like she's being punished for something that wasn't her fault. It seems unfair/unequal because none of the other riders are being treated that way. The "unfairness" of making the other riders wait is much less salient because they were doing it already and it's only a short wait. Looking it at from a purely utilitarian point of view gives results that conflict with common human intuition (technically you could assign monetary values to "image of fairness", "social harmony", etc. but that's rarely if ever done because it's so difficult). I'm not the only person approving of keeping the station open despite the cost, so I can't be the only person to value these vague/intuitive social values.

<comment><USER23> I wonder if the train company just decided to keep the train running without consulting with the girl's family and proposing other options.

</comment></comment></comment></comment></comment><comment><USER24> That's such a warm story and especially this is from the largest Chinese TV press CCTV.

Being as a Chinese, years ago the news of Japan were always about politics, island disputes, refusing to apologize for WWII etc. It is good to have something positive and nice about the neighbor.

Wish the world would become less biased to any country.

</comment><comment><USER25> Wouldn't it be both cheaper, and friendlier to the environment to hire a person chauffeur for her? This is outrageously inefficient. Public transport only becomes worth it when it achieves relatively high ridership.

<comment><USER5> This station is on an existing, operational line that would run trains on the tracks even if she weren't there (and this is what is going to happen once she graduates).

So the marginal cost of stopping at this station is actually not that large.

<comment><USER25> I was under the impression that it was the line that was underused, not just a stop on the line. I suppose that makes things pretty different, especially since I think Japanese lines tend to go out farther to pick people up in general.

</comment></comment></comment><comment><USER26> Yeah, most developed countries are like that. I remember visiting England in 2010 for my company work and the city buses used to ply even with two passengers on board!

OTOH, in the country where I live (India), private vehicles won't ply unless they are compressed upto 70% of the capacity! That's the BEP where they could make even a meager profit!

</comment><comment><USER27> There is an article saying this romanticized story is a bit too much:

[http://www.straitstimes.com/asia/east-asia/remote- hokkaido-t...](http://www.straitstimes.com/asia/east-asia/remote-hokkaido- train-station-stays-open-for-one-high-school-girl-perhaps-not)

</comment><comment><USER28> This is similar in some parts of the Eastern German countryside, where population is going down and the pragmatic solution for transport is to have buttons in regional trains (like in busses in cities) that you can use to stop at old stations where basically nobody lives anymore.

</comment><comment><USER29> There's a general term for these things: ghost stations ([https://en.wikipedia.org/wiki/Ghost_station](https://en.wikipedia.org/wiki/Ghost_station)).

<comment><USER30> BBC covered a similar situation in Britain. One of the arguments for keeping them running: inactive lines quickly fall in to disrepair (physically or legally/procedurally), which could actually end up costing more, assuming demand is projected to increase and the line would have to be reopened.

[http://www.bbc.com/future/story/20150723-why-britain-has- sec...](http://www.bbc.com/future/story/20150723-why-britain-has-secret-ghost- trains)

<comment><USER31> Also, the cost of actually closing a station is not negligible. From the same article:

 _Closing down a line is cumbersome. There must first be a transport appraisal analysing the effect of a closure on passengers, the environment and the economy. The proposal is submitted to the Department of Transport and at that point its details must be published in the press, six months ahead of the closure. Then comes a 12-week consultation period, during which time anyone is welcome to protest; public hearings are sometimes held, especially if the closure is controversial. Then, finally, the plans are submitted to the Office of Rail and Road, who decide if the line closes.

As a result it often costs less – in terms of time, paperwork and taxpayers' money – to keep a line running at a bare minimum._

</comment></comment></comment><comment><USER32> This story, like many, brings warm feelings to me. I lived in Japan for 5 mo during a student exchange (Kyoto) and I can say, that even though there was at least 3-4 different train lines operated by different companies in Kyoto alone, it was still a joy to use (even though I did complain at why so many train cos on the region from time to time).

It's also a nice change of tone of the eminent doom of Japan written by so many. Like so many countries, Japan has its faults, but it also has a very bright side.

</comment><comment><USER33> This is very nice and part of Japanese culture. People focus on asian cultures as being communal, but part of asian communal thinking is actually great respect for the striving of the lone individual.

The train stops here until she graduates and then the stop will be retired. It's a reasonable decision, even if not an economic one.

</comment><comment><USER34> This story is another example of how mismanaged the Japanese rail system has become. It would be cheaper, and _more environmentally friendly_ , to pick this girl up in a Escalade limousine, provide a tutor to review her lesson plan, and then have the car idle in the parking lot all day.

We can have a conversation about how changing demographics have created this situation. Whether or not the urbanization of Japanese society is a good thing. On the future role of trains in Japan. Why Japanese are giving up on sex and baby making (kinda hard to maintain and justify an infrastructure built for 150 million people when your pop. is shrinking at 0.7% annually).

But this story should not be lauded, as it is a symptom of the sickness of their society today.

</comment><comment><USER6> Japan is exotic enough from a Western perspective that outsiders often have an exaggerated opinion of it, both positive and negative. The next time you see someone gushing about how wonderful Japan is or complaining about how the country never "paid" for WWII or how Japan is doomed because (old people, Fukushima, etc) please try to remember that it is a normal country with human beings living there that is pretty much like anywhere else in the world.

</comment><comment><USER35> if they only want to serve her, it would be much cheaper to have a taxi or a shuttle bus drive for her morning and evening. To me this is another example of Japan's everlasting inefficiencies long after things stop making sense. Just like every company in Japan keeps fax machines at work just because, you know, they have to.

</comment><comment><USER36> Just went to post this and see it has 564pts already - so glad others find this as important as I do.

</comment><comment><USER37> Nice.

Train stops 7am and 5pm, sure schoolchildren have long days in Japan.

</comment><comment><USER38> Clever PR. However, there are many homeless children in Japan. Where are trains for them?

</comment><comment><USER39> Political connections - nufsed.

</comment><comment><USER40> Japan need mass third world immigration, you can't stay so homogenus for this long. Not acceptable for a first world country to do. They must take responsibility like Sweden, there is war now and they must accept refugees from Syria and rest of the middle east.

<comment><USER41> On the other hand it's a good big scale experiment.

Lets wait 20-40 years and see who got it worse.

</comment></comment><comment><USER39> Please use Occam's razor: student that can maintain her anonymity in the face of this report + bureacracy that maintains a service for /one/ person = Political connections

<comment><USER42> That's not how Occam's razor works. Neither explanation - <USER3> connections vs kindness - is simpler than the other.

You're just using a more prestigious-sounding name for cynicism.</comment></comment>


Duke Entrepreneurship Education Talks - <AUTHOR> http://www.dukedees.com/sessionpowerpointdownloads

<comment><AUTHOR> The first talk by Aaron Patzer of mint.com has particularly good advice for startups.

Here's a direct link to the Quicktime video of the talk: [http://stream.fuqua.duke.edu/Content/Groups/EES/2008/Patzer....](http://stream.fuqua.duke.edu/Content/Groups/EES/2008/Patzer.qtl)</comment>


Backify Removes Free accounts a month after starting them - <AUTHOR>

Original news item: https://news.ycombinator.com/item?id=3110553
Backify just sent me an email saying all free accounts will be closed as of November 22nd.
I only backed up part of my data on there with the free account and the upload speed was horrible (barely 5kbps). Had I actually uploaded 512GB of data, it wouldn't have finished before they closed my account...
What a waste. <comment><USER2> I'm not surprised.

Who the heck backups _512 GB_ on a _free_ place?</comment>


Wesabe's Bank Aggregation Engine Open Sourced - <AUTHOR> https://github.com/wesabe/ssu

<comment><AUTHOR> This is code for pulling transaction data from a huge number of financial institutions. Consider it an alternative to Yodlee.</comment>


Clojure at a Bank – Moving from Java (2012) - <AUTHOR> http://www.pitheringabout.com/?p=693 <comment><USER2> UBS has a bit of a reputation for this. Same thing happened with their US Equities tech in the mid 2000s:

1) Bring in new blood to improve a legacy platform

2) The new blood decides to throw out everything and do a complete rewrite

3) The new system is super successful because it can focus on a much smaller subset of problems

4) The bank runs into profitability issues and can no longer pay developers well

5) The good developers leave en masse before everything is completely rewritten.

6) New developers come in and spends the entire time fighting fires and patching the system instead of building new stuff.

<comment><USER3> 6a) .. because instead of using a language designed in part to address turnover and difficulty of keeping avant garde coders in banal and soul sucking jobs, the management passed the business decision of "what tools do we use?" to the said workers.

<comment><USER4> On the other hand, the language chosen might ensure high turnover of the sorts of coders you'd really like to keep, assuming you could ever attract them in the first place.

Management has choices here, including simply making the best business will stay good enough, or even if it doesn't, prioritizing keeping an essential core of its technology people short of anything but completely closing down the unit.

One thing I've noticed that's very common in the long term success or failure of high tech companies is whether they kept their core technologists. Compare Microsoft to Lotus and perhaps Ashton-Tate (dBase). Companies like banks may not appear to be "high tech companies", but their "production" is done with computer systems so....

<comment><USER3> > On the other hand, the language chosen might ensure high turnover of the > sorts of coders you'd really like to keep, assuming you could ever attract > them in the first place.

I'm sure Bell Labs never had that problem :) I was reading someone's PhD dissertation on Chill [1] and what was interesting to note was how many of the players ended up outsourcing their software development to 3rd parties.

Software is hard.

There other day I was talking with someone in tech management from a national chain (think malls). They are rolling their own commerce platform since "nothing" out there can satisfy their ecommerce requirements. I didn't say this upfront -- a potential client -- but the idea that this chain will actually get into serious software development, develop an A team, and keep them, is complete and utter wishful thinking.

My advice to anyone running a non-tech company is own the data and the apis and off load the rest to a[n] actual tech company.

[1]: [http://web.bi.no/forskning/papers.nsf/0/42215f66b6282965c125...](http://web.bi.no/forskning/papers.nsf/0/42215f66b6282965c12578df003a14ff/$FILE/2011-08-Paulsen.pdf)

</comment></comment></comment></comment><comment><USER5> Note this was from 2012, and the author no longer works there - I wonder how this system developed in the intervening years?

<comment><USER6> > I wonder how this system developed in the intervening years?

It probably developed into a great opportunity for consultants.

</comment></comment><comment><USER7> I always thought critical applications like banking needed compile time type checking. Clojure is neat and all, but it's dynamic.

<comment><USER8> Most of the times, they don't. Static typing helps with catching certain types of errors long before the compiled code arrives in production but it's just one tiny factor that contributes to overall software quality. Lack of expressiveness or lack of developer happiness can be much more detrimental to software quality than lack of static typing.

<comment><USER9> I second this. I'm currently creating a new dynamic website, which will see around 10k users a day.

We could have done it in a week with rails scaffolding capabilities and the vast gem environment, but we are doing everything manually in Scala, because type safety and performance. It's so frustrating that I'm looking forward to quit very soon.

<comment><USER10> This is a weird complaint.

The fact that Rails has scaffolding and whatever Scala framework your team uses doesn't has little to do with type safety (there are plenty of web frameworks in dynamic languages without scaffolding as well).

There are several languages which require a comparable amount of typing to a dynamic program, while adding considerable type safety.

</comment></comment></comment></comment><comment><USER11> One of the reasons I went with Scala instead of Clojure is that you don't "just have to make a jump". You can write one class, in code that clearly corresponds 1:1 to what you'd write in Java, and the interop is smooth enough that other classes don't notice that this class is in Scala. Later on you (hopefully) are writing a very different style of code, more declarative and immutable and putting much more of the business logic into the type system. But it doesn't have to be a big-bang switchover; you can be productive from day 1, hour 1 even.

<comment><USER12> I think you missed the overall point of the author, which was that in order make a significant improvement at all, you need to make a radical shift in the modelling of the system. One of the problems mentioned was the inherent complexity of using a type system for modelling data. Scala is very type oriented and so as a result you will end up with a lot of types for everything there as well.

Yes it's certainly easier to make a transition into Scala, but I don't think using Scala will solve the actual problem, even if it does have FP capabilities and encourage immutability.

<comment><USER13> As I read the article, though, it's not just types. The fundamental problem was that nobody there had a good idea how to architect a Java application that large. So they threw out the Java, and replaced it with Clojure, which they had even _less_ experience architecting. Sure, Clojure may have resulted in 100,000 lines instead of a million, but that's still a large enough system that architecture matters. Did they create another large mess? It seems reasonably likely that they did.

Java's types aren't broken enough to _force_ you into a terrible architecture. Trying to use them badly (that is, in the way that everybody seems to think that you're supposed to use them for enterprise apps) seems to be the actual culprit.

</comment></comment></comment><comment><USER14> See also: Clojure at a _Newspaper_! [1] This guy should write a Clojure: War Stories book.

[1] [http://www.pitheringabout.com/?p=1018](http://www.pitheringabout.com/?p=1018)

</comment><comment><USER15> This article conflates OO and strong typing a little too much. These are too very different things, but agree that the combination can cause problems, not to mention that so many Java architectures are pathological in terms of struggling to find the code that actually does something.

</comment><comment><USER16> Brazilian Startup Nubank ([https://www.crunchbase.com/organization/nubank](https://www.crunchbase.com/organization/nubank)) is also clojure based. They use datomic, spark ...

</comment><comment><USER17> These days, Jon is one of the main guys at Juxt.Pro, a London-based Clojure consultancy. They're very good... :)

</comment><comment><USER18> It would be great to see examples of the design/modeling of the system. I really like functional languages have done since my university days, but there seems to be a dearth of examples on how to actually lay such large projects out in Clojure/Scala etc.

Having something like the J2EE Petstore (for all its sins) would go a long way to allowing more projects to make the switch than more articles on how great things are.

</comment><comment><USER19> Here's the video from his talk at EuroClojure 2012

[https://vimeo.com/45130708](https://vimeo.com/45130708)

</comment><comment><USER20> I love this quote in the comments:

> when you have REPL you are TDD'ing in a different way as opposed to > constructing persistent unit-test classes that could potentially form a > layer of cement.

Lately I've been using the console for development in rails and javascript more than anything and it is a really good way to iterate on a solution quickly.

<comment><USER10> It's great for quick feedback. It's less good when your coworker breaks the build on a less-used codepath because there are no unit tests to run.</comment></comment>


Getting Started with Git...Introduction to the basic work flow - <AUTHOR> http://geekabyte.blogspot.de/2013/08/getting-started-with-gitintroduction-to.html

<comment><USER2> Despite the fact I consider myself git-literate, I never pass up the chance to go through intros (for fear that I am literally just doing every single thing wrong).

I particularly liked this one, read the whole thing (I liked the easy-to-skim- and-pick-up-the-important-points style of this article), good read.</comment>


Programming excuses - <AUTHOR> http://programmingexcuses.com/

<comment><USER2> [http://programmingexcuses.com/index.php?=PHPB8B5F2A0-3C92-11...](http://programmingexcuses.com/index.php?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000)

<comment><USER3> how did you get that id ?

<comment><USER2> it's an old bug ...OSVDB-12184

<comment><USER2> or easter egg [http://programmingexcuses.com/index.php?=PHPE9568F36-D428-11...](http://programmingexcuses.com/index.php?=PHPE9568F36-D428-11d2-A769-00AA001ACF42)

</comment></comment></comment></comment><comment><USER4>
      What did I tell you about using parts of the system you don't understand?

This got a smile out of me.

</comment><comment><USER5> I would love a list of all the excuses, they look great in error pages. I made a quick script[1] to scrape the site, but that's not as nice as a plaintext file that could just be downloaded?

Edit: Here[2] is a complete list

1\. [https://gist.github.com/orf/87825a18e6685144ae3b](https://gist.github.com/orf/87825a18e6685144ae3b)

2\. [https://gist.github.com/orf/db8eb0aaddeea92dfcab](https://gist.github.com/orf/db8eb0aaddeea92dfcab)

<comment><USER6> What did _you_ type in _wrong_ to get it to _crash?_

<comment><USER5> "Well, at least it displays a very pretty error"

</comment></comment></comment><comment><USER7> It's missing Google's "That's an error. That's all we know."

</comment><comment><USER8> "It's not a code problem - our users need more training"

Oh, yeah...

EDIT: the more I refresh this page the more I think it should be called excuses for lazy coders and designers:

You can't use that version on your system

You must have done something wrong

Why do you want to do it that way?

Anyway, it's a nice, painfully accurate collection ...

</comment><comment><USER9> I worked with a developer who would say "it worked on my box" that meant it was gold and he refused to investigate further. He was connected to the CEO so there was little we could do except work around his bugs or ignore completely.

<comment><USER10> This is one more reason a continuous integration system is wonderful. If it works on a developer's box but breaks the integration, it's broken by definition. (No warranty is expressed or implied that the CEO will see it that way, of course!)

</comment></comment><comment><USER11> Are they really excuses? Most of them look pretty genuine.

</comment><comment><USER12> X-Powered-By: PHP/4.4.9

Seriously? :-)</comment>


Growing Pains for Field of Epigenetics - <AUTHOR> http://www.nytimes.com/2016/07/02/science/epigenetic-marks-dna-genes.html?rref=collection%2Fsectioncollection%2Fscience&action=click&contentCollection=science&region=rank&module=package&version=highlights&contentPlacement=9&pgtype=sectionfront&_r=0 <comment><USER2> Demethylating agents, HDAC inhibitors, and their like can induce powerful effects on malignancies via (purportedly) primarily epigenetic mechanisms. I've seen patients with astronomically high leukemic counts return to normal blood counts on a few weeks of romidepsin, for instance.

But when groups use epigenetics to study poverty related stress, risk of depression, etc, there is a very different political structure than when comparing drugs to see what kills cancer cells in a dish. The trend seems to be to publish borderline findings with a nature vs nurture argument to explain differences as environmental, not genetic, and call for action as well as _more funding_ to expand the research and find ways to environmentally or behaviorally prevent the problem. Optimistically, it's trying to solve problems. The issue is that important findings will be mixed in with a lot of questionable results that sound appealing to liberal academic journal editors and get a free pass at publication in top journals, a process which feeds back into the SJW gravy train of getting more academic grants to do more of the same. And with sciency techniques and big data approaches, what could be more fashionable? It really does a disservice to the subset of epigenetic research which is well conducted and reproducible. If the epigenetics bubble pops a bit, good. Other fields could use the attention.

<comment><USER3> Your argument was cogent and reasonable until you used the term "SJW". It's a useless term, meaning different things to different people.

The point you seem to be arguing could also be applied to the funding of string theory, and is one that I agree with. You won't find people like Lee Smolin saying that the disparity in research funding in these areas is due to "SJWs", rather they would point to the short term vision of those who provide the funding (amongst other factors).

<comment><USER2> I agree, SJW is a pretty useless term. You're right. And I don't know much about string theory funding. I can only postulate. Regarding short term vision, medical research funding has consequences on huge outlays of public resources outside of the short-term vision of research funding you mentioned. Maybe string theory has very close parallels, but for example when it was recommended everyone get interval colonoscopies at certain ages, hundred of millions of dollars of government money suddenly shifted to this purpose yearly for just one procedure (in this case a heavily vetted evidence backed decision). When, in contrast, attention is cast on politically popular issues with questionable research methods and publish-bait articles, it siphons funding away from less hot-topic issues that stagnate or die (for example, the defunding of even the best state psychiatric programs, which are popularly are associated with horror movies and don't get much too love by activists). The impact is immediate and severe outside of the world of researchers, and enormously politicized throughout the nation/media. I'd love to hear the string theory side of this though!

<comment><USER3> This has a lot to do with PR and how it relates to research and development funding. The root problem is that, with regards to funding (as far as I can tell), a headline in a popular newspaper or popular-science magazine is worth orders of magnitude more than a peer-reviewed paper in a journal. This will be a problem for all of the sciences in the near future, as long as there are differing tracks of research being explored.

The scientific method dictates that something should be ideally explored until it's dis-proven. Unfortunately, the realities of limited R&D funding dictate that only the most popular, or public, research tracks tend to attract the funding. This has a carry-on effect in that new students in these fields are _forced_ to go into the most popular fields of study, lest they not get funding.

WRT string theory, have a look at [https://en.wikipedia.org/wiki/The_Trouble_with_Physics](https://en.wikipedia.org/wiki/The_Trouble_with_Physics) . I'm not sure I 100% agree with Lee Smolin on this (he has a definite axe to grind), but the points he raises are equally applicable to any field of contentious, or cutting edge research.

Solving this is difficult. Obviously education of the general populous will help, but in lieu of this, perhaps we need mandated percentages of funding to each viable research track (a solution rife with problems of it's own).

In any case, this is a hard problem to solve, and will certainly cause problems in many areas of fundamental research in the future.

</comment></comment></comment></comment><comment><USER4> As I see it pretty much from inside, this is not a general problem but just the evolution of science, as we are able to determine more and more things which lead to better and better conclusions. The problem in what is cause and effect comes from the sheer amount of data you create (for a current study we have whole genome methlaytion data for 19 cell populations in mice, all in triplicates and at medium coverage), which is obviously prone to many false positives. And as we are now approaching single cell level (which will dramatically improve results), this number is only going up. And of course it is hard to check all these positives extensively. But yeah, this is sciece and we are only getting better, so no pain but just an opportunity. A problem is rather the amount of data we create (we are speaking about Petabytes) that have to be stored and made accessible for decades so we can later recheck our conclusions. Nobody wants to pay for that

<comment><USER5> Im interested in chatting on versioning in this data ( and possibly by extension, compression ) . Happen to have a method to contact you ?

<comment><USER4> Not in this case as the data I described is on embargo. The problem is more general for all genomic data that has already been made public but were funding runs out after 5 years or so. I happend to chat to a postdoc the other day who is involved in the ICGC cancer consortium and had already some thoughts about the problem. If you want I can ask him whether he wants to contact you.

<comment><USER5> Would love to chat with him!

</comment></comment></comment></comment><comment><USER6> I am working with some epigenetics data right now (chip-seq on histone modifications). The main problem I see is that there doesn't seem to be any mature framework for analyzing the data. There are a bunch of disparate methods for different aspect of the data analysis that all seem to give different results.

From the data generation perspective, there are so many possible sources of biases from preparing the biological sample to sequencing of the sample, it can be difficult to control for all these variables in the down-stream analysis.</comment>


Living On Bitcoin For A Week - <AUTHOR> http://www.forbes.com/sites/kashmirhill/2013/05/01/living-on-bitcoin-for-a-week-the-journey-begins/

<comment><USER2> I remember seeing articles about people trying to live for a week without leaving the house but instead using "the internet" for all shopping and communications. Thinking back to that time there seem to be so many parallels with how the internet was perceived then to how bitcoin is perceived now.

</comment><comment><USER3> This is stupid and it proves nothing. It's the equivalent of living on Rupees for a week. Sure, you might find some Indian people who will take your money, but nobody's trying to replace the USD with either the Rupee or the Bitcoin. Pure sitespam, this.

<comment><USER4> "Pure sitespam, this."

Forbes.com as a whole is spam. I'm genuinely amazed by how many articles get upvoted. I guess whatever anti-voting-ring measures in place here can't compete with forbes employees :/

<comment><USER5> Honestly this is the first Forbes article I ve read in months that had actual, real content in it. Reporters in the ground and not just trolls making polarizing statements to generate web traffic.

I thought it was pretty good. By Forbes usual standards, stellar.

</comment></comment></comment><comment><USER6> This is like trying the first Android beta there ever was and then saying that there aren't a lot of apps for it yet.

Nearly all current users could have told him that living on Bitcoin for a week is hard to do right now because there is simply no support. This is why we are _early adopters_ , we use something before it's mainstream. You can't actually walk up to anyone and expect to be able to pay them in any currency you can think of.

<comment><USER7> Walking up to people and paying people for goods and services is a good measure of how useful something is as a currency.

Right now, it's hard to avoid the conclusion that bitcoin is fairly useless to most people as a currency, a hard truth for some.

What is it not useless for? Well mainly as an investment/get rich quick scheme as well as money laundering, drug deals and soothing the paranoia of hard money cranks.

<comment><USER6> If it was so easy to get rich with bitcoin, everyone would have it already. Besides that, what are Dollars useful for besides drug deals and tax evasion? I can't pay a taxi in Dollars here (a very good measurement for how useful a currency is) but I can use dollars to buy stuff from some Chinese seller that doesn't make me pay tax over the bought goods. It's a hard truth for some.

This reply is total bullshit, I know. I'm trying to connect with him on his level.

<comment><USER7> "I can't pay a taxi in Dollars here"

Who is trying to push the dollar as a viable currency for Chinese people to buy things with in China?

OTOH Bitcoin hypers _are_ trying to push it as a global currency. Well, spoilers: it sucks for that.

<comment><USER6> > _OTOH Bitcoin hypers are trying to push it as a global currency. Well, > spoilers: it sucks for that._

We're pushing for it, but we're not saying it's there yet. The person I replied to said _"Walking up to people and paying people for goods and services is a good measure of how useful something is as a currency."_ while clearly that's not the case yet, and we never said it was. In the future, hopefully, it will be though.

Why do you think it sucks as a global currency?

<comment><USER7> I'll be honest Bitcoin is a lot more accepted than I ever expected it would be and looks to have a lot of growth in terms of the things you will be able to purchase with it. That said the bar to be a successful working currency is really high and the investment angle works against it's use as a currency.

Bitcoin detractors read this article and think people like the author are suckers for buying Bitcoins to begin with. Then there's a lot of Bitcoin enthusiasts that probably think people using Bitcoins to buy stuff are suckers for not holding on to them. You can't draw any strong conclusions from that but it's a bad sign when people on both sides of an issue think you're a sucker.

</comment></comment></comment></comment></comment></comment><comment><USER8> SF retail chain accepts now bitcoin (artisan food & gift, 3 locations: Ferry Building, Haight-Ashbury, North Beach):

<http://yelp.com/biz/buyers-best-friend-san-francisco> <http://yelp.com/biz/buyers-best-friend-mercato-san-francisco> [http://yelp.com/biz/buyers-best-friend-wholesale-and- market-...](http://yelp.com/biz/buyers-best-friend-wholesale-and-market-san- francisco)

</comment><comment><USER9> Is there any concern with keeping the price of an individual bitcoin down so that they can be used more like a proper currency? Meaning, at around $140 per coin currently that's not exactly an ideal 'base' value of a currency.

Is there an equivalent to a stock split that could be applied?

Just seems like Bitcoin can never really fulfill its dream of being a true global currency if the lowest value of an individual 'coin' is so expensive.

<comment><USER10> One Bitcoin can be divided down to 0.00000001 BTC.

<comment><USER9> Yes, I'm aware of this. My comment was about wide-spread adoption.

I have a hard time imaging my parents working with fractions just to buy a coffee.

<comment><USER11> Your ancestors did just fine with salaries of a few dollars a year, once upon a time.

<comment><USER12> It's just a terminology problem because people aren't used to "bitcents" or "mBTC" yet.

</comment></comment></comment></comment></comment><comment><USER13> "after a failed attempt to do so via Mt. Gox, the value-setting Bitcoin exchange based in Japan; my bank refused to send funds to Mt. Gox's account saying it was suspended"

Funny how this journalist is the only one having gotten that. Seeing as MtGox is the biggest exchange, that would've been quite the news otherwise, but it isn't, because it's so far working for everybody.

<comment><USER14> To be honest, everyone else is probably used to problems like this now, to the point that it's not really news.

<comment><USER13> Well, difficulty transfering money, why sure. But MtGoxes account being shut down, that would be news.

Perhaps the nice lady should've stated which bank is telling her bullshit. Name and shame.

</comment></comment></comment><comment><USER15> Given the price of BTC, can we start talking about bitcoins in a more readable unit? Like... an iPhone costs 300cBTC? centibitcoins? or 30dBTC 30 decibitcoins?

<comment><USER16> How is 300 cBTC more readable than 3 BTC?

Edit: anyway, more common units are mBTC for 1/1000, uBTC for 1/1,000,000 and "satoshi" which is the smallest division the protocol currently supports, 1/100,000,000. (Satoshi Nakamoto is the pseudonym used by the creator of bitcoin.)

<comment><USER17> The point may have been that if BTC is the only unit, then most every-day things will cost something like .05 BTC, which doesn't seem all that intuitive (at least coming from a USD area).

<comment><USER18> Also remember that things started costing 5 cents until inflation ran those same items up to dollars.

<comment><USER16> If bitcoin ever takes off, its built-in deflation will run the problem in the other direction (making it even worse than it is now).</comment></comment></comment></comment></comment>


Audiobooks for Programmers - <AUTHOR> http://joezack.com/2013/09/15/audiobooks-for-programmers/

<comment><AUTHOR> I would love to hear Joe read the "Joel on Software" books, I was a big fan of the Stack(Overflow|Exchange) podcast.</comment>


macOS Sierra Leaks Image of MacBook Pro with Magic Toolbar - <AUTHOR> https://512pixels.net/2016/10/magic-toolbar-sierra-leak/ <comment><USER2> Comments moved to [https://news.ycombinator.com/item?id=12790840](https://news.ycombinator.com/item?id=12790840).

</comment><comment><USER3> Previous topics:

\- [https://news.ycombinator.com/item?id=12790840](https://news.ycombinator.com/item?id=12790840)

\- [https://news.ycombinator.com/item?id=12791672](https://news.ycombinator.com/item?id=12791672)

\- [https://news.ycombinator.com/item?id=12791158](https://news.ycombinator.com/item?id=12791158)

For those interested, I observed the evolution of the rank of the first topic: [https://gist.github.com/ggregoire/a759868f3bc046f9b654a7053b...](https://gist.github.com/ggregoire/a759868f3bc046f9b654a7053be2f4e7)

<comment><USER2> That story tripped the software flamewar detector, which we've now turned off.

<comment><USER4> Whatever it did, it had the unintended effect of producing a desired result: the re-blogged content on Macrumors was buried in favor of the original source story.

Switch it back on :)

<comment><USER2> We certainly will update the link to the original. Do you have any evidence to suggest that's the 512pixels article?

<comment><USER4> That's a good point - I just assumed the 512pixels article was the original since it was shared first widely on Twitter, but only just noticed that Macrumors doesn't reference or credit it. It's possible they both discovered and posted about it today.

</comment></comment></comment></comment></comment><comment><USER5> I'd like to point out that we're having a pretty great argument about this on this HN thread:

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

</comment><comment><USER6> I sincerely hope apple still offers a version of their MacBook with physical Fn keys.

I use them in day to day dev and can't imagine switching to memorizing touch positions.</comment>


In Praise of the AK-47 - <AUTHOR> https://deardesignstudent.com/in-praise-of-the-ak-47-a24cc8a46c13 <comment><USER3> This is not a good post. It's saying that AK's are poorly designed because, _obviously_ , one of the core axioms of good design is that you're not supposed to design weapons.

Design is an amoral tool to use as you see fit. If you think all wars are bad, blah blah, then whatever. But if you're trying to justify that by poorly linking it to whatever unrelated field you specialize in, then you better explain it using the language and concepts of the field, not because you simply don't like it.

EDIT: also, it's saying everyone who designs guns are bad people, and are responsible for every death? What? I understand that there are complexities with guns being used by civilians, but surely there are reasonable uses? Yes, hunters and farmers who provide sustenance for the country are evil people. So are all the French soldiers who used guns when Germany invaded. All weapons are bad and killing people is never justified! What a ridiculous view.

</comment><comment><USER4> This article is base pandering at best. Even as someone such as myself who has quite strong pro gun control views can make the intellectual distinction between a well designed weapon vs the morality of creating one. Viewed from the lens of weaponry, the AK-47 usually is well regarded.

This is no different than how One can appreciate a well engineered computer malware attack in the same regard. Even things that are destructive can be enhanced by the rigors of design.

</comment><comment><USER5> "If a thing is designed to kill you, it is, by definition, bad design."

Guns aren't designed to kill you. They are designed to eliminate others whom pose a threat to you. If it were you vs another gunman, you would praise superior design if it saved your life.

"You can't separate an object's function from it's intent."

You most certainly can. First I was coming up with examples to enumerate here but now this sentence is hardly making logical sense to me when I read it.

<comment><USER6> _They are designed to eliminate others whom pose a threat to you._

       God made men
       Sam Colt made them equal

Hyperbole, but I love it.

</comment></comment><comment><USER7> "Mikhail Kalashnikov is responsible for as many deaths as the people who pulled those triggers."

Spoons made me fat.

<comment><USER8> You bring forward the typical NRA argument. It's not quite accurate though.

(I don't agree with the article OP linked. So it is not my point to argue in favour of it.)

Your argument is: A weapon is just a tool. A weapon does not kill. It's people that kill. Someone who created a weapon cannot be held responsible if someone else gets killed.

But what about the abundance of weapons? Or the ease of use? Or the accessibility of weapons in situations where you are emotionally unstable?

Maybe a better comparison would be the abundance of sugar in pretty much every type of food (from ketchup to some meat products) - instead of the spoon you used in your example. And the comparison becomes less ridiculous.

<comment><USER7> "But what about the abundance of weapons? Or the ease of use? Or the accessibility of weapons in situations where you are emotionally unstable?"

The designer (in this case Kalashnikov) had no control over the abundance of his design or who gets access to them. As for ease of use, if you want to learn how to use a firearm (or any skills for that matter) you can. Ease of use is not a deterrent.

<comment><USER8> I see your point but one could argue that someone who creates a weapon is - <USER2> some extent - responsible for what happens with it.

The big problem I see in the text that OP linked is that the author did not define what he means by good design. If you assume good design must incorporate a moral dimension, then I could easily follow his arguments. Personally, I would think an object could be brilliantly designed but completely immoral or unethical.

I mainly used the abundance argument to counter the either naive or malicious statement of "blaming the spoon for being fat". This is being used by gun nuts. It is not a fair comparison.

</comment></comment></comment></comment><comment><USER9> > If a thing is designed to kill you, it is, by definition, bad design.

Which definition? _Whose_ definition?

This entire article hinges upon this assumption - that good design cannot coexist with something designed to kill living creatures (humans included, though the article also conveniently leaves out the use of guns in hunting) - without making any attempt whatsoever to actually back this up, instead resorting to nonsense like how design is an "ethical trade".

> nothing whose primary purpose is to take away life can be said to be > designed well

Again, says who? The author? On what grounds? The only grounds I can think of involve an apparent squeamishness about death on the part of the author.

Of course, this is very obviously an opinion piece, and this "design student" is entitled to that opinion. Presenting such opinions as facts, however, is not helping one's already shaky case.

</comment><comment><USER10> I read an interview with MK where someone asked him if he felt guilty for designing the AK47, he just said something like, he created a tool for fighting Fascists and he was proud of that.

</comment><comment><USER11> Great opinion piece.

Garbage fact piece.</comment>


Ask HN: An early client wants to pay for our SaaS offering using revenue share - <AUTHOR>

We were able to land another early client for our SaaS offering and in negotiating the price I was surprised that he proposed that I lower the monthly fee in exchange for a revenue share payment model. His reasoning behind that is to give us a stake in the success of his business. That way we have an incentive to continuously look for ways to optimize his business process through our offering. The problem we are facing is defining the metric that reflects our software's impact on his business from which we will have a % of; is it the difference in net profit before and after using our software, or something else. If any of you faced a similar situation before, I would appreciate it if you could share that experience. <comment><USER2> Based on my experience - Revenue share deal with a bigger partner never works out. Unless they invest upfront and their skin is in the game, they'll not too be worried about monetizing your efforts.

My suggestion - Ask for minimum guarantee before you invest your time & effort doing it.

</comment><comment><USER3> > His reasoning behind that is to give us a stake in the success of his > business.

He's figured out how to shift his costs to you during an economic down-turn.

He's probably projecting a down year. If your software hits a home run, he has an even year. Unless he does a lot better than that, he's going to come back to you next year and say "we used your stuff for a year and didn't even break even."

<comment><AUTHOR> Actually he's doing quite well and growing, which is why I was surprised and am still considering that deal. As long as I place a minimum amount on that rev share dollars expected then the deal would have great upside.

</comment></comment><comment><USER4> I'd be wary of any metric that can be manipulated by creative accounting.

</comment><comment><USER5> I have actually done a similar deal in my early days. Turned out the management were pathological liars. I would have needed to pay for an auditor to suss out the truth in the accounts they "revealed" to me. They also were too caught up in internal politics which actually lead to their eventual demise. From my very painful data point of one -- never again!

<comment><AUTHOR> Thanks for sharing. Thats my greatest fear and the only way to avoid falling into that pitfall is to have a deal that you can measure too without relying on their data.

</comment></comment><comment><USER6> Whether your offering helps or hinders their business is irrelevant to you. You are a provider of software and they pay you to use that. Whether they succeed or not is not your problem. Don't get entangled with their business success.

<comment><AUTHOR> In the future after we meet certain milestones I'd never contemplate such and offer. However, for an early stage startup that is ramping up sales to internally finance its growth I think its necessary to consider such offers.

</comment></comment><comment><USER7> the only way i would even consider this is if you could strongly and cleanly define some very clear-cut metrics and compensation levels based on them. ensure that you're getting compensated extra for what is effectively guaranteeing different levels of results.

<comment><AUTHOR> Exactly. We are only contemplating this offer because we believe we can help his business grow by using our software. Our struggle is in pin pointing those clear cut metrics that ensure we are properly compensated based on the impact of our software.

<comment><USER7> righto. if you're looking for input on what metric should be used, i'm afraid you'd have to pony up more information. target the least subjective and least manipulatable metrics possible. hopefully things you can also access and objectively measure on your own.

</comment></comment></comment><comment><USER8> You're investing in his business. You're putting up cash (the monthly fee of your software) in exchange for an ill-defined share of his future profits. It's the same as buying shares in his company.

Why would you invest in his business? Don't you have your own business to run?

Say this: "I've thought about your offer, and it just seems too complicated to get into. I think it's best to stay with a straight monthly fee. The best I can offer you is [5% off of whatever you offered him before]."</comment>


Walmart Will Manage Distribution Centers with OneOps, Jenkins, and Kubernetes - <AUTHOR> http://www.techbetter.com/walmart-will-manage-200-distribution-centers-oneops-jenkins-nexus-kubernetes/ <comment><USER2> I had a very interesting discussion about this subject a couple of weeks ago with a CTO of a big company.

I've commented before that Kube absolutely takes over the bigger more complex cloud installations out there, you can see how many companies are betting their infrastructure on it.

The only thing that I don't see is standardization of the cloud, just like what Amazon did. You see too many companies doing too many of the same things and reinventing the wheel.

Personally, I would love to see smaller installation as a standard of how to take things into the cloud as a cluster. Imagine what Heroku did to deployments. You can't beat this ease of use. Deis and Convox are both trying but not really "hitting it".

As for Walmart, absolutely stoked seeing it from them. This move and what the white-house did with the digital shows a lot of promise and hope. I wonder how much of this is on top of "older" management and how much is just complete restructuring.

<comment><USER3> Kubernetes != virtualization

Some virtualization use cases can be solved with kubernetes, but many things an enterprise runs do not work at all in the kube paradigm. The majority of applications are pets (i.e. stateful) and many applications run on Windows or have some other kernel requirements that mismatch the baremetal kubelet.

If you think Kubernetes 'absolutely takes over the more complex cloud installations', you're living in an echo chamber of 12 factor apps that doesn't line up with the majority of what I've seen in big enterprise cloud workloads.

Case in point: Walmart has one of the largest openstack deployments in the world.

<comment><USER4> Have you checked out pet sets[1]? The last couple of kube releases have introduced some really nice work to help with these cases

[1][http://kubernetes.io/docs/user- guide/petset/](http://kubernetes.io/docs/user-guide/petset/)

<comment><USER5> Does this fit in with hyperkube in some way? Can you see 'pods' that are really complete VM's which may or may not include OCI containers on them.

For instance, would a complete Windows Server instance fit the Pet Set concept in the scheduler?

<comment><USER6> hyperkube is just a repackaging of all the different packages of k8s as a single binary.

so rather than 'kubectl -v', you will run 'hyperkube kubectl -v'

<comment><USER5> Closer to minikube then? That was not at all clear to me from reading the site, where it seemed to be discussing a kubelet on an OS on bare metal or hypervisor, but not managing containers.

</comment></comment></comment></comment></comment></comment><comment><USER7> I messed around with oneops a bit and it's basically a bunch of tooling built around their own fork of chef.

It's almost impossible to just drop into an existing workflow without a whole team of people managing it.

</comment><comment><USER8> NFS in a modern system seems like a huge red flag.

<comment><USER9> What's wrong with NFS? If you need a shared, POSIX-compliant drive between multiple hosts, there's not really an alternative. Even the fairly new AWS Elastic File System service is just a NFS4.1-based managed service

<comment><USER10> You can pay money for a SAN, which is $$$$ & enterprise but is a viable alternative…

<comment><USER11> A SAN gives you block storage - virtual hard disks. You will need a cluster filesystem to be able to use the same virtual disks on multiple machines concurrently, which are not easy to operate and have their own bunch of performance problems.

</comment></comment></comment></comment><comment><USER12> Wal-Mart is a very odd to work with from the vendor side. They have a purchase order tracking system named PULSE that is completely independent from their EDI system and their supplier Retail Link program (which is the slowest, most horribly designed website you could imagine).

You're required to SFTP up a CSV file of what you've shipped to them that day, along with information about. They also have a creaky acknowledgement/acceptance procedure and the technical folks (seems outsourced) aren't very impressive. You have to pass a 'visual inspection' with your test files and it's the most ridiculous process you can imagine with box-checkers flagging you for the dumbest reasons.

So from this side of the transaction it always makes me wonder about articles like this, all their good tech must be internal only. To be fair to Wal-Mart the situation with other big store chains usually isn't any better.

<comment><USER13> SFTP and CSV are robust and simple. That's solid choices.

</comment></comment><comment><USER14> This is one of the better bespoke cloud efforts I've seen, but in their position -- given the decision to bet on Kubernetes -- I might've chosen OpenShift instead of rolling my own PaaS.

I've also seen the Jenkins-to-Nexus thing a few times, never particularly happily. That said, I don't have particularly deep experience in Java shops, so it's possible that it works really well in some places.

Disclosure: I work for Pivotal, we're the majority donors of engineering to Cloud Foundry, a PaaS competing with OpenShift.

</comment><comment><USER10>
      > As shown in the above diagram, Jenkins pipelines deliver application updates directly to the enterprise Nexus instance

Well, at least they're not using Jenkins to run their deploys.</comment>


Akatsuki probe successfully enters Venus orbit, returns images - <AUTHOR> http://www.cnet.com/news/japans-akatsuki-orbiter-sends-back-triumphant-venus-images/#ftag=CAD590a51e <comment><USER2> Can anyone comment on why this image from the article has a perfectly straight white line in it? Seems suspicious. It appears to be just a smidge above the belt line.

[http://cnet4.cbsistatic.com/hub/i/r/2015/12/09/bccd7491-ac30...](http://cnet4.cbsistatic.com/hub/i/r/2015/12/09/bccd7491-ac30-4f00-bdcd-84f78cf47924/resize/970x546/3bd645efd2cf5ddeca52172945a30f92/akatsukivenus2.jpg)

<comment><USER3> It's probably just the equator.

<comment><USER4> Good one :)

</comment></comment></comment><comment><USER5> Does anyone know if the probe lost five years of expected lifetime due to its five-year delay (original orbital insertion expected back in 2010) or whether it was able to effectively "hibernate" or otherwise conserve its fuel and energy since then?

<comment><USER6> From the wiki[0]:

> This required placing the probe into "hibernation" or safe mode to prolong > its life beyond the original 4.5-year design. JAXA expressed some confidence > in keeping the probe operational, pointing to reduced battery wear, since > the probe was then orbiting the Sun instead of its intended Venusian orbit

>At a press conference on 10 December, officials reported that Akatsuki's engines fired for less than three minutes, far short of what was required to enter into Venus orbit

>Three peri-Venus orbital maneuvers were executed on 1 November,[11] 10 and 21 November 2011 using the RCS thrusters. A total delta-V of 243.8 m/s was imparted to the spacecraft. Because the RCS thrusters' specific impulse is low compared to the specific impulse of the OME, the previously planned insertion into low Venusian orbit became impossible. Instead, the new plan was to place the probe in a highly elliptical orbit with an apoapsis of a hundred thousand kilometers and a periapsis of a few thousand kilometers from Venus.

[0]: [https://en.wikipedia.org/wiki/Akatsuki_(spacecraft)#Orbit_in...](https://en.wikipedia.org/wiki/Akatsuki_\(spacecraft\)#Orbit_insertion_failure)

<comment> david-given It's worth emphasising that the OME (the main engine) and the RCS (the attitude thrusters) both run on hydrazine fuel, but the OME also has a separate tank of oxidant. So, the OME is a bipropellant engine, while the RCS is a monopropellant engine, which is why the OME is more efficient.

(Aside: that's actually a really neat trick, and this is the first I've heard of it being used.)

After the OME engine nozzle broke off and the engine became useless, the tank of oxidant became useless mass. (65kg.) So they dumped it overboard, simply venting it out the broken rocket nozzle. (Yes, the did point the vehicle in the right direction so that they could get some momentum change out of it.)

Making that decision, to dump irreplaceable fuel overboard because of a conclusion you've reached by looking at some telemetry graphs, is one that I am very glad I wasn't the one to have to make.

</comment></comment></comment><comment><USER7> How long has it been since we last had new close-up photos of Venus? I know there's been nothing from the surface since the Russian landers, but was Magellan the last fly-by?

<comment><USER8> ESA's Venus Express orbited Venus from 2006 until January 2015 when, its fuel spent, it burned up in the atmosphere as planned.

</comment></comment><comment><USER9> Why is this cnet.com.feedsportal.com? seems suspicious

<comment><USER10> It appears to be a redirect URL from some sort of 3rd party RSS feed syndication

<comment><AUTHOR> Sorry, I must have copied the link from the DuckDuckGo News search, rather than the redirect. It should point to [http://www.cnet.com/news/japans- akatsuki-orbiter-sends-back-...](http://www.cnet.com/news/japans-akatsuki- orbiter-sends-back-triumphant-venus-images/)

</comment></comment></comment><comment><USER11> Although the surface is very unpleasant indeed - it is hypothesised that there are habitable bands in the atmosphere.

<comment><USER12> habitable*

*survivable in terms of temperature. It still has a 96% carbon dioxide, oxygen free atmosphere, so not directly habitable. The temperature is about room temperature at an altitude of 55km with atmospheric pressure (and T=75C) at about 50km. Earth atmosphere would float in the more dense carbon dioxide atmosphere of venus. You could conceivably have an airship full of earth atmosphere where the cabin is within the balloon.

<comment><USER13> Could plants survive at 55km altitude?

<comment><USER12> Good question. Seems like they could -- although co2 might be toxic at given levels like o2 would be at 3-4x concentration for us. I don't know about what else they would need -- surely some other nutrients that aren't just floating around. Wouldn't it be awesome if we could just throw some single celled lighter-than-co2 algae in there that could float and produce oxygen and nitrogen. Wait 10,000/100,000/1,000,000? years and just fly around the newly atmosformed atmosphere.

</comment></comment></comment></comment><comment><USER14> The name made me remember some childhood anime antagonists.

 _sigh_ i miss those times.

<comment><USER15> That show you're referring to is still going, currently going through some filler episodes but it should be back to canon in the new year. The next generation has just started as well.

<comment><USER16> Akatsuki means "red moon" so it probably appeared in many animes before THAT one.

<comment><USER17> 暁 is not 赤月

As /u/ZenoArrow pointed out, it means "dawn" or in some contexts, "in the event... (of)"

It's used as the title for Akatsuki no Yona (Yona of the Dawn) but is otherwise only really known for being a certain group of characters from a certain anime which was implicated.

There are also a few characters who share the name, such as Akatsuki Ousawa. But that would refer to an _individual_ and not a _group_.

</comment></comment></comment></comment><comment><USER18> Those machines send out information from millions of km away, yet sometimes I can't get a decent mobile connection. o_o</comment>


What I learnt from my 14 year journey writing software without a CS degree - <AUTHOR> https://medium.com/@owahab/what-i-learnt-from-my-14-year-journey-writing-software-without-a-cs-degree-2a47941279f6#.j5i4zpnwo <comment><USER2> See the part what I don't get is, pick a language and stick to it, whatever happened to Ludwig Wittgenstein's quote : "The limits of my language determines the limits of my world"?

<comment><USER3> I didn't read it as saying "stick to one language for life", although even that isn't a bad plan in some cases - as long as you also learn other languages eventually. For instance, some folk have had very long C-centric careers and can still pull some of the highest paying programming jobs.

Despite having been forced to use a bunch of languages over the course of my career, you can only focus on so many. Truthfully, this is a great time to be a language dilettante, but one must pick and choose where to get serious. For instance, at the moment I'm focusing on Swift for a variety of reasons, but I wish I could spend more time with Scala and Julia. There are only so many hours in the day, and only so much mental bandwidth.</comment></comment>