Ask HN: How to "scare" teens wrt privacy issues - <AUTHOR> I'm teaching some high-school teens (~15 years old) about privacy, but they seem to completely disregard the issue, giving away their data without worry.
I'd like to shake them up a bit, show them something creatively "scary" to help them realize the issues that come with giving away data.
Some additional information:
- This is a Western European country (no real issues with privacy since WWII);
- They don't mistrust the government ("Big Brother"-style arguments have little effect);
- They have little financial/working experience (arguments such as "your insurance will cost more" or "your future employer might not hire you" are inefficient);
- They haven't had enough partners to be really concerned about things such as "your future partners will know everyone you went out with".
Some ideas (untested, since not practical):
- Compile a virtual profile with everything publicly available about them, especially photos, which seem to provoke a stronger reaction than factual data such as addresses, names of relatives, etc. Problem: requires too much manual effort.
- Find out their e-mail addresses (if publicly available) and trigger "Forgot password"-style messages, to simulate them being targeted by hackers. Problem: borderline ethical.
- Apply some form of spear-phishing using information publicly available, such as "Hi Jane, this is Mary <family/friend's name found via public information>, I got this link from John <another family/friend's name>, it's quite funny!". Problem: requires too much manual effort.
Otherwise, I'm afraid I'll have to resort to listing some actual cases of teens abused due to exposing their data, which is not as efficient ("that would never happen to ME!"). <comment><USER2> Please don't try to scare them. That tactic is very often counterproductive.

Educating them in a factual way that doesn't appeal to their emotions is a better tactic, in my opinion. Perhaps a research project where they actively find all the publicly available data on themselves that they can, combined with lessons about the impact of data leakage on regular people would be sufficient? I don't know.

In the end, teenagers (like everyone else) will make their own decisions about these things. Even if they make decisions that you and I consider foolish, they have the right to decide for themselves. You job is just to ensure that they have the information and understanding they need to make informed decisions, not to evangelize a particular stance.

</comment><comment><USER3> One nice project is Data Selfie. The project is no longer active but may still work, or you can self-host (it is OSS).

Watch the video to see how it works. Especially the predictive analytics may be a powerful way to provide insight into how much of ourselves we give away while surfing the web.

[https://dataselfie.it/](https://dataselfie.it/)

</comment><comment><USER4> You can't scare them. They have lived their entire lives with ubiquitous digital surveillance. They are better equipped to deal with it than you or me because they have been breathing it since birth. It's not novel. It's not emerging. There wasn't a time before Google. Before the gwot. Before cookies. Before credit scores.

A fifteen year old has been hearing adults prattle on about this stuff since the day they started school. That's 2010. That's Chrome. And Facebook. It's mature as tech backed by billion$.

The ones out of touch are those of us imagining there are still horses in the barn. Or to put it another way, it's a room full of smart people and everyone should take that seriously. This I learned from talking to my teen. Instead of at them.

</comment><comment><USER5> Don't scare them directly about the data being gathered. Teach them history. Teach them how authoritarian governments operated. They will connect two and two over time.

</comment><comment><USER6> Could you setup a local wifi network with monitoring, showing which URLs get accessed in real-time? These days connections are encrypted so you can only see domain names. Then explain that happens when they connect to any public wifi. How can you trust "<restaurant> free wifi" is really run by that restaurant and not the person at the next table?

> Find out their e-mail addresses (if publicly available)

That's probably against data protection rules set by the school.

</comment><comment><USER7> Show them how easy it is to catfish online. How easy it is to fake even a live webcam.</comment>


Arduin-o-Phone - <AUTHOR> https://learn.adafruit.com/arduin-o-phone-arduino-powered-diy-cellphone

<comment><USER2> 2G, T-Mobile only in the US (says AT&T is not selling 2G SIMs anymore and is shutting down its 2G network), but otherwise looks very tasty.

<comment><USER3> It appears to be equivalent to a feature/dumbphone, in which context even a 2G network is usually overkill.</comment></comment>


The RDBMS Is Dead (2018) - <AUTHOR> http://tdan.com/the-rdbms-is-dead <comment><USER2> One thing I find interesting is that there are very few "universal" tools for document databases like there are for RDBMS, even though the APIs for these document databases overlap substantially.

For RDBMS, for instance, you have APIs such as ODBC and JDBC that let you connect to different products. There also are tools like Datagrip, as well as tools that can do unison queries against multiple databases (e.g. JBoss Data Virtualization)

The basic API of mongodb, elasticsearch, arangodb, couchbase, cassandra, etc. are almost the same when it comes to CRUD operations. Queries are different between those databases but I'm pretty sure you could cross compile AQL and N1QL most of the time, make an abstraction layer that lets you do mongo-style queries against arango, etc.

Another factor is that some of the "post-relational" database types are still relational. A columnar database can be perfectly relational, it's just another way to implement it. I've seen some analytics vendors that just don't get document databases, SPARQL, etc. because they can't see past the pure speed of SQL with a columnar internal representation.

</comment><comment><USER3> tl;dr "The RDBMS is not so much dead as rebranded."

This is one of those clickbait-by-arguing-semantics articles. If you follow databases, you won't find anything new or interesting here.</comment>


Ask HN: Are there drawing tool plugins to be used within forums? - <AUTHOR> I'm looking for discussion forum websites (e.g. stack overflow) that has a built in drawing tool in its text editor.
Are there any out there?
And are there any tools/plugins to do this on your own website? <comment><USER2> Whenever I need to draw something, I open [https://www.Photopea.com](https://www.Photopea.com) in the browser (loads very fast) and draw the thing. Then I press File - Publish on Imgur (the new panel opens with the PNG image on Imgur). Then I just copy the URL and paste it into a forum / chat.

You can also paste the screenshot into Photopea and draw into it, crop it etc.

BTW. I am an author of Photopea :) It has an API, that allows embedding it into a website ([https://www.photopea.com/api/playground](https://www.photopea.com/api/playground)), but I am not aware of any large website using it.

<comment><USER3> Amazing, how does one write such an app? Is it mostly done with canvas? I'd like to make something like powerpoint in the future, but not sure where to start.

<comment><USER2> Actually, it is quite simple. You just need some basic computer (I use a 400 USD laptop) and a couple of thousands of hours of time :)

You can start by making a PPTX file parser, or PPTX to HTML converter, and then you can start adding some user interface, etc.

<comment><USER3> Wasn't clear, didn't mean powerpoint but like it. Need to draw graphics on screen and manipulate them.

</comment></comment></comment></comment><comment><USER4> [https://ux.stackexchange.com/](https://ux.stackexchange.com/) < has a built in version of the Balsamiq ([https://balsamiq.com/](https://balsamiq.com/)) UI drawing tool.

There is a write up on the integration here - [https://blog.balsamiq.com/uxstackexchange/](https://blog.balsamiq.com/uxstackexchange/)

<comment><USER5> It looks really cool, but it looks like a handcoded integration. The OP wouldn't be able to integrate with his/her forum/blog software.

</comment></comment><comment><USER6> [https://electronics.stackexchange.com/](https://electronics.stackexchange.com/) has an embedded circuit editor from [https://www.circuitlab.com/](https://www.circuitlab.com/) , and it works extremely well.

</comment><comment><USER7> Probably not what OP is looking for, but you can
 an ASCII diagram. It's my favorite way to add more info to a particularly complex piece of code (parsers, state machines, etc.), right there in a comment. You need to update the diagram when shit changes, which is pretty annoying, but all in all it's a fun, quirky way to improve the source code reading experience.

[http://asciiflow.com/](http://asciiflow.com/)

<comment><USER8> This so needs a ditaa[0] integration.

[0]: [https://github.com/stathissideris/ditaa](https://github.com/stathissideris/ditaa)

</comment></comment><comment><USER9> [https://go.gliffy.com/go/html5/launch](https://go.gliffy.com/go/html5/launch)

Not embedded and it's horribly expensive, but very nice. There are a bunch of similar systems, but not quite as smooth.

draw.io is licenced under APL and usable. [https://github.com/jgraph/drawio](https://github.com/jgraph/drawio)

Then there is the horrible but very practical: [https://docs.google.com/drawings/](https://docs.google.com/drawings/)

<comment><USER10> I don't think google docs drawing interface is ... HORRIBLE. But it's not the best. I have used it multiple times though, can't really beat the ease of access when working on a google doc that needs a simple diagram.

</comment></comment><comment><USER11> Sugar ([https://github.com/elektronaut/sugar](https://github.com/elektronaut/sugar)) has a custom drawing tool (called Napkin), though it's pretty bare-bones (line-drawing only) and uses Flash (eugh).

</comment><comment><USER12> Futaba style imageboards used to come with a Java applet called oekaki that let people draw and post images.

I wouldn't recommend trying to track it down, though.

</comment><comment><USER13> Try Minipaint: [https://github.com/viliusle/miniPaint](https://github.com/viliusle/miniPaint)

See this for example: [https://github.com/Immortalin/Greeting-Card- Creator](https://github.com/Immortalin/Greeting-Card-Creator)

</comment><comment><USER14> When I first saw the headline I was thinking did you mean oekaki-style drawing? In which case... ChickenPaint

[https://github.com/thenickdude/chickenpaint](https://github.com/thenickdude/chickenpaint)

But I take it you meant more like Visio or Powerpoint style stuff, for that I got nothing.

</comment><comment><USER15> Maybe Draw.io has something? I know they are a pretty large Confluence addon.

</comment><comment><USER16> Seems like markdeep would be straightforward to add. [https://casual- effects.com/markdeep/](https://casual-effects.com/markdeep/)

</comment><comment><USER17> Here's one I wrote: [https://danielx.net/pixel- editor/](https://danielx.net/pixel-editor/)

</comment><comment><USER18> Something like [https://awwapp.com/info/?section=embed](https://awwapp.com/info/?section=embed) ?

</comment><comment><USER19> Nice and simple tool for 'draw an image, get url' is [https://scri.ch](https://scri.ch)

</comment><comment><USER20> Maybe try Literally Canvas? [http://literallycanvas.com/](http://literallycanvas.com/)

</comment><comment><USER21> I've been wondering why this doesn't exist for years

</comment><comment><USER22> Interesting... how do you imagine providing the drawing?

</comment><comment><USER23> Given the state of most internet fora it would be a dickbutt machine..

</comment><comment><USER24> Why not let your users draw in the multitude of tools already out there that work better than some half baked js monstrosity and then allow them to just embed PNGs or jpegs?

<comment><USER25> Too much friction.

Most of the time I don't bother to put a screenshot since I have to :

\- open my screenshot program \- save the screenshot somewhere on my disk where I will find it later \- remember which website doesn't suck where to upload the screenshot \- actually upload the screenshot \- paste a link

I'm not a JS bloat fan but int this case I'd rather take the bloat ;-)

<comment><USER26> Who is opening a screenshot program and not using a hotkey?

Most image hosting sites like imgur let you paste an image from your clipboard (I think you can even do minor editing on their site now). Forums are also starting to allow pasting of images such as Discourse.

An editor embedded might be a fun project but it's completely unnecessary.

<comment><USER27> How many people know the shortcuts for making a screenshot? How many do even know how to make one, or even what it is?

Outside of the IT world, I think very few people are familiar with those things.</comment></comment></comment></comment>


People living in Texas border enclaves are unsure of future - <AUTHOR> https://www.washingtonpost.com/news/local/wp/2018/01/30/feature/people-living-in-texas-border-enclaves-are-unsure-of-future/?utm_term=.e0df87d52003 <comment><USER2> Some people like it to play on difficulty level "hard".</comment>


Erik Naggum, R.I.P. - <AUTHOR> http://open.salon.com/blog/kent_pitman/2009/06/24/erik_naggum_rip <comment><USER2> I don't know a way of saying the following without looking like an asshole, considering the occasion.

If you find yourself admiring Naggum's acerbic wit and online presence, that's fine. But please please look for ways to live your life so that when you die, the fact will be discovered not because some irc channel regulars notice your longer-than-usual absence.

Please try very hard to arrange that there are people in your life who you love and who love you, and with whom you're in daily contact. People whose fondest memory of you will be as a spouse, a parent or an intimate friend, and not having been cursed by you to hell and back in flawless and elegant English.

Many of us here can easily rationalize ourselves into writing a five-page missive on a technical topic that will utterly demolish the sack of shit our opponent is, at the same time making the merits of our cause blindingly obvious to anyone with a three-octal-digits IQ. Please balance the time investment for writing that five-page missive against the possibility of spending that time on your family, or, if you're single, and then it's vastly more important yet, on looking for a person of appropriate gender you'd really like to spend time with.

Also, don't be the kind of person who's polite with others in face-to-face conversation, and then appallingly rude to the same person in email or online forums of any kind. You'll find it's easy to rationalize such behavior to yourself by appealing to lofty principles. Don't.

The world is cold, and we'll all be dead in the long run. Please have someone to hug and be stupidly sentimental with, and share some happiness with.

Thanks for listening, and sorry for being an asshole.

<comment><USER3> I am ambivalent about this. A friend of mine was found dead in his house last year, a week or three after he died. Many of his closest friends had moved away to other continents; others were trying to respect his desire for privacy by not dropping in unannounced. He had his problems, but he was very well loved. But it wasn't enough.

I agree with you that it's important that we live our lives in such a way as to create happiness; I think it's okay whether the happiness is for ourselves or for others.

But I think that the most effective way to do that is to carry forward the advancement of human knowledge, because ignorance is the source of unhappiness. It's worth depriving oneself of a bit of day-to-day pleasure if that's what it takes to develop your capacities to the point where you can make a real contribution. As usual, I want to point to Richard Hamming's "You and Your Research": <http://www.cs.virginia.edu/~robins/YouAndYourResearch.html>

<comment><USER2> I'm sorry to hear about your friend.

I see, and appreciate, your link to Hamming's article and raise you Samuel Beckett's _Krapp's Last Tape_ in counterbalance: <https://www.msu.edu/~sullivan/BeckettKrapp.html>

<comment><USER4> That's a pretty depressing story, but very powerful, too, and a very effective counterbalance.

</comment></comment></comment></comment><comment><USER5> Pitman is right: people are contradictory.

In the Naggum thread the other day I criticized him for polarizing and ultimately damaging the Lisp community. What I didn't say is that I almost always enjoyed reading him, even at his most noxious. He was a master not only of Common Lisp but of English, the latter to a degree surprising in a non- native speaker (Norwegians routinely excel at it but he was over the top). And through reading him I became fond of him, something that by no means always happens. I'm not surprised to hear people say that he was a nice person. People are contradictory.

<comment><USER3> I agree that people are contradictory and that Naggum was a master of CL and English.

<comment><USER5> I've been reading various things about Naggum that have appeared in the last few days. It's changed my view of him. For example, I wouldn't write "consummate intellectual bully" to describe him anymore. He was more subtle than that (though his language was not) and had a kind of integrity that bullies don't. I hadn't read enough of him to grok this, but recent posts by his intelligent admirers caused me to take a deeper look. Truly a fascinating character.

Online communication is a limited medium that is prone to feedback loops of escalating misunderstanding. It's easy to slip into thinking that one is talking to a computer rather than another human being because, in a way, one is. At that point, why bother with anything other than the intellectual satisfaction of formulating what you have to say in the sharpest, most absolute way possible? Many of us are prone to this. Naggum took it to an extreme. I still think there's something to criticize here, but perhaps not in terms like nasty, cruel, etc. It has more to do with dissociation (as when the cognitive apparatus becomes disconnected from emotional or other information). Which is another something many of us are prone to.

One other point about Erik Naggum that deserves a little more attention than it's gotten: during much of the time he was writing this stuff he was suffering physically pretty badly. That's not an excuse, but it does change my picture of what was going on there.

</comment></comment></comment><comment><USER6> Worth the read just for "even the best of us sometimes make stupid mistakes that it would be grossly unfair to believe were one's true nature". I would never have expected to hear that from Naggum.

</comment><comment><USER7> I, for one, agree that the world is full of people, if not inherently stupid and frustrating, then acting stupid in a frustrating way. They're everywhere - teaching our kids in high schools, running our companies, writing the programs I rely on to work. They're people who have gotten better at "satisfying the practical aspects" (bullshitting their way through) instead of knowing what they're doing. From the little I got to read of his ideas, I hope Erik would have agreed, that with bullshitters, there is no appropriate discourse, and the only phrase that comes closest is "Fuck You".

</comment><comment><USER8> I don't know if this is a perfect representation of Erik's style, but his rant on XML is an enjoyable read: <http://www.schnada.de/grapt/eriknaggum- xmlrant.html>

Edit: I posted this because I am mostly unfamiliar with the man's life and work, and enjoyed reading about him.

<comment><USER9> It was posted recently (<http://news.ycombinator.com/item?id=666611>). But sometimes a lot of XML rantiness isn't a bad thing. <grin>

</comment></comment><comment><USER10> A quote:

"The purpose of human existence is to learn and to understand as much as we can of what came before us, so we can further the sum total of human knowledge in our life. "

RIP

</comment><comment><USER11> Collection of Naggum quotes:

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

<comment><USER12> "Some people are little more than herd animals, flocking together whenever the world becomes uncomfortable for any reason, seeking the comfort of those who agree with them, do not contradict them, and take care of their emotions. I am not one of those people. If I had a motto, it would probably be Herd thither, me hither."

Truly great.

</comment></comment><comment><USER13> Ulcerative colitis is a terrible disease. I could totally understand him being a very irritable guy.

</comment><comment><USER14> I posted this link earlier, but reading it again in this context makes more sense

<http://www.well.com/user/nocebo/>

</comment><comment><USER15> Wandering around Naggum's web site I wonder what will happen to his work when his domain expires?

What will happen to our work when we die?

Is there a place for people already gone where we can go and see their work as they left it when they died? Kind of a graveyard but without the creepiness?

I would like to have access to all the work from [insert hacker name here], if he makes it available, or if he so wishes in his will.

I wish my site would be up (not that I have one) forever for everybody to see, and read, and copy, and do stuff with whatever I left.

Wishing somebody may finish whatever we left unfinished...

<comment><USER16> That's the thought I was pondering for quite some time: eternal hosting. How does one make the site eternally available?

It seems like service like this doesn't exist, possibly because nearly everyone is lost in the current moment.

The serivce that I think of should be something like cryonics. Well, not exactly. Cryonics suspends human beings for indefinite period of time in hopes of time being in hopes for future resuscitation. Eternal hosting should keep site alive, just not updated by the author anymore. But the problem is similar in both cases: how to preserve something valuable for indefinite period of time with maximum probability, no breakage and no author's intervention, to the best of our estimates and technological ability.

Seems like our society doesn't have services designed for eternity.

<comment><USER17> <http://www.youvebeenleftbehind.com>

"Services Overview

We have set up a system to send documents by the email, to the addresses you provide, 6 days after the "Rapture" of the Church. This occurs when 3 of our 5 team members scattered around the U.S fail to log in over a 3 day period. Another 3 days are given to fail safe any false triggering of the system."

Except it emails a zipped copy of your online stuff to a trusted second party.

I call it "Ivecheckedout.com"

Ahahhahahaha I love the intarwebs.</comment></comment></comment>


Adoption Trends in Cloud Computing - <AUTHOR> http://blog.aerofs.com/adoption-trends-in-cloud-computing/

<comment><USER2> Interesting, I actually work on a large scale private cloud storage product which sells primarily to enterprise and government. Customers cannot get enough of it, and there is definite move away from traditional enterprise data storage using SAN/fibre channel and block storage over NFS, towards object storage on commodity hardware and HTTP/REST. AWS protocols are becoming the standard everyone uses for HTTP data, as it means applications built for S3 can usually just be pointed to a new endpoint. I do wish there was a real effort to standardize this however, because most vendors only really support a subset of the options and headers, especially stuff like versioning, multi- part-write, and Amazon has changed their spec numerous times already.

<comment><USER3> I tried to search for S3-API-compliant alternatives to amazon. So far I've only come up with the S3 wikipedia entry:

Google Cloud Storage, Openstack Swift, Cloud.com's CloudStack, Cloudian, Connectria's Cloud Storage, Eucalyptus, Nimbula, Riak CS, Ceph, Caringo, and LunaCloud

Some of the above may already be defunct -- do you happen to know any that I've missed?

<comment><USER2> The product I work is called Hitachi Content Platform, you can see S3 listed under the "Integration" section of this page: [http://www.hds.com/products/file-and-content/content- platfor...](http://www.hds.com/products/file-and-content/content-platform/)

I believe EMC has a similar functionality in Atmos. [http://www.emc.com/collateral/software/data- sheet/h5770-atmo...](http://www.emc.com/collateral/software/data- sheet/h5770-atmos-ds.pdf)

</comment></comment></comment><comment><USER4> How does Openstack compare with AWS, from a devops standpoint? Is the learning curve similar or steeper?

<comment><USER5> From what we've seen with our customers, there's some initial heavy lifting around virtualizing your infrastructure, but once the infrastructure is running OpenStack, using it is remarkably similar to AWS/EC2

</comment></comment><comment><USER5> Interestingly, we tried using 'aws' instead of 'ec2' as a keyword, but the noise level around it was way too high. Results included GPU applications, the wireless spectrum, and the American Welding Society...

</comment><comment><USER6> Great article, excellent interpretation of the google trends data. As a search marketer I concur with your findings and I think you are spot on in the interpretation of the google data.

</comment><comment><USER7> The responsive layout is completely broken in iOS 7.1 Safari. There's way too much extra padding, so each line is only 1-3 words long.</comment>


Portland sees peaceful night of protests following withdrawal of federal agents - <AUTHOR> https://www.theguardian.com/us-news/2020/jul/31/portland-protests-latest-peaceful-night-federal-troops-withdrawal <comment><USER2> Did the author write this article too early? There's a viral video from last night about a protester burning himself after failing to launch an explosive at the federal courthouse.

<comment><USER3> > Did the author write this article too early?

Charitably: yes

Realistically: the narrative bias pulls pretty hard

</comment></comment><comment><USER4> I know that people will complain about the news source, so here are local journalists covering the same phenomenon [0][1]. The past two nights have been marked by a withdrawal of federal and city police, and a corresponding drop in violence, riots, property destruction, and injuries.

It is almost as if the cops are the ones who instigate violence, and not the protestors.

[0] [https://www.oregonlive.com/portland/2020/07/portland- protest...](https://www.oregonlive.com/portland/2020/07/portland-protests- continue-friday-with-questions-about-how-state-police-will-respond.html)

[1] [https://www.opb.org/article/2020/07/31/portland- protesters-g...](https://www.opb.org/article/2020/07/31/portland-protesters- gather-peacefully-thursday-as-federal-officers-depart/)

<comment><USER5> > It is almost as if the cops are the ones who instigate violence

Or it's temporary and we're a couple weeks away from kids getting shot if CHAZ/CHOP is an example.

<comment><USER4> People have already been shot [0], so I'm not sure I see your point. I'm not sure why you've brought up CHAZ/CHOP other than as a non sequitur; people are not attempting to establish an autonomous zone downtown.

Nonetheless, I'll take your bet; I bet that the violence will not return until the police start engaging again. I can agree that the peace is temporary, but to me, it is merely because there is currently a handoff from federal police to OSP.

[0] [https://www.opb.org/news/article/federal-officers- portland-p...](https://www.opb.org/news/article/federal-officers-portland- protester-shot-less-lethal-munitions/)

</comment></comment></comment><comment><USER6> Good

</comment><comment><USER7> Makes sense now that all the violent protesters have been arrested.

</comment><comment><USER8> Just the right trying to bring their straw man of antifa violence to fruitition.

</comment><comment><USER9> They always had the choice to peacefully protest. Everyone knew they were purposefully attacking the courthouse.

Mostly a distraction from real police reform. Federal police arresting violent white protestors is low on the list of important priority police reform issues in the US. Seemed like two groups were trying to make an important moment about themselves.

I'd watch it start to descend into on Twitter, and the feds would let them protest for 4-6 hours until around midnight, usually when it got really bad before declaring it unlawful. And everyone did their song and dance. Then the next day the news and political punditry would be all about vandalizing some courthouse and nothing else.</comment>


How BigIntegers work in JavaScript - <AUTHOR> http://silentmatt.com/blog/2011/10/how-bigintegers-work/

<comment><USER2> Here is a javascript bigint library by Leemon Baird

<http://www.leemon.com/crypto/BigInt.js>

It's about the best I've seen and embodies all the principles that are being explained by Matt.

</comment><comment><USER3> Seriously, for the number -123, the array [3, 2, 1] has the least significant digit in position zero?

[edit] Ah ha, printed arrays have position zero on the left. I thought it was on the right.

<comment><USER2> That's quite standard. The sign can be taken care of separately if one wishes.

The reason for putting the least significant digit first is that carries accumulate towards the most significant digit in ordinary arithmetic. Thus many of the simplest operations want to work from least significant to most significant digit. A final carry out at the top might add an extra digit to the result. It would be really annoying to work with arrays that had most significant digit first. If you had an extra digit you'd have to shift the entire array one place to accommodate it!

</comment></comment><comment><USER4> So does this mean using biginteger for small numbers could require almost 30x more memory?

<comment><USER2> A serious bignum library wouldn't use base 10. I understood that he intended that you use base 10^15 or something like that. And even that was only by way of illustration.

A more standard approach when using doubles would be to use base 2^32. This is important if you want to implement a Schoenhage-Strassen FFT, which certainly makes use of the fact that the base is a power of 2.

<comment><USER5> It's actually base 10^7 :) The reason for that is that at the lowest level, the _result of any operation_ on a single digit needs to fit in a JavaScript Number. Since you sometimes have to multiply two digits and 64-bit floats have about 15 digits of precision, the largest power of 10 that will never lose precision is 10^7 (because 10^7 * 10^7 = 10^14).

Of course, it would be more efficient to use a power of two, but using a power of 10 makes converting back and forth between strings (in decimal) quite a bit faster. In my original use case that was a large factor, so it's what I went with.

<comment><USER2> I understand.

Of course you can also multiply 32 x 32 -> 64 bits in Javascript. But of course you need more than one operation to do it.</comment></comment></comment></comment>


A Guide to Function Composition in Ruby - <AUTHOR> https://www.ghostcassette.com/function-composition-in-ruby/ <comment><USER2> That is a really great write up! I'm not sure I'm sold on using the proposed syntax, the * character or a . would IMO work much better here.</comment>


Google Labs: Books Ngram Viewer - <AUTHOR> http://ngrams.googlelabs.com/

<comment><USER2> I'm very happy to see Google offering the ngram counts for free download (<http://ngrams.googlelabs.com/datasets>), which I wasn't expecting, given their earlier web corpus data release on DVDs. Maybe we'll see an update on that front, too.

</comment><comment><USER3> The "long s" causes problems with OCR and may be an easy-ish fix, if someone from Google were to take a look.

[http://ngrams.googlelabs.com/graph?content=fame,same&yea...](http://ngrams.googlelabs.com/graph?content=fame,same&year_start=1750&year_end=2008&corpus=0&smoothing=3)

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

</comment><comment><USER4> Most interesting I've seen so far:

Wall Street vs Silicon Valley: [http://ngrams.googlelabs.com/graph?content=wall+street,silic...](http://ngrams.googlelabs.com/graph?content=wall+street,silicon+valley&year_start=1900&year_end=2010&corpus=0&smoothing=3)

Telephone, Internet: [http://ngrams.googlelabs.com/graph?content=telephone,+intern...](http://ngrams.googlelabs.com/graph?content=telephone,+internet&year_start=1900&year_end=2008&corpus=0&smoothing=1)

Microsoft, Netscape, Yahoo, Google, Facebook: [http://ngrams.googlelabs.com/graph?content=Microsoft,Netscap...](http://ngrams.googlelabs.com/graph?content=Microsoft,Netscape,Yahoo,Google,Facebook&year_start=1970&year_end=2008&corpus=0&smoothing=1)

Great War, Hitler, Communist, September+11: [http://ngrams.googlelabs.com/graph?content=Great+War,Hitler,...](http://ngrams.googlelabs.com/graph?content=Great+War,Hitler,Communist,September+11&year_start=1900&year_end=2008&corpus=0&smoothing=1)

<comment><USER5> What are those weird cycles in the Wall Street data ? Is that in any way related to the bubble/retraction cycle ?

<comment><USER4> Here's US GDP growth: [http://www.google.com/publicdata?ds=wb- wdi&met=ny_gdp_mk...](http://www.google.com/publicdata?ds=wb- wdi&met=ny_gdp_mktp_kd_zg&idim=country:USA&dl=en&hl=en&q=us+gdp+growth)

This could be a better chart: <http://en.wikipedia.org/wiki/File:GDP_growth_1923-2009.jpg>

There might be some kind of relationship there, but I don't think it's the whole explanation.

</comment></comment></comment><comment><USER6> I think overuse of the word "cool" might finally be heading downward. And it's interesting to see the blips in the 70's and 80's of "groovy" and "rad" respectively.

[http://ngrams.googlelabs.com/graph?content=cool%2Chip%2Cgroo...](http://ngrams.googlelabs.com/graph?content=cool%2Chip%2Cgroovy%2Crad%2C+neat&year_start=1920&year_end=2008&corpus=5&smoothing=3)

</comment><comment><USER7> This is really fun to play with: <http://goo.gl/mNSDD>

<comment><USER8> Why would you use a shortener when there is no need? Especially when the URL is useful as it is here.

<comment><USER7> It's fun to track how many clicks it gets, and I'd already had it on my clipboard for twitter :)

</comment></comment></comment><comment><USER9> Country names/adjectives: English,England,British,French,France,German,Germany

In most cases the adjectival form of a country tracks pretty closely to the nominal form (e.g. France vs French and others) except for the case of England vs English/British, the latter two spike from almost nothing around 1795. I can't think of a good explanation for why those two forms were so rare in comparison with "England" before 1795, anyone have an idea?

[http://ngrams.googlelabs.com/graph?content=English%2CEngland...](http://ngrams.googlelabs.com/graph?content=English%2CEngland%2CBritish%2CFrench%2CFrance%2CGerman%2CGermany&year_start=1700&year_end=2008&corpus=0&smoothing=3)

</comment><comment><USER9> The parsing of contractions/words with apostrophes is broken/unsupported:

[http://ngrams.googlelabs.com/graph?content=can%27t%2Ccouldn%...](http://ngrams.googlelabs.com/graph?content=can%27t%2Ccouldn%27t%2Cwouldn%27t%2Cshouldn%27t%2Cdon%27t&year_start=1900&year_end=2008&corpus=0&smoothing=0) vs [http://ngrams.googlelabs.com/graph?content=t%2Ccan%27t%2Ccou...](http://ngrams.googlelabs.com/graph?content=t%2Ccan%27t%2Ccouldn%27t%2Cwouldn%27t%2Cshouldn%27t%2Cdon%27t&year_start=1900&year_end=2008&corpus=0&smoothing=0)

</comment><comment><USER10> The first thing I tried out was different 3-grams of "Colorless green ideas sleep furiously". Here are the results

[http://ngrams.googlelabs.com/graph?content=Colorless+green+i...](http://ngrams.googlelabs.com/graph?content=Colorless+green+ideas%2Ccolorless+green+ideas%2C+green+ideas+sleep%2C+ideas+sleep+furiously%2CColorless+green+ideas+sleep+furiously&year_start=1920&year_end=2008&corpus=0&smoothing=3)

The correlation patterns and the year where the curve picks up are interesting. It would be illuminating to map the peaks.

</comment><comment><USER11> An interesting thing I noticed is that the usage of the word "the" has decreased by about 1% in the last century (which I think is significant considering the data). I wonder what the reason for this is.

</comment><comment><USER12> Using American English throughout:

inflammable, flammable: [http://ngrams.googlelabs.com/graph?content=inflammable%2Cfla...](http://ngrams.googlelabs.com/graph?content=inflammable%2Cflammable&year_start=1800&year_end=2000&corpus=5&smoothing=3)

regardless, irregardless: [http://ngrams.googlelabs.com/graph?content=inflammable%2Cfla...](http://ngrams.googlelabs.com/graph?content=inflammable%2Cflammable&year_start=1800&year_end=2000&corpus=5&smoothing=3)

</comment><comment><USER4> I love this. Here's the story of the world since 1750. The scientific revolution, followed by the industrial revolution, followed by the computer revolution, with the internet revolution just starting:

[http://ngrams.googlelabs.com/graph?content=science,industria...](http://ngrams.googlelabs.com/graph?content=science,industrial,computer,+internet&year_start=1750&year_end=2008&corpus=0&smoothing=3)

</comment><comment><USER13> Hey Google!

Combine this with Google Sets ( from Labs as well [http://labs.google.com/sets?hl=en&q1=immigration&q2=...](http://labs.google.com/sets?hl=en&q1=immigration&q2=taxation&q3=economy&q4=&q5=&btn=Large+Set) ) so that I can feed a list generated by Sets into Ngrams.

Thanks! (And a pony too.)

</comment><comment><USER14> Try "war": ([http://ngrams.googlelabs.com/graph?content=war&year_star...](http://ngrams.googlelabs.com/graph?content=war&year_start=1900&year_end=2008&corpus=0&smoothing=3)). Nice peaks on WWI, WWII, and Vietnam; maybe a tiny peak on the Gulf War. Any other search terms where you can see meaningful fluctuations?

<comment><USER15> is good about to triumph over bad ?[http://ngrams.googlelabs.com/graph?content=angel,devil&y...](http://ngrams.googlelabs.com/graph?content=angel,devil&year_start=1820&year_end=2008&corpus=0&smoothing=3)

<comment><USER15> Man vs Machine [http://ngrams.googlelabs.com/graph?content=PC,+secretary&...](http://ngrams.googlelabs.com/graph?content=PC,+secretary&year_start=1820&year_end=2008&corpus=0&smoothing=3)

</comment></comment></comment><comment><USER16> i'm surprised that "star wars" has never been able to eclipse "galoshes":

[http://ngrams.googlelabs.com/graph?content=star+wars,+galosh...](http://ngrams.googlelabs.com/graph?content=star+wars,+galoshes&year_start=1920&year_end=2008&corpus=0&smoothing=3)

</comment><comment><USER17> Someone please explain why "I love you" is cyclical???

[http://ngrams.googlelabs.com/graph?content=i+love+you&ye...](http://ngrams.googlelabs.com/graph?content=i+love+you&year_start=1920&year_end=2008&corpus=0&smoothing=3)

<comment><USER4> If you remove the smoothing it looks more spiky then cyclical: [http://ngrams.googlelabs.com/graph?content=i+love+you&ye...](http://ngrams.googlelabs.com/graph?content=i+love+you&year_start=1920&year_end=2008&corpus=0&smoothing=0)

It's possible that's more to do with the distribution of books Google has scanned than anything.

<comment><USER4> WTF? Why the downvote!?

</comment></comment></comment><comment><USER18> [http://ngrams.googlelabs.com/graph?content=do+it+all+by+your...](http://ngrams.googlelabs.com/graph?content=do+it+all+by+yourself,outsource+it&year_start=1920&year_end=2008&corpus=0&smoothing=3)

<comment><USER18> [http://ngrams.googlelabs.com/graph?content=can+you+help+me,l...](http://ngrams.googlelabs.com/graph?content=can+you+help+me,let+me+help+you&year_start=1920&year_end=2008&corpus=0&smoothing=3)

</comment></comment><comment><USER19> [http://ngrams.googlelabs.com/graph?content=color,colour&...](http://ngrams.googlelabs.com/graph?content=color,colour&year_start=1820)

Note the effects of the world wars.

</comment><comment><USER3> quick brown fox, brown fox, slow brown fox

[http://ngrams.googlelabs.com/graph?content=quick+brown+fox,b...](http://ngrams.googlelabs.com/graph?content=quick+brown+fox,brown+fox,+slow+brown+fox&year_start=1900&year_end=2008&corpus=0&smoothing=5)

Am I reading that correctly: People rarely talk about brown foxes without mentioning their speed, which is never slow?

More importantly: if I wrote and published a book about a slow brown fox, could I potentially do to foxes what Chomsky did to green ideas?

<comment><USER3> wizard,magician,Harry Potter [http://ngrams.googlelabs.com/graph?content=wizard,magician,H...](http://ngrams.googlelabs.com/graph?content=wizard,magician,Harry+Potter&year_start=1920&year_end=2008&corpus=0&smoothing=6)

</comment></comment><comment><USER20> Great! It just lacks an option for case-insensitive search.

</comment><comment><USER9> one,two,three,four,five,six,seven,eight,nine,ten

[http://ngrams.googlelabs.com/graph?content=one%2Ctwo%2Cthree...](http://ngrams.googlelabs.com/graph?content=one%2Ctwo%2Cthree%2Cfour%2Cfive%2Csix%2Cseven%2Ceight%2Cnine%2Cten&year_start=1900&year_end=2008&corpus=0&smoothing=0)

In order, except "ten" shows up between "six" and "seven".

<comment><USER21> perfect example of <http://en.wikipedia.org/wiki/Benford%27s_law>

<comment><USER9> Exactly

</comment></comment></comment><comment><USER4> I love the "whale fail" image you get if you have an error: <http://imgur.com/qCDCj>

</comment><comment><USER22> "computer" and "internet" reveal Y2K problem.

</comment><comment><USER23> There has been a ginormous increase in the use of the word "ginormous" in the last decade.

</comment><comment><USER24> Google trends for books?

</comment><comment><USER25> Try "nerd". Like what you would expect. Now, try "sexy nerd". Sigh!</comment>


Ask HN: Is Google putting ads in map directions? - <AUTHOR> Yesterday I was driving and had Google maps directions on audio.  For the first time, one instruction said: "In 300 feet, make a right at the In and Out Burger."  It's the first time I heard a business name in the directions.  The interesting thing is that this was making a right onto a freeway, and on the corner was the back of a large strip mall.  There could have been 4-5 other business names it could have said.<p>Has anyone else noticed this before? <comment><USER2> It's called landmark routing and available for a couple of years. Usually in countries without complete street name coverage where "go left after the post office" is what people used for ages (even if the post office moved).

[https://googleindia.blogspot.com/2009/12/turn-right-after- pe...](https://googleindia.blogspot.com/2009/12/turn-right-after-petrol-pump- landmarks.html)

[https://ezdrivingdirections.com/](https://ezdrivingdirections.com/) "[Mapquest] offers landmark-assisted routing by providing places of interest along the way for both driving and walking directions. For example, it may tell you to turn left on Route 19, right after the tennis courts."

</comment><comment><USER3> I've heard the same thing with the instructions saying "Continue past Starbucks" or something similar. This was a few months ago.</comment>


How the "I cut, you choose" method of redistricting could fix a broken system - <AUTHOR> https://slate.com/news-and-politics/2018/02/how-the-i-cut-you-choose-method-of-redistricting-could-fix-a-broken-system.html <comment><USER2> While it might improve the system, one of the things I think is broken is the lack of real political party diversity. People can feel like they must choose between Scylla and Charybdis.

At rare times we have successful third party representation in government. Take John Eder as an example. He was the in the Maine House of Representatives, and a member of the Green Party.

As [https://en.wikipedia.org/wiki/John_Eder#Redistricting_and_se...](https://en.wikipedia.org/wiki/John_Eder#Redistricting_and_service_in_the_House) points out:

> In 2003 Eder was voted Portland's Best Politician in a readers poll > conducted by that city's alternative weekly newspaper, the Portland Phoenix, > just as redistricting in Maine was threatening to unseat Eder by separating > him from his base of support in Portland's West End. The redistricting was > seen by many as a deliberate effort by legislative Democrats to oust Eder.

This proposed redistricting fix would not prevent similar politically motivated efforts.</comment>


US State Names and Abbreviations as PHP Arrays - <AUTHOR> https://gist.github.com/maxrice/2776900 <comment><USER2> I made the website [http://devdata.io](http://devdata.io) for this exact reason. You can get an array/list/object of US state names and abbreviations (and lots of other datasets) in any language supported (currently JavaScript, PHP, Python, Ruby, C#, and Lua).

<comment><USER3> Suggestions, based on what we also have/use.

Datasets: Languages (human), SMS Carriers

Language: SQL

</comment></comment><comment><USER4> [https://gist.github.com/maxrice/2776900#gistcomment-1200768](https://gist.github.com/maxrice/2776900#gistcomment-1200768)

"Here is the list without Delaware" almost made me spit-take.

<comment><USER5> Not from the US, what's the joke?

<comment><USER3> Possibilities:

N-1/+1 joke, since Delaware was the first (by date of ratification) state.

Discussion around incomplete sets (do you include "military" states or other non-"50 state" territories?).

Ad hominem attack on removed entity (claiming entity is unimportant).

</comment></comment></comment><comment><USER6> Completely lost it at

        <?php
        $THE_UNITED_STATES  = file_get_contents('states_temp.php');
        eval($THE_UNITED_STATES);
        ?>

_temp.php, evals, temporary variable names... I'm getting flashbacks.

<comment><USER7> file_get_contents should make an http request to its own server for maximum awesomeness...

assuming the php file just echoes its own source code,which is entirely doable.

</comment></comment><comment><USER8> [http://statetable.com](http://statetable.com) will give you datasets with US states and/or Canadian provinces, current and/or historical, with or without DC, with or without minor territories & posessions, and with or without military addresses.

Data can be exported in CSV, a PHP array, or a whole mess of MySQL commands to build a table.

It's also open source if you just want the source data: [https://github.com/daveross/statetable- com/blob/master/state...](https://github.com/daveross/statetable- com/blob/master/state.csv)

</comment><comment><USER9> I'll gladly admit that I didn't get it.

</comment><comment><USER7> I'm surprised PHP doesn't already have US_state_name_to_abbreviation() and US_state_abbreviation_to_name() baked in already. This is a language that supports[0] Swatch Internet time[1]. Literally, a "time" format made up as a gimmick to advertise one specific brand of wristwatch from the late 1990s.

I hope someone on Hacker News who contributes to the PHP core can attempt to correct this discrepancy.

[0][http://www.php.net/manual/en/function.idate.php](http://www.php.net/manual/en/function.idate.php)

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

<comment><USER10> I suspect it would be US_state_name_to_abbreviation() and USStateAbbr2Name() in order to meet PHP's consistency requirements.

<comment><USER11> When I developed in PHP, I could never understand why they didn't just reach a compromise that made everyone happy. Like uS_state_nameToAbbreviation() and uSStateAbbr_to_name()

I call it camel_Snake.

<comment><USER12> Great, now I have tea all over my desk.

Although it was totally worth it. ;-)

</comment></comment></comment></comment><comment><USER13> Haha I love when spontaneously some joke takes off, even if the joke doesn't make much sense

;)

</comment><comment><USER14> That went from "Oh cool, I'll bookmark that" to "hey waaait a minute" real quick.</comment>


Microsoft Admits Windows Vista Mistakes, Criticizes Apple Ads - <AUTHOR> http://www.informationweek.com/news/windows/operatingsystems/showArticle.jhtml?articleID=208803153

<comment><USER2> > Microsoft advertised Vista to small businesses in The Wall Street Journal > and USA Today the last two weeks, and plans a much larger wave of ads under > the tagline "Free the People."

War is peace. Ignorance is strength. Proprietary is free.

</comment><comment><USER3> "The company says 77,000 devices are compatible with Windows Vista today (double the number when the operating system launched) as well as 99% of the major business applications."

Might be funny to compare that to OSX. I'm curious what the numbers are. For all Apple's ads bash Vista for incompatibilities, the vast majority of software and some huge percentage of hardware is Windows only.

That seems to be the only advantage MS has left, they should use it.

<comment><USER2> Yeah Microsoft is losing the backward compatibility religion that was critical to past success, but where would people go instead of Windows? Mac? Linux? Detroit?

Apple and Linux can't handle a billion people who want to buy a $300 computer once every 5-10 years and never installl, configure, or fix anything on it (it comes with Internet Explorer 6 -- isn't that fine?).

<comment><USER4> Isnt that exactly what Linux could handle?

If the financial incentive is there for sure I think you'd see a supercustomerfriendly linux OS. there already is Ubuntu.

And running ten years without problems is what Ubuntu is for, not windows.

</comment></comment></comment><comment><USER5> Interesting that Microsoft is playing the "why is everyone bullying us" card. Of course Apple has hard hitting ad campaigns, they are in direct competition with a company that has insane market share.

They mention XP had a rocky start. So did Windows Me, but that one ended up being pretty accurate. Maybe Windows can only pull it off every other time?

</comment><comment><USER6> It wasn't very much about Microsoft admitting Vista is shit, it was more about promising a rosy future.

</comment><comment> jeffrey-dalton Why not spend hundreds of millions of dollars on developing usable software and services instead of on ads "selling" us on how usable the software should be... I mean will be... I mean is... I mean.. oh well you get the picture.</comment>


Why Sunsetting Delicious Matters - <AUTHOR> http://techcrunch.com/2010/12/19/why-sunsetting-delicious-matters/ <comment><USER2> Jesus Christ, techcrunch is really milking this story

<comment><USER3> Well, you (and I, and everyone else) do keep reading, so...

<comment><USER4> i have tech crunch blocked so i'm not. i do like to come see the comments from HN users every now and then...

</comment></comment></comment><comment><USER5> "Why couldn't Yahoo have a small team devoted to this and keep on innovating?"

Because even if Delicious made $10m a year that wouldn't move the needle at yahoo.

Every project at some point requires the attention of department heads, even up to CEO and with 24 hours in the day any company, big or small, has to pick their battles and focus.

With Yahoo being assaulted on multiple fronts in their core biz, I think it's a great sign of their near term prospects that they are making hard decisions and cutting the fat.

<comment><USER6> The idea at the time was to use the data in delicious to augment and improve search. The analysis wasn't actually done till two years or so after the acquisition, and by then the team was in the throes of the stupid d2 development debacle.

<comment><USER5> That would have been awesome - the potential to dynamically understand trending topics, see how people are sharing and pushing links, understand personal preferences tied to accounts - so much potential.

</comment></comment></comment><comment><USER7> Wow, the title of the TC article is misleading as hell. I didn't find an explanation of why it matters. What I did find was a complaint about it being "sunsetted."

</comment><comment><USER8> _It's kind of shocking that a company with the resources of Yahoo couldn't innovate and turn [Delicious] into a success_

Most bizarre line of the article. I don't follow it that closely but acquisitions before profit seem to be a sure fire way of the new parent company wasting a lot of money. Perhaps we just hear of the failures here.</comment>


The generation that tech forgot - <AUTHOR> http://www.bbc.co.uk/news/technology-32511489 <comment><USER2> Seems that article is more about interfaces for the handicapped than anything specific to the elderly; probably because being elderly in general doesn't preclude one from technology. In my experience it's the elderly people who have no desire to learn something new that are the issue. My GF's dad is in his 70s and uses his iPhone, iPad and laptop regularly with no issues, because he embraced technology years ago, uses it every day and is open to learning how to use it. His wife on the other hand is a little more "set in her ways" and intentionally avoids technology aside from a few things like Facetime and Plants vs Zombies, and as such runs into a lot of everyday issues that she doesn't know how to deal with and just waves them over to him or me or the nearest Apple Genius.

Technology being "impenetrable" is not a trait only applied to the elderly. It's initially "impenetrable" to everyone when they first start using it, whether that be at age 3 or age 80. Learning to use technology well comes with experience like anything else, and those many elderly people who have attained some technical proficiency are proof of this. If someone doesn't want to put forth that effort then they shouldn't feel patronized when the interface assumes the lowest common denominator.

Now designing for medical issues and handicaps that may or may not come with age is another issue. I'm all for medical accessibility, but I'd divorce that issue from "designing for the elderly", on the grounds of over-generalization. For instance, phones with oversized numbers are also used by legally blind young people.

<comment><USER3> > For instance, phones with oversized numbers are also used by legally blind > young people.

Huh; I could understand wanting _physical buttons_ rather than a touchscreen, but the standard 10-digit keypad is incredibly easy to dial "by feel"—or, basically, to touch-type on. Why make it bigger? Is it for the _really_ young legally-blind people who are first learning to use a phone?

I mean, we don't make keyboards for legally blind people with bigger keys, do we? (There are keyboards with braille guides, but that's somewhat orthogonal.)

<comment><USER4> "legally blind" does not necessarily mean completely without sight. It means your corrected vision is less than 20/200 or your field of view is less than 20. And yes, they do make accessible keyboards with larger, easier to see keys:

[https://www.bigkeys.com/](https://www.bigkeys.com/)

[http://www.morekeyboard.com/](http://www.morekeyboard.com/)

[http://www.amazon.com/Chester-Creek- VB2-VisionBoard2-Keyboar...](http://www.amazon.com/Chester-Creek- VB2-VisionBoard2-Keyboard/dp/B000OCQTWM)

</comment></comment></comment><comment><USER5> I do wonder if the answer to this is more diversity in our engineers. Let me explain:

While I have no doubt that a lot of great companies have awesome engineers, SF/SV tech is filled with white men in their early twenties. Nothing wrong with that, but it seems like diversity in age, race and ethnicity is a token that plays second fiddle to "meritocracy".

The latter really at the end comes down to whether you wear an ironic hoodie, can solve a graph algorithm problem well and can work long hours through the night.

Nothing wrong with all of those, I have done those and been a good mimic. But, the more I think about it, the more I think that it creates an echo chamber where there is only one true way of designing and building products. The ones that that clique can use.

Sometimes, I belong to that clique with things like Hipmunk that I love to use. Sometimes, I am confused as fuck say when it comes to Unix commands. I wonder how many many many users we are missing out because of our focus on building and designing things that are focused towards the needs of the few.

<comment><USER6> Remind me of a thought i had regarding touch screens.

One reason i think Nokia and Samsung was sticking to resistive screens and buttons until Apple rolled out their phone, was that resistive screens can be worked with gloves on.

Apple being located in California, didn't really have the experience of operating devices in really cold winters.

</comment></comment><comment><USER7> Any attempts to eliminate accidental complexity in products should be lauded but the people attempting to make these apps quickly run into the fact that there's still a lot of intrinsic complexity built into the system that can't be hidden away.

Like a frog in boiling water, anybody who started in tech when it was simple and then gradually learnt along the way as tech adapted are in a good place because they've just internalized all of the little tricks and quirks and magic invocations that are necessary. Anyone who's trying to jump in now has to accept that it's either going to take a large amount of time and effort to get acclimated or it's going to be a very hard, sharp shock.

The same would apply the other way around. If young people were teleported back to the technology of the 50's, they'd be equally frustrated with all of the quirks of a typewriter or an ice box. But old people would be fine because they'd already internalized all of that learning.

</comment><comment><USER8> With so much effort going into life extension, I feel this is the wrong perspective on the problem. It's not about making technology more accessible to the elderly, but more about making the elderly fit for the modern and ever changing world.

As brutal as it might sound, making technology accessible to the current "state of the art" in terms of what it means to be old is a long term solution to a short term problem... I hope.

</comment><comment><USER9> The revelation here is not that the elderly have different UI/UX needs, but that Touch is not a panacea despite the claims of certain smartphone/tablet companies.

<comment><USER3> Touch allows you to create any _flat 2D control-plane_ interface you want. If you're a sound engineer, for example, a touchscreen can replace thousands of individual custom knobs and sliders. (Touch also, through _projection_ , allows you to interact with 3D spaces as long as your interactions are themselves two-dimensional. Minecraft, CAD programs, etc. fall into this group.)

On the other hand, we tend to just ignore the possibility of creating apps for interface modalities that aren't possible with the technology we have. Molding virtual clay, or putting together virtual lego, with your fingers? How? There's no plausible "how" right now, so most UX designers just forget about the possibility and come back to check on the idea in another ten years.

The problem comes from the UX designers who try to force something like "virtual lego" into a "flat 2D control-plane" shaped box. This sort of _unnatural_ control interaction is what confuses people who are first exposed to computers. It's not the fault of the computer; it's the fault of UX designers whose reach exceeds their grasp.

</comment></comment><comment><USER10> This article was very scattered.

</comment><comment><USER11> "Forgot" is a little facetious, dontyathink?</comment>


Outdated WordPress and Drupal versions may have contributed to Panama Papers hack - <AUTHOR> http://wptavern.com/outdated-and-vulnerable-wordpress-and-drupal-versions-may-have-contributed-to-the-panama-papers-breach <comment><AUTHOR> Reddit thread: [https://www.reddit.com/r/drupal/comments/4duscc/outdated_and...](https://www.reddit.com/r/drupal/comments/4duscc/outdated_and_vulnerable_wordpress_and_drupal/)</comment>


Why colleges must change how they teach calculus - <AUTHOR> http://theconversation.com/why-colleges-must-change-how-they-teach-calculus-90679 <comment><USER2> As always I may well be wrong, but the "rope around the equator" example seems like not involving calculus at all, I would call it "elementary geometry".

If anyone at UNI has issues answering correctly that question there are much more serious problems in mid and high school.</comment>


Bjarne Stroustrup Discusses C++ - <AUTHOR> http://electronicdesign.com/dev-tools/interview-bjarne-stroustrup-discusses-c <comment><USER4> Stroustrup says:

      The real novelty here is the return statement: Note that
      I return a potentially huge vector by value. In C++98,
      that would typically cause the copy of all elements of
      res, potentially many thousands of elements. That would
      be a serious performance bug. In C++11, vector has a
      "move constructor," so that rather than copying elements,
      the representation of res (merely three pointers) is
      "stolen" for use in the caller and an empty vector is left
      behind. After all, we are just about to return from
      find_all() and won't be able to use res again. Thus,
      returning a vector by value costs at most six word
      assignments independently of the number of elements.

      Move constructors is a simple facility available to every
      programmer and used by all standard-library containers
      implemented as handles. This allows us to return large
      objects from a function without messing around with
      memory management (explicitly) using pointers and
      free store.

Are most C++ programmers excited by this? Is the idea that people should start writing code depending on this behind the scenes behaviour, or that we now have a way to speed up poorly written code? It feels like an awful lot of effort to avoid returning a pointer. And if I were actually worried about the performance, I wouldn't feel comfortable just hoping it happened. Is there any confirmation by the compiler that it handled this in the way the programmer wanted?

<comment><USER5> I am not that good at C++ so it would be really nice if somebody can enlighten me:

Isn't this already the case with some (all?) compilers in pre-C++11?

[http://www.parashift.com/c++-faq/return-by-value- optimizatio...](http://www.parashift.com/c++-faq/return-by-value- optimization.html)

<comment><USER6> NVRO works by constructing the object once... (EDIT: detrino points out this is wrong, the object is not constructed first before passing, it is only a memory address that is passed, it's the return value that is constructed on to this address)

It is passed as a hidden argument to the function, assigning the return value to that argument passed in. Prior to the NVRO, the object was constructed once, a temporary was constructed and then copy constructed to give the result. You can test out the NVRO yourself by putting a printf in an object's constructor, and have the object returned from a function on to an object of the same type.

Stan Lipmann's Inside the C++ Object Model explained it best for me. NVRO applies to the vector object.

The difference here is that Stroustrup is talking about the elements of the vector, not the vector itself, and how the move semantics remove the need for constructing/copy constructing them.

<comment><USER7> What you are talking about is really just the calling convention common on many machines. When you have a function returning a struct, what really happens is that the return address for the struct is passed as an extra argument. No construction of the struct happens prior to this, its just an address. Compilers are able to take advantage of this calling convention in many cases to elide copies, and the result is RVO/NRVO.

<comment><USER6> Are you alluding to some sort of hardware mechanism by mentioning machines? In what context are calling conventions machine dependent?

The reason it's notable in C++ is because the code that would normally be called in the constructor is not called as many times as the person writing the code might expect.

In C++ structs can have constructors, but usually have an empty default constructor supplied by the compiler, this is more of an issue when structs/classes have user supplied constructors.

Here's an article giving more specifics of the history of NVRO from Stan Lipmann. Interestingly, NVRO was not added to Visual C++ til 2003, and Lipmann prefers NVRO off by default. I think I recall an NVRO flag in that compiler. NVRO was available in cfront and Zortech compilers in the early nineties. [1]

[1] [http://blogs.msdn.com/b/slippman/archive/2004/02/03/66739.as...](http://blogs.msdn.com/b/slippman/archive/2004/02/03/66739.aspx)

<comment><USER7> The calling convention your compiler is using is dependent on a number of things [1]. It is this calling convention that dictates how values are returned from a function, not whether or not RVO/NRVO is happening. Also, what is being passed as an extra argument, according to many calling conventions, it not really an already constructed object, but an address for an object to be constructed into. Under certain situations the compiler is able to elide copes, which as you pointed out, leads to your copy constructor to never be called at all, even if it has visible side effects. I think these are important distinctions and hoped pointing them out would be beneficial.

[1] [http://en.wikipedia.org/wiki/X86_calling_conventions](http://en.wikipedia.org/wiki/X86_calling_conventions)

<comment><USER6> Yes, thanks for pointing the calling conventions out, I didn't really know what you were getting at.

The hardware calling convention does dictate certainly what code the compiler can put out.

If the compiler does not support NVRO and emits code that causes multiple copy/constructions it doesn't matter if the hardware supports more efficient behaviour.

I edited my earlier comment with your correction, thanks.

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm sort of a C++/Stroustrup fan I guess, but this confused me:

> C isn't simpler for C-style programming than C++ is [...]

Is Stroustrup really arguing that C is not simpler than C++? How can it not be simpler? C++ is essentially C with a ton of features added on top.

<comment><USER6> That whole paragraph is ridiculous. I'm commenting but really I should abstain because I feel I am lowering the tone with yet another great religious debate: C vs. C++.

"No. C isn't simpler for C-style programming than C++ is, nor "closer to the hardware," nor indeed more efficient. I have yet to see a program that can be written better in C than in C++. I don't believe such a program could exist. By "better" I mean smaller, more efficient, or more maintainable."

Firstly, I'm sure what he's writing there is predicated on the C++ STL being available, the use of which will in turn increase compilation times, because there's a lot of templated code to compile.

I cannot see how you would implement strlen or malloc in C++ (EDIT: as efficiently and/or) more efficiently than C, particularly when you take casting void into account. It's not a far stretch then to imagine writing drivers and so on, where idiomatic C++ would be a distraction compared to C.

In the above his metrics, smaller, more efficient, more maintainable - I can't see any features that C++ has that will allow them to be proven true.

Any program that has to interact with a C library - Stroustroup would suggest library then to be wrapped to make it behave according to C++ style - if so - if the code is just calling a few library functions, C will be shorter and better by all his metrics.

The most convincing is maintainability, but C++ has many more ways to skin a cat than C, so where C had the overhead of understanding someone else's data structure, C++ pretty much does too.

<comment><USER9> Firstly, you can always assume the "C++ STL" is present, it is part of C++.

While implementing strlen faster in c++ is harder, implementing qsort faster is easier, as you have the option of compiling a version with the size of type, and comparator, known and inlinable.

Also, you could use a constexpr version of strlen on strings known at compiletime, and be sure the compiker will optimise out the call, unlike in C where you just have to hope the compiler will

<comment><USER6> Thanks for your reply. You can assume it's available in a general sense but you may not be allowed to use it, sometimes this happens.

Stroustrup made a bold claim that no program exists, I pointed out strlen and malloc - that there exist programs that can be written more efficiently by his metric - your e.g. qsort, I do not dispute, but I refuted his claim. I didn't say implementing strlen faster, I merely said implementing strlen is not by any of his metrics a superior experience in C++.

C would just use hardcoded strings or defines, with sizeof(). This is also a possibility in C++, but I was talking about the implementation of strlen not the usage.

<comment><USER10> Neither strlen nor malloc (nor qsort) count as programs under any pragmatic, non-nitpicking, definition.

Even the assumption that implementing, e.g., a memory allocation algorithm in C++ is not more comfortable than in C, does no lead to the conclusion that writing a device driver (your example) in C++ is not more comfortable than doing it in C.

<comment><USER6> I agree with you. Just to be clear: I'm not making bold statements like "I don't believe such a program could exist.".

But you do admit they are programs! That was all I was trying to do, refute his ridiculous claim - albeit with something marginally less ridiculous. How about a program calling a C library?

The driver thing doesn't automatically lead to the conclusion - but it's not a far stretch to picture it being so. A simple thought exercise does not make a water tight argument.

I can imagine writing certain parts of drivers being better under his metrics in C++ than C but I don't see it in black and white terms like he does. I can see the opposite being the case also.

All that needs to happen for Stroustrup to be wrong is for one program to exist that beats his metrics in C instead of C++.

<comment><USER10> > But you do admit they are programs!

No, I don't – not in the sense that Stroustrup was using the term "program". strlen or malloc are not programs in the way that this term is commonly understood. His claim is not ridiculous, unless you're nitpicking by using definitions which are just not useful for the discussion at hand (i.e., is C++ better suited for developing non-trivial software).

As for the driver example: I guess we'll just have to agree to disagree, unless someone actually implements a device driver in C and in C++ ;-)

<comment><USER6> At least we can agree that a driver is non-trivial. How about a program that calls a C library?

The only project I know of that publishes in multiple languages, vtd-xml - <USER2> C++ library has 40k lines of code versus C which is 60k. I don't dispute that C can be more verbose - but it's not a stretch of the imagination to think there's a program somewhere out there that meets Stroustrup's requirements better in C than C++.

Not sure at what point we will have a certain agreement on what is trivial and what isn't. Here's an example of someone writing a lot of code to wrap a C library in to C++, and then doing a few calls to it.

[http://www.codeproject.com/Articles/6343/CppSQLite-C- Wrapper...](http://www.codeproject.com/Articles/6343/CppSQLite-C-Wrapper-for- SQLite)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> For the sake of balance, here is Yossi Kreinin's list of things that are wrong with C++: [http://yosefk.com/c++fqa/defective.html](http://yosefk.com/c++fqa/defective.html)

PS. One of my biggest gripes with C++ is the lack of uniformity. Not only the language itself has insane learning curve, every project does so many trivial and not-so-trivial things differently that it's like learning another language each time you dive into a new codebase. From code formatting, documentation, and source tree layout to error handling, libraries and build system - <USER3> something so huge and complicated as C++ there's an amazing number of batteries _not_ included. Even the things that are supposed to be standard in theory are often not so in practice. Damn, there's _still_ custom string classes in the APIs of many popular libraries - almost two decades after std::string and STL!

PPS. And yes, there's a difference between having consistent conventions and trying to be perfect for everybody and everything.

<comment><USER12> or as bjarne points out in the article _There can be no programming language that is perfect for everybody and for everything. C++ doesn't try to be everything for everybody, but it is rather good at the tasks for which it was designed – mostly systems programming, software infrastructure, and resource- constrained applications_ and _Don't just say "I want a GUI library" or "there is no proper support for task-based concurrency" or whatever. We know that._

<comment><USER13> Yet, most operating systems have been written in pure C, resource constrained applications are still being written mostly in pure C or eventually C with classes (and mobile apps are _not_ resource constrained apps anymore), and enterprise software infrastructure is written in a wide range of languages ranging from C, through Java to even Python. What C++ is mostly used for are games and desktop GUIs... :D

<comment><USER14> _What C++ is mostly used for are games and desktop GUIs..._

Hardly. Just about every interesting native application is written in C++. Chrome, Photoshop, Cubase, Ableton Live, AutoCad, Java, V8, any AAA video game, etc.

Whether you like C++ or not the fact remains that if you want to write an application of any complexity that really pushes the hardware it's just about your only reasonable choice. Maybe people still write kernels in C but kernels really aren't that complex compared to the applications they run.

<comment><USER13> You listed mostly desktop apps and games = exactly what I said. And even in this area, C++ is not used exclusively - see Minecraft (Java), Azureus (Java), Gimp (C), VisualStudio (new code mostly C#). So no, not _every_.

BTW: There are many interesting and successful complex applications really pushing the hardware that were not written in C++: Cassandra (Java), Hadoop (Java), PostgreSQL (C), Netty (Java), Nginx (C), TeX/LaTeX (uh, this one is really interesting). So, again, C++ is not the only reasonable choice when performance matters.

<comment><USER14> Scaling across multiple machines is a completely different problem than pushing a single machine to the limit, with completely different constraints. Once you move beyond a single CPU and you can tolerate higher latency then languages like Java start to become more viable.

When you need maximum performance and minimal latency from a single machine C++ is still the first choice and the number of high-performance apps written in C++ vastly outnumbers those written in C. Check high frequency trading for another example.

<comment><USER13> There are companies doing HFT with reatlime Java and custom hardware. Sure, C++ has its place there, too, but again: not the only viable option.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> There are languages specially groomed to replace C++, like D and Rust, but they might never; Not in this decade.

The day LLVM gets rewritten in Rust, that day Rust barely starts replacing C++.....

</comment><comment><USER16> I know what he means about teaching - I do a lot of systems (embedded) stuff, and love (well written) C++, but the course I did on it at Uni was awful. If that had been my only exposure to C++, I never would have wanted to touch it again!</comment>


VS Code Version 1.2 is now available - <AUTHOR> https://code.visualstudio.com/updates/May_2016 <comment><USER2> >Tab support is the number one User Voice request and it will take multiple iterations to fully implement.

Too bad, was really looking forward to it.</comment>


Using Emoji in Work Emails Portrays Low Competence - <AUTHOR> http://www.ibtimes.com/using-smiley-faces-work-emails-portrays-low-competence-study-finds-2578080 <comment><USER2> The paper:

[http://journals.sagepub.com/doi/10.1177/1948550617720269](http://journals.sagepub.com/doi/10.1177/1948550617720269)</comment>