Neuroscientists Wirelessly Control the Brain of a Scampering Lab Mouse - <AUTHOR> http://spectrum.ieee.org/biomedical/devices/neuroscientists-wirelessly-control-the-brain-of-a-scampering-lab-mouse <comment><USER2> If you look more than 50 years into the past, to any civilization on earth, there are a number of behaviors and norms that were totally acceptable to the people of the time that modern man/woman would consider morally repugnant. Not allowing gays to marry, not allowing people of different races to marry, not allowing women to vote, slavery, ritual sacrifice, etc. It follows then, that there are likely things we view as morally OK that future generations of humans will condemn us for. It's a healthy exercise to imagine what those things might be.

Reading about this research makes me think that this sort of animal experimentation will certainly be one of those things.

<comment><USER3> I dont think they'll condemn us for it, just that they'll do it a better way.

People suffer and die from things that animal research can help us study, and I don't think that killing a dozen or a hundred or a thousand rats per lifetime we save is too many. (A human lives about 30 times as long as a rat, and Id say a human year is worth 30 times a rat year. A little self-centered, but probably not genuinely that awful.)

Something like 600,000 people in the US die each year of cancer. If you figure on average they'd get ten more years, that's about 75,000 human lifetimes a year lost.

So Id be okay with a literal rat holocost: 75,000,000 rats a year on the altar of science for as long as we can get useful knowledge about cancer from them.

In actuality, I expect we're killing less than 1 rat per human lifetime lost each year -- and Im so absolutely okay with that cost to make progress against scourges like cancer, it's legitimately hard for me to understand the other view.

Do you _really_ believe that future humans will condemn us for killing less than 1 rat per human lost to try and stem the loss of human potential?

Or is your position that it's just not sufficiently useful to do things about mental disorders (which cause lifetimes of suffering and disability, instead of immediate death)?

<comment><USER4> Speciesism, that's what Peter Singer calls it (the philosopher, not the roboticist). We tend to draw an artificial line between human and nonhuman.

The article describes how it selectively can be used in a hybrid setup. I hope they can come up with applications that are new, rather than doing the same experiments over and over again. I often see results and am like duh... It's like running code, changing a few lines, and running it again to see if anything changes.

And now an extremely rough statement. If there are so many people dying anyway we should definitely experiment more with humans. That will make all our experiments likely to be more humane.

Last, I hope robots won't see us as lab animals. To understand their own brain we are likely to be their best test subject though.

<comment><USER3> > If there are so many people dying anyway we should definitely experiment > more with humans. That will make all our experiments likely to be more > humane.

Im not sure I follow: are you suggesting we raise creatures that take longer, are smarter, and are harder to study just because they're us?

That seems to be increasing the total harm just so it happens to humans rather than rats, ignoring the humans we do it to didnt have any more choice than the rat. I find that far _more_ speciesist than recognizong legitimate differences in human mental powers and complexity from rats.

That being said, we _do_ experiment on humans too, including some pretty radical things on already dying ones.

The problem comes in that if we're going to create a broken mind just to study it, we should a) use a simple mind we can actually perform a non-confounded experiment on and b) use the minimal mind possible to minimize suffering.

So rats rather than 3 year old humans.

<comment><USER4> I'm assuming that if we would treat humans in the same way we treat rats, we would likely raise standards.

Also rats are able to choose by the way. We just don't give them a choice.

<comment><USER3> Are lab rats treated poorly? My (limited) experience indicates that scientists are generally as humane as they can be, and the rat lifestyle isn't any worse than say... A pet rat. Maybe Im an outlier.

My point is that if your experiment requires a GMO organism, the organism can never have decided to participate, since it would require choice pre- conception.

If GMOing a rat in to a forced experiment is bad, isn't doing that to a human much worse?

It's still worth the cost using humans, but harm reduction would suggest using rats instead.

<comment><USER4> The question is not about choice w.r.t. a GMO. It's about the underlying moral values behind a seemingly rhetorical question "isn't doing that to a human much worse?"

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

Why is it so much better to force non-humans to partake in our experiments? Just swap rats and humans in your sentences and the bias is very obvious.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> There is also the roboroach if you want to have a taste of this on your hand, with a cockroach. [https://backyardbrains.com/products/roboroach](https://backyardbrains.com/products/roboroach)

In the neuroscience conference they also showed a DIY optogenetic fruitfly kit, but it's a pity the channelrhodopsin transgenic fly is not available outside a neuroscience lab.

<comment><USER6> Wow. That's a neat kit.

</comment></comment><comment><USER7> I can't help but feel sorry for the mice, I can't imagine what it would be like to not have control of your limbs. I understand the purpose is the opposite, however.

<comment><USER8> I would not be surprised to find out the brain backwards rationalized it and the mice from their point of view always thought they wanted to do that.

<comment><USER9> This is the real question here. Unless the mice can explain itself to us, we really have no way to know. But I'm not so sure about the ethics of conducting such experiments on humans.

<comment><USER10> This question is answered already - we have enough studies and reports of people who suffer from delusions, spasms etc. to have detailed information on outliers.

Whats really going to make you lose your equlibrium is that for _normal_ human beings, the impulse to move a limb (like a hand), preceded the conscious instruction to move it. See the Libet Experiments, (and the can of rebuttals and counter rebuttals that threw up)

</comment></comment></comment></comment><comment><USER11> Impressive, however nature itself is even more impressive [http://www.scholarpedia.org/article/Neuroethology_of_Parasit...](http://www.scholarpedia.org/article/Neuroethology_of_Parasitoid_Wasps)

</comment><comment><USER12> I understand this is valid science but at the same time I'm extremely creeped out. Seems to me like all these findings follow from some physics and chemistry and the mice didn't need to be implanted with these devices. Don't really see the point of making them go in circles either.

<comment><USER13> Which findings, specifically?

Because I feel like the article makes a pretty good case for the benefits of studying optogenetics. These three paragraphs in particular succinctly outline that case:

 _Neuroscientists study these patterns of electricity, but they've been limited by the imprecision of their tools. Much progress in biology depends on observation, which means scientists need tools to both meddle with an organism's natural bodily systems and watch what happens. Typical neuroscience techniques rely on electricity, using electrodes on the scalp or implanted inside the brain to stimulate and record from groups of neurons. These electrodes are relatively large and crude, though, and can't target very specific cells, such as the neurons in the hippocampus that encode distinct memories._

 _This limitation bothers me. From an engineer's point of view, the study of living creatures can seem messy. When I'm tinkering with an integrated circuit, I can swap out one transistor and check to see if the chip still works. If it doesn't, I can be sure the new transistor is responsible for the glitch. In biological systems, it's far harder to isolate a variable of interest._

 _With optogenetic technology, we can turn neurons on and off as if they were transistors in a circuit. Geneticists have various ways (which we won't go into here) to deposit the necessary genes into very specific clusters of cells. With our light-up devices, we can then switch on a particular set of neurons. The neurons react to light within milliseconds, making the result of our tinkering fairly obvious._

<comment><USER12> Parts that you mention are part of those findings. Seems to me all this could have been done in vitro. No mice brain cage mutilation necessary to see if a cell with some genes reacts to a certain wavelength of light.

<comment><USER8> I think it's more intended as a proof of concept to allow researchers to target specific neurons and a live animal would help demonstrate that. If I'm understanding correctly they would be able to target the optogentic cells to very specific parts of the brain.

<comment><USER14> That's not the purpose of this experiment, as the capability to target specific neuron types has been well demonstrated in the past. It's approaching a toolbox technique at this point much like regular electrophysiology and electrical stimulation.

From the IEEE article (I did not read the original research paper) the goals of this experiment are lost in the veil of journalism, as it boils down to the following items:

1\. Implantable chronic optogenetics (fairly novel)

2\. Wireless RF power for said implant (novel context, not necessarily novel technique)

3\. Use the optogenetics to do "something". This is the worst part of the article and is the meat of the Neuroscience - which neuron types are targeted (genetically), with which opsin, and histological evidence of where the opsins are located are all important features. The article seems to take at face that making rats pause and run in circles is interesting but scientifically speaking if you can't say anything about why they run in circles it's not a particularly good or useful study, as it doesn't actually give people any information.</comment></comment></comment></comment></comment>


Ask HN: What are the best online resume sites? - <AUTHOR>

I want to create a product in this market. Basically it's an online resume generator with some value added features. So far I could not find a good alternative. What are some of the services/sites you know and use? <comment><USER2> Stack Overflow Careers has been excellent for my purposes. All of my information can be centralised behind an ordinary public URL (careers.stackoverflow.com/evincarofautumn) and I can really highlight what I care about and how I'm different from other developers. I've gotten about half a dozen job offers since signing up in mid-2010, which, well, isn't nothing. Observe how Careers creates value and improve on that.

<comment><AUTHOR> Good advice. I'm also curious if you may want to present slightly different versions of your resume to different employers, for example by changing emphasis on particular technology or hiding unrelated project.</comment></comment>


The JavaScript Beginner's Handbook (2020 Edition) - <AUTHOR> https://www.freecodecamp.org/news/the-complete-javascript-handbook-f26b2c71719c/ <comment><USER2> Good, this is the language tutorial. Is there something like a next part of this book, about using JS to do real things in 2020? AFAIU there's quite a lot of supplementary stuff like build systems (why are they even needed in JS?), application frameworks etc.

What would be some good books / blogs to read for a developer with a somewhat dated C++/Python/HTML experience who doesn't care about legacy browser support?</comment>


A plan to mine the world's research papers - <AUTHOR> https://www.nature.com/articles/d41586-019-02142-1 <comment><USER2> > No one will be allowed to read or download work from the repository, because > that would breach publishers' copyright. Instead, Malamud envisages, > researchers could crawl over its text and data with computer software, > scanning through the world's scientific literature to pull out insights > without actually reading the text.

I find this totally unconvincing. The average scientific article isn't any good, and the NLP algorithms that do tasks like this are even worse.

For scientific literature to be useful to those of us outside the academy, we need to be able to see the full document - what methodology was employed, what assumptions were made, how the data was gathered - just to be able to gauge whether the authors had any idea what they were doing. Ideally we would also be able to search over documents, explore the citation tree in some sort of UI, and access articles in multiple formats (sometimes you want a PDF, sometimes you want plaintext, and I imagine that the mathy-types might like LaTeX source).

I applaud Malamud's efforts to overcome this problem, and I hope his results prove me wrong. I just think it's sad that we have to resort to hacks like this to overcome what is obviously enormous scam that is stealing our tax dollars and stifling academic and economic creativity.

<comment><USER3> > The average scientific article isn't any good, and the NLP algorithms that > do tasks like this are even worse.

In my day job, I'm often tasked with implementing algorithms from recently published physics papers. In order to do so, I normally have to read through at least 10 related papers (both cited papers and cited by papers) in order to have a clear idea in my head about what is going on. Even then, I often have to discuss what I have read with 2 or 3 other people and try out many different approaches before we finally understand what the paper meant.

This is because few papers include enough details to reproduce what they are doing. Many of these papers have mistakes or typos in their equations. Many of the math equations are also under specified. For example, an equation may list a sum over an index, but then in the text there may be a whole paragraph that describes what that index means (there is nothing wrong with this, but it would make it hard for AI to "just use the equations").

At the end of this whole process, which can take a week, about half of the time we choose not to implement the algorithm for one of several reasons:

* The authors misrepresented their work and it does not perform as well as claimed (e.g. the chosen examples are special cases that make their approach look better than the state-of-the-art approach)

* The work is not reproducible from the information in the paper

* The amount of work to implement it is far greater than an initial reading of the paper would suggest, due to additional details that were left out of their discussion

So, all of this is to conclude that understanding scientific papers is at the very limit of human ability for a group of PhDs in the field. I do not think that until we have much more powerful AI that it has any hope of making sense of this mess.

edit: P.S. I am guilty of these same mistakes when publishing. I understand the deadlines and pressure to publish that leads to these issues. It is a huge amount of work to fully document and publish all the details needed to reproduce some new algorithm .

<comment><USER4> This sums up my experience pretty well. I used to work in a field of physics where a lot of projects were not open-sourced, which is probably your experience too. Now, I work in computer vision, where there is a lot of open sourced work and I _still_ find myself coming up against most of these problems when dealing with implementations of cutting edge results.

</comment></comment></comment><comment><USER5> > A trigger for this mission came from a landmark Delhi High Court judgment in > 2016. The case revolved around Rameshwari Photocopy Services, a shop on the > campus of the University of Delhi. For years, the business had been > preparing course packs for students by photocopying pages from expensive > textbooks. With prices ranging between 500 and 19,000 rupees (US$7–277), > these textbooks were out of reach for many students. In 2012, Oxford > University Press, Cambridge University Press and Taylor and Francis filed a > lawsuit against the university, demanding that it buy a license to reproduce > a portion of each text. But the Delhi High Court dismissed the suit. In its > judgment, the court cited section 52 of India's 1957 Copyright Act, which > allows the reproduction of copyrighted works for education. Another > provision in the same section allows reproduction for research purposes.

Good job India.

</comment><comment><USER6> It would be interesting to see the server getting hacked with all the papers in the open, and then the researchers sending a sorry email to the publishers.

<comment><USER7> And use the same legal theory as Equifax, Target, etc? It would be beautiful.

</comment></comment><comment><USER8> > Over the past year, Malamud has — without asking publishers — teamed up with > Indian researchers to build a gigantic store of text and images extracted > from 73 million journal articles dating from 1847 up to the present day.

Maybe I missed it, but the article doesn't seem to explain exactly how Malamud's group compiled its database.

Throttling is a major problem with the naive approach of throwing wget on a publisher site. The publisher detects a bot on its network downloading everything in sight and either slows data transfer to a trickle or just shuts down access to it.

The publishers may not win on copyright, but they may try to make a case based on criminality if Malamud's team actively took steps to circumvent throttling and defeat the defenses of the hosting sites. Especially if the publisher knows what to look for in its logs.

<comment><USER9> Scihub? Bonus points if your properly executed scraping project backfills Scihub where it is missing DOIs.

</comment></comment><comment><USER10> I'm a little late to this party, but here's a mandatory research plug:

My lab works in the area of evidence based medicine. My research focuses on Randomized Controlled Trials, and the overall goal is to automate (fully or partially) the meta-analysis of medical interventions. To that end, we collected a dataset of intervention pairs, statistical significance findings about these pairs, and a minimal rationale supporting the significance finding.

Since these annotations were collected on full text PubMed Open Access articles, we can distribute both the articles and the annotations: [https://github.com/jayded/evidence- inference](https://github.com/jayded/evidence-inference) ; paper: [https://arxiv.org/abs/1904.01606](https://arxiv.org/abs/1904.01606) ; website: [http://evidence-inference.ebm-nlp.com/](http://evidence- inference.ebm-nlp.com/)

We're working on collecting more complete annotation. We hope to facilitate meta-analysis, evidence based medicine, and long document natural language inference. We might even succeed (somewhat) since this is a very targeted effort, as opposed to something more broad.

</comment><comment><USER11> This is good, more because it will make searching for information easier than because it will avoid copyright. Searching through journal articles to find information about a given topic is very hard, even at a university with more or less universal library access to the online literature.

Authoring papers of uneven detail and quality and then publishing them in whatever prestigious journal that will have them is a terrible way to document the progress of science.

Instead, new results should be added to an open science information base, fully linked to all previous results that bear upon the new results, either in support or contradiction. This is what some of the bioinformatic data bases attempt to achieve by scanning articles, but it would be better to omit the article step.

</comment><comment><USER12> R.I.P. Aaron Swartz [https://en.wikipedia.org/wiki/Aaron_Swartz](https://en.wikipedia.org/wiki/Aaron_Swartz)

</comment><comment><USER13> So, sci-hub, but less accessible?

<comment><USER14> Also, marginally less likely to suddenly vanish in a poof of lawsuit one day. See Napster.

<comment><USER15> But storage costs have dropped by orders of magnitude since then and 'personal copies' of SciHub are a definite possibility.

<comment><USER16> I've read somewhere a couple of years ago that SciHub was about 35TB of data, quite big but still manageable.

<comment><USER15> It's a bit more now, going on 80T or so. Still quite manageable. A large NAS will do.

<comment><USER17> I just happen to have a 80T NAS that I plan to use as a sci-hub mirror, is there a way to download it? libgen torrents are dead.

<comment><USER15> email?</comment></comment></comment></comment></comment></comment></comment>


Happy Birthday, XMPP: 20th Anniversary of Jabber - <AUTHOR> https://fr.movim.eu/?blog/debacle%40movim.eu/happy-birthday-xmpp-20th-anniversary-of-1st-jabber-server-IBmtu8 <comment><USER2> I'd say that it feels like just yesterday, but it totally feels like decades ago :)

I'm very lucky to still be close with so may of the truly amazing individuals that helped build Jabber, and over the years deeply honored by all those that spoke to me about how it inspired them.

While at the surface it may seem like all of our efforts had little impact on the big "messaging silos", I am most proud of how much Jabber/XMPP has made it easy for anyone to build/host/extend a messaging and presence service. Twenty years ago the concepts and architectures were opaque, now they're commonplace.

Happy Birthday!

<comment><AUTHOR> Hey Jeremie! It's really awesome to have you here!

I've tried to dig up some more historical background besides of the Slashdot announcement, but failed. Do you happen to have an old copy of the 1999 changelog / code base (maybe a backup of the CVS or SVN server), just out of historical interest. The archive.org history only goes back to around 2004.

Also it's really amazing how far you've been looking into the future back then...

<comment><USER3> FWIW, the [https://github.com/mawis/jabberd/](https://github.com/mawis/jabberd/) logs go back to 2000.

</comment></comment></comment><comment><USER4> I really like that xmpp is experiencing a sort of revival at the moment.

Not maybe in terms of user-base, but Conversations for android is really good, on iOS ChatSecure has some issues, but is usable. OTR encryption is being replaced by OMEMO, and that actually works. I can use and try out clients to my hearts content, with messages being synchronized between them.

That I can run my own server on prosody or ejabberd is really great as well.

And since we're back to "Hey can we you use Signal/Threema/Whatsapp/Viber ?" anyhow, it's actually relatively easy to slide in the next option:

"Hmmm, why don't we use ChatSecure ?"

Thanks everyone for making it happen.

<comment><USER5> I gave Jabber another chance a while ago... using both ChatSecure on the phone and Gajim on the computer (phone+computer logged in on both ends of the conversation). Unfortunately it was a complete failure. Message arrival was flakey. Some messages arrived only on the computer, others only on the phone. Conversations were sometimes one-sided, with one half on phone, other on computer. Not usable for chat. All around, I have to sadly say (after 15+ years of Jabber use) that this is what I'm used to with Jabber, and that I honestly cannot recommend it to friends :-/

<comment><USER6> I haven't seen anything like this in ages; what server and clients were you using? Between the history feature most things support and message carbons you should just get every message everywhere reliably (and that's what happens out of the box for me with most setups).

</comment></comment></comment><comment><USER7> This is great news. I'm finishing a messaging app for a non-profit and I decided to use xmpp (openfire) for the backend and it was really a time saver (the full stack is React Native (typescript), ruby (jruby + sinatra for api), openfire for messaging). I really like how easy is to extend and customize xmpp to suit your needs. Here's to another 20 years!

<comment><USER8> This sounds exciting! But I guess this is closed system and it's not possible to see at least a screenshot?

<comment><USER7> I can share screenshots for sure. I was thinking of opensourcing the project after it was done, but will need some time to clean it up a bit. I will for sure write a blog post about it when it's done (next few weeks)

<comment><USER9> If you let me know about the blog post, I'll include it in next month's XMPP newsletter.

[https://xmpp.org/newsletter.html](https://xmpp.org/newsletter.html)

My contact form: [https://opkode.com/contact.html](https://opkode.com/contact.html)

<comment><USER7> I'll make sure to contact you! thanks!

</comment></comment></comment></comment></comment><comment><USER10> Does anyone know what happened to Jeremie Miller's telehash project? The protocol looks promising, but not much happened lately.

[http://telehash.org](http://telehash.org)

[https://www.infoq.com/presentations/A-P2P-Digital-Self- with-...](https://www.infoq.com/presentations/A-P2P-Digital-Self-with- TeleHash)

[https://www.youtube.com/watch?v=uslYWTOtGpw](https://www.youtube.com/watch?v=uslYWTOtGpw)

</comment><comment><USER11> We need to move away from Hipchat at work and really wanted to use xmpp, but was super let down by the iOS clients, it can't be used in production.

Android - thanks to Cobversations and Xabber, is really ok, PC is ok (Gajim), but we couldn't migrate due to the 3 iOS users in the team. Duplicate msg and all sorts of weird behaviour and errors made it a no go.

We ended up with the shitty MS Teams in the end; comes free with our office365, has working notifications across platforms and can do messaging and file transfers without issues.

I dream of a future where xmpp is an option.

People who have to gain from that: please fix the iOS side of things.

<comment><USER12> I know it's not open... but I personally really like Teams, especially if you use some of the integrations, wiki and files.

<comment><USER13> I hate it, I find the UI clunky and slow. Most annoying is having to fake an Edge user agent to get incoming calls to work (using Chrome on Ubuntu) but having to use the normal UA at other times as it breaks my messaging history otherwise

</comment></comment></comment><comment><USER9> As luck would have it, the XMPP newsletter was also sent out today: [https://xmpp.org/2019/01/the-xmpp- newsletter-4-january-2019/](https://xmpp.org/2019/01/the-xmpp- newsletter-4-january-2019/)

</comment><comment><USER14> How would you compare xmpp to matrix? Are they both similarly secure, distributed, and open source?

<comment><USER15> From what I see, XMPP is "message delivery" while matrix is " eventually consistent global db with pubsub semantics"

The difference becomes relevant when you have multiple or offline devices. XMPP may not deliver messages to some of the devices (for example, if message carbons are not supported by client). Matrix will not drop messages -- it may take some time, but eventually all devices will see all the messages.

</comment></comment><comment><USER16> WikiSuite is full on XMPP. This page explains why XMPP and Openfire, Converse and Pàdé and not all the other options: [http://wikisuite.org/Why- Openfire](http://wikisuite.org/Why-Openfire)

</comment><comment><USER17> I have been looking into building a XMPP server and client lately. Mainly cause the ones out there aren't super great.

<comment><USER9> Before doing that, please consider contributing to an existing project first. There are many out there and they'd love more contributors.

<comment><USER18> Which is the best XMPP server?

For the server mentioned here...

OpenFire = written in Java

Prosody = Lua

Ejabberd = Erlang

<comment><USER8> Prosody is small and works for most people. Ejabberd is what powers production servers of bigger operators, it's also used in MMORPGs.

</comment></comment></comment></comment><comment><USER19> Cake!

As I said in another thread, glad to see the community is still active.

</comment><comment><USER20> I wish Hacker News would do a better job of insulating me from feelings of senescence. This makes me feel damn old.

</comment><comment><USER21> And 20 years later, this is published on an XMPP based blog engine, quite a nice way to celebrate :)

</comment><comment><USER22> Speaking of protocols, aside IPFS, what open protocols have come out in the last 5 years?

<comment><USER8> Matrix, a competitor to XMPP is 4 years old [0].

[0]: [https://en.wikipedia.org/wiki/Matrix_(protocol)](https://en.wikipedia.org/wiki/Matrix_\(protocol\))</comment></comment>


Hackerface: Rapportive for HN - <AUTHOR> http://hackerface.com/

<comment><USER2> OP (or whoever authored the app), open your manifest.json file, go to line 20, and edit the permissions line to remove the all-domain permissions. Here are your current permissions:

      "permissions": [ "http://news.ycombinator.com/", "http://news.ycombinator.org/", "https://news.ycombinator.com/", "https://news.ycombinator.org/", "https://*/*", "http://*/*" ],

FTFY:

      "permissions": [ "http://news.ycombinator.com/, "http://news.ycombinator.org/, "https://news.ycombinator.com/, "https://news.ycombinator.org/],

I'm not going to read through all of your js to figure out what other domains you really need. Kudos on the idea -- I like it. Just not ideal to ship an app to this audience with the unnecessary security nail-biter during install. Fix and push and you should be good to go.

EDIT: Format

<comment><USER3> The reason it needs all permissions is that some people have their own pages and the data is on there. So you might need permission to crawl those secondary pages for twitter and github (?)

At least I think that's how it works. I could be wrong.

<comment><USER4> That's correct.

<comment><USER5> Couldn't you set up a proxy and just whitelist that? Excellent piece of work btw.

</comment></comment></comment></comment><comment><USER6> I didn't install it, even though I like the idea, because it wanted access to 'data on all websites'. I don't know whether Chrome allows more permissive permissions (like only HN), but trust is a rare good and I wouldn't allow a random extension to see everything I browse to.

<comment><USER7> It does allow permissions for specific site. I'm not sure how it works it might be needed so it can get the data from external sites.

<comment><USER8> you can allow access to finite set of websites in manifest.json while developing the chrome plugin.

</comment></comment></comment><comment><USER9> Might want to dial back the requested permissions on the manifest, you're asking for access to 'data on all websites' right now.

<comment><USER10> Agreed on this.

Also just adding a comment to test this plugin out (requires hovering over a username)

</comment></comment><comment><USER4> Gwen here, I am building hackerface. Didn't quite expect it to land here before I do some more testing but here it is! Re. the "all permissions" thing, it is required to circumvent the same domain origin policy since the plugin does bunch of GET requests to external websites to find information about you. Working on improving the results and some nice new features right now.

<comment><USER11> Thanks for the great extension! My suggestion is to move extraction to your server, which would solve the permissions and same origin policy problems. We'd only have to give permission for your website, and as a bonus you can cache extraction for quicker results.

<comment><USER4> Thanks! That's something i'm looking at.

</comment></comment></comment><comment><USER12> Is it easier to develop extensions for chrome than it is for firefox? I'm a firefox user and only find this kind of extensions for chrome. Or are all the cool kids using chrome these days?

<comment><USER13> I've developed extensions/plugins for both browsers. Chrome is way easier, but not as powerful. Firefox is much more obtuse, but also much more powerful.

In practice, I found developing for Chrome much more enjoyable. Developing for Chrome felt like modern development whereas developing for Firefox felt very heavy, verbose and overall frustrating.

<comment><USER14> When you developed for Firefox, have you tried the new Addons SDK[1]? My understanding is that its model resembles Chrome's.

[1]: <https://addons.mozilla.org/en-US/developers/docs/sdk/latest/>

<comment><USER15> I'm currently porting my Firefox extension to the new Addon SDK. It does indeed look more like the Chrome/Safari/Opera model and makes things easier (like restartless addons which was hard to do before in Firefox).

</comment></comment></comment></comment><comment><USER16> A good start, but I think it misses the things I like about rapportive. The most important thing in rapportive, IMO, is that you see a picture of the person you're responding to. That causes you to respond to a person, rather than just a "user" or "email address" - it forces you to acknowledge the person at the other end, and encourages empathy for them.

This should automatically tell me the person I'm responding to if possible, and show me a picture and context then. A picture (or gravatar) next to their username would also be cool.

<comment><USER4> It does load the profile of the person you reply to automatically now (refresh your chrome extensions page).

</comment></comment><comment><USER17> I did something similar a while ago albeit much less complete: [http://syskall.com/hn-crunch-greasemonkey-script-for- hacker-...](http://syskall.com/hn-crunch-greasemonkey-script-for-hacker-news)

It adds a little picture and info bubble next to the username of HN members who have a CrunchBase profile (I manually compiled a non-exhaustive list here: <https://github.com/olalonde/HN-Crunch/blob/master/hn.php#L5>).

</comment><comment><USER18> The script breaks on trying to view my own profile. The error is: "Uncaught TypeError: Cannot call method 'split' of undefined" in chrome- extension://daljejehnbbbhjlecjgafnnfgilbkdhj/script.mini.js:32

It also affects my userstyle for the topbar. Please don't break page styles :) Namespace your CSS.

Also, please fix your permissions as noted by jchung and others. I installed the extension only on my Chrome Canary because I was too lazy to check the entire JS for security problems (or malicious intent).

With some fixes however, this would be really nice to have.

</comment><comment><USER19> When I try to lookup myself all I get is "Found HN profile..." and that's it.

<comment><USER20> Same problem here, although I can find your profile now. I wonder if it's relying on an external service and it takes time to generate. Maybe my name will work in a few minutes.

edit: oh, maybe the problem is to do with the logged in users profile is different (inputs vs. display) and because it's fetching locally it's seeing the edit fields?

edit edit: I think that's it! I logged out and I can fetch my profile fine.

<comment><USER10> Hovering over yours kills this page for me in chrome for some reason. Asks me to kill the page or wait, every time.

</comment></comment></comment><comment><USER17> Any plan to open-source this?

edit: After some digging I found this non-minified version on Github: [https://github.com/Gwendall/hackerface/blob/gh- pages/script....](https://github.com/Gwendall/hackerface/blob/gh- pages/script.js) No license info though...

<comment><USER21> Looks like that link has been taken down - the repo replaced by a newly initialized one.

</comment></comment><comment><USER22> Very well done!

Besides the all-domain permissions which you might want to constrain a bit, I'd also remove the button which doesn't do anything. Chrome lets me hide it, but you could make me forego that step too.

</comment><comment><USER23> It would be nice to have an easier way to view your own profile (I expected this when I went to my profile page, but it didn't happen).

</comment><comment><USER24> Fancy, but as you may have discovered, blind link traversal is likely to come up with tons of really bad data. If you follow a Google Plus link, you'll inevitably get your own Google Plus information.

The company I work for does this as an API and I know the challenges behind it, so for a JS project, nice work!

<comment><USER25> Aha! That explains why for some users, I'm seeing them listed as having my own e-mail address.

</comment></comment><comment><USER26> When I attempted to "facebook like" this page, the preview displays "Find MSN Hotmail Hacker, Cash Advance and more at Hackerface.com. Get the best of Debt Consolidation or Insu...". OP might want to fix that.

</comment><comment><USER27> Quite cool, but when are you planning on changing the permissions?

</comment><comment><USER28> You should use localstorage to cache the results of your get requests.

</comment><comment><USER29> Permissions issues aside, this is really awesome. Great work!

</comment><comment><USER30> Super cool, great job. I know I'l be using this extensively.

</comment><comment><USER31> I cancelled the installation when it askedd for permission to acces "your data on ALL websites". It would be great to limit it to news.ycombinator.com and just the sites it really needs to access. Why is it done this way?

</comment><comment><USER32> "Can access your data on all websites. Allow?"

Umm, no.

</comment><comment><USER33> What font did you use for the "logo"?

<comment><USER34> Right click > Inspect Element > font-family: Dosis

</comment></comment><comment><USER35> Really well done. Thank you!

</comment><comment><USER36> I don't know what rapportive is. I guess I'm not cool enough to understand this headline.

<comment><USER37> Rapportive is a gmail extension. It shows the profile picture and various social profiles of the person whose email you are reading or writing to.

You can just ask a question, you know. No need for pithy one-liners about internet coolness.</comment></comment>


Ask HN: How to bring on co-founder almost two years later? - <AUTHOR>

Hey all!
I am the founder of a small company, mostly consulting work for large organizations, but we do have our own SaaS product that is gaining traction in our small market. I'm in a strange position and would love if the HN community could help with some advice.
I've been able to bootstrap the company so far, I feel like we could grow more significantly in areas if I had another high-level person come to help us in areas that I just can't do and don't have the time for. I have a person in mind, but I am worried.
Without getting into too many details about the company, I've bootstrapped the company, put my own money into it, built the technology, networked to close the deals with our customers, and we're profitable! I don't make a lot from the company yet, but enough to provide a modest income for my family and I employ one other developer.
My question is, do people generally bring in co-founders years after the company launched? And if so, what do those deals generally look like?
The person I have in mind wants a share of the equity, but I have an impression he wants to come in around 50/50, which to me doesn't make any sense. I was thinking something more like a smaller salary (we don't have the capital for what he would want) and something like 5-10% with a vesting period, but honestly I have no idea how you even begin to calculate this type of arrangement. Or if it's even something I should do.
Is this even considered a co-founder? Or should I treat him more like an early hire?
Thanks! <comment><USER2> Ok, having started down this path a couple of years back and trying to bring in a co-founder here is my 2 cents. btw, I ended up not doing it but learned some really valuable lessons. Also, I am identical to you in that we are a consultancy that has 2 SaaS products.

This will rarely work if you are using "co-founder" as a way to get a higher dollar (caliber) employee for a cost which you can afford today. Co-founders are either all in and you have to forget what you have already done or you have to admit they are not a co-founder and instead are a critical employee hire.

There is nothing wrong with offering a lower than market salary and giving the employee a 5-10% ownership with vesting. That is completely legit.

I think the main problem is don't call someone a co-founder and mislead yourself or them if they will not be splitting decisions and the hard times with you. A true co-founder may be taking a salary when times are good, but has to be willing to forego it when times are tight (bootstraped especially). If not, they are not a co-founder they are an employee.

As far as an equity split, I do not feel every co-founder deserves an equal share, but I would always start there and then see what other facts might affect it. For example, 15 years ago in a startup I was an early contractor for, a group of people started the company but one of the co-founders had family to support. So he kept his day job quite a bit longer until the company was more solid and could afford his monthly minimum without struggling. They all agreed that meant he wasn't going to get the equal split, and I remember even he felt that was fair and they were great people to work for/with. And no one was trying to be an asshole to him, just he didn't have the same risk and skin in the game.

<comment><AUTHOR> Thank you for the advice.

You've hit my major concern, which is trying to figure out if he is the kind of person that can do the co-founding thing, or if he just wants equity without the risk.

<comment><USER2> You are welcome, good luck!

</comment></comment></comment><comment><USER3> Let's keep this simple, and say you split this SaaS off in a new company (i.e. no consulting revenues).

He could be a co-founder. You have created some value. That is your achievement. But, do you want him to be to a co-founder? Does he have complimentary skills? Will co-owning the business mean you can achieve more, with the same resources?

Some partnerships end up adding up to 3 when you add 1+1 together. If that would be one of them, it's worth considering it.

What kind of business is it, and what is the exit plan? If you're running this as a profitable business without the intent of raising VC, you could get him to buy part of the equity at market rate (part of the payment could be deferred). Or you could 'sell' him half the equity, with vesting in place, but defer the payment by reducing it from future dividend payments.

Lots of possibilities, but in the end it depends on what he'll add to the business and if you are comfortable working with him.

As a friend of mine once put it, is he a creator of wealth or a taker of wealth? Most people are takers.

<comment><AUTHOR> "As a friend of mine once put it, is he a creator of wealth or a taker of wealth? Most people are takers."

Great point. My worry is he is looking at this at a take opportunity.

</comment></comment><comment><USER4> Congrats on the progress you've made so far. Personally, it doesn't sound like a co-founder. It's not clear whether you think he wants that title specifically or just a lot of equity. The former would be a red flag to me without some context.

As far as the amount of equity to give, 50/50 after a couple years, when you've gotten the company profitable, seems high. But that depends on why you started the company in the first place, and more importantly, where you want to take it from here and how he can help with that. If he's uniquely capable to accomplish things that you really want for the company, but can't or don't want to do yourself, you'll compensate him highly. If you can't afford the salary, you'll give him more equity. And that's certainly a valid decision, even if it's not typical. That said, the fact that you don't think it makes sense leads me to believe that it doesn't. I personally would have to have no doubt before giving up that much of the company that I"d made profitable.

Whatever you do, I would vest any equity too.

</comment><comment><USER5> 50/50 doesn't even remotely make sense here. You've taken on a huge amount of the risk in starting and pushing your company to profitability.

Calculating the equity distribution should be easy:

4 * (His current salary - what you would be paying him) = His risk (I use 4 here because that's the usual vesting period)

Your profit * [5-10] = Your valuation (You'll have to work out the coefficient on your own, as it depends heavily on your market and growth potential)

His risk / your valuation = His equity

This should give you a really rough number. This is the absolute upper limit of what you should be giving him in equity (otherwise there is little to no risk). Keep in mind that if you are growing 20%+ year over year then your valuation doesn't conform to the formula above and should be adjusted much higher (or just think about what you would be comfortable selling the company for today).

Equity is all about risk/reward. Because you are profitable, much of the risk is already out of the equation. Consider also how much greater the responsibility in having 30%+ equity to the company - do you think this person will be loyal to that?

</comment><comment><USER6> Disclaimer: I provide co-founder advice for a living [1], so take this with a grain of salt

I can see a couple of scenarios playing out here, here is the one that I think applies to you, but let us know if something else is going on:

That new person is mostly a sales person and you expect them to grow a fairly new product which is independent from your existing business. Fine. It's ok for them to have a huge incentive plan, where they earn most (half) of the profits of that new product. Compensation: decent base in cash, huge cut of sales, a small piece of equity (always vesting of course)

[1] [http://foundrs.com](http://foundrs.com)

<comment><AUTHOR> Wow your site has some great resources, thanks!

He's not really a sales guy, most of our sales are high touch, and very technical. So I am the guy that handles all of that.

I would put him more on the marketing/strategy side of things.

</comment></comment><comment><USER7> Why doesn't 50/50 [with a vesting schedule] make sense?

The sunk costs are sunk. Presumably the cofounder will more than double the rate of growth and value of the business.

To put it another way, if you're going to treat your business as a startup, then assume it will fail and that 80% is as valuable as 50%. And if it gains startup style growth, your life will be roughly equivalent with 50% or 80% of the exit.

On the other hand, if this is hard negotiating then there's a poor fit because the relationship is already adversarial. If the potential cofounder is not someone you want to become rich, don't marry them. 5~10% equity is not "co" anything.

Good luck.

<comment><AUTHOR> Thanks for the reply!

You're right, sunk costs are sunk costs. I guess I am try to also figure out if I want a "co-founder" or just another early hire.

<comment><USER7> Cofounder implies is that there is a new company founded and that the person involved is someone you trust enough to build a business with. Anything else is just a "what goes on the business card" distraction from real work.

If you're negotiating terms, then it's a finite pie model and you're in the hiring business. That's a distraction from the core business mission - it's a means to an end -- [but an often necessary one]. Founding a company is about grabbing a slice of an infinite pie, it's outward focused. That means bouncing ideas off each other.

I'd be wary of anyone who is looking for the title. That's resume building, not business building. I'd be wary of anyone who is negotiating for a founder role. Founding is about doing not getting.

On the other hand, I'd be wary of anyone who wanted to be a founder without equal equity. Anything else creates friction on the relationship between founders. 50/50 equity is simply a way of testing whether it's a cofounder relationship or not.

I'm not saying you should give away half your company. But I'm not saying it isn't the right business decision either. It's a hard problem because the decision is about whether or not to take a leap of faith.

As a final thought, 10% or 50% if the person you are considering is not the right person, the business is going to suffer. Be equally selective in either case. Pick people you want to be in business with.

</comment></comment></comment><comment><USER8> A very naive idea could be just to get some money from the bank and hire somebody.

Why you need a co-founder anyway ? It sound that you just need a great technical leader.

<comment><AUTHOR> I wish I could, but we don't have enough cash on hand to commit to that level of employee.

<comment><USER8> Well, still you can pay some one part time, doesn't need to be a full time hire.</comment></comment></comment>


Cancer treatment for MS patients gives 'remarkable' results - k-mcgrady http://www.bbc.co.uk/news/health-35065905 <comment><AUTHOR> The results so far all seem to be open-label, so we can't be sure that the treatment actually works at all. Liberation therapy had similar testimonials about making people in wheelchairs walk again, but we now know it was useless (or entirely placebo).

There seem to be a couple of placebo-controlled trials underway, so we should know for sure whether this treatment is useful after we get the results from those trials.

</comment><comment><USER2> I wonder how they got the stem cells from blood. From what I knew, these cells are mostly available at birth, not much afterwards

<comment><USER3> You have stem cells through out your entire life, you might be confusing (adult) stem cells with embryonic stem cells.

Adult stem cells can turn into only a limited type of cells. Embryonic stem cells can turn into any type of cells.

Your bone marrow contains adult stem cells mainly haematopoietic stem cells which can turn into various other sells like erythrocytes (red blood cells) and lymphocyte (white blood cells).

</comment></comment><comment><USER4> Wonder if any other auto-immune diseases could be usefully treated by this…

<comment><USER3> This (well similar) technique was also been reported to technically cure HIV. Over the years there have been several incidents[e.g. 1] where people with HIV also had cancer such as leukemia in which the treatment was the kill the bone marrow and do a transplant.

Since for the procedure the bone marrow is wiped out as well as most of the immune system the HIV virus could not replicate within the T-Cells.

If those cases maintained a strict anti-viral regiment they would so far be pretty much HIV free (dormant vira as well as common HIV infection of the digestive tract cells would still be an issue).

This is unlikely to be used as any form of an official procedure tho the risks are simply too great without an actual proof that this even works in the long term.

Wont surprise me tho if some people might evolve this to a limited treatment especially if a bone marrow donor with natural HIV immunity can be located.

[1][http://www.hivandhepatitis.com/hiv-treatment/hiv- cure/4813-a...](http://www.hivandhepatitis.com/hiv-treatment/hiv- cure/4813-aids-2014-australian-bone-marrow-transplant-patients-show-no- detectable-hiv)

</comment></comment><comment><USER5> [Just for the record: MS = multiple sclerosis in this context, not the more common abbrev. for Microsoft]</comment>


Ask HN: Best Way To Present Your Freelance Business - <AUTHOR>

As a freelancer, are you best to trade under the banner of a small branded company, or all under your own name?
My current preference is to brand under my own name as I fear I may fall in the cracks between people who are looking for a freelancer and people who are looking for a business if I try to appear too formal.
However, I'm interested in the pros and cons and what other freelancers have chosen. <comment><USER2> A lot depends on the kind of clients you want. If you want to be subbed out work or hired short term by an existing development team, marketing your persona, maintaining a technical blog, and other things will definitely help.

But if you're like me, you want to work directly with founders and small businesses. They tend to trust companies, they seem more... permanent (even though it costs $100 and an hour of paperwork to put one together) And it's also all about appearances. Say you attend a networking event. When you pass out a business card with "ABC Consulting" and your name followed by "President", I'm almost certain the results would be better than "Brennan Dunn, Web Developer".

There are a few other benefits that come with being under a company.

I've realized the need for some pretty firm processes: payment schedules, handling additional scope, etc. And I think it's easier to stick to processes when they're a _company_ thing, even if it's just you.

Second, if you get more work than you can handle and need to subcontract things out under you, you'll want to manage that as a company.

</comment><comment><USER3> If you brand yourself as a small company then the clients might get the feeling that you have an office. Hence, when you try to set up a meeting with them, they might be surprised.

I was always telling the truth and saying that I will be the only person working on the project. However, if you don't have an actual company it might be a good idea to say that you work as a collective - a few designers/developers working together and outsourcing the work between each other.</comment>


Haskell I/O is pure - <AUTHOR> http://chris-taylor.github.com/

<comment><USER2> C is also pure. After all, C code is just data until it gets compiled and executed. When and how often this happens is irrelevant. You could write a C interpreter in Haskell, and then your C code would be as pure as anything else in Haskell!

<comment><USER3> "When and how often this happens is irrelevant."

Why do you say that?

<comment><USER2> Because it's an implementation thing, it has no relevance from a theoretic view on the language. It's like the "compiled/interpreted" label.

<comment><USER3> I'm not an expert, but my understanding is that IO is not necessarily run even if an expression is evaluated that produces a value of type "IO a". That is a theoretical difference, not just an implementation detail.

</comment></comment></comment></comment><comment><USER4> Looks like a reimplementation of Wouter Swiestra's work on a functional model of IO,

[http://www.staff.science.uu.nl/~swier004/Publications/Beauty...](http://www.staff.science.uu.nl/~swier004/Publications/BeautyInTheBeast.pdf)

Author = {Wouter Swierstra and Thorsten Altenkirch}, Booktitle = {Haskell '07: Proceedings of the ACM SIGPLAN Workshop on Haskell}, Title = {Beauty in the Beast: A Functional Semantics of the Awkward Squad}, Pages = {25--36}, Location = {Freiburg, Germany}, Year = {2007}}

<comment><USER5> hi dons,

that is a nice link that i will check out. (i just read their data types a la carte because of a recommendation by you on stack overflow afair just last week.)

i was wondering whether it is possible to restructure the io monad into smaller monads that only do more restricted things. is it possible to do something like that w/o breaking backwards compatibility? and if so, is it possible to really do so in the haskell standards process?

i'd really like to reason about programs by looking at a type signature like

      cat :: FilePath → Term (Teletype :+: FileSystem) ()

instead of

      cat :: FilePath → IO ()

<comment><USER6> This kind of thing is usually done with typeclasses. You have the "real" monad, but you only use it via the restricted interface allowed by the typeclass constraints. Off the top of my head:

        class (MonadIO m) => MonadTT m where

          ttGetLine :: m String
          ttGetLine = liftIO getLine

          ttPutStrLn :: String -> m ()
          ttPutStrLn = liftIO . putStrLn

        class (MonadIO m) => MonadFS m where
          fsReadFile :: FilePath -> m String
          fsReadFile = liftIO . readFile

        cat :: (MonadTT m, MonadFS m) => FilePath -> m ()

In reality I don't think I would structure it quite this way, but you get the general idea. Code to interfaces, not to implementations.

<comment><USER6> Okay, now that I have a moment, here's how to do it with proper encapsulation. The previous example let you perform arbitrary IO with "liftIO", which is _exactly not_ what you want.

        class MonadTT m where
          ttGetLine :: m String
          ttPutStrLn :: String -> m ()

        instance MonadTT IO where
          ttGetLine = getLine
          ttPutStrLn = putStrLn

        class MonadFS m where
          fsReadFile :: FilePath -> m String

        instance MonadFS IO where
          fsReadFile = readFile

        cat :: (MonadTT m, MonadFS m) => FilePath -> m ()

<comment><USER5> you are of course right, that that would work.

i was wondering more whether it is possible to structure the io monad (using algebras as in data types a la carte) or as you did here while _preserving backwards compatability_.

right now io is very broad and can be pretty much everything. it should be more fine-grained. (i still have to look into safe haskell and it's rio, but my superficial look says, it's something different.)

</comment></comment></comment></comment></comment><comment><USER7> Permalink: [http://chris-taylor.github.com/blog/2013/02/09/io-is-not- a-s...](http://chris-taylor.github.com/blog/2013/02/09/io-is-not-a-side- effect/)

<comment><AUTHOR> Thanks! Stupid of me to miss that.

</comment></comment><comment><USER6> So basically, "main" is not an impure function. It's a pure value representing an impure function. A monad is essentially a data type that represents computations in some domain-specific language, using data (return) and code (>>=) from the host language. The _only_ thing special about the IO datatype is that the impure Haskell runtime can evaluate it.

</comment><comment><USER8> If you want to do this in practice rather than as a specialised example, I would suggest using something like Conduit, rather than reinventing the wheel.

Conduit is used widely in the Yesod web framework (for example, to implement the HTTP server), and could easily be hooked up to stdin and stdout for an interactive pure program.

Conduit internally looks like this: [http://hackage.haskell.org/packages/archive/conduit/0.5.6/do...](http://hackage.haskell.org/packages/archive/conduit/0.5.6/doc/html/Data- Conduit-Internal.html) \- note that you get to choose an underlying monad m and run things in it using PipeM, but you could just make this the Identity monad.

</comment><comment><USER9> I had an "aha" moment here - very nice little article.

<comment><AUTHOR> Thanks. I wrote this post with beginners in mind, so it's good to know that it's provoked an "aha" moment in at least one person.

<comment><USER10> Two! Is this the "correct" way to make domain specific languages? If there is more to it, is there an another text you recommend?

</comment></comment></comment><comment><USER5> see <https://news.ycombinator.com/item?id=5193368> for another submission.

</comment><comment><USER11> What is the point of having this "mini-language"?

What would happen to purity if I hit ^D?)

<comment><USER12> It's useful with Safe Haskell, which limits a few things so you can 'safely' run untrusted code. With this interface you could limit IO actions the user is allowed to run.

</comment></comment><comment><USER13> If Haskell I/O is pure, why can't it be intermingled with other pure functions?

<comment><USER14> It can be. A value of type `IO foo` is an ordinary, pure value just like a value of any other data type. It can be passed as an argument to a pure function, returned from a pure function, manipulated using any functions that can apply to `IO` values, stored inside an arbitrary data structure, composed with other `IO` values to make new ones, etc.

What _isn't_ pure is the process of extracting the `foo` from the `IO foo`, i.e. getting the result of the I/O action. For instance,

        getLine :: IO String

is _not_ a function in Haskell, which you can "call" in order to get a string from stdin. It is instead a value which represents an I/O operation yet to be performed. There is no way to force it to yield its result within your entirely pure program (ignoring escape hatches like `unsafePerformIO` and friends), but you can nonetheless compose it with other I/O operations which depend on its result, such as putStrLn:

        echo :: IO ()
        echo = getLine >>= putStrLn

The above defines a pure value representing an I/O operation which, when performed, will echo a line from stdin to stdout. The `>>=` combines the two pure values to yield a new pure value. Again, there is _no way_ to directly cause this I/O action to be executed, which would necessarily introduce impurity. You can only ensure that it will happen later by threading it into the special I/O operation `Main.main :: IO ()`, which every program must define, and which will be implicitly performed when your program is run.

By reifying "statements with side effects" into simple, pure, first-class values of type `IO`, Haskell lets us remain 100% pure even while our program will eventually have effects on the real world outside of the machine. Haskell code is just a set of pure declarations; the side effects are deferred until _after_ our code has already run (which conceptually happens instantaneously when the program is launched). Since our code runs "before" any side effects occur, it cannot possibly depend on their results.

A Haskell program merely sets up the dominoes in an elaborate arrangement, then looks the other way while the runtime system knocks over the first one.

<comment><USER15> That's not entirely fair. Better to say that Haskell separates the pure from impure, but it has both. The straight line dependencies of the IO sequencing are still part of the Haskell program.

The domino analogy could apply to C just as well, except that there are only a few lines of code before the first domino falls.

<comment><USER14> Sorry, but I disagree. A Haskell program emphatically does not have any concept of impurity or statefulness whatsoever, except in the form of `unsafePerformIO`, which circumvents the type system, only comes into play under "extenuating circumstances", and which an ordinary program has no use or need for.

The language itself does not have any notion of sequencing or order of evaluation, nor does it need one. It inhabits a pure, mathematical universe where such things have no meaning. Given an arithmetic expression such as

        (1 + 2) * (3 - 4)

it naturally makes no difference which parenthesized expression is evaluated first, because the evaluation of mathematical expressions cannot have side effects. It would be absurd to consider a universe in which such a choice could influence the result of fully evaluating the expression, because such a universe would be wholly unlike our own, to the extent that our intuitive rules of logic and causality would no longer apply.

Likewise, given the Haskell expression

        putStrLn "Hello" >> putStrLn "world!"

it makes no difference which of the two IO expressions is evaluated first, because the _evaluation_ of those values cannot have side effects. The second one may be evaluated before the first; it makes no difference. The _execution_ of the resulting action _will_ have side effects and impose sequencing, but there is no way to express execution or cause it to occur in the Haskell language. Execution can only happen "outside" of the context of the program itself, not in the program's abstract and pure universe, but in our own imperative and stateful one, as a side effect of the RTS.

A C program, to extend the metaphor, knocks over each domino one by one as soon as it is placed. In fact, _placing the domino_ and _knocking it over_ are one and the same thing. The programmer has no opportunity to leave the room before the side effects come into play, because imperative languages do not distinguish between evaluation and execution. A purely functional language not only draws that distinction, but eliminates execution from the picture entirely, leaving it to some external entity to actually do the deed that the program constructs from pure components.

<comment><USER13> From what you wrote, it sounds like what Haskell buys you is a layer of indirection - the proper analogy is not between a Haskell program and a C program, but instead between a Haskell program and a C compiler. A C compiler does not care in what order it outputs code, so long as it all gets output by the time it finishes.

If I understand this, Haskell "compiles" pure code into a sequence of side effects, and then the RTS executes them. So say I wrote a C compiler, that, given a source code, outputs a subcompiler that compiles the source code and then executes it. My C code does the same thing as it would under a traditional compiler, except more slowly - why should I want this?</comment></comment></comment></comment></comment>


What's new in purely functional data structures since Okasaki? - <AUTHOR> http://cstheory.stackexchange.com/questions/1539/whats-new-in-purely-functional-data-structures-since-okasaki

<comment><USER2> Doesn't answer the question, but I wanted to mention that Chris Okasaki was (by a HUGE margin) the best professor I ever had in my life.

I took his Programming Languages and Translators class at Columbia where he basically taught how to rip apart languages and build some crazy things. Postscript compilers, Lambda Calculus interpreters, Regex parsers using lazy evaluation in Haskell, and other mad scientist stuff.

You were dazed and confused by much of the material (he'd expect you to learn a new language and a new way of thinking almost every assignment). At the end of the semester though, it would be hard finding something that intimidates you. I actually TAed the class the next time he taught it, just so I could interact with the material some more.

He's over at West Point now, which might be a better fit for him anyway (most of us tended to whine about how hard the assignments were :)).

<comment><USER3> Also had him, PLT and SoftE. I regret not "getting" what the was talking about at the time, also having the "dazed and confused" experience, as it was so at odds with most of the "Java school" stuff I had experienced in the program up to that point.

You might want to see <http://www.eecs.usma.edu/webs/people/okasaki/pubs.html> for updated publications from him.</comment></comment>


(Linux, JAVA, SQL, PHP, C++, C, JS) programming quizzes, questions and answers - <AUTHOR> http://xquizzes.com/programming/PHP <comment><USER2> Oops, sorry, guys: Apparently that "quiz" doesn't apply to everyone who does serious programming.

E.g.,I decided to base the software for my startup on Windows instead of Linux.

Why Windows? One source for nearly everything in software I need except what I have to write, my favorite editor and scripting language, Knuth's TeX, and Firefox! So, I get Windows XP and now 7, Windows Server of whatever years, old copies of Office and PhotoDraw (good enough for my purposes), SQL Server, IIS (Web site front end), .NET, ASP.NET, ADO.NET, huge on-line Microsoft documentation, in most of the really important ways really well written, lots of books and fora, lots of expert users, and, surprisingly, if have a really good question, then some good on-line support from experts from Microsoft, for free.

For a compiled programming language on Windows it seemed that I had basically just two choices, C# and the .NET version of Visual Basic. So, which one? Well, first-cut, the two are nearly equivalent, that is, offer essentially the same access to the .NET Framework and the common language runtime (CLR). So, really, the main difference is just in _syntactic sugar_.

Well for the _sugar_ part, C# seems to borrow the sparse, obscure, deliberately _idiosyncratic_ syntax of C, and I don't like that, regard it as inefficient, for coding -- writing, reading, or teaching. Visual Basic has a more traditional flavor of _sugar_ I like much better for writing, reading, and teaching. So, I selected Visual Basic.

For JS, ASP.NET writes a little for me, but so far for my Web pages and everything else I have yet to write a single line of JS.

For C, I've programmed in it and have a little of it from open source in my project and otherwise regard it as walking or riding a bicycle instead of driving a car.

SQL? Sure: I'm using SQL Server. But so far my SQL queries have all been quite simple. So, I've learned what SQL I needed but likely couldn't pass a good test on SQL. I have a plenty good enough background in the _theory_ and intentions of relational database, e.g., from one of Ullman's books, and will dig into more complicated SQL statements as needed.

So, net, my software development is significant and doing just fine, but for that "quiz" I'd be lucky to get 10%. So, the quiz is not a good evaluation of everyone doing serious software!

<comment><USER3> Are you saying that you develop on Windows and did not take the Linux quiz because getting a low score implies you are not a "significant" software developer?

This does not seem to be a tool to merely judge you as a developer. Rather, it acts as a tool to determine syntax understanding, and to possibly point out new things one may not be aware of. Much more important than assigning a number to a skill.

<comment><USER2> > determine syntax understanding

I didn't start in programming with Windows and Visual Basic .NET. Not nearly. Instead, I've programmed far too many things that with bits and used a wide variety of examples of syntax, BNF, lexical scan, parsing, etc. Lots of it. E.g., I got quite good with PL/I and made contributions to its AI extension KnowledgeTool, and some of the syntax there is advanced stuff. E.g., just the scope of names rules and the difference between dynamic and static descendancy are nice, useful, and a bit intricate.

I've invented and implemented new syntax.

To me the quiz looked like just a test of _skills_ with nothing more of significance to be learned.

</comment></comment></comment><comment><USER4> Some of the linux questions are flat out wrong or lack appropriate scope. i.e. a question about removing packages lists the only appropriate answer as "rpm -e"; in another about common ports it lists DNS as "23", which is telnet and DNS is on 53. Thanks but no thanks, I think I'll craft my own questions and answers.

</comment><comment><USER5> I am positively impressed by the difficulty of the Linux questions.

</comment><comment><USER6> Size of a void* is two bytes? really?</comment>


Ask HN: Why does software demand stay consistent when there is unlimited supply? - <AUTHOR> I understand essential goods like food are constrained by both demand and supply. But, why does software demand stay so consistent? For example, my addon [1] gets 40 - 50 installs per day like clockwork. When I was a newbie, I used to worry that everyone will install/uninstall my software on the same day during launch and I will run out of users sometime soon. I learnt it doesn't happen that way. But, I haven't figure out why. Why is that 40 - 50 people discover my software everyday consistently, when there is no supply constraint?<p>[1] https://gsuite.google.com/marketplace/app/formfacade/743872305260 <comment><USER2> You're getting some things mixed up.

We must be careful when comparing tangible goods (like food) to intangible goods (like a browser app).

Food has an element of genuine scarcity. This scarcity is what causes food to have economic character. If there is more demand than supply, this state of things triggers investment into the production of more food to satisfy the demand some time in the future, ultimately affecting prices. Prices will rise in the short-run, but decrease in the long-run (if the demand can be met, and then some). If food was not scarce, it would not be an economic good, and it would not be subject to supply and demand.

Software, on the other hand, is intangible. It can be duplicated and distributed, essentially for free, and more or less forever. Even if you have a paid plan this does not create scarcity. We shouldn't think of software the same as we think of food in terms of economics.

What is the theoretical limit to how many paying customers would be so many, that it impacts the ability of new customers to install, pay for, and use your app? Practically, this question is insignificant, that's one of the reasons software is interesting.

The simplest answer to why 40 - 50 people discover your software per day, is that whatever marketing channels you have utilized (or not) up to this point in your apps's lifetime expose you to 40 - 50 users per day who have a direct need that they think your product may solve.

The second element to this is that there are a lot of people in the world. As others have pointed out, they don't all have the same information. You are capturing a fraction of the total number of people out there looking for a solution to this specific problem, who are influenced by, or aware of, at least one of the marketing channels that influence your app.

If the problem your app solves became a non-issue overnight (for everyone), then you would see that number start to decline over time or go away instantly.

What's more likely to change the situation (temporarily or permanently) is that something changes (positive or negative) with those marketing channels, either influenced by you, or by whatever entities or forces control those channels.

Hope this helps.

</comment><comment><USER3> Because supply constraint (or lack thereof, 'unlimited' in this case), is not the only constraint factor acting against your situation. A constraint of awareness is also acting on your situation with the addon. Demand is potentially (very likely) hindered by awareness constraint. In this case, with an addon, if you're seeing a quite consistent uptake daily, with unlimited supply, it probably means your awareness factor is consistently acting on your situation as well.

An older and quite predictable example of this in action, would have been during the glory days of SEO, where based on consistent search engine rankings, you could expect highly predictable traffic to flow in day after day (still somewhat true today, it's just no longer as easy to game to the result you want). That's Google acting as arbiter of the awareness constraint.

It's an incomplete picture, when you've heard people talk about supply & demand as if they're the only constraints occurring. The context is usually far wider and more complex than just those two constraints, there are usually many constraints.

As a simple example, if you have an unlimited supply of eggs and you're giving them away for free, it doesn't do you much good if you have no awareness such that people don't know about the free eggs. The awareness factor is the constraint rather than the supply and it is keeping demand at zero. Supply without awareness equals zero demand.

</comment><comment><USER4> It really depends on your marketing. If you simply display your app on G-Suite Marketplace, then people will discover your app by searching for specific terms. In the absence of some specific event to cause an increase in searches for the relevant terms you simply see a steady state. If you were to do a well targeted marketing blitz then you might see a short-term spike in downloads.

<comment><AUTHOR> Yes. I get that. But, why is that the same number of people search for a specific term everyday? Is the aggregate demand so predictable? Don't you find that weird?

<comment><USER4> I don't find it weird. It's basically the smoothing effect of very large numbers which is what statistical analyses depend upon. If you wrote two new very different apps, then you may find different "steady state numbers". The more niche the app the smaller the numbers and the more "hair on fire" the target need the larger the numbers. It's actually a rather well known dynamic in marketing. That's why they use certain words to capture attention.

</comment></comment></comment><comment><USER5> It's mostly because market doesn't always have perfect info available.

There are always people who hear about goood things from someone who is fixated on particular software or has grown intimate and comfortable with one, then others might follow him and get on the same bandwagon even if that software is of last generation. It happens.</comment>


Ask HN: ELI5 how a post I made on HN is resulting in ads targeting me? - <AUTHOR> I made a comment here on HN about shoes, mezlan shoes, and now I'm seeing tons of ads in my normal browsing activity for mezlan shoes.
Fuck this. And while I do love the shoes, I'm pissed off at HN for enabling this behavior.
How do I stop it? And HN @dang shame on you. <comment><USER2> You did not maybe go to the domain you mention in the post about shoes, or google the term to find it? From the outside, something like that seems a lot more likely.

<comment><AUTHOR> Ah that's likely.

In my mind I thought I only mentioned them here on HN, thank you.

<comment><USER3>
      > I'm pissed off at HN for enabling this
      > behavior ... HN @dang shame on you.

This might be a good time to reflect on how you apportion blame for something that you don't currently understand, and which might have an innocent reason behind it. I get that you were angry, but lashing out at people when in that frame of mind is rarely helpful, and sometimes you get it wrong.

<comment><AUTHOR> Sure this is a fair comment, aside from the fact I don't believe I was "lashing out" - and, you only learn by asking questions.

So sorry but not sorry. ;-) (in a nice way, not upset at you at all)

<comment><USER3> I wrote a lengthy reply to this to expand on my point and try to make it clearer, but this isn't really the right place to put it, and your profile doesn't have contact info. So I've copied it out into an external site for people to click through to if they choose. It's here:

[http://www.solipsys.co.uk/RandomHash/01b535c4dfe0e250e083473...](http://www.solipsys.co.uk/RandomHash/01b535c4dfe0e250e08347393d46561f.txt)

That deliberately won't last forever, so the link will fail after a while.

Just a random experiment.

<comment><AUTHOR> I appreciate your reply. My apologies, and thank you.

<comment><USER3> kudos <fx: fist bump></comment></comment></comment></comment></comment></comment></comment>


Marketing a new social network - <AUTHOR> I am gonna start beta testing a new social network that uses maps a lot but I am not sure how to market it? I don't know if I should use influencers, and if yes which category would be more suitable? I know that people are hooked on instagram, facebook, and twitter however i feel that the need to empower everysingle person on the planet equally is not met, this is why the app was created <comment><USER2> This probably sounds really cliched by now, but this seems like the perfect use for influencer marketing. Social networks are always driven by network effects, and having big names there early is what often drives the initial engagement.

So approach a bunch of popular people on Twitter/YouTube/Instagram/whatever (including celebrities), and try to incentivise them to use your social network, as well as to advertise it to their followers.

</comment><comment><USER3> Very Interesting concept

<comment><AUTHOR> Thank you! Would you be interested in trying the beta test once it is released?

</comment></comment><comment><USER3> What does this app do? It uses maps but what does it use maps for? Is it sharing content, pictures, etc? What need does it serve. Are you trying to get random people around the world to connect? China probably wont be in due to communist ways.

<comment><AUTHOR> Random people may connect if they wish, but initially it is more about seeing what is happening worldwide in realtime, and of course people can befirend each other or follow each other. One can share texts, pictures, videos, audio. For now we will try to beta test only in North America</comment></comment>


The double whammy of being poor – making less and getting charged more - <AUTHOR> https://blog.paribus.co/2015/09/20/the-double-whammy-of-being-poor-making-less-and-getting-charged-more/ <comment><USER2> A few problems with this article:

1\. The absurd proposition that it's unjust that you will find a better deal if you spend more time looking for one. Of course you will.

2\. The claim that e-commerce is a regressive tax on the poor because purchases are bigger percentage of the poor's income. You can say the same thing about any purchase. A burger is a bigger percentage of a poor person's income than a rich person's income.

Paribus is providing a great service, but this is a marketing/PR article pretending to be serious economic commentary and analysis. It's just hopping on the bandwagon of a narrative that's politically en vogue (that the world is stacked against the poor).

<comment><AUTHOR> Hey Marco,

Thanks for the kind words on the service. On your feedback, here's my take:

1\. Stepping back, isn't it more absurd that people are, by default, charged more unless they spend significant time dealhunting? The claim is not that the disparity itself is unjust, just that it's time for this to come to an end.

2\. For all of the biggest e-Commerce players (Amazon, Walmart, etc.), their biggest business lines (and ones where they're investing the most) are in the sales of basic necessities (food, household goods, etc.). So considering how dynamic pricing will impact people (esp. re: basic necessities) is important. I'm not sure why you're dismissing the key point so quickly -- if we care at all about helping bridge the income divide, we should care about helping the poorest get the most affordable prices.

In any case, I wrote the article because it really did shock us. Joe is a real person and a friend and we hope it does some good to show a small slice of what we're seeing.

<comment><USER3> 1\. To paraphrase what the fine folks in the US like to say, the world doesn't owe you a deal.

The merchants do deals not for the customers, but for themselves: to maximize profit, increase market share, and maybe achieve some other goals. If you guys are communists, and think corps are evil, and the poor are exploited, that's fine, but how can you hope to successfully operate in any industry without comprehending the basic motivation of the principal actors?

<comment><AUTHOR> We just have a different view.

In a highly-competitive marketplace, the stores that treat people right will win volume. Those who win volume take the market. So don't rip customers off (or be extremely quick to correct it when you're called out) and you'll gain customer loyalty and all the subsequent transactions.

The world doesn't owe you a deal, but then again, the customer doesn't owe you their next purchase. Life is long. As a store, your job is to keep earning customer trust so they come back.

<comment><USER4> How do you reconcile your view of how you think things are with how they actually are?

ie. if what you're saying were true, why are there still businesses that only give deals to people who hunt for them?

<comment><AUTHOR> There are all kinds of players along the spectrum. It's just that the ones that grow to become the largest (Amazon, Walmart, Costco, Jet, etc.) tend to operate this way (and offer Everyday Low Prices).

</comment></comment></comment></comment></comment></comment><comment><USER5> There are many examples of this and some even more direct: poor people have to deal with debt collectors more frequently out of necessity and as a result end up paying both their original debt+whatever the debt collectors tack on.

In many cases the added on part is larger than the original debt.

Then there's buying quality products that last longer by the wealthy and crappy products that need to be replaced (far) more frequently by the poor and many more examples like these.

<comment><USER6> Debt collectors are a result of using credit or spending being one's means. There are plenty of poor people that don't buy a 60 inch TV from Best Buy and then default on the payment. A huge portion of debt collectors are collecting on things like department and electronic store credit cards. The ability to manage money (even if you don't make much of it) is not unique to just the rich. There's a big difference between being poor and being irresponsible. Most debt collectors are the result of being irresponsible.

<comment><USER7> My father ran a budget counselling service at the local church. The vast majority of people the church was helping were low income families who were struggling to make ends meet, and were considering things like payday loans in order to simply put food on the table.

They were not irresponsible people: they had smart phones but no landline: Smartphone for $60/month versus landline for $70/month, they were making some smart decisions about where to spend their money.

The issues they did have were not being in contrl of their budgets. For the majority of these families, just learning about the envelope budget system helped them regain control. Also learning how to shop around more carefully and pay attention to whh coupons were useful and which were merely advertising helped.

The catch for low incme families can simply be not knowing how to be ruthlessly disciplined with their budget.

There is a vast gulf between, "being irresponsible," and "not knowing better ways to manage their money."

Poor people are often poor because they do not have access to the same opportunities as you: inadequate education, poor training, naiveté about wealth-building habits, and so on.

You can help make the world a better place by not perpetuating the myth that poor people are popr because they are undisciplined, lazy, stupid, or irresponsible.

Even better, find a local support group for low income families and see how you can provide assistance.

<comment><USER8> "200-600 dollar smartphone with a 60/month plan"

If I was so poor as to barely afford food I would be living either without a phone or with a $20 shit-phone on a bare bones prepaid plan. Costs hundreds less and gets the same shit done (person-to-person communication)

<comment><USER9> Ah, the good ol' "if I was poor, I'd be awesome at it!" argument.

Whether or not you're right about how you'd actually behave, it's irrelevant. We can see how poor people actually do behave, and we can look to solutions that work empirically rather than philosophically.

<comment><USER8> Very good point

</comment></comment></comment></comment></comment></comment><comment><USER10> I was reasonably poor once (even did a stint homeless living out of a motel).

The basic assertion: you make less and end up being charged more is in a sense "correct".

For example: if you're poor, you'll probably shop at a discount retailer and buy discount or knockoff clothes, which will fall apart and need replacing faster than if you had just bought more expensive clothes. Over time, the replacement costs will add up and you'll "pay more" for clothes.

Another example: if you buy in bulk, you can get some items cheaper, but poor people tend to buy in small quantities (e.g. cigarette and alcohol "singles" are a phenomenon that only exist in poor areas for example)

This all sounds kind of stupid, but there's a rationale for it that makes sense from the inside, here's a scenario:

I just paid rent, I have $100 left in my bank account and payday isn't for 2 weeks. I work a physical labor job and my work boots need replacement. Do I?

a) Buy the $29.99 on sale boots at Walmart and hope they last for a couple months?

b) Buy the $259.99 boots at the high-end boot store and they'll last for a couple years?

c) Buy the $84.99 boots at the discount shoe store and they'll probably last for 6 months to a year?

Of course the answer is a). This leaves me with $50 to eat on for two weeks. I can't afford b) no matter what so it may as well not exist and c) leaves me starving before payday.

You count pennies when you're poor, you know exactly how much small amounts of things cost because you spend all your time buying small amounts of things and balancing out the bottom few rungs of Maslow's Hierarchy of Needs against your daily purchases.

Getting out of this cycle is _very_ hard. It's not like you can save up enough to be worthwhile. Even with $5/mo left over at the end of every month, it takes 52 months to save up to buy the b) boots.

This means also that you live in a constant state of emergency. Literally _everything_ is an emergency -- and this short circuits your ability to prioritize and make what seems like rational decisions. It also means that whatever spare money/time you have you may as well spend on stupid bullshit because you've convinced yourself it won't make any difference anyway.

It really is a vicious cycle.

<comment><USER11> If this theory is true, then there should be some category of goods where the poor spend more than the non-poor. What category of goods is it?

[http://www.bls.gov/cex/2014/combined/income.pdf](http://www.bls.gov/cex/2014/combined/income.pdf)

<comment><USER12> > then there should be some category of goods where the poor spend more than > the non-poor. What category of goods is it?

There are many items where poor people pay more for smaller quantities, and end up buying much less of that product over time.

"Sachet marketing" will sell individual servings of shampoo to poor people. A poor person can't afford a cheaper-per-portion bottle, and can't afford to buy a sachet every day, and so will wash their hair once a week (52 sachets a year) instead of buying bottles and washing their hair - with 2 passes ("rinse and repeat").

The total spend is obviously less, but it's not controversial to suggest that poor people spend more for less than wealthy people, but if you compared similar use the poor person would have to spend considerably more.

<comment><USER11> This is possible. Do you have evidence that this occurs to any significant degree?

<comment><USER13> Would you accept the basic notion that items bought in bulk cost less in per/unit or per/volume terms than individually packagaged items as evidence?

</comment></comment></comment></comment></comment><comment><USER11> The article misrepresents the federal reserve study it uses to make it's case. It claims that the federal reserve study implies rich "have more leisure time so they get to know prices and deals well".

But this is nonsense. The federal reserve study doesn't study rich and poor at all - it studies the unemployed vs employed. Specifically, the article shows that _unemployed_ people spend less time shopping than _employed_ people. Is the article really claiming that unemployed people have less leisure time?

In fact, the article actually claims that reduced working time causes a (small) drop in shopping time.

<comment><AUTHOR> You're straight up wrong. Read the piece. Quote below:

"For instance, total shopping time for households with an income between $100,000 and $150,000 (category 5) is 5 to 7 minutes greater (per day) than average shopping time by an individual in a household with income in the $0 to $24,999 bracket (category 1). After controlling for various individual characteristics (column I), this is robust to including both time and state (columns II and III), as well as labor force status dummy variables (column IV)."

<comment><USER11> From the article:

"The results indicate that a 1 minute decline in market hours is associated with a 0.04 minute decline in shopping time."

The correlation between income and shopping time is simply not caused by leisure time. This should hardly be surprising - leisure and income are inversely correlated (i.e., the poor have lots of leisure, the rich very little).

<comment><USER14> > leisure and income are inversely correlated (i.e., the poor have lots of > leisure, the rich very little).

Do you have any data for that? I rather doubt that it is very solid if it exists at all. There are a large number of poor people working more than two jobs and more hours than the rest of the "middle-class". Additionally, many of the jobs from the upper end of the middle-class tend to often require longer working hours.

<comment><USER11> Most poor people don't work at all, and about half of those who do are only part time.

[http://www.bls.gov/opub/reports/cps/a-profile-of-the- working...](http://www.bls.gov/opub/reports/cps/a-profile-of-the-working- poor-2013.pdf)

Doesn't cover multiple jobs, but it shows most poor folks don't work at all, and a little under half of those who do are part time.

Do you have any data suggesting a significant number of poor people work multiple jobs, or work more than 50 hours/week?

<comment><USER14> > Most poor people don't work at all, and about half of those who do are only > part time.

If by "most" you mean ~10% (or were you including children and old people?)

>I can't find any solid statistics, but there is certainly evidence for a 'significant number': [http://poverty.ucdavis.edu/policy-brief/low-wage-work- uncert...](http://poverty.ucdavis.edu/policy-brief/low-wage-work-uncertainty- often-traps-low-wage-workers)

I wasn't specifically thinking about people below the poverty line, but was rather intending to include the "working-class" as well.

</comment></comment></comment></comment></comment></comment><comment><USER9> Characterising this as "the 1%" is a disservice to the concept. You don't have to be "1%" wealthy to do what's in the article.

Also, I question _" The wealthy build a better sense of when prices are low and deals are good."_ \- the poor are very aware of how much their food costs, for example. Wealthier people aren't, because they're not counting pennies. A question illustrating this, taken from Yes Minister: "How much is a pound of margarine?" The _really_ wealthy, the 1%, aren't going to have a good idea. But the poor are aware of the costs of their staple foods.

The underlying point of the article isn't a bad one, but extrapolating "this dude orders clothes sight-unseen from his smartphone every two weeks" into "the poor have it so tough" is a strange path to take.

</comment><comment><USER15> Did I miss something? The deal was only offered via the website and not via mobile. What does that have to do with being poor?

<comment><USER16> Lots of poor people are online via smartphones, not desktop computers. That's how.

<comment><USER15> If they had shown some data to back that up it would have been nice.

I've heard anecdotally that's true, but I've never seen data.

I've also heard about the price discrimination that goes on based on the browser (Safari = user with $$$). Are we sure it wasn't just that?

<comment><USER16> Years ago, I took a college class called Homelessness and Public Policy. I am also currently homeless and have been on the street for more than 3.5 years. I think that is about as poor as you can get in the U.S.

I bought two tablets to go homeless. I currently own a tablet and a laptop. But I assure you I am really weird for a homeless person. Tablets are not normal on the street. Cell phones, including smart phones, are very normal on the street.

I can't give you precise figures and this is not a formal survey. It is firsthand personal observation. I spent six months in downtown San Diego participating in various homeless services programs. This exposed me to dozens or hundreds of other homeless individuals at a time. (The participation at one of the meal sites was upwards of a hundred individuals per day and I participated in that regularly for about six weeks.)

Does that work for you? (Sincere and respectful question.)

</comment></comment></comment></comment><comment><USER17> Paribus: I've never heard of you. I don't know what you do. You have no link to your website on your blog.

<comment><AUTHOR> Hey -- didn't want to distract from the article. Just added in two hyperlinks to our homepage.

We were part of the YC Summer 2015 Class. Link to our homepage here: [https://paribus.co/](https://paribus.co/)

</comment></comment><comment><USER18> The example I've noticed is the poor person who doesn't have means for transportation will usually go to the closest source for staple items, like a convenience store. Milk and bread are 50-100% at these stores versus a traditional grocery store and they rarely put things on sale.

</comment><comment><USER19> Cool to see screenshots of price discrimination in practice

<comment><AUTHOR> Thanks man!

Was pretty surprising when we first saw it, but have seen since that lots of sites now serve different prices/coupons depending on the device you use to access.

</comment></comment><comment><USER14> I agree with the point that this article makes and think we should be discussing the questions article tries to raise.

However, the article is a poorly written piece of PR. It makes several mathematical errors, mis-represents the study on shopping time, and fails to provide any evidence to back up it's critical point of "e-commerce today acts like a regressive tax".

Why is this crap on HN?

</comment><comment><USER20> Inflation- the secret tax</comment>


"Plausibility" in Science Fiction - <AUTHOR> Compelling Science Fiction magazine's editor lays it out in episode 38 on ScFi Thoughts podcast: https://lancerkind.com/series/scifi-thoughts/ <comment><USER2> Please submit the usual way: filling out the URL field.

Leaving it blank is only for discussion starters that don't have an URL.</comment>


Show HN: Serverless realtime chat with Fanout and Fly - <AUTHOR> http://flychat.fanoutapp.com/ <comment><AUTHOR> Hi HN!

I'm proud to show this serverless chat demo today. Realtime updates are streamed using SSE. Fanout handles the streaming connections and Fly handles the application logic.

The Fly app is not long-running, but executes briefly whenever it needs to run.

Source & additional details: [https://github.com/fanout/flychat](https://github.com/fanout/flychat)</comment>