Ask HN: Is there a place for A/B testing with users paid to use your product? - <AUTHOR> <comment><AUTHOR> Context: I work at a company that makes a CRM product. The people that use our tool day-to-day are employees of our clients, and so the marketing stage is over: their employer bought the product, and now they are paid to use it.

What I'm wondering is, is there a role for and a way of using A/B testing to improve your users' experience, and to make it a better product? Most resources I've encountered on A/B testing are about increasing conversion rates, click-through, etc. I'm interested in how to use user data from users who _have to_ use your product, to improve their experience.</comment>


Europe? USA? I Can't Decide - <AUTHOR> http://english.martinvarsavsky.net/general/europe-usa-i-cant-decide.html

<comment><USER2> As far as I can tell this post boils down to something like:

 _I split my time between Paris, Berlin, Madrid, NYC, the Hamptons, Miami, London, and sailing the Mediterranean. I mostly alternate between various of my seven homes in those places (we don 't like hotels, hence the need to have a lot of homes). How to choose where to live? Everything has its charm! Fortunately, I don't have to choose because I am quite well off!_

Which is fine, I guess, but what exactly am I supposed to take away from it? Congrats?

edit: Come to think of it, it's quite possible his blog is only intended for people who know him or his family, in which case there doesn't really have to be some take-away message. So maybe my complaint is more with how it got voted onto the HN front page than with the author of the post.

</comment><comment><USER3> All the money and privilege in the world, success beyond belief, and still he's min-maxing like the plebs. I guess it's human nature to forever upgrade one's standards.

</comment><comment><USER4> First world problems

<comment><USER5> No shit... "and sailing the wonderful Mediterranean Sea."</comment></comment>


What's new in PostgreSQL 11: built-in web search - <AUTHOR> https://habrahabr.info/development/postgresql/1310-whats-new-in-postgresql-11-built-in-web-search.html <comment><USER2> tl;dr a function that parses the common search operators into a tsquery built into the DBMS.

<comment><USER3> In fact I find _websearch_ not the best word to describe this function. Maybe a better name would mention this as more "human" query? Or a "simpler" query?</comment></comment>


5 Things to Know About Machine Learning - <AUTHOR> https://www.kdnuggets.com/2018/03/5-things-know-about-machine-learning.html <comment><USER2> Highly recommended is Paper by Pedro Domingos - "A few things to know about machine learning"</comment>


Pieceable is acquired by Facebook - <AUTHOR> https://www.pieceable.com/facebook

<comment><USER2> I'm actually really happy when acquisitions go down like this. That is, when they keep their product running long enough to make the transition easy (i.e., _not_ Meebo) and open source the product.

Particularly that last piece because it opens up the market to be commoditized. The secret sauce of getting a web-based viewer of a remote iPhone Simulator session is now available for anyone. And now a bunch of competing services will likely pop up (because all the hard work is done) and that means a price war. The consumers of these services are ultimately the big winner.

I hope more deals like this happen.

</comment><comment><USER3> I feel like this acquisition is related to Facebook App Center (launched last week) somehow. They didn't have links or screenshots for iPhone apps, but they do for Android apps. I was curious why they did not have a screenshot area/App Store link field for iPhone apps.

</comment><comment><USER4> _"Facebook is not acquiring the company, technology, or customer data."_

A genuine question: Since this is essentially a talent acquisition, why doesn't someone else continue running the product? or perhaps sell it off to another company?

<comment><USER5> That's always an option, like we saw with Airbrake being acquired from Thoughtbot by Exceptional. ([http://robots.thoughtbot.com/post/17212734809/airbrake- acqui...](http://robots.thoughtbot.com/post/17212734809/airbrake-acquired-by- exceptional)) However, this really only works if you can find someone you trust enough to uphold the same level of quality in the product, branding, and customer service, since any future failure will still reflect negatively on the original developers for some time. I think open sourcing the underlying technology is a great way to allow other folks to pick up where the company left off. (We also saw this recently with Copycopter, which was from the same company as Airbrake. [http://robots.thoughtbot.com/post/19388751626/copycopter- is-...](http://robots.thoughtbot.com/post/19388751626/copycopter-is-now-open- source))

</comment></comment><comment><USER6> Really happy for them. We can't wait for them to open source and integrate their technology to Delight (<http://delight.io>). It's going to take mobile usability testing to a new level.

<comment><USER7> Link doesn't work?

<comment><USER6> It works for me. What error message did you get? Could you try again? <http://www.delight.io>

</comment></comment></comment><comment><USER8> Congrats Fred and Co - hope this was the exit you wanted and deserved.

<comment><USER7> Agreed - congrats guys!

And Alex, just checked out Bitgym - great idea. Will be trying it next time I'm on the treadmill!

</comment></comment><comment><USER9> I could have sworn that during the Instagram acquisition that Facebook wasn't going to "make a habit" out of acquisitions.

<comment><USER10> I think he may have meant not making a habit out of $1bn acquisitions of companies with lots of users.

 _"This is an important milestone for Facebook because it's the first time we've ever acquired a product and company with so many users. We don't plan on doing many more of these, if any at all"_ [1]

[1] <http://www.facebook.com/zuck/posts/10100318398827991>

</comment></comment><comment><USER11> Great work Fred! Happy to be a client and a supporter of what you guys have pulled off. Good stuff!

</comment><comment><USER12> Congrats to the team. Would have been even sweeter if it would have been pre- Faceplant IPO!

</comment><comment><USER13> Hopefully this will increase the quality of their mobile apps.</comment>


Ask HN: 4th member of startup. I missed out on the H1B lottery. Options? - <AUTHOR>

I'm 23. I joined as the fourth member of an extremely early stage startup (post-angel, pre-series). I have been here a year, fully responsible for the company's entire Android footprint, as well as your average startup first-five product design and general engineering responsibilities.
I am on the dregs of my post-graduation OPT. I find it more than mildly frustrating and unreasonable that a willingly tax-paying, non-criminal person trying to innovate in a way that, if it has positive benefits for anyone, will benefit the US economy, is going to be thrown out of the country with little in his power. But that's a separate rant.
Given that a) I believe the fields I'm interested in have the best opportunities in US, and I want to pursue my career here and b) my current employer is willing to go to some lengths to help me out within reason, but does not have bottomless funds to do so, What are my best options in your opinions? a) Apply for H1B again next year, figure some productive way to pass time outside US in the interim (this includes grad school, working for MNCs such as MS or Google to hedge H1B bets, etc) b) Start a company in my home-country, and try to use the L1 visa to return here and then change status as needed c) Get married to a US citizen (used to be accompanied with "jk") d) Other suggestions? <comment><USER2> Three ideas that haven't come up yet:

\- Most realistic: Work with your Bay Area startup from your home country. I don't know specifics about Indian nationals, but many people work remotely with a team in the US, and then travel to the US on visa waiver (often up to 90 days) or tourist visa (up to 6 months) to sync with the team. You will likely be a foreign contractor, and the startup will pay salary to your Indian bank account. You will likely not owe income tax to the US because the service is technically performed overseas, but you'll have to pay tax to India.

\- Invite your team to work overseas together: Stripe prototyped the service in Buenos Aires. Buffer traveled to Hong Kong and Israel. We spent our first months in Thailand. Going overseas for a limited period of time can be a great way to bootstrap at a lower cost. Especially if your startup is very early stage (we are too).

\- Open a business entity in home country, and make it a liaison office or subsidiary (or whatever requires the least amount of logistics) of your Bay Area startup.

I'm not a lawyer. But I'm bootstrapping from Seoul for some time and have seen multiple teams that work across locations. Good luck!

</comment><comment><USER3> You don't say where you're from or where you're based but let's assume the bay area. If I were very happy with the company, I'd set up shop in Vancouver and/or Rosarito (depending on your weather preference/season), work remotely and try again next year.

On the other hand, if you (or the company) is ready to part ways, I'd do the same. ;)

<comment><AUTHOR> I am an Indian national, based in the Bay Area for now, and until my OPT expires in October 2013.

Thanks for the ideas! I really have no concerns with weather having gone to school in New England, so that is an option. However, from my initial research into immigrating to Canada, it seems the requirements for available options are out of my scope (own >30% share of company, have an offer letter from a Canadian employer, significant amount of investment in _my_ company, etc) in the short term. If I'm mistaken, I would love to have a conversation with you offline to find out more!

Yes, parting ways is always an option, but regardless, I want to pursue my career opportunities in this part of the world, so the plan needs to result in some way for me to be able to legally come back here.

<comment><USER4> I wish you luck but just in case it doesn't go through, come back home. Make it better :-)

</comment></comment></comment><comment><USER5> The diversity visa lottery is worth a shot. The odds of winning are worse than getting hit by lightning, unfortunately.

In the same vein as the L1, you could try the B1. For your purposes, both of these look kind of dodgy to me, though.

<comment><USER6> Diversity visa lottery is for only national of under-represented. So I assume it is not for people from countries such as China or India.

</comment></comment><comment><USER7> I'm a Canadian citizen applying to the best US tech jobs and I feel your pain man. I'm having visa troubles too and it really sucks, you feel helpless. That's why so many people are working on immigration reform.</comment>


The Zen of Trading - <AUTHOR> http://www.ritholtz.com/blog/2010/05/the-zen-of-trading-2/ <comment><USER2> As someone who has spent the past eight years studying markets and trading, I can say that these are not bad heuristics. Nonetheless, I wouldn't recommend them to a new trader. As many traders are fond of saying, you must pay your tuition in money lost and sometimes emotionally brutal events like "blowing up." (Paying tuition is a popular phrase inspired by Edwin Lefèvre's _Reminiscences of a Stock Operator._ )

More than most professions, trading requires you to fundamentally alter the way you respond to stimuli. We have some natural biases that make us pretty unsuited to trading. Traders who are successful are the ones who remodelled their brain, a job that often starts with an intellectual sledge hammer. Studying a list of proverbs, no matter how good they might be, will not prove profitable. They might act as a good scaffold to lean on while "paying your tuition," but I am skeptical.

(This argument can be expanded to most proverb-style writings. In fact, I was going to write this in response to one of the 37,000 threads regarding _ReWork_ during that mania.)

<comment><USER3> I am curious, how does one remodel his or her brain. Or what type of brain remodelling do you need?

<comment><USER2> You almost have to nurture a case of depersonalization disorder. If you know any successful traders, you probably know what I am talking about. They don't seem to experience or interpret things like everyone else.

To be playfully ironic, I'll list what I think are the two biggest issues:

1) Completely demolish the instinct to extrapolate linearly.

2) Train yourself to have no attachment to your expectations. (Coincidentally, this is #2 on the referenced webpage's list.)

This is certainly not exclusive to trading (e.g. scientists should operate this way) but I think it's harder to practice in trading. Money makes consequences _very_ concrete. (Edit:) If a scientist conducts an experiment that fails to find anything significant, it's still "good science (TM)." If a trader fails to be profitable, he has failed at trading.

</comment></comment></comment><comment><USER4> If you trade commodity futures, ask yourself: "Do I know more than the farmer? Do I know more than Nestle?" When you trade stocks, ask yourself: "Do I know more than Fidelity's advisers? Do I know more than Goldman's quantitative analysts? Do I know more than the insiders?". It's 50/50 up/down minus the spread, minus the fees.

<comment><USER5> I do not believe this is correct.

Farmers are usually the last to know about fluctuations of commodity prices. Commodities are driven much more by macroeconomic trends that farmers cannot be expected to bother with. And as for stocks and a fidelity advisor. Oh man, that is also very very wrong. Stock picking is about seeing trends before others do and being gone before those trends end. The former is a relatively common trait, the latter is rarely intuitive and pretty rare.

<comment><USER6> I love you; you pay my rent.

</comment></comment></comment><comment><USER7> It was a good article but not great. Didn't really have anything to do with Zen or it's application to trading.

<comment><USER8> Right on!

The part I liked the most is the Michael Jordan quote. I didn't know MJ so statistical, and now I respect him a lot more.

A trader should do the same. A simple system of logging trading decisions like MJ did will greatly help a trader improve.

I always wish there are some web app that logs what those pundits (stocks or whatever) said, and keep a tab of their accuracy.

<comment><USER2> Some of the more popular pundits are visible enough that independent researchers compile comparative reports on them versus the market in general. Their are many on the (annoyingly loud) lightning rod that is Jim Cramer (e.g. <http://www.scribd.com/doc/15672032/Investing-in-Mad-Money>). Other people have much more precise records for comparison: [http://finance.yahoo.com/q/ta?s=BRK-A&t=my&l=on&...](http://finance.yahoo.com/q/ta?s=BRK-A&t=my&l=on&z=m&q=l&p=&a=&c=SPY)

In a similar vein, WSJ had a very clever "dartboard contest" for years. (<http://www.investorhome.com/darts.htm>) Unfortunately, it requires a subscription to see the results. You might find it interesting if you have one.

<comment><USER8> Thanks for the links. For your yahoo link, what does "BRK-A" vs "SPY" mean?

<comment><USER2> Berkshire Hathaway class A stocks, i.e., Warren Buffet's bets.

SPY = S&P500 Index ETF. That was actually a minor error on my part. I meant to link you to a comparison of BRK-A versus the SP500 index, not an trust that tries to mirror the SP500 index. Thankfully, for comparative purposes, they are virtually identical.</comment></comment></comment></comment></comment>


Skype for Linux 2.1 Beta - <AUTHOR> http://share.skype.com/sites/linux/2009/08/skype_for_linux_21_beta.html

<comment><USER2> Pulseaudio support makes this a worthwhile upgrade for me. Now I can make a call while using Flash audio.

</comment><comment><USER3> Seems to work fine, I've been using it for a couple of days.

Arch x64 users can grab it from AUR: <http://aur.archlinux.org/packages.php?ID=7914>

</comment><comment><USER4> Now if only I could get my mic to work with Linux.</comment>


A Romanian campus computer lab pentested the world and helped protect it (2018) - <AUTHOR> https://arstechnica.com/features/2018/08/the-secret-history-of-ed011-the-obscure-computer-lab-that-hacked-the-world/ <comment><USER2> Funny, I too was a freshman student there in 1993, and I used the ED011 room to get my first taste of internet. I didn't know about web pages or there were very few back then but I used Gopher, and I would simply try to reach as far as I could around the world. I learned shell commands by looking over the shoulder to the guys next to me and copying what they were doing. I didn't get to use the 286 stations, just the DEC terminals. 4MB RAM seemed like a supercomputer to me, after first learning programming with a Romanian Sinclair Spectrum clone which had 16KB ROM and 48KB RAM.

Those were the days, when you had to load software from cassette tapes and even the slightest movement could make the computer reboot (but that was 4 years earlier, when I was getting into 9th grade).

<comment><USER3> I think I caught the dying days of ED011. I was an Automatica freshman in 1999, when the lab and the die-hards populating it still looked like magic for outsiders like myself, but by 2000 or early 2001 all the text-only terminals had been replaced by 486 computers (I think), and the magic was gone.

The spirit of it still lived for a short while in the faculty's dorms, which had freshly been fitted with Internet connections, and it was cool to see all those network cables hanging outside of the dorm buildings while knowing that because of those cables we had access to Audiogalaxy and to playing AtomicBomberman with our colleagues from two floors bellow us. Lots of the students that helped install and set-up those cables and the dorms' network- systems ended up as key people at various ISPs.

</comment></comment><comment><USER4> I remember in the 00's a company I was working for was trying to recruit talent to Romania.. they were SO good! I remember that a DBA in Romania would cost the same as in the UK, and they would work miracles. I also remember they had 2x optic fiber networks, one underground and one from the telephone/uitility poles.

I am not surprised for this. At some point Romania was the DataCenter for many large companies in Europe.

If only the corruption had gone away, Romania could have been a 'mini European silicon valley'.

<comment><USER5> On average the smartest developers I've worked with from Europe have all come from that neck of the woods, I'm in the UK and our best are the equal of their best but their average is better.

They often write better English than English developers as well.

I say that as an average developer myself.

I think it's a cultural thing combined with rigorous universities and a strong work ethic.

<comment><USER6> as someone who is from that neck of woods I can tell you that the people you interact with are probably not your typical developers from there.

as with everything in life there are people that are really good at what they do and also there are people that are not so good.

i personally don't care where you're from when I'm working with you. what you know and what you can do is what I care about.

<comment><USER5> It absolutely could be selection bias.

That said I still hold their English was better than the average English person I've worked with generally (not just Developers).

<comment><USER7> I've always found Europeans seem more inclined to generalize by country at the minute level than people in North America. Of course in an endearing sort of way, not to be mean.

Talent is talent, it can come from anywhere but tends to congregate in certian places. Usually because talent attracts other talent. Not merely just existing opportunity/attributes of the area.

</comment></comment></comment></comment></comment><comment><USER8> Inspiring! As a middle schooler, I was given free non-destructive reign in my tech class to do whatever I wanted. From that, I learned so much- I set up a Beowulf cluster out of old desktops, scavenged RAM from a pile of unused desktops to get the workstation I found up to speed, and did so much more. [I also mined BTC _at school_ , but I lost the wallet :( ] As one of those people that will do ridiculous things out of intellectual curiosity, it was a huge boon to me. Similar to Lari, I broke my share of stuff, and learned a _lot_ in the process of fixing it.

It is from those days, six years ago, that my passion for technology truly blossomed, and I've been so much better for it.

<comment><USER9> I definitely think that breaking and fixing stuff, or just fixing broken stuff, is vital to understanding any field where "stuff" is involved. Doctoring and nursing are both apprenticeships in part so doctors and nurses can learn how to fix broken people in a real setting, and we should do something more like that in the computer field so the kids who didn't grow up with their own systems they could break and fix can get the experience they missed.

</comment></comment><comment><USER10> Yes, those were the days. I was there with Lari for a couple of years. The article is accurate but does not mention the hortible smells in ed 011, especially after 2-3 days of some of us being there non stop, no showers included.

Unfortunately the article also hypes up the value and impact of "hacking".

There was no rocket science nor much valuable to learn after hacking the 20th server with the same old tired exploits. Plus most stuff was easy then.

This is why after the first 6-12 months of 3am hacking excitement, most of us moved on to learning difficult fundamental things such as algorithms, compilers, complexity, threading, AI and many others while others would still be in ED011 years later "hacking" away ... without really making progress.

If you are thinking of pursuing CS as a major, certainly hack away in highschool and early on in collegebut eventually don t forget to go for the difficult fundamental things.

Interestingly, Lari was not a CS student and ED 011 was his place of connection with computing ...</comment>


Verizon 'might look at' buying Yahoo - <AUTHOR> https://www.washingtonpost.com/news/the-switch/wp/2015/12/07/verizon-its-early-but-we-might-look-at-buying-yahoo/ <comment><USER2> Here is my prediction if Verizon does buy Yahoo... all mobile traffic to Yahoo and Yahoo owned properties will not count against your monthly data cap. This sets up yet another streaming service(s) that Verizon can make money with ads and/or subscriptions with. Since Verizon also provides DSL and Fios, this also might incentivise Verizon to implement data-caps for those services as well; with the exception of course for Yahoo content.

T-Moble started the trend for free traffic for certain services, but Verizon will copy the idea and bend it for their benefit.

<comment><USER3> Isn't that against the basic idea of Net Neutrality? Is that even legal?

<comment><USER4> Yes. No. Does our (U.S.) government actually give two cares? No.

<comment><USER5> No - they aren't gimping specific competitors or doing anything to filter data over public internet - they are offering a new tier of service - just like you have IPTV as a separate service from public internet.

And why should the government care ? Who is getting hurt here ? Not to mention there are multiple competing entities in mobile space.

We have something similar arround here with 0.facebook.com where you get free access to mobile FB version over 3G even on prepaid cards - it's popular with younger people - why should this be illegal ?

<comment><USER6> There are many, many many content providers and only a relative few ISPs. It would be pretty easy for ISP's to coordinate or even just act independently and abuse their oligopoly status and extort money from content providers who don't have the same leverage they do.

<comment><USER5> But that's not what's happening here is it ?

<comment><USER4> Remains to be seen, right?

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Shocking coincidence: "Marissa Mayer's severance package could reach $110 million [upon sale of the company]."[1]

And right when the press is dragging her tenure through the mud.

[1] [http://money.cnn.com/2015/12/07/technology/marissa-mayer- sev...](http://money.cnn.com/2015/12/07/technology/marissa-mayer-severance- package/)

<comment><USER8> Well the press has been covering her disappointing tenure basically throughout 2015. Everything from a slew of VPs/C-levels leaving (including those she hand picked) to increased turmoil between managers and employees to product decisions that didn't result in noticeable ROI.

</comment></comment><comment><USER9> Seems surprising to me that any company would make a pseudo-non-announcement like this. What would they have to gain by acknowledging rumors or speculating like this?

<comment><USER10> Would announcing this not increase the value of Yahoo!, which would in turn increase the cost Verizon would have to pay? Doesn't seem very rational to comment on the rumours unless they have no intention to buy.

<comment><USER11> Not significantly more than waiting to announce. This is because of SEC rules that require anyone intending to buy more than 5% of a publicly traded company to publicly announce with some time period before actually purchasing shares. These rules were intended to prevent the pervasive private equity pump and dump schemes of the 90's by making it harder to take a company private.

These rules are also pretty heavily blamed for our current problem of outsized CEO compensation because CEOs now rarely have to worry about hostile takeovers.

</comment></comment></comment><comment><USER12> The wire-management companies are racing to become content companies before their wire-management business becomes totally commoditized by net neutrality, content companies (Google), and municipalities (municipal fiber programs are gaining steam).

Verizon essentially ended their FiOS buildout once Ivan Seidenberg retired, in favor of putting all their investment into wireless. Why? Because they saw the writing on the wall: wires and fiber are infrastructure, and infrastructure always becomes a commodity.

</comment><comment><USER13> What would Verizon acquiring Yahoo _!_ mean for Mozilla? Given Verizon's history of user tracking, that would be an awkward partnership.

<comment><USER14> Indeed. I think Yahoo is already a liability to the Mozilla brand. DDG should just become the default for search. That move would at least create goodwill for Mozilla.

<comment><USER13> I assume DDG does not have $300M in the bank to pay Mozilla for year one, but perhaps DDG could scale that big with Firefox traffic? I prefer DDG's privacy, UI, _and_ search results over Google, so Firefox users might conceivably be less likely to dump DDG than they were Yahoo _!_.

</comment></comment></comment><comment><USER15> If the new Engadget is any indication of Verizon's vision for these content companies, I think we can safely say that Yahoo has not seen the worst of it yet.

<comment><USER6> Verizon hasn't really touched the day to day operations at AOL very much yet outside of the ads groups. They've been pretty hands-off so far.

</comment></comment><comment><USER16> Reminds me of this fiasco:

[http://ryanspahn.com/my-google-NDA-experience.html](http://ryanspahn.com/my- google-NDA-experience.html)

[https://news.ycombinator.com/threads?id=LargeCompanies](https://news.ycombinator.com/threads?id=LargeCompanies) (the first comments are not hard to find)

<comment><USER17> You keep bringing this up: [https://news.ycombinator.com/item?id=10497114](https://news.ycombinator.com/item?id=10497114) \-- do you have some kind of axe to grind here?

<comment><USER16> Parent was talking about acquisitions. There is a reason for the "LargeCompanies" HN account name, and the first comments from that account is not difficult to find.

<comment><USER17> You said that already. I'm wondering why the name or comments from a specific user is so important to you. Certainly many others on HN have discussed acquisitions (a search by comment or story gives tons of results). The fact that you repeatedly single out a specific user seems a bit "stalkish".

</comment></comment></comment></comment><comment><USER18> Looks like this is the outcome of the 5 day long bard meeting. They got a "maybe" from Verizon and promised Mayer $110m so that she tries hard to close.</comment>


WordPress dev: Apple wouldn't allow updates to app without in-app purchase - <AUTHOR> https://www.businessinsider.com/apple-pressures-wordpress-add-in-app-purchases-30-percent-fee-2020-8 <comment><AUTHOR> "While Mullenweg says there technically was a roundabout way for an iOS [user] to find out that WordPress has paid tiers (they could find it buried in support pages, or by navigating to WordPress's site from a preview of their own webpage), he says that Apple rejected his offer to block iOS users from seeing the offending pages."

</comment><comment><USER2> That's harsh to say the least. Wordpress only wants to give purchase options on their website, outside of the apps. Apple is forcing them to adapt their app. Unlike Epic Games' case, where Apple is probably right, here they have got it wrong.</comment>


Vanish - data unreadable after author sets time limit - <AUTHOR> http://news.bbc.co.uk/1/hi/technology/8197449.stm

<comment><USER2> Wow that's one bizaare claim in the article "Emails, Facebook messages, and Google Docs can all be set to disappear into thin air". There is not the slightest possibility that Facebook or Google are going to enable this as a feature. Email is conceivable, but only if the recipient has an email client that is enabled for this kind of cryptography. Typically poor BBC technology journalism.

</comment><comment><USER3> People just don't grok cryptography. Once you decrypt the thing (to READ it) it can be copied, decrypted. Game over.</comment>


Failure Rates in Introductory Programming (2007) [pdf] - <AUTHOR> http://users-cs.au.dk/mic/publications/journal/25--bulletin2007.pdf <comment><USER2> While interesting, I think an equally relevant question is retention rates.

When I was taking my BS the freshman class was packed. While the failure rate was probably on par with this report, many more of the students dropped CS not because of grades and I never saw them again.

Whether it was out of lack of interest or because it wasn't what they through it was (all I wanted to do was build a cooler Halo game) would have been interesting to know.

The effect was even more pronounced after Sophomore year. I suspect Data Structures and Algorithms, which I loved, but could be difficult to digest and may have disillusioned people with that CS or SE actually was.

<comment><USER3> There was a notorious course in my graduate program on Image Synthesis taught by seasoned professionals who really knew what they were talking about. And from the outside, it had really high pass rates, too.

Student interest was high, so when I enrolled in the course, we were around 25 students. By the mid-term it became obvious that most of us were interested, but couldn't put in the required 200% effort (compared to the credits we would receive).

Many (including me) dropped the course, and in the end, I think around 10 people sat the final - who did of course pass, since they were selected that way throughout the year.

<comment><USER4>
      from the outside, it had really high pass rates, too.
      [...] Many (including me) dropped the course,

The survey in the article actually divides students into four groups for this reason. They count those dropping the course; those not attending the exam; those attending the exam and failing; and those attending the exam and passing.

<comment><USER3> Which is also why I'm not sure that picking CS1 was a good choice for study.

Surely failing CS1 is highly correlated with dropping out of a CS degree completely - or rather, it would be interesting to see if indeed failing CS1 was anticorrelated with failing other first-year CS courses.

</comment></comment></comment></comment><comment><USER5> Having had a... scenic, shall we say, academic tenure, I can say that programming is not really that hard compared to some other topics. Second year biochem tends to kill chemists. My inability to grasp differential equations in my mechanics class (physics) pissed me off so much that I accidentally got a math degree instead of a CS degree (had to go back for a year to convert it). I could go on, but in reality there are far harder courses than anything _I_ took in CS. I don't think anything has change so much even though a considerable amount of time has passed.

As more evidence, look at the huge number of people with degrees in unmarketable skills doing boot camps and actually becoming productive professional programmers. It's not that hard -- maybe a bit harder than learning a human language (but not nearly so time consuming).

But I will say that in my time the biggest destroyer of talented people in CS: Empire. I had to forbid myself from playing that damn thing. Ruin your life, it would! I wonder if there is any kind of similar geeky crack these days... (though I think that even today if undergrads got their hands on Empire they would be doomed...)

<comment><USER6> I agree. Programming wasn't hard, especially if you had prior experience. Even a little bit would help.

On the other hand it also means that you aren't quite the perfect programmer after finishing the course.

Due to the immediate possibility for practical application, it was a lot easier than other more abstract topics.

Nevertheless it drove quite some people away from CS. Though not nearly as many as Algebra.

</comment></comment><comment><USER7> I helped out a little with this sort of thing when I was at university and tutoring intro programming papers. From memory, the one thing that is fairly unique to programming courses is that they tend to have a more-than-normal bimodal distribution of results (at least, based on my university.) There was only one other course that showed a similar pattern, and it was one that taught computing for biology or something.

The two modes tended to come from two groups of people: those who missed classes and failed to catch up, and those who either didn't miss classes, or managed to catch up what they'd missed.

It was suggested from this that programming is pretty unique in that the whole course builds on everything that has come before. If you miss a bit in maths, then you might lose a few points on that aspect, but when they move to a different topic, it generally won't depend on what you missed.* However, in a programming course, if you miss constructors, or arrays, or something then you're kinda screwed for the rest of the course if you can't figure it out.

We helped deal with this by having specific remedial tutorials where people could come and get help with anything they missed, or were stuck on, etc. IIRC (it was a while ago) this helped pass rates quite well.

* there are definitely exceptions, I'm speaking in generalities.

<comment><USER8> > programming courses is that they tend to have a more-than-normal bimodal > distribution of results

There is argument that is not true [1]. However, I agree with your next statement that this isn't so much a 'lack of geek gene', but a lack of catching up. In [2], even something as simple as assignment operations were able to predict success in a CS course.

I'm currently developing my own 'remedial tutorials' and researching the proper order of exercises to give a low-performing student. Similar to your experience, these help those low-performers catch up.

[1] [http://www.cs.toronto.edu/~sme/papers/2016/icer_2016_bimodal...](http://www.cs.toronto.edu/~sme/papers/2016/icer_2016_bimodal.pdf)

[2] [http://www.ppig.org/sites/default/files/2014-PPIG-25th- Ahadi...](http://www.ppig.org/sites/default/files/2014-PPIG-25th-Ahadi- Lister_0.pdf)

</comment></comment><comment><USER8> This is a rather dated paper, here is a 2014 meta-analysis with a better N.

[1] [http://dro.dur.ac.uk/19223/1/19223.pdf](http://dro.dur.ac.uk/19223/1/19223.pdf)

</comment><comment><USER9> I dropped out of CS about 15 years ago because the way it was taught bored me to tears. No I don't want to build another bank account manager just to learn data structures or databases or whatever. Went and got a degree in history, ended up using the few things I picked up when I studied CS to fall into a business intelligence job.

And now I'm kinda looking into programming again and many books I examined still go with "let's build a bank account manager" as an example project. Such a shame, programming offers endless possibilities and the first encounter is the worst kind of business app.

<comment><USER10> >Went and got a degree in history, ended up using the few things I picked up when I studied CS to fall into a business intelligence job.

Could you elaborate on this? I hold an associate's that I want to upgrade to a full Bachelor's in CS; I'm looking at my options for a minor and History is one.

<comment><USER9> While i love history, my advice for a humanities minor would always be philosophy, unless you have a really specific reason to want to go for history. But in terms of developing critical thinking skills there is no substitute for philosophy.

<comment><USER11> There are a few "substitutes"... Or rather strong derivatives devised from hundreds of years of philosophy.

1) Advanced mathematical logic. 2) Advanced statistics. 3) Advanced control theory or systems. 4) Experiment design.

All of these usually post-graduate and they feed one into another... You need pretty strong algebra and mathematic proof reading skills too.

</comment></comment></comment></comment><comment><USER12> Most people I knew who left CS, did so either during the first intermediate programming course (where C/C++ pointers were introduced), while the second set of defections were during the Computer Organization/Assembly Language course.

</comment><comment><USER13> Apropos of just chucking in another data point, of my Masters in Maths course, something under 20% of those who started came out the other end with a Masters in Maths. Those exams were brutal.</comment>


Achievement Unlocked: CrateDB 1.0 - <AUTHOR> https://crate.io/releases/achievement-unlocked-cratedb-1-0/ <comment><USER2> Congrats, I'll give it a try in one of my next side projects.

I rember reading a blog post about crate facing data loss in some cases:

[https://aphyr.com/posts/332-jepsen-crate-0-54-9-version- dive...](https://aphyr.com/posts/332-jepsen-crate-0-54-9-version-divergence)

Is this still an issue?

<comment><USER3> @ralala - would love to hear your feedback once tried crate (firstname.lastname@example.com). we've been working directly with kyle on the issues discovered. the current state of our work is documented on our website: [https://crate.io/docs/scale/resilience/](https://crate.io/docs/scale/resilience/)

Thankfully, for most use-cases, if you our follow best practices, you are extremely unlikely to experience resiliency issues with CrateDB.</comment></comment>


OpenVr – Valve's Open Source VR API - <AUTHOR> https://github.com/ValveSoftware/openvr

<comment><USER2> Um, all I see is a bunch of binaries, two header files and a sample app. Just header files do not qualify as an open source project.

<comment><AUTHOR> Yep, looks like I got it wrong. I saw the license file and just assumed the source was in the repo, but of course it's not. Alas, I do not know how to delete this submission.

</comment></comment><comment><AUTHOR> It's BSD licensed, and there's also an announcement post here:

[http://steamcommunity.com/steamvr](http://steamcommunity.com/steamvr)</comment>


Ruby: We have decided to go forward to 3.0 this year - <AUTHOR> https://github.com/ruby/ruby/commit/21c62fb670b1646c5051a46d29081523cd782f11 <comment><USER2> It appears that Ruby 3 might come short of their 3x speedup goal [1][2] ... has anyone tried out Graal/TruffleRuby?

Graal/TruffleRuby has shown some massive perf increases [3]

[1] [https://pragtob.wordpress.com/2017/01/24/benchmarking-a- go-a...](https://pragtob.wordpress.com/2017/01/24/benchmarking-a-go-ai-in- ruby-cruby-vs-rubinius-vs-jruby-vs-truffle-a-year-later/)

[2] [https://pragtob.wordpress.com/2020/08/24/the-great- rubykon-b...](https://pragtob.wordpress.com/2020/08/24/the-great-rubykon- benchmark-2020-cruby-vs-jruby-vs-truffleruby/)

[3] [https://www.reddit.com/r/ruby/comments/b4c2lx/truffleruby_be...](https://www.reddit.com/r/ruby/comments/b4c2lx/truffleruby_being_2x_faster_than_mri_26_a/)

<comment><USER3> Look for tenderlove's comments on TruffleRuby. The performance is at the expense of memory.

<comment><USER4> In Ruby, as in NodeJS, the GIL pushes you to scale horizontally. The memory footprint of Hello World becomes a big problem, because the number of copies you run will be proportional to the number of cores you have, not the number of machines. You get no benefit from moving from an 8 core box to 16 or 20 cores.

I suspect if they do manage to pull off more concurrency in Ruby 3, that vertically scaling machines will make more sense. If 8 cores benefit from a shared footprint, instead of one core per process, then the budget looks more attractive.

So now might not be the right time to cherry-pick some of these features, but it may not be far off.

<comment><USER5> > GIL

FWIW the GIL has been the GVL since YARV was merged in and it became based on a virtual machine rather than purely interpreted. I believe this was 2.0.

> because the number of copies you run will be proportional to the number of > cores you have, not the number of machines

While this is true, Ruby is also very CoW optimized so while forks grow linerally in size (with count), usually the first fork is drastically smaller than the process it was forked from.

I work at Heroku and recommend perf settings to customers. 5 years ago people were mostly hitting memory limits. Now it's pretty common to see apps that are maxing out the CPU well before coming close to ram limits.

Especially when compared to javascript, Ruby is extremely memory efficient.

I agree with your larger statement but wanted to chime in and expand on those two points.

<comment><USER6> Just want to reaffirm this post. I scaled ruby for a living for almost 8 years to millions of request per minute and this post is 100% accurate.

<comment><USER7> The high memory usage of ruby still causes problem if the app is single- threaded. I scaled databases for ruby apps for a living for almost 8 years, and sadly single-threaded legacy ruby app is still a thing.

Anyway, in the single-threaded scenario, the app may appear to be CPU bound under the steady state. However, when some hiccup happens in a database or in another microservice, all the ruby processes could soon be blocked waiting for network responses. In this case, ideally there should be plenty of idling ruby processes to absorb the load, but it will be rather costly to do so due to the high memory usage.

There are potential fixes of course, but with trade-offs:

\- Aggressive timeout: May cause requests to fail under the steady state

\- Circuit breaker: Difficult to tune the parameters, may not get triggered, or may prolong the degraded state longer than necessary. Also not a good fit when the process is single-threaded, as it can only get one data point at a time.

\- Burning money: Can only do this until we hit the CPU : memory ratio limit imposed by the cloud vendors.

\- Multi-threading: Too late to do this with years of monkey-patching that expects the app to run single-threaded.

<comment><USER8> Dealing with latency variability is a Hard Problem™ and really not much to do with Ruby or process vs thread parallelism.

[https://dl.acm.org/doi/pdf/10.1145/2408776.2408794](https://dl.acm.org/doi/pdf/10.1145/2408776.2408794)

<comment><USER7> Well, having more spare ruby processes / threads would make the app more resistant to latency variability, and could have made some incidents into nonevents.

Also, while I don't disagree that it is indeed a hard problem, I do have very good experience with an async java stack, where I didn't have to worry about things like this. As long as a sane queue limit is defined on let's say the jetty http client, if something bad happens at the other end, the back pressure would kick in by failing immediately the requests that couldn't make it into the queue. Other parts of the app would then continue to be functional.

So, I would contend that it has a lot to do with ruby high memory usage, made much worse when single-threaded, and it looks like ruby 3.0 still won't have a complete async story yet?

EDIT: I checked the link again, and it looks Jeff Dean was talking about latency at p999 or above? By "hiccup", I actually mean something that would increase _avg_ latency by perhaps 5~10x times, e.g. avg latency of 100ms under steady state + timeout of 1 second + the remote being down. Sorry for the confusion. Here, I am lucky if people start caring about p95.

<comment><USER8> That's not an inherent property of a particular language or concurrency model, though. That's having logic to track request queue depth for a particular service or endpoint and fail fast/load shed. You can do the same in Ruby! Some would probably say this is what a service mesh is for.

Maybe you're thinking of the new Actor based model for compute parallelism? Async IO in production Ruby has been a thing for easily more than a decade.

<comment><USER7> Of course it is not an inherent property of a particular language or concurrency model, but it is a property of a particular __language ecosystem __. As a turing complete language, everything is doable in ruby, but at what cost? Now we are back to trade-offs I listed above.

As for async IO in production, looking at the client library, [https://github.com/socketry/async-http](https://github.com/socketry/async- http) is barely 3 years old, and probably reached the production-ready state a few months ago, if we are being generous.

But good point about service mesh. Moving the circuit breaker responsibility to the service mesh would definitely help in my case, as the sidecar would have all the data points from the 10+ single-threaded ruby processes running in the same pod, and thus could make a much quicker decision.

<comment><USER8> [https://github.com/socketry/async-http](https://github.com/socketry/async- http) is just a new client library. PostRank, Zynga, CloudFoundry were all running async IO in production on Ruby ~10 years ago. CRuby support for non- blocking IO dates back to the mid 2000s. [https://github.com/eventmachine/eventmachine](https://github.com/eventmachine/eventmachine) actually dates back even further

If you're using Unicorn then you've already got Raindrops which gives you a really simple way to do shared metrics across forked processes like in-flight requests to another service or how many of your Unicorns are busy.

<comment><USER7> EventMachine has been losing steam for awhile now, which is why I brought up Async as the new hotness. I don't think it is fair to classify async-http as "just a new client library". As of now, in the ruby ecosystem, the Async framework is the only player in town. From my perspective, it still looks pretty much unproven, but perhaps we just live inside different bubbles.

It kinda feel like we are talking past each other here. I would just like to clarify that I inherited all these different ruby apps, and I don't have the magical ability to go back in time and say "Hey, perhaps we should use an async framework from the beginning" or "Dude, enough with the monkey- patching". And even if I do, those could be bad advice, as the ruby apps are making money in production.

Anyway, thanks for the suggestion to share metrics across processes. That will definitely help with the circuit breaker decision making in my case.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> What a year!

Python 2.x dying; Python 3 becoming the norm; "Perl6" renamed to raku & Perl5 thinking of bumping to v7... and now Ruby going all the way to v3.0!

<comment><USER10> Python3 has really been the norm since 3.4, which was released in 2014. After that it took another year until most major packages were updated to Python3, but that happened at some point in 2015. By 2016 there weren't many packages left that weren't Python3 compatible, or that didn't at least have Python3 replacements.

<comment><USER11> most Linux distros still have Python 2 as the default though, right?

<comment><USER12> No, Ubuntu 18.04 shipped with Python3 as the default.

<comment><USER13> Not true. Vanilla 18.04 LTS ships with no Python installed by default and the main repos `python` package is 2.7. Same for Debian 10. Ubuntu 20.04 switched the `python` package to Python3.

Even conservative CentOS (where Python is a base dependency for the system, as opposed to the above) is on Python3 as of now though.

As far as I am aware, Debian 10 buster is the last mainstream LTS distro to default to python2. Should change next year with Debian 11.

</comment></comment></comment></comment></comment><comment><USER14> I'm excited about performance improvements but thrilled at the idea of adding types. Has anyone here worked with Sorbet or a prerelease 3.0 in Rails and able to share some notes?

<comment><USER15> Our team has been using Sorbet at getcensus.com for almost a year now, and I'm generally very happy with it though it's not perfect.

Like most non-trivial Rails apps, our test suite takes a while to run, so I like having Sorbet to catch "dumb" issues without having to run the full suite. Running `srb tc` to check types is incredibly fast and seems to be scaling well as our codebase grows. It catches the obvious stuff, but has also found some subtle bugs in flow checking and is great for refactoring support. The false positive rate is extremely low - if Sorbet flags a regression in your type checking, it's very likely to be a real bug.

The Slack community is helpful and responsive - if you're thinking of using sorbet, I'd strongly suggest joining.

The downsides are:

\- Unclear workflows - it's hard to know when you need to "rescan" for new type definitions in gems, the stdlib, and in generated code in your own app

\- Poor Rails integration - the sorbet-rails package is helpful and being actively developed, but it's clear that the maintainers don't use Rails and aren't going out of their way to support it.

\- Upgrades are rough - the sorbet tools that scan your gems and code to find "hidden definitions" are seemingly unstable from release to release. There's a good chance that upgrading to a new version of sorbet will break your type checking for mysterious and hard-to-debug reasons. Lots of this is probably related to Rails as well.

\- IDE integration isn't quite ready for prime-time yet. I've gotten it working in Emacs with lots of experimentation and poking around, and I think some folks have it working in VSCode too, but it's not officially "released" or supported and it crashes somewhat often. It's still stable enough to be useful and I'm glad I have it.

It's great and seems to be getting better, and it has absolutely made me more productive, but know that you're still adopting an alpha- or beta-quality tool and it's unlikely to "just work".

<comment><USER16> _sob on sorbet-rails_

j/k. sorbet-rails maintainer here. I agree with the assessment that sorbet doesn't go out of the way to support some Rails feature, eg method overloading or scoping block accurately. Sorbet tool is opinionated about some of the design choices that makes it hard to support Rails' extensive use of meta- programming. That said, Sorbet is still useful in checking the custom code we write on top of Rails and their interactions. It may be hard to type the model files themselves, but we can type-check the code making use of the models! Recently, I started a new project on Rails and it's quite fun building it with type from scratch :D

I find Sorbet a very helpful tool for development. I hope people will give it a try and contribute to tools around it (sorbet-rails included) so that we have great tools to use!

For those who are interested in the topic, I outlined some of the technical challenges with using Sorbet on rails here [https://medium.com/czi- technology/static-type-checking-in-ra...](https://medium.com/czi- technology/static-type-checking-in-rails-with-sorbet-dc0414a502d9)

<comment><USER15> I did not mean to put down sorbet-rails - it has been really useful to us and we appreciate all the work you and your team have put in to it!

But I do have the sense that building Rails apps using sorbet won't feel "first class" until we have some sorbet maintainers that use Rails or the Rails team starts adopting sorbet (or both!)

<comment><USER16> Yeah, I totally agree with this. In some way, it's the difference in philosophical approach of the two system that it'll be hard to reconcile. Eg: Rails favors convenience (method that just works under various condition), whereas Sorbet favors explicitness (no method overloading, typed struct class instead of hash)

</comment></comment></comment></comment></comment><comment><USER17> Are they going to make non-backward-compatible changes, or is this just a marketing move?

<comment><USER18> looks like they're adding an optional type system, which means you get the worst of both worlds- no guarantees AND no compile-time type checking (think: what happens if type-checked code calls non-typed code?) so I have no idea how they're going to make that fast since all types will still have to be checked at runtime

<comment><USER19> Are you sure it'll be awful? Sorbet ([https://sorbet.org/](https://sorbet.org/)) is pretty popular already. It can statically check your whole project and dynamically check it at runtime. It also doesn't add that much overhead so I'm not sure what you're on about...

<comment><USER20> Sorbet looks really cool, too bad they developed their own typing system that keeps types in a totally separate file instead of adopting it.

<comment><USER21> The 'separate' file is to avoid breaking backwards compatibility and avoiding a Python2/3 fiasco

<comment><USER22> Also see coffeescript, etc.

</comment></comment></comment></comment></comment></comment><comment><USER23> Context? What changes are in v3?

<comment><USER24> The goal of Ruby v3 is to be 3 times faster than v2.

[https://blog.heroku.com/ruby-3-by-3/](https://blog.heroku.com/ruby-3-by-3/)

Unclear if that goal has been achieved.

<comment><USER25> From benchmarks [1], 2.8.0 (with jit) is ~2x faster than 2.0.0p648 [2].

[1]: [https://pragtob.wordpress.com/2020/08/24/the-great- rubykon-b...](https://pragtob.wordpress.com/2020/08/24/the-great-rubykon- benchmark-2020-cruby-vs-jruby-vs-truffleruby/)

[2]: [https://pragtob.wordpress.com/2017/01/24/benchmarking-a- go-a...](https://pragtob.wordpress.com/2017/01/24/benchmarking-a-go-ai-in- ruby-cruby-vs-rubinius-vs-jruby-vs-truffle-a-year-later/)

<comment><USER26> notice the "3x3" goal is on a specific benchmark (optcarrot), not on all workloads.

<comment> tom-lord There's no such thing as a performance measurement "on all workloads".

</comment></comment></comment></comment></comment><comment><USER27> I'm waiting for this since long time. Hope it will be more human and more feature and more user friendly than other languages.

</comment><comment><USER27> I'm waiting for this since long time. Hope it will have more features, more faster, more performance oriented, more exciting, and more user friendly than other languages.

</comment><comment><USER28> Did we get JIT?

<comment><USER25> Yes, it was introduced in Ruby 2.6 (2018): [https://www.ruby- lang.org/en/news/2018/12/25/ruby-2-6-0-rele...](https://www.ruby- lang.org/en/news/2018/12/25/ruby-2-6-0-released/)

<comment><USER29> Well, yes and no (althought the question is a bit open).

It's more or less beta quality, and very primitive. It's discouraged to be used with Rails, so I'd be inclined to state that "we didn't get it yet".

I'm also personally skeptical that the unusual approach (invoking a whole C compiler in a separate thread) will stand in the long term - but that's my own take.

<comment><USER8> The CRuby JIT is stable but whether it improves performance or not is workload dependent.

It's simple not primitive. MJIT is designed to take advantage of a C compilers optimization.

"Compile to C" worked for Chicken Scheme for the past 20 years and continues to be a popular way for functional langauges to compile. It's also how Nim works. It's all about different trade-offs.

<comment><USER30> Chicken Scheme compiles ahead of time, doesn't it?

<comment><USER8> Yeah but it's not an important distinction.

<comment><USER30> Isn't it? Compiling C takes time, with Ruby you would be doing it for each execution. Is there some catching involved?

<comment><USER8> Almost everything is in a pre-compiled header. Its actually similar overhead to an LLVM based JIT.

You wouldn't want to do it for a browser JIT but for a server side app it's OK.

<comment><USER30> Does Ruby ship with a compiler? How will this work on Windows?</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Best Practices for Speeding Up Your Web Site - <AUTHOR> http://developer.yahoo.com/performance/rules.html

<comment><USER2> Use the PageSpeed or YSlow Firefox extensions to automatically test your site against some or a majority of these rules or best practices. Also read <http://www.codinghorror.com/blog/archives/000932.html> for a perspective on why not all of these rules may apply to your site.

</comment><comment><USER3> These tips aren't really anything new. All of them have already been discussed on hundreds of other sites.

<comment><USER4> Nonetheless, it's nice to hear them now and then. I found this a good overview.</comment></comment>


Ask HN: Why is a website being "responsive" good? - <AUTHOR>

Why must website elements resize magically when windows are enlarged?
People read best when they don't move their head left and right. This means 80 characters in a line. Why must CSS frameworks have support for being "responsive"?
Why is responsive good? <comment><USER2> You've misunderstood what "responsive" means.

Text growing to fill the width of the page is the _default mode_ of the web. The ability to control the width of text came much later. What has only recently become practical - and what people mean by "responsive" or "fluid" layout - is the ability to intelligently reformat the page to suit the available container, by for instance using a layout that can grow from a single column to five or six columns depending on the container width, or by removing or simplifying certain navigation elements in very small containers.

Designing around a fixed layout is a very bad idea. Viewers with smaller than anticipated containers will have to scroll horizontally and users of wider than anticipated containers will be frustrated by large areas of whitespace. Your layout is liable to break completely if a user is substantially altering your page layout, for reasons of accessibility or convenience.

Responsiveness is about designing sites that are maximally readable and usable on all devices; When done well, sites will effortlessly adapt to new devices and new form-factors.

</comment><comment><USER3> Having two separate websites is bad for user experience no matter how you look at it. I approach it to having a flash website and an html one. Same concept. Plus mobile detection is not future proof.

<comment><USER4> Why? If a user interacts with a site differently on mobile than on their desktop machine then two separate interfaces is good? That's not just good "UX", it's good logic.

The main argument I see against separate "views" is that it's an expensive exercise to effectively build two frontends for a single site. However, as someone who has built both large-scale responsive and mobile-specific sites neither is really cheaper.

</comment></comment><comment><USER5> The real reason? Because making sure that your web site has a browser AND mobile AND app version is too expensive. So most sites settle for a crappy responsive version that pisses everyone off to some degree.

<comment><AUTHOR> Why does your web site need to have all those versions?

Why can't you have only one version, and someone on mobile will zoom in and out?

A web site version with 10 things on the header is going to piss people off on the mobile app regardless of how responsively those 10 things show up in their face. A better thing to do is to not show any of those crappy 10 things to begin with.

<comment><USER6> >Why can't you have only one version, and someone on mobile will zoom in and out?

Because to do that manually is usually clunky. Responsiveness makes it happen automatically and thus smooth.

>A web site version with 10 things on the header is going to piss people off on the mobile app regardless of how responsively those 10 things show up in their face.

Good responsive sites rearrange those 10 things in the header so that they are not "in your face" as you say. See also: Twitter Bootstrap.

<comment><AUTHOR> What does this rearrangement do that makes them not be in my face?

Twitter Bootstrap has been a disaster for me: <http://news.ycombinator.com/item?id=4651506></comment></comment></comment></comment>


Nazi Monks Against the Panama Canal (2012) - <AUTHOR> http://theappendix.net/blog/2012/11/declassified:-nazi-monks-against-the-panama-canal <comment><USER2> Wait... Nazi monks in the Amazon... is this guerrilla marketing for a new Wolfenstien game?

</comment><comment><USER3> So what _was_ the fuel for?

<comment><USER4> Saucers of course. They had the anti-gravity but still had to run them on old fashioned petrol, not having had time during the war to perfect the ability to tap the zero point field.

In all seriousness though I was hoping for some deeper analysis. There is this whole "Nazi meets occult/proto-new-age" scene that is delightfully weird yet still quite historically documented.

[https://en.wikipedia.org/wiki/Savitri_Devi](https://en.wikipedia.org/wiki/Savitri_Devi)</comment></comment>


$1 Trillion Trove of Rare Minerals Revealed Under Afghanistan - <AUTHOR> http://www.livescience.com/47682-rare-earth-minerals-found-under-afghanistan.html <comment><USER2> "The mineral riches could lift Afghanistan out of poverty and fight crime and terrorism, said Said Mirzad, co-coordinator of the U.S. Geological Survey's Afghanistan program."

Yeah, I guess it could do that, but more than likely the guys at the top will just keep the money for themselves stashed in foreign banks, until the next coup throws them out.</comment>


Why don't we use chemical weapons anymore? - <AUTHOR> https://acoup.blog/2020/03/20/collections-why-dont-we-use-chemical-weapons-anymore/ <comment><USER2> This reads as just what is is: some guy on the internet thinking he's got it all figured out.

There's no way to decide the relative weight of uselessness and perceived immorality of chemical weapons. Some people clearly do consider them horrible, and it would be quite a surprise if none of those people were in any position of power, from armed forces to civilian government to parliamentarians to voters.

The argument otherwise rests on the assumption of perfect efficiency in military procurement and decision-making. Does anyone believe the military never uses "useless" technology? They came up with a rationalisation for building that marginal nuclear bomb to allow the 254th complete destruction of earth. I'm sure they could convince themselves of the necessity of chemical weapons if motivated.

</comment><comment><USER3> pepper spray is a chemical weapon, a lacrimator agent and an asphyxiant</comment>


My year long Android game project. Could I get any design tips? - <AUTHOR> https://play.google.com/store/apps/details?id=com.mammothGames.wake1free

<comment><AUTHOR> It's running on a custom OpenGL ES 2.0 engine, but I'm in the process of porting it to LibGDX for cross platform support. There are a few bugs for older devices that I was never able to track down, which is extra motivation to rewrite. Are there any obvious design mistakes? I see this through biased eyes after working on it for so long. I'm always looking to improve my work!</comment>


See how this Millennial Techie reacted after Trump humbled him - <AUTHOR> https://www.huffingtonpost.com/entry/see-how-this-millennial-techie-reacted-after-trump_us_5a1b9197e4b068a3ca6df94a <comment><USER2> The headline is somewhat click baity but an interesting find nevertheless</comment>


Carl Icahn will destroy Yahoo - <AUTHOR> http://www.marketwatch.com/news/story/carl-icahn-destroy-yahoo/story.aspx?guid=%7BB3DF0AF7-2898-428F-9AD7-FE0E9766BA9B%7D <comment><USER2> Unfortunately this is just all about money. If you read the history of Icahn - especially in the 80's - he was/is a tenacious corporate raider who is more than happy to take a company, split it into component parts and sell it all for a profit. He's only interested in making money from this. As an investor you can see why he's doing it - he's not interested in the company for running it because of any future potential. He see's value in its share price right now and what he can get for it. Yahoo is still a great company, that is currently overshadowed by Google. They (the directors) do have a duty to their shareholders though, which is what this is all about. It will be interesting to see how it goes, but its going to get more complicated I think

</comment><comment><USER3> I think I'm more qualified to sit on Yahoo's board than most of the current and proposed board members. At least I use Yahoo's services, both in search, search marketing, Flickr, del.icio.us, and their many APIs etc..

</comment><comment><USER4> Mo money = mo problems

</comment><comment><USER5> the writer is 100% right, the people who want to come on-board with only purpose of selling the company is not good , whether it is short term or long term. These folks to me looks like a joker and none of them have any skills that yahoo founders at least have it.</comment>


How Big is a Story? - <AUTHOR> http://blog.gaslight.co/post/53755990427/how-big-is-a-story

<comment><USER2> This is a struggle, for sure. We want to keep them consistent but we also want to make sure we're keeping things moving. They shouldn't be a checklist, but actual features, too. Timeboxing work is the only workable solution I can see.</comment>


Scala's Maturing Community - <AUTHOR> http://skipoleschris.blogspot.com/2013/12/scalas-maturing-community.html

<comment><USER2> It's been good to see the growth in the Scala community on many fronts. The Scala subreddit is starting to get quite lively. I've also encountering more developers using Scala at work rather than just something they use for side projects.

The article does raise a good point about immutability and functional programming. It's something that shouldn't be assumed, especially for Java developers making the transition (there seem to be plenty of Java developers switching to Scala lately). Scala combines functional and OO programming, and there are use cases where OO style coding makes more sense. Martin Odersky even mentioned that in a presentation a while back. Immutability and asyc are very powerful, but not everyone uses these approaches. Selling folks on Scala is one thing, getting them to make a jump to an (awesome) library like Akka is a bit too big a jump to make in one step.

<comment><USER3> I would humbly disagree with your second assessment on two fronts:

1\. It's not that hard to get people using immutable data structures. You just have to remind them during code reviews. It's not that "var" doesn't have its place (within function calls but not escaping them.) It's that it'll take someone a week or two to really get comfortable with immutability.

2\. Akka, can come after they learn about Futures and how to use them in for- comprehensions. Once they make that mental leap and have adopted #1, other things fall into place with much more ease.

Granted, neither #1 or #2 comes without someone who has done some Scala lending a guiding hand. If it's purely Java devs showing other Java devs, then they will be doing what C programmers did when switching to C++ (writing Java in Scala.)

<comment><USER4> The irony is that using "immutable data structures" like an immutable map requires using "var" more often than if a mutable structure was used (which could just be assigned to a "val").

<comment><USER5> The elegance of immutable local variables is interesting, and it can be argued that functional programming style can lead to more robust coding.

However, there is an orthogonal advantage of immutable (or persistent) data structures, namely simplify sharing of state in concurrent programming, and this works well regardless on where the "handle" of a data structure is stored.

<comment><USER4> That persistence can be quite expensive for non-linked collection classes (like say lists, maps), finger trees non-withstanding; though at least in 2006, such immutable collection classes were implemented as being mutable with some safe sharing for performance reasons.

These decisions must be made pragmatically and being ideological about it isn't very useful. Scala is a great language for both functional and imperative programming when you need it.

<comment><USER6> This is no longer the case, in Scala 2.8 they were replaced with persistent collections based on the work by Phil Bagwell, afaik they are faster than the old implementation. Didn't the old implementation have issues when you started sharing these maps between threads?

<comment><USER4> I haven't used Scala since 2006, so I'm not sure; I always avoided immutable collections (beyond lists sometimes) in favor of mutable ones given the nature of my work then (IDE development). I suspected they weren't thread safe, but Martin was confident at the time.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> Impressive turnout at Scala eXchange, both in terms of registrants (400 or so attendees) and speakers (Simon Peyton Jones, Jonas Boner, Victor Klang, David Pollack, etc.), not to mention the venue, a big time conference (for Scala) on all fronts.

Scala.io in Paris was quite small in comparison; however, the after party in Paris (free drinks all night long, woo hoo ;-)) blew away the staid affair in London (single round of drinks on the house, some inane blah, blah question/answer session re: the same old, why is Scala so complex, followed by most everyone leaving).

Anyway, the conference itself was well worth its weight in pounds, hope to make the trip again next year, this time with Scala 2.11 in full swing, good times ahead.

<comment><USER8> I haven't been to any Scala events yet though I did watch a number of the videos from Scala Days 2013 and I'm hoping to attend 2014 in Berlin.

What exactly made London so bad?

<comment><USER7> Nothing was bad about the London conference, quite the contrary.

Was just pointing out the difference in the after party between scala.io Paris and scala eXchange London, not a big deal at all, both of the _conferences_ were great.</comment></comment></comment>


MySQL utf8 vs. utf8mb4 – What's the difference? - <AUTHOR> http://www.eversql.com/mysql-utf8-vs-utf8mb4-whats-the-difference-between-utf8-and-utf8mb4/ <comment><USER2> MySQL has caused so much pain with their decision to make latin1 the default encoding.

I've seen so many PHP apps that store UTF-8 encoded text in Latin1 fields, and it kind of works, until you correctly configure your client library, or try sorting the data, or check for equality...

The problem is so common, that the popular MySQL client app Sequel Pro even has an option to set the encoding to "UTF8 via Latin1", which tells the server to output Latin1 but then treats the result as UTF-8.

So once you learned this the hard way, you'll change the db encoding to utf8, and you'll be glad to have finally fixed the encoding mess, only to stumble across the fact from the original article that utf8 is not really utf8 in MySQL --- oh the horror!

</comment><comment><USER3> Use utf8mb4. Use utf8mb4_unicode_520_ci. Alter tables using

ALTER TABLE database_name.table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci.

Verify that all of your columns are utf8mb4 with:

SELECT table_schema, table_name, character_set_name, collation_name FROM information_schema.columns WHERE table_schema NOT IN ('mysql','information_schema','sys','performance_schema') AND character_set_name is not NULL AND character_set_name != 'utf8mb4';

You may have to update your client libraries (like Perl-DBD) if you're still using something like CentOS 6.

</comment><comment><USER4> If only they had named them utf8mb3 and utf8. Would have been a _lot_ clearer that one was optimized, but not fully utf8.

</comment><comment><USER5> The next problem you'll likely encounter after switching to utf8mb4 is the relatively tiny maximum index key length in InnoDB - even though the strings are variable length, for the utf8 4 encoding MySQL will multiply the length of the string by 4 when checking against this limit.

If your data model layer supports it, it's often better to just use raw binary instead of any particular encoding. The main features utf8mb4 provides are validation and sorting. Most people are just using an ORM and use Unicode internally in an application, so validation of the encoding is nice, but not essential. And for most applications it doesn't make sense to sort arbitrary utf8 strings in the database layer. (Sorting Unicode strings in general is very complicated, and 99% of the time it's not something you really need.)

</comment><comment><USER6> It seems insane that the top Google SERP result for "mysql utf8"[1] mentions this, but not in the top answer, rather in the top comment to the top answer -- which describes why the top answer is wrong.

Because of the way MySQL rolled out `utf8` (a strict subset of UTF8) then `utf8mb4` (which is a full UTF8 implementation), the other top result[2] is similarly poisoned where the directions describe using `utf8` and have an addendum describing `utf8mb4` (which isn't hard to miss).

[1] [https://stackoverflow.com/questions/202205/how-to-make- mysql...](https://stackoverflow.com/questions/202205/how-to-make-mysql-handle- utf-8-properly)

[2] [https://www.toptal.com/php/a-utf-8-primer-for-php-and- mysql](https://www.toptal.com/php/a-utf-8-primer-for-php-and-mysql)

</comment><comment><USER7> SELECT CONCAT ( 'ALTER TABLE ', t1.TABLE_SCHEMA, '.', t1.table_name, ' MODIFY ', t1.column_name, ' ', t1.data_type, '(' , CHARACTER_MAXIMUM_LENGTH, ')', ' CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;' ) FROM information_schema.columns t1

WHERE t1.TABLE_SCHEMA like 'omtest' AND t1.COLLATION_NAME IS NOT NULL AND t1.COLLATION_NAME NOT IN ('utf8mb4_unicode_ci')

AND table_name = 'emails';

</comment><comment><USER8> Never heard of this. Thanks for the article. So many pitfalls working with MySQL.

</comment><comment><USER9> utf8 to utf8mb4 also breaks replication so be extra careful if you have slaves replicating. You'd need to switch off row or mixed replication and switch to statement based till changes are done on all nodes.</comment>


How a Lawsuit Against Coca-Cola Convinced Americans to Love Caffeine - <AUTHOR> http://time.com/5405132/coca-cola-trial-caffeine-history/ <comment><USER2> I gave up caffeine and sugar. Being outside of the craze it is pretty amazing how people talk about caffeine. People seem to believe that humans were completely unproductive blobs until caffeine came along. You hear things like "you don't want to talk to me before I get my coffee in the morning" and "developers are machines that turn caffeine into code".

I was the same way. I cut it out and for about a month it was the least productive I had ever been. Since then it has been great though, no more slump when I don't drink it, no more withdrawal headaches, no more cravings for it. I would go so far to say it is liberating to not rely on these foods.

<comment><USER3> Agreed. Due to a health issue, I stopped my intake of caffeine at the beginning of the year. I was actually recuperating in the hospital or bed for most of the "giving it up" period so I didn't have a chance to experience the productivity issue, but now that I'm back to work, I don't find I'm any less productive than before even when tired.

The few times I've inadvertently had caffeine since then it's astounding how potent it is. I didn't realize this when I was still ingesting large quantities daily in the past. Now it makes my heart race, my blood pressure go up and actually makes me feel dizzy and frankly, not good. But, the "high" is still there and it definitely makes me antsy and hyper.

<comment><USER4> If I may ask, and you don't have to answer, what medical condition calls for stopping caffeine? I've read a few people (a lot here) who wrote the same thing.

<comment><USER2> I have an auto immune disorder (my brother is diagnosed celiac, so it is probably celiac). I had sinus headaches my whole life. Like I remember waking up one day in high school with a clear nose and it was remarkable. (I had digestive issues too but to be honest I didn't mind too much compared to the headaches.)

Girlfriend told me there was something wrong with me and to do an elimination diet. It was the best I ever felt. I stopped eating gluten and felt a lot better but I would still get headaches sometimes. It took about 5 years of narrowing down foods to get the complete list. I don't eat gluten, caffeine, sugar, sodium nitrites (deli meats, celery), and msg (flavored chips). Sugar was the hardest to give up but it's worth feeling good.

There is this woman online, Mikhaila Peterson, who had horrible arthritis and found that eating only meat fixed it. [1] It's a little extreme IMO but it is cool to hear a relatable story. Auto immune issues are wild.

1\. [https://m.youtube.com/watch?v=7fncJdVjy5U#](https://m.youtube.com/watch?v=7fncJdVjy5U#)

<comment><USER4> Thanks! Very interesting.

<comment><USER3> Sorry, I didn't see this until just today, so you may miss this, but in my case I had a stroke due to an up to then unknown hole between the atria of my heart. I needed to keep my heart rate and blood pressure down prior to a repair procedure, so I had to give up caffeine (among many other things, like walking up hills!)

</comment></comment></comment></comment></comment></comment><comment> rm_-rf_slash Headline is misleading. Not only does the article provide no contextualizarion about the "coffee-swilling journalists" covering the trial, it also abruptly ends at the trial settlement and says very little about how Americans' perspective on caffeine changed as a result, only that the test results made caffeine look good.

A good read, for sure, but does little to describe _how_ Americans - who were apparently drinking twice as much caffeine in Coca Cola then as now - came to love caffeine.

If this had been an Atlas Obscura piece, I expect I would have come away with a feeling of fullness and satisfaction, like eating a well balanced meal. Instead I feel empty and unfulfilled...like drinking a can of soda.

<comment><AUTHOR> OP here: I debated posting this for reasons you mentioned, but there were interesting tidbits unknown to me in there, (such as Sprite containing lithium), and just the general idea about how 'drugs' or addictive substances become more acceptable or in some cases, less, is worth some discussion. You might enjoy this book: <[https://well.blogs.nytimes.com/2014/03/24/caffeinated-a- hist...](https://well.blogs.nytimes.com/2014/03/24/caffeinated-a-history-of- our-favorite-stimulant>) for a deeper dive.

</comment></comment><comment><USER5> Caffeine, and coffee directly, has been popular in America since the revolutionary war. The title is clickbait because all the article talks about is a weird lawsuit relating to Coca-Cola.

<comment><USER6> Coffee and Coffee Houses were part of the US Revolution. Americans switched from tea to coffee as the tension grew with England.

[http://ushistoryscene.com/article/american- drinking/](http://ushistoryscene.com/article/american-drinking/)

</comment></comment><comment><USER7> If caffeine were invented in the 60s or 70s, it almost certainly would have been banned along with amphetamines and everything else. Same with alcohol and nicotine.

<comment><USER8> Amphetamines predate the 1960s: See [https://www.sciencehistory.org/distillations/magazine/fast-t...](https://www.sciencehistory.org/distillations/magazine/fast- times-the-life-death-and-rebirth-of-amphetamine) and [https://www.pbs.org/wgbh/pages/frontline/shows/drugs/buyers/...](https://www.pbs.org/wgbh/pages/frontline/shows/drugs/buyers/socialhistory.html)

One takeaway from the article, IMO, is that American hypocrisy and flip- flopping wrt drug use has a long history. Something that is acceptable today becomes unacceptable tomorrow and then later acceptable again.</comment></comment>