Anonymous, a fixed with sans designed especially for coders - <AUTHOR> http://www.ms-studio.com/FontSales/anonymous.html

<comment><USER2> Also free, and the one I have been using for years: Bitstream Vera Sans Mono ( [http://www.bitstream.com/font_rendering/products/dev_fonts/v...](http://www.bitstream.com/font_rendering/products/dev_fonts/vera.html) )

<comment><USER3> I love the Bitstream Vera family. Of note, is that the letter proportions are such that you can set the font size a point or two smaller than other fonts and still keep great legibility.

You can also do that with Lucida.

<comment><USER4> Bitstream Vera Sans Mono is the default monospaced font in Ubuntu :)

</comment></comment></comment><comment><USER5> Consolas is my fixed-width font of choice :-)

<http://en.wikipedia.org/wiki/Consolas>

<comment><USER6> I like this Consolas-inspired one, Inconsolata (also available for Mac, etc.):

<http://www.levien.com/type/myfonts/inconsolata.html>

</comment></comment><comment><USER7> I am surprised nobody talked about inconsolata in this thread yet. As for me, it's my font of choice (and a bit clearer to read than anonymous IMHO)

<comment><USER8> Same here: (set-default-font "-apple-inconsolata-medium-r-normal-- 16-0-72-72-m-0-iso10646-1")

PS: Am I the only one who tries to use M-Space to set the mark in Safari text areas, over and over again?

</comment></comment><comment><USER9> What's up with the "trademark" stuff all over that site? If I'm not mistaken, a general word like "anonymous" can't be trademarked. But maybe it's just to make it look more professional.

<comment><USER10> Depends. For example you can't trademark 'apple' for fruit. But you can trademark 'apple' for computers.

</comment></comment><comment><USER11> I believe you meant fixed "width"

</comment><comment><USER12> Envy Code R default for me...

[http://damieng.com/blog/2008/05/26/envy-code-r- preview-7-cod...](http://damieng.com/blog/2008/05/26/envy-code-r- preview-7-coding-font-released)

</comment><comment><USER13> That font looks horrible from 6pt upwards. I'll stick with triskweline, thank you.

</comment><comment><USER14> Installed. Much nicer than Courier New. Cheers :)</comment>


Bloom Filters by example - <AUTHOR> http://billmill.org/bloomfilter-tutorial/ <comment><USER2> Interesting anecdote: an alumni of my university was chatting with me recently about his work at Google, essentially he replaced what he described as a "large, complex machine learning pipeline" with a "simple bloom filter" for displaying product results at the top of a search page if it determines you have searched for a product.

For example, if you search for "iPhone 5S", the filter determines whether to show something like this [http://i.imgur.com/Dp3y1Gi.png](http://i.imgur.com/Dp3y1Gi.png) (not sure if sponsored makes a difference here, possibly a bad example).

<comment><USER3> Is EE shop sites you would have visited before the search?

> a "simple bloom filter" for displaying product results at the top of a > search page if it determines you have searched for a product.

"have searched" is not clear to me. I was expecting Google would just spit out a JSON response with all the search query for page 1 (including sponsored ads). Can you please elaborate on this please?

<comment><USER4> > Is EE shop sites you would have visited before the search?

No. I think you might be parsing his statement wrong - it's not "have searched" as in searched for previously, it's "have searched for a PRODUCT" as in, your search is for a product (something purchasable in a store, preferably an online store) as opposed to something else.

The Bloom filter figures out if your search is for a product, and if it is, puts that box w/ sponsored links to stores that sell that product up at the top of your results.

</comment></comment></comment><comment><USER5> Jason Davies made a nice visual explanation of bloom filters: [https://www.jasondavies.com/bloomfilter/](https://www.jasondavies.com/bloomfilter/)

<comment><USER6> His demo is much smoother than mine, I'm jealous.

</comment></comment><comment><USER7> I always loved bloom filters, because to me, they showed something that was very fundamentally important.

That the amount of information required so that you can say whether an element is in a set or not is significantly less that the set itself.

That is just wierd, but amazing.

If someone asks me about weird and wonderful things in computer science, this is what I talk about.

<comment><USER8> Well it doesn't tell you the element's membership. It only can tell you it might be in, or definitely isn't.

Like reviewing a passenger list where everyone's name is abbreviated to initials.

</comment></comment><comment><USER9> Now we just need HyperLogLog by example.

(HyperLogLogs are vaguely similar data structures in that you hash things a bunch to store a value inside, except instead of set-membership inquiries, they're better at cardinality-estimation purposes.)

<comment><USER10> Well, there you are: a nice explanation of HyperLogLog, along with graphs, and a javascript demo to play with. And a tribute to Philippe Flajolet who came up with the algorithm.

[http://blog.aggregateknowledge.com/2012/10/25/sketch-of- the-...](http://blog.aggregateknowledge.com/2012/10/25/sketch-of-the-day- hyperloglog-cornerstone-of-a-big-data-infrastructure/)

The Aggregate Knowledge blog is mind blowing for everything sketch related.

<comment><USER6> Is that demo widget custom, or did they use a tool to generate it? Do you know?

<comment><USER10> According to this comment [http://blog.aggregateknowledge.com/2012/10/25/sketch-of- the-...](http://blog.aggregateknowledge.com/2012/10/25/sketch-of-the-day- hyperloglog-cornerstone-of-a-big-data-infrastructure/#comment-789) , it's custom made and based on d3.

<comment><USER6> It would make the world a lot better if somebody made it easy to create that widget in IPython Notebook or some similar tool.

#IShouldDoThatButIProbablyWont

</comment></comment></comment></comment></comment><comment><USER11> Question, instead of using two hash functions, why not use just a single function but use a = hash(foo) and b = hash(foo+"something")? A well distributed hash function should give drastically different results for a and b for different values of foo, which is what we want, correct?

<comment><USER12> It's standard to have at least two hashing functions. You can then simulate having _x_ hash functions simply by combining those two.[1]

But, your question is entirely valid and I'm not really sure why you _couldn 't_ do that. It might simply be that the kinds of hash functions used in bloom filters (non-cryptographic) are _not_ well distributed.

[1]: [http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=4060...](http://citeseer.ist.psu.edu/viewdoc/download;jsessionid=4060353E67A356EF9528D2C57C064F5A?doi=10.1.1.152.579&rep=rep1&type=pdf)

<comment><USER11> Fascinating, thank you! I'll take a look at the paper when I get back home.

</comment></comment></comment><comment><USER13> Chapter 26 of 'Real World Haskell' shows how to design a library by implementing a bloom filter: [http://book.realworldhaskell.org/read/advanced- library-desig...](http://book.realworldhaskell.org/read/advanced-library- design-building-a-bloom-filter.html)

</comment><comment><USER14> bloomd[1] is a "high performance c server for bloom filters" for those looking for a low-overhead and deployable implementation with quite a few clients, like Python and Ruby.

[1] [https://github.com/armon/bloomd](https://github.com/armon/bloomd)

</comment><comment><USER15> Wow, I didn't realize they were this simple to implement and reason about!

</comment><comment><USER16> This looks very cool, however I was able to get lots of false positives using the first few letters of the alphabet as test data. Could you reduce these by using k hashes and k bit vectors with m bits, i.e. one bit vector for each hash algorithm, at the expense of a little extra computation?

<comment><USER17> That's probably because it's a tiny filter. In reality you'd calculate the size more appropriately:

[http://hur.st/bloomfilter?n=4&p=1.0E-20](http://hur.st/bloomfilter?n=4&p=1.0E-20)

Here you can give it a false positive rate you're happy with and a number of elements. It'll give you the optimal size and number of hashes to use. Your suggestion would use far too much space.

</comment></comment><comment><USER18> Google Chrome not only uses bloom filters for malicious URL filtering but also as a part of the CSS selector matching process. I'm not sure how exactly, but allegedly, it gives them a nice speed bump in majority of the cases without compromising on generality.

</comment><comment><USER19> BFs are getting pretty popular in bioinformatics. The post mentions one example, here is my favorite recent one: [http://minia.genouest.org/files/minia.pdf](http://minia.genouest.org/files/minia.pdf)

<comment><USER20> Very cool – I hadn't seen this paper before (haven't done any _real_ work on de novo assembly or otherwise requiring de Bruijn graphs).

Here's a paper using Bloom filters in metagenomic classification (my relative* area): [http://bioinformatics.oxfordjournals.org/content/26/13/1595....](http://bioinformatics.oxfordjournals.org/content/26/13/1595.long)

In this vein, a friend and I are researching/implementing a probabilistic key- value store for some bioinformatics applications (one is metagenomic organism and gene identification). It's fast and space-efficient, just like a BF (though obviously less so as it stores keys and not single-set-membership). Any use cases for that kind of thing in your sub-field? Always trying to figure out interesting new applications (we aren't ready to write it all up yet, but hope to at some point not too far down the road).

* I'm really just a dabbler / don't have a formal bioinformatics background. My friend is the genetics PhD.

<comment><USER19> Can you explain "probabilistic key-value store?" Would it be that each gene has some defined probability of belonging to a given organism, or is it probabilistic in the sense of having a defined error rate as BFs do?

<comment><USER20> The latter - probabilistic in the sense of having a defined error rate. In one of our use cases, the keys are simply kmers and the values are organism or gene IDs.

<comment><USER19> not sure, but would definitely take a look.

<comment><USER20> Contact info?

<comment><USER19> You'll find it here: [http://tau.ac.il/~rozovr/](http://tau.ac.il/~rozovr/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Coincidence: used this page on Friday to implement bloom filters for a kata at Software Craftsmanship 2013 (in Bletchley Park of all places).

Fun to implement, I'd recommend having a go. Here's our terrible clojure code: [https://gist.github.com/timruffles/7195405](https://gist.github.com/timruffles/7195405)

</comment><comment><USER22> Interesting. I'd never looked into how BFs work before and this is a nice clear explaination.

One thing I don't quite get - as you're hashing into the same bit array for each of the hashes - you must get false positives from combinations of hashes. So say you chose a bad combination of hash algorithms where one key hashed into bits a and b using the two different hashes respectively. Maybe some other key might hash into b and a. With a totally suboptimal choice of hash algorithms you could end up with a 50% error rate. Or am I misunderstanding something?

<comment><USER23> This is kind of a fundamental part of bloom filters. They're probabilistic data structures, which is the trade you make for space efficiency.

If you get a false back, you can guarantee that some item is not in the filter. If you get a true back, you can be fairly certain it is. Once you have a degree of certainty, you can do a more thorough check for membership while cutting out large numbers of negatives.

<comment><USER22> I get the concept - you're trading space for certainty. It's more the bit where it says:

        "The more hash functions you have, the slower your bloom filter, and the quicker it fills up. *If you have too few, however, you may suffer too many false positives.*"

Just made me wonder - couldn't badly chosen hash functions actually give you more false positives?

</comment></comment></comment><comment><USER24> Another great Bloom Filter library not mentioned in this article is Bitly's implementation on GitHub[0]. It has the best of both worlds: a C implementation and higher-level wrappers (Golang, PHP, Python, and Common Lisp). If you don't want to play around with a fancier DBMS and really just want the damn filters, I would look here.

[0] [https://github.com/bitly/dablooms](https://github.com/bitly/dablooms)

<comment><USER6> It is elliptically mentioned, via the link to this wonderful pull request: [https://github.com/bitly/dablooms/pull/19](https://github.com/bitly/dablooms/pull/19)

</comment></comment><comment><USER25> There is nice summary of other interesting probabilistic data structures here: [http://highlyscalable.wordpress.com/2012/05/01/probabilistic...](http://highlyscalable.wordpress.com/2012/05/01/probabilistic- structures-web-analytics-data-mining/)

</comment><comment><USER26> Last time I checked, the Cassandra implementation was really messed up. Myself and another dev at our last company spent a few weeks debugging, adding test cases and fixing the code to get it to work correctly.

<comment><USER27> Cassandra user in production here. Could you elaborate a little bit on what was messed up (size, false positives etc.) and which version this was? Did you have trouble with Cassandra itself that you tracked down to the bloom filters or trying to re-use the bloom filters in another project?

<comment><USER20> I'm only familiar with a Python clone of the Cassandra implementation ("hydra" \-- used it a while back), but two issues I do remember are: 1) I _believe_ it only uses 32-bit ints for the bit array addressing, so you can overflow it (and this also may be less-than-ideal from a hash distribution perspective, but I don't know offhand); and 2) as someone coming from a different background, I found the whole thing to have a bit too much "OO" magic, with several helper classes to set up the filter that (to me) obfuscate what's really going on.

</comment></comment></comment><comment><USER28> Anyone got pointers to "simple" real-world use cases?

<comment><USER29> Don't know what you consider simple, but databases use bloom filters to do faster joins for example. Chrome also uses them for malware detection I think.

<comment><USER30> Specifically, a place where DBs use bloom filters is distributed joins. This isn't a common scenario IMHO. Found a good description here:

[http://www.coolsnap.net/kevin/?p=19](http://www.coolsnap.net/kevin/?p=19)

P.S. Loved the tutorial.

<comment><USER29> it's also useful on local hash joins because it's faster than a regular hash table lookup. so you can use it to eliminate some stuff before going to the big hash table.

</comment></comment></comment></comment><comment><USER31> I had just put down this bloom filter tutorial by Jason Davies, now another one comes up. It's a sign. www.jasondavies.com/bloomfilter/

</comment><comment><USER32> As an example of real usage - In my ChromeBook home folder, there are several "bloom" filter files for various predefined filtering in chrome</comment>


Introduction to Neural Machine Translation with GPUs (Part 2) - <AUTHOR> http://nvda.ly/OnHkp

<comment><USER2> A correction, I think, for part one. It is mentioned that neural network based translation is "recently proposed," but attempts to use neural networks in machine translation date back to at least the 90's.

In high school I chose CS as the category for my IB paper, and chose to write about machine translation. Neural network methods from the 90's is one thing I looked at, and I'm a bit surprised to see neural network translators making a small comeback in the past couple of years.

</comment><comment><AUTHOR> This is part two in an in-depth series on Neural Machine Translation by Kyunghyun Cho, a leading expert on machine translation (Postdoc at U. Montreal, joining NYU faculty in fall).</comment>


HN, just wondering: How much does sleep affect your productivity? - <AUTHOR>

I've recently started noticing a significant drop in my productivity, and I think it's somewhat correlated to problems I'm having keeping my sleep times stable.
However, I know a lot of coders and/or designers that have completely irregular sleep schedules and have no problems with productivity... What are your personal experiences with this? Are some of you facing similar productivity problems? Any advice for me?
There's also the common concept of hacking/coding all night in. I would like to know: How common/productive that really is? <comment><USER2> When I was younger (like highschool, I am 22) I would get most of my coding done in the middle of the night. Now I have a 9-5 development job but now I notice huge drop in my coding when I come home. I am always working on ideas but I feel like after coding at work all day, its hard to come home and code. Specially since I can't stay up till 2 AM any more.

I am interested in seeing how other people deal with this.

<comment><USER3> I'm 27, and I've found that I actually am more interested in coding at home now than I was at 22. I can't stay up as late as I used to, but I find that I am able to be more productive, and hence happier, because I wound up eliminating several things that were huge distractions back in the day.

For instance, I stopped drinking about 4 years ago and cancelled my cable because I felt that alcohol and ready access to television simply weren't adding anything positive to my life. If I want to watch a football game, for example, I go to a sports bar and call a friend - killing two birds with one stone. I got married and that gives me a reliable outlet for sex and socialization that simply wasn't around earlier. When she wants to do something together, it does interrupt my coding, but on balance it's less of an interruption than dating ever was.

I think it's not as much about how much time you can pack into your day as how well you've learned to spend the time you've got. In my experience, age has only helped me there.

</comment></comment><comment><USER4> When I'm sleeping, I get no work done whatsoever :)

</comment><comment><USER5> I've discovered recently that quality sleep is very important to my health.

I was extremely anxious and had trouble focusing until I realized I wasn't able to get good sleep because of the noise from my partner's air cleaner running.

When I started sleeping in another room my mental and physical health both rapidly improved.

Regular sleep is more important for me now as an adult than it was when I was younger.</comment>


IRS begins tax clampdown on unreported cryptocurrency profits - <AUTHOR> https://www.zdnet.com/article/irs-begins-tax-hunt-for-unreported-cryptocurrency-profits/ <comment><USER2> Or are they just sending letters in hopes that people will pay.. imho, I've already been taxed creating the crpto. So I get taxed again? How they hell does irs know at what price I sold or bought? They dont. They can pack sand!

<comment><USER3> Considering at least Coinbase is US-based, you may want/need to look into compliance with the guidance[1]. The tl;dr is that you're supposed to mark to market for each trade and denominate it in USD; if you're in the US and haven't been keeping records, I'd strongly consider retaining a tax professional for advice/service if you get one of these. I assume that the IRS isn't going to take your lack of records very seriously or kindly.

[1][https://www.irs.gov/businesses/small-businesses-self- employe...](https://www.irs.gov/businesses/small-businesses-self- employed/virtual-currencies)</comment></comment>


Gitlab: Acquisitions Handbook - <AUTHOR> https://about.gitlab.com/handbook/acquisitions/ <comment><USER2> > Criteria: Raised under $10M total investment funds, last round being over 3 > years ago

> Offer: The total purchase price of the deal, paid in cash, will not exceed > $1M and will be the total and only compensation. GitLab stock will not be > offered as part of the deal for the assets sold.

Yikes. That doesn't make sense if you've raised over 1M. That seems strange to have such a low cap on compensation.

<comment><USER3> Thanks for bringing this up. As mentioned in our blog post on the subject ([https://about.gitlab.com/blog/2019/07/30/gitlab- acquisitions...](https://about.gitlab.com/blog/2019/07/30/gitlab- acquisitions/)), we'll consider other types of acquisitions, but this is a streamlined process specifically for soft-landings. I've opened an issue to clarify this on the handbook page. [https://gitlab.com/gitlab-com/corporate- development/issues/4](https://gitlab.com/gitlab-com/corporate- development/issues/4)</comment></comment>


Anonymous messages from founders and VCs about the Away culture controversy - <AUTHOR> https://vcstarterkit.substack.com/p/getting-carried-away <comment><USER2> That reasonable people feel the need for anonymity to even comment on such a topic is an example of 'vicarious outrage culture' becoming destructive through second and even third-order effects.

Another example is how some people expressing their opinion about Joi Ito engaging with Jeffrey Epstein were lambasted for not criticizing Ito enough (second-order effect). Even if we ignore what happens to Richard Stallman when he bumbles in with a comment suggesting Ito may not be that bad of a guy, look at what happens to those who condemn Stallman and Ito but in so doing point out that Stallman is an uber-nerd, well-known to have no human interface and possibly on the spectrum (third-order effect). Some of those folks are roasted online and even doxxed for the sin of not condemning Stallman enough and for even suggesting facts which might serve to put some context around Stallman's behavior.

The blast radius of vicarious outrage reaches from "Epstein --> Ito --> Stallman --> Commenters about Stallman" which is getting ridiculous. BTW, I'm giving even money odds that someone here on HN responds negatively about me for not criticizing someone (or everyone) in that chain enough, thus adding myself as another link to the chain for making a meta-meta-(meta?) observation about the situation.

<comment><USER3> I am one of the anonymous responders quoted in that post.

Please do not speak for me. You are guessing about my reasons, and you are wrong.

<comment><USER4> Do you speak for all the rest of the anonymous responders, too? How do you know that the person to whom you responded wasn't also one of those anonymous responders (and thus would be speaking for oneself)?

</comment></comment></comment><comment><USER5> Title has a mistake. The abbreviation of "venture capitalists" is "VCs" or "VC's", not "VCS".

I see this same mistake often on Hacker News. Does the site automatically make this "correction"?

<comment><AUTHOR> No that's my fault, and you're quite right. Sorry about that.

<comment><USER6> It wasn't your fault. It was a bug in our title-correcting software. Fixed now!

<comment><AUTHOR> Oh cool!

I hope it will now work for both Venture Capitalists and Version Control Systems</comment></comment></comment></comment>


Twitter for iPad is here - <AUTHOR> http://techcrunch.com/2010/09/01/twitter-for-ipad/

<comment><USER2> Actually, no. Twitter for iPad is here -<http://itunes.apple.com/us/app/twitter/id333903271>

</comment><comment><USER3> Everyone is raving about the app and I think it introduces some interesting UI/X elements but after playing with it for a few minutes, it just feels cluttered to me. Compare that to both tweetdeck and twitterific which feel great on the iPad...

<comment><USER4> TweetDeck on iPad is infuriating to use. It's buggy, crashes all the time, doesn't have feature parity in landscape and portrait modes, and is super slow. Yet, I keep using it because multi-column is the killer feature for me. I wish they'd fix it up though.

<comment><USER5> TweetDeck on iPhone is the same. The multi account feature was what won me over in the first place. I liked it as I could use it for managing both my personal and websites twitter account. Unfortunately that's broken right now. The issue is mentioned on their support forums, but no one at TweetDeck seem to have picked up.

The only other issue I have is a minor UI gripe. When you click on the run in background button, the progress bar and cancel button for the background tweet covers the back button on the main part of the app. It's odd that they did that.

</comment></comment></comment><comment><USER6> I just installed it on my iPad and I'm only seeing the old iPhone interface. Anybody else have this problem?

EDIT: never mind, I just got the app update. I guess app store updates are not atomic.

<comment><USER7> I found that hitting the "updates" tab repeatedly caused the availability of the Twitter app to come in and out -- presumably because I was cycling through servers, some of which had the update and some of which didn't.

</comment></comment><comment><USER8> Will someone explain the first sentence? "Are you addicted to Twitter?"

What does that mean? How does that happen? What exactly are people getting "addicted" to?

I've used Twitter here and there, posted, or used it for a real-time search, but it just seems like retweets of the same articles over and over again, and then just constant regurgitation of the same information ... or tweets about nothing at all.

If you're still using Twitter, why? What value can I possibly extract from this thing? What are you getting out of it?

<comment><USER4> You're following the wrong people. Seriously. Follow your interests, unfollow liberally, tweet consistently. Put noisy but important people on lists (don't need to follow them for this). That's what I do. I talk to our customers. I talk to other devs that use the same tools I do. I talk to people who like the same sports teams I do. Find your community and talk to them. It's been immensely valuable for me.

<comment><USER9> Your comment should be on Twitter's welcome screen. It hadn't occurred to me to movie noisy people into lists.

<comment><USER9> [move]

</comment></comment></comment></comment><comment><USER10> When viewing someone's profile, you can see what I presume is their chronological user id. @jack, for example, is #12; @ev is #20. @paulg's recently created account is ~183M, and a brand new account came in at 185M.

Wonder if it's a bug or intentional that they're now releasing this info. I might not be update the app...

<comment><USER11> This info has always been available: the RSS feed attached to everyone's profile page is by ID.

For example, mine is feed://twitter.com/statuses/user_timeline/13192.rss

</comment></comment><comment><USER12> I like how it actually allows you to see @username replies in context.

</comment><comment><USER13> When I click on the read more link I get a page not found?

[http://techcrunch.com/2010/09/01/twitter-for- ipad/Adventures...](http://techcrunch.com/2010/09/01/twitter-for- ipad/Adventures%20In%20UI)

<comment><USER14> Not the most disappointing discovery.

<comment><USER13> True, I'm not sure why I even bother reading TechCrunch, but I guess I have a habit.

</comment></comment></comment><comment><USER15> Maybe I'm just looking at this the wrong way, but the way I'm seeing it they've developed an application with "layers" (or "windows" if you like).

Wasn't the selling point of the iPad that it was a simple to use platform and device, with everything running fullscreen and without confusing stacks and layers of applications and windows? That it wasn't a "normal" computer?

Amazing how quickly things go full circle these days.

<comment><USER16> The iPad app works in 'layers' in the sense that each time you drill down into something (a tweet, a user account, etc.), it shows that on top of what you were doing before, but still shows a slim strip on the left so that you can go back to where you were.

There's no mixing around, and everything's entirely linear. That's different from a windowing system, in which several different things are clamoring for your attention and mixing together.</comment></comment>


A Stanford Professor Says Juul Stole Her Anti-Vaping PowerPoint Slides - <AUTHOR> https://www.buzzfeednews.com/article/stephaniemlee/stanford-juul-vaping-curriculum <comment><USER2> As a reformed smoker who moved to vaping, I'm terribly concerned at the current marketing of vaping to teens, and the uptake within that age bracket in my country (NZ).

I switched because my nicotine addiction isn't an easy one to break, and vaping is significantly cheaper (our government increases excise taxes on tobacco annually, so currrently $30 NZD buys me a pack of 20 cigarette that I smoke in a day, or it buys me a bottle of vape juice that lasts 2 weeks).

And I'm a big fan of vaping for the economic and (so far as we know currently) health benefits for smokers.

But what really concerns me, is the number of young people who would never smoke due to the (successful! and good on the Ministry of Health for doing so) demonisation of cigarette smoking, who are instead happily vaping away.

It seems apparent from the marketing that Big Tobacco has realised where their next big market lies - young people who don't want to smoke, but will vape if you tell them it's healthy and cool. At the end of the day, you're still getting people addicted to nicotine for money. Yes, bonus that there's less cancer involved, but it' still a monetised addiction.

My preference would be for vape liquids containing nicotine to be prescription only for recovering smokers. If kids want to blow watermelon vapour out of their lungs, go nuts, just don't do it with a known addictive substance in the mix.

<comment><USER3> > My preference would be for vape liquids containing nicotine to be > prescription only for recovering smokers.

Isn't this going to make the argument for making teens smoke cigarettes so they can get access to vaping with nicotine? And before you say "they're not going to go that far," we can also have a conversation about what underage people will do to get access to alcohol.

Also, I'm especially humored by people wanting to put legal restrictions on things like vaping but wont have that same discussion about alcohol, which imo is much more harmful. Alcohol literally is: Yes, bonus that there's less cancer involved, but it' still a monetized addiction.

<comment><USER4> I think the flaw in that flow is that no one cares about nicotine, they just want vaping. As long as vaping without nicotine exists, there's no reason to go after the other version. Unless you're already addicted, and in that case, I'd say let's get them the prescription as well.

<comment> barry-cotter Yeah, and I smoked for more than a decade for the great taste and flavor. People vape for nicotine. It's habit forming, pleasant, either compatible with or actively helpful for normal social and working.

Like caffeine. People say they don't drink tea or coffee for caffeine but there might be one person who drinks decaf or no caffeine tea or coffee with the regularity of all the addicts who know perfectly well that they drink it most every day and feel crap if they don't.

<comment><USER4> If you don't get hooked to start, no habit forming needed. Isn't the point to stop the cycle? You also have to remember that these are teens as young as 9th grade that are doing it for social reasons. Let them play around with some flavored vapor (which seems safe so far, needing more regulation) and walk away without an addition.

</comment></comment></comment></comment></comment><comment><USER5> The title (from BuzzFeedNews) leaves out that the slides were plagiarized by Juul, then Juul _paid_ schools to teach them, all while name-dropping The Farm.

I'm trying to tease apart how much of the plagiarism is to be expected when you're an academic, whether Juul was being more manipulative or lazy, and is paying schools to teach this a token gesture, an insult, or inception marketing.

<comment><USER6> > how much of the plagiarism is to be expected when you're an academic

Last I checked academics have the same rights under copyright as the rest of us.

<comment><USER5> IANAL, but it's complicated because this was(?) produced as part of her employment by Stanford, so arguably Juul took Stanford's work. Stanford is private, it can do what it wants, but what about public universities? Should the public own the IP they fund? IP created by public employees in the US are often released into the public domain. What if a professor from a private school got a government grant? I'm not sure how settled any of this is legally.

<comment><USER7> Not just "released" \- works created by federal officers and employees cannot be copyrighted in the first place. But public universities are run by states/territories/etc., not by the federal government, and there's no such restriction on state governments. [https://en.wikipedia.org/wiki/Copyright_status_of_works_by_s...](https://en.wikipedia.org/wiki/Copyright_status_of_works_by_subnational_governments_of_the_United_States)

Another interesting case: works done by government _contractors_ are eligible for copyright protection, and the copyright can be transferred to the government, which is, I think, how parts of OpenStack can be copyrighted by NASA. By that argument, professors (or anyone else) with government grants should definitely be able to copyright their work and keep copyright.

There's certainly an increasingly-popular argument that publicly-funded research work should be publicly accessible / open access, but there's no law or even norm about it yet.

<comment><USER5> > There's certainly an increasingly-popular argument that publicly-funded > research work should be publicly accessible

JSTOR. Because you should pay for it twice.

</comment></comment></comment></comment></comment><comment><USER8> For the people here who are thinking teens are doing this for taste, etc.

Ask yourself how much more existential crises kids these days are facing.

Global warming is happening and the adults aren't doing anything.

They're seeing their family get crushed by medical debt and the adults aren't doing anything. Not only that they're actively voting for people who support the current system.

The world is fucked for these people and the adults are blaming stuff like how it tastes instead of the structural issues these kids are going through.

<comment> barry-cotter You've heard of the bomb, right? From 1950 to the end of the Cold War every thinking person knew there was an excellent chance that's they and everyone they knew could die along with the rest of civilization.

Before WW2 even the richest society in world history, the US, was by modern standards fairly poor. People died of diseases we just don't worry about now because we have antibiotics.

This generation is not special. Everyone has to deal with shit.

<comment><USER9> > This generation is not special. Everyone has to deal with shit.

When the Falklands War started in 1982, and the British warship was sunk, I seriously thought this was the start of WW3. So yeah, the shit was there too.

</comment></comment></comment><comment><USER10> Hey. I agree with smoking zones and so on. But why the trend towards bans? I want to die young.

</comment><comment><USER11> In 50 years we will look back on Juuls the same way we look back on cigarettes today.

<comment><USER12> I wish we were taking a much more harm-reduction focus like they are in the UK.

From the NHS website...

 _Leading health organisations including the Royal College of General Practitioners, British Medical Association and Cancer Research UK agree that e-cigarettes are far less harmful than smoking. Based on the currently available evidence, Public Health England and the Royal College of Physicians estimate they are at least 95% less harmful._

<comment><USER13> Yes, seems the UK is the only sane government on this. The US has gone absolutely hysterical on the subject. Ban is our only tool, and everything is a nail. Think of the fucking children, for GOD's sake! Puritanical roots probably has something to do with it.

When I was a child, Reagan kicked off the drug war into high gear to protect me. Millions incarcerated, even more families ruined. I wish he hadn't. We were hysterical then too.

<comment><USER14> Money, greed, and ignorance are at play here. If they truly "cared about the children", they'd ban smoking altogether.

</comment></comment></comment></comment><comment><USER15> Stealing other peoples work (including orignal slides) is not okay, specially without credits and/or permission.

<comment><USER16> Editing that work and then trying to pass it off as a collaboration is IMO even worse.

<comment><USER17> I had multiple college professors doing the same thing... but the first lecture was always about plagiarism.

</comment></comment></comment><comment><USER18> "Company in tobacco industry that tries to get children addicted plagiarizes slides"

Relatively nice journalism by Buzzfeed, but I think there are better topics to report on Juul if you're appealing to ethics.

<comment><USER19> It seems you didn't read the article closely.

They didn't just plagiarize the slides, they neutered them, and then attempted to pass them off as Stanford endorsed research; all without permission from the author.

<comment><USER18> I did read the article. All that is just a more unethical strain of plagiarism to me. I however agree with the other comment below that this report could go toward painting a full picture of what kind of company we're dealing with.</comment></comment></comment>


Ask HN: Where to find freelance/contract iPhone work? - <AUTHOR>

To all the freelancers out there, where do you go to find contract work? I'm specifically interested in doing some work for companies who need iPhone apps.<p>I am able to find people who need just regular web dev work, but I don't know where to look for people who need iPhone devs. <comment><USER2> After my 4th app went into the store, I get e-mails all the time now. Release something fairly popular within its niche and the opportunities will start to come your way.

In the meantime, just keep trawling the usual sites. e.g., 37signals job board etc.</comment>


Institue of brilliant failures - <AUTHOR> http://www.briljantemislukkingen.nl/EN/

<comment><AUTHOR> Would be inspirational to read about 'failures' of HN members here who ve' been there n done that...</comment>


WebGL-accelerated JavaScript molecular graphics library - <AUTHOR> https://github.com/dkoes/3Dmol.js

<comment><USER2> It seems like the number of options for in-browser molecular visualisation have increased recently, which makes me feel all the better for not getting around to integrating molecular vis into a protein centric tool I've been working on. I'd wonder why now seems like the right time to develop these tools? What was the main implementation stumbling block 5 years ago? As a nice touch, at least one of the demo pages works well on mobile, so I'm looking forward to playing with this.

<comment><USER3> I've developed a similar WebGL-based protein visualization tool ([http://github.com/biasmv/pv](http://github.com/biasmv/pv)). WebGL has only become a serious options in the past year or so. Before that, WebGL availability was a big blocker. Since the Java applets were working on a wider range of browsers people tended to stick with the established technology. This has certainly changed now as people also want to visualize proteins on their mobile devices.

<comment><USER4> Very cool! I'd like to develop something similar for viewing crystal structures (more solid state). Are there any particular challenges that I should be aware of? The last time I made a viewer was using VTK for the desktop...

</comment></comment></comment><comment><USER5> No screenshots, no demo.

<comment><USER6> Here. I clicked through. [http://3dmol.csb.pitt.edu/doc/index.html#toc2](http://3dmol.csb.pitt.edu/doc/index.html#toc2)</comment></comment>


Achieving PHP interop with .NET - <AUTHOR> http://blog.peachpie.io/2016/05/working-towards-php-interoperability.html <comment><USER2> Interesting project. Looks promising..</comment>


Faster TDD feedback with tmux, tslime.vim, and turbux.vim - <AUTHOR> http://joshuadavey.com/post/15619414829/faster-tdd-feedback-with-tmux-tslime-vim-and

<comment><USER2> +1 for tmux. I still have two pet peeves with tmux. Nicholas (maintainer of tmux), if you're reading this ... :)

All in all, tmux is one of the greatest programs ever. Even when working locally, I prefer to work within a tmux session. I've got single-key pane- switching shortcuts. Along with the inability of native terminals to create a vertical split (AFAIK), this is a significant productivity enhancer.

1\. Too aggressive buffering of pane output. runaway output on some panes (due to e.g. a bug in the program running in the window, not tmux) will really hose things up so bad that the only way to fix it is to disconnect the underlying ssh connection.

I'd like to be able to specify a maximum data rate on a per-client basis. If any client is backed up, freeze panes visible to that client.

2\. The keep changing the pane switching key bindings with every new release. :| With 1.5, they've taken away the ability to rotate thru every pane in a window in order: i.e., no concept of a "next" window. Only left and right.

3\. I wish they'd add the option to move to the "next clockwise pane" or "next counterclockwise pane". Maybe the new left-right infra might help with that.

Yeah, yeah, it's open source. I should probably go fix it myself instead of whining on a forum. Maybe I will one of these days. :)

<comment><USER3> iTerm2 on Mac OS X supports native vertical splits.

<comment><USER4> I've recently taken to having a tmux session on the left (with split panes) and then an iTerm2 split pane on the right, so I get a full terminal scroll back.

The keyboard shortcuts do get a bit confusing at times!

</comment></comment></comment><comment><USER5> I recommend anyone wishing to use something like this first try to implement it yourself first. It's remarkable how easy it is to script tmux and vim. If you have a split screen it's as simple as a vim mapping that executes !tmux send-keys -t right 'rspec %'

Not dissing the project - I would recommend then using a more battle-tested project (like maybe this one) if you find yourself needing something more generic and complicated.

<comment><USER6> Thanks, Brice! I also recommend implementing it yourself first. After I did just that, I found myself wanting a little bit more smarts with my vim mapping. Since most of my work is in rails, and I use rails.vim, I was able leverage rails.vim's buffer detection for alternate files.

In essence, if I'm in a controller that has a corresponding spec or test, the mapping with run that spec. If there is no corresponding spec, it will run the most recent command again. I find this useful for outside-in development, where a change in a controller might make a cucumber scenario pass.

I would, however, add that the command you mention above would need to include C-m at the end to actually send the terminal a "newline" character, thereby running the command.

In any case, I appreciate your interest in the project, and your helpful example!

<comment><USER5> I would normally leave this as is, but adding the C-m at the end is non- trivial so I wanted to give a more proper example. You're right, it should be:

        !tmux send-keys -t right 'rspec %' C-m

Notice the C-m is not quoted.

Definitely want to give a big +1, but it's really cool/useful to know what's going on under the hood.

</comment></comment></comment><comment><USER7> 'A practice that is quickly gaining popularity in the Ruby community is isolating your business logic from your persistance logic and framework.'

Anyone have links/further reading for this?

<comment><USER8> Arguably the start of the big community push in that direction was Corey Haines' "Fast Rails Tests" talk, which is really just a clever way of presenting the separation of logic argument. See: [http://arrrrcamp.be/videos/2011/corey-haines---fast-rails- te...](http://arrrrcamp.be/videos/2011/corey-haines---fast-rails-tests/) (or google "fast rails tests corey haines" for other videos)

</comment></comment><comment><USER9> Pinboarded for future reading.

`tmux` is great, but am I the only one unable to use `$ vim --remote file.txt` accross panes in `tmux`?</comment>


Google Puts A Price On Privacy - <AUTHOR> http://searchengineland.com/google-puts-a-price-on-privacy-98029

<comment><USER2> tl;dr: users ask for SSL Google search by default. Advertisers can't track page views by referring page, complain.</comment>


Phez: Loosing $29,014 Creating the Bitcoin-Rewarding Reddit - <AUTHOR> https://www.failory.com/interview/phez <comment><USER2> Bullshit, clickbait title: from the article- "It was self-funded, with about $350 or so worth of Bitcoin"

$350 is far from $29,014..hell, I've probably spent $350 in one night out partying before, and I've certainly lost that much or more in a single hand of poker more than once.

Pretty small change to compete with motherfcking reddit, one of the biggest sites on the web....and then to whine about it too? It would take $million$ to have a hope, i mean, come on, bro...

And regarding reddit's "censorship" that you speak of, ummm...have you seen what they still allow even now? That was token censorship of stuff like kiddie porn and people dying graphic deaths, and some stuff actually promoting the killing of homos and jews, and lynching blacks. You want that stuff??????

If you just want to take that kind of stuff, you could probably do alright with a site that focusses on just those areas!!! L M A O...have fun. :-\

</comment><comment><USER3> Why can't people spell "losing?"

<comment><AUTHOR> Sorry! It is the second time I misspell "losing" :-) I am not English native speaker.

<comment><USER3> No sweat. I have seen some native English speakers misspell it the same way. It's not just the spelling that counts. Thanks for posting this article.

</comment></comment></comment><comment><USER4> ___But I believe there should be somewhere online where you can voice opinions that are outside of the Overton window_ __

Doesn't 4chan solve that?

<comment><USER2> they really allow anything at all?? are you aware of the kind of extreme nastiness that reddit actually finally censored? i think the feds would seize their servers eventually.

</comment></comment><comment><USER5> With these post-mortem stories, I feel like there's a million ways to fail and maybe a few hundred ways to succeed.

Sure, you can learn through failure, but I see more value in trying to emulate success.

For example, we don't apprentice with multiple bad electricians to find out not to do it, we might apprentice with one or two good ones to find out how to do it well.

</comment><comment><USER6> "Losing"

</comment><comment><USER7> Reddit's problem is not that it censors too much — in fact, quite the opposite, and I wish all the people trying to build 'a better reddit' would realize that.

<comment><USER8> Its more that it allows communities to interact negatively with each other too much. Generally speaking nobody in the "toxic" communities is worried about the speech there or they would unsubscribe. The problem is when they brigade on other subreddits, or people not OK with what is said in one community decide to impose their morals there. The net result is large communities at war with each other.

<comment><USER9> I think the biggest problem with the news aggregator model is that up- and down-voting encourage groupthink and low-brow, visceral content that's easy to digest quickly.

<comment><USER2> also said of Facebook's personal feed (whatever they call that)

</comment></comment></comment></comment><comment><USER2> Let it loose!</comment>


Ask HN: Any one know when Stanford's Online Venture class starting? - <AUTHOR>

http://www.venture-class.org/<p>I am in school and I am taking one class less than the usual hoping that this class would start this quarter. <comment><USER2> Hi! I am not sure if you are referring to the class of Prof Sebastian Thrun? It will start on Feb 20.

You may refer to this link: [http://www.zdnet.com/blog/service- oriented/stanford-it-profe...](http://www.zdnet.com/blog/service- oriented/stanford-it-professors-new-venture-offers-free-online-technology- classes/8459)</comment>


A practical guide to securing macOS - <AUTHOR> https://github.com/drduh/macOS-Security-and-Privacy-Guide <comment><USER2> There is some seriously folkloric jibber-jabber in here. For instance, you do not need to wait until after installation to enable FileVault because "there is more entropy available to the system". Nor can you test the security of a CSPRNG by running "ent" on it!

In the same vein: _don 't_ run out and sign up for a commercial OpenVPN hosting service, and for Christ's sake don't install AV software on your Mac.

I kind of love how this is like 19 pages of rubber chicken "defaults write" commands, followed by advice to use Transmission to torrent videos to watch in VLC.

<comment><USER3> Why shouldn't you install AV software on a Mac? It's the least hardened of all current OSes. Luckily it's not attacked very often.

<comment><USER4> It seems unlikely that that could be the case: that Macs, which have massive market share in the kinds of places that attackers would want to compromise, have the least hardening and also aren't attacked very often.

Can you clarify which other OSes you'd consider to be more hardened?

<comment><USER5> Where do we get the idea that attackers target Macs? The DNC hack, to pick one notable example, primarily targeted Windows computers.

</comment></comment></comment></comment><comment><USER6> _> a modern Apple Macintosh computer ("MacBook")_

I don't get this. Does the author think Apple only makes laptops now? Don't the iMac and Mac Mini qualify as modern?

<comment><USER7> The current Mac mini? Probably not...

<comment><USER6> Yeah, unintended joke there.

</comment></comment></comment><comment><USER8> Ridiculous guide.

> Care should be taken when installing new software. Always prefer free and > open source software (which macOS is not)

"Free" doesn't have anything g to do with security and there are plenty of profound security flaws with all software — open source doesn't make it inherently more safe.

One of the most serious security issues of the past few years came from OpenSSL/Heartbleed. Equifax was from unpatched Apache Struts — while the cause was negligence on the part of Equifax, happened due to a vulnerability in open source software. I am definitely not arguing that closed source is more secure, but I am arguing that open and closed source can have significant vulnerabilities. One is not inherently safer than another; it depends on how it is used. Apache Struts has a significant vulnerability before it was patched — which means that it was unsafe at some point. How many years was OpenSSL vulnerable before the exploit was discovered? Closed source certainly doesn't fare much better, however implying that open source is always safer is just incorrect. I use "always" here because the author said to "always" prefer free and open source over closed source. His qualifier, not mine. Always is a very strong word. Many open source projects are often at the level of a hobby, with part time, occasionally unprofessional management and processes. Of course many closed source software also has unprofessional management and processes as well. I am simply disputing the implication that open source is always better: it's not. Often and perhaps generally, but not always. I would trust Apple closed source more than some rubygem created and maintained by a single developer as a side project, with dependencies created by other hobbyists as a side project. A rubygem, for example, is dependent on the security competency of the weakest dependency. Often the projects are well secured — but definitely not always.

I am a big supporter of open source, but arguing that open source is always more secure is just factually incorrect. And the "free" aspect is a political benefit, not a security one.

The author also has a clear lack of understanding of how FileVault works as an example, which calls into question any other recommendations made in this guide.

</comment><comment><USER9> I have been running Linux for some months now on my workplace MPB ever since the whole root with empty password fiasco. I don't trust macOS in any manner no matter how many fixes you try and apply to it, for some reason I feel like I simply can't trust macOS security wise for my part.

Only darn problem is I can't get my speakers working so I use Bluetooth headphones, but for a workmachine it's fine.

<comment><USER10> Desktop Linux is not exempt from security compromising mistakes either. There's been plenty of equally bad ones, like pressing backspace 28 times to bypass Grub.

</comment></comment><comment><USER11> Goodness, I'm floored. There's an absolutely incredible amount of insight in that document. I can only imagine how many years of collective experiences and digging have resulted in this compilation.

<comment><USER12> I think it's probably worth approaching this very skeptically as a guide to improving the actual security of your Mac. Big swathes of it are really 'fun ways to nerdfiddle with your system' that don't actually do anything to make it more secure and quite a bit of the fiddling can arguably make it substantially less secure.</comment></comment>


Anonymous Affinity Group Leaks One Million Accounts and Records - <AUTHOR> http://anonymousnews.blogs.ru/2012/08/25/leaked-by-hacker-group-in-protest-to-banks-politicians-one-million-accounts-and-records/

<comment><USER2> > superficially interesting.

"ESA Part 1 - Mirror1 <https://gist.github.com/b4964a178363e17a3c7f> Mirror2 <http://pastesite.com/42466> Mirror3 <https://privatepaste.com/31f9bd216f>

> <http://esa.ever-f.eu/page.php?edi_id=1> >> European Strabismological > Association

"ESA.org - Mirror1 <https://gist.github.com/66f000d8994fc19b7fbb> Mirror2 <http://pastesite.com/42471> Mirror3 <https://privatepaste.com/118c4cd9b0>

> ESA.org > Ecological Society of America

> A story about a robbery, for example, would probably not be deeply > interesting.

This would be like a robbery, as it does not show anything of value. What good is in 'hacking', generously speaking, the Ecological Society of America or the European Strabismological Association. Where they trying to sound hard by putting ESA there? Even though it's totally not the ESA.int we all imagined.

What a joke.

</comment><comment><USER3> "Included in the leak are, CIA accounts/records, banks, politicians, you name it, they hacked it — to the tune of one million accounts and records leaked."

The "CIA accounts/records" mentioned seem to be from <http://www.ciaservices.com/>. Here's a blurb from their "About Us" page:

"Since 1984, C.I.A. Services has been a leader in managing community associations. We are well respected and the trusted choice for over 100 community associations throughout the greater Houston and San Antonio areas."

Given that, I highly doubt there's much of importance in this leak. I saw some password hashes from some random small websites that don't have anything whatsoever to do with the CIA, banks or politicians, but that's about it. This isn't political activism, it's script kiddie idiocy.

</comment><comment><USER4> Original release: <http://pastebin.com/BuabHTvr></comment>


Apply HN: Kill Wages- Baseball Like Draft for Programmers - <AUTHOR> If we removed wages and time as a proxy for value, everyone would make more money. This is not about social Justice.We aim to replace wages with mini X-prizes.
Why would business prefer this? -Fire prevention Vs Fire Fighting-- code is done well once and for all. -Less operating capital-- free from pressure of monthly salary expense. -Programmers who speak up--- less waste from boss' ego features. - Deeper talent pool-- Have a whole 'guild' look into your problem vs only the persons you have hired/contracted.
Benefit to programmers -Direct attribution to profit and growth. -Keep more of your paycheck Vs burning it on high rent.
-Automate yourself out of a job and earn perpetual royalties. -Build apprentices- nurture and discover talent to take over from you.
If tech and AI are about efficiency and driving costs down, then wage free prog(workers) will accelerate us to the new  golden age. <comment><USER2> If I understand correctly, the "baseball like draft" would turn every developer in to a contractor working to an annual contract, right? There seem to be some paradoxes in your idea though. You believe that a "baseball like draft" would mean everyone would make more money, but at the same time businesses would like it because it lowers costs. How does that work? You say that it would relieve the business pressure of ongoing monthly salaries, but at the same time all the programmers would receive perpetual royalties? Programmers who speak up would improve things somehow, but there'd be less waste from boss' ego features - what if the newly outspoken developers want to add ego features?

<comment><AUTHOR> Nice questions. if we had 'teams' of programmers and each team competes for new members, that is where 'the baseball like draft' analogy from. The programmers would be earning an income from their team so I am not about turning developers into contract workers. Just to clarify a team could be a co-op( or whatever structure).

Making more money doesn't have to come from wage inflation. it can be derived from cost saving. Just like if you are a member of housing co-op, you still pay rent but the benefits you derive are incomparable if you just paid directly to a landlord.

For a capitalistic business, the two options are either pay a fixed monthly wage and keep most of the profit or have no upfront wage costs and share your profits(royalties).It all comes down to preferences and what position each party wants/can negotiate.

It is not perfection I seek but less options that I seek to avoid. About Egos that where the "xprize' esque comes in, business pay for explicit specific outcomes(think of it as a service level agreement).

<comment><USER3> Im still a bit confused. I've been on both the building side and the hiring side so I'd be in your target market. Can you contrast this model from hiring a typical dev shop or freelancer to fill a project spec for me? The business saves money, but pays royalties? The dev team gets a monthly wage but have to live together?

</comment></comment></comment><comment><USER4> Can you provide a walkthrough scenario or two that really explicates what this would look like in practice?

<comment><AUTHOR> A programmer is a member of a 'guild', where he/she draws a monthly income. A business needs some sales/biz dev automation done. The usual approach is to either hire someone or contract out the work, what I propose instead is that the business puts out specific outcomes that they want with a monetary value.

For example; we will pay x amount per customer who stays for 3 years and we spend only time(t) per week servicing this customer. The benefit here is,instead of maybe just creating a DB and automating invoice collection(which are just features and piecemeal work) the programmer and business are forced to look at the totality of biz operations and explicitly state the cost and value of each action, step and procedure.This way a programmer can directly identify the value that they created from cost savings or higher billings. To me the 'Xprize' is about specific successes and outcomes.Even if these outcomes may take time to be seen, the programmer is earning an income from the guild and the business pays up for actual value when it is experienced.

<comment><USER5> X Prizes (and their ilk) are great, but they have limited application. So much of what developers do is not directly measurable. For example, how do you measure the value of a scalable, modular, and extensible platform that will serve as a basis for growth over the next 5-10 years? By only rewarding what you can measure now, you risk running up a lot of technical debt in pursuit of those metrics.

<comment><AUTHOR> " For example, how do you measure the value of a scalable, modular, and extensible platform that will serve as a basis for growth over the next 5-10 years?" your questions provides evidence of why I would prefer a wage free environment. As it currently stands now, a business will pay you an upfront fee to develop this platform, and earn most of the profit for the next ten years. I would rather earn a royalty from my platform in all these ten years( this sorts out the technical debt issue).

Again this is not about worker Vs business, it is about what arrangement makes more money for everyone especially from the business perspective, and are incentives aligned.

<comment><USER5> That's sort of how startups work, with equity grants to early employees. What you are proposing for larger businesses is simply impractical and so inconsistent with the current state of affairs that it really has no chance. To succeed, you're going to have to fundamentally shift our business culture. I see the ideal that you are striving for, but I can't fathom a path to get there from here.</comment></comment></comment></comment></comment>


Using Rust in Mercurial - <AUTHOR> https://www.mercurial-scm.org/wiki/OxidationPlan# <comment><USER2> So my understanding is the hg developers are planning to rewrite a large part of hg in Rust. If so, this is an unfortunate blow to Python, because often I hear (and I do as well) Python developers cite hg as one of the largest Python-based application (regardless of the C-extension). I certainly feel sad if that is the case.

I studied hg quite in depth in undergraduate for a semester, when I was implementing "bitbucket" myself. To be really honest, the codebase was easy to navigate, and function names were pretty consistent with the actual hg commands/internal spec. While the code itself is probably hard to write any true unit tests (you'd have to monkeypatch like crazy) using mock -- which means the function has a lot of code, overall the codebase quality was pretty good for a complex software. I just had to know the variable name abbreviations, get used to them and referred back to the Hg paper.

In anyhow, whatever the decision is, I'd learn a bit Rust to help out :-)

P.S. I am still trying to find an answer to this: if FB uses Hg, then what about their git code?

<comment><USER3> _> If so, this is an unfortunate blow to Python_

As both a Rust and Python user, I don't necessarily agree. This isn't a rewrite to purge Python; it's clear from the post that Mercurial values Python's flexibility, and wants to bend over backwards to ensure as little of that flexibility is lost in whatever transition may occur. And Python's credentials would be secure with or without Mercurial being written in it. Frankly, I think that swapping out critical bits for a low-level language is a great way to scale a dynamic-language codebase without completely sacrificing the usual ergonomics of dynamism.

<comment><USER2> Basically, Mercurial is migrating away from Python as its primary and core programming language. You don't say Git is written in Python even if Git were to have a few Python code (I actually don't know, never read Git code), would you?

The Python community agrees that in order to combat performance, Python developers would write C extension and/or compile code with Cython before considering a language migration. You can no longer say Hg is written in Python. You can't cite that in any of your conversation unless you say "was written in Python". This migration is to show that while Python's flexibility and dynamism are great, especially in the context of development velocity, Python is no longer Hg's first-class programming language of choice whenever possible. There is a limit as to how much you can get from Python. That's a blow, a temporary crying moment. I recognize this is cynical or entirely an ego thing. I am, again, to be clear, I am not criticizing the decision to move away to Rust - because I have an equal respect for Rust, but this announcement is nonetheless a sad moment to see another Python project moving away.

Sometimes improvements to a programming language stem from the limitations observed by a popular project (and equally by the large number of users).

P.S. On the other hand, moving CPython devl workflow from Hg to Git was a blow to Hg.

<comment><USER4> > Basically, Mercurial is migrating away from Python as its primary and core > programming language. You don't say Git is written in Python even if Git > were to have a few Python code (I actually don't know, never read Git code), > would you?

Not necessarily. It would show that you can prototype an application in Python and once you have a stable product you would have a migration part to Rust for optimization. That might be even a bit more convincing than the prospect of starting a new project in a non-GC lang.

</comment></comment></comment></comment><comment><USER5> Initial reaction to headline was it sounded like (a) no more python, and (b) this is a decided future direction.

Instead, it sounds like this is a proof-of-concept for flipping the main 'hg' command from being python + C extensions, to instead being a rust binary with an embedded python interpreter. Part of the rationale appears to be performance, but also smoothing out cross platform experience, especially on Windows.

Pulling out some related snippets:

\-----

 _While Python is still a critical component of Mercurial and will be for the indefinite future, I 'd like Mercurial to pivot away from being pictured as a "Python application" and move towards being a "generic/system application." In other words, Python is just an implementation detail._

\-----

 _Desired End State_

 _hg is a Rust binary that embeds and uses a Python interpreter when appropriate (hg is a Python script today). Python code seemlessly calls out to functionality implemented in Rust. Fully self-contained Mercurial distributions are available (Python is an implementation detail / Mercurial sufficiently independent from other Python presence on system)_

\-----

 _" Standalone Mercurial" is a generic term given to a distribution of Mercurial that is standalone and has minimal dependencies on the host (typically just the C runtime library). Instead, most of Mercurial's dependencies are included in the distribution. This includes a Python interpreter._

\-----

 _This patch should be considered early alpha and RFC quality._

<comment><USER6> what does embed python interpreter mean? are they actually writing a python interpreter using rust so they can write python code and compile to rust?

<comment><USER5> python has a concept of "extending" and also "embedding". It looks like they are looking at embedding[0], which enables you use the normal CPython interpreter from within another program. (So no, not writing a new Python interpreter in Rust).

Sample snippet from python docs:

\-----

 _So if you are embedding Python, you are providing your own main program. One of the things this main program has to do is initialize the Python interpreter. At the very least, you have to call the function Py_Initialize(). There are optional calls to pass command line arguments to Python. Then later you can call the interpreter from any part of the application._

 _There are several different ways to call the interpreter: you can pass a string containing Python statements to PyRun_SimpleString(), <...etc..>_

\-----

[0] [https://docs.python.org/3/extending/embedding.html](https://docs.python.org/3/extending/embedding.html)

<comment><USER5> If interested, you can see their work-in-progress main.rs in the related code revision[0], which includes their Rust code calling down to the C function Py_Initialize() to spin up the now-embedded CPython interpreter that is living "inside" a Rust program:

        unsafe {
            Py_Initialize();
            PySys_SetArgv(args.len() as c_int,
                          argv.as_ptr());
            PyEval_InitThreads();
            let _thread_state = PyEval_SaveThread();
        }

\----

[0] [https://phab.mercurial- scm.org/D1581#change-t24aVkGEJ5Xh](https://phab.mercurial- scm.org/D1581#change-t24aVkGEJ5Xh)

</comment></comment></comment></comment><comment><USER7> Leaving aside the actual project at hand, this is a great example of a well thought out project plan. There is a clear rationale, clear end state, a bunch of known problems to tackle, a front loading of risk, and it delivers incremental value along the way.

</comment><comment><USER8> I was wondering how serious this was. I don't know a lot about how mercurial is developed, but [https://twitter.com/indygreg/status/937527180292014080](https://twitter.com/indygreg/status/937527180292014080)

[https://gregoryszorc.com/work.html](https://gregoryszorc.com/work.html)

> I am a significant contributor to the Mecurial open source version control > system.

> I serve on the Mercurial Steering Committee, which is the governance group > for the Mercurial Project. I also have reviewing privileges, allowing me to > accept incoming patches for incorporation in the project.

So not sure, but it seems like at least one person on the team is into it?

<comment><USER9> This is a proposal not a plan. Right now it's 100% vaporware.

<comment><USER8> Yeah, totally; I was wondering if it's a proposal that came from the team themselves, or some random person.

<comment><USER10> There's pretty broad consensus that we'd like to do Rust and not C for future extension work, but the current plan is that a pure-Python hg will also be something we support. The "rust binary that embeds Python" approach looks like a straightforward win on Windows, where we have a native .exe that embeds Python anyway. I'm not sure if that'll make sense on non-Windows, but we'll see.

I've done some poking around with milksnake, which seems extremely promising for writing native speedups.

<comment><USER11> Do you know what is the current status for Hg on PyPy? (I guess that besides portability that was also a motivation for keeping the pure python bits around.

<comment><USER10> Last I knew it worked fine, but hg doesn't tend to run long enough for the JIT to warm up enough and be an unambiguous win. Fijal complemented us on how good our C was.

I think it does work if you do chg with a commandserver in pypy.

</comment></comment></comment></comment></comment></comment><comment><USER12> > The nice things we want to do in native code are complicated to implement in > C because cross-platform C is hard. The standard library is inadequate > compared to modern languages. While modern versions of C++ are nice, we > still support Python 2.7 and thus need to build with MSVC 2008 on Windows. > It doesn't have any of the nice features that modern versions of C++ have. > Things like introducing a thread pool in our current C code would be hard. > But with Rust, that support is in the standard library and "just works." > Having Rust's standard library is a pretty compelling advantage over C/C++ > for any project, not just Mercurial.

Sounds like the main reason for rust is that Python has a weird dep on a fixed MSVC version.

<comment><USER13> Which they mention they'd still have to implement workarounds for if they adopt Rust, so I'm not sure I understand that selling point.

<comment><USER14> Switching to Rust removes a lot of papercuts from dealing with MSVC. These things could be solved in many other ways, so it's not exactly _the_ reason, just something you also get from adopting Rust.

For C programs Windows happens to be the odd one out for lots of things. It's annoying with its unloved C compiler, missing unix-ish headers and tools, string encoding pains, very different packaging story, etc.

So I think the motivation here is they'll solve just that one CRT problem now, and will have fewer Windows problems to worry about later.

I've done that for pngquant. I can build things with Cargo rather than explain to users that `make` may be `mingw32_make`. I can parse options with Rust's getopts, rather than getting bugreports that Visual Studio can't find `getopt.h`. These aren't hard problems. I could have solved all of them, but I don't have to!

</comment></comment></comment><comment><USER15> For those that don't want to deal with the Python startup time, the Mercurial team already has an attempt at fixing this with a tool called CHg[0]. It is a C binary that interacts with the Mercurial CommandServer[1], which is just a long running version of Mercurial CLI that you can interact with over a pipe.

Using Rust as the primary client would simplify this a lot, but is a lot more work than what CHg accomplished.

[0] [https://www.mercurial-scm.org/wiki/CHg](https://www.mercurial- scm.org/wiki/CHg)

[1] [https://www.mercurial-scm.org/wiki/CommandServer](https://www.mercurial- scm.org/wiki/CommandServer)

<comment><USER16> This is already explained in the linked article.

<comment><USER15> I noticed this after the fact. Thanks for pointing it out.

I had previously looked into understanding how mercurial worked and what options there were for different frontends or backends. (And what it would take to write my own backend just to understand a very basic flow of a clone or pull). It's a lot of work for sure and there mercurial team (at least mpm a few years back) preferred one true implementation.

</comment></comment></comment><comment><USER17> I suddenly remember FbExperiment on building Mercurial server using Rust [https://github.com/facebookexperimental/mononoke](https://github.com/facebookexperimental/mononoke)

And yes.. it's for extension modules (maybe just the beginning)

</comment><comment><USER18> Perhaps childish and trite but I do like the use of the word "oxidation" for porting to Rust

<comment><USER19> There is precedent! [https://wiki.mozilla.org/Oxidation](https://wiki.mozilla.org/Oxidation)

</comment></comment><comment><USER20> "Rewrite everything in Rust, exactly the same way but in Rust it solve all problem." \- some Rust programmer

</comment><comment><USER21> how would they deal with hg extensions written in Python?

<comment><USER22> By embedding[0] the interpreter and loading the extensions in there.

[0] [https://docs.python.org/3/extending/embedding.html](https://docs.python.org/3/extending/embedding.html)

</comment></comment><comment><USER23> It's not being rewritten in Rust. They want to use rust instead of C for extension modules.

<comment><USER24> One of us misread the article. I understood it to say that they want to rewrite the core of the Python code to Rust so that they don't have to wait for the Python interpreter to start every time someone uses the hg command. The Rust binary will be able to call Python code, which is basically a complete reversal of what they have now.

<comment><USER23> > One of us misread the article. I understood it to say that they want to > rewrite the core of the Python code to Rust so that they don't have to wait > for the Python interpreter to start every time someone uses the hg command.

It would still use the Python interpreter internally but they want to skip it for some functionality like the basic command line interface. So they would embed the Python interpreter in their new distribution. However the Python code still just calls out to other Rust code.

<comment><USER25> > However the Python code still just calls out to other Rust code.

this will probably be hard. calling back and forth is always harder than into a single direction.

</comment></comment></comment></comment><comment><USER26> really wonder why not Go.

original code was python with lots of C. the same can be done with Go, while keeping much of the same philosophy of python.

This change will probably alienate most of the contributors since rust and python or C are worlds apart.

<comment><USER27> I would wonder why Go if Rust is available.

Rust isn't hard. The only somewhat hard thing in Rust is writing with borrow checker, and honestly, if you want to seriously write in C, you really need to go through that experience and understand it enough to feel somewhat comfortable with it.

And even if that would really be a thing, giving up compiler checks in order to allow more low quality code to be contributed doesn't really seem like a good trade off to me.

<comment><USER28> Rust is certainly harder than Go. There's no need to dance around the issue, that doesn't help anyone.

Further, Mercurial is already 100% on the train of "giving up compiler checks," though "low quality code" is hardly a fair characterization of why.

<comment><USER29> In isolation Go is probably easier to write than Rust. However in terms of embedding/interop Rust is certainly much easier.

Last I looked there wasn't a way to pin a pointer in Go and they explicitly forbid passing around opaque handles so you're already constrained in how you can interop.

Secondly you now have a whole nother runtime to hoist up instead of a simple C FFI. It hit this just recently with Python+Rust. Needed to optimize an inner loop. I could just drop down to a single Rust fn, write it and be on my way. No need to spin up a whole runtime just for that inner function.

The parent also hit it on the head. If you're going to be writing C you already need to understand lifetimes deeply, Rust just codifies that in a way that lets you catch it at compile time.

<comment><USER30> > _If you 're going to be writing C you already need to understand lifetimes > deeply,_

Deeply? Unlike complicated languages like for example GC-languages, C only has 2 lifetimes: block scope for stack variables, forever (until explicitly free'd) for heap malloc'ed memory.

You don't have to twist your head to know in which of N possible ways the data you get from a function was allocated, you don't have to twist your head to know if you need to free it manually, or semi-manually, or hope that it gets freed automatically at some point.

You don't have to care about stack variables, you just have to be organised about heap variables, and that's it. No complicated concept, not many different paradigms. You malloc() something to get some memory when you need it, you free() it when you don't need it any more.

Also you don't have to twist your head to know if you can access some function argument, if it was passed by copy or by reference or by a third mean, does it involve heavy data copying or not, what does it mean concerning access, etc. Everything is passed by value (copy) and you can only pass simple objects (plus structures), for anything else you pass the value of the address of the object, end of story.

<comment><USER28> > C only has 2 lifetimes: block scope for stack variables, forever (until > explicitly free'd) for heap malloc'ed memory.

To the contrary, C has just as many lifetimes as Rust. They're just not explicit. "free() it when you don't need it any more" is a complex problem and C doesn't really help you solve it at all.

> Everything is passed by value (copy) and you can only pass simple objects > (plus structures), for anything else you pass the value of the address of > the object, end of story.

That's how Rust works as well.</comment></comment></comment></comment></comment></comment>


Reddit is so normal (new front page algorithm brings more diverse content from subreddits) - <AUTHOR> http://blog.reddit.com/2008/03/reddit-is-so-normal.html

<comment><USER2> Finally, trying _something_ to correct this problem. Good to see.

</comment><comment><USER3> Ha! I was wondering why I could see content from all my subreddits today! Time to turn back on the main reddit and politics reddit.

</comment><comment><AUTHOR> The reddit front page is much better since the change.

<comment><USER4> The front page is better, but the insightful and intelligent comments are lost forever.

<comment><USER5> Maybe. Thanks to subscribing (only) to economics, programming, ruby, science, and a handful of other subreddits, I'm seeing an awful lot more of the people I thought had departed. I've started 'adding them as friends' so that I can visually track the density of good commenters at a glance. It appears that modifying your subscriptions to avoid 'politics' and 'pics' increases that density substantially.

And, really, Metafilter isn't that great afterall. So I'm very happy that reddit did this. I was wondering whether normalization wasn't a good answer. Looks like it was. If I weren't working on my thesis I would apply to reddit. Hell, once I'm done with the revisions, I might just apply to telecommute as an 'intern' just to play with the data, if they'll let me. This sort of thing is always fun.

</comment></comment></comment><comment><USER6> I was wondering why I was seeing something Ruby related at #6.

Does the top ten reddits contain NSFW?

Can it still be gamed somehow? If in some rare freak accident the XKCD, Ron Paul, LOLCAT, Sheeple, and Anti-Scientology reddits got in the top ten, the front page would still be just as bad. :/

<comment><AUTHOR> There was a NSFW item on the front page for a brief period of time but it fell off. Seems like things that don't belong on the front page fall of pretty quickly.

I'm sure it could still be gamed by networks of gamers like <http://piqq.us/> (thankfully they haven't hit reddit yet).

The important thing is that they're trying. In this case, almost any change is for the positive.

</comment></comment><comment><USER7> Reddit is a cautionary tale of social sites. I'm new here, and love it so far: has there been any discussion of how to stop this splendid corner of the internets from being ruined by incoming hordes of morons?

<comment><USER8> Has there been discussion about anything else?

</comment></comment><comment><USER9> _Ducks to dodge the firestorm_</comment>


Ask HN: Why every company writes their own billing solution? - <AUTHOR> Most companies write their own billing solution with custom payment method integrations.
Why isn't their open source solution which takes care of it all?
I am interested in sponsoring work in this direction if anyone is interested. <comment><USER2> (I work on Stripe Billing.) Broadly we think most people should buy rather than build here, because billing is infrastructure and doesn't create the unique value in your product that makes more customers willing to pay. Why is there relatively little OSS for it? Probably because it's difficult to do right, a bit crufty, and tough to motivate a volunteer workforce to wake up in the morning and crank through some tickets about German invoice formatting.

Here's the evolution that we see at a lot of companies as they grow: the table stakes version of billing ("just get something that lets us charge for our MVP!") is an N week project. Everyone gets it wrong, but right enough to not kill the business. Then it worms the way into the rest of their systems, because of a lack of clear design boundaries or a documented internal API to answer questions like "Should account X have access to feature Y?", and it becomes an ongoing maintenance task both for the billing system and all the code which touches it, which is everything.

Once your business gets big, billing isn't just annoying and taxing on your productivity: you have to start telling the business "No, you can't do that, because the billing system won't support it and we can't fix that in less than 6 months." There are products which are not available in Japan because billing systems hardcode currency formats. There are marketplaces that can't tolerate cross-border commerce because they can't accept a pay-in and pay-out with different currencies, as a purely technical limitation.

These are not good problems to have. We think startups should just adopt a billing system which was written by a team of people who breathe billing issues. We feel so strongly about this that we subsidize startups use of our billing product down to free, for their first million dollars in sales.

There, of course, exist other options. As someone who works on this every day: please adopt one of them. You will save yourself a lot of toilsome work which largely doesn't advance your business goals.

</comment><comment><USER3> If you don't write your own billing system, either:

>Option one:

The group managing your billing system is going to take a cut of your revenue, and if you're really big, that's unacceptable.

One example: Stripe takes about 3% [1]. If you're a major commerce company like Ebay which made roughly 10 billion dollars [1] last year and you used stripe (and lets say you did no negotiation and just used their defaults, unlikely but possible) that's 300 million dollars plus change you're leaving on the table by outsourcing. This means if you're in a position like that and it costs you less than 300 million dollars to build and maintain your billing system (and keep in mind 300 million buys you a team of 2,000 engineers and managers all working at fully loaded costs of 150k), then you're not going to outsource.

>Option two:

You're going to use an open source solution. Risk aversion is the critical point here: If your billing fails, or gives out product for free, in many cases, you no longer have a business. You cannot afford to get billing wrong, and so, in an environment where no "It just werks" open source solution exists, this isn't really a choice most management types can stomach.

[1][https://memberful.com/blog/stripe-vs- paypal/](https://memberful.com/blog/stripe-vs-paypal/)

[2][https://www.statista.com/statistics/507881/ebays-annual- net-...](https://www.statista.com/statistics/507881/ebays-annual-net-revenue/)

</comment><comment><USER4> There are a lot of solutions out there that tackle billing but they may not necessarily be open source. Examples being chargify [0], recurly [1] etc.

A couple of open source solutions that I found are killbill[2], laravel spark [3], bullettrain [4], opensourcebilling [5]. Again, they may not necessarily be 100% free but they are open source.

Also, billing is a very subjective term. Do you mean subscription billing or just plain old invoice type solutions or a combination ? There are tons of invoicing tools like invoiceninja [6] and plenty others.

[0] [https://chargify.com](https://chargify.com)

[1] [https://recurly.com](https://recurly.com)

[2] [https://killbill.io](https://killbill.io)

[3] [https://spark.laravel.com](https://spark.laravel.com) (billing plus SAAS)

[4] [https://bullettrain.co](https://bullettrain.co) (billing plus SAAS)

[5] [https://opensourcebilling.org](https://opensourcebilling.org)

[6] [https://invoiceninja.com](https://invoiceninja.com)

<comment><AUTHOR> Thanks. I am looking for SaaS billing.

Killbill seems interesting. But I am unable to add bitcoin plugin in killbill. It seems to be 99% of what I am looking for.

But still this place does need user friendly solution.

<comment><USER5> Paddle and Fastspring are worth looking at if you want them to deal with EU VAT for you. Neither does Bitcoin as far as I know.

Also, you'll generally have to come up with and integrate your own solution for user management and how your users are linked to subscriptions. Both services above for example assume you have an existing user database.

</comment></comment></comment><comment><USER6> Disclaimer: I work at Cheddar, a billing company.

I think it's crazy that everyone writes and maintains their own billing solutions too.

I think people build their own billing solution because for a long time, there wasn't one well-known tool out there that could handle all of the complexities of a software company's billing (dunning, customer emails, assembling invoices, usage tracking and metering, etc.).

And when a well-known company like Stripe comes along and offers billing, people are hesitant and have a little sticker shock because at scale, they charge a lot of money for billing. Stripe Billing costs 0.4% of revenue (after $1m in lifetime revenue) and then 0.7% at scale on top of their payment processor which already costs 2.9% + 30% per transaction[1]. And while that rate is pretty standard, if you have high and growing revenue, you can often negotiate a lower payment processor rate with other payment processors, but Stripe locks you in to using them.

So, instead, developers choose to build billing systems themselves using tools out there (Stripe for payments, X for dunning, Y for customer communicating, etc.). However, that also creates a lot of complexities because if you need to change anything down the line or update how exactly you charge for your product, you'll probably have to go back to the codebase, meaning developers will have to dive into code they haven't touched in a while and rework things.

That's why we created Cheddar ([https://getcheddar.com](https://getcheddar.com)), a usage-based billing platform and API that lets software engineers finally decouple billing from the codebase, track usage data (that you're not even billing for), and flexibly apply and iterate pricing plans to that usage data.

[1] [https://stripe.com/us/billing/pricing](https://stripe.com/us/billing/pricing)</comment>


A Service Mesh for Kubernetes, Part I: Top-Line Service Metrics - <AUTHOR> https://blog.buoyant.io/2016/10/04/a-service-mesh-for-kubernetes-part-i-top-line-service-metrics/ <comment><USER2> I'm curious how managable this in practice.

On the one hand, Linkerd brings some real technical solutions to the table that Kubernetes can't solve right now — K8s' L4 load-balancing can only load- balance entire connections, not requests. For that reason, K8s can't do anything to assist you with timeouts, retries, rate-limiting, tracing or metrics collection. I like the idea of a semi-transparent middleman that handles these things for you and lets your applications be small and simple.

On the other, this setup replaces a core K8s concept with its own, less proven components. As I understand it, Linkerd's daemon replaces service lookup entirely; it will talk to the API server to get service endpoints, which means it needs to invent its own logic to keep up to date with changing pod configurations. It had better be solid stuff!

To reduce surface area, I wonder if running one Linkerd per pod in a sidecar container is a viable option, or would that be crazy?

As an aside, can anyone explain why the example needs to start "kubectl proxy" in a sidecar container? Kubernetes already has a perfectly good way for apps to talk to the API server through a service account [1]. Seems iffy to me.

[1] [http://kubernetes.io/docs/user-guide/accessing-the- cluster/#...](http://kubernetes.io/docs/user-guide/accessing-the- cluster/#accessing-the-api-from-a-pod)

<comment><USER3> Great point about the need for production worthiness. FWIW the load balancing pool management, etc., in linkerd is straight from Finagle, which is probably _more_ proven than Kubernetes, if anything (powers Twitter, Pinterest, SoundCloud, etc.) Some K8s-specific bits are fresher code, but even those have been tested at non-trivial scale, e.g. [https://monzo.com/blog/2016/09/19/building-a-modern-bank- bac...](https://monzo.com/blog/2016/09/19/building-a-modern-bank-backend/)

</comment></comment><comment><USER4> Still trying to get the laymans explanation of linkerd. Is it a drop-in replacement for making service-to-service HTTP calls? AFAIK it's a standalone proxy-like version of Finagle.

<comment><USER5> Right, if I want to rely on Finagle's RPC capabilities, e.g. load balancing, routing, tracing, etc, then my microservice must be JVM based and use the Finagle library. This is a standalone proxy deployed as a 'sidecar' app alongside my service. This allows me to implement the microservice in any language I want and get some of the features listed previously.

Of course you now have another moving part in your system :)

</comment></comment><comment><USER6> See also: Envoy

[https://lyft.github.io/envoy/](https://lyft.github.io/envoy/)

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

</comment><comment><USER7> I thought Kubernetes itself does service discovery and load balancing. Why would I want another layer/proxy to the involved?

<comment><USER3> Request-level versus connection-level load balancing. See e.g. [https://blog.buoyant.io/2016/03/16/beyond-round-robin- load-b...](https://blog.buoyant.io/2016/03/16/beyond-round-robin-load- balancing-for-latency/)</comment></comment>


Passpoint WiFi tech promises cellphone-like handoff between hotspots - <AUTHOR> http://arstechnica.com/business/news/2012/05/passpoint-wifi-tech-promises-cellphone-like-handoff-between-hotspots.ars <comment><USER2> TeliaSonera already offload automatically to their own wifi whereever it is possible and the mobile client supports it (mostly meaning it will offload iPhones as the support from Android phones isn't very good yet).

Nice to see things happening but the main problem to solve is not the end user equipment this article talks about, but rather operator systems (systems that could handle this and scale for the increased traffic is not something many operators have).

<comment><USER3> >Nice to see things happening but the main problem to solve is >not the end user equipment this article talks about, but >rather operator systems (systems that could handle this and >scale for the increased traffic is not something many >operators have).

Overall, Passpoint can help decrease cellular traffic and redirect it over fixed lines via Wi-Fi. So IMHO it might be attractive to operators.

<comment><USER2> You are missing the point. The point is that there is a need for infrastructure on the operator side to handle the incoming requests from Passpoint. There are already other solutions that allow operators to do mobile offloading over wifi over regular wifi access points.

</comment></comment></comment><comment><USER4> EAP-SIM is deployed on the Free network in France.

Pros: \- It bypasses your monthly fair-use quota \- Offers a higher bandwidth.

Cons: \- You need to leave your WiFi on, which drains battery. \- Support on Android is very poor.

</comment><comment><USER5> not a real expert on the situation with wifi, but isn't this what an ESS network is supposed to achieve with wifi?

<comment><USER3> Without going too deep into the technical details:

An ESS network is most often under a single organization (say, the IT department of a large Hotel). The Wi-Fi credential combination required by a user to roam across the different Access Points in the ESS is the same.

But what about when you leave hotel premises and go to the airport? Manual intervention is often required by you, especially if you are going to that airport for the first time and have not yet purchased a plan there. With Passpoint, the hotels in the city, the airport etc could all be participating in a common program. Sign up once, use anywhere. With passpoint software, your device has a _standardized_ way to avail of such facilities.

The ESS architecture does not handle such possibilities - it operates at a much lower level. Higher level handshaking is required to enable this, and in a standards defined manner so that it works everywhere.</comment></comment>