A Comparison of Distributed Machine Learning Platforms - <AUTHOR> http://muratbuffalo.blogspot.com/2017/07/a-comparison-of-distributed-machine.html <comment><USER2> I would like to encourage anyone to read these kinds of "evaluations" with a bit of criticism.

When doing evaluations there are a lot of nuances.

I will comment on a real world example from our own experience.

Disclaimer: I am biased running a company implementing my own platform. I will try to stick to topics that folks should "look for" when evaluating these things rather than inviting a debate on "my tool vs yours"

For deep learning on spark specifically, there are 2 workloads, training and inference.

Your data pipeline here matters a lot. A job that pulls data from hive will _surprise_ be bottlenecked by hive. This by extension means the kind of data and small things like the number of records you fetch or cache on say: hdfs matters a TON.

On our platform, we implement 2 versions of distributed communications: spark driver and parameter server. The parameter server is faster. The latter is what mxnet and tensorflow do as well. Tensorflow uses grpc underneath. mxnet writes its own.

While both are data flow graphs, the latter is optimized for linear algebra and I would like to say has very different requirements (for example gpus which are another level of complexity)

When using these parameter servers, you should look at what guarantees these things provide. For example, do you need consistent latency? Fault tolerance? At what scale?

Something as simple as"do these parameter servers do p2p on each node?"

With spark, it's not well designed for that. A lot of workers are meant to be stateless.

With spark another gotcha (especially on the linear algebra part) is on heap memory. When you are using say: pyspark for example, how you handle data movement matters a lot, and again _surprise_ ends up being your bottleneck.

We use pyjnius instead in our python interface for linear algebra: [https://github.com/deeplearning4j/jumpy](https://github.com/deeplearning4j/jumpy)

We implemented this because we liked the idea of being able to pass numpy pointers straight to the JVM rather than copying data. I believe pytorch and co do this as well (which are just straight C/C++). That is the right way to do it

The default is py4j (which overall is more versatile but not meant for DL)

Don't even get me started on a normal etl pipeline vs "images", which is typically what you see.

Another big complexity with say: spark and even gpus is gpu usage. When using mesos, you can only reserve a whole gpu, not fractions.

Another thing is worker setup. For deep learning specifically, What BLAS did they use? How was it compiled? Was it optimized for the right cpu architecture?

How does the the workers communicate with the gpu, if any?

If you're using a JVM, how do they handle the FFI?

How are workers configured for cpu/cpu? Things like OMP_NUM_THREADS on each worker matter a lot.

If you're using spark, did you configure k small workers or 1 big one? How did that interact with your multi threaded linear algebra?

Hopefully this gives people an idea of how complicated these things get.

<comment><USER3> Before reading the Blog's summary of the paper, I thought hey they're going to analyze the distributed algorithms[1][2] exclusively and give conclusions on how heterogenous hardware usgage of GPU/CPU works (best) when spread over the network/cloud. My guess was that MXNet would win, because Amazon [3][4] and benchmarks favored it[5]. Unfortunately surveys like this are too complex and out of date, when released, due to the fast progress in our field.

 _> > @agibsonccc What exactly would YOU, your company and your team like to see reviewed and what would you make different?_

A standard benchmark, like the Open-Source, Automated Benchmark provided by the Phoronix-Test-Suite[6] or the benchmarksgame[7] are what we need. Everybody should be able to contribute easily, or even anonymously like with Steam's hardware survey[8].

The main problem with distributing operations with Caffe in example is the need to learn another system for a different programing flavor.

\-- References

[1] [https://en.wikipedia.org/wiki/Distributed_algorithm](https://en.wikipedia.org/wiki/Distributed_algorithm)

[2] [https://en.wikipedia.org/wiki/Category:Distributed_algorithm...](https://en.wikipedia.org/wiki/Category:Distributed_algorithms)

[3] [http://www.infoworld.com/article/3144025/cloud- computing/why...](http://www.infoworld.com/article/3144025/cloud- computing/why-amazon-picked-mxnet-for-deep-learning.html)

[4] [http://www.allthingsdistributed.com/2016/11/mxnet-default- fr...](http://www.allthingsdistributed.com/2016/11/mxnet-default-framework- deep-learning-aws.html)

[5] See Page 52 - [http://alex.smola.org/talks/NIPS15.pdf](http://alex.smola.org/talks/NIPS15.pdf)

[6] [https://www.phoronix-test-suite.com/](https://www.phoronix-test- suite.com/)

[7] [http://benchmarksgame.alioth.debian.org/](http://benchmarksgame.alioth.debian.org/)

[8] [http://store.steampowered.com/hwsurvey/](http://store.steampowered.com/hwsurvey/)

<comment><USER2> Yes indeed! Thanks for the follow up. I just wanted to give folks a survey of the things they should look at when evaluating things like these charts to see how fast something is.

The casual reader won't know to look for these things (it's actually not their fault, a lot of this knowledge is _very_ field specific)

I've made comparisons to deep learning flow graphs and spark's computation graphs in the past, but there are _very_ different considerations and use cases for both.

I think what I was commenting on was more of the minute details that get lost in summaries like this.

If anything this is a pitch for having an end to end specialized system that understands your data pipeline all the way to your linear algebra calculations. That way all of these variables are taken care of.

A simple example where this matters a ton is _just_ the ETL in to a neural network.

You're loading data from some disk (that may or may not be networked).

What's the input format of that data? What's the block size?

Say it's image blobs stored on hdfs. You know ahead of time your gpu can fit an optimal batch size of 32 in to memory because your image resolution is high. You then need to go back and prepare the data for loading. To get the optimal performance for data loading, you need that data loading to be aligned with hdfs block size (otherwise you cause an additional hdfs seek) and saved in whatever your favorite vector format is. Then to evaluate how fast a "minibatch" will be processed, you need to figure out how fast your architecture is in addition to how the communication with the gpu is handled.

I think overall this is just a hairy subject to cover in a small blog post.

While these "programming flavors" are very similar, they are optimized differently in practice.

If you think about spark, the "nodes" are more general purpose operations with a ton of JVM based code gen happening.

It knows about different "edges/ops" in addition to having a registered schema. It's lazily initialized with a DAG built with code gen after the declarations are done.

A "tensor graph" doesn't have types beyond knowing what device it's running on and perhaps a data type like float/double/half.

</comment></comment></comment><comment><USER4> To be honest, I think the blog post lags a lot of details and gives only a - very - basic overview of the field (or I'm missing the point). I've been working on distributed optimization systems for over a year now [5], and the field evolved drastically in this time. The most profound contribution is from [1] imho, where they show that asynchronous optimization can be defined in terms of implicit momentum.

Nevertheless, during my research I found that local work matters a lot! Especially when you have large communication constraints. I addressed this in my master thesis [2], where I introduce 2 novel distributed optimization techniques based on a redefinition of parameter staleness. In this redefinition of parameter staleness, I define staleness in terms of the distance (or difference) between two parameterizations. In a sense, this allows you to automatically tune the amount of work done by a worker. For instance, if multiple workers compute gradients based on older parameterizations which were close to each other, they do not inflict negative work. Imagine it as follows, at the start of an optimization process, you will have relatively large gradients compared to when you are close to an optimum. As a result, having a lot of asynchronous workers at the start of the optimization process (using DOWNPOUR) could really hurt the convergence capabilities, and could even cause divergence (for GIF see [3] and [4]).

To counter this, I introduce AGN (Accumulated Gradient Normalization) as a mechanism to compute a better single gradient update based on increased local exploration. Basically, you compute a sequence of first-order gradients, and then normalize them with the number of "exploration steps" to produce a better parameter server update (this also reduces the magnitude of the vector, reducing the amount of staleness injected in the system, see Chapter 3 of my thesis).

Nevertheless, divergent behavior can still be observed as the number of asynchronous workers increases. This can be countered by constructing a per- weight learning rate based on the difference between the parameterization of the central variable (parameterization held by the parameter server), and the - current - parameterization of the worker (see Chapter 4). Intuitively, this mechanism will nullify the contributions of workers which are "too far" from the current central variable.

[1] [http://stanford.edu/~imit/tuneyourmomentum/theory/](http://stanford.edu/~imit/tuneyourmomentum/theory/) (paper in blogpost) [2] [https://github.com/JoeriHermans/master- thesis](https://github.com/JoeriHermans/master-thesis) [3] Animation convergence [http://joerihermans.com/media/blog/ddl/downpour.gif](http://joerihermans.com/media/blog/ddl/downpour.gif) [4] Animation divergence [http://joerihermans.com/media/blog/ddl/downpour_momentum.gif](http://joerihermans.com/media/blog/ddl/downpour_momentum.gif) [5] [https://github.com/cerndb/dist-keras](https://github.com/cerndb/dist- keras)

<comment><USER5> I'm not convinced that SGD is the answer for large scale distributed problems. It is certainly the best answer for single node applications, but it might not be the best for distributed training. The search for effective optimization algorithms in machine learning is ongoing.

The big problems for SGD at massively parallel scale:

* SGD does not parallelize well

* SGD is a first order method affected by ill-conditioning

* SGD is too noisy when high accuracy is desired</comment></comment>


The Winnebago Heli-Home Was a Real Flying RV - <AUTHOR> https://www.thedrive.com/news/34753/the-winnebago-heli-home-was-a-real-flying-rv-that-needs-to-make-a-comeback-in-2020 <comment><USER2> "The thing is, helicopters are different from planes. An airplane by its very nature wants to fly and, if not interfered with too strongly by unusual events or by a deliberately incompetent pilot, it will fly. A helicopter does not want to fly. It is maintained in the air by a variety of forces and controls working in opposition to each other and, if there is any disturbance in this delicate balance, the helicopter stops flying; immediately and disastrously. There is no such thing as a gliding helicopter."*

"This is why being a helicopter pilot is so different from being an airplane pilot, and why in generality, airplane pilots are open, clear-eyed, buoyant extroverts, and helicopter pilots are brooding introspective anticipators of trouble. They know if something bad has not happened it is about to."

Harry Reasoner

February 16, 1971

* Helicopters do autorotate which is a glide, sort of, at least with sufficient translational lift and rotor speed.

<comment><USER3> This is a fun quote, but I don't think it's accurate. Source: [http://www.todayifoundout.com/index.php/2012/05/helicopters-...](http://www.todayifoundout.com/index.php/2012/05/helicopters- wont-just-fall-like-a-rock-if-the-engine-dies-they-usually-can-be-landed- safely-this-way/)

<comment><USER2> It is not accurate, hence my footnote. If one has sufficient skill, altitude and/or forward speed an autorotation can be made to a forced landing, and arguably more safely than a fixed-wing forced landing. Of course, this depends on the main rotor and flight controls still working well enough to perform an autorotation.

<comment><USER4> Years ago I spent a lot of time in helicopters in remote Alaskan mountain ranges with pretty high-end helicopter pilots and got to know some them pretty well. I think the "brooding introspective anticipators of trouble" is a good description.

I know that many of them practiced autorotation nearly every time they left a mountain peak to descend back down to the glacier floor.

I also once got to fly a 400+ mile trip over rugged wilderness and the pilot was always thinking about the next possible emergency landing spot. The flight altitude was often adjusted for this as well if over terrain where options would be limited (such as water). Well maintained helicopters - nothing wrong with them - just always being aware of your options when in the middle of nowhere.

</comment></comment></comment></comment><comment><USER5> In the few helicopters ive flown in, the flight crew meticulously accounts for the mass and location of every person and large item on board before taking off. It seems like it would be really inconvenient to do that on the scale of an rv, especially if there are water and sewage tanks etc to think about.

<comment><USER6> > flight crew meticulously accounts for the mass

Exactly. I've toyed with the idea of living on a plane or a boat, and the boat is obviously practical and (relatively) cheap, while the plane (or heli, in this case) is enormously hobbled by the mass constraint.

You can find an RV for the road to live in, you can find a boat to live on, but there's no solution at all really in the aviation space unless you go quite big and thus super expensive [1].

Quite some people live on a land or water vehicle, but I don't think anyone realistically lives on an aircraft for an extended time, do they? The 21st century just doesn't deliver... ;-)

[1] The price of of boats and planes tends to grow super cubically with length (exponent of maybe 3.5 or so), so twice as long will be 10x expensive (very rough rule of thumb, obviously).

<comment><USER7> I've always associated even small boats with great expense. Does living in them reduce the cost since you're not just storing it somewhere, paying for it to float empty in a harbor?

<comment><USER8> I'm interested in boating, but haven't gotten into it. I have read a lot, for what that's worth. My impression is that people have the wrong mental model for boat economics and get screwed over because of it.

The core problem is that the total cost of ownership for a boat is a small fraction of its purchase price. Also, the incremental cost of owning one _even when not using it_ is relatively high.

Think of cars. Let's say you get a little extra cash and you feel like having something fun to drive. You've got some extra space on your driveway. You get, I don't know, a used sports car or a camper van or something. Once you've gotten it, most of the expenditure is done. The insurance is cheap since it's not a daily drive. You've got space for it already.

In other words, if you can afford to _buy_ a car, you can probably afford to _own_ a car.

Any boat larger than a fishing boat that you can trailer yourself and store in your yard is the polar opposite of that.

Boats are actually pretty cheap to _buy_. There is a huge used market for boats driving prices down. There are many many people looking to _not_ own a boat (which should probably be causing alarm bells to ring in your head). You can often find sailboats for _free_.

The reason is that the cost to _own_ them is quite high. If you keep the boat in the water, you're paying rent at a marina slip. That's expensive in desireable areas. Populated coastal areas are obviously almost always desirable areas. Also, the water and its contents are constantly doing a number on the boat. Barnacles grow on it. The salt corrodes any exposed metal. Sunlight and UV light break down anything plastic. Every day of the boat's life is burning money _regardless of whether or not you use the boat._

You can store it out of the water, and that helps. But that makes it even harder to take the boat out, so maybe you're not burning as much money every month, but you're also using it even less.

This does _not_ mean that boating sucks or is unaffordable. It just means you need to have the right mindset for it. Don't think of a boat as a toy. And object that you can buy and put away when not in use. Think of it more like a pet, like a horse.

If you're rich, you can be a horse owner if you want and treat it like a toy. Throw many at it, pay stablehands to take care of the horse when you aren't around, and don't care about the money you're burning even when you aren't riding.

If you're not rich, you can also be a happy horse owner. But it has to be _your thing_. It will be a major part of your life, and occupy a very large slice of your free time. You'll move to the country to make it more affordable. You'll spend time every day taking care of your horse and enjoy the satisfaction of doing the work yourself. You may not have much time for other pursuits, but it will be _your horse_ through and through.

I look at boats the same way. You be happy using it a few times a year if you're rich and don't mind throwing money at it. Or you can make it your thing and use it so frequently that the monthly expenses are amortized across a large volume of joyful use. But what you can't do is be a happy casual boat user if you aren't wealthy.

<comment><USER9> > Every day of the boat's life is burning money

Yep, "a hole in the water you throw money into" is the definition I heard ;-)

<comment><USER4> Another good one is sailboat racing: standing in a cold shower, fully dressed, while ripping up thousand dollar bills.

</comment></comment></comment></comment></comment></comment><comment><USER10> See also, the seaplane-yacht: [http://www.vintagewings.ca/VintageNews/Stories/tabid/116/art...](http://www.vintagewings.ca/VintageNews/Stories/tabid/116/articleType/ArticleView/articleId/424/language/fr- FR/Sweet-Dreams-and-Nightmares.aspx)

<comment><USER11> This reminds me of another interesting flying boat story;

[https://medium.com/s/story/the-long-way-round-the-plane- that...](https://medium.com/s/story/the-long-way-round-the-plane-that- accidentally-circumnavigated-the-world-c04ca734c6bb)

<comment><USER12> Another great story, thanks for sharing!

</comment></comment></comment><comment><USER13> It's funny that they thought a $10,000 a week rental made it any more affordable than the $800,000 price tag. The Venn diagram of people who can afford those is a circle.

<comment><USER14> $10k to rent for one week in a novelty once-in-a-lifetime Heli-Home? I've seen people spend more on their bachelor party weekends in vegas and they can't even remember what they did.

Those same people don't even spend $800k on their house.

<comment><USER15> Those are 1975 dollars they are talking about so roughly $50,000/week or $4M purchase price today.

<comment><USER16> > Even a base model would run you around $880,000 _in today 's money_, and a > top of the line version was $1.4 million _when adjusted for inflation_.

</comment></comment></comment></comment><comment><USER17> I see the submitter omitted the end of the original title: "...That Needs to Make a Comeback in 2020". I guess they agree with my sentiment that no, it does not. Even if you ignore the most obvious environmental aspects (the fuel consumption and noise pollution), there is still one other I can think of: even if somebody invented a noiseless anti-gravity drive and the "Mr. Fusion" required to power it, it still wouldn't be a good idea for everyone to be able to simply fly and land anywhere they want...

> _All in all, the company would go on to sell only 8 Heli-Homes to customers, > none of which survive today._

This, on the other hand, is regrettable from a curiosity perspective...

<comment><AUTHOR> No, I did actually submit the full title, but it was truncated to "that needs to make a comeback" (I just omitted "in 2020" as it wouldn't fit). I see one of the admins has changed the title to remove the "needs to make a comeback" bit entirely.

</comment></comment><comment><USER18> This reminds me of Spaceballs: The Movie :)

[https://www.syfy.com/sites/syfy/files/styles/1400xauto/publi...](https://www.syfy.com/sites/syfy/files/styles/1400xauto/public/wire/legacy/Screen_Shot_2017-06-09_at_7.19.18_PM.png)

</comment><comment><USER19> I wonder if you could buy something big like an ex-Military Chinook or a Russian Mi-26, then kit it out and customize it like the van converters do?

<comment><USER20> I don't see why not, as that's pretty much what Winnebago did:

 _Instead, beginning in 1975 [Winnebago] worked with a company called Orlando Helicopter Airways to acquire a fleet of ex-military Siksorky S-55 transport helicopters (also known as the H-19) and convert these surplus machines into something a little more homey._

</comment></comment><comment><USER21> This was likely a conversion of Sikorski S-55 helicopters that were retired from the US military around 1969/1970.

The look of this helicopter reminds me of the outwardly similar Sikorski S-58 that was used in the TV series "Riptide". I saw a few episodes of that as a child and I guess I'll never be able to forget that particular association.

</comment><comment><USER22> I wish personal aviation was a little more accessible. The only innovation I can think of that would really change the math on flying would be very high density batteries, and electric planes. Otherwise flying costs are going to continue to be dominated by expensive engine maintenance.

<comment><AUTHOR> Light sport aircraft (in USA) or advanced ultralights (Canada) are a lot more affordable than certified aircraft.

<comment><USER22> The hope with light sport aircraft was that prices would drop. But it's minor, a Cessna 172 is still cheaper than what you can get in light sport

<comment><AUTHOR> Well, a 1970s 172 is cheaper than a new light sport aircraft, so it's not really a fair comparison.

I was hoping with the part 23 rewrite we might get cheaper new aircraft, but that hasn't happened.

</comment></comment></comment></comment><comment><USER23> For wildlife watching in places like Siberia or Alaska this would be pretty cool. Fly to the middle of nowhere and camp in comfort. I wonder how often such a thing needs maintenance.

</comment><comment><USER24> I showed the magazine cover to my daughter.

"I want a boat helicopter... er.. house!"

</comment><comment><USER25> Lonestarrrr

(From Spaceballs the movie)</comment>


Ask HN: Have you recently used Bitcoin for buying something? - <AUTHOR> I just want to know if bitcoins are being used legally or illegally to buy some product or service. Or are they just being stocked? <comment><USER2> I bought an ENS name on the Ethereum network/chain, to support a crowdfunding initiative to produce these hardware Ethereum wallets: [https://firefly.city/](https://firefly.city/)

It's not technically buying a thing, but I would not have been giving this guy money if he hadn't shown me just how easy it is for him to get my money. Honestly I thought the payment gateway was so cool, I don't even care if he does make the hardware wallets.

(And I think if I read the page correctly, the funds will go toward the gadget assuming he does make them.)

</comment><comment><USER3> Yes, within the last week I used BTC to purchase software and make donations to youtube content creators

</comment><comment><USER4> My lunch, right now

</comment><comment><USER5> i bought an external hard drive from a local electronics webshop</comment>


ZFS Boot Environments at PBUG - <AUTHOR> https://vermaden.wordpress.com/2018/07/30/zfs-boot-environments-at-pbug/ <comment><AUTHOR> The video from the __ZFS Boot Environments at PBUG __talk has been uploaded online and its available here –[https://youtu.be/t84s8DSgJRs](https://youtu.be/t84s8DSgJRs) – unfortunately its in Polish not English and subtitles are not available.</comment>


High Performance Networking in Google Chrome - <AUTHOR> http://www.igvita.com/posa/high-performance-networking-in-google-chrome/

<comment><USER3> Awesome article. I feel like the most game changing part of chrome is that Google turned it into a web app, that is it is always up to date and you never have to install anything (compared to the mess that is IE 7-10). Everyone gets the next network improvements / security fixes. It is so simple and mind boggling at the same time. I know this isn't the main point of the article, but dealing with microsoft stuff recently really hammers this point home.

<comment><USER4> IE 10 is auto updated as part of Windows Update, is that too messy too?

<comment><USER5> Requires Win7 SP1 higher first.

Chrome only needs WinXP SP2, while still supporting Mac and Linux.

This is a big deal at least with my customers. It's just silly that Chrome has broader Windows support than IE. IE should not be so dependent on the base OS.

</comment></comment></comment><comment><USER6> Here is another optimization every browser could (and should) take advantage of, but currently does not: [http://igorpartola.com/programming/how-browsers- should-conne...](http://igorpartola.com/programming/how-browsers-should- connect-to-web-servers)

Basically, if there are multiple IP's behind a hostname, connect a non- blocking socket to each, then do a select/poll/epoll/kqueue on all of them. Then, once at least one returns, immediately close the rest and use the newly established connection.

This has three nice side-effects. First, if one of the hosts is down, it will never be selected, unlike now when there is a 1 in N chance that you'll be stuck waiting for a very long time. Second, you don't need to explicitly check whether the IPv4 vs IPv6 stacks are operational. A connection that is returned to you is the one that works, regardless of the underlying protocol. Third, this provides crude load balancing. Presumably the host that connected the fastest is also the fastest to process your request. The my blog post for some numbers.

<comment><AUTHOR> Yup! In fact, I didn't cover it in the writeup, but Chrome and other browsers already do this kind of thing on multiple layers: IPv4 and IPv6 (see Happy Eyeballs), plus to recover from lost SYN's.

<comment><USER6> Interesting. One of the apps I run is split between two servers. When I was bringing everything up, if one of the severs was down there was always a 50% chance of about a 40 second blank screen before the other server was picked up. If the server that was chosen was in the DNS cache, there was a 100% chance of blank screen. Admittedly, this was about 2 years ago, so things might have changed, but the reliability properties didn't seem to be there at the time.

</comment></comment></comment><comment><USER7> Ilya has never disappointed me with any of his articles. They are always top notch, and this one is no exception. As a Chrome user, seeing how things work behind the scenes (and why) is fascinating!

<comment><USER7> After processing the full article, I'm completely amazed at all the extreme lengths Chrome goes employs to speed page loading. From the networking stack, with it's abundance of optimisations and resource reuse, to the massive (and slightly scary) intelligence of the predictions stack, it all combines to make one heck of a browser!

Even if Chrome had only 10% of its current features, I appreciate the fact that it provided competition into the browser market and spurred innovation by _everyone_. The benefit to the internet community as a whole is tremendous.

</comment></comment><comment><USER8> Interesting note that the network stack is implemented "as a mostly single- threaded (there are separate cache and proxy threads), cross-platform library."

I wonder if someone could extract that lib into its own project. It would be great to have a version of AFNetworking or Python's requests library built on top of this -- in order to take advantage of the advanced socket reuse and late binding stuff that he describes in the article.

But that's all without really looking at the code. Maybe there's just too much Chrome-specific stuff there.

<comment><AUTHOR> It already exists! And works very well! Check it out: <http://code.google.com/p/chromiumembedded/>

</comment></comment><comment><USER9> Ilya always writes the best performance articles. Really nicely organised page too.

</comment><comment><USER10> Great article. Chrome is an amazing piece of software.

Talking about web browsers, I can't wait for the next big step. Mozilla and Google are already moving ahead: When web browsers become the whole OS. With web apps becoming fully capable, and with native apps increasingly network integrated, the distinction is becoming meaningless.

In that vision of web browsers as OSs, there is a big limitation. More than some still incomplete APIs, or a few ones still missing, the problem is the whole development story. Web development is still a chaos. The web platform, is a soup with far too many ingredients. Why we still have to develop application's UIs, using a document markup engine?.

The web is rich. There are all kinds of resources. It is non-sense to express all of these resources, with a single development paradigm: html-css- javascript. Native development, is more flexible. There is the possibility of choosing the right tool for the job. I hope that one day not so far away, browsers will gain similar capabilities. Support for multiple separated, specialized development environments.

<comment><USER11> I think the necessary reworking is going to happen, but it will take a few cycles through the "Wheel of Reincarnation" to make it fully realized - <USER2> the rendering example, we now have Canvas and WebGL; instead of relying on the browser, you can create something completely customized, with the downside being that many of the supporting features of the document-renderer paradigm are lost. But it's the right technology for certain kinds of applications, and others can be rebuilt on top of that, and eventually you'll get frameworks, and so on.

At each step, not everyone will be 100% happy with how things are organized, but enough of it will work that it expands the frontier of what kinds of software can be built on the web. We've been through this before - the web has worked because its paradigms keep getting stretched beyond expectations.

</comment></comment><comment><USER12> Great article but I wish some discussion would have been directed at the security implications of all this prefetching.

<comment><USER13> Can you expand on this a little - do you know of any particular security concerns with prefetching?

<comment><USER12> IIRC, there are issues with leaking URLs just as with OCSP lookups. So it's more privacy related than security. I was in a hurry when I typed that earlier. But if you think about it, there's still a chance of sending company internal URLs to a third party which given enough data would start to build up a view of the intranet. We have no idea if google then feeds this into their crawler to get more of the hidden web and if there is a misconfiguration elsewhere would then cause results to be publicly visible. See posts about visible printers etc. in the last couple of days.

<comment><USER14> Chromium builds predictive models which are stored client-side. They are not uploaded to a third party server, like Google.

</comment></comment></comment></comment><comment><USER15> Ot here, the network might be high performance but the socket API in Chrome need some fix.

<https://code.google.com/p/chromium/issues/detail?id=170595>

the chrome.socket API is really awesome, it can listen to tcp/udp connections, works like a mini NodeJS. It's a shame they didn't make it more stable.

<comment><USER16> I coded that demo, it is not the Chrome Socket API that is the problem, it is that I don't error properly in the code and it blocks the port like any socket server would.

<comment><USER15> Thanks for the demo

How to catch that error? There's no exception callback in the doc

<http://developer.chrome.com/apps/socket.html>

And if the port is already blocked, how to recover?

</comment></comment></comment><comment><USER17> Wonderful wonderful article. Is there somewhere I could pre-order the book (which would be the first time that I have ever done so).

</comment><comment><USER18> I am wondering about the kernel piece. Does Chrome on Windows have any code that is loaded in the kernel? I'd be quite surprised if they did. Any Chrome expert know?

<comment><USER19> I don't believe he actually means the OS Kernel. It's a userspace "kernel" in that it coordinates the traffic and behavior for all of the subprocesses.

<comment><AUTHOR> Right. The "browser kernel" process, which is the coordinator for all the network activity, and a dozen other things.

</comment></comment></comment><comment><USER20> This pre-fetching behavior reminds me of Amazon Silk. However Silk leverages EC2, vs. doing all of the analytics locally.

</comment><comment><USER21> Ilya Grigorik delivers, again.

</comment><comment><USER22> AOSA are very nice books. It's exciting that another (POSA) is coming.

<comment><USER23> They really need another acronym. I thought you meant another POSA[1] is coming.

[1] <http://www.cs.wustl.edu/~schmidt/POSA/>

<comment><USER22> Good point. I hate it when folks make up names and acronyms without checking first for existing work, _at least in related areas_.

</comment></comment></comment><comment><USER24> awesome reading. other posts by Ilya Grigorik are great too.

</comment><comment><USER25> Reading this @ FF :)</comment>


Jikes RVM : JVM in Java - <AUTHOR> http://jikesrvm.org/

<comment><USER2> >> Jikes RVM is unique in that it is the first self-bootstrapped virtual machine written entirely in the Java programming language, i.e., its Java code runs on itself, without requiring a second virtual machine.

Whoa... how does that work?

<comment><USER3> You might start with this: [http://en.wikipedia.org/wiki/Metacircular_interpreter#Exampl...](http://en.wikipedia.org/wiki/Metacircular_interpreter#Examples)

Maxine is also interesting, it's aimed at being a production JVM (someday), is under heavy development even after Oracle acquired Sun and is exclusively 64-bit CPU targeted, X86-64 and SPARC.

Jikes RVM has and continues to be _heavily_ used for research of all sorts (as a random example, for GC research). x86-32 and PPC 32 or 64 bits. It's the basis of Jnode, a x86-32 OS that's 99.9% Java and the rest assembler: <http://en.wikipedia.org/wiki/Jnode>.</comment></comment>


How to Become a Better Product Leader - <AUTHOR> https://blog.orangecaffeine.com/how-to-become-a-better-product-manager-948f8ffa7881

<comment><USER2> I read quite a bit about leadership and have even graduated from a couple leadership programs. During this time I have learned many lessons including, "When you're green you're growing, when you're ripe you rot". Thank you for this article because in order to be great one must never stop learning and relearning truths. Even the greatest team can fail without proper leadership and vision.</comment>


U.S. Alleges $6 Billion Money-Laundering Operation Using Virtual Currency - <AUTHOR> http://online.wsj.com/article/SB10001424127887323855804578511121238052256.html <comment><USER2> "The system allegedly was designed to give criminals a way to move money earned from credit-card fraud, online Ponzi schemes, child pornography and other crimes without being detected by law enforcement."

This is like saying Henry Ford designed the modern automobile to be used in bank robberies, drunk driving murders, hit-and-run maimings, and kidnapping.

Yes, virtual currency is attractive to criminals. It's also attractive to law- abiding citizens, many of whom do not like to be lumped into one big morass with "organized crime" stuck on top as a label. We're stepping dangerously close to "If criminals like doing it, it must be bad" reasoning.

ADD: I also note this section: "...On Tuesday, in the first use of the 2001 Patriot Act against a virtual currency, the Treasury Department invoked a section of the law to choke off Liberty Reserve from the U.S. financial system..."

Well, there's your terrorism act, used to control crime via virtual currency. We get scared of one thing, pass a law, and then see it used in a completely different context. The current American kerfuffle involving investigating reporters is tied to a _WWI_ -era law that's almost never used. Amazing the tools American prosecutors have available to them. One could say overbearing, even.

ADD2: Nobody is saying they are innocent. The point here is that these guys are being shut down (and they probably need to be shut down) by procedures that have broad application to all kinds of legitimate use as well. These are very broad and powerful tools we've given the state. We should take some time and think about if they need to be more narrowly-focused. The initial Patriot Act had an expiration date. For a reason.

<comment><USER3> It's really hard to claim that the LR guys are innocent. The comparison with Ford is completely out. If you read the indictment itself it's fairly clear that they were knowingly building a system to work around money laundering laws (including the Patriot Act) and went to great difficulty to do so.

If they come after bitcoin and you make the same comment, I'll be more sympathetic.

<comment><USER4> > If you read the indictment itself it's fairly clear that they were knowingly > building a system to work around money laundering laws (including the > Patriot Act) and went to great difficulty to do so.

Reading an indictment to determine whether the accused did something wrong is about as sensible as watching Fox News to determine whether Barack Obama is a socialist. All indictments paint the defendants as guilty.

And since when is working around the law a crime? It's almost by definition not a crime, because the whole idea is to accomplish the goal you set out to achieve _without_ breaking the law.

<comment><USER5>
      | And since when is working around the
      | law a crime?

Finding a loophole in the law, may make what you did technically legal, but it doesn't make it all of the sudden a 'good' thing. If I found a loophole in the laws that let me defraud you of all your money, while technically staying inside of the law, would I not still be a fraudster/conman, even if I didn't run afowl of any 'fraud' laws?

<comment><USER4> Your scenario is assuming the conclusion. Defrauding someone will cause you to be guilty of fraud, because that's what "defraud" means.

What you mean to say is that there are some things which are contemptible but still technically legal. But the converse is also true: Some things remain legally prohibited that would otherwise be morally unobjectionable. Legality and morality are independent variables.

Whether doing a thing is 'good' or not has nothing to do with whether that thing is legal, "technically legal" or totally illegal. All its legal status tells you is whether you can expect to be convicted of it if accused.

<comment><USER5>
      | Defrauding someone will cause you to be
      | guilty of fraud, because that's what
      | "defraud" means.

The legal definition and the 'common' definition of something don't always match up.

</comment></comment></comment></comment></comment></comment><comment><USER6> HSBC got away with paying a fee of under $2 billion for not monitoring $60 trillion worth of wire transfers. They made a profit of something like $15 billion during that year, so their fines barely even touched their profits.

The moral of the story here is if you're going to launder money, you should launder a whole shitload of it. Because then you only have to pay a tiny percentage worth in fees. If you don't launder enough, you'll end up broke and in prison.

Imagine if this kind of logic applied to other crimes. You could have a sex slave operation with one prostitute and get caught and go to jail for the rest of your life. But if you run a massive sex-slave industry with tens of thousands of slaves (children for the hell of it), and made $10 billion a year, you'd occasionally get a fine of 10% of your profits that year and be allowed to continue on as if nothing happened...?

<comment><USER7> > if you're going to launder money, you should launder a whole shitload of it

Yes. Or rather, if you're going to launder money, make sure you're making healthy campaign contributions, hiring ex-politicians and their staffers as lobbyists, oiling the great lobbying machine, etc...

For those who haven't read it, Lessig has written a rather nice book on exactly how this kind of "soft corruption" works: [http://www.amazon.com/Republic-Lost-Money-Corrupts- Congress/...](http://www.amazon.com/Republic-Lost-Money-Corrupts- Congress/dp/0446576433)

<comment><USER8> For a more visual equivalent (lower attention span required) check out <http://topdocumentaryfilms.com/money-lobby/>

</comment></comment></comment><comment><USER9> Bizarrely, the US is demanding the charged parties to forfeit $6B USD. I'm sure they know that the $6B doesn't exist, but it seems that it should be illegal to demand that it be forfeited.

The $6B total appears to be each transaction added. If $100 got transfered within LD 10 times the government says there should be $1,000 (and is demanding it be given to the US gov't), but in reality only $100 ever existed and it's quite likely that after being transferred internally it had been transferred out of LD.

<comment><USER10> > Bizarrely, the US is demanding the charged parties to forfeit $6B USD.

It's not bizarre at all. This is regular practice. They name a ludicrous figure, freeze assets, and seize absolutely everything they can get their hands on.

1\. Most prosecutor's offices in the US are funded by criminal asset seizures.

2\. If you had your assets frozen, guess what? Can't hire an expensive defense attorney that can actually get your ass out of trouble and potentially keep all that $$$.

<comment><USER11> Regarding the first point, not that I don't believe you, but do you have a cite?

<comment><USER12> [http://www.ij.org/policing-for-profit-the-abuse-of-civil- ass...](http://www.ij.org/policing-for-profit-the-abuse-of-civil-asset- forfeiture-4)

Whenever you see a press conference when a bunch of police agencies are crowing about a big bust, the brass are all there to accept credit, and their agencies portion of the take.

</comment></comment></comment></comment><comment><USER13> A big warning side for Silk Road and MtGox, I would guess.

If you let a large proportion of Bitcoin transactions become linked with illegal things like drugs, credit card fraud, and money laundering, the law will certainly figure out a way to shut it down.

So I guess the interesting question is how the Bitcoin community can police itself to ensure that these types of transactions (while ultimately not avoidable altogether) remain a minor part of the whole.

<comment><USER9> > If you let a large proportion of Bitcoin transactions become linked with > illegal things like drugs, credit card fraud, and money laundering, the law > will certainly figure out a way to shut it down.

That hasn't happened with cash [yet]. Humorously, if the idea of cash was new today like digital currencies are it would be outlawed for our "safety".

<comment><USER14> This is a rather tired argument. Try to get $50,000 of cash from a bank--you won't be able to without going through some anti-laundering rigamarole. Try to transport $50,000 of cash to another country--if you get caught, you're going to be answering a lot of questions about it.

This is not a crackdown on virtual currencies--it's a crackdown on unlicensed money transmitters. If they follow the law, they can trade bitcoin without issue.

The only problem I can imagine having with this is if you don't believe in anti-money laundering legislation, which is one of the best weapons governments have against organized crime, human traffickers and terrorist groups.

<comment><USER15> There are a lot of things that are great weapons against organized crime, human traffickers, and terrorist groups that are unacceptable as law enforcement techniques. The fact that something is a good weapon against crime is not sufficient justification.

It also needs to be shown that such weapons are not unduly harmful to law- abiding citizens.

Honestly, it's not something I'd thought about much before all the recent government crackdowns on money transmitters. But when I stop to take a look at it, it seems to me that the freedom to exchange money without government interference is close to a fundamental human right.

When I look at it carefully, it seems very very strange that we've accepted that governments have the right to minutely examine what we do with the fruits of our labors.

I get that it's a good tool to stop crime, but so is listening to every phone call. So is recording every move every person makes in public. We're starting to see resistance to movement in those directions, why should our economic actions be subject to the same level of scrutiny?

I'm not ready to throw out the whole shebang, but I've started to think there should be some firm limits.

<comment><USER16> I don't agree with you.

This should be a simple A/B test in my opinion.

Inspect every single monetary transaction. Measure the results.

Do not inspect every monetary transaction. Measure the results.

Has money laundering and crime increase or decreased? If it has increased, inspect every monetary transaction, assuming all other variables stay constant.

<comment><USER4> > assuming all other variables stay constant.

This is where you fail.

Let's suppose that monitoring all monetary transactions actually does reduce crime.

But the apparatus for doing so legitimizes similar actions by oppressive governments, which use it to suppress democracy activists rather than terrorists, and in so doing use the tools we built which they would not have had the funds or local knowledge to build themselves. And if you don't care about those people, imagine what happens if our own government should ever turn malicious, or fall under foreign control, and have this ability to prevent our citizens from funding a resistance.

Then there is the danger of all this data falling into the wrong hands. Requiring it to be collected creates a secret which in the aggregate amounts to a national security threat. If you know who is paying whom for what and in what amount, you can commit industrial espionage on a massive scale. You know where strategic weaknesses are because you know which company doesn't purchase reinforcing materials for its products, you know how much capital an important defense contractor has in reserve before it goes into financial straits that impair its ability to operate effectively, you know who isn't insured against specific risks and could be bankrupted if they were contrived to occur, etc.

This is effectively the same trouble as mandating lawful intercept backdoors. The damage you cause by creating immensely powerful surveillance tools that inevitably fall into the wrong hands by far outweighs the cost of requiring law enforcement to use the more traditional methods of catching criminals.

<comment><USER17> Good thoughts. Our own government couldn't be trusted with this today. The US has a recent history of thwarting and toppling democracy, ignoring our Constitution while supporting oppressive governments.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Looks like they are circling MtGox. Technocash is the bank account mentioned here: [http://www.smh.com.au/it-pro/security-it/westpac-caught- up-i...](http://www.smh.com.au/it-pro/security-it/westpac-caught-up-in-worlds- biggest-money-laundering-sting-20130529-2naa8.html)

Not many ways into MtGox now.

From MtGox:

Transaction Limits

Deposits

All methods below do not have deposit limits:

Bitcoin - For everyone.

LibertyReserve - Through AurumXchange and Bitinstant only

OKPAY - For everyone has an OKPay account.

Japanese Domestic Transfer - For Japanese residents who have a "verified" account with us.

Technocash - Only for Australian residents who have a "verified" account.

Wire - For "verified" or "trusted" account status. Please note that we are unable to accept funds coming from any entity or country listed by the OFAC*

SEPA - In order to make Euro deposits you need to have a "verified" or "trusted" account status.

To check if your account has been "trusted" or "verified" please visit: <https://mtgox.com/forms/verification> to apply.

</comment><comment><USER19> It seems this is a direct step towards putting the brakes on Bitcoin. You can bet the new Bitcoin startup investors are recalculating their risk. And that was the goal with the timing of this takedown- to slow future institutional investment in BTC. The govt knows it cannot take down the protocol itself, much like bit torrent, however it can make local corporations through a straw. On the same token, savvy bitcoin startup investors also realize that bitcoin will be around until Star Trek as a sound mathematical model cannot be destroyed by any govt.

<comment><USER20> I'd personally look to how governments around the world have tried to deal with Bittorrents.

1) Shutting down big torrent sites by modifying laws (for example, making linking to torrents illegal)

2) ISPs blocking the big sites domains like piratebay

3) Fining consumer users (who failed to be anonymous with VPNs and other tools)

4) Attacking the big users of the network (seed boxes, pirate groups or in the context of BTC: miners)

The other approach is make the conversion of state currency into BTC illegal. But the implications of that are unclear. Would people adopt a different crypto-currency? Would all crypto-currencies be banned? Could a BTC black market still exist like drugs?

<comment><USER21> > The other approach is make the conversion of state currency into BTC > illegal. But the implications of that are unclear. Would people adopt a > different crypto-currency? Would all crypto-currencies be banned? Could a > BTC black market still exist like drugs?

I think more than likely it would be like torrents are now: a large amount of the tech-savvy population uses them and loves them, but a lot of people are afraid they'll get sued or have a letter written to their house from their ISP (which means nothing), and would rather just pay $7.99/month for a worse selection on Netflix and maintain a peace of mind.

</comment></comment></comment><comment><USER22> I knew once the likes of the Wall Street Journal and New York Times started writing about Bitcoin it was only a matter of time before the Government initiated its plan to discredit and eventually make the anonymous and decentralised currency illegal.

"We need a way to publicly discredit this non-controllable currency alternative without raising suspicion"

"Well sir, I have a plan. How about we tell the public only criminals are using Bitcoin to launder money, criminals are selling guns and drugs to students and paedophiles are using it to sell child pornography. We'll make the public eventually beg us to ban this currency and when people complain we are being unreasonable or have ulterior motives we can proudly say we are only doing what you asked us to"

First and foremost money laundering isn't a new practice. Mobsters in the 20's were laundering money, Laundromats, cafes and nightclubs are perfect fronts for money laundering operations as well. Yes, no doubt Bitcoin is being used for nefarious purposes (look at Silk Road for a perfect example), but lets not lose our cool over this.

What we are starting to see is a coordinated effort by the US to remove the threat that is Bitcoin. While I have no conclusive proof that is the case, it's not rocket science that too many people benefit from the current monetary system to not want to see it become less relevant or have its dominance threatened in any way, way or form.

The powers that be didn't think much of it in the beginning, but Bitcoin is starting to gain a lot of traction, not to mention we are starting to see the currency stabilise.

<comment><USER23> i hate to admit it, but where there is smoke, there is fire.

I predicted that the financial elites who owns the banks and control cashflow (such as the holders of shares of the privately owned fed reserve) would not want a form of currency they cannot debase at their will. Gold was first to go in the 70's, and now bitcoin, having similar properties of gold, is on the crosshairs. I can only just hope the general public has enough sense to see through propaganda. Bitcoin survival depends on it going mainstream, and its the one weakness no technology can solve.

</comment></comment><comment><USER24> I think by "money laundering" the governments of the world are referring to untaxed income. God forbid the peasants transfer money between countries without being taxed.

</comment><comment><USER25> How is this any different than Wall Street's shenanigans? Serious question

<comment><USER26> Wall Street, however ridiculous it might be, jumps through the necessary legal loopholes that we, as a society, have deemed necessary to perform monetary transactions at scale.

Companies like MtGox and Liberty Reserve simply decided to skirt the envelope and paid the price. The answer is to register as a money transmitter; simple and plain. The difference is one conforms to the law and maximizes its potential whereas the other simply willfully ignores the law. The latter does not work whereas the former is tolerated as a matter of course.

<comment><USER27> When did we as a society decide that anonymous transactions ought to be illegal? Because I would like to voice my opinion in the other way.

<comment><USER6> "We as a society" didn't really do this. The banks, however, really like this, because it solidifies their economic position. Imagine how much more money they'd make if everyone is required by law to make all their transactions _through them_.

Who do you think is trying to convince people that this is the right way to do things? How long have we associated "anonymous transactions" with terrorism etc.?

Only recently, we've developed the idea that something must be wrong with you if you use cash. $100 doesn't even afford a meal for two at a nice restaurant and people look at you like you're a drug dealer if you carry a $100 bill.

<comment><USER28> > "We as a society" didn't really do this.

Yes, we most certainly did. Start with the Bank Secrecy Act which was enacted, by duly elected representatives of the People of the United States, in 1970. This group of regulations "require[s] financial institutions, which under the current definition include a broad array of entities, including banks, credit card companies, life insurers, money service businesses and broker-dealers in securities, to report certain transactions to the United States Treasury."

</comment></comment></comment></comment></comment><comment><USER29> If 30 years ago it had been known that the Internet could be used for child pornography or communicating about blowing up important buildings, I wonder what today's world would be like if today's mindset had been prevailing then.

</comment><comment><USER30> Those alleged 6 bn sound a lot like the fictitious $150k per illegally copied songs or the x bn the music industry allegedly loses due to illegal downloading.

</comment><comment><USER31> "Mr. Bharara said the exchange's clientele was largely made up of criminals, but he invited any legitimate users to contact his office to get their money back."

[http://www.nytimes.com/2013/05/29/nyregion/liberty- reserve-o...](http://www.nytimes.com/2013/05/29/nyregion/liberty-reserve- operators-accused-of-money-laundering.html)

Not sure how that would work, you might just be charged with conspiracy.

</comment><comment><USER32> Fail, WSJ, epic fail. I stopped reading at: "Officials brought charges against a group of men who allegedly manufactured an Internet-based currency to launder about $6 billion in ill-gotten gains, a sign of authorities' rising concern with digital cash." These reporters seem totally and utterly confused.

<comment><USER33> I noticed a couple of other odd tidbits:

> The rise of virtual currencies has been exemplified by bitcoin, which lets > Internet users create new money by solving complex math problems.

While technically correct, this explanation would probably give a layperson the wrong impression as to how bitcoins are mined.

> A transaction would start with one person opening a Liberty Reserve account > using a false name and address, including what prosecutors said were blatant > criminal monikers such as "Russia Hackers" or "Hacker Account."

Those are blatant criminal monikers? They sound more like trolls to me-- serious criminals are probably a bit more sophisticated in their fraud.

</comment></comment><comment><USER34> All I can say is "ouch".</comment>


Ask HN: When to establish an LLC or S-corp for a 1-person startup? - <AUTHOR> For example: Let's say Sam is currently employed by SomeStartup, Inc. As an early employee, Sam has 5% of shares in SomeStartup, Inc that have vested.
Sam also wants to create his own startup on the side, and is currently the only founder/member. The startup will be a tech business, and Sam will make the website, host it, etc.
Sam will have his own startup, and then still work at SomeStartup, but perhaps transition to an independent contractor in the future.
--- Courses of action: My (limited) understanding is that operating as a sole proprietor adds a considerable risk burden, because Sam could be sued directly in this case.
Even in the early stages of a personal startup idea, is it recommended to form an LLC? Are there certain tax or IP benefits to having the assets under an LLC as opposed to under a person in a sole proprietorship? Couldn't legitimate business expenses and travel be deductible either way? I am wondering about the factors that impact the timing of when to establish an LLC.
I have also heard about individuals establishing S-corps, but is that overkill for an early stage startup or a valid pre-emptive step?
Based on taking a look at the differences between LLCs and S-corps[0] it seems LLCs are much less of a headache for comparable benefit for very small startups, but again I am a novice in understanding business taxes.
I have also read about people creating Delaware or Nevada LLCs, but I am not sure what triggers that decision when the primary place of business is not in those states (unless it doesn't matter for websites with no physical place?)?
These kinds of scenarios are new to me, so any guidance or personal experiences are greatly appreciated, thanks!
[0] https://www.investopedia.com/articles/personal-finance/011216/s-corp-vs-llc-which-should-i-choose.asp <comment><USER2> Personally I never went beyond DBA when selling software because I don't want additional cost and hassle of maintaining LLC or S-Corp.

People register LLC in Delaware because it's usually cheapest state, laws are most understood and there are plenty services to help you do that. For example, in SF LLC is at least $800 per year to maintain ([http://sfosb.org/step-1-structure-your- business](http://sfosb.org/step-1-structure-your-business)).

Protection benefits of LLC are vastly overstated.

If someone wants to sue your business, they will. Merely defending a lawsuit can bankrupt the business, regardless of DBA vs. LLC status.

It's true that if you loose and that results in damages awarded, in some cases damages will be limited to what LLC can afford.

But in software business, where you sell $100 program or $100/year service, chances that someone can sue you for any significant amount of money are nil. That's why you don't hear about Word users suing Microsoft for millions of dollars because the software crashed and corrupted their work.

For software business the only time it would matter in practice is if you were to take a big loan and loose that money.

That is also unlikely because even if you were inclined to borrow recklessly, banks stay in business because they are able to assess risk of lending to you correctly.

Also it's important to note that there are limits to limiting liability. Bernie Madoff ran LLC and yet he's in jail. LLC doesn't shield you if you defraud.

The best way to limit you liability is:

* don't to shady stuff * don't borrow to fund risky stuff

<comment><USER3> The point of the LLC or Corp is that if someone sues your business, they can't come after your personal assets. In the parent's case, this is their vested shares of startupcorp. A separate entity limits your risk.

</comment></comment><comment><USER4> It depends a bit on where you are. In states with cheap LLCs, it is 'worth it' almost immediately. LLCs protect your personal assets against business liabilities caused by other people. If you have substantial personal assets, and the LLC is a $50-$100 one-time fee, it's a no brainer.

Granted, the LLC shield isn't foolproof, but when it works, it works — and by the time you know you'll need it, it's too late.

In states that charge a lot or that want ongoing fees, it it's a harder call. In California, for example, the LLC triggers an annual state tax. The legal liability protections are still worth something, but you're taking on some more substantial obligations, too.

</comment><comment><USER5> Assuming you're in the USA:

1\. No real tax benefits vs. sole proprietorship. You can deduct the same amount of stuff. In fact, you're taxed in exactly the same way as you are today.

2\. I formed an LLC after a few years of freelancing, mostly because I didn't want to send my SSN around on W9s via email anymore.

3\. Fellow freelancers I know have established S-Corps instead, but unless you're making $100k+, it seems like a lot more work than a single-member LLC.

<comment><USER6> If you're asked for SSN/Tax ID for W9 and/or affiliate revenue you can obtain an EIN number over the web and use that instead of SSN. (website can only be used during normal business hours for some reason.)

</comment></comment><comment><USER7> I'm think about this for a physical product company. I think from a product liability POV it makes sense to have a company.

My understand is scorp makes sense if you plan on employees. Llc if you don't.</comment>


The Mathematics Behind xkcd: A Conversation with Randall Munroe - <AUTHOR> http://www.maa.org/mathhorizons/MH-Sep2012_XKCD.html <comment><USER2> A lot of his comments remind me of the spate of xkcd-style graphing programs around here. The problem with trying to imitate Randall with a program seems to be that he isn't interested in making things repeatable. He's just very determined and imaginative, and willing to spend a weekend drawing a graph. The charm of something like the movies graph is that it's incredibly detailed, but in a very human way that implies an understanding and appreciation of those works. You could use fancy NLP on a script, but it wouldn't have any character.

I suppose this is the closest I've felt to understanding the distinction between art and just drawing.

</comment><comment><USER3> Previous submission:

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

(by me, no comments--it feels seriously weird to tell ColinWright about a previous submission)

<comment><AUTHOR> Huh - bizarre.

</comment></comment><comment><USER4> > When people look at these comics, they always assume, oh, the guy that drew > this must have done all that. But for me, I just found a cool way to get to > the result that skips all that, even if it's not as general or satisfying. > People tend to assume that I've done whatever the most expert way of getting > to it is, and so they assume that I know a lot more about the subject than I > do.

This reminds me of Penn Jillette's comments on magic. Oftentimes a trick really is as banal as "he practiced that every day for months and months", but the audience will never believe someone has that much time/patience.

</comment><comment><USER5> >For example, there was one that involved combining different restaurant menu items to get a certain total. But because I didn't know something about how Perl's libraries handle floating-point comparison, the puzzle in the comic actually has a really simple solution in addition to the one I meant, that the code missed because of this bug. Most people didn't notice, but it's always bugged me.

Oh wow, he got really unlucky, too. It's just 7 of the first item.

<comment><USER6> He really should have used fixed-point arithmetic.

<comment><USER7> Why? If I found out that the library that I was using didn't have good fixed- point support (i.e., "doesn't do what I expect"), and if I didn't need the values to be infinitely precise, I'd just use a multiplier. It's always worked well for me in the past.

e.g., 7 * 215 = 1505.

<comment><USER8> Luckily, I've never had to write any database code that deals with money. If I had, though, I would have insisted on integers where a penny is 1 like this - it just doesn't make any sense to store an exponent for a bunch of values that are all the same order of magnitude anyway.

(I assume that this is how "fixed point" algebra works, although what I assume computers do with floats and what they actually do ain't exactly ever been similar.)

<comment><USER9> This would, however, totally miss the point that a penny actually isn't the smallest meaningful unit of money used in systems tracking actual money.

Assuming that the order of magnitude is fixed, this is of course doable, but according to my experience the order of magnitude does not converge.

<comment><USER8> Ah, but it would work fine on a website where you're selling things to humans (whose bank accounts can't store ha-pennies). I don't think anyone would be foolish enough to let the physicists near financial markets - there would be heavy losses on both sides.

</comment></comment></comment></comment></comment></comment><comment><USER10> I know it's just an off-the-cuff remark, but the last comment annoys me. Implying that sociologists are responsible for the existence of society is as silly as implying that biologists are responsible for that of biology.

<comment><USER11> As discussed in the comments of <http://plover.net/~bonds/purity.html>, a loop of importance/purity rather than a straight hierarchy makes more sense (or assuages more people).

</comment></comment><comment><USER12> He mentions that xkcd is his job. Does anyone know how he makes a living off of it? Selling T-Shirts and Posters?</comment>


Ask HN: Anything Like Carl Sagan's Cosmos for Computer Science? - <AUTHOR> Is there anything like Carl Sagan's Cosmos that talks about the history of computing in an accessible way? Pondering Christmas gifts for my niece. <comment><USER2> Code by Charles Petzold would be the best in my opinion.

link: [https://www.amazon.com/Code-Language-Computer-Hardware- Softw...](https://www.amazon.com/Code-Language-Computer-Hardware- Software/dp/0735611319)

<comment><USER3> +1. Great gift for non-technical friends/relatives. It does get at a technical depth of computer organization and stuff, but it has a nice gradual intro. But if op focus is computer science history, there may be better options (don't know which ones, and Code does share some history detail, but not that much. It should get your niece interested in computer science though).

</comment></comment><comment><USER4> Although you're probably looking for something a bit more technical, somebody really should mention:

 _" Triumph of the Nerds_ _: How the Personal Computer Changed the World "_

\- [https://www.youtube.com/watch?v=sX5g0kidk3Y](https://www.youtube.com/watch?v=sX5g0kidk3Y) \- [https://www.youtube.com/watch?v=EiffgiRAYUI](https://www.youtube.com/watch?v=EiffgiRAYUI)

\- [https://www.youtube.com/watch?v=lGTPdLxf7FQ](https://www.youtube.com/watch?v=lGTPdLxf7FQ) \- [https://www.youtube.com/watch?v=yamGfoFUXsA](https://www.youtube.com/watch?v=yamGfoFUXsA) \- [https://www.youtube.com/watch?v=6dK- gzpjIVI](https://www.youtube.com/watch?v=6dK-gzpjIVI)

</comment><comment><USER5> The New Turing Omnibus: [https://www.amazon.com/New-Turing-Omnibus-Sixty-Six- Excursio...](https://www.amazon.com/New-Turing-Omnibus-Sixty-Six- Excursions/dp/0805071660)

Algorithmics: The Spirit of Computing: [https://www.amazon.com/Algorithmics- Spirit-Computing-David-H...](https://www.amazon.com/Algorithmics-Spirit- Computing-David- Harel/dp/0321117840/ref=sr_1_1?s=books&ie=UTF8&qid=1479724948&sr=1-1&keywords=david+harel)

<comment> happy-go-lucky +1 for The New Turing Omnibus

</comment></comment><comment><USER6> Neither of these is exactly what you asked for, but both are awesome in their own way, and both are (narrow and somewhat dated) histories:

Hackers: Heroes of the Computer Revolution by Steven Levy.

The Pulitzer Prize Winning) The Soul of a New Machine, by Tracy Kidder. The second one literally changed my life in leading me to computers.

Links: [https://www.amazon.com/Hackers-Heroes-Computer-Revolution- An...](https://www.amazon.com/Hackers-Heroes-Computer-Revolution- Anniversary/dp/1449388396)

[https://www.amazon.com/Soul-New-Machine-Tracy- Kidder/dp/0316...](https://www.amazon.com/Soul-New-Machine-Tracy- Kidder/dp/0316491977/ref=sr_1_1?s=books&ie=UTF8&qid=1479649562&sr=1-1&keywords=the+soul+of+a+new+machine)

<comment><USER7> Hackers: Heroes of the Computer Revolution by Steven Levy absolutely changed my life when I found it as a young boy in the local library. Possibly the most read book on my bookshelf!

</comment></comment><comment><USER8> Gleick's "The Information" and Dyson's "Turing's Cathedral" would be 2 other good pop sci books on the origins of CS.

[https://www.amazon.com/Information-History-Theory- Flood/dp/1...](https://www.amazon.com/Information-History-Theory- Flood/dp/1400096235)

[https://www.amazon.com/Turings-Cathedral-Origins-Digital- Uni...](https://www.amazon.com/Turings-Cathedral-Origins-Digital- Universe/dp/1400075998)

</comment><comment><USER9> I would recommend the book - Innovators by Walter Issacson. It contains the history for computing from Charles Babbage to the invention of the Internet by Tim Berners Lee. Though it has some factual errors, it was a very interesting book. [https://www.amazon.com/Innovators-Hackers-Geniuses- Created-R...](https://www.amazon.com/Innovators-Hackers-Geniuses-Created- Revolution/dp/1476708703)

</comment><comment><USER10> There's a PBS (I think) series called "the machine that changed the world". This is the best history of computing I've seen yet.

<comment><USER11> +1 [http://topdocumentaryfilms.com/the-machine-that-changed- the-...](http://topdocumentaryfilms.com/the-machine-that-changed-the-world/)

</comment></comment><comment><USER12> I absolutely love this book. It's very accessible, though perhaps not for younger kids.

[But How Do It Know?] ([https://www.amazon.com/dp/B00F25LEVC/ref=dp-kindle- redirect?...](https://www.amazon.com/dp/B00F25LEVC/ref=dp-kindle- redirect?_encoding=UTF8&btkr=1))

</comment><comment><USER13> This is an article is very interesting (very very long) [https://www.bloomberg.com/graphics/2015-paul-ford-what-is- co...](https://www.bloomberg.com/graphics/2015-paul-ford-what-is-code/)

</comment><comment><USER14> I loved A History of Modern Computing by Paul Ceruzzi

[https://www.amazon.com/History-Modern- Computing/dp/026253203...](https://www.amazon.com/History-Modern- Computing/dp/0262532034)

</comment><comment><USER15> Computer #History: [https://en.wikipedia.org/wiki/Computer](https://en.wikipedia.org/wiki/Computer)

Outline of Computer Engineering #History of: [https://en.wikipedia.org/wiki/Outline_of_computer_engineerin...](https://en.wikipedia.org/wiki/Outline_of_computer_engineering)

History of Computer Science: [https://en.wikipedia.org/wiki/History_of_computer_science](https://en.wikipedia.org/wiki/History_of_computer_science)

Outline of Computer Science: [https://en.wikipedia.org/wiki/Outline_of_computer_science](https://en.wikipedia.org/wiki/Outline_of_computer_science)

History of the Internet: [https://en.wikipedia.org/wiki/History_of_the_Internet](https://en.wikipedia.org/wiki/History_of_the_Internet)

History of the World Wide Web: [https://en.wikipedia.org/wiki/History_of_the_World_Wide_Web](https://en.wikipedia.org/wiki/History_of_the_World_Wide_Web)

<comment><USER16> Not really in keeping with the idea of a gift suitable for a niece.

<comment><USER15> No, but particulary more comprehensive and informative than any one video. These links (to #OER) would be useful for anyone intending to try and replicate the form and style of the "Cosmos" video series with Computer Science content.

<comment><USER16> _Cosmos_ was also a dead tree book. [1] It was not uncommonly given as a gift.

The original TV series was broadcast the same year as its publication, 1980, but I don't think it was readily available on consumer tape until several years later and then not at normal holiday gift prices. Back in those days, most video libraries were built by the librarian directly recording broadcasts. But most people would just wait for a rebroadcast.

[1]: [https://en.wikipedia.org/wiki/Cosmos_(Carl_Sagan_book)](https://en.wikipedia.org/wiki/Cosmos_\(Carl_Sagan_book\))</comment></comment></comment></comment>


Ask HN: Ruby or Python for 2018? - <AUTHOR> I'm having a really hard time deciding between sticking with what little Python I know and using Django or switching over to Ruby/Rails for developing my side project. I'm hoping anyone could jump in and voice their opinion on either side.
Clearly the Ruby community is experiencing some kind of event where the numbers are shrinking and some of the more prolific bloggers/contributors are talking trash and moving on and i'm not sure what to make of this. There is alot of tutorials and information already out there but it's getting dated and i'm not sure how much of it that was written in several-versions-old Rails will still apply and there's not ton of new stuff coming out. There seems to be a gem or tutorial for anything I could need to do but it's growing more stale by the day as their creators seem to be off to greener pastures.
Python has it's moments for me but after doing some tutorials I'm really finding Ruby/Rails to be just fun and exciting to use. I like how thorough the framework is and the development experience in general, with console commands for everything and automated tests re-running on save, and it seems they are adding greatly to the rails core, as opposed to Django's big 2.0 feature was basically copying Flask's URL system. I also like the community having a vocal figure like DHH kind of "leading the pack" with alot of methodology I agree with.
Is ruby really as bad as people say and is on it's way out? Is leaving Python for it, if my only interest is web-application development, a dumb idea? it seems like i'm standing at this cross-roads looking out and seeing on one side, Rails is awesome but people hate Ruby, and the other side is people love Python but Django is a big limp dick and I don't have time to program the kitchen sink with Flask. choosing between either is very confusing... <comment><USER2> Ruby, PHP, Go, Python, Javascript & Elixir developer here:

The #1 rule that trumps all, no matter how small or big your project: Use whatever facilitates your work.

Sometimes you need to get things done quickly, sometimes you need to hire a lot of people cheaply/easily, sometimes you need a project to scale. In each of these cases, you may want to use a different tool. For something that's your side project, you probably just want to be able to get work done effectively and enjoy what you're doing. Pick that tool that you most enjoy working with, in that case.

For me, I default to Ruby (and I haven't touched Rails for work in 2 years!). I find it to be a joy to work with. I expect that later, as a I grow as a developer, this will become Elixir and/or Erlang. Sometimes I have to work in Python, because that makes sense for the project. I find it a bit of a slog, but it gets the job done and lets me move on to other things.

If you are a developer learning the ropes, I couldn't recommend a better language than Ruby. Your skills will translate. You will find work. The places that hire junior developers that only care that you know their stack aren't worth your time.

Most of the people that have publicly roasted Rails were wrong, for one reason or another, by the way (especially that Twitter blog post...). Too often, people are trying to fit a square peg into a round hole. The best advice I can give you after that first rule is that you should ignore what people say and just get your work done. That's the thing that differentiates people who stay working in this field and those who don't.

</comment><comment> git-pull Python

Django, a highly competitive web framework. With great extensions like Django REST Framework. Assets with django-webpack-loader. So on. It may not be as good as Laravel or Rails, but they're all really active.

But the thing that makes Python best is the web framework is where it begins, not where it ends:

Want text analysis? NLTK or spaCy

Data? Pandas, numpy, pytables

Want more analysis? scikit-learn, tensorflow, theano.

Solid language standards? PEP8 and PEP257 makes most python code you see in open source very conformant

Test framework? pytest. And its plugins. tox for testing against a matrix of python versions/settings (kinda like Travis).

Handling environments + packages easily? pipenv

Multiple python versions? pyenv

Editor integration? Jedi + python-mode for VIM, VSCode, Atom, Python

Images / Graphics? pillow

Super-powered REPL? ptpython

Deployment? Fabric, Ansible, Saltstack

Documentation? Sphinx, Docutils

Want C/C++ integration/performance? pybind11, cython, CFFI, swig

Mobile dev? kivy (though I wouldn't say it's the best yet, when I tried it, setup was easier than react-native)

And that's just scratching the surface. Python has high quality, permissively- licensed libraries, with solid documentation. A lot of the plugins I mentioned above for handling data use C-level speedups. Of these, tensorflow, and Theano can use GPU speedups.

Rails is fantastic. I like guard and the asset pipeline. But I just learned to use GNU Make's "$ make -j task1 task2" and django-webpack-loader. I also hear good things about Laravel in PHP.

<comment><USER3> +1

with so many supported libraries available i keep finding that adding more functions to Python code does not actually add much to the amount of code.

</comment></comment><comment><USER4> You seem overly concerned with Hype Driven Development.

There's not a lot of new stuff coming out of these frameworks because of how mature they are.

Both languages/frameworks are comparable. Your end product will not be very different regardless which route you take. Both languages and frameworks will be maintained 10 years from now. The job market for both will exist 5+ years from now.

Pick one you like and get to work!

</comment><comment><USER5> Python is a good career move. Ruby is more fun. There's no right answer :)

I program in Ruby right now for work but am comfortable switching to Python. There are plenty of Ruby positions available, we've hired 5 or so Junior Engineers out of Rails/JavaScript bootcamps. It's just that Python has the data science and machine learning positions in addition to web development.

</comment><comment><USER6> Have you looked at Elixir / Phoenix?

[http://phoenixframework.org/](http://phoenixframework.org/)

It has some Rails roots, so you might like it.

<comment><USER7> Elixir and Phoenix are amazing. I use them any chance I get. The problem now is that the ecosystem is still in early stages. You're gonna end up writing some more libraries whereas in an ecosystem like Ruby there are gonna be plenty of gems handling the typical things like Api wrappers.

</comment></comment><comment><USER8> I can't recall ever hearing anyone say they "hate Ruby".

Ruby is designed to make programmers happy.

Ruby and Rails are "boring" because they are mature and do their job extremely well, so the cutting-edge devs that helped get them there got bored and moved on to other newer ecosystems.

If you are more interested in getting the project done fast and efficiently and you don't mind doing it someone else's way, then RoR is a good choice.

If you like to do things your own way, then Rails will probably frustrate you because it is very opinionated on how things are done. You can override everything, but some people's personality is more suited for the node.js world that is far less of a framework and more of an ecosystem of libraries.

These are 2 popular posts that will help you figure out if RoR is a personality fit for you:

[http://david.heinemeierhansson.com/2012/rails-is- omakase.htm...](http://david.heinemeierhansson.com/2012/rails-is-omakase.html)

[https://medium.com/@timbuchwaldt/rails-is-boring-thats- great...](https://medium.com/@timbuchwaldt/rails-is-boring-thats- great-f896e9ab2cb)

<comment><USER9> I agree, it's more I hate x gem, or the community as a whole. [https://news.ycombinator.com/item?id=5157886](https://news.ycombinator.com/item?id=5157886)

</comment></comment><comment><USER10> There are 2 choices of language for any side project.

1) the language you know best

2) the language you most want to learn

Only you can decide on which has a higher priority.

<comment><USER11> This. If it's a side project that is intended for self-development and learning, try it in a new language and see how you get on. If it's something even remotely important or think might turn into more than just a side- project, go with what you know or are comfortable with.

</comment></comment><comment><USER12> I have almost come to regret learning Ruby because it is a beautiful language that I wish it would be my main language but unfortunately I think it has lost scripting language race by the look of its popularity among competitors.

Part of the reason I suspect is the development cultural difference brought by language barriers. Without sound development, it surely will struggle to become better than alternatives.

[https://www.ruby-forum.com/topic/4570470](https://www.ruby- forum.com/topic/4570470)

<comment><USER2> I feel your pain. Beautiful language with no real peers in that regard, as far as I can see.

</comment></comment><comment><USER13> For what it is worth, I think you will probably learn something from trying Ruby, even if you wind up sticking with Python. The community and language design are just very different from Python's: MINSWAN v BDFL, many ways versus Pythonic PEP's, everything is an object versus some things are objects, etc.

All this with the caveats that: I think both languages have advantages and disadvantages and I think knowing more languages is better than knowing fewer or one.

<comment><USER14> If you are going to learn something different, learn something really different, not another dynamic unix scripting language.

<comment><USER13> There are languages I find more interesting than Ruby. Suggesting them however would have required deliberately misreading or ignoring the actual question. Ruby was on the table and in use. The alternative? A regression to Python. At least as much encouragement as advice.

</comment></comment></comment><comment><USER15> Programming languages are just tools. People that are finding they are productive with a language/tool are out building things and not complaining.

I'm personally not someone that likes to look at new languages and compare them for the sake of it. There are folks that like to compare compilers or interpreters and the internals of how those work and debate them.

I'm more interested if something new can help me in delivery of working software. Having moved from a Java world to Ruby/Rails, I find it not just helps me deliver, it pretty much gets out of my way (most of the time) compared to Java.

I haven't done much more than read about Python/Django/Flask. If they are mostly similar to Ruby/Rails it doesn't sound like there would be benefit to learning them outside of curiosity (and an affinity to Monty Python).

I suspect that big name bloggers and people that talk a lot about things may find a need to keep viewers coming to their blogs/channels. If there isn't a lot of new stuff to write about but it is still a solid delivery platform, that isn't too exciting to draw viewers.

</comment><comment><USER16> I would take a look at Laravel which is php on rails with less magic and more built in features such as authentication and background jobs. The most important thing is that its community is growing rapidly and it has a BDFL ala DHH in Taylor's Orwell. Also there are really good fresh resources such as latacasts Codecourse and the Laracon conferences

<comment><USER17> I still like php for web development, although it seems to be falling out of favor somewhat. The new version 7 is quite fast, and its quick to get up and running. I've not used Laravel, (I use a lighter framework called Silex) but it is PHP's version of Rails.

I've found php is somewhat slightly more verbose and fewer data structures seems to make php code easier to maintain for other people than perl and java (which I also maintain...).

<comment><USER2> Having had to learn PHP to work on some WordPress stuff, I can honestly say that I find PHP 5.6 and onward to be a competent, usable language. It has its quirks, but so does JavaScript. In fact, I'd say PHP and JavaScript are now close cousins. The array methods are a bit annoying, but you can definitely write effective, clean code in modern PHP.

</comment></comment></comment><comment><USER18> Ruby's beautiful object model alone is worth learning. "Metaprogramming Ruby"[0] is a great introduction to that. Its flexibility is what makes things like DSLs so easy. The language also includes functional programming influences. I wrote Django apps in Python for the better part of two years, and for what anecdotes are worth, I didn't learn nearly as much as I did writing Rails applications in Ruby. I'd pick Ruby every time.

[0] [https://pragprog.com/book/ppmetr/metaprogramming- ruby](https://pragprog.com/book/ppmetr/metaprogramming-ruby)

</comment><comment><USER19> If you're already comfortable in Python, don't bother with Ruby. You won't find anything new there, and a lot of frustrating language design errors. I've written about this in more detail at [http://madhadron.com/posts/2013-02-25-a-criticism-of- ruby.ht...](http://madhadron.com/posts/2013-02-25-a-criticism-of-ruby.html).

</comment><comment><USER20> I love Ruby, but Python is super simple to learn. I haven't spent enough time with Python to do anything super cool with it, but it does seem to be more consistent in terms of the code you will read.

I also think that once you learn Python, a lot of other languages' syntax (such as Go and C# for me) becomes more approachable.

</comment><comment><USER21> > Rails is awesome but people hate Ruby

Is this sentiment common? It might be just my personal echo chamber but I've often heard the opposite stance, i.e. people saying they hate Rails because of all the "magic" but at the same time they like Ruby as a language because of its flexibility.

<comment><USER2> The Ruby job market outside of Rails is tiny, unfortunately. Most folks never bothered to look. DevOps and InfoSec folks tend to know better -- Chef, Puppet, Capistrano, Vagrant, Logstash, Metasploit, Homebrew, Sass... all written in Ruby)

All of my ETL pipelines are built in Ruby and I wouldn't have it another way. From a development, support and deployment persective, Jekyll is hands-down the best "web framework" I've ever worked with. If you need to build websites that don't need sessions/accounts, there isn't a better tool. NGINX's SSI module fills in some (tiny) gaps.

Ruby's a great language with a healthy set of tools. It's just not popular among people making CRUD apps right now.

To most folks though, unless they're already Ruby developers (AND not a Rails shop), Ruby and Rails might as well be the same thing.

<comment><USER22> we use Sinatra and sequel for a few apps and it's great (and puma to run it all)

we have switched to python for our FaaS but only because of lack of Ruby support from AWS lambda.

</comment></comment></comment><comment><USER23> I understand your concerns about Django and Flask... as someone who doesn't work with either on a regular basis, getting reacquainted with Django feels very heavy... and Flask seems too minimal.

Anyway, I just started using CherryPy for a new project and would like to recommend it. I had actually used it around 10 years ago and hadn't given it much thought until recently, but it's quite simple and nice for REST APIs.

</comment><comment><USER24> I would say try out both and use the one that makes you happy and is the best tool for the job.

Personally, I'm a big fan of Rails and Flask and use both on a regular basis.

You may also want to give this a read:

[https://nickjanetakis.com/blog/it-doesnt-matter-what-web- fra...](https://nickjanetakis.com/blog/it-doesnt-matter-what-web-framework- you-use-just-pick-one)

</comment><comment><USER25> i have a simple suggestion, you should learn both, we live in a polyglot world now, you need to be able to learn multiple languages and to do so quickly. i started with php then moved to python/tornado/sqlalchemy, ror, ruby/sinatra/activerecord, nodejs/expressjs, and lately golang/gorilla mux/database/sql. just start with one, suggest ror, i'm sure you'll have multiple projects in the future. ruby was built for web app development, django's a bolt on for python that then added web functionality. dont worry about the community issues, ror has enough great libraries out there that you could put together a pretty slick website quickly. a side note, if you need to use some scientific packages, python might be better supported like numpy etc. fyi ruby language is much nicer than python imho (insert flame war). dont dwell on this decision too long, either should be able to get you what you want which is a slick website, get a move on it

</comment><comment><USER26> It's your side project, do whatever you want! You said ruby is fun for you then go with it.

</comment><comment><USER27> If you code alone, use the best available which generally I assume people would say Ruby.

If you are intending to collaborate then python might be a better choice as its more popular.

Just a different take. Either one is great.

</comment><comment><USER28> I used to hate Ruby until I had to learn it two years ago. Now, I wish that this is the only language I'd ever need to use. It's beautiful, and testing stuff with it is a BREEZE.

</comment><comment><USER14> Python's more broadly applicable, easier to read and maintain, installed by default on distributions. Pyramid is another good option if you have something against Django.

</comment><comment><USER29> I would prefer to pursue Python further for data scraping/analysis or bot development related things, PHP for Web apps and Go just for heck of it :>

</comment><comment><USER30> Recently someone asked what worries you about future of Ruby on reddit.

[https://www.reddit.com/r/ruby/comments/7jiq6k/what_worries_y...](https://www.reddit.com/r/ruby/comments/7jiq6k/what_worries_you_about_the_future_of_ruby/)

I will post my answer here, but it basically sums up a lot of things that were said in the replies here as well. If you want to be happy, just use what you are happy with, if you want a career out of it, choose sensibly.

We need to define a few things up front.

When people say Ruby is dying or dead, what dying or dead actually means is Ruby is not growing. Lot of people left Ruby, even the prominent ones, but there are also lots of new faces, as DHH likes to mention.

Languages dont die, especially when they are open sourced. Perl is still not dead, nor PHP. But consider if a languages is slowly moving towards irrelevant, then it is certainly considered dead. In this case Perl is an example, while PHP still has vast majority of the Web programming. In any case, the Job Pool is an easy indication, and no matter how you spin it, the Job Pool for Ruby Rails is definitely shrinking.

The problem is Ruby at its 1-2% low level of usage, should really be growing a lot. You dont see large web scale company using it, Python has Google, Dropbox, for example, using it as well as contributing to its development. Ruby doesn't have any of that, and it isn;t trying to get being used for large corporate either. Its whole ecosystem is bond to Rails. Even the Release note of Ruby often mention Rails and nothing else. It seems at the moment Ruby is an Rails languages rather then vice versa.

When people say Ruby Rails dont scale, what they really meant was Ruby Rails dont scale cheaply compared to all others. Cookpad does close to 20,000 RPS, Shopify manage 80,000 RPS, and there were once information about China's Railway ticketing system using Rails that does 400,000+ RPS, it was basically the whole China DDOSing the system. So Ruby Rails scales, but at what cost?

The Web is largely divided into two camp, one is the pay by user and SaaS model, much like Basecamp which Rails originate from, the other is Ads to user which needs to reach a critical mass before it starts to paid itself. The latter is the one much more popular and which Ruby Rails is having problem, because scaling to that critical mass requires substantial investment into infrastructure, and its cost structure is not very attractive. DHH used to say Moores law is helping them to grow, but that has no longer be true for recent few years, not to mention the Goal post of sustainable advert or per user revenue on a freemium model is getting larger then the speed of Hardware improvement. For example, on Stackoverflow Engineering blog, shows a fully optimize ASP.NET could do 10x more then Ruby at 10x Faster Speed while using 1/10 of Servers.

There was a talk sometime ago about Go Vs Ruby, where Ruby was likely 30%+ more productive up front, it was 10x slower, 300% more maintenance work afterwards.

To put this simply, the maths and scale of economy doesn't work very well for Ruby And Rails on many applications.

If you watched some Conf Video, Matz has went from Ruby is fast enough, good enough, to Ruby needs to be faster, Ruby needs concurrency. From Ruby is my languages, to Ruby is communities languages. The closed development circle of Ruby means it has seen much less contribution from outsider compared to Python. When Ruby needs all the help it gets, not having the conversation and development in open and easy to follow doesn't really help. Although I understand the resistance to GitHub, but certainly GitLab is an alternative.

I also dont believe backward compatibility is the most important factor for 3.0. Ruby has quirks and in some cases far too many choices, and if MJIT is really faster, it should be used as an incentive to move the ecosystem forward. Making breaking changes at the MJIT support level. Taking the chance at changes to fix and improve things. While Matz have said they dont want another Perl 5 / 6 and Python 2 / 3 problem, but i believe this is different. Perl 5 / 6 is literally a completely different languages they might as well call Perl 6 something else. While Python 3 offer changes while giving no immediate benefits to its users. JIT is a very good chance to use as bait and rethink what Ruby in the future should be.

The biggest problem often is Ruby as a communities dont see any of these as problem until it is too late. People flock to Go not only because of its performance, but because it can be easily deployed, and deployment isn't something even on Ruby's Roadmap. Ruby on Windows still isn't as easy as any other counterparts. And it is too late to join the Data Science race. Sidekiq developers gained their success using Ruby has has now moved to Go, the same as Hashicorp.

I know this may be a little harsh, of course Ruby dont owe us anything, you are free to use and move on as you like, but it is sad that Ruby doesn't grow bigger, it doesn't need to take over the world, but it should have a slightly larger presence and usage across different domain. Luckily Ruby will always live on in the form of Elixir and Crystal.

<comment><AUTHOR> dang, i feel like i could read you talking about the state of programming all day. so, can i ask, what is your current language/framework of choice and what would you recommend to someone in my position (just starting out, interest mainly in working on personal project that could eventually become saas products and only interested in web application development)? do you have any words of wisdom on python?

</comment></comment><comment><USER31> Stick to Ruby, Matz will give us new Ruby this christmas, and he's the best mormon I have ever seen so that's a plus.</comment>