Gödel's Completeness Theorem - <AUTHOR> https://en.wikipedia.org/wiki/Gödel%27s_completeness_theorem <comment><USER2> This theorem seems to be like monads: Someone posts about it on the internet, someone doesn't understand and asks for help, someone comes along and writes a simple explanation that seems to make sense, then someone says that explanation is completely wrong (but here's this totally inscrutable "correct" one... which someone comes along and says is even worse.)

And everyone is left confused.

<comment><USER3> Just read this book, IMO [https://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/081...](https://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/0814758371)

It's only 160 pages and gives what seems to be a good explanation of the basics.

<comment><USER4> Currently reading Morris Kline's "Loss of certainty" - a beautiful very readable work that elucidates the relationship of Mathematics with concepts of 'truth' and 'reality' throughout mathematical history.

[https://www.amazon.com/dp/0195030850/ref=cm_sw_r_cp_api_i_aJ...](https://www.amazon.com/dp/0195030850/ref=cm_sw_r_cp_api_i_aJ.BDb2XFHVCA)

</comment></comment></comment><comment><USER5> This theorem actually changed my life. Once it clicked for me it shifted my understanding of reality significantly.

<comment><USER6> I've tried to make this click for me for a long time, to no avail. Do you have any tips?

<comment><USER7> Essentially, all logically valid formulae have proofs in first-order logics.

Remember, logically valid formulae means that if you enumerate all possible interpretations (boolean values for the variables), the formulae remains true.

So you could prove everything that ever exists by creating a set of all possible proofs using the given deduction rules.

<comment><USER8> This is 1st-order logic so it's a bit more complicated, though you're on the right track (what you stated is the completeness theorem for _propositional_ logic, not _first-order_ logic).

Rather than boolean values for the variables, you need to enumerate all possible...

* Ambient universes where the language is interpreted

* Values (taken from the ambient universe) for the constant symbols

* Sets-of-tuples-of-values (from the ambient universe) for the predicate symbols

* Functions-from-tuples-of-values-to-values (from the ambient universe) for the function symbols

<comment><USER7> Yup, my definition of interpretation was limited for pedagogical purposes, but I should have been clearer. The propositional logic version is much simpler to understand, but the implications of the theorem are much more interesting in first-order logic, so introducing all of this nomenclature may be too much for someone who isn't motivated yet.

</comment></comment></comment></comment></comment><comment><USER9> Godel's work has always been incomprehensible to me. no matter how I attempt to understand his theorems, I find them impenetrable. Apparently they are of great consequence, so I'm very interested, but to no avail.

<comment><USER10> I can relate. My understanding of it thus far leads me to think I can summarize it fairly well though, and I would welcome other people's input or critique on this.

It seems like it's so consequential because he demonstrated that no matter what kind of mathematical system you're using -- and no matter how much mathematics generally speaking develops -- there will be objectively true mathematical statements within that system that can't be proven.

If that part of my understanding is correct, the part that's really interesting to me is whether we can know these true statements to be true, despite them not having proofs. This is where I could be misunderstanding things I suppose, but it suggests there's a disconnect between what's knowable and what's provable, and furthermore, that we can know more than we can prove.

To actual seasoned mathematicians: is this a really naive interpretation of what I've read, or not?

<comment><USER8> You need to be a bit more specific: no matter what kind of _true, computable_ axiom-set you're using (this has nothing to do with 'how much mathematics generally speaking develops'), there will be objectively true mathematical statements that can't be proven _by that axiom-set_.

>a disconnect between what's knowable and what's provable

"what's provable [from a given axiom-set]" is a concrete, technical, unambiguously defined set of things. "what's knowable" is a vague philosophical set of things. Goedel's Incompleteness Theorem is a technical result about the former, and it's a common mistake to assume it says anything about the latter, except very tangentially.

For those who are interested in the misty area where the two things do overlap, I will shamelessly plug this 2-page paper of mine, "Mathematical shortcomings in a simulated universe": [https://philpapers.org/archive/ALEMSI.pdf](https://philpapers.org/archive/ALEMSI.pdf)

<comment><USER11> I think they meant what is true, which is also concrete, technical and unambiguously defined in this setting. But you are very correct to make the distinction between truth and knowledge. Pointing out that many philosophers have believed that knowledge is justified true belief might elucidate the relationship a bit.

</comment></comment></comment></comment><comment><AUTHOR> The theorem reminds me of William Lawvere's "Adjointness in foundations". Formulas/programs are in an adjoint relationship with their executions. The fact that they are adjoints is a big deal.

<comment><USER5> Is that related to the Curry-Howard isomorphism?

</comment></comment><comment><USER12> Godel's theorems are a popular subject among technophiles, but the popular conception of their implications is seriously off base. Torkel Franzen's book[1] is a quick read and will guide you away from the most common errors.

[1] [https://www.amazon.com/G%C3%B6dels-Theorem-Torkel- Franz%C3%A...](https://www.amazon.com/G%C3%B6dels-Theorem-Torkel- Franz%C3%A9n/dp/1568812388/)

<comment><AUTHOR> Most people talk about incompleteness theorem, not completeness. The book does briefly mention completeness theorem.

</comment></comment><comment><USER13> Anyone interested in this topic should be sure to follow the various links on the page. One of my personal favorites is the Compactness Theorem: [https://en.wikipedia.org/wiki/Compactness_theorem](https://en.wikipedia.org/wiki/Compactness_theorem) .

</comment><comment><USER14> Oh my! this reminds me of a class I took in my masters. Had to learn "Halting Problem". Godel's work in just astonishing and way beyond my caliber. I managed to pass the class but memories are still with me.

<comment><USER15> I still think most CS courses teach the Halting Problem in just about the worst way possible.

They always give you that one highly contrived counterexample where you're feeding the algorithm with the output from itself which doesn't even begin to touch on what the Halting Problem actually is or why it is so important. And if the student asks "well, what if we redefine it so it only works on OTHER algorithms to avoid this one weird edge case" the answer is basically "that's not covered."

But really, the Halting Problem is asking the question if we can solve all of mathematics, and indeed all of philosophy with a fancy enough computer program. Can we build a machine God? And the standard textbook answer is roughly "If we built a machine God it could create a burrito so big that even it could not eat it, therefore machine God can not exist."

IMHO, it would make more sense to get students down the right path to ask them what the halting computer would do when fed a program that calculates all of the digits of Pi. Or one that halts when it computes the answer to life, the universe, and everything. The halting problem may have been mathematically disproven by finding one highly convoluted counter example, but it's more significant failing is that it is infinite and thus can not be implemented on a machine with finite limits.

<comment><USER8> >And if the student asks "well, what if we redefine it so it only works on OTHER algorithms to avoid this one weird edge case" the answer is basically "that's not covered."

Only if the teacher doesn't know what they're talking about. If they know what they're talking about, the answer is "Since every function can be implemented by infinitely many different algorithms, in order to blacklist our halting- solver from the list of things we can input into our halting-solver, we would need to blacklist ALL the algorithms that implement it, but in order to do that, we'd need an algorithm for determining whether or not a given algorithm is a halting-solver, and it can be shown that that itself is just as impossible as solving the halting problem."

>digits of Pi

You seem to be deeply mistakenly about something, but it's hard to point out exactly what you're mistaken about because all the terms are so poorly defined. If, for example, you meant, "What the halting computer would do when fed a program P that takes an input n and outputs the nth digit of Pi, if we asked whether or not P halts on a particular input n", then the answer would be "Yes". If you meant "What the halting computer would do when fed a program Q that takes no input and runs forever, listing all the digits of Pi, when asked whether or not Q halts on no input", then the answer would be "No". Either way, there's absolutely nothing deep or profound about the digits of Pi here.

>life, the universe, and everything

Please, don't make things even _more_ complicated for the poor students.

<comment><USER15> You only need to blacklist the possibility that the program under review has access to the output of the Halting Detection program for itself.

The Digits of Pi example is to illustrate that the Halting Program needs to understand the high level math necessary to prove that Pi is infinite. And then you lead them on to discovering that it needs to be able to solve every problem in mathematics, even ones that have not yet been discovered, and then you realize that it has to be omnipotent and infinite.

The purpose is to pull students away from the kind of empirical solutions that immediately pop into your head when presented with the halting problem. "Well, if we look at the loops and what the exit conditions are and start iterating over all possible inputs..." which is not at all what the Halting Problem is about, despite what it looks like on the surface.

<comment><USER8> Oh I see what you're getting at. I think what you're trying to get at is, "If you had a halting-solver, you could use that like an oracle to answer arbitrary mathematical questions." Unfortunately, this isn't true, you couldn't use it to answer _arbitrary_ mathematical questions, just certain questions.

For example, even if Pi happens to be rational, and the algorithm to list its digits eventually starts listing a periodic repetition (possibly the all-0 repetition even), that still doesn't mean it halts. So the halting-solver doesn't directly help you determine whether or not Pi is rational. You would instead need a "determine-if-given-function-eventually-has-periodic-output" solver, which is stronger than a halting solver.

I'm not sure if there are any really slam-dunk examples of what you seem to be looking for, that don't involve proofs in some guise or other. An example which does involve proofs might look like this: "Let x be a program which attempts, by brute force, to find a proof that P<>NP, and immediately halts when it finds such a proof, if ever. If you had a halting detector, you could plug x into it and based on its output, you would know whether or not there is a proof of P<>NP." [Which is subtly different than whether or not P<>NP is true. That would require something stronger than a halting solver to obtain.]

<comment><USER15> Wouldn't you simply define your sample program to halt upon discovering a periodic repetition in its output?

<comment><USER16> Finding any finite number of repeating digits does not prove that there's an infinite number to follow. You might find 1000 3s in a row, followed by not a 3.

<comment><USER15> If you know the entire state of your algorithm then it's possible to compare the state vs. it's state in a previous step to determine if you are in a repeating loop. If all of the parameters and internal are identical, then the algorithm can not produce a different result.

<comment><USER8> A machine can print the same thing over and over, and yet never repeat its own internal state. For example, "let x=0; while(true) { print("0"); x=x+1;}"

<comment><USER15> A halting problem solver would necessarily have to be smart enough to detect state that is relevant to the completion of the program vs. not. Plus, even in this case on a real world machine x can only store as much state at the underlying type. So if it's a 32 bit int then you can absolutely prove the algorithm does not halt after only 4 billion iterations, but even before that you can simply note the lack of exit conditions from the loop to show that it never terminates.

However clever you are, the halting problem program has to be even more clever by definition. But we don't have an upper bound on cleverness, so the halting problem program has to be infinitely clever, hence my previous point about it being able to solve all of mathematics.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Douglas Hofstadter's book, "Gödel, Escher, Bach" is very highly recommended reading for anyone who finds this (and the theory of computability more generally) interesting.

I've lost entire days of my life to that book!

[https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach](https://en.wikipedia.org/wiki/G%C3%B6del,_Escher,_Bach)

<comment><USER18> Here's a good adjacent read that I thought was a much clearer and relatively accessible tour through the Proof - [https://www.amazon.com/G%C3%B6dels-Proof- Ernest-Nagel/dp/081...](https://www.amazon.com/G%C3%B6dels-Proof-Ernest- Nagel/dp/0814758371) \- it's more of a pamphlet than a book, really.

<comment><USER19> GEB is _fun_ , but it's definitely a bad introduction to the idea itself. It's a lot more fun if you already understand the subject matter and can enjoy the tone of the book.

</comment></comment></comment><comment><USER20> This is _not_ Godel's _in_ completeness theorem(s). This deals with a completely different notion of completeness.

Godel's completeness theorem is the theoretical justification for why first- order logic occupies such an important position in mathematical logic. It basically establishes that two different methods of proving a logical statement happen to coincide for first-order logic.

Let's say that I come up with a long list of axioms that define what it means for an object to be a "cow" and what it means to have a "spot." Then I state "all cows have spots."

There are two ways of proving this. One way, the "semantic" way, is to take every example of cow and prove that it has a spot. This is hard; I not only have to examine every cow that exists, I have to examine every possible imaginary entity that satisfies the definition of "cow" and prove that it has a spot.

The second way, the "syntactic" way, is to play the string manipulation game that people often associate with the notion of a "logical proof." I start out with the axioms of a "cow," and I'm given some rules for how I can manipulate these axioms. Example of this include the string "A and B" allows me to immediately substitute "A" instead. Given "A implies C" I can substitute all instances of "A" with "C" and so on and so forth. Hopefully I can work out a series of string manipulation steps that eventually end with the statement "All cows have spots."

It is not obvious that these two methods should coincide in what they are able to prove. The rule set that I get to manipulate my strings by could be a really wacky set of rules. Maybe it says something like if you see "A implies B," you get to substitute any arbitrary string "C." It's also not apparent how you might choose to interpret the axioms that define a "cow." One of the axioms might say "a cow has four legs" and you might say, in my world, I've decided the string "four" corresponds to the natural number 5, and I'm going to look at all entities with 5 legs.

Godel's completeness theorem states that for first-order logic these two proof techniques coincide: every statement you can prove or disprove the first way can also be proved or disproved the second way. More specifically, if you stipulate that rules of string manipulation are exactly the rules of deduction in first-order logic, and that you interpret your axioms when constructing semantic entities according to the standard semantics of first-order logic (e.g. you don't get to arbitrarily stipulate that the string "and" actually means logical disjunction, i.e. or, in your world), then any property that is true of every entity you can conjure up that satisfies your axioms has a "string manipulation" proof that proves that property. Conversely, every statement you can prove with your string manipulation game also holds true of every entity you can conjure up that satisfies your axioms (this isn't strictly speaking part of the completeness theorem, but is also true and usually stated hand-in-hand with it).

</comment><comment><USER21> What are _practical_ consequences and examples of such in typical debates about politics, programming paradigms, etc?

<comment><USER22> One practical consequence is that the halting problem is undecidable, so if your boss asks you to build a program to check if another program will ever do X, you can tell them "hey that's an impossible task!"

<comment><USER23> In practical matters, this is not quite true. If you ask 'will this program launch a toaster to orbit mars', you can usually answer that question with high confidence.

The halting problem describes the situations where you can't decide one way or another, but it does not say you can't decide anything. This is a very important distinction.

We write code to analyze other code all the type. It's a core part of developer tools. If it was impossible, life would really suck.

</comment></comment></comment><comment><USER22> IMHO if you understand the history it makes sense why the theorem is both important and confusing.

In 1921, Hilbert had this idea, that mathematicians could create an algorithm that would automatically prove every true statement and disprove every false statement. Wouldn't that be neat? It's important that this idea _predates_ computers. When Hilbert was thinking about an algorithm, it wasn't an algorithm as we would think about it in computer science today, because the modern idea of a computer hadn't been formalized.

In 1931, Godel proved that it was impossible for an algorithm to automatically prove or disprove true mathematical statements. Take that, Hilbert. The modern idea of a computer _still_ hadn't been formalized. So a lot of stuff that nowadays we think of as simple, Godel did in a really weird and confusing way.

For example, as part of his proof Godel needed a way to algorithmically encode a bunch of numbers into a single number. Nowadays, that's pretty intuitive - any software program can be saved into a file, any file can be interpreted as a sequence of binary bits, which can be interpreted as a number. Back then, Godel used a really crazy encoding - encoding (a, b, c, d, ...) as 2^a * 3^b * 5^c etc.

So if you go back and try to understand Godel's proof, it is really just needlessly complicated. I loved the book Godel, Escher, Bach when I first read it, but once I understood the mathematics more deeply I started thinking that it really wasn't the best approach to actually understand the mathematics.

In 1936, Turing defined a Turing machine and also proved that the halting problem was undecidable. This is an equivalent statement to Godel's incompleteness theorem, and the proof is about 100 times more intuitive, _especially_ for modern computer programmers who tend understand computers and computer programs pretty well, far better than they understand prime factorization.

So, personally I think if you are learning this stuff, you are better off starting by learning about the halting problem. Sometimes the historical sequence of discovery isn't the best way to learn math, just like we don't learn about the Greek method of exhaustion before we learn modern methods of calculus.

<comment><USER24> You are talking about his _Incompleteness_ theorem. This article is about a different theorem, with a different definition of "completeness".

<comment><USER22> Whoops. I thought about deleting the comment but hey maybe someone will find it useful.

<comment><USER25> I did! Thank you!</comment></comment></comment></comment>


There's no excuse for 20-minute showers in 2020 - <AUTHOR> https://www.insidehook.com/article/home-design/how-to-take-shorter-showers-environment <comment><USER2> I used to love 20-minutes showers. But back then I lived in a cold climate and the 20 minutes was pure blissful procrastination before the shock of cold air on a warm wet body.

Since I moved to the tropics, it's been 2-3 minutes showers with a pleasant cooling effect when I step out.

</comment><comment><USER3> Don't be silly. I've got a showerhead with a shutoff valve. I turn it on to rinse, turn it off to soap up and scrub.

Yes, we live in a drought-prone area. But I've also realized that trying to soap and scrub yourself while the water is running is self-defeating. You can't work up a decent lather when the suds keep rinsing away.

If you like the "spa effect" of constantly running hot water just for the comfort or the sensual thrill, that's your thing. But if your main goal is to get thoroughly clean, you can do it comfortably with a lot less water.

</comment><comment><USER4> Ah, a shower head advertisement guised as an article pushing a guilt agenda based on an appeal to the environment. Lest we forget it's a shower head advertisement.</comment>


More emerges on Microsoft's dance with newspapers - <AUTHOR> http://eu.techcrunch.com/2009/11/26/more-emerges-on-microsofts-dance-with-newspapers/ <comment><USER2> _In other words, you'd start to see ads with "You'll only find The Wall Street Journal on Bing.com"_

If I know I want the WSJ, why wouldn't I go directly there? Does anyone think "I want to know what the WSJ says about X" then goes to do a news search and, not finding any WSJ links then thinks "Well, I guess the WSJ didn't have anything to say about X". No, they go to the WSJ directly to find out what the WSJ says. I bet it's more likely that wanting to know what someone specific says isn't often a use case of searching for news.

That being said, I do use Google to find Wikipedia articles just because Google's search is so much stronger than Wikipedia's at honing in on the entry I want.

Sure, while people do use searching to find websites, people actually need to use a browser that defaults to bing or have changed their default search engine to bing, or need to change their habits to use bing to do search. Is Microsoft's browser monopoly still strong enough to allow them to influence the default search engine use?

One way this could play out is that, if people use "news search" to see what _anyone_ has said, rather than what a specific source says, then the fraction of sources that are listed only with bing (or not with google) are not going to be part of the discussion.

</comment><comment><USER3> In the end it is about content. I prefer Hulu now to Youtube, because Hulu has better content. If MS can successfully convince enough publications to allow them to exclusively offer their content for search, then that will take a bite out of Google.

The question is, how much will it cost? The formula is pretty easy. MS will have to pay the publishers more than they are making in ad revenue from the visitors Google sends them. As a publisher, wouldn't you prefer to have $100 from microsoft to delist from google if you only get $50 from google referals?

</comment><comment><USER4> I've been making a joke to my friends recently, ever since this news broke.

        Let's see if we can get all of the rats onto the Titanic before it leaves the shore.

At least the newspaper industry is taking a slightly different route than the music industry did... this will be much more interesting to watch.</comment>


I have an app idea - <AUTHOR> http://shiftyemails.tumblr.com/post/26402272128/i-have-an-app-idea <comment><USER2> Sorry Shifty, but this is the nature of business. All business, not just app development. It's why sales people exist. Customers often need to be educated. You had no idea how much a plane ticket cost until you took a flight. You had no idea how much a Truffle cost until you were educated on it's use and went out looking for it.

You've added nothing to the discussion here, rather than try to make those who may be your future customers feel stupid.</comment>


Tim Berners-Lee scolds 'hypocritical' West over spying - <AUTHOR> http://www.nbcnews.com/technology/father-web-scolds-hypocritical-west-over-spying-6C10459397

<comment><USER2> Secret courts, secret judges, secret police, secret torture, secret wars...

These acts are not what one would expect of a nation which was once the bastion of freedom for all the world, and I agree that the US & UK have been acting hypocritical for far too long now.

Can the "American Dream" survive the current state of affairs?

<comment><USER3> The nation that:

* inflicted syphilis on unsuspecting black people,

* tapped MLK Jr.'s phone calls while conducting continuous surveillance on him,

* imprisoned thousands of Japanese and Japanese-Americans for the crime of being on the West Coast at the wrong time,

* forced the Chinese and Irish to work under horrific conditions building the nation's railways,

* evicted the Native Americans from their native lands, which they had inhabited for thousands of years,

* disobeyed a _direct ruling from the Supreme Court_ in order to do this,

* brutally ( _brutally!_ ) put down a rebellion in the Philippines after "liberating" the archipelago from the Spanish,

* oh, and held millions of black people in abject slavery, and later poverty and the constant fear of _death_ ,

does not warrant your label of being _more_ "the bastion of freedom for all the world" compared to even our modern state.

I get it, you're mad, but if you're going to talk about American history could you at least know a little about American history?

FISC (and its judges) have been around since 1978. I don't even know what "secret police" you're talking about. Torture is always wrong, but America has been there before (e.g. aforementioned brutal Philippine wars). Somehow the "American Dream" survived that.

So what's your goal? To give up? Just to say that America sucks (if so, you'll need to take a number, there's about 200 million Americans ahead of you in that particular line :P)? Or do you want to make it better?

Because making it better requires meaningful political advocacy, of the kind that helped make parts of DOMA unconstitutional today, and not simply whining.

<comment><USER4> True, we learned from these mistakes.

Slavery is an unforgivable stain on our souls, something we'll have to live with for eternity. The same goes to the relocation and genocide campaigns against Native Americans. We've never allowed ourselves forgiveness for those sins and we never should.

The brutality in the Philippines sickened Americans to that point that the old colonialism had be traded in for quiet skullduggery. We also learned from the internment camps. When cries came out to round up everyone of middle eastern descent after 9/11 we ignored them and made new mistakes.

Deep down we Americans know that if there is a Hell we probably deserve to go to it, but that doesn't stop us from trying to learn from our mistakes. We are fatally flawed, not essentially evil.

That is the real battle over all of this. It isn't state secrets, but a generational shift. The young live with the cynicism and pain of past mistakes and can't figure out why the old continue down broken paths. Unfortunately, today's young will have to let the generations that follow walk with the knowledge of our mistakes. And what doozies we've handed them: Eternal War, torture and deep resentments and distrust between state & citizen and citizen & state. I wish them luck.

<comment><USER3> > We are fatally flawed, not essentially evil.

That's my point. And I wouldn't even claim that we deserve to go to hell or that we are fatally flawed.

We are in the spotlight in the world and I swear I wish people would remember that when they evaluate the USA vis à vis other nations.

We should set the highest of standards for ourselves. And like any good 'American exceptionalist' we should _achieve_ those high standards we set for ourselves.

But when we fail to achieve that standard we need to remember to evaluate ourselves in the context of the world at large, and in our own nation's history.

If the _worst thing_ that our government did to us today was to `tee` our Reddit memes to /dev/utah and then not look at them then _maybe, just maybe_ we're not as screwed as HN thinks we are. Even my own grandma knows that the Internet Never Forgets.

As I've said before, we may look at these programs and decide to switch up the controls, gut them all, or something in between. But this place can be such an echo chamber sometimes... and the cynicism is absolutely toxic, especially as it mixes and interferes with the very-necessary skepticism that should be often employed.

</comment></comment></comment></comment><comment><USER5> Tim Berners-Lee's opinion on this matter is as valuable as yours or mine, that is to say indeed valuable, but not to be made the subject of a news report.

<comment><USER6> The more people standing up to call bullshit on the NSA, the better.

I'd like to live in a world where ideas are discussed on their merits and not based on the people proposing them, but we don't live in that world. When the "creator of the web" says something, it makes news in a way that it does not when you or I say something.

<comment><USER5> This may well be true, but it's hard to reconcile with Hacker News's latest meme of "It shouldn't be about personalities, it should be about facts".

</comment></comment></comment><comment><USER7> Consider the use of the word "scolds" instead of "blasts", "criticizes", etc.

</comment><comment><USER8> TBL himself is also hypocritical: British people read other people's mail at CERN without their (even posterior) knowledge. I would be surprised indeed, if he wouldn't know a thing about it -- yet he kept shut about it too.

<comment><USER9> He implicated "The West" which very much includes the United Kingdom. He is a citizen, like you, who is just now seeing proof of what one of these governments has been up to. He knows that the UK is doing it as well.</comment></comment>


Print this file, your printer will jam - <AUTHOR> http://nedbatchelder.com/blog/200811/print_this_file_your_printer_will_jam.html <comment><USER2> This reminds me of the legend (even featured on car talk) where a guy's car will not start when he buys vanilla ice cream...

<http://www.snopes.com/autos/techno/icecream.asp>

<comment><USER3> Nice link. One of the comments also points to the "Case of the 500 mile email"

<http://www.ibiblio.org/harris/500milemail.html>

</comment></comment><comment><USER4> The file to print is nothing more than a music score the printer has to follow.

I'm wondering if there is a file that makes a specific printer play music, just like a virtual instrument following midi instructions... Oh, it's the Internet, there IS such a score.

<comment><USER5> There's a record called "Symphony For Dot-Matrix Printers" which consists entirely of music made from printing special patterns to a load of dot-matrix printers. I heard it in a record shop once and it sounded pretty cool but not having the equipment to play vinyl I didn't actually buy it. Wish I had now, if anyone knows where to get it on CD then let me know...

Also, this article reminds me of the Tortoise's "I can not be played on record player X" record from Godel, Escher, Bach :)

<comment><USER6> Not a CD, but:

[http://www.theuser.org/dotmatrix/downloads/en/frame_index.ht...](http://www.theuser.org/dotmatrix/downloads/en/frame_index.html)

Hard to imagine those collections of sounds just being made from those objects.

<comment><USER5> Thanks</comment></comment></comment></comment>


Women on the pill don't 'need' to have simulated periods? (2017) - <AUTHOR> https://broadly.vice.com/en_us/article/yw3p4g/why-you-have-your-period-on-birth-control-withdrawal-bleeding <comment><USER2> While John Rock was involved in the development of the pill, calling him "the man behind the pill" is a bit disingenuous. Gregory Goodwin Pincus and Min Chueh Chang are the two that probably closer to that description.

It should also be noted that John Rock was a vocal proponent of birth control long before the pill. In 1931, he was the only Catholic physician to sign a petition asking Massachusetts to end its ban on birth control (including teaching about it).

However, it was in fact Pincus that suggested a 20-day regimen to Rock in their first collaborative study, specifically because withdrawal bleeding would reassure the women that they weren't pregnant.

When the pill was new, pregnancy tests weren't easily available at drug stores for cheap. The pill was approved as birth control in 1960 and it wasn't 1977 that at-home pregnancy tests were available in the United States. Having a period was an assurance that the pill was working.

Rock did a lot for the pill and was a huge force behind it. He did want the Catholic Church to see it as a variant of the rhythm method. However, the reason behind the withdrawal bleeding is more likely to be about the reassurance that one isn't pregnant. Given the lack of at-home pregnancy tests for the first 17 years of the pill's existence, withdrawal bleeding meant that you weren't pregnant.

Event today, many people think skipping periods is weird or unnatural without any religious overtone to it.

<comment><USER3> >specifically because withdrawal bleeding would reassure the women that they weren't pregnant.

It would also be an additional thing you'd have to prove was safe and effective. Menstruation is a natural process and it would have been reasonable to assume that it was necessary for long term reproductive health. Turns out that's not the case, but we only know that because of additional studies.

</comment></comment><comment><USER4> >From this point on, the specter of women's "forgetfulness" stubbornly attached itself to the discourse around birth control. A slew of ads targeted at physicians encouraged a paternalistic approach, depicting women as "scatter-brained, incompetent, and in need of guidance," Gossel writes.

I'm aware that the times were unjust to women but whenever you're marketing a product at a massive scale, like 51% of the population, you should be as simplistic and as helping as possible. Simply because you're dealing with all kinds of people, not just the smart ones.

So I just don't see the reason to paint a picture of a paternalistic conspiracy against women here. It's rather sensible marketing to a massive audience.

How come we've gone 60 years with these pills? There are women who have entire careers behind them in biology and medical science and we're still using these pills.

I remember in the early 2000's meeting some women who were using a staff instead. But at least one stopped because she felt she became too hormonal with the staff under her skin.

<comment><USER5> > So I just don't see the reason to paint a picture of a paternalistic > conspiracy against women here. It's rather sensible marketing to a massive > audience.

Yeah, but try turning it around.

"Easy. For you to explain… for him to use."

I doubt they would have used this language for a male product. Either way, it sounds terribly patronizing.

<comment><USER6> There's an ad on British TV at the moment showing a woman saying to a man that she got him a gym membership and patting him on the belly as she says so. It's incredibly patronising and I can't ever imagine the same ad with gender roles reversed being allowed on TV.

<comment><USER7> How is that argument against what he said? He is talking about back then and you are talking about now.

But when we switched to speaking about contemporary ads, Uber has one where woman wonders "how come he is always on time and able to find any place in city"? So women are still in ads in position of stupid people.

<comment><USER6> >>How is that argument against what he said?

Because he said he doubts someone would make an ad where someone talks down to a man. So I gave an example of exactly this happening right now on British TV. This is not me saying that portraying women as stupid is ok - far from it. Just that there are ads which are equally patronizing towards men too.

<comment><USER5> > Because he said he doubts someone would make an ad where someone talks down > to a man.

Well actually I didn't say that and I didn't know that all replies on HN were required to be arguments against but it does make sense now that I think about it.

</comment></comment></comment></comment></comment></comment><comment><USER8> Huh interesting I thought the reason was more precautionary principle like they thought that disrupting the cycle entirely would cause other problems. That or being left in as a general health indicator given that disruption is itself occasionally a hint that something is wrong.

I have no personal experience in that department to know how tolerable that would be for a generally fringe 'benefit'.

</comment><comment><USER9> Something else not mentioned is that the pill gives you regular periods. Polycystic ovaries can cause erratic periods, so some women might like it because it gives them a period regularly.

<comment><USER10> Less "some women might like it" and more it's often explicitly prescribed to help women with irregular cycles.

<comment><USER7> Regular period is more likable then irregular one. As in, if pill turns irregular to regular, women will like it.

</comment></comment></comment><comment><USER11> I know a few women who take the pill non-stop because they don't want to have their period ever again.

</comment><comment><USER12> I thought this was know for quite some time? I remember women taking about skipping the placebos back in the 2000s, and there were even adverts for FDA approved pills that limited the placebos to only four times a year.

</comment><comment><USER13> > The invention of the pill was one of the most significant advancements in > the fight for reproductive agency; it allowed us, as a society, to > dramatically reconceptualize sexuality and gender relations.

Taken a step further the invention of the in vitro breeding chamber finally frees the genders from each other. Now men or women can decide when they want a child and on what terms. The course that society is headed on these days is in essence to destroy the concept of gender... and it is so far succeeding on this mission.

<comment><USER14> > Now men or women can decide when they want a child and on what terms

Women currently have much more choice which gives them an unfair advantage. If a woman becomes pregnant by accident then she can abort or not abort without the man having any say in it. So if you make the argument that it's her body and the man shouldn't have a say (which is fine, I agree), then at the very least the man should have the equal option of "financial abortion" so that he has the same after-the-fact choice to not have a child that he didn't plan on having. It is best for society when children grow up with parents who both wanted them.

<comment><USER15> > Women currently have much more choice which gives them an unfair advantage.

Men are free to choose to abstain from PIV intercourse, get vasectomies, or wear condoms, depending on their level of risk acceptance. They can also choose to have sex only when they are on the same page as their partner about what to do in the case of unplanned pregnancy. This requires a pre-coital conversation, and the acceptance that one party may change their mind.

> at the very least the man should have the equal option of "financial > abortion"

No. Child support or co-parenting is not a punishment for the father, it is support for a child that exists. Also, men do not have to carry a pregnancy and go through childbirth and any resulting complications, and breastfeeding (if chosen). Let's accept that biology makes this situation unequal and not try to equalize it.

> It is best for society when children grow up with parents who both wanted > them.

Possibly/probably. But growing up with two parents who both wanted a child is not the case for many existing people. Let's focus on managing the reality and making sure children grow up with the support of both parents when possible, and not focus on trying to do mental gymnastics to force the idea that any potential consequences of sex should not fall on men.

<comment><USER16> Support to a child does not go away just because a child has one parent or no parents. Demanding that the payment be done by an unwilling parent rather than society has everything to do with our cultural views. If we truly saw this as the child rights to get support then it should not matter who is paying the bill. The mother, the father, or the government.

Parenthood should be built on consent by both the mother and the father. Biology dictate that women should have the finally decision if she wants to have an abortion, but there is nothing biological to the fact that women have the exclusive right to declare in legal document who will fathering the child. That is just law, which can be changed and rewritten in any form depending on cultural values.

</comment></comment></comment></comment><comment><USER17> The pill causes a lot of problems later in life; something only discovered recently, since it is a relatively new creation.

It also changes mate preferences, and what that means for the future is unknown.

<comment><USER18> > The pill causes a lot of problems later in life; something only discovered > recently, since it is a relatively new creation.

Could you be specific here (ideally with links)?

<comment><USER19> Here you go:

 _Does the contraceptive pill alter mate choice in humans?_ [https://www.ncbi.nlm.nih.gov/pubmed/19818527](https://www.ncbi.nlm.nih.gov/pubmed/19818527)

 _Oral contraceptive use in women changes preferences for male facial masculinity and is associated with partner facial masculinity_ [https://www.ncbi.nlm.nih.gov/pubmed/23528282](https://www.ncbi.nlm.nih.gov/pubmed/23528282)

Edit: Oops, I posted studies linked to mate choice and not issues later in life as you requested. Arguably, choosing the wrong mate could be considered an issue in the long term, but I assume you referred specifically to medical ones.

<comment><USER20> The evolutionary selection aspect is curious. Is "natural" always "better"? Facial masculinity is correlated with higher testosterone production in response to competition [1]. Higher testosterone levels are also correlated with aggression and violence [2]. Could birth control steer evolution towards a less aggressive, less violent society? Is that a bad thing? You argue that choosing the "wrong" mate could be an issue -- is a less-violent partner the "wrong" choice?

[1] [https://royalsocietypublishing.org/doi/abs/10.1098/rspb.2008...](https://royalsocietypublishing.org/doi/abs/10.1098/rspb.2008.0990)

[2] [https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3693622/](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC3693622/)

<comment><USER17> When does nature ever give us anything for free?

</comment></comment></comment></comment></comment><comment><USER21> They give another reason that seems reasonable because the religious acceptance hope, that it would freak people out to stop having periods. That seems like a reasonable thing too. I know no one wants to have a period, but keeping close to natural behavior could make people accept it more easily.

<comment><USER22> Clearly, that didn't work, so it's not very reasonable.

</comment></comment><comment><USER23> Two women I know suffer from Uterine Fibroids [1] and their doctors both have said in so many words "the uterus is good for two things, growing babies and growing tumors".

Both of these women took hormonal birth controls for most of their lives, and learned only after being diagnosed with fibroids that hormonal birth control promotes the growth of fibroids (and cancer).

They're both pissed, and have both been advised to have hysterectomies.

Through this lens, I get the impression that giving the uterus a break and letting things shed regularly is probably not a bad idea.

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

<comment><USER24> The article you link to literally says the cause is not known and does not mention any links to birth control...

> The exact cause of uterine fibroids is unclear. However, fibroids run in > families and appear to be partly determined by hormone levels. Risk factors > include obesity and eating red meat.

<comment><USER25> Hormone levels are impacted by birth control, maybe that's the mechanism.</comment></comment></comment>


Bash to ShellJS Transpiler - <AUTHOR> https://nfischer.github.io/shelljs-transpiler/ <comment><USER2> Interesting effort, but my script with line continuation didn't seem to translate correctly... there's a few other things that didn't seem to go right either. I tend to reach for node scripts more often then almost anything if I need something that runs in windows and linux.

I like node, it's got a pretty small initial footprint for install, though cross platform binary modules will be an issue for some time to come.

<comment><AUTHOR> Well, it works most of the time. For example:

        local param_a="$1"

works, but:

        local -r param_a="$1"

doesn't.

If more people find it interesting and contribute to it, it will get better!

</comment></comment><comment><AUTHOR> Source code: [https://github.com/nfischer/shelljs- transpiler](https://github.com/nfischer/shelljs-transpiler)

</comment><comment><USER3> Couldn't get the demo to translate when I added more lines of Bash to the input.</comment>


Ask HN: What technologies should I use if I am building a blogging platform? - <AUTHOR>

Hi HNers,
 I am working on building a blogging platform. This is my first attempt at building a CMS but I wish to build something similar to medium/tumblr.
 Do you guys have any helpful resources/ suggestions? Thanks ! <comment><USER2> As someone who recently re-built his own blog/site, I can offer you some of the insights I went through. May not be applicable for every use case, keep that in mind.

1) Input formats:

Markdown is the default for many blogging. It is limited, and if you want a bit more than a bold text, it will get into your way. As most products support markdown, if you settle with this, you'll be just on of the many (but it is a low-risk choice).

WYSIWYG editors are mediocre at best, but may work for blogging UI. The benefit of using these is that you are not really limited and can use any HTML feature. If there is an advance in the editor, the app gets it without much effort. The downside is that it will be HTML only, not much support for pdf or similar output formats, but most bloggers won't really care.

Asciidoc: This is my choice, because it is easy to version control, and use for various purpose. Generating docbook then HTML is very easy, complex UI structures too.

2) Static vs dynamic site:

Most blog content is static, yet no blogging platform offers good editor workflow and good static export at the same time. Static content is also faster and cheaper to host, so this is a thing that you can optimize for.

If you are planning a hosted service, one idea is to provide the editor workflow as the service, and publish the articles to S3 or similar platforms for hosting.

3) Social, comments:

For some, social integration and comment system is important. I don't mind having a blog without any of these, so it may work. Disqus, livefyre and other javascript-based comment systems are easy to integrate anyway, so if you need these, there are some tools to start with.

Sharing button is two-fold. Having an explicit policy that you won't help to track your readers through these button could make you apart from the competition, but of course it will provide less "engagement".

4) Tech stack:

Almost anything will do. CMS, blogs, websites can be parallelized by design, and even if you start with something monolithic, and got some traffic, it will be easy to scale it later on.

</comment><comment><USER3> If you don't mind the "i want some text rendered by the server!!11" crowd, go with [https://www.meteor.com/](https://www.meteor.com/) . From account management to data persistence, it should get you started in a few hours until the core functionality is done with Meteor, with modern stuff like soft- realtime-updates and collaborative features included out of the box.

The UI and UX parts will require substantial more amount of time, but stuff like the medium WYSIWYG editor is already avaliable for you: [https://github.com/donflopez/meteor-medium- editor](https://github.com/donflopez/meteor-medium-editor) if you like it.

With seamless includes of additional packages your and your client's sites will be crawlable, too. You may read [http://blog.plague-dev.de/posts/meteor- isomorphic-fullstack-...](http://blog.plague-dev.de/posts/meteor-isomorphic- fullstack-development) for more intersting bits about meteor's capabilities.

</comment><comment><USER4> Hi! I was planning to create one Blogging Platform using AngularJS and Firebase as backed. Then I was thinking that using Angular $resource, maybe we can isolate the backend and create a Blogging Platform entire based on frontend (AngularJS). And let the community create adapters for backend. For example, we even can use Trello as backend using Trello API.</comment>


Tweet from your favourite messenger with TweetSwitch - <AUTHOR> http://tweetswitch.com A new Comufy powered service called TweetSwitch allows you to receive your tweets via any messenger. The service is still in Alpha version, but 30 new accounts have just been made available for those who wish to try it out.
The service currently supports email, MSN and gTalk but the coming days will bring AIM, Yahoo!, and ICQ support, as well as Skype.
Feedback welcome. <comment><USER2> you want me to give you my twitter login plus do it on an insecure page?

<comment><AUTHOR> It's going over SSL (JSONP). Nothing insecure. And you password is encrypted in our DB.</comment></comment>


Who killed the economy? - <AUTHOR> http://www.portfolio.com/interactive-features/2008/06/Who-Killed-The-Economy <comment><AUTHOR> [http://finance.yahoo.com/tech-ticker/article/60751/Who- Kille...](http://finance.yahoo.com/tech-ticker/article/60751/Who-Killed-the- Economy-So-Far-Greenspan%27s-the-Popular- Choice?tickers=leh,fnm,fre,xlf,gs,ms,bac)

</comment><comment><USER2> Surprised that Bush was #2 to be honest.

Aside from economic policy, there were other major factors (the cost of the Iraq war for one).

<comment><USER3> Yeah, but not invading Iraq would have only delayed the inevitable.

</comment></comment><comment><USER4> Hype, Greed, and Lies killed the economy.

</comment><comment><USER5> We did.</comment>


Show HN: I just released a simple Ruby gem for searching Amazon - <AUTHOR> https://github.com/mhuggins/a2z <comment><AUTHOR> After searching for an easy to use gem for searching / looking up products on Amazon, the best solutions I found were Peddler [1] and Vacuum [2]. After looking into these gems, I found that both a) lacked documentation, and b) were not simple to use. In fact, they both seemed more like a starting point for simply making raw requests and retrieving raw responses.

Searching further, I was not able to uncover anything else even remotely usable for searching Amazon. This prompted me to start building my own solution.

I think my gem offers a much cleaner implementation, a friendly DSL, and although I have some work ahead of me to clean it up, is generally easier for the end user to search and look up products on Amazon.

I'd love feedback, and I'm definitely open to contributions from others. Thanks for looking!

[1] <https://github.com/papercavalier/peddler> [2] <https://github.com/hakanensari/vacuum/></comment>


SaaS Subscription Billing, or How to avoid getting your n*ts in a vice - <AUTHOR> http://peachshake.com/2010/06/15/saas-subscription-billing-or-how-to-avoid-getting-your-nts-in-a-vice/ <comment><USER2> From Braintree's site:

 _To try and help address this problem, we created a Credit Card Data Portability initiative (press release). It's an opt-in community of payment providers that agree to allow a merchant to port credit card and other associated information if the merchant ever decides to move to another provider._

[http://www.braintreepaymentsolutions.com/blog/data- portabili...](http://www.braintreepaymentsolutions.com/blog/data-portability)

<comment><USER3> I'm a huge fan of Chargify after talking to them a little, and they weren't taking any new Braintree customers. It had to do with Braintree API versions (v1 vs v2). I didn't want to wait, so I went with Authorize.net

Maybe Authorize over Braintree was a mistake, but switching to a different CC processor than Amazon was definitely the right move.

</comment></comment><comment><USER4> It's interesting that the author didn't mention a third option– you can build your own subscription management and dunning code, and then foist the high- risk credit card related stuff onto a third party. I'm not sure I'd necessarily suggest doing this over going with a provider like Chargify or Spreedly (both look like cool services), but that's what we've done at Onehub, and while it was painful, it's worked extremely well. We just store tokens and let our payment gateway, Braintree, deal with the actual card data and charging.

Additionally, if you _are_ going to write any of your own billing code, I sure hope it's not buggy and poorly tested. If it is, you should probably test and debug it before unleashing it to your customers :)

<comment><USER3> I did mention that option, and basically said it was a bad idea. I think that most SaaS apps are better served by offloading as much as possible onto third parties. Just like I wouldn't encourage someone to write their own web server, I wouldn't encourage them to write a subscription billing service. It's a pain. Pay someone else to handle that and focus on your core competency, whatever that is.

<comment><USER4> Right, having written a billing system, I'd agree with you wholeheartedly. I just got the impression that the article conflated rolling your own billing system with actual handing of the payments and credit card storage. Perhaps I was mistaken.

</comment></comment></comment><comment><USER5> I just finished building part of our billing system that signs up users for subscriptions. We're using metered billing and that part of our service doesn't report anything yet, but so far using chargify has been a great experience.

We don't need to hold CC stuff. We don't deal with dunning. We don't do anything except tell chargify how much our user has used and give them users credentials.

It seems to work very well.

</comment><comment><USER6> To me, the most important drawback is the inability to defer charging. It honestly _breaks my heart_ to want to tell someone "thank you for that, have a free month of service" and then to see that you can't do that because they already liked your service enough to support you.

I see a commenter mentioning PayPal reference transactions, I will give those a go and see if they are more flexible.

<comment><USER3> I agree, free subscription time is my favorite thing to give. I can sort of do it with Chargify. It basically works as a partial credit toward their next charge. It's not exactly the same as deferring a payment, but it pretty much works out the same.

<comment><USER6> Too bad I'm stuck with PayPal :/

</comment></comment></comment><comment><USER7> With Amazon's SimplePay subscriptions, you can offer a free trial or a promotional period at the start of the subscription contrary to the what the author of the post says.

[https://payments.amazon.com/sdui/sdui/business/asp/subscript...](https://payments.amazon.com/sdui/sdui/business/asp/subscriptions)

<comment><USER3> I'm speaking of deferring payments, not free-trial periods. The SimplePay free trials work fine. It's only after they convert to paying that things are fully locked in.

</comment></comment><comment><USER8> One thing I often see neglected from requirements is the need to generate invoices for every payment especially if you are selling to other businesses. They will need records for tax purposes particularly if your customers need to itemize sales tax.

PS I work at FreshBooks helping people use our API for billing

</comment><comment><USER9> If you're concerned about credit card portability (as this blog author is), your only real options are Braintree's vault or Recurly. Chargify still stores the CC at the gateway level, so you have gateway lockin, which is no different than the PayPal/Amazon case the author bemoans.

<comment><USER10> Authorize.net also has a vault product.

 _Chargify still stores the CC at the gateway level, so you have gateway lockin_

I don't understand this. Gateways that provide a vault for storing credit card information give you a way to get it out in order to process the transaction. So if you can get the information out, couldn't you just transition to a new gateway if necessary. Only sites like Paypal and Amazon really have lockin.

<comment><USER11> The way most vaulting services work is, you pass through credit card details, and they store in their vault. They then send you back a token to reference for future transactions. In most cases, you _won't_ have the ability to pull back the full vault entry (specifically the credit card number) from them. This is the lock in that's being referred to here. Most gateways who won't let you export the cc data yourselves, or to another provider will cite PCI compliance issues, but it's all smoke and mirrors. They just don't want you to leave.

And to be 100% clear, Chargify is not a gateway or anything like that, so they don't do any storage - they're a SaaS provider that has built their app to offer recurring billing on top of a bunch of other gateway's APIs.

<comment><USER3> Bingo.

We decided to go with Authorize.net, and I'm afraid we're locked in again. I willingly and knowingly put my nuts in the vice this time. I asked the sales rep about getting the CC info back, and she cited PCI compliance as their reason for not giving it up.

Still, I decided to go with the big dog, and my hope is that any services like Chargify that we decided to use will also work with Authorize.

</comment></comment></comment></comment><comment><USER12> You can do exactly what you need with paypals reference transactions.

Also if you use their NVP api, and web payments pro then the user does not need to leave your site and you can take c/c details on your site and pass directly to paypal.

i.e You don't need to store their CC details you only need the reference transaction ID and you can re bill any amount you want.

You also don't have to worry about PCI compliance. I'll talk about this in more detail on today's techzing. <http://techzinglive.com>

<comment><USER13> It sounds like this is pretty close to what he was doing originally, but then you have to write your own code and screens to handle dunning (as stated in the article).

</comment></comment><comment><USER14> Thank you for the very thoughtful write up about the reasons not to build billing and how Chargify has helped. The ownership of CC data is an important topic and many providers talk about the importance of this. Three things to consider

1) How often will you actually change gateways? I can tell that we have had the same gateway account for 7 years and processing millions of dollars a year and changed merchant accounts many times. The gateway industry is pretty much a commodity, very little price change, no difference between gateways so there is not much value in changing. There are reasons you might change merchant accounts as rates do change and volume can make a difference.

2) How to change. If you really do need to change gateways and keep in mind Authorize.net is not going out of business so that is not a consideration, think about the right way to do it. I would either slowly move accounts over as operations like CC updates happened or run multiple gateway accounts to diversify risk.

3) Where is the risk? The largest gateways are not going anywhere so your real risk with not doing billing on your own is the billing provider. And yes I am saying this and I am a co-founder at Chargify. Would you prefer to have your CC details held there or at a gateway where you can always access the token to make future charges? This gives you the ability to move billing providers compared with getting locked in.

At Chargify we take security very serious and have reviewed all of the different reasons around this topic and can tell you that today all CCs are stored at the gateway but in the future we will have an option that gives YOU the choice where to store this data and how.

</comment><comment><USER15> Chargify seems to be on the right path. I do think they could use some work on their flexibility though.

Holding credit card data is always a bitch. Paypal website payments pro's API lets you issue coupons and discounts that are baked into the initial signup. However midcycle its tough to issue a discount.

They also have some bugs in their API with their callback urls etc.

<comment><USER14> Glad you think Chargify is the right path, love to hear what flexibility you want that we cannot give.

<comment><USER15> @dh I haven't looked over the product in 3 months or so, but there was some issue at the time that we felt we could do better in our own code we layed on top of paypal api.

</comment></comment></comment><comment><USER11> It's not widely adopted yet (and it's doubtful that it will ever be adopted by Auth / Paypal), but of significance to this discussion is <http://www.portabilitystandard.org/>.

If the provider you're looking at is a member, then you can at least be sure they _get it._

</comment><comment><USER16> Another option is Spreedly. They store the credit card information internally (they're DSS compliant), so that you can switch merchant accounts/gateways as needed. If you want to transfer out of Spreedly, they'll work with your new provider to get the CC data out to them (it has to be a secure exchange).

</comment><comment><USER17> Very interesting, I'm making this desicion at the moment. Currently settling on Chargify, but it means changing banks and setting up a new merchant account which is hassel I could do without! Should save me some time on developing my own system though....

</comment><comment><USER18> hm. how do customers feel about you changing the pricing without their input? I mean, it sounds like the guy is clear ahead of time, but if he thinks he will lose customers if he reminds the user that they are paying, uh, doesn't that mean that he is basically acknowledging that he is not providing a service the user values at full price? that he is just hoping they forget to cancel?

It's related to something I've struggled with; I mean, I make users take active action every bill... I don't support recurring billing, just 'cause I feel weird about just hoping you won't remember to cancel your account. And yeah, I'm probably loosing out on a lot of trailing months... but what do you think that does to customer goodwill?

I'm not saying I know the answers... however, my opinion would be that long term, you are better off providing enough value that the customer is willing to take active action to stay.

On the other hand, I've had several customers ask me for recurring billing, so it's quite possible that the convenience factor is the operative issue here, rather than the value provided by the service. It's possible that the service is worth the money, but not worth the hassle of positively acknowledging another bill.

<comment><USER10> _how do customers feel about you changing the pricing without their input?_

I would assume they feel the same way anyone who has ever had phone, cable, or internet service feels. Outside of a contract, prices go up over time. You send out an email 30 days in advance, tell them it's going to happen, and then do it. If they want to cancel and get a refund, ok, no big deal.

Virtually everyone is familier with recurring billing so I think offering it is entirely for the customer's convenience and in no way a bait and switch or any other kind of attempt to rip-off a customer.

<comment><USER18> >I would assume they feel the same way anyone who has ever had phone, cable, or internet service feels.

If I treated my customers as poorly as comcast does, I'd be out of business, and I say up front that you should only be my customer if you can tolerate poor service.

<comment><USER19> The point is that everyone is used to this pattern: free trial that will switch to paid subscription unless you cancel.

<comment><USER18> 'everyone? Personally I associate those billing patterns with, uh, less than reputable businesses. Now, I may be very unusual, but we have at least one counterexample.

Edit: I sound like I'm calling you a fraudster, and that is not my intent. I really want to hear about the other side of this, in part because some of my customers have asked me to setup recurring billing that doesn't require action on their part.

As it is, most people who cancel do so right after I bill them. if I was just taking the money rather than sending the bill, then for the same thing to happen, they'd have to ask for a refund. Which, I seems kinda bad to me- I mean, negotiation is waste. However I could automatically gave a refund if they cancelled within X days of me charging them, that would solve the problem.

Anyhow, I really would like to know more about what you think of how 'normal' people think of it. It's not obvious to me.

</comment></comment></comment></comment></comment><comment><USER20> Google Checkout allows you to charge less than original subscription.

</comment><comment><USER21> For startups looking for Subscription Billing, Aria Systems has two options. The first is our powerful & full featured Aria Billing Platform.

The second is Aria SubscriptionsPlus - this is Subscription Management on the PayPal platform. Unlimited customers, you can set up subscription / promotions / usage plans, the data is yours, and you can accept Credit Cards and PayPal. And yes, there is customer support. Pricing is free for the first 6 months, and after it's $40 plus any PayPal fees. More information: <http://www.paypal.com/SubscriptionsPlus>

</comment><comment><USER20> How does Chargify deal with fraudulent orders?

<comment><USER14> Since you have to have your own merchant account, we (Chargify) do not have to deal with the fraud transactions but give you the tools you need like searching for the account to turn it off.</comment></comment>


Do-it-yourself ultralight tent (2017) [video] - <AUTHOR> https://www.youtube.com/watch?v=5yxaVmW-Q1I <comment><USER2> I think this is pretty great for anyone who's gone camping, not just ultralight. I've only gone car-camping, but I think it's a giant pain to have to deal with the ground tarp, the various poles, the rain cover and the numerous straps and ties that go along with it all.

This simplified design is great. Not needing a ground mat, the "bathtub" design of the bottom of the tent, the single top design with space to prevent condensation all seem super convenient without sacrificing a lot of functionality.

I love the fact there's a website dedicated to selling ripstop fabric as well. Not sure what I'd ever use it for as I don't sew, but I love that it's there.

<comment> sh-run I go backpacking a couple times a year with an almost identical tent ([https://www.sixmoondesigns.com/collections/tents/products/lu...](https://www.sixmoondesigns.com/collections/tents/products/lunar- duo-outfitter)). The six moon's version of this tent does include a couple of small poles that slide into the top of the canopy, which I think is to improve water shedding. I've used the tent without them before and didn't have any problems.

Overall I'm a huge fan of the design. It's super easy to setup and tear down, you can control the airflow by raising or lowering the base of the canopy, it packs small and I've never had a problem with water getting in.

</comment></comment><comment><USER3> Cool. I purchased a 3Mx3M tarp and set it up like a tent. I find it useful to be able to use it in different configurations.

[https://www.youtube.com/watch?v=oNFu2Gw6CSs](https://www.youtube.com/watch?v=oNFu2Gw6CSs)</comment>


Specializing to survive - <AUTHOR> http://www.nytimes.com/2015/03/20/education/in-the-age-of-information-specializing-to-survive.html?smid=fb-nytimes&smtyp=cur&bicmp=AD&bicmlukp=WT.mc_id&bicmst=1409232722000&bicmet=1419773522000&_r=0

<comment><USER2> _" Here's the brilliant part: Mr. Haber didn't spend a dime on tuition or fees. Instead, he gorged from the smorgasbord of free courses offered by top universities."_

This is harder to achieve in some courses. Science for example, and I suspect some aspects of tech that require infrastructure.</comment>


Porting NetBSD to Allwinner H3 SoCs - <AUTHOR> http://blog.netbsd.org/tnf/entry/porting_netbsd_to_allwinner_h3 <comment><USER2> > We wrap the kernel in a U-Boot header that claims to be a Linux kernel; this > is no accident! This tells U-Boot to use the Linux boot protocol when > loading the kernel, which ensures that the DTB (loaded by U-Boot) is > processed and passed to us in r2.

Hah, reminds me of Linux pretending to be recent versions of Windows to ACPI code.

<comment><USER3> It's funny how Linux became the Windows of ARM.

</comment></comment><comment><USER4> Nice job. Ethernet still isn't mainline for H3 and the linux kernel. I'm quite tempted to try this.

</comment><comment><USER5> Hopefully there isn't much to do to make it run on H5. H5 is a much better CPU

<comment><USER6> The versioning on ARM confuses me frequently, but there is one hopeful line in the article:

> In addition, I've added support for other Allwinner SoCs (sun8i-a83t, > sun6i-a31) to the kernel and have tested booting the same kernel across all > 3 SoCs.

<comment><USER7> The H5 is a member of the sun50i family. It's a 64-bit CPU, so this generic image will never work. FreeBSD has done some recent work on the H5 though, so maybe that'll land in NetBSD soon.

<comment><USER8> FreeBSD did not do recent work on H5, I would know as it would have been me :) But we should run on it without too much effort (I have hardware, now I need time)

<comment><USER7> Oof, apologies. I'd have sworn I'd come across some H5 FreeBSD work recently, but clearly was mistaken.

</comment></comment></comment></comment></comment><comment><USER9> Nice!</comment>


Kafka's Letter to His Abusive Father - <AUTHOR> http://www.brainpickings.org/2015/03/05/franz-kafka-letter-father/

<comment><USER2> Thanks for posting this. As a father, I struggle with my roles. There are a lot of them, and "ultimate authority" is unfortunately one of them. I believe most developmental specialists would agree that children do need some negative feedback. The frustrations come in deciding how much? When? Where? Who? For which reasons? When is negative feedback definitely inappropriate? When is punishment delayed punishment confused? When is my spouse or a grandparent disciplining more than I agree with? How to handle that? When is a conversation with spouse, in advance or in review, appropriate. And then trying to separate the authoritarian from the nurturing parent I try to be otherwise.

I'd say these sorts of questions go through my head 20 times a day on workdays and 100 times a day during the weekend. Usually in flurries. Maybe there's only a couple of corrections that actually need to be made, but the introspection goes on.

And what to do when I did it wrong? How to atone to my child? That's perhaps the most important part, I think. To see that wrong is wrong even when dad is the one who's wrong.

<comment><USER3> Good parenting is more a perspective and viewpoint. Respect them as people basically the same as you, but with radically different life experience. How to atone? If you recognize it as wrong you must have remorse. True remorse to another person is evidenced by an admission of the wrong, cessation of the wrong, and restitution for the wrong!

</comment></comment><comment><USER4> Its so ironical, that no matter how much we advance in our times, in technologies, in ehos & ideas - the relationship between parent and child hasnt changed that much</comment>


Observations from 10 Months Working at a Small Startup - a-kill-ease http://www.tortoiseandachilles.com/2007/09/observations-from-10-months-at-startup_03.html Observations about startup life and manager after working for 10 months at a small venture-capital funded startup. <comment><AUTHOR> I like the point about keeping cool in tense situations and not making disparrageing remarks about co-workers. You just can't break that rule.

</comment><comment><USER2> "The common failing of programming groups today is too little management control, no too much" -F. Brooks in the mythical man-month

A-kill-ease, Is this still true today? True in your experience? Would it have been corrected simply by the addition of technically-skilled managers, as you suggest, or were there too many other things wrong to begin with?

</comment><comment><USER3> 1, 7, 9 and 12 are universal.

</comment><comment><USER4> Man that tortoise picture shocked me at first. I won't tell you why.

</comment><comment><USER5> This situation sounds like a classic example of what happens when someone throws a bunch of money (and not much else) at a business opportunity. Unfortunately for most hackers, we don't often get opportunities in startups like this until AFTER the infusion of cash with all of its inherent problems.

That is, of course, unless you start it yourself.

</comment><comment><USER6> what about non-technical offsite CEOs that read lots of non-fiction!?!</comment>


ASK PG: Why doesnt PG answer most of the "ASK PG" questions? - <AUTHOR>

Most of the ASK PG questions on HN are mostly never answered by PG himself, no matter how relevant and important those questions might be. <comment><USER2> Probably because he's a busy guy, and has plenty to do just answering questions from entrepreneurs that he has a financial stake in?

</comment><comment><USER3> Often because I don't see them. I wouldn't have seen this one except that so many people flagged it.

</comment><comment><USER4> 1) Most Ask PG questions are dumb. 2) YC Interviews start this week.

<comment><USER5> >1) Most Ask PG questions are dumb, including this one.

FTFY

<comment><USER6> Most reddit memes are dumb too, including that one.

<comment><USER7> > Most reddit memes are dumb too, including that one. > > FTFY

FTFTFYFY

</comment></comment></comment></comment><comment><USER8> Probably because many are answered by people here who already know what he would say.

</comment><comment><USER9> It seems that he responded to this one, you should have asked your question instead!

<comment><AUTHOR> I already did and he already has

</comment></comment><comment><USER10> I would say he answers most of them. The ones that I've seen, he's answered.</comment>


iPad Air Review Roundup - <AUTHOR> http://thetechblock.com/definitive-ipad-air-review-roundup/

<comment><USER2> What's the reason why battery life is better on the iPad Air? More efficient processor? Better hardware?

<comment><AUTHOR> Check out the AnandTech review.

<comment><USER3> Anandtech is the only review I read. Very in-depth and well researched.</comment></comment></comment>


Show HN: Jira Slack Integration - <AUTHOR> https://www.jiraslackintegration.com <comment><USER2> CoFounder here.

"Jira Slack integration" is part of Troopr Assistant, a multi skilled chatbot for Slack and MSF Teams(soon).

While it does what you expect from a Jira Slackbot, it can also react to external events and suggest followup actions in Jira. For example if you want Github notifications to trigger status update on a linked Jira issue after a Slack notification, you can set it up in a few clicks.

We are building more skills for Troopr Assistant that will work out of the box, and tools to let you build custom skills without writing code.

Imagine Alexa but for business chat.

We are just getting started and eager for feedback. Thx.

<comment><USER2> link to Troopr Assistant: [https://www.troopr.ai/about](https://www.troopr.ai/about)

<comment><USER3> FYI My first reaction was that your proposition and name are (very) similar to troops.ai, who are quite well established doing Salesforce<>Slack.

<comment><USER2> We are focused on chat based automations for agile teams. Our customers are typically product/project managers looking to save time and get better engagement from their team.

[https://hiberly.com/](https://hiberly.com/) looks cool. It may be interesting for our customers as well. Good luck!</comment></comment></comment></comment>


Ask HN: I help make tech podcasts does anyone have questions for our guests? - <AUTHOR> Hi all, as some of you may already have seen I help produces tech industry podcasts and blogs. Our podcast format is very established now (We've just done our 100th episode) and we aim to get industry leaders from a variety of tech industries on to chat about career development in tech. If I were to tell you some our upcoming guests would anyone like their tech career questions answering?
Let me know in the comments.
Here's a link to our podcasts.
http://www.venturi-group.com/podcast/ <comment><USER2> Out of your last 24 podcasts, you've interviewed one woman - and even that episode is split with another male guest.

So, I suppose my question for you and your guests is "Given that women make up the majority of the population, how can the industry encourage women and other under-represented groups to see tech as a positive career choice?"

<comment><AUTHOR> Hi Edent thanks for your response. Diversity in technology is a subject we do like to touch upon in our episodes and the question you posed is great, i'll be sure to have us work it into an upcoming show.

I can also point you to some previous female guests who were on our show if you'd like. We are aware of the imbalance of male to female guests on our show and the imbalance is something we're always working on.

<comment><USER2> Have a listen to Pursuit Podcast. They manage to get an excellent balance - [http://hyperurl.co/zukdmh](http://hyperurl.co/zukdmh)

<comment><AUTHOR> Hi Edent, I'll be sure to give that a listen thanks for the recommendation. I've just edited a podcast today with an A.I consultant from New York, He's been working on an A.I program that is helping increase diversity in the hiring process. I'd be happy to send it over to you when it's released, it's a great example of technology actively tackling the issues you raised in your original comments.

thanks again

</comment></comment></comment></comment><comment><USER3> Question: Does posting to HN increase your listener count?</comment>


Show HN: Add GCM to your Android app in 5 minutes - <AUTHOR> https://github.com/googlesamples/easygoogle <comment><AUTHOR> EasyGoogle is an experiment of mine to make the common use cases for Google APIs dead simple on Android. You can add any of the features below in just a minute or two:

      * Google Sign In
      * Google App Invites (email/sms user-to-user invites)
      * Google Cloud Messaging (my favorite since it's hard to get right)
      * SmartLock for Passwords (cross-device password sync, used by Netflix, NYTimes, and others)

Would love feedback, and PRs are welcome!

<comment><USER2> I am taking over a legacy implementation of Google Sign-In and trying to switch it to the new 8.3 one (because asking for 'get contacts' just suck terribly). I don't really need a lib such as easy google though, I would have preferred more documentation on how it is recommended to handle some basic use cases.

For example : login in a first loginActivity then logout in another. Am I supposed to keep the GoogleApiClient somewhere at Application scope or to recreate it in each screen where I want to interact with it ?

<comment><AUTHOR> Totally agree, you shouldn't (and don't) have to use a lib like easygoogle to get Google Sign In implemented correctly on Android!

In the multi-activity situation you will want to re-instantiate your GoogleApiClient in each Activity. If you use the function enableAutoManage that keeps it pretty lightweight, you don't need to implement ConnectionCallbacks (since the new API does not have the notion of connection == signed in) and you can have a one-line implementation of OnConnectionFailedListener.

If you have a question about any of this, raise an issue on this repo ([https://github.com/googlesamples/google- services](https://github.com/googlesamples/google-services)) and I'll answer it.</comment></comment></comment>


Tunneling Internet traffic over FB chat - <AUTHOR> https://github.com/matiasinsaurralde/facebook-tunnel <comment><USER2> Couldn't you just use Facebook's "Fetch as FacebookBot" feature and just fetch the pages yourself? Example: [https://developers.facebook.com/tools/debug/og/echo?q=https%...](https://developers.facebook.com/tools/debug/og/echo?q=https%3A%2F%2Fnews.ycombinator.com%2Fitem%3Fid%3D9203946) I was thinking about doing this since on my network Facebook access is free but Internet isn't. (2nd world country, but barely)

<comment><USER3> It looks like it is more general purpose, than just html browser.

<comment><USER4> Potentially a problem that internet = web, at zeroth approximation.

</comment></comment></comment><comment><USER5> To me, the worst part of this is that there are places where Facebook is free but you need to pay for an internet connection. If the average user can only access the mindless corporate money-making machines and not the real internet, we are moving in the wrong direction.

<comment><USER6> They went from having no free internet to having Free facebook + other core sites like wikipedia through Facebook's internet.org, but it's moving in the wrong direction?

>If the average user can only access the mindless corporate money-making machines and not the real internet

They can, but it's not free, and a lot of people have no other option but to use what is free. This corporate money-making machine just provided pure value to a ton of people, there's no downside to having this additional option available.

<comment><USER7> _there 's no downside to having this additional option available._

Sure there's a lot of value in communicating with other Facebook users, but if you can't see the possible downside of having a large group of people's first and only connection being through a corporate-controlled view of the world, you're not using your imagination.

<comment><USER8> Can you actually make the argument that access to Facebook/Wikipedia/etc is worse than no Internet whatsoever?

<comment><USER9> Yes, absolutely, and it's not a new idea, e.g. "sending shirts destroys local textile economies by flooding the market with free goods and undercutting local t-shirt producers" [1].

1\. [http://freakonomics.com/2011/02/15/what-happens-to-all- those...](http://freakonomics.com/2011/02/15/what-happens-to-all-those-super- bowl-t-shirts-a-guest-post-by-dean-karlan/)

<comment><USER10> This allows those communities to dedicate resources that would have gone towards shirt manufacturing into something more valueable. Textile economies are a mostly waste of human ingenuity and time, and have been since the Jacquard Loom at least.

<comment><USER9> Within our lifetimes, this reasoning will apply to more professions than you might think. "Dignity is more important than wealth" and all...

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> Back in the day when Skype was a pretty cool peer-to-peer encrypted mesh network, that successfully evaded firewalls and traffic analysis, I wrote a tool to proxy Internet traffic ontop of the Skype mesh. I was quite young when I wrote it, but I managed to dust off an old demo screencast I made (and convert the swf to an mp4), which gave me a laugh. If you're curious:

[http://data.zx2c4.com/skypeproxydemo.mp4](http://data.zx2c4.com/skypeproxydemo.mp4)

<comment><USER12> That is very cool. Does Skype not have a direct peer to peer connection anymore?

<comment><USER11> Supposedly since the Microsoft buy-out, everything is gradually becoming centralized.

</comment></comment></comment><comment><USER13> I've been wondering if something like this could be helpful to breach the great firewall.

Find some high traffic site in China and smuggle in content via various site features such as chat, messaging, forums, etc.

The content could be obfuscated to appear benign while embedding hidden data in text, images, or binary attachments.

<comment><USER14> I don't know the specifics about how the surveilance is implemented, but embedding encrypted payload in benign files is a neat idea to bypass internet censorship, at least in principle.

<comment><USER15> Inconvenient Message Detection: [https://github.com/DickingAround/InconvenientMessageDetectio...](https://github.com/DickingAround/InconvenientMessageDetection)

<comment><USER16> FYI github renders readme.txt as preformatted code, but your readme.txt is not preformatted, so it is very hard to read (one line per paragraph).

</comment></comment></comment></comment><comment><USER17> This looks similar to the "IPv6 over Social Networks" RFC, published 2009-04-01:

[https://tools.ietf.org/html/rfc5514](https://tools.ietf.org/html/rfc5514)

</comment><comment><USER18> Wonderful proof-of-concept!

Humanity needs steganography-as-a-service. But think how difficult it is to implement in a regime where all networks are monitored and even Android phones are assumed to be backdoored. Most services will re-encode data during transmission, potentially munging whatever secret happens to be embedded. And more generally, its the metadata that often de-anonymizes, not the data itself. If all the dissidents one day begin communicating via Lutheran Insult memes, its simply becomes a matter of picking one up and applying "rubber- hose" cryptanalysis to put an end to the party.

</comment><comment><USER19> This is really cool! In so many 2nd and 3rd world/poor countries internet is a luxury, as the price of bandwith is so high. Philippines for instance, a country that mainly provides connectivity through limited 3G and LTE, have a monthly price of about 30 beers from the local bar. In comparison, I pay around the price of 4-5 local beers, for 100/100 fiber.

Its sucks so hard that people cant afford to get knowledge from internet. Especially considering they would benefit greatly as schoolbooks are expensive and in some countries, censored.

<comment><USER20> Hack author here, in my country, Paraguay, you get 10 MBPS for ~140 U$ per month. I discovered the Internet through my father, because he is a journalist and the press had really early access to this kind of tech, 20 years later I'm still crazy about it. Thanks for the comment!

<comment><USER19> Wow! Thats really expensive! Hard do access stuff often sparks creative ideas and solutions :) Keep on hacking!

</comment></comment></comment><comment><USER21> Facebook limits number of messages you can send. After passing some secret threshold, your profile would be put in 'restricted' mode.

</comment><comment><USER22> I once read a story about tunneling IP over DNS. Something about free Internet/DNS for Microsoft-Update. But I can't find it.

<comment><USER23> You are thinking of iodine.

[http://code.kryo.se/iodine/](http://code.kryo.se/iodine/)

<comment><USER22> No, what I read was from the 90s. But the guy probably did what iodine does.

</comment></comment></comment><comment><USER24> Interesting, but wouldn't you need a server somewhere to act as the other end of the tunnel, for which you'd have to pay for hosting and/or bandwidth anyway?

<comment><USER25> But hosting and bandwith for servers is extremely cheap if you don't care about reliability and trendyness. You can get a vps with 1Tb bandwidth/month for $4 (probably even less if you look around more than I did). Try getting mobile bandwidth for anything near that price.

</comment></comment><comment><USER26> Some mobile operators offer unlimited Facebook and whatsapp traffic doesn't count towards the monthly data transfer limit.

<comment><USER27> I've heard this is also true for Twitter and a few other social networking sites, so you could potentially tunnel your traffic through them too.

However, these tunnels are going to be relatively low-bandwidth (especially if they start throttling it) and high-latency, so the "unlimited" would in reality be "how much can you transfer continuously in a month?"

</comment></comment><comment><USER28> I am pretty much a beginner dev, so can anyone briefly explain how this works? It's not really clear to me from the code.

It's mentioned in the README that packets are being sent as base64. Let's say I would like to send a GET request to google.com. How does Facebook Chat serve me with google's page?

<comment><USER29> As far as I understood:

\- They are using virtual network kernel device (TUN/TAP, [https://github.com/matiasinsaurralde/facebook- tunnel/blob/ma...](https://github.com/matiasinsaurralde/facebook- tunnel/blob/master/tun.cpp) )

\- encode it as base64

\- communicate with the http/web facebook client [https://github.com/matiasinsaurralde/facebook- tunnel/blob/ma...](https://github.com/matiasinsaurralde/facebook- tunnel/blob/master/facebook.cpp)

Between that they do authentication things at facebook with "gumbo". And later on everything the other way round at the server side.

So if you GET google.com your traffic goes through a virtual ethernet like device. [https://www.kernel.org/doc/Documentation/networking/tuntap.t...](https://www.kernel.org/doc/Documentation/networking/tuntap.txt)

There is no cryptography involved, they could try to use openvpn to enable this feature. [https://community.openvpn.net/openvpn/wiki/BridgingAndRoutin...](https://community.openvpn.net/openvpn/wiki/BridgingAndRouting)

</comment></comment><comment><USER30> I was just reading about gumbo parser yesterday! h/t @nostrademons

Very nice hack... its just fun to do something like this.

Reminds me when I used to fiddle w/ "phreaking" when it was really easy. I didn't think about ethical implications - just got a really big thrill when I got a free call.

<comment><USER31> Thanks! I'm glad to see it used for things...when I wrote it (and decided to open-source it), it was very much a "Well, I have one immediate need for this, but it seems like people could do a lot with a robust HTML5 parser with a simple API."

</comment></comment><comment><USER32> interesting given FB keeps chat history forever

<comment><USER33> I wonder if they have any flood protection...

Also HTTPS packets should be quite safe.

<comment><USER34> It'd be more interesting if this was done over Google's chat, since Chrome trusts the Google Internet Authority cert...

<comment><USER35> What makes this interesting is the fact that Facebook chat traffic is subsidized by Facebook and free of charge in some countries as part of their anti-net-neutrality "Internet.org" initiative. This project allows you to hijack the Facebook subsidy for purposes they didn't intend. Of course, if it becomes popular then Facebook will have to block it, emphasizing the self- serving commercial nature of the subsidy.

<comment><USER36> Internet.org might not be net neutral, but that doesn't make it bad. Much of the world isn't the US, and differently structured markets need to be considered differently.

<comment><USER37> So if you are in an impoverished area your packets are different from first world packets, magically making it harder to send them to 184.108.40.206 (archive.org) than 220.127.116.11 (facebook.com)?

No, that is not the case. Instead, Facebook will pay for you to get Internet if that is Internet that _only lets you access Facebook_. And that is not an Internet at all. The infrastructure, the physical reality, means that if you have _any_ connection, you _can_ have _all_ connections, and in these circumstances only profit hungry greedy monsters would consider effectively blacklisting every site but their own to guarantee them revenues to show to shareholders for providing network connectivity to you - or I guess it should be more appropriately called Facebook connectivity.

<comment><USER38> They're not blacklisting anything.

The only bad thing they do is call it "internet". It's not internet access. Free access to things like wikipedia is a good thing, as long as it's not taking money away from actual free internet initiatives.

Price gouging actual internet access would also be bad, but that would be someone else doing it, and I don't think it's happening here.

</comment></comment></comment></comment></comment></comment></comment><comment><USER39> I did something very similar to this last summer, written in Python. No idea what state the code is in at this point because it's been months, but here's the code I had sitting around: [https://gist.github.com/schlarpc/86e20aa3f3aaf3d78269](https://gist.github.com/schlarpc/86e20aa3f3aaf3d78269)

<comment><USER20> Really cool, I'll give it a try soon!

</comment></comment><comment><USER14> With a built-in encryption layer (on top of eventual HTTPS) it could be a useful "hack" for the kinds of situations mentioned in the readme. I wonder how facebook and the telecos will feel about this. All in all, a cool concept but unlikely to work in practice if either facebook or the telecos do not want to.

<comment><USER40> It would be cool if a company such as facebook supported this. Seeing them as an enabler for free/uncensored internet, given that the country was chosen for a internet.org campaign.

<comment><USER41> If Facebook wanted to support it they would probably just implement a standard proxy server that would be more efficient. If anybody can handle the traffic it would be Facebook, but I bet their chat services are not really tuned for this kind of usage.

<comment><USER40> It would certainly be interesting if facebook started to provide proxy access

<comment><USER42> The question then is, do you trust facebook more than your isp?

<comment><USER8> For those of us with Comcast, it's a pretty close race...

</comment></comment></comment></comment></comment></comment><comment><USER43> I tried something like this over gchat but they throttled pretty soon so didn't work well. But it worked for me over Firebase. Here is simple project to demo how to do VNC over Firebase: [https://github.com/vskarine/fireport](https://github.com/vskarine/fireport)

</comment><comment><USER44> Dear Australian Government,

Please add this to your list of reasons why your wrong headed "meta"-data retention plan can not work.

Rory

</comment><comment><USER45> Uses Gumbo... from the README

> Gumbo was initially designed for a product that worked with trusted input > files only. We're working to harden this and make sure that it behaves as > expected even on malicious input, but for now, Gumbo should only be run on > trusted input or within a sandbox.

<comment><USER31> That's mostly historical at this point - Gumbo passed a security review as of 0.9.1, has had several rounds of fuzz testing, and is used by a bunch of other libraries now. It's been struck out of the README at HEAD, though I think it was listed in several earlier versions' READMEs.

</comment></comment><comment><USER46> While I find this project awesome, but I don't think telecos or even facebook will allow this in long run. I think that it even breaks facebook TOS.

</comment><comment><USER47> [https://github.com/pasis/pppoat](https://github.com/pasis/pppoat)

</comment><comment><USER48> Base64 encoding is such a useful tool. I used it to transfer binary over IRC once.

<comment><USER49> Why not just use DCC?

<comment><USER50> What is DCC, in this context?

I tried to find it in google, but the acronym is very ubiquitous.

<comment><USER51> First hit of this query: [https://www.google.com/search?q=irc+dcc](https://www.google.com/search?q=irc+dcc)

</comment></comment></comment></comment><comment><USER52> That's a really neat hack, love it.

</comment><comment><USER53> Wow didn't see this was so old

</comment><comment><USER54> No, please no this is terrible.

<comment><USER55> Why?

</comment></comment><comment><USER56> We need screenshots here! :D

</comment><comment><USER57> 9984894172

</comment><comment><USER58> Nice hack

</comment><comment><USER59> nice

</comment><comment><USER60> This is the kind of hacking I find to be abusive. Finding clever uses for things is fine, but not when it's misuse with potential for harm. This reminds me of when someone exploited TinyURL to make TinyDisk.

</comment><comment><USER61> rush I jadhav

</comment><comment><USER62> I think this is kind of abusive of FB's infrastructure TBH. It must be hard to keep real-time messaging up for ... okay, I was going to say for 1 billion users, looked it up and it's 1.3 billion monthly actives - 890 million daily actives (Jan 2014 figure). So tell you what, on second thought I think they can handle your data.

however there's a good chance you'll cause some infrastructure problems since I'm sure there are assumptions baked in, regarding how often a user will send new messages, queuing, caching, etc. so I'm still not totally sure how I feel about this.

at the end of the day FB is just a php script. i wouldn't be surprised if you break it.

<comment><USER63> Maybe if it becomes popular, it'll make facebook rethink wanting to store everyone's messages until the end of time.

<comment><USER64> If facebook can see this traffic, they would love it, not discourage it.

<comment><USER63> I think a good implementation of this would encrypt the traffic between the proxy server and the client.</comment></comment></comment></comment>