Three degree world cities drowned global warming - <AUTHOR> https://www.theguardian.com/cities/ng-interactive/2017/nov/03/three-degree-world-cities-drowned-global-warming <comment><USER2> Can anyone provide a link to the visualisation software they used?

Seeing at a micro scale of 'per city' is useful to motivate but I'd love to see a World view of what we have coming in a 1, 2, 3°c and more rise

</comment><comment><USER3> Given the structure for how cities go bankrupt now from public works projects, conversations should be started now for what makes a city insolvent.

Otherwise, last-ditch efforts to save doomed cities will destroy the resources needed for their inhabitants inevitable refugees. Especially given current waves of populism-driven, science-be-damned politicking.

</comment><comment><USER4> Why don't we have global warming disaster movies? We have AI ones and even an earth freezing over. Was there one that did so poorly so as not to be attempted again?

Likely just as well. It would have to have a happy ending and somehow some unfunded hero saves the world.

<comment><USER5> "The day the world ended," and Wall-E are about global warming.

Google Global warming movies and you'll find a bunch of high profile movies.

<comment><USER6> Neither of those films is about global warming.

</comment></comment></comment><comment><USER7> "Although sea levels will not rise instantaneously, the calculated increases will be "locked in" at a temperature rise of 3C, meaning they will be irreversible even if warming eventually slows down."

That is something a lot of people don't truly realize.

<comment><AUTHOR> We should do some research whether we can spray some dust like particles in stratosphere to reduce the level of suns intensity. It can counter global warming. If it works we can even blast some asteroid which will create dust particles in stratosphere which will cool the earth.

<comment><USER8> We might not need to spray them if we start putting them jet fuel. Maybe some aluminum particles float with the fuel and start reflecting back infrared radiation.

</comment></comment></comment><comment><USER9> Im speculating on landworth inlands rising. Longterm bet, but im sure people will not migrate away from those cities completely, only gradually inwards.

<comment><USER10> I have to believe scientists and from what I see the argument for global warming is pretty solid.

That being said, I've been hearing about it for around 30 years dating back to a college class explaining exactly how CO2 trapped heat and showing starkly rising levels.

30 years isn't a short period of time so one can't say "climate is not season!" or whatever, and during this period the earth has not gotten noticeably warmer nor have any coastal areas I'm aware of been submerged due to warming.

Again, not denying warming makes sense on paper nor arguing it isn't happening or won't come to pass in the most extreme sense if we don't do something. I have to respect what science predicts. But what I do know, in the non theoretical world, is what was predicted then hasn't happened. I don't know why. Maybe it will later.

Point being, climate can stay irrational longer than you can stay solvent.

Speculating on inland property in hopes climate change is going to make it worth something probably isn't going to pan out unless something (besides lip flapping and hand wringing) really starts moving soon. Unless it's a long term investment for your grandkids, then _maybe_.

<comment><USER10> Lol. I almost deleted this comment convinced someone would come along with an "OMG Global Warming Denialist! Stone him and burn the corpse!" and downvote comment to death.

At this point I'm going to leave the comment to see how much of that happens as sort of an informal survey.

And no, I'm not a denialist. I just have seen first hand what was predicted, and what didn't happen. But I accept the science. I assume there were modeling errors? So what makes me suppose the current set of predictions are any more accurate? Granted I don't follow the topic closely but the amount of hysteria surrounding it doesn't match what I saw happen.

Reality that occurred is reality and denying reality because a certain camp says XX isn't a good idea. It prevents us from improving our models and leads to various forms of irrational behavior.</comment></comment></comment>


50% of neuroscience papers suffer from a major statistical error. - <AUTHOR> http://www.badscience.net/2011/10/what-if-academics-were-as-dumb-as-quacks-with-statistics/ <comment><USER2> In academic biology, statistics is routinely considered an afterthought. In the eyes of many labs/PIs, their results are already real. You just have to do those damn statistical tests so the editor will get off your back.

Most biologists don't understand statistics either. To the majority, the unpaired T-Test is the only test that is needed. Ever. Doesn't matter if you have one or two tails, paired or unpaired trials, normally distributed population or skewed. Most biologists don't take proper statistics classes and most just don't care. I doubt most biologists would even be able to name alternative statistical tests.

<comment><USER3> So very true. I went from physics into biology, and the shoddy application of statistics is surprising. This is a failure that could be easily addressed at the university level. More stats classes.

<comment><USER4> The best and simplest approach IMO would be improving peer review. If it was understood that scientific journals would reject papers with poor statistical analysis you would see changes fairly rapidly.

<comment><USER5> Nature and the NEJM, and possibly others, assign statistical reviewers. So this is a known problem that some high profile journals are attempting to correct.

</comment></comment></comment></comment><comment><USER6> The short version of the error: If in your data you find that A has no statistically significant effect, but B does have a statistically significant effect, this does _not_ automatically show that B has, with statistical significance, more effect than A. To do that you have to do a statistical test on the difference in the effects.

I believe (?) this is normally done correctly in medical studies with placebos, where the typical analysis is to show that a drug has a statistically significant effect compared to the placebo baseline; it's not sufficient to show that the drug has an effect compared to a no-drug baseline, and, separately, that a placebo doesn't.

<comment><USER3> It's true. Many anti-depressant drugs have no significant effect when compared to placebo.

[http://www.plosmedicine.org/article/info%3Adoi%2F10.1371%2Fj...](http://www.plosmedicine.org/article/info%3Adoi%2F10.1371%2Fjournal.pmed.0050045)

<comment><USER6> I don't believe the controversy over that is whether the statistics were done properly, but over: 1) replicability, in particular whether significance is still found when doing large-scale meta-analyses; and 2) whether blindness of the studies is compromised by "unblinding" effects where a drug's side-effects can tip off the doctor or patient about whether they got a placebo or not. But it's been a while since I waded into that flamewar of a debate...

</comment></comment></comment><comment><USER7> Not to nitpick, but the headline "50% of neuroscience papers suffer from a major statistical error." is false. Out of a sample of 513 papers 78 contained this specific mistake.

<comment><USER8> I think you skimmed a bit fast:

"Nieuwenhuis looked at 513 papers published in five prestigious neuroscience journals over two years. In half the 157 studies where this error could have been made, it was made."

<comment><USER9> In other words, you're arguing that the title should be: "50% of 31% of neuroscience papers suffer from a major statistical error." ?

<comment><USER10> How about "50% of eligible neuroscience papers assume that statistical significance is transitive.".

</comment></comment></comment></comment><comment><USER11> This should be the least of our worries. The incentives are set up so strongly to produce a statistically significant result that indeed nearly all experiments do produce a statistically significant result. Scientists measure a data set. Then they work to find a subset of the data and a statistical test that gives them a significant result. Just ask a couple of scientists whether they ever did an experiment that didn't provide a statistically significant result. Proper statistics, where you decide on the test you'll apply and on what data before doing the experiment, is almost unheard of. And then there's publication bias, of course.

</comment><comment><USER12> Here is a wonderful research paper that illustrates the misuse of statistics in neuroscience:

<http://prefrontal.org/files/posters/Bennett-Salmon-2009.jpg>

</comment><comment><USER13> This statistical point is true. However, there is a practical problem with experimental neuroscience - data is painful to get and the means are often comparable to the variances.

So, with the data you have, it is often much harder to show A > B than to show A > C and B !> C.

<comment><USER14> So your point is, inappropriate stats are okay because science is hard???

</comment></comment><comment><USER15> Maybe someone should follow up and do a similar study for multiple fields and see whether the difference in error rate between fields is statistically significant.

<comment><USER16> There is some literature in other fields. Sjoberg, in "A Survey of Controlled Experiments in Software Engineering" did similar studies in software engineering to compare with other fields such as medicine and the social sciences. This survey showed that only 1.9% of Software Engineering studies were actually controlled experiments.

They examined 5453 scientific articles in 12 leading journals from 1993 to 2002. I like how the authors tactfully state that "the gathered data reflects the relevance of software engineering experiments to industrial practice and the scientific maturity of software engineering research."

</comment></comment><comment> loup-vaillant "Statistical significance" is starting to tire me. It is too binary for my test: either a given result "achieved" statistical significant, or it is not. Obviously you have to choose a threshold, and which it should be is much less obvious.

Couldn't we just do a way with statistical significance, and just publish likelihood ratios, or decibels of evidence (in favour of one hypothesis over another) ? That way, we should know _exactly_ how much an experiment is supposed to be worth. No arbitrary threshold. Plus, you get to combine several experiments, and get the compound evidence, which can be much stronger (or _weaker_ ) than the evidence you get from any single one of them. And _then_ you may have found something worthwhile.

This is especially crucial when said evidence is expensive. In teaching, for instance, one researcher can hardly do experiments on more than 2 or three classrooms, over little more than a year. This is often not enough to accumulate enough evidence _at once_ for reaching statistical significance. But _a bunch of_ such experiments may very well be. (Or not, if the first one proved to be a fluke.)

</comment><comment><USER17> The submission title of the submitted article (which does NOT appear as the original title of the article) is probably a hat tip to the famous article by John P. A. Ioannidis, "Why Most Published Research Findings Are False."

[http://www.plosmedicine.org/article/info:doi/10.1371/journal...](http://www.plosmedicine.org/article/info:doi/10.1371/journal.pmed.0020124)

The article by Ioannidis, which I think is the most downloaded ever article on PLoS Medicine, is well worth reading for guidance in how to avoid errors in research design.

But to the point of the accuracy of the submission title, what the underlying journal paper

<http://www.nature.com/neuro/journal/v14/n9/full/nn.2886.html>

said was, "We reviewed 513 behavioral, systems and cognitive neuroscience articles in five top-ranking journals (Science, Nature, Nature Neuroscience, Neuron and The Journal of Neuroscience) and found that 78 used the correct procedure and 79 used the incorrect procedure. An additional analysis suggests that incorrect analyses of interactions are even more common in cellular and molecular neuroscience." In other words, half the time when the specific issue came up, the neuroscience authors got the procedure wrong.

AFTER EDIT: Meanwhile, a lot of other interesting comments have mentioned the role of statistics education or math-aversion in higher education in various disciplines. I'll comment here about some things I've learned about statistics since I completed my higher education, things I've self-educated about as a homeschooling parent for the last two decades and now a mathematics teacher in private practice.

First of all, even when undergraduate students take courses in statistics, the courses are not likely to be very helpful. Many statistics textbooks used in colleges are poorly chosen

<http://statland.org/MAAFIXED.PDF>

and many statistics courses are taught by professors who themselves have very poor backgrounds in statistics, so the essential point that statistics is all about DATA never gets emphasized. Moreover, the undergraduate statistics curriculum historically has emphasized the wrong issues about valid inference

<http://escholarship.org/uc/item/6hb3k0nz>

and most undergraduates who complete one or two statistics courses still have a very weak sense of what valid statistical inference is.

And all of this is not even to get into issues such as Bayesian versus frequentist approaches to statistics

<http://yudkowsky.net/rational/bayes>

in modeling reality. Yes, biologists need to get over fear of mathematics for biology to progress as a science,

[http://www.guardian.co.uk/books/2011/apr/16/mathematics- of-l...](http://www.guardian.co.uk/books/2011/apr/16/mathematics-of-life-ian- stewart-review)

and everyone can gain by learning more about statistics,

[http://knowledge.wharton.upenn.edu/article.cfm?articleid=192...](http://knowledge.wharton.upenn.edu/article.cfm?articleid=1928)

but statistics education isn't easy, and it can still be greatly improved even for the students who do step up to take statistics courses.

<comment><USER18> I think bad statistics education is just a facade that hides what is really happening. Now I don't have proof, but I think the majority of these "errors" are done on purpose. It's far better to fudge your math, get amazing (and wrong) conclusions and then get published in Nature then it is to not get published in Nature.

The prestige of getting published in Nature or Science far outweighs the criticism you will get for forging or manipulating your data. In large part because the later can almost never be proven. You can always say you just made a mistake or plead ignorance.

<comment><USER19> These aren't errors that would be caused my manipulating your data. If you were manipulating your data, you'd have made sure that your results were significant with the correct tests. These are errors where people didn't use the proper test.

At the worst, you could only claim that people only submitted the results of the test that made their research look better than it otherwise would have been (with the correct test).

In this case, I think it is more of an issue with the reviewers catching the problems than the authors deliberately misleading.

<comment><USER14> Actually, in the case of this specific error, reviewers are often shut down by editors who want to publish the finding. It happened to my friend's advisor recently: she called them out for it and the editor said it would be published anyway.

</comment></comment></comment></comment><comment><USER20> I wonder how many people make this error while A/B testing their websites...

<comment><USER21> Nobody does since we have this thing called the G-test. We can make other errors, but this specific one isn't possible.

<comment><USER22> I only wish it were so simple. I've presented correct statistical results for A/B tests only to have people try to argue me into accepting incorrect results that would follow from this logical error. If I knew less statistics, or was unwilling to argue with my boss, this error would have been made.

And another common variant of the problem happens when you're testing 10 variations. People want to do a pairwise test on the top and bottom right away, without realizing that, even if all are equal, the top and bottom frequently look different. Or the flip side of that error is that people see that the G-test says that there is a difference, and conclude that the current top one must be better than the current bottom one. Which is again incorrect.

There is a lot of subtlety, and just saying, "I have this statistical test that most people don't understand" is not really going to cut it.

<comment><USER21> Right, which is why I said "We can make other errors, but this specific one isn't possible" to the question: "I wonder how many people make this error while A/B testing their websites".

I'm familiar with the drawbacks of Taguchi methods and the subtle problems by changing distribution, and the problem of checking the G-test continuously and there-by reducing its effectiveness. But for a simple A/B test (and by that I mean challenger versus champion served randomly from the backend at a static distribution (50-50 through out the life of the test, say)), unless I need to hit the books again, this specific problem is not possible if everyone on board trusts the G-Test (the Yates correction on, etc).

</comment></comment></comment></comment><comment><USER23> The whole concept of "statistically significant" has to go imo. It causes much confusion and influences experiment design (because in short it focuses on obtaining maximum amount of measurement in unchanged conditions instead of measurements which maximize information value), All that in the name of some arbitrary chosen threshold for statistical significance.

</comment><comment><USER24> That's quite impressive. Esp. when they suggest that researchers may choose to report differences in significance because the actual interaction effect is not significant. Part of the craze to publish or perish i guess. Having an open science approach would help identify these errors here.

That is not to say that the significant results are not significant, though, just that any claim you may read in the discussion section should be taken with a grain of salt (which i think is already the case, given that brain phenomena are borderline chaotic).

This may even indicate the mere fact that in neurosciences you have zero really large and deep labs (think LHC scale), but instead you have thousands of small labs doing largely overlapping work with usually small sample sizes, all competing for small grants.

</comment><comment><USER25> This error builds on a simpler, even more common one (at least among students): Suppose you have just one treatment (A), and you find that A has no statistically significant effect. This does _not_ show that A has no effect, or that A's effect is small. (It could just mean your dataset isn't large enough.) The error discussed in the article seems to build off this mistake.

<comment><USER26> Could you elaborate on this? Does this assume "you" extrapolate the effect of treatment A to the general population?

I mean, I understand that if you have a sample size of two, find that treatment A does not induce an effect, and conclude that treatment A has no effect [for all test subjects] this does not hold. However, surely if the sample size _is_ big enough (which obviously isn't always clear, but for the sake of the argument let's assume it is) then drawing such conclusions does hold (within the certainty thresholds predefined for your statistical test of choice, such as 99% or 95% probability). Or have I misunderstood?

<comment><USER27> The problem is that standard statistical tests have two outcomes: (1) "reject the null hypothesis" or (2) "failure to reject the null hypothesis". Moreover in the most common statistical tests the null hypothesis amounts to something like "the two samples were drawn from the same distribution" so if you fail to find a significant difference you haven't shown they're the same, you've just failed to show they're different. If what you want to do is show that they're nearly the same, you can design a statistical test where the null hypothesis is instead something of the sort "these two samples were drawn from distributions that differ by > X amount" so rejecting the null hypothesis shows they differ by <= X.

</comment></comment></comment><comment><USER28> The author is himself imputing an absolutist interpretation of statistical significance. Statistical significance always has a p value (and an assumed distribution!) associated with it. The permutation of statistical significances of insignificances the articles describe could well be true for various p values.

</comment><comment><USER29> Many people enter biology and related areas precisely _because_ they dislike math.

How ironic...

<comment><USER30> That's not ironic. Irony occurs when the outcome is opposite of what actions intended. If many people enter biology and related areas precisely because they dislike math, then the expectation would be that math-related areas of the field (such as statistics) would suffer as a result. Irony (in this case) would be if people entered biology because they dislike math, but then biology as a field ended up being stronger in statistics than the more mathematically inclined fields.

<comment><USER29> It's ironic because they still have to learn math.

<comment><USER30> Fair enough.

</comment></comment></comment></comment><comment><USER31> In general, beware statistics. Check and double check before making assumptions. This applies to more than just neuroscience papers.

When reading scientific papers, beware conclusions.

Isn't the important thing whether someone else can replicate the experiments and achieve similar/same results?

<comment><USER32> > _Isn't the important thing whether someone else can replicate the > experiments and achieve similar/same results?_ //

Or whether a statistically significant proportion of experiments return a significantly similar result?

;0)>

<comment><USER31> If the experiments are replicated enough times by other labs to create an sufficient sample size.</comment></comment></comment>


Tenacious - <AUTHOR> http://steveblank.com/2012/07/19/tenacious/

<comment><AUTHOR> >Trying to remember my reality distortion field skills from my entrepreneurial days I convinced her to let us on.

I'd really like to know how he did that. Inspiring post (that I needed today!)

<comment><USER2> Watching a trained businessman pull a Tommy Boy on a receptionist is a really awe inspiring thing.</comment></comment>


Stegasuras: Neural Linguistic Steganography - <AUTHOR> https://steganography.live/ <comment><USER2> I think that this kind of automated stenography demonstrates that legislation requiring ~~mandated backdoors~~, ahem, _" responsible encryption"_, is completely nonsensical: we could encrypt our messages with something powerful and safe, then encode it with something like this. Boom. Plausible deniability that you were sending anything other than plaintext. Sure, the plaintext is long-winded and verbose, and maybe a little nonsensical, but would a computer be able to reliably distinguish between encrypted-then-stenographically- concealed text and "real" plaintext?

Anyway, really cool work.

<comment><USER3> >Nonsensical

E.g. One sentence of the 'cover text' I got read:

"Then, on September 8, 1816, Sherman surrounded Army headquarters and killed three emissaries and surrendered with large supplies and safety pins."

Sherman wasn't born until 1820.

<comment><USER4> But, if you use a different LM Context that is not so easily fact checked then you won't realize that it is nonsensical.

I used this LM Context: "This message contains confidential information and is intended only for the individual named. If you are not the named addressee you should not disseminate, distribute or copy this E-mail. Please notify the sender immediately by E-mail if you have received this E-mail by mistake and delete this E-mail from your system."

To encrypt this fake, but real looking PII data: "Jeffery,Gourlay,2/2/55,495-24-1236"

And produced this output cover text: "Disclaimer: An individual may be reminded of this email at any time by telephone from a different address, e.g. e-mail. However, online resources and other media (e.g. e-mailed stories, articles, etc.) that include original content, are not covered under this policy. The information contained herein"

Malware or a bad actor could transmit this past enterprise InfoSec controls all day without easy detection.

<comment><USER5> Also poetry might make for a good lm context. Nonsenicalness can be explained as artistical expression.

</comment></comment></comment></comment><comment><USER6> Very cool!

If I understand correctly, this approach can generate steganographic output that is _virtually indistinguishable_ from the output generated by the language model used. Quoting from section 4.3 of the paper:

 _" Most striking, arithmetic coding with the unmodulated language model induces a q distribution with a KL of 4e-8 nats. This indicates that, consistent with theory (Sallee, 2004), arithmetic coding enables generative steganography matching the exact distribution of the language model used."_[a]

Regardless of theory, I can't help but think, holy cow, the K-L divergence between the distribution of tokens in the steganographic output versus the output of a GPT-2 model is a minuscule 0.00000004 nats!

Did I understand correctly? Given that language models are getting even larger and the distribution of their output is getting harder and harder to distinguish from that of human output[b], I find this incredibly powerful.

Anyway, congratulations and thank you for sharing on HN!

[a] [https://arxiv.org/abs/1909.01496](https://arxiv.org/abs/1909.01496)

[b] [https://nv-adlr.github.io/MegatronLM](https://nv- adlr.github.io/MegatronLM)

</comment><comment><USER7> To the people wondering how to make it work...

On [https://steganography.live/encrypt](https://steganography.live/encrypt) leave the LM context intact and type your secret message into the secret message box. Then click Encrypt at the bottom.

Select the output cover text and copy it to your clipboard.

Now go to [https://steganography.live/decrypt](https://steganography.live/decrypt) and paste the output cover text in and click Decrypt to recover your secret message.

</comment><comment><USER8> The steganographic output with the default LM context would make for some excellent alternate-historical writing prompts:

\----

On January 25, 1798, Washington was elected President of the Confederate States of America. He later led the United States in the battle of Fort Sumter, North Carolina, in which he secured the passage of the Union Army, defeated the enemy and secured its last major victory. Washington was awarded the Order of the Pacific on December 27, 1798. His wife, Bea, was born in 1833 and settled in the Virginia river valley at East Mary Street, Bowersville. In 1855, Bea had married. Shortly thereafter, General John F. Washington was elected Governor of Virginia and commissioned to serve a year in captivity. He became enthralled with the Union and persuaded Henry P. Morgan, to meet his need for volunteers. Washington volunteered with the Federal troops using a French silver coin and with their aid the Americans located and captured the greatest concentration of troops there. After her capture, Bea was sent to Washington's camp in Richmond, Richmond and had a farewell ring to the American flag. It was this ring that Washington had set aside for himself with his death and a letter from his wife, who was

\----

EDIT: decrypting that message twice (i.e. decrypting the result of decrypting the above message) apparently "works" and produces some interesting results. It gets even more wacky as I continue decrypting more and more outputs.

</comment><comment><USER9> Similar to a project I did in college using Markov chains instead. Located at [http://cellprocessing-1329.appspot.com/stenography](http://cellprocessing-1329.appspot.com/stenography)

Type the text to encode with in the top box, and the text to encode in the bottom box and press the bottom at the bottom. Easiest is to just click on the right like Gettysburg Address or Apologies by Plato to fill it with a preset text, but if you fill it yourself you need some words that follow other words to work, like at a minimum "a a b a".

</comment><comment><USER10> The default text and settings didn't do anything, so I'm not exactly sure what I should be expecting from this site. Did this work for anyone else?

Edit: I can't get it to spit out anything no matter what I do.

<comment><USER11> Nope, doesn't work at all for me either.

<comment><USER12> Type a message into the second box. The one that says "secret text" in order to get the cover text which you can then put into the decrypt page.

</comment></comment></comment><comment><USER13> FYI you need to type something into the "Secrete message" and ask to "Encrypt" using the prepopulated "LM context".

Both the context and secrete message change the encrypted message

</comment><comment><USER14> This reminds me of mimic functions:

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

</comment><comment><USER15> I couldn't figure out how to combine this kind of model with wet paper codes, which is too bad since wet paper codes are really the only known way to resist an attacker with an equally good statistical model.

The closest I came was putting the text in a gray coded word per token form, then using GPT-2 as the error metric in the encoder, but the resulting bitrate was very low.

</comment><comment><USER16> Stegasuras is convincing work and the quality looks excellent.

I wrote a steganographic tool in this same spirit back in 2011, called Plainsight.

Back then, we didn't have deep learning, and the "Imagenet moment for NLP" had yet to arrive.

My Python code, with examples, is here: [https://github.com/rw/plainsight](https://github.com/rw/plainsight)

Unlike the OP, my Plainsight algorithm is 100% invertible by construction, and accepts binary input. (I verified the inversion process with "roundtrip fuzzing", a technique I still use today.)

Plainsight uses each _bit_ of the input message to generate tokens. Bits are used to decide how to traverse a Huffman-style n-gram tree, weighted by frequency. This tree of n-grams is the model used in both the encoding and decoding steps. The drawbacks to my method are that the output 1) can be verbose and 2) does not convince a human that it's plausible, except for short messages.

Stegasuras has orders-of-magnitude better output, and seems to solve the problems I couldn't solve eight years ago. I would venture that their new result has as much to do with advances in language modeling, as it does with the particulars of their encoding and decoding algorithms.

I'll also note that I'm glad these researchers were able to use grant money to do this work. As a non-academic, I applied for an AI Grant to support me in upgrading Plainsight to use deep learning, but I was turned away at the time.

Finally, one of the ideas I picked up back then is that spam can be used to contain secret messages. Send enough gibberish to enough people, with your intended recipient included, and you'll look like a spammer--not a spy:

       $ wget https://spamassassin.apache.org/publiccorpus/20030228_spam.tar.bz2
       $ tar -jxvf 20030228_spam.tar.bz2
       $ cat spam/0* > spam-corpus.txt

       $ echo "The Magic Words are Squeamish Ossifrage" | plainsight -m encipher -f spam-corpus.txt > spam_ciphertext

       $ cat spam_ciphertext
       (8.11.6/8.11.6) 3 (Normal) Internet can send e-mails until to transfer 26 10 [127.0.0.1]
       also include address from the most logical, mail business for your Car have a many our
       portals ESMTP Thu, 29 1.0 this letter on internet, <a style=3D"color: 0px; text/plain;
       cellspacing=3D"0" how quoted-printable about receiving you would like width=3D"15%"
       width=3D"15%" border="0" width="511" Date: Tue, 27 Thu, 19 26 because
       firstname.lastname@example.com for

       $ cat spam_ciphertext | plainsight -m decipher -f spam-corpus.txt
       Adding models:
       Model: spam-corpus.txt added in 2.57s (context == 2)
       input is "<stdin>", output is "<stdout>"
       deciphering: 100% | 543.84  B/s | Time: 0:00:00

       The Magic Words are Squeamish Ossifrage

</comment><comment><USER17> Anybody have a cheatsheet for the acronyms used? It's pretty neat.

<comment><AUTHOR> Hi, author here - GPT-2: a recent large language model (generates sentences conditioned on previous sentences) LM: language model ^ PPL: perplexity ([https://en.wikipedia.org/wiki/Perplexity](https://en.wikipedia.org/wiki/Perplexity)) KL: Kullback–Leibler divergence ([https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_diver...](https://en.wikipedia.org/wiki/Kullback%E2%80%93Leibler_divergence))

<comment><USER18> Cool demo, is the source live? I'd like to see how it works with ipv4-over- twitter.

Edit: nevermind, found it. For those looking, it's at [https://github.com/harvardnlp/NeuralSteganography](https://github.com/harvardnlp/NeuralSteganography)

</comment></comment></comment><comment><USER19> What is the bound on size(stegatext) / size(plaintext)

?

</comment><comment><USER20> Scary!!!

</comment><comment><USER21> very good article. Highly recommended</comment>


Ask HN: What if PHP is the only thing you know? - <AUTHOR>

I'm good enough with PHP to be able to write code professionally, but I don't know Python, I don't know Ruby, I don't know C++, I don't know Java, I don't know ASP.
If I ever wanted to leave my job, how limited are my prospects, knowing only PHP?
Or, to frame the question another way: What kind of possibilities -- in terms of opportunity and salary -- would be opened up if I were to commit to learning one other programming language ... and which should I learn? <comment><USER2> I've been on the hiring side of the interview table for web developer positions a lot in the last few years. While only having _professional_ experience in PHP isn't a big deal, I have to say that folks who've never shown an interest in another language or facet of software development don't tend to impress.

PHP is a very pragmatic, simple language with a complex and baroque set of libraries. It's great for hacking together websites, but working with PHP (even for many years) doesn't tend to teach you the kind of technical and aesthetic judgement that differentiates an assembly-line coder from a productive, engaged hacker.

Learning Ruby or Python might be the shortest path to another gig, but it probably won't push you outside your comfort zone far enough to really improve your programming if you stick to the usual Rails/Django garden path. If you want to really push yourself and grow as a developer, learn something completely unrelated to the standard LAMP stack.

Lisp (especially in a modern form like Clojure) is a good choice, as are Smalltalk and Erlang. C++, Java, or C# may let you jump up a pay grade or two, but tend to lead into dead-end "enterprise" coding, unless you're lucky enough to stumble into a top-notch shop that happens to be using them for their efficiency rather than their "manager-approved" status.

Most importantly, I'd suggest actually _building_ something in whatever language(s) you decide to pick up. Reading blog articles and tutorials is all well and good, but it's far more impressive for you to be able to show code and talk from experience about the relative strengths and weaknesses of the languages you've worked with. Even a half-finished side project hosted on GitHub (or hauled into your interview on a personal laptop) will go a lot further than regurgitating buzzwords on demand.

<comment><USER3> excellent point, pushing yourself outside the comfort zone is critical, at least that I what I have found.

Though, I have also found that companies are willing to hire and teach you, if you can exhibit excellent projects (and code), even if they are in PHP

</comment></comment><comment><USER4> I'm guessing you are going to stick to "web development", in which case, knowing C++ is irrelevant.

In the case of python and ruby, while these jobs are high profile, they are relatively rare at the moment, especially python.

Java and ASP seem to be their own walled gardens of career development. Try to climb in if you want, but they don't really lead to anything else, but might be a good place to be.

Only knowing PHP is a good problem to have. Lots of jobs there, especially contracting.

</comment><comment><USER5> At the last company I worked for (Internet Brands), there were about 100 developers. 90 PHP, 6 Java (for CarsDirect.com), and 4 .NET (for a handful of sites like Tjoos.com that haven't been migrated). Some of the PHP devs also know a little Perl or Ruby (helpful for migrations or legacy code). IB's business model is to migrate newly-acquired sites to PHP/MySQL whenever possible. This keeps development cheap because PHP devs are cheaper than Java or .NET devs.

The Java or .NET guys probably make 2x what PHP devs make there, but those positions are in very short supply. PHP is good to know if only for the sheer volume of jobs out there, even if the starting pay is lower. Keep in mind that highly able devs familiar with any language will make more money.

</comment><comment><USER6> I would suggest learning both Ruby (plus Rails) and Python (plus Django). There are plenty of PHP shops with nasty code bases thinking (even if only superficially) about developing to those languages and frameworks. Even if that never actualizes, it makes you as a candidate look more attractive.

I would also suggest really wrapping your head around client-side technologies if you haven't already. In particular, JavaScript plus jQuery.

</comment><comment><USER7> Do you know MySQL and AJAX also? How long have you worked on PHP?

If you are looking for prospects, I did be interested in seeing if your profile matches what I am looking for. email id on profile.

good luck.

</comment><comment><USER8> Depends how well you can actually write programs.

ASP is a platform, not a language. Its runtime languages are VBScript and JScript and others (PHP included I think). Their modus operandi is very similar to PHP. I prefer JScript but VBScript is simpler. You probably know quite a bit of Javascript already from PHP so it should be easy enough to migrate to that.

All the imperative languages are pretty much the same. X = Y + Z; If X then Y else Z; While X do Y; For(X in Y) do Z. The most different from that list to PHP I would say is C++ because it introduces the dreaded MEMORY MANAGEMENT.</comment>


How to find un-indexed queries in MySQL, using tcpdump - <AUTHOR> http://www.xaprb.com/blog/2009/08/18/how-to-find-un-indexed-queries-in-mysql-without-using-the-log/

<comment><USER2> This IS a very neat trick-now does anyone know how to find un-indexed queries in PostgreSQL?

<comment><USER3> Although this is a stunning trick which I will probably use myself, I think finding un-indexed queries is the wrong way of going about things. Sometimes queries are slow even if they do use indexes, so the best route is to find slow queries.

In MySQL finding slow queries is a pain because you STILL have to restart to enable the slow query log. In Postgres you don't (just set log_min_duration_statement to 0 and reload). Then you can use pgFouine (<http://pgfouine.projects.postgresql.org>) to analyze them - it produces a nice report.

<comment><USER4> Un-indexed queries are not inherently evil... sometimes they are faster than using/maintaining an index.

Queries are all about context; how big of a data set, how much/fast is that data set changing, how often is the query being made, etc.

I've seen some cases where a single table had a crap-load of indexes, one specifically for each query that was being performed. The overhead of maintaining all of those indexes was killing performance.

I find the most effective query tuning is a result of having realistic stress/load testing combined with internal analytics from the database (EXPLAIN or EXPLAIN PLAN). This points out the low hanging fruit, which you can optimize using various methods such as indexes, materialized views, and in some cases, re-arranging the data model to better suit your queries.

It also gives you a better idea of which queries are being hit the most, and which ones it makes sense to spend your time tuning.

</comment></comment></comment><comment><USER5> Thank you for posting some actual content. This is a really neat trick.

</comment><comment><USER6> wireshark does this as well, but this looks a bit more flexible.

</comment><comment><USER7> easier: login to mysql and type "show processlist".</comment>


Coding as a Career Isn't Right for Me - <AUTHOR> http://www.bipolarco.de/coding-isnt-right-for-me/ <comment><USER2> Wonder what this guy would say to the countless millions who toil away in factories, big box retail, and accounting offices. None of these people do this for the love of the job. They do it because it needs to be done and they get paid for it.

I wouldn't be so critical of your feelings but you whine about how society didn't let you do what you want to do on your terms. Change your circumstances. No one is just given everything. Its a combination of motivation and luck. And that luck comes from generating opportunities for yourself. So it all up to you.

I hope you get your debt paid off. Move to the cabin, but if you ever want to come back, just remember that society has her dues.

<comment><USER3> I like your post and think it's valid, but I would say that coding in high school/college doesn't prepare you for the real world at all.

In high school I was hacking on silly personal projects. In college I was solving cool algorithms, puzzles, and games. But in the real world most programming roles are pretty menial / not a super exciting domain / consist largely of process, code reviews, QA, debugging.

<comment><USER4> My friend has a HR degree where she got to study psychology and organizational principles and how to motivate people and run a business, and now she does paperwork all day managing employee sick time and vacation time and making sure all their certifications are up to date. I'd be surprised if any degree fully prepares students for just how much menial work they'll be doing, partly because those bits don't require a university course to learn.

</comment></comment></comment><comment><USER5> You remind me of me.

I'm 26. I'd much rather work on my own stuff than my company stuff. I have this plan after my current job to burn up some of my savings and spend a couple of years to build something I'm excited by. I've been paying off student debt.

I think I'm okay with working a 10.30-6.30 job. The pay-check is what will grant me my freedom. Every week I work, I save 3 weeks of expenses. I've already enough savings to pay off my student debt two times over. After another year I'll have enough savings to live as I do currently for 5 years. (Can double that if I don't take the train every day & eat out during office hours).

 _The product is important. Does it help someone? Does it make their task easier? Are the bugs in it tolerable? At all three of my big boy jobs, I 've been so far removed from the user that I have no clue if the product helped them or not. This hurts and it hurts a lot._

You're writing test automation. Think of your users as your colleagues. You're not saving random people time. You're saving time of people you go out to lunch with. All you have to do is ask "Are my tests saving you time?" And that's something.

<comment><USER6> Don't forget that once you get enough saved up, you can live off the interest alone (i.e., retire). So at your rate, 5 years gives you 15 years of expenses. At 7% return on investment, that money will never run out.

</comment></comment><comment><USER7>
        > I want to get away from coding for you and code for me.
        > I don't like coding for you. I don't think any of us do.

I'm sorry you haven't found anything to like and be excited by, but i assure you it is out there. I personally have never worked in a company with much process, so i haven't experienced that kind of hell. But do keep in mind, there's also another kind of hell: Where everybody is a cowboy coder and walks all over anybody's changes; where everybody codes 9-5 and then doesn't think about code ever, never improves, coding the same as when they started, 15 years after they start.

I've found my enjoyment in taking such companies and teaching them how to produce quality code without compromising on speed. I've found my enjoyment in encouraging such companies to take on young coders who i can then teach, and see flower into excellence they could otherwise only reach with years of investment.

And occasionally there is the one or two projects that are just for fun, or really touch many many customers.

Don't give up and blame the world. Look harder. Maybe even change your language. I mainly do Perl, which gets a bit of a bad rap by people who don't use it. But compared to companies doing e.g. Java or PHP i find a marked difference in culture. Maybe you're just stuck with the wrong focus in your skill set?

Or, if you feel brave: Maybe your problem is that you keep getting into the kind of company that wants an employee. Maybe you can change your situation by becoming a freelancer. Keep in mind that as a freelancer, you eventually, if you're good enough, end up in the position where you may fire clients. You also tend to see a lot more projects of much more variety.

<comment><AUTHOR> Thanks for the advice. My first job was full stack Java backend (SpringMVC) and jQuery hell front end. Second was full stack, Python backend, AngularJS front end. My new job is writing Protractor tests for multiple AngularJS applications.

I enjoy writing Python. Javascript isn't that thrilling to me. Not super excited by the countless FooJS libraries and Promises and async everything. In Protractor if I want to get the text of an element in the DOM, that's a promise. I mean come on? .getText() should not return a promise. I'm not a Javascript expert, so this will sound whiney-ish, but I think Promise hell is a thing just like Callback hell is.

<comment><USER8> I escaped the boredom by becoming very proficient in a popular open source project that I found interesting and that multiple companies are looking to hire for. While the business requirements for the features I have to add may come from my employer sometimes, for the most part I'm really just working on upstream and making it better. I've also job hopped a fair bit to try to find a job where there was motivation on both sides before getting to this point, so your tale is somewhat familiar.

Perhaps you could aim for something similar. There's employers out there (eg. RedHat) that will happily pay you to hack on open source if you can show that it's in both of your best interests. That way you get to choose what you're working on going in. Even just specialising a bit more might make things more interesting as you'll be hired to work on <thing you actually quite like> instead of some random stack put together by someone who may not have a clue.

Good luck in your search :)

</comment></comment></comment><comment><USER9> Hey, kudos for thinking this:

> And then I want to get away from coding for you and code for me. I don't > like coding for you. I don't think any of us do.

Too many people think of coding as only a career...thus, we shouldn't teach coding to non-comsci-majors because not everyone should be a programmer as a job.

Programming is an intellectual and productive pursuit in it of itself, and there is a huge difference between programming for someone else, and programming for your self and for what you care about. It's no different from writing prose. You could love to write for yourself, or for your own novels and projects...while having a writing job (technical writing, journalism) that you dislike. But it's not the writing itself that's the problem.

<comment><USER10> That said, I've met a few developers where it's just their job. They aren't passionate about code they way I am- their passions lie elsewhere, and that's fine.

Being passionate about software development can help you be a better developer- but it's not a prerequisite by any means.

<comment><AUTHOR> I often feel like I'm surrounded by programmers who just come to work every day, write as much good enough code that they can, and then go home. They seem really happy. I want to be like them. But my care gets in the way. My desire to question why we do things the way we do only to be told "that's just how it is" is difficult to hear and only frustrates me further. The happy people around me don't seem to ask questions, they just do.

<comment><USER11> It sounds like you're conflating caring about the quality of ones work with having a poor work-life balance.

Also, I think that pursuing happiness in and of itself is quite boring and demonstrates a lack of agency that we have as human beings... We need more than just the feeling of constant pleasure in order to have a fulfilling life. One very basic example: if you were happy all the time, how would you actually know? Being aware of the contrast between various emotional and psychological states provides a lot more fulfillment versus always residing in a single mode of existence.

</comment></comment></comment></comment><comment><USER12> Damn this is one bitter guy indeed. First of all, _everything_ you do as a kid is more fun than doing it as a professional. I sure loved to play soccer as a kid, but guess what? Being a professional player is full of annoying things like training, lifting weight, being careful with your diet, traveling all the time, etc. And that could probably be said about any career. Being a professional at anything is tough compared to toying around as a child, that's how it is.

"At all three of my big boy jobs, I've been so far removed from the user that I have no clue if the product helped them or not." Even during the second job at a "small startup with 15 employees, 5 developers, no testers." ? Hard to believe.

"I don't like coding for you. I don't think any of us do. We only do it because you pay us way too much money and we have loans to pay off." Feel free to write whatever you want about your point of view, but leave the rest of us out of your vast generalization.

<comment> vladimir-y It looks like that kid becomes an adult, and eventually realizes that adult life is full of compromises.

</comment></comment><comment><USER13> If programmers made twice as much money, it would be such a great job. And yet salaries have been relatively flat for over a decade (adjusted for inflation).

Something is wrong that salaries never seem to rise with demand in Silicon Valley. We know there was a secret deal to help suppress wages at one point, but it's not obvious why it's been so successful. Is it new graduates, immigration abuse, internationalization, illegal price fixing?

A programmers union could probably force tech companies to double salaries. They all could afford to pay it.

<comment><USER14> Silicon Valley presumes to disrupt everything, why not labor laws? And by disrupt, I mean in favor of the worker, and not management.

<comment><USER15> Comment of the day- thanks :)

</comment></comment></comment><comment><USER16> I reached the same conclusion recently. I'm about the same age, but instead of going through college to get there, I was one of the early "bootcamp" grads (though I took issue with my so-called bootcamp).

Yes, we should be glad to have these high paying jobs doing knowledge work. But there is something thoroughly dissatisfying about writing another meaningless CRUD app that spins the cogs just a little faster. More efficiently? Who knows. Besides, it probably does one of three things: ecommerce, ads, or glorified coupons. What's the point?

Coding isn't the right career for me, either. I do think it's a useful tool, but I think I've got to do something else with my life. I wish you luck figuring what that something else is, as well.

</comment><comment><USER17> I almost cried while reading this. <virtual hug to tomreece). I'm 27 too and hitting my 5th year in software. Last year I worked in a company that had 20 employees; 10 people were related to dev. Everyday in there was a slog. Shipping code was a convoluted affair that happened once every 45 days or so. Testing was all over the place, and in a bid to do "excellent design" there were classes connected to 5 levels of interfaces and abstractions and multiple circular references.

During that job, I made and shared two side projects for the first time in my life.

But the 9 to 5 hell was impossible to deal with.

Fast forward to now, I'm remotely working with a company that pays me a great salary. I live in South East Asia and that means my savings are fantastic. Bonus is that the company is amazing. Dreamt of joining it since 2012. But I digress.

Here's where I get to the point. Try and find this kind of remote work, and come live around here for a short while (Sri Lanka). Heck. I'd be happy to talk to you about it. Put it in perspective, with a salary of say 80k USD, you'll pay off your student loan in one year guaranteed if you live a little frugally. Hope this helps

<comment><AUTHOR> Awesome story friend. I wish you the best of luck in your future endeavors!

<comment><USER17> Let me know if you want to take it up :)

</comment></comment></comment><comment><USER18> 'One says to me, "I wonder that you do not lay up money; you love to travel; you might take the cars and go to Fitchburg today and see the country." But I am wiser than that. I have learned that the swiftest traveller is he that goes afoot. I say to my friend, Suppose we try who will get there first. The distance is thirty miles; the fare ninety cents. That is almost a day's wages. I remember when wages were sixty cents a day for laborers on this very road. Well, I start now on foot, and get there before night; I have travelled at that rate by the week together. You will in the meanwhile have earned your fare, and arrive there some time tomorrow, or possibly this evening, if you are lucky enough to get a job in season. Instead of going to Fitchburg, you will be working here the greater part of the day. And so, if the railroad reached round the world, I think that I should keep ahead of you; and as for seeing the country and getting experience of that kind, I should have to cut your acquaintance altogether.

'Such is the universal law, which no man can ever outwit, and with regard to the railroad even we may say it is as broad as it is long. To make a railroad round the world available to all mankind is equivalent to grading the whole surface of the planet. Men have an indistinct notion that if they keep up this activity of joint stocks and spades long enough all will at length ride somewhere, in next to no time, and for nothing; but though a crowd rushes to the depot, and the conductor shouts "All aboard!" when the smoke is blown away and the vapor condensed, it will be perceived that a few are riding, but the rest are run over- and it will be called, and will be, "A melancholy accident." No doubt they can ride at last who shall have earned their fare, that is, if they survive so long, but they will probably have lost their elasticity and desire to travel by that time. This spending of the best part of one's life earning money in order to enjoy a questionable liberty during the least valuable part of it reminds me of the Englishman who went to India to make a fortune first, in order that he might return to England and live the life of a poet. He should have gone up garret at once. "What!" exclaim a million Irishmen starting up from all the shanties in the land, "is not this railroad which we have built a good thing?" Yes, I answer, comparatively good, that is, you might have done worse; but I wish, as you are brothers of mine, that you could have spent your time better than digging in this dirt.'

Probably my favorite passage from Walden...

<comment><AUTHOR> Excellent.

</comment></comment><comment><USER19> Work is called work because it isn't supposed to be fun. If your's is remotely tolerable, only requires your time from 9 to 5 and pays you enough to cover all your necessities and even some luxuries you are better off than 95% of the world. Life's a bitch, then you die. At least you make enough money to not have to do it past your 40s if you don't want to.

<comment><USER15> Eh, no. Work is called work because it's supposed to produce something. If all it does is drive you nuts, waste your life and fill the world with garbage, then what's the point of it? You might as well give it all up and go tour the world with nothing but the clothes you wear.

And what's that I hear, about getting a pension in your 40s'? Wasn't that what the Greeks did wrong, that they wanted to get a pension in their 40s, and that's why their economy died?

<comment><USER4> Nobody mentioned pensions, the comment was saying you should save up your own money.

</comment></comment></comment><comment><USER20> Thanks for writing this, Tom. Coding as an employee isn't right for me, either.

By and large, programmers generally make great employees. Many brilliant people are able to knock out their assigned and existential objectives by solving complex problems and are handsomely rewarded with hefty checks. But, if you ask them questions outside their comfort zone about, for example, running a business, designing for the user, or marketing, most would be quick to point out that those aren't responsibilities that fall on their plate.

To me, it sounds like you have a fervor for being more than just an employee. You want to take ownership of your work. You want to use your brain for your own benefit, not for some other corporation to rent out. You want the grittiness of taking on multiple roles and welcome being side by side with your users.

There are many of us out here, coding as self-starters, founders, freelancers, remote workers, and small business owners. It isn't for everyone, and if you are happy or content with your full time job, then it's probably not for you. That's ok.

But for those of us who have found ways to make it work outside of what can feel like the soul-crushing environment of a typical full-time workplace, the devs building on their own, grinding out client work, doing remote year, making products - ask any of them, and you'll find that coding as a employee wasn't right for them, either.

I'd encourage you to read my post on the way I fell into this line of thought, but for me, I was coming from a job that I actually really liked: [http://davekiss.com/getting-started-with-passive- income/](http://davekiss.com/getting-started-with-passive-income/)

You don't need to code as an employee to code as a career. Be honest with yourself; are you an employee, or a founder?

</comment><comment><AUTHOR> How Software Companies Die \- Orson Scott Card

[https://www.cs.cmu.edu/~chuck/jokepg/joke_19970213_01.txt](https://www.cs.cmu.edu/~chuck/jokepg/joke_19970213_01.txt)

</comment><comment><USER21> Change your lifestyle temporarily, go heads down and pay off your debt in 12 months. Probably could.

Alternatively, there are plenty of places to work that won't make you feel like a small cog in a giant machine.

Self improvement comes from, improving your situation. No one will do it for you.

<comment><AUTHOR> This is my third try at improving my situation, each time the money has increased and is helping me pay that debt off. So I'm getting closer on that front, but I don't want the money. I want to be excited to wake up every morning and go build something amazing.

<comment><USER22> Money buys freedom. Save up a couple years of living expenses and you can go do what you want for a couple years. If you're prudent, this could also develop the skills that'll make sure your next job is both more fun and more lucrative than your past ones.

Actually, you don't even have to quit. Just knowing that you _can_ quit, if you're not happy, changes how you interact with your employer. Don't like what you're doing? Do something else, either there or at a different company.

<comment><AUTHOR> > Just knowing that you can quit, if you're not happy, changes how you > interact with your employer.

I think if I KNEW this, I'd have a significantly different perspective on things.

</comment></comment></comment></comment><comment><USER23> You call yourself "Old, Tired, and Bitter" but it actually sounds like this is your first, maybe second job out of college.

<comment><AUTHOR> Third. I've only been at it for 6 years now. I'm 27. I'll correct the title for you to be "Older, Tired, and Bitter"

<comment><USER23> Did you pick these companies to work for, or did they approach you?

<comment><AUTHOR> I picked all three. The first was a medium sized startup (90 employees, mostly sales, only 5 devs). The second was a small startup (15 employees, 5 devs). My current job is a huge hosting company with like 3000+ employees in my location.

<comment><USER23> There's something wrong with how you evaluate your potential employers, then. I understand how one can make the mistake that working at any startup would mean that it is going to be an exciting job. If you want to be excited about what you are working on, the fact that a company is a startup or a huge company isn't important; the question is always, what are they making, and are you excited about that?

<comment><AUTHOR> They're all making glorified crud apps, stuff that I could make solo. I'm not excited by it.

<comment><USER24> Well, you seem to work with web applications. So no wonder. In my opinion, in terms of fun, interest and challenge web programming ranks slightly above Cobol, for exactly the reasons you state.

You mentioned you wrote a game. Game programming might be something you like and not every place is a sweatshop, although you have to be discerning.

Embedded/low-level programming is cool too. I used to write router firmware, and I also worked on a sql engine for a time. Neither job had anything to do with "like" buttons or CRUD.

So maybe the issue boils down to equating "programming" with "web app".

<comment><USER15> >> Well, you seem to work with web applications. So no wonder. In my opinion, in terms of fun, interest and challenge web programming ranks slightly above Cobol, for exactly the reasons you state.

Hey. Lay off the COBOL, especially if you haven't actually done it (I don't know if you have).

I've done web dev for the last four years, since graduating. I now learn mainframe development, with COBOL and JCL (and also REXX recently). It's fun. There's a lot more actual, honest-to-god, programming to do in a mainframe job than there is in web development. At least you don't spend your every waking life trying to shake the angle brackets out of your eyes (XML, right?).

Most of my web dev work was in back-endy stuff btw, primarily C# and a little bit of RoR and Java. Which means 60% configuration, 40% actual coding and even then, the actual coding is implementing some framework interface. That sucks the life right out of "programming" (because it really isn't).

<comment><USER24> You are right, I shouldn't badmouth Cobol. I've never worked with it professionally but I did have to learn it in school. And let's face it, it's a good career move to learn it as there's going to be a "Cobol crunch" soon and the opportunity for relatively low-stress, high-paying jobs is good in that area.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Work is work. But you can learn to self motivate, and even learn to enjoy the boring bits. However if you think that it's out of your control, what you enjoy and what bores you, it can be hard to improve your enjoyment.

</comment><comment><USER26> My suggestion would be to move away from the idea that there's only "code for you" and "code for me" \- try to "code for us."

If you're passionate about something, there's bound to be a couple of companies that are working in that field. Find one that shares your values and code for them. It can still be frustrating, but you move forward every day because you care about what you're doing.

</comment><comment><USER27> I had a graduate degree and could barely make rent for more than a year before I finally got a job as a programmer.

At my lowest point, I used to pick up a large $5 dollar cheese pizza to go, a tomato and onion from a street vendor (for toppings on my pizza), and stretch 4 meals out of it.

You should be grateful you have the opportunities you have, and that you're able to work a job that would allow you to pay off your student loans so quickly.

As a programmer, you have one of the best jobs that exists. You have a low stress job and you make a lot of money. (The median programmer makes more than twice the median wage - 37 versus 17/hr - [http://www.bls.gov/oes/current/oes_nat.htm](http://www.bls.gov/oes/current/oes_nat.htm) ) - your financial freedom will come much more quickly to you than it will for most others.

You ought to do your best to learn to find meaning in your work and be grateful you have so much self-direction in your work when so many others don't.

</comment><comment><USER28> I actually quite enjoy my job. I still have side projects that I also enjoy, but my job is wonderful along with the company I work for.

Also, this stuff: "I didn't care how my code read, or if it was maintainable, or if it was DRY, or if it was tested, or how long it'd take me to write, or if features were separated into logical chunks"

Right at the beginning is where you lost me, because even when I was in grade school, I still made my code maintainable and separated into logical chunks because I had to read and maintain it whenever I got a chance to get back to it. My side projects are all built with these things in mind.

It is good that you have decided that coding isn't the right career for you, but I wonder what is? I would also be careful of making harsh public criticisms of your employer. It's easy to figure out where you work, and these are the types of concerns that your employer should be able to work with you to address.

Best of luck.

</comment><comment><USER6> My biggest problem with coding for an employer, is that they then own exclusive rights to the code. Essentially, you are solving a problem. If that problem is unique to the employer, then that is fine for them to own the code. But if the project involves writing a bunch of potentially reusable routines, such as what you might find in a third party library, it just seems awful that you can never solve those same problems again in the future (as more likely than not, you will end up typing in about the same code).

So it really seems like you are giving up a piece of your mind whenever you program for someone else. For an example of what I'm talking about, see XKCD 664.

<comment><USER12> Well, it's not like they pay you to write code for them right?

It is only fair that your are, in theory, not allowed to reuse the code who wrote for them at your next gig. And to be clear, we all do it. If you've implemented it once you can redo it in no time.

<comment><USER6> I agree that it is fair, it just kind of hurts a bit is all. Especially if you did something you are real proud of.

I wish there were more programming jobs that were similar to photography -- you get hired to do a shoot, the customer gets a copy, but you keep the copyrights.

</comment></comment></comment><comment><USER29> I agree that programming at work isn't as fun as it is when you're just hacking away on side projects. But there's also that satisfaction of learning your craft well.

</comment><comment><USER15> _I have NOT internalized the disciplinarian culture._

I think you have:

 _I 'm_ fortunate _to have had jobs since I graduated college._

Edit: I mean that it shouldn't be down to luck whether you have a job or not and how productive you can be in the limited time when you can be productive, in your life. It's rotten that not everyone can. We're doing human civilisation wrong, if it's down to luck whether you live a satisfying life doing fullfilling work, or spend your life in slavery.

</comment><comment><USER30> the entitlement is strong with this one

<comment><AUTHOR> Indeed it is. Haven't I accrued debt, worked hard, and earned the right to be in a job I should be happy at? I deserve that. So do you and so does every body else.

<comment><USER31> Happiness is not a right. This kind of thinking will perpetuate your misery.

<comment><USER14> It's enshrined in the American Constitution.

<comment><USER32> The Declaration of Independence declares a natural right to "life, liberty and the _pursuit_ of happiness[0]." Happiness itself is not enshrined as a right, certainly not by the Constitution[1].

[0] [http://www.founding.com/the_declaration_of_i/pageID.2423/def...](http://www.founding.com/the_declaration_of_i/pageID.2423/default.asp)

[1] [https://www.gpo.gov/fdsys/pkg/CDOC-110hdoc50/pdf/CDOC-110hdo...](https://www.gpo.gov/fdsys/pkg/CDOC-110hdoc50/pdf/CDOC-110hdoc50.pdf)

</comment></comment></comment></comment></comment><comment><USER33> He's essentially admitting two things:

1) I hate my job... but! 2) I do it because I need it

Ok. That's fine. Just shut-up if you need the job. No one needs to hear about your woes and whinings if you're conscionable about the contract you're entering in to.

It's downright childish if you don't reject/quit a job if you don't want it.

<comment><USER34> 3) make up your own interesting side projects that will benefit your manager, company,and customers, short term and long term. If you don't, you risk remaining as a permanent cog. You want to transform from a cog into planetary gear set.

</comment></comment><comment><USER35> Googled your name and found your Linkedin page. Rspace is getting pummeled by AWS and Azure offerings, never work for a company that is going down and has little or no innovation.

</comment><comment><USER36> He is not a programmer. He is a tester.

I'd love to see his CV.

</comment><comment><USER37> $65k in student loans to learn programming? The author is clearly an idiot. Programming can be learned from home for next to nothing, because you have all the tools you need there. It's not like you're a surgeon and you're working with expensive/complex equipment.

<comment><USER38> I graduated with a degree in mechanical engineering and decided to quit my job to learn programming at home. Took me a year to get to the point where I'm comfortable and know my way around.

However, just because I taught myself doesn't mean that it was free. I had a year of lost wages which is about 65K, so all in all it costed about the same amount for me.

<comment><USER37> He had 4 years of lost wages + $65k in debt. When you're in college, you don't work. So, again, he's in much worse situation than someone who learns programming at home in 1 year.

<comment><USER38> I went to college for 4 years as well, so again, you can say we were in the same boat: 4 years of lost wages + $65k in debt for him, 4 years of lost wages + $65k in lost wages for me

<comment><USER15> The difference is that you lost that money, but you don't owe it to anyone. Nobody can come over and take your stuff because you owe them that money.

And then there's the matter of a debt being an amount agreed upon by all stakeholders, whereas your "lost wages" are just a number you calculate in an arbitrary manner, which may or may not reflect reality. Maybe you did lose $65k by not working. Maybe if you hadn't gone to college you'd have been hit by a car and you'd have lost far more than that. Maybe you'd be unemployed. Who's to say?

Money is not money unless it's in your pocket (or bank account) or in an IOU.</comment></comment></comment></comment></comment>


Five Useful Security Tips for Web Developers - <AUTHOR> http://www.bilawal.co.uk/2011/02/five-useful-security-tips-for-web-developers/

<comment><USER2> You say frameworks avoid safety worries. As an example if you use Code Ignitor you have to use a library for authentication (or roll your own) and sometimes these libraries are not secure.

Even frameworks themselves can have security issues.

So don't have a blind faith using them.</comment>


Modern Frontend Developer in 2018 - <AUTHOR> https://medium.com/tech-tajawal/modern-frontend-developer-in-2018-4c2072fa2b9c <comment><USER2> I've been able to find courses on everything touched on here. One area that I haven't been able to find anything is how to design in 2018 for backend developers. Not nessarily picking the right colors but how to take a photoshop design and put it into a modern framework. Back in 2004 we sliced everything into tables and made the width 100% and used the image as a repeating background. We pick certain repeatable images and life was simple. How is this done in 2018?

<comment><USER3> I've had success using [https://zeplin.io/](https://zeplin.io/), which can generate styles from a psd really well. I've had some issues with inferring responsive behavior and other things that aren't so clearly defined in Zeplin. So there's still some back and forth with design but it takes away a lot of the ambiguity you would have from just looking at a psd.

</comment></comment><comment><USER4> This is brilliant! Thanks for sharing this.</comment>


Show HN: Replicated – Deploy your SaaS app on-prem using Docker - <AUTHOR> http://www.replicated.com <comment><AUTHOR> I'm one of the founders of Replicated, would love your thoughts on what we're building.

</comment><comment><USER2> Got excited to see Atlassian listed on the page. Didn't find that Atlassian actually uses "Replicated". Felt sad, because Jira, etc. are a bit of a pain to upgrade.

Am I missing something? Seems like an endorsement by Atlassian or working use case at first glance. Same goes, obviously, with Github and Palantir.

<comment><AUTHOR> Yea, so... before we had customers we had to show that important companies value on-prem as a deployment method. We're currently working with Code Climate, NPM, Travis CI to power their enterprise versions. This recent post from Travis gives some good insight as to how it works: [http://blog.travis- ci.com/2015-06-19-how-we-improved-travis-...](http://blog.travis- ci.com/2015-06-19-how-we-improved-travis-ci-installation/)

</comment></comment><comment><USER3> This will be such a lifesaver. On-prem is the #1 request we have from larger companies, and we've been offered a good amount of money for it. I always say no, but if it's as easy deploying to Heroku, it'll be a no brainer.

</comment><comment><USER4> When I landed on the homepage, I wondered, "how much do they really solve the on-prem problem." With respect to that, I thought the video was informative, and the value prop was really clear. I'd be interesting in hearing more about what else Travis had to do to be able to support this integration from their side.

P.S. Say hi if you're in the Startup Cincy Slack team. (Tim Metzner shared this post.)

</comment><comment><USER5> Sounds interesting. Curious about something — if my app relies on cloud services (Amazon S3, Google BigQuery, etc), does Replicated do anything around that? I'm guessing I might need to modify my app a bit to ensure that cloud services endpoints are stored in deploy configuration, and not baked into the code?

<comment><AUTHOR> We don't provide drop-in replacements for these services, however most have open source compatible alternatives. These are similar changes you would need to make if you were to switch IaaS providers & remove vendor lock-in.</comment></comment>


Is electrical engineering perspective? - <AUTHOR>

Hello. I want to know if electrical engineering is still perspective area. I mean hardvare+software development. <comment><USER2> I found while getting my computer engineering degree [graduated Dec/11] that [at least at my university - Dalhousie] EE students focus more on power systems and electronics while CE students do more programming and electronics:

CE's took more courses in C/C++, OOP, OS design/development, etc while EE's were taking courses on advanced electronic design, power systems, power distribution.

At my school if you want learn software and hardware development then CE is it, if you are interested in electricity/power and electronics then EE is what you want.

<comment><AUTHOR> I got it. But how about job offers? Where I can get a job if I am a good electrical engineer with good programming knowledge?</comment></comment>


RecapJS: Browser session record/replay without leaking user data - <AUTHOR> https://recapjs.com/ <comment><USER2> Since you seem to be using webcrypto, here is the obligatory mention of "browser crypto considered harmful": [https://www.nccgroup.trust/us/about- us/newsroom-and-events/b...](https://www.nccgroup.trust/us/about-us/newsroom- and-events/blog/2011/august/javascript-cryptography-considered-harmful/)

<comment><USER3> Thanks for pointing it out. We are indeed using wevcrypto to encrypt the data generated during the recording. This usecase, however, we'd argue is quite well suite for webcrypto.

The typical critique (including the one you linked to) referring to the presence of scripts from multiple untrusted soutces doesn't quite apply in this case because the encryption used isn't really meant to protect against such scripts. Any script active on the page already has access to all the information RecapJS is gathering (and eventually encrypting) so there is no need for RecapJS to worry about them.

The only time RecapJs handles sensitive data that needs to br protected from third party access is during replay/playback. In this case the threat is mitigated by either hosting the player (which is a static web application) in a closed off network in the case of offline replay or by loading an audited piece of js in case of remote full session storage.

<comment><USER2> Ah, ok. That makes sense. Thanks for the clarification.

</comment></comment></comment><comment><USER3> Thanks for sharing this. We had posted this as a "Show HN" a couple of weeks ago but it didn't get a lot of traction there. Happy to answer any questions!

</comment><comment><USER4> I can see this being useful in places where compliance is important (medical, finance etc.).

Is the blurring not reversible though? Even if lossy?

<comment><USER3> The pixelation is just a visual effect. When redaction is on, the text content/images etc are not captured at all. During replay/playback the place where the original content was is filled with randomly generated data whixh is then pixelated.

<comment><USER4> I see, pretty cool!

I noticed that when typing in the email box nothing happens in the recording. I assume that this is to hide the email address but it would be nice to have some sort of visual cue (may be asterisks, like passwords?), otherwise it looks broken.

<comment><USER3> Thanks for the feedback! Yes, the intent is to automatically prevent capture of personally identifiable information. The problem with asterisk though is that it still leaks the lengtg of the email address.

We are exploring other options with the right balance between minimizing information leak and usability.

<comment><USER4> Fair point about the length leak.

Good luck with this.

</comment></comment></comment></comment></comment><comment><USER5> Neat! Are you storing the data in localstorage?

<comment><USER3> In the case of offline recording the data is stored in indexedDB. Localstorage limits are typically too small to store a reasonably sized session recording.

<comment><USER5> How much data is stored on the user's disk per session?

<comment><USER3> The actual amount in bytes will vary with the complexity of the app, the amount of activity in the session and the length of history the recorder is configured to store.

Typically this will be a few MBs for the default 10 minutes of history.</comment></comment></comment></comment>


Making daylight saving time permanent could reduce crime - <AUTHOR> http://www.washingtonpost.com/news/wonkblog/wp/2015/10/29/the-case-for-year-round-daylight-saving-time-just-got-billions-of-dollars-stronger/ <comment><USER2> I wonder how long it would be before people adjust to this, and start going to bed later, getting up later, and leaving work later.

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


Failory – Learn from other entrepreneur's mistakes - <AUTHOR> http://failory.com/index.html <comment><USER2> Websites like this inspire me to start my business. I also recommend you Collapsed.co

</comment><comment><USER3> Good Job! It really help me with my new start up.

</comment><comment><USER4> The Indie Hackers for failures haha!

</comment><comment><USER5> Bookmarked and suscribed to your email newsletter. Nice job!

</comment><comment><USER6> Nice!</comment>


Decentrailized Autonomous Organizations as the Killer App of the Blockchain - <AUTHOR> http://www.ryanyosua.me/decentrailized-autonomous-organizations-as-the-killer-app-of-the-blockchain/ <comment><USER2> Does not address what happened in practice with The DAO: all promises of immutability were broken as soon as the whales were in danger of losing money.</comment>


Steve Krug on the least you can do about usability - <AUTHOR> http://network.businessofsoftware.org/video/steve-krug-on-the-least-you <comment><USER2> After seeing this link I realized that it's time to read the book.</comment>


Alibaba's Oceanbase tops TPC database ranking - mcgroin-holden http://www.tpc.org/tpcc/results/tpcc_results.asp <comment> mcgroin-holden Is this a big deal?

<comment><AUTHOR> Price wise, probably.</comment></comment>


We're not the "good guys": American drone warfare is terrorizing the Middle East - <AUTHOR> http://www.salon.com/2016/04/23/were_not_the_good_guys_partner/ <comment><USER2> I don't think anyone would argue that at least some of these individuals who are targeted are really bad people who are trying to do orders of magnitude more damage other populations.

So here's the key question: How to you best neutralize the threat of that person? The US has settled on killing them with drones as the "best" solution and its leaders I think truly believe that this minimizes collateral damage. Is there a better course of action besides just letting these people work toward their horrific goals? I think that history has proven that you can't just leave people like this alone and expect them to chill out, so what do you do?

<comment><USER3> > So here's the key question: How to you best neutralize the threat of that > person?

Honest question: has assassination _ever_ actually been effective at effecting the political change the assassin wants?

It's probably easier now to assassinate someone than it ever has been in human history, but the actual number doesn't seem higher per capita (maybe it is, feel free to correct me on that).

<comment><USER4> 1\. The goal of US drone assassinations is not to _effect_ political change but to keep the status quo. That's a different question than one you asked.

2\. On a more general level, your question can be rephrased as 'has violence ever been effective at making a (political) difference'. The answer to that is - absolutely. It has actually been the _most_ effective strategy at effecting change throughout history.

<comment><USER3> 1) Fair point

2) This is not a valid generalization and represents a leap of logic. I was talking specifically of assassinations.

<comment><USER4> Ok - re #2 - look at what % of political movements succeeded despite most of their leaders being killed. I'd say that since majority of political movements succeed with _live_ leaders, it must mean that the ones whose leaders were killed in time, did not succeed.

It's like the WW2 story about looking for holes in returning fighter planes :)

</comment></comment></comment></comment></comment><comment><USER5> I find that pieces like this one skewer the debate. The debate should be about war and the use of force, not drones. What's the alternative to drones? It's either boots on the ground, or not waging war. I think a lot of people, including myself, would prefer the latter. But if we're choosing between boots on the grounds, and drones, we should look at the facts. I don't have them at hand, but I have a strong suspicion that drones are the better option if you care for the people, both American and native. If you abolish the drones but continue the war, that's not a particularly desirable result. So let's focus on the negatives of war in general, not the negatives of a particularly effective technology that it can be waged with.

I think the aspect of operators' mental health which the article brought up was very important, though. These people are soliders, but are they treated as such? Why are they not given more support? Why are they not selected more carefully and given better psychological training beforehand? It's a budget question, of course, but it still desperately needs to be addressed.

</comment><comment><USER3> I've made the claim in the past on, for example, my FB feed that American drone strikes are literally terrorism and should be treated no differently than (for example) the Brussels attacks. This has resulted in more than a few hurt feelings but honestly I cannot see a difference. I am American.

<comment><USER6> You can't see any difference between an attack in an extremely public place that indiscriminately targets civilians in an effort to kill as many people as possible and targeted attacks on specific targets with sometimes unfortunate and unavoidable collateral damage?

<comment> the-dude I do not see why intention matters.

<comment><USER6> A scientist attempting to find a cure for cancer accidentally mixes up some chemicals and causes a huge explosion which results in 1000 deaths. Alternately, a terrorist sets off a bomb in a public place killing 1000 people.

Should they each be charged with the same crime and receive the same punishment?

<comment><USER7> Your scientist had no intent on killing anyone. Drone strikes are intended to kill. It's an unapt comparison for a discussion about two groups deliberately killing people. One classified as "terrorism" and the other classified as "war as usual/collateral damage" when they kill innocent people.

<comment><USER6> I was responding to a comment stating "I don't see why intention matters"

</comment></comment></comment></comment></comment></comment><comment><USER8> I'd read that ISIS beheading videos we're for recruiting (besides proving that they'll kill if you don't pay the ransom).

But I wondered why anyone would want to join an organization that does that.

I guess having your wedding hellfire-missiled might be a motivator.

</comment><comment><USER9> Ah, a political thread. Who wants to place bets on how fast this gets flagged off the front page? :P

EDIT: And there it goes.

<comment><USER10> This add nothings to HN.

</comment></comment><comment><USER11> To be fair, this is an international war. It's not the U.S. that's fighting ISIL, it's NATO. I doubt the drone strikes help things, but when you look at what ISIL does it would be equally wrong to stand by and let it happen.

There are no easy answers on what should be done in conflicts like these. I'm pretty sure drones are the wrong answer, but I don't know what a better one would be. Maybe as a species we just haven't developed the right ethical code to avoid getting into these horrible messes, because in one form or another they keep returning. It's always war somewhere.

</comment><comment><USER12> "Imagine If This Was Happening to Us"

<comment><USER13> If a foreign power blew up my wedding with a drone strike because they thought someone there was on their watch list (correctly or not) I'd be likely to take up arms against them.

I don't understand how anyone can think this isn't going to happen, wouldn't matter that I'm an atheist not religious or anything else either.

Shit is all fucked up, We should never have gone into Iraq the second time and the case for Afghanistan while stronger was still debatable.

It's fucking absurd to the point of tragedy.

</comment></comment><comment><USER14> I have a really hard time feeling bad for people that join the military that get upset that they have to kill people.

<comment><USER13> There is a great deal of difference between joining the military because you want a career and to defend your country (for example joining the Japanese Defence Force) and joining other militaries.

It is perhaps naive to join the US or UK military and not expect to deployed to fight in often pointless wars with no clear strategic goals beyond "something must be done, this is something ergo we must do it".

That said the entire PR effort of both militaries is around serving your country and been the "good guy", it's not until you are inside the factory you see how the sausage is made, remember most of us aren't 18-19 year old kids often from a poor background.

Lots of people do things I think are strange (going to a cold stone building to worship a being who most likely doesn't exist, blowing yourself up because a man who claims a better of understanding of being who probably doesn't exist than you says so etc etc).

</comment></comment><comment><USER15> Islamic militants coming from Russia are terrorizing the Middle East. On the one hand, Putin is pretending to fight ISIS in Syria. On the other hand, he is shaking hands with ISIS sympathizer Kadyrov.

<comment><USER16> Maybe you were trying to discuss other geo-politikal issues but I don't see this as relating to the USA's drone warware at hand.

</comment></comment><comment><USER17> Dumb political topic, inflammatory headline, link to Salon. (Though I suppose the third implies the first two.)

I know the right answer is "flag and move on", which I mostly do with these types of articles, but jeez. This has been happening a lot recently. The HN front page has seriously gotten a lot worse just over the past few months.</comment>