To Fall Out of Love, Do This (2015) - <AUTHOR> http://www.newyorker.com/magazine/2015/01/26/fall-love <comment><USER2> The biggest thing I have found to keep in love is kindness. Sure, I could come up with a cutting, sarcastic rejoinder in on something my spouse says, but that would be unkind and cause pain.

If you look at the list presented, there is vitriol in pretty much every question. Don't do that.

Also, along the same lines as kindness, never speak ill of your spouse or put them down in front of anyone. Be their biggest fan.

Speak kindly. Act kindly. No matter how you feel, make it a habit. This will go a long way towards a good, long-lasting relationship.

<comment><USER3> > never speak ill of your spouse or put them down in front of anyone. Be their > biggest fan. > Speak kindly. Act kindly. No matter how you feel

Really? No matter what they do, no matter how they make you feel? Never, ever?

<comment><USER4> Not OP, but I agree completely (even though I find it hard)! Really. Never. It will never, ever give you any benefit at all to speak ill of your spouse. It will give you nothing to act unkindly. It will only cause your spouse to feel justified in doing the same.

As the other poster said, there are times when you should walk away from situations. There are healthy relationships and there are unhealthy relationships. If you honestly don't believe that the relationship can be a healthy one, it's time to leave. Especially if you are suffering from any kind of abuse in the relationship and you have unsuccessfully tried to resolve it, don't hesitate. Don't make or accept excuses. Heck, don't feel you even need to resolve the issue if you are getting serious abuse. Just leave.

There is no reason to retaliate in any way. Doing so will hurt you as well. The situation is what it is. You can explain the situation, explain your feelings and leave it at that. Or if you can't safely explain things (for fear of retaliation from the other side), then just leave without an explanation. Start the healing process immediately. Don't start a knife fight and then crawl away even more wounded.

For smaller issues, I've found (much to my dismay) that if my wife is doing something that hurts me, she is _completely_ unaware that it hurts me. Even if it obvious to me that it should be hurtful, it's not obvious to her. If I'm snarky about it, then she is hurt. Now it is doubly hard to improve the situation. If she is not hurt, then it is relatively easy to have a non- confrontational conversation about what happened. I control all of the hurt feelings, because they are mine. If she is hurt, then I have to rely on her to work out her feelings in addition to listening to my problems. It very rarely works out well.

<comment><USER3> I find hard to believe there is no appropriate time to be harsh with your partner and that there is no middle ground between being nice no matter what or leave.

<comment><USER4> It's never been useful in _my_ experience, but I'm certainly interested to hear your experience.

</comment></comment></comment></comment></comment><comment><USER5> This New Yorker piece is a comical riposte to the NY Times article cited in the epigraph. I remember the original Times article well because it was discussed here on Hacker News and inspired this extraordinary comment recommending its own version of a follow-up study, one involving a video camera, 20 photographs with multiple-choice descriptions of smells, and a "treatment room":

[https://news.ycombinator.com/item?id=10807897](https://news.ycombinator.com/item?id=10807897)

</comment><comment><USER6> This seems to be a humor piece, but it honestly just makes me sad. My only feeling is that I wish I hadn't read it. Maybe this resonates differently to someone else?

<comment><USER7> It got me the same way at first. But then I realized that the questions simply bring out the essence of being human, the same flaws and insecurities that most people feel. That had me feeling that we're all connected on a human level through good and bad, diminishing the importance of the issues one might have in a relationship. That was my take away from those annoying questions, anyway.

<comment><USER8> I was thinking yesterday about how even if you don't agree with someones way of thinking, it can still be useful to understand it. People might use different words, and structure their explanations in different ways, but they responding to and trying to rationalize their experience of the same underlying wetware. looking at the way other people try to explain human nature can help reveal things about the experience of being human.

</comment></comment></comment><comment><USER9> I LOL'ed at

> Why did you send me a link to this _Times_ article if you didn't want us to > go through the questions together?

</comment><comment><USER10> I scrolled through the questions out of curiosity and for some people I can only see this backfiring catastrophically. Personally I wouldn't be able to not be sarcastic about a number of them. And some I wouldn't be able to answer at all, for example:

> Take four minutes and tell your partner your life story in as much detail as > possible. I already know that story. And I was there for that one. It didn't > happen like that.

I'm sorry but there are good chunks of my life I really don't want to remember or discuss: I honestly don't want to talk about the moment I learned that my best friend since I could walk or talk had died. Or the following several years of my life. Just one example...

<comment><USER11> > I can only see this backfiring catastrophically

That is the point!

Read the title again, these are questions not for falling in love, but to fall _out_ of love.

<comment><USER10> Yeah, I forgot to add some context: I looked at Arthur Aron's[1] 36 questions as, not just those in the article. Equally applicable for both.

[1] [https://www.psychologytoday.com/us/blog/open- gently/201310/3...](https://www.psychologytoday.com/us/blog/open- gently/201310/36-questions-bring-you-closer-together)

</comment></comment></comment><comment><USER12> What in the world is the point of this? These aren't questions to make a couple ask each other, it's just forcing them to say mean things to each other. For example:

> O.K., fine, I'm adding your dishwasher issue to my list of irritating > things, too. So there.

>I already know that story. And I was there for that one. It didn't happen like that.

Those are not questions, that's a statement.

I can make a couple fall out of love by forcing them to ask only one "question": "Do you love me? No you don't, I hate you and I'm breaking up with you".

<comment><USER13> Still that wouldn't really do it though, an in love couple would just laugh at it/each other. But keep in mind that this is intended as humor.

<comment><USER12> I have been on the internet too long today to have an immediately cynical view of it. On second viewing I did appreciate this one as it sticks to the theme of asking questions:

>What would constitute a "perfect" day for you? Why do we always just go home and watch Netflix instead of doing any of that stuff?

I do think it would have made a bit more sense as satire if the author had stuck to only questions such as this, but perhaps I'm just nitpicking.

</comment></comment></comment><comment><USER14> > What would constitute a "perfect" day for you? Why do we always just go home > and watch Netflix instead of doing any of that stuff?

Ouch that hits close. But really the answer is that we prefer Netflix over the other options.

There's a lot to be said about finding comfort in each other's company after a long day and not needing anything else. Just _be_ together and enjoy a good story. It's great

<comment><USER15> My wife and I get quite a bit of joy from not just watching the stories, but also talking about them long afterward.

<comment><USER16> My wife and I get quite a bit of joy from not watching the stories, but just paging endlessly through the options.

<comment><USER17> And boggling at the endless "...why in the world would they think that we'd like that? 97% match?! Because we liked X, we'll like its antithesis?"

Algorithmic recommendations are entertainment in their own right sometimes. And it helps you realize that the robot uprising is a looooooooong way away.

</comment></comment></comment></comment><comment><USER13> Honestly I skimmed through at first and thought these were the intimacy _promoting_ questions and I found them to be very good because they are so focused on blunt honesty that one probably will discover a couple of truthful things of beauty about their partner. But apparently these are intimacy discouraging :S.

</comment><comment><USER18> These are thirty-something's questions. They give me the "Was I really obsessing over _that_?!" vibe. Maybe I'm old and cynical.

</comment><comment><USER19> "Given the choice of anyone in the world, whom would you like to punch in the face?"

My sparring partners.

"On average, how long do you spend composing tweets before you post them? Do you realize that they don't matter?"

I don't have a twitter account.

"Before responding to a text, do you wait a few minutes to make it seem like you're doing something more important? Why? Answer me now."

Yes, because otherwise people unconsciously start taking you for granted.

"What would constitute a "perfect" day for you? Why do we always just go home and watch Netflix instead of doing any of that stuff?"

Being together.

"What's your favorite song? No, it's not. I've never once heard you listen to that song."

World in my eyes. She likes Depeche Mode too.

"Honestly, which one of us would you rather have die first?"

Her, so that she doesn't have to miss me.

"So you want me to be the one who becomes a burden to our children and then dies alone?"

No, I want ME to be the one who dies alone and her the one who dies loved.

"Name three things you find irritating about your partner."

Actually, we just discussed one today and are making steps to deal with it.

"Why do we even have a dishwasher if you insist on thoroughly scrubbing the dishes before putting them in? O.K., fine, I'm adding your dishwasher issue to my list of irritating things, too. So there."

This only seems to happen with American dishwashers. For whatever reason, they never manage to clean if there's visible food on the plates.

"If you could change anything about your partner's family, what would it be?"

For her stepfather to still be alive.

"Take four minutes and tell your partner your life story in as much detail as possible. I already know that story. And I was there for that one. It didn't happen like that."

We all remember things differently. That's half the fun :)

"Why did you send me a link to this Times article if you didn't want us to go through the questions together?"

That's precisely why I sent it.

"Between you and your partner, who is the better gift-giver?"

Her.

"What is your most treasured memory? I was there for that one. It definitely didn't happen like that."

Doesn't matter. She was there and that's what counts.

"What is your most horrible memory? No, "Right now, answering these questions" doesn't count."

When she went missing and I thought I'd lost her.

"Is there something that you've dreamed of doing for a long time but haven't done because you know your partner wouldn't like it?"

Nope. We're secure enough in our relationship to do some things alone out of consideration for the other.

"Don't pin that on me. You know we don't have to do everything together, right?"

Absolutely.

"What do you want to do for dinner?"

Stay home, eat Kartoffelgratin, and play Killing Floor 2 together.

"If you knew we were getting dinner tonight, why would you eat a cupcake at five? All I've had to eat today is a cup of soup and, like, eight almonds."

Oops, sorry.

"Take turns going to the bathroom with nothing but a thin, not at all soundproof door separating you from your partner. Just sit there and hear it all."

Sure, that's our daily life anyway.

"What do you want to watch tonight?"

Das Boot. One more episode till end of season!

"Are you going to fall asleep in the middle of the episode again?"

Maybe. She might also. Some episodes we've watched halfway through 5 times :P

"I'm not the one making us answer these questions. Do you want to stop?"

Nope, I'm good.

"Do you not think our relationship is strong enough to handle these questions?"

Yup.

"How do you feel about your partner's relationship with his or her mother?"

It's been strengthening over the years, and that's good.

"Oh, like your mother is so much better?"

She gave birth to me, gracing God's earth with me. So yeah :)

"Share a tube of toothpaste with your partner."

Sure.

"Why are you not squeezing from the bottom? Are you a monster?"

Because I like to torment her.

"Tell your partner which celebrities you find attractive."

I'm not good at knowing who people are so I can't name names, but in general 90% of celebrities are attractive by design, and don't look that way in real life.

"Why do none of those celebrities look anything like me?"

Because they spend 100k a year on it and have a team of professional photographers and photoshoppers at their service to bend reality.

"Rent a car with your partner and drive while he or she gives directions."

That's what we normally do. Driver side driver, passenger side navigator.

"How am I supposed to get across four lanes in two seconds? You have to tell me the exit earlier."

Oops, sorry.

"Tell your partner something that you like about him or her. Try to think of something. Anything."

She's the most loyal, loving and caring person I've ever met. She even gives dosh away in KF2 to newcomers when she's medic in the early waves!

"Given the choice of anyone in the world, whom would you like to punch in the face?"

My sparring partners.

</comment><comment><USER20> _> whether the intimacy between two committed partners can be broken down by forcing them to ask each other thirty-six questions no one in a relationship should actually ask_

don't read on if you're easily offended by topics of sex - what follows is how a European perceives US/American dating culture. If you get offended by the word "porn" don't read. you've been warned ...

going through the list in this article I'll more likely to fall in love with a partner willing to discuss these. There are actually several deep conversations buried within each question - and I have discussed many of them with my partner. it sounds a bit sad (not to say pathetic) to me if somebody is unable to raise these in a relationship.

maybe I'm strange, in which case what do young couples today talk about?

American dating culture and how it is propagandized in Hollywood serials is very odd to me. I spent a lot of time among Americans at work and also outside work. To me as a European having to ask somebody to go on a date in a formal way is pretty odd. Like you can't just go out for a movie or drinks with the opposite sex and see where it leads? I have never been on a date in my whole life and this article reminds me how sterile and awkward Anglo-Saxon cultures are about sex, dating and relationships.

The English basically can't do it unless they're utterly wasted (exaggerating but there is truth here!). American's can't do it unless they constantly talk about "daddy this" and "daddy that" -> what's up with this pedopheliac insinuations that are everywhere from old books such as The Great Gatsby to The Boardwalk Empire (it's not new that Americans like to call their man daddy).

If I just started making out with a woman and she calls me daddy I'd be so grossed out I'd be heading for the door. Also if you look at porn (and the US is the biggest producer here) you can see what they think gets clicks: suggestions of individual A does it with their "step-daughter" and violence is the norm. Americans can't get off unless there is violence (--> this is very different to Italian or French porn).

Generally Americans have some rather strange rules of what to ask on date number #1 then date #2 ... and then 3 months later women expect some conversation about where this is going. E.g. a couple constantly have to move "forward". I've had an American gf - her constant blubbering and her inability to just enjoy the silence together was what killed it. I never understood if it was out of insecurity that she was never able to shut up - but meeting many of the years it's more the norm with both sexes than the exception. Like they have to constantly open their mouth even they got nothing to say to remind themselves that they're still ok and to mask their insecurity.

I'm going off on a tangent but this article reminded me of all that. considering the article isn't a joke it just drives home even more how pathetic and sterile US dating culture is. I mean if you can't discuss your deepest and darkest with your SO why not just get a dog? why bother at all with such a farce?

<comment><USER21> This trope of "as a member of the superior European culture, America is strange because..." is really tiring, and as an American that has spent years living in various European countries, almost always flat-out wrong and inaccurate. I assure you, European countries have some cultural practices that appear just as strange or backwards to Americans.

Your post is a perfect example: you have chosen a grab-bag of behaviors and traits from a very diverse group of people (329,227,746), thrown them together, and said "Look how weird these people are!"

<comment><USER20> oh don't get me started on Europeans, as a European I can guarantee you that we are as backwards in many ways even more so. there are many progressive elements among US culture but it's not what this article reminds me of (even more skurille that it's posted on HN since it has no value in psychology or philosophy). your comment is whataboutism but I can understand why it may offend (although offense wasn't my intention) I too prefer to be critced by my own tribe rather than an outsider. which is only human. but then it's also false because an immigrant to Europe (or somebody who has never been there) might make better conclusions about my country than those who are in the thick of it.

<comment><USER21> Your comment doesn't offend, it's simply ignorant and wrong.

<comment><USER20> how can my personal experience with American culture be wrong? it's not like I'm citing something I read but things I have and still experience. I'll leave it at this since there is no point in further discussion if we don't share the same basis/foundation in how we perceive reality.

<comment><USER22> You're making sweeping generalizations with surface level information.

<comment><USER20> I'm making generalizations about how America propagandizes its image throughout the world and I provide personal anecdotes on how these stereo- types have become real to me. It isn't how all Americans think nor did I say so. But it's real enough as there is evidence even in classic American literature so that they are as real or unreal as you want them to be (you can only not see them by never reading anything old or new). If you ask somebody to read all the American classics they will stumble upon these themes over and over.

As for grounding in reality I have met my share of Americans who were closer to this stereotype than others. The fact that everyone immediately understands what I'm referring to by mentioning these (American) social norms speaks for itself. There is nothing naughty about it in my thinking - it's a comment of the social norms from an outsider so feel free to ignore them or if they do not match your experience why get offended by it? But once people (like myself) have become aware of them it's hard to not see them.

Saying it's a generalization is a cheap shot when this whole article is pseudo-scientific nonsense that generalizes the shallowness of relationships by insinuating "there are many taboo topics you should never ask your partner". How else can you discuss society or culture without generalization? All of systems-thinking is a generalization and abstraction, it's literally how we reason in the face of complexity.</comment></comment></comment></comment></comment></comment></comment>


Leadership Lab: The Craft of Writing Effectively (2014) - <AUTHOR> https://youtu.be/vtIzMaLkCaM <comment><AUTHOR> A couple people thought this video could warrant its own discussion thread when I posted it in a comment [0]

We often use writing as a tool to think, which is useful as it helps facilitate incrementally forming thoughts. However, we also use writing as a tool communication. The main message of this video is effectively "Don't expect your readers to care about the writing you used to think!". Then, the lecturer teaches us different ways writers who wrote for thought can re-orient their writing for be best received by readers.

In terms of differences, writing for thought usually is incremental and explores a problem space. On the other hand, writing for communication usually seeks to expose and then resolve gaps in a mindset. One is converging the whole way, the other needs to diverge before converging. Effectively, making the reader care.

The lecturer also explains how important words can be, insofar as they show you as part of an 'in' or an 'out' group. To be an academic and have your work received well by other academics, you need to communicate like an academic, written communication is no exception.

The video isn't short, but well worth your time.

[0] [https://news.ycombinator.com/item?id=23912252](https://news.ycombinator.com/item?id=23912252)</comment>


What's wrong with computational notebooks? - <AUTHOR> http://web.eecs.utk.edu/~azh/blog/notebookpainpoints.html <comment><USER2> Co-author of the study here. Let me know if you have any questions or how you overcome some of the problems we identified!

<comment><USER3> I just wanted to say thank you. Many of the points in your study strikes a nerve. Part of my responsibility at my last job was to introduce good software engineering practices. What happens? The data scientists go rogue and start running notebooks left and right. How do they productionize their work? Well, they don't. They were academics. All they know is that the models ran fine in their notebooks on their laptops. Meanwhile, we didn't have anyone that was devoted full time on model productionization.

Sharing data? They had enough problems sharing their notebooks.

<comment><USER4> _> to introduce good software engineering practices. What happens? The data scientists go rogue and start running notebooks left and right. How do they productionize their work? Well, they don't. They were academics. _

My background is programming (instead of data analysis & modeling) so I'm sympathetic to your idealistic "software engineering" view... but I'm also sympathetic to the academics' side as explained by Yihui Xie's blog post:

[https://yihui.org/en/2018/09/notebook- war/](https://yihui.org/en/2018/09/notebook-war/)

He's convinced me that criticizing non-programmers for using (or over-using) computational notebooks when it should be a "proper" programming language and deployment is like criticizing financial analysts over-using Excel to learn how to program VB or Python and re-write their spreadsheets into a "proper database" like Oracle or MySQL. That's just not reality. This divide between "end user tools" and "proper programmer tools" will _always_ exist because there is _no perfect tool in existence_ that serves the needs of both skill sets. Therefore, the programmers will always be able to say the data scientists or financial analysts are "doing it wrong".

<comment><USER5> > He's convinced me that criticizing non-programmers for using (or over-using) > computational notebooks when it should be a "proper" programming language > and deployment is like criticizing financial analysts over-using Excel to > learn how to program VB or Python and re-write their spreadsheets into a > "proper database" like Oracle or MySQL.

I think this is very much off the mark. For sure plenty of scientists are poor programmers, but that isn't the reason they use notebooks. It is because:

They are not attempting to write something that will run everywhere, and often. They are either analyzing some data or doing rapid prototyping. For the latter, it's like criticizing someone who uses a REPL. It's just that the Notebook is much more powerful than a simple REPL that one can safely stick to it. Imagine you will do 40-50 prototypes and only _one_ of those may end up worthy enough to make a product out of, and you don't know which one that will be. If you used a non-notebook environment, you'd give up in frustration by the time you hit the 15th one.

As you said: At the moment, there simply isn't an alternative that allows for rapid prototyping _and_ is production ready. It's a hard problem to solve - there's a reason no one had solved it for decades (well before notebooks were a thing).

Had notebooks not been invented, you would have the same people handing you MATLAB code asking you to productize it.

Claiming they are beginners/novice programmers is off the mark. Peter Norvig started using notebooks for a reason, and no one would call him a novice. I do SW for a living, but when I need to analyze data and visualize it, I'll pick a notebook over "proper" SW tools any day.

</comment></comment></comment></comment><comment><USER6> I want a notebook where causality can only flow forward through the cells. I hate notebook time-loops where a variable from a deleted cell can still be in scope.

1\. Checkpoint the interpreter state after every cell execution.

2\. If I edit a cell, roll back to the previous checkpoint and let execution follow from there.

I can't tell you how many times I've seen accidental persistence of dead state waste hours of people's time.

<comment><USER7> My problem with notebooks is that I feel like the natural mental model for them is a spreadsheet mental model, not a REPL mental model. Under that assumption, changing a calculation in the middle means that all of the cells that depend on that calculation would be updated, but instead you need to go and manually re-run the cells after it that depend on that calculation (or re- run the entire notebook) to see the effect on later things. Keeping track of the internal state of the REPL environment is tricky, and my notebooks have usually just ended up being convenient REPL blocks rather than a useful notebook since that's the workflow it emphasizes.

<comment><USER8> That's something that I think Observable [1], in my modest usage, seems to do well.

[1] [https://observablehq.com/](https://observablehq.com/)

<comment><USER9> Yep, the real complaint is "dead state", not out of order execution. Worrying about linear flow per se turns out to be misguided based on lack of imagination for/experience with a better model: reactive re-rendering of dependent cells. Observable entirely solves the dead state problem, in a much more effective way than just guaranteeing linear flow would do.

* * *

More generally, Observable solves or at least ameliorates every item in the linked article's list of complaints. (In 2020, any survey about modern notebook environments really should be discussing it.)

I found the article quite superficial. More like "water cooler gripes from notebook users we polled" than fundamental problems with or opportunities for notebooks as a cognitive tool. I think you could have learned more or less the same thing from going to whatever online forum Jupyter users write their complaints at and skimming the discussion for a couple weeks.

I guess this might be the best we can hope for from the results of a questionnaire like this. But it seems crazy having an article about notebook UI which makes no mention of spreadsheets, literate programming, Mathematica, REPLs, Bret Victor's work, etc.

From the title I was hoping for something more thoughtful and insightful.

<comment><USER10> You can get a jupyter extension[1] that allows you to add tags and dependencies and this way construct the dependency graph as you go along. Of course, you have to do it manually and the interface is a bit clunky, but it does what it says.

In practice I think taking care not to accidentally shadow variables is much more important: this dependency business only makes sense once you have a clear idea of what you need and by that point you are mostly done anyway.

[1] [https://jupyter-contrib- nbextensions.readthedocs.io/en/lates...](https://jupyter-contrib- nbextensions.readthedocs.io/en/latest/nbextensions/execution_dependencies/README.html)

<comment><USER9> I don't understand what you are trying to say in your second paragraph, but I highly recommend you spend a few weeks playing with [http://observablehq.com](http://observablehq.com) instead of speculating about the differences.

In practice, I find it to be dramatically better than previous notebook environments for data analysis, exploratory programming / computational research, prototyping, data visualization, and writing/reading interactive documents (blog posts, software library documentation, expository papers ...). It has a lower barrier to starting new projects, a lower-friction flow throughout

I find it better at every stage of my thinking process from blank page up through final code/document, and would recommend it vs. Jupyter or Matlab or Mathematica in every case unless some specific software library is needed which is unavailable in Javascript. The only other tool I really need is pen and paper, though I also use [http://desmos.com/calculator](http://desmos.com/calculator) and Photoshop a fair bit.

</comment></comment></comment></comment></comment></comment><comment><USER11> I used Mathematica's notebook interface quite heavily 15-20 years ago; Jupyter's interface is a clone of that in many ways.

At the time, my workflow was to use two different notebooks for everything: foo.nb and foo-scratch.nb. I'd get things working a piece at a time in foo- scratch.nb, not caring at all how it looked, not having to worry about leaving extra output or dead ends of explorations lying around; then the refined cells would be copied over to foo.nb, which would get pristine presentation, and which I could run top-to-bottom.

This workflow worked pretty well for me: very clean reproducible output, with the ability to easily refer back to all the steps of how I'd derived something, along with copious detailed private notes.

I never had to use it but I'm pretty sure each cell even had its modification time stored in the metadata in case I wanted to view a chronological history.

<comment><USER12> I make a "scratch pad" section of my notebook and work on ideas there. Then once I've pieced together a function line by line and tested it a bit I move it up to where it should be in the chronological order of the notebook. Kind of like your two notebook system but makes copying easier in Jupyter.

<comment><USER13> I do the same, though it feels dangerous because both the good-copy and scratch sections share the same kernel. JupyterLab works on .ipynb files, and makes it way easier to copy (or drag and drop) cells between different notebooks. One of these days, I plan to switch to JupyterLab to get a sense of what else it offers above Jupyter Notebook.

</comment></comment></comment><comment><USER14> See also Joel Grus' talk, "I Don't Like Notebooks": [https://www.youtube.com/watch?v=7jiPeIFXb6U](https://www.youtube.com/watch?v=7jiPeIFXb6U)

slides: [https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUh...](https://docs.google.com/presentation/d/1n2RlMdmv1p25Xy5thJUhkKGvjtV- dkAIsUXP-AL4ffI/edit)

<comment><USER15> Superb talk! It's worth noting that a lot of the issues he brings up, ultimately stem from the format in which Jupyter notebooks are stored. R notebooks, with their plain-text stored format as well as code-chunk parameters, solve some, but not all, of these problems.

<comment><USER14> [https://github.com/mwouts/jupytext](https://github.com/mwouts/jupytext)

doesn't solve the state management testing or tooling issues though, but commits are slightly less awful.

<comment><USER15> Yea, when I first found that extension, I was pretty excited about it. But it ultimately is not a first class citizen in the way it is for R notebooks, so I simply don't feel as comfortable using this as I might otherwise have been.

</comment></comment></comment></comment><comment><USER16> I'm someone who has been programming for a very long time and has been using notebooks for a reasonably long time (and almost always starts projects with them), my feeling is that they are a bit like C in that they make it easy to accidentally shoot yourself in the foot if you aren't careful. I always strive to end up with a notebook that can be "Run All" from a fresh clone, and I'd say that I'm successful with that maybe 60-70% of the time, and am close enough that I can fix it in the remainder.

As the article (and the many others like it that have frequently cropped up as soon as IPython Notebooks first started ramping up in popularity) points out though, a lot of newer users don't have the discipline to ensure that they're not jumping around too much. It's not a problem for them in the immediate term since they know how the state ought to work, but then it becomes a mess when they try to share it with someone else (or to run it themselves again 3 months later).

The challenge though is that the data analysis workflows that it allows are unbeatable by any other tools I've tried. In the end, it may just be that it's the worst form of data programming except for all of the others that have been tried.

</comment><comment><USER17> I interned @ Google AI last summer; used notebooks nearly everyday. Estimated productivity gain is 3-5x.

Biggest tip I have is to turn auto reload on, then write the bulk of your code as modular functions and call functions within your notebooks. Keeps the notebook tidy and it's easier to push your code this way.

It's also easier for sharing since most people viewing your notebooks (mentors, people outside your team) are interested in results/artifacts such as metrics, generated text, images, audio, which notebooks display well (not your code).

<comment><USER18> Beware perceived gains that (1) benefit you at the detriment of others or (2) have hidden costs exposed at a later stage.

</comment></comment><comment><USER19> (A frequent Jupyter Notebook user here. For data exploration, and teaching deep learning - then Colab is indispensable.)

The main question is: what are the alternatives, for data exploration (and sharing its results). Similarly, for data science tool demos, Notebooks shine.

IMHO the problem is not in the notebooks, but in how they are being used (i.e. the workflow). By writing scripts in py files, and using notebooks only to show their results (processed data, charts, etc) we get the best of both worlds.

The only build-in problem with Jupyter Notebooks is JSON, mixing input and output (and making it pain to work with version control). But here RMarkdown (and a few other alternatives) work well.

<comment><USER20> Yes, the article mentions users copy pasting snippets from their personal "library". Well, that could just be made into an actual library of functions to call.

I'm currently at uni enrolled in an AI/ML degree, and there are a lot of people with no previous exposure to programming. It's just that most people don't know that these things are possible, don't want to learn another tool (IDE) and are not interested in longevity of the code, just in the results. This shouldn't sound like me complaining, I totally understand. I think a lot of the stuff could be solved with just better tooling, but a familiarity with software development is definitely helpful.

Also a while back streamlit ([https://www.streamlit.io/](https://www.streamlit.io/)) was here on HN and since then I've been meaning to try it. I think this could be a good approach to bring together the best of both worlds.

<comment><USER21> _most people don 't know that these things are possible, don't want to learn another tool (IDE) and are not interested in longevity of the code, just in the results._

This approach is arguably more effective than wasting time trying to refactor everything into a library of functions.

Programming-as-crafting needs to be more of a thing. Not everything is written to be long-lasting. Even HN ushered the ugly code into hook functions that weren't shipped with the main codebase.

</comment></comment></comment><comment><USER22> I don't get why anyone one who knows how to use an IDE would ever use a notebook, the coding experience is garbage in comparison. I understand they started as a way to get STEM kids coding quick, but now they are like a standard in data analysis and data science, with those people needing experienced devs to translate the notebook into production code. This just drives the silo walls up higher.

<comment><USER23> Doing data science in an IDE would be terrible. With a notebook, you get the chance to load the data, view it, clean it where needed, view it again, analyze it, model it and do anything else you need to it. An IDE means that you can't use the previous output to guide your next operation in a direct fashion like you can with a notebook.

<comment><USER24> as a counterpoint, plenty of R folks are pretty happy doing all of that in Rstudio

<comment><USER25> It is interesting to see this discussion about notebooks while I'm thinking about all the RStudio users who do all their work inside the IDE and are pretty happy. Notebooks seem like such an inferior tool to me. I'm also extremely bias.

</comment></comment></comment></comment><comment><USER26> I don't know what this document is meant to do but you will have to take my Jupyter-lab instance from my dead cold hands.

I love notebooks, I work fast, line by line I execute commands and I immediately see the output (dataframes or graphs). For complex code I have an editor open (in jupyter-lab or vscode) for some functions and classes. But the main developing is done in the notebook, anything that ends in a module start in my notebooks.

As a biologist that learned to program after 30 I just don't understand how you can develop data processing code without such a close handle on dataframes and without checking in graphs/visualizations if your code does what you expect. I don't see how I would do that in pure vscode of other IDEs.

I also don't understand this sentence: "Once the data is loaded, it then has to be cleaned, which participants complained is a repetitive and time consuming task that involves copying and pasting code from their personal "library" of commonly used functions." What is the alternative? Not cleaning the code? And why copy and paste when you can perfectly fine have your own shareable module on the side? I guess most notebook users do some kind of hybrid development.

<comment><USER27> Good point on the last one; I think we have to 'educate' researchers on the fact that they can also write their own libraries and frameworks, and they should. Even basic data manipulation utilities can be made into Python modules and distributed at ease. If something is tedious, there _definitely_ is a way to make it less so.

</comment></comment><comment><USER28> I love jupyter notebooks. Without them, I wouldn't have been half as productive as I was during my PhD.

Here's a post I wrote just a few weeks ago describing some of the conventions that I established for myself over the course of 5 years:

[https://jessimekirk.com/blog/notebook_rules/](https://jessimekirk.com/blog/notebook_rules/)

I suspect that a lot of the conventions I describe help mitigate problems described here, some of which should be strictly or optionally enforced by the notebook instead of the user.

(The site's very much a work in progress, so expect to see odd and broken things if you go poking around.)

<comment><USER29> Thanks for this! Didn't know about the watermark extension, that looks useful.

I just started working with the Guix kernel for more easily reproducible and reusable notebooks. I suppose that's an alternative to using a conda environment.

See here for an example: [https://gist.github.com/jboynyc/5d0319f33e71427aa42a98c1a3a9...](https://gist.github.com/jboynyc/5d0319f33e71427aa42a98c1a3a915cb)

</comment></comment><comment><USER30> No mention of [https://observablehq.com](https://observablehq.com) notebooks? They're the best I've found in the "Share and collaborate" and "As products" category. JupyterLab is still pretty great for exploratory stuff, but visualization possibilities in observable are incredible.

<comment><USER2> No one we interviewed or surveyed mentioned it.

</comment></comment><comment><USER31> The problem of notebooks has been solved by the Python extension in Visual Studio Code (and some other editors too, although VS Code is the one I'm most familiar with).

Editing an ordinary Python file, if you insert the comment "# %%", you turn everything between that comment and the next "# %%" (or the end of the file) into a code cell that can be submitted to the ipython kernel, just as in a Jupyter notebook. The editor splits into two halves, the left half your Python file and the right half the Jupyter notebook window with submitted code and formatted output (e.g., DataFrames look pretty, plots display normally, etc.). When you're done running everything, you can export the result as a Jupyter notebook. Because you're editing an ordinary Python file, standard features like version control and importing the file you're editing into other files (you cannot normally import .ipynb files IIRC) work normally.

And of course since VS Code is a real editor/IDE, you can double click a file and have it open right up (no resorting to a Terminal to start your Jupyter session) and you get syntax themes, a built in Terminal, a git UI, code snippets, documentation on hover, vim mode if that's your thing, etc.

The only downside I've found is that the Python extension doesn't incorporate ipython's autocomplete in its own autocompletion, but that's a small price to pay for getting to treat .py files as notebooks.

</comment><comment><USER32> The FastAI people have been working on a lot of these issues with their NBDev too: [https://www.fast.ai/2019/12/02/nbdev/](https://www.fast.ai/2019/12/02/nbdev/)

<comment><USER12> Came here to post the same thing. Nbdev helps fill in the strengths that IDEs are traditionally good at. Even if you don't use the full nbdev library and templates, the work flow makes sense. Write code in Jupyter, export to a python library, and you can use it everywhere else after that.

</comment></comment><comment><USER33> So literally all of these complaints are about their particular implementations of notebooks, not the concept of computational notebooks in general, or are all computational notebooks destined to have unstable kernels?

In my mind, notebooks _should_ be married to a functional style of programming, where you use the notebook's markup to thoroughly explain and document your functions. Below your "function definition" section, you keep a "trying things out" section where you actually plug the data into your functions for debugging/visualizations. You can't shoot yourself in the foot with variables because all the work is done in your function's lexical scope. You can shoot yourself in the foot with stale function definitions, but a good notebook interface gives you the ability to clear function definitions and run groups of cells, so you can make sure you always run your functions in a group that starts with a "clear function definitions" cell.

When you are done, you just cut the "trying things out" section into a second notebook which references the functions in the first and _viola_ , you've got a very well documented library of functions, and a new work notebook where you can freely polish your visualizations/whatever.

</comment><comment><USER34> I use Jupyter Lab with Python every day. It's where I do my initial data exploration and cleaning. Jupyter Lab is not perfect, but most of these findings seem like they are more issues of inexperience with technology and programming, not computational notebooks.

</comment><comment><USER35> I have been heads down in jupyter for the past couple of weeks and I finally realized I just _DO NOT LIKE IT AT ALL_! Cracks started appearing and then suddenly there was an avalanche of disappointment.

The first crack -- it's almost impossible to build a nice presentation in Jupyter, because you always have to show your code and its stderr. I imported all the TeX goodness, and it looked pretty nice, but I couldn't show the output without showing the TeX code. Importing the TeX interpreter is quite non-standard and means that my notebook doesn't play well with the public servers. I also got burned by some kind of permissions issue, so that all my charts ended up being invisible to read-only users.

The second crack -- I can only look at the code from within my own jupyter server. The source is buried in a very noisy json format.

The third crack -- Who wants to write code in the impoverished browser based editor provided? How many times have I deleted a closing brace that was automatically inserted incorrectly? How can I do a global search and replace?

The fourth crack -- I can't test my code unless I include all the tests in the notebook!

I'm complaining. I realize that I don't have anything constructive to offer, and I'm really a beginner. However, I think some of my disappointment is justified, as I think it was reasonable to assume that I could build my notebooks to be next level presentations.

<comment><USER36> So once your code gets large enough that it doesn't fit neatly within a jupyter notebook, it's time to split the code out into another package, and then import it into your notebook.

The benefit here is that now your code and be used inside the jupyter notebook, and also inside a webserver say.

</comment></comment><comment><USER37> I think Atom's hydrogen and VSCode's python are best-in-class Jupyter clients that achieve everything Jupyter Lab set out to do with more and better features. I develop scripts that function top to bottom with a notebook side- by-side that on a keyboard stroke executes code blocks from my script in the notebook.

<comment><USER38> For those that do not know it, vscode is great for Jupyter Notebooks.

[https://code.visualstudio.com/docs/python/jupyter- support](https://code.visualstudio.com/docs/python/jupyter-support)

</comment></comment><comment><USER39> I think Computational Notebooks are a great idea, and yet I have the feeling that we are in the process of seeing them overapplied. They are wonderful for certain situations, and teaching or demonstrating code to others is right in its sweet spot.

I get the impression that people are creeping in the direction of trying to do everything with one tool, which sounds like it would end up in the same swamp that Eclipse went into. Sometimes, you need to use different tools for different tasks, and not everything should integrate. Just my opinion.

</comment><comment><USER40> I think that all the pain points of the article are a result of not using notebooks for their purpose. In my opinion, notebooks are good for:

1\. POC/MVP: Showing that what you want to do will work before making a full structure. 2\. Creating PDF/HTML documents with code and output. 3\. Exploratory data analysis and visualization.

I think many of the data scientists in the article go well beyond what a notebook is. A notebook is where you start, but should never be a production tool.

</comment><comment><USER41> This is a solid list. It will be even better if juxtaposed with current efforts to solve each of these problems - every DS I know is addressing at least 2-3 of these with some pet tools in their own environment. For example, we use Panel and Holoviews to make data exploration much easier. I have a feeling the ecosystem would improve faster if we had an index of (partial) solutions aligned with this problem set.

One category left out of the list: testing of data pipelines (c.f. great expectations).

</comment><comment><USER42> Jupyter notebooks are great for many purposes. They have, however, two really tragic shortcomings:

1\. They are stored by default in stupid json files instead of plain source code with comments.

2\. The text editing interface inside the browser is horrific and very difficult to normalize (e.g., disable "smart" closing of parentheses, disable the capture of classic unix copy-pasting, etc).

</comment><comment><USER43> This is a great list, and totally matches my experience. I also agree this is solvable with tooling.

A) VS Code / IDE needs to be the primary editor B) Results are not stored with source C) Export (build) allows packaging for whatever platform.

Python notebooks especially also use some crazy mutable APIs. In general notebooks align with other code written by people who aren't usually software engineers building production systems. They're much more about getting things done, APIs and tools are less questioned, a lot of pain is swallowed because PhDs have plenty of time to write a few lines of code. I don't want to sound disparaging towards these people, it's just a different set of tradeoffs from writing production grade software.

<comment><USER44> Logging, monitoring, security, versioning, etc. These are things that most often get ignored due to ignorance or inexperience, but are required for production grade software.

</comment></comment><comment><USER45> As a computer scientist/software engineer, please allow me the question: Why would I prefer a notebook over e.g. equivalent python script(s) in a git?

I first saw jupyter notebooks when my sister (physicist, non-programmer) used it for analyzing economical data with pandas. Run-time for the full data set was half a day (and IMHO for that analysis SQL would have been better suited). I understand that as a non-programmer it looks alluring, but once the language proficiency is build up, why not use an IDE and run the code on a shell?

<comment><USER46> The key factor is iteration speed.

If step A takes 5 minutes (and 5 minutes is a very short time) and I want to experiment on step B, then I don't want to rerun step A each time while I'm writing and running code that helps me understand what step B is going to be; I'd want that to be interactive and immediate, not have each rerun take 5 minutes.

Storing/loading to disk is not a good option because all the data that needs to be stored is not yet determined until the exploration is finished; If I write code to save/load A, then I need to change (and test) it after I'm done with B and now want to experiment with C, and it all becomes even more complicated when I need to add an extra step and data field to step A and rerun everything. Deciding what data should be stored in what format is something that you can do in 'productionizing' the code _after_ you've done the exploratory analysis.

REPL is not a good option because it's not convenient to save and replicate the code that got you to the current REPL state.

The other aspect is that visually 'debugging' intermediary data through various plots is not conveniently possible in IDEs. I could generate some picture files in a folder or possibly an HTML 'dashboard' to see the results of my most recent run but that takes extra code and effort, and the results aren't immediately in my face like in a notebook.

<comment><USER45> Ah, I think I have a hugely different approach to data processing: For my work I often have a very good idea what the output should look like, and what transformations are required on the input to get there. E.g. when processing log files to generate an overview page, or (as I'm doing right now) adding a target to binutils (assembler, linker,...). (Obviously I'm not a data scientist ;-)

With what you describe, intuitively I would use a library that allows me to store&load data per step (with verifying the structure matches), or pass it in-memory. Think JSON (yeah, slow) or something like protobuffers. That way I could do both

> store(A(read(input)) -> file); store(B(load(file)) -> file2)

during development (or in case B is in another language as A), and in production just

> B(A(read(some_other_input)))

But yeah, that's just _my_ intuition of course. Maybe I'd be a bad data scientist.

However, can't you just experiment with smaller data sets? That's what I usually do if processing is slow (e.g. instead of parsing 10GB of log files, I'll just do 50MB to verify the processing pipeline works, and once that's it, run it on the full 10GB and grab a coffee while it runs). Not an option for data science?

<comment><USER46> Sure, if you know what the output should look like and if it's possible to e.g. write tests to verify that it's correct, then jupyter notebooks would not be the proper tool to use.

The intended usecase of these notebooks is in scenarios where the main output is not the code and not a particular set transformed data, but knowledge gained during a 'computational exploration' of that data. With that knowledge in hand, you can then build 'productionized' code with different methodologies (possibly but not necessarily using or adapting large parts of the code in your notebook), _if that 's needed_ \- and in such data analysis scenarios it often happens that it's not ever needed.

Sampling a subset of the data sometimes works. Sometimes it would alter the results substantionally and drive the exploration in a wrong direction; questioning and verifying assumptions is important, and it can be a big difference if _all_ A's are also B or only 99% of them are.

</comment></comment></comment></comment><comment><USER47> [https://datalore.io](https://datalore.io) has (1) a reactive Datalore kernel that solves the reproducibility problem. It recalculates the code automatically when something is changed, and recalculates only the changed and the dependent code; (2) good completion; (3) online collaboration; (4) read- only sharing; (5) publishing; (6) sensitive data can be saved in .private directory that is not exposed when the notebook is shared with read-only access

<comment><USER48> it seems it's cloud-based. Fun for playing around but not suitable for real work (at least for me).

I can't just upload random data to some cloud service to work with it, also I can't upload data if it's too big. Often the data that's valuable is very sensitive.

</comment></comment><comment><USER49> There are these and other problems with CNs:

0\. They try to be "be-all, end-all" proprietary container documents, so they lack generality, compatibility and embeddability. It would be better if live code try-out snippets were self-contained and embeddable in other documents: HTML, other software, maybe PDF, LaTex or literate programming formats. Maybe there should be standard, versioned interpreters for each kind of programming language in WebAssembly and cached for offline usage by the browser for inclusion in documentation, papers, etc.?

1\. For prototyping, it is better to have try-out live code (and/or REPLs with undo) for prototyping like what is Xcode/iOS Playgrounds for Swift or ReInteract was for Python.

2\. Computational notebook software, that I've seen, are terrible, complex, fragile and messy to install. The ones I've seen make TeXLive look effortless by comparison.

3\. Beyond replicability what goal(s) are CN really trying to solve?

3.0. For replicability itself, why not have a GitLab/BitBucket/GitHub repo for code and a Docker/Vagrant container one-liner that grabs the latest source when built? Without a clear, consistent and simple build process, there is no replicability, only wasted time, headaches and fragile/messy results.

3.1. Are CNs "hammers" for "nails" that don't exist?

<comment><USER50> > Maybe there should be standard, versioned interpreters for each kind of > programming language in WebAssembly and cached for offline usage by the > browser for inclusion in documentation, papers, etc.

This would be incredible. Even better, the output from the code (like graphs) should be able to be embedded in the paper. You have no idea how many papers have errors in the code that generated the graphs/statistics/etc. and nobody can tell because the authors rarely release the data, let alone the source

<comment><USER49> For WASM, there ought to be a package-management/registry mechanism for installation (unless there is already? It might get complicated, but would seem a good idea to reuse code/plugins.)... or as below, there ought to be some caching priority mechanism.

Then for HTML assets (and CSS ones too), perhaps a hint on asset-linking tags (a, script, link, img, audio, video, etc.) there ought to an _offline- priority_ attribute to help the browser decide what to throw away when clearing cache the regular way or evicting items from the cache, while being able to leave some things deemed vital when not nuking the entire cache. Yes, websites could be goofy and game caching mechanisms, marking everything "vital" like for 0-pixel image cookies but I'm sure someone would make an "RBL" (real-time blackhole list) system of which priorities on which websites to ignore.

Related aside: There's a lot of common frameworks, libraries and bits that could be cached user-side, with the trick either to a) herding web devs to de- fragment their CDNs, which could create SPoF's or b) changing the standard allowing multiple SRCs or HREFs for high-availability/less bitrot to preserve both choice and encourage de-duplication of common assets. [0]

0\. [https://html.spec.whatwg.org/multipage/links.html#attr- hyper...](https://html.spec.whatwg.org/multipage/links.html#attr-hyperlink- href)

<comment><USER50> Here's an idea - what if you could put a `hash` attribute on an script tag. After downloading whatever it links to, the browser checks the hash matches the one you provided. Then it could also cache the result and reuse it whenever the hash matches, even if the link pointed elsewhere.

</comment></comment></comment></comment><comment><USER51> Good list.

Their observations bring to mind the benefits of watching people program on YouTube or video where you learn a style of working you may not even have considered.

However there is one other issue that is not on the list: because a notebook is meant to be read or shared, I always feel like my work is public and feel less inclined to play around and just take a look at things. When I do "transfer" my work to a notebook, it's only surprising or interesting things that suppress the discovery process.

</comment><comment><USER52> One thing that I find to be incredibly useful is the keyboard shortcut `00` (press zero twice while focus is outside of a cell), which will restart the kernel, clear all output and re-run the whole notebook.

This way I'm sure that "library code" that I'm editing in parallel in a real text editor is up to date in the notebook and also solves the limits the confusion due to run-out-of-oder problems.

The overall workflow is something like this:

      1. explore using thing.<TAB>, thing?, and %psource thing
      2. edit draft code chunk or function
      3. when chunk 80% done; move it to a module
         and replace it with an import statement
      4. press 00 to re-run everything, then GOTO step 1

The key to preserving sanity is step 3—as soon as the exploration phase is done, move to a real text editor (and start adding tests). Don't try to do big chunks of software development in the notebook. You wouldn't write an entire program in the REPL, would you?

Sometimes I keep around the notebook as a record for failed explorations or as a "test harness" for the code, but most of the time it's throwoutable since all the useful bits have moved into a normal python module/script under version control.

<comment><USER53> Another useful tip which doesn't require always doing '00': when editing the library code, import things like this:

        import mylib; importlib.reload(mylib); from mylib import foo

Then in most cases except some very entangled ones, you can simply rerun this cell without having to restart the kernel (especially if it requires reloading all the data).

</comment></comment><comment><USER54> The reality is — notebooks are and need to be developed as an app platform ...

In order to do notebooks properly — you need:

1\. discovery (Ideally static discovery) of all the state the notebook needs, and the bulk of state the notebook will/could manipulate during its execution. Your container needs to intercept the filesystem and the networking apis that will be invoked so that a determination of the state that results from these operations can be observed by the runtime and shimmed appropriately for reproducibility and for performance optimization

2\. The notebook (and the runtime inferred model of all the required inputs) needs to be repo stable — I Should be able to write a notebook app that reads from the file system on my development host, deploy it somewhere, and the runtime should take care that wherever that however that post deployment file system read is implemented matches my local development semantics

3\. Pplatform level dependency graph needs to exist to model re-execution requirements automatically — incorporating code changes and external state

Apple could build this And "notebook-os" would be the correct conceptual framework for it ... anything less is always going to leave us severely wanting

</comment><comment><USER18> For those asking "what's the alternative", RStudio and Matlab already solved the design problem (though they could be better executed).

</comment><comment><USER55> My main use for notebooks is a simple way to constantly hold a whole large dataset in memory. That way if I want to try some feature reduction or remove some bad result, I can just do that and not wait 10 minutes for my slow PC to rerun my import code. I feel like an easy way to do that in base python would draw me away from notebooks.

</comment><comment><USER56> Obviously it's pretty hard to make general criticism of the Notebook GUI. This is especially without comparing to a specific other user interface for data scientists, such as a traditional REPL terminal, or some other command line tools?

The Python world gives a good example about the sheer complexity of a notebook infrastructure. The is IPython, there is Jupyter Notebook, JupyterLab. There is even stuff like the SageMathCloud (nowadays called CoCalc) which is basically a web GUI to a VPS combining command lines and various notebooks. And hell, most of these web based interfaces try to make sharing easy.

Mabye we should start comparing these (mostly OSS) tools to the traditional notebook GUIs of Matlab and Mathematica, something we used in the 90s and 2000s. From my feeling, they were more robust, could handle large data better, but they lack all the tooling we get for free in the web.

<comment><USER32> Jupyter Notebook/Jupyter Lab has replaced IPython as the notebook front end.

I suspect 90%+ of Python Notebook work is done in Jupyter/Jupyter Lab (or things built on it like Google Collab/Kaggle Kernels).

 _traditional notebook GUIs of Matlab and Mathematica, something we used in the 90s and 2000s. From my feeling, they were more robust, could handle large data better_

I've done 10s of terabyte analysis on Jupyter (Spark backend) and I personally know people doing petabyte work on it so this seems doubtful.

<comment><USER56> You probably were careful enough to understand the limits of the Jupyter server and client (frontend).

It's easy to screw up a terminal application in data science when dumping a large array. Many REPLs cannot handle this properly (and CTRL+C won't work). It's easy to test this: What does your favourite notebook do when you call some command such as (pseudocode/python here)

        print(range(int(1e7))) # or 1e8

In this particular example, the python CLI seems to handle keyboard interrupts fine when the terminal (or RAM) is flooded.

</comment></comment></comment><comment> VvR-Ox I would love to see some gifted people using this info to further improve tools like nteract[0].

It already eases a lot of pain you may have in comparison when setting up jupyter notebook without the knowledge of a software developer.

[0]: [https://nteract.io/](https://nteract.io/)

</comment><comment><USER57> I'm not sure I understand the issue about the user repeatedly tweaking parameters for their data visualization. If anything, that is a reason notebooks are so nice. The repeated tweaks are due to the notebook format, its because that's an inherent part of the data visualization process, where the end result of a particular parameter choice is hard to predict how it will look with a given data set. So the same process would occur whether one was using a notebook or a script, but with a script it becomes much more cumbersome to actually see the result. In a notebook, the parameter tweaking for a data visualization is immediately followed by the result.

I definitely agree with most of the other points though.

</comment><comment><USER58> I think it's easy to do notebooks wrong, but possible to do them right. I try and do quick prototyping in notebook cells before moving it off to a separate .py file, and avoid keeping any code that does anything other than visualisation or parameter setting inside a cell long-term. That way, if you need to run something "in production" (whatever that means in your context), you don't end up having to pick apart and re-write your code -- you just import the .py file you wrote along the way.

For me, notebooks are a super handy way of visualising and sharing results during meetings, and it's difficult to imagine a more convenient alternative.

</comment><comment><USER59> I tried to encourage our team to use notebooks, however everyone prefers using PyCharm and git for sharing code. We dont have much visualization, which might be the reason, but I was surprised just how many people just hated it.

<comment><USER60> Are you using oo? Still not sure how to "explain" an oo system once sophisticated enough. Just better than go-to everywhere but not much. Of course a trigger based system (gui, system) also have the same issue.

This code + explanation would not work I guess.

<comment><USER61> > Still not sure how to "explain" an oo system once sophisticated enough.

With a couple of UML diagrams, still the best option.

</comment></comment></comment><comment><USER62> This is akin to reviewing how well a screwdriver drives nails. Yes, it has problems. That doesn't mean it's a bad tool - you're just not using it right. Does it require discipline? Yes, but so does the screwdriver. That being said, I think jupyter specifically has some legacy issues around format, and I prefer R markdown. As much as I love pycharm, it's never going to do more than replicate the notebook experience. IMHO, the main author publishes on code UI/UX, the title seems more like click bait. Not sure why it's so upvoted.

</comment><comment><USER63> Direct link to the preprint: [http://web.eecs.utk.edu/~azh/pubs/Chattopadhyay2020CHI_Noteb...](http://web.eecs.utk.edu/~azh/pubs/Chattopadhyay2020CHI_NotebookPainpoints.pdf)

Interesting study, I like the mixed-method approach. A quick glance at the industry of the participants suggests that there might be a bias towards structural data (which I think is actually acceptable as that makes up a huge chunk of the non-academic ML-Notebook work) Edit: The authors acknowledge this in the "Limitations".

</comment><comment><USER64> I quite like the Spyder approach: Pure python code that is segmented into cells by inserting a special comment line.

The cells can then be individually executed in an ipython shell, or the entire script can be run with the regular python interpreter. This makes it easy to tweak the individual parts without having to re-run everything. In contrast to jupyter notebooks you still end up with a valid python script that can be easily version controlled.

I just wish that I could use vim instead of the Spyder IDE.

</comment><comment><USER65> Notebooks are sort of like democracy, its the worst form of government except all the others.

You need to pick the best tool for the job, and often times in machine learning that tool is a notebook.

</comment><comment><USER66> At Gigantum, we're trying to solve some of these issues too. A Gigantum Project lets you run Jupyter or RStudio in a container that is managed for you. Everything is automatically versioned so you can sort out exactly what was run, by who, and when.

[https://gigantum.com](https://gigantum.com)

</comment><comment><USER67> I wrote a plugin for ipython that some people might find useful: [https://github.com/uiuc-sine/ipython-cells](https://github.com/uiuc- sine/ipython-cells)

It lets you do linear execution of blocks like in Jupyter, but in a normal .py file. Obviously more lightweight than Jupyter and you get to use your regular editor.

</comment><comment><USER68> I work at [https://www.deepnote.com/](https://www.deepnote.com/), we are trying to tackle some of the pains mentioned in the article (setup, collaboration, IDE features like auto-complete or linting).

We are still early access, but if you are interested in an invite just let me know. My email is filip at deepnote dot com.

<comment><USER69> Deepnote seems quite interesting, but as a cheapskate grad student, I'm compelled to ask.

If this information isn't private, what sort of business model do you use? I take it you'll have a SaaS subscription model? I see it's free to use now, but how does your company plan to make money (especially taking into account the cost of the cloud hosting Deepnote requires)?

<comment><USER68> Hey, thanks for the question.

Our goal right now is to build the most amazing data science notebook. We need a lot of feedback to get there, that's why we are keeping it free. But since the servers also cost us something, we haven't opened up Deepnote to the public just yet.

Once in GA, we know we can support students on a free tier almost indefinitely (it doesn't really cost that much) while offering more advanced features on a subscription model for teams and enterprises.

</comment></comment></comment><comment><USER63> I'm curious. How do people protocol their experiments? When I started, I used to just keep the cells but that lead to very long and impossible to parse Jupyter notebooks. I have since opted for keeping a journal.txt file in Atom where I write down hpyerparameter configurations, epochs run and results (for ML). But that feels a bit awkward as well.

</comment><comment><USER70> Small note: why post an image with the pain points if I need to check the list below to understand what's written?

</comment><comment><USER71> People love jupyter notebooks for the same reason people love Excel.

This is intended to be a Zen-like Koan, so take it as you will.

</comment><comment><USER72> Previous discussion:

General: [https://news.ycombinator.com/item?id=18336202](https://news.ycombinator.com/item?id=18336202)

Version Control: [https://news.ycombinator.com/item?id=21661013](https://news.ycombinator.com/item?id=21661013)

</comment><comment><USER12> One idea for a pain point not mentioned: better variable persistence. If I declare a variable, then delete the cell I declared it in, the variable persists. I've had this cause issues because if I use the deleted variable by accident, it will work fine right up until a kernel restart.

</comment><comment><USER73> I'm surprised no one has mentioned what I see as the biggest failings of notebooks: poor handling of connection loss / re-connection. The kernel will continue to run, but a connection hiccup will often make the notebook UI stop updating (and lose any kernel output).

</comment><comment><USER74> I don't get the popularity of these things - I think you have to have started out with them to like them.

<comment><USER33> I learned to like them in Mathematica, in many ways Jupyter is just a pale imitation of the excellent system built at Wolfram.

</comment></comment><comment><USER75> For emacs org-mode users this [https://github.com/dzop/emacs- jupyter/blob/master/README.org](https://github.com/dzop/emacs- jupyter/blob/master/README.org) is worth looking into.

</comment><comment><USER76> Notebooks are bad and unreliable. You are repeating your code all the time, you are limited to work with smaller datasets. If you are into visual data analysis use Orange or other similar data mining tools. We allow usage of notebooks only for presentation purposes.

</comment><comment><USER77> It is interesting to me how this talks about "computational notebooks" but it seems to be about Jupyter and derivatives thereof -- RMarkdown notebooks run inside of the RStudio IDE, and they don't use the term 'kernels' like Jupyter does.

</comment><comment><USER78> What are the currently available CI options for notebooks? You'd think this would be one of the first tools people would need to make sure notebooks are reproducible, but there seems to be little sign of CI usage.

<comment><USER79> Checkout treon[1], open source testing framework for Jupyter notebooks. Since it runs via CLI you can hook it up to any CI platform of your choice.

Disclaimer: I wrote large part of treon.

[1] [https://github.com/reviewNB/treon](https://github.com/reviewNB/treon)

</comment></comment><comment><USER80> Streamlit is imo the best alternative. I was a beta tester and I found that it encouraged good coding practice without sacrificing too much functionality. I highly recommend that other data scientists check it out.

Streamlit.io

</comment><comment><USER81> Trying my best to solve some of these: [https://github.com/wrnrlr/foxtrot](https://github.com/wrnrlr/foxtrot)

</comment><comment><USER82> Performance is another pain point, at least for jupyter

</comment><comment><USER83> Why no Mathematica?

<comment><USER42> It's not even free software.

<comment><USER61> Developers need to pay bills somehow.

<comment><USER84> "Free software" is about freedom, not price. Putting the research that is your life's work inside of proprietary software that can be taken away from you, forever, at any time — that seems foolish.

<comment><USER61> Copyleft derived "free software" can also be taken away from me.

<comment><USER84> Only if you violate the license.

By the way, I'd be interested in your thoughts on [https://news.ycombinator.com/item?id=22083468](https://news.ycombinator.com/item?id=22083468).

</comment></comment></comment></comment></comment></comment><comment><USER85> Why not teach data scientists how to write software effectively? Those are smart people, it's not like using version control, writing unit tests and extracting common code into libraries is rocket science.

</comment><comment><USER60> What is wrong with life? Many but let us appreciate how to use it more instead of seemingly criticise it.

The world is so much better with you alive. So is the founded tool of computational notebook. Not sure I read it covered R notebook which is really good to share info and analyst. Just wonder how to use it better.

Of course they can always improve on it. But I would promote more expansion - How about a lisp notebook, a clojure notebook, a js notebook and a forth notebook.

The real problem is can you have oo notebook ... it is more "serial" and graphic and data. But not for the "messy" class or trigger Based system. Hence if I may, the real problem is the scoping. It is so hard to visualise a live oo system. Unlike a live functional or even a stack based system.

It is not life that is the problem. Even useless life has its use, as long as it is alive. But if it is not reaching there an alternative may have to think about. Just like we cannot be there we send in our voyagers outside solar system.

Be long and prosper.</comment>


Comet with node.js and V8 - <AUTHOR> http://www.slideshare.net/amix3k/comet-with-nodejs-and-v8 <comment><USER2> With WebSockets right around the corner, is there any reason to care about Comet anymore? (Of course, node.js can also be used with WS, which is what I plan on doing.)

<comment><USER3> I think you have misunderstood something. Comet is a general way of pushing back events as they happen and there are different ways of implementing comet, two of these ways are using long poll and using WebSockets...

Why you should care about comet? Because it is the future of web applications. Look at Google Wave, Facebook Chat or Google Documents - - they use comet to create realtime web applications. I predict that most web-applications will use this technology as most sites today use Ajax in some form.

Also note the point of entry into building a scaleable comet application is getting much lower with such tools like node.js, erlycomet and JBoss Netty.

<comment><USER2> I guess I associate Comet solely with long-polling. Don't disagree at all re: the future of web apps; the reason why WebSockets are exciting is that real- time communication is becoming a first-class citizen in the browser, rather than an (admittedly cool) hack.

</comment></comment></comment><comment><AUTHOR> Something's wrong with the node.js vs Tornado benchmark: "total transfered" byte count is more than 2x bigger for Tornado. This should be headers as "HTML transfered" is about the same.

</comment><comment><USER4> Node.js + V8 = awesome!

Comet not so</comment>


When pirates play a game dev sim and then go bankrupt because of piracy?(2013) - <AUTHOR> http://www.greenheartgames.com/2013/04/29/what-happens-when-pirates-play-a-game-development-simulator-and-then-go-bankrupt-because-of-piracy/ <comment><USER2> What if I made a game-dev game where in all legal copies, Martians bomb your suite because they couldn't find a torrent for your game? It would be so ironic, these players complaining about martians hating their non-piratable game, when they are contributing in real life by not uploading a torrent for the game.

</comment><comment><USER3> Can't seem to view images without javascript D:</comment>


iOS 11 brings peer-to-peer payments right into iMessage - <AUTHOR> https://www.recode.net/2017/6/5/15741636/apple-pay-p2p-venmo-competitor-apple-pay-cash-money-transfer <comment><USER2> This is big. They are leveraging the convenience of Apple Pay to steer people to spending received money in a way that earns them interchange fees. This allows them to support sending money via cards without losing money on it.

The trick with P2P has always been how to make it free, easy to use AND not lose money doing it. No one has done all three. Square Cash supports cards but loses money (debit interchange is at least 22 cents). Venmo uses cheap ACH transfers but requires linking bank accounts.

Apple Pay is going to let you send money from cards just like Square Cash, yet it looks like they (or rather their partner Green Dot) are not going to lose money doing it. The trick is, while you can transfer it out to a bank account the easiest thing is to just spend it with Apple Pay. Looks like whenever you pay with Apple Pay and have an Apple Cash balance it will steer you to spending that. Apple / Green Dot then earns interchange on that transaction, offsetting their initial cost.

In fact if there are on average >1 Apple Cash transactions per P2P transfer, they actually MAKE money on the system! Brilliant.

</comment><comment><USER3> Interesting to see GreenDot as their operating partner here</comment>


In this video you will see 70 lighters vs. fire - <AUTHOR> https://www.youtube.com/watch?v=pwn0954J3kM <comment><USER2> What a waste of time and resources.</comment>


High Frequency Dating - <AUTHOR> http://robrhinehart.com/?p=1005 <comment><USER2> This is simply brilliant. The escalation from a typical nerd's "I've optimised my social life" post to absurdity had me in stitches.

<comment><USER3> I found it awfully dehumanizing of the "females" in the narrative. Maybe I just don't get the joke.

Pro-tip: It's rarely idiomatic English to call someone "a female," unless you're purposefully trying to compare her to an animal.[1] Female is a species-neutral term (like "breeding"). When talking about humans, it's proper to use the anthropic term "woman."

[1] My observation is that women refer to men as "male" much less often than the reverse, but when they do they often intend the comparison to animals.

<comment><USER4> It was very dehumanizing, and I think (hope) that was the entire point.

I'm also surprised about how often I see English-speakers talk about "females" rather than "women". I vaguely suspect that might say something profound about an aspect of American culture that's deeply wrong about how it views women.

<comment><USER5> Or, less cynically, because no one uses 'gals'. There is no female analog to 'guys'. Males under age 18 -> boys. Males 18-35 -> guys. Males over 35 -> men.

For female, it's less clear. Calling a 20-something a 'girl' might be viewed offensively as diminutive. Calling college students 'women' can also seem awkward casual contexts (it's perfectly fine in most).

<comment><USER6> "Ladies" is probably the word you're looking for.

<comment><USER7> For the plural, you're right, but I've never heard anyone called a "lady" without some level of pre-existing intimacy

<comment><USER8> I've gotten to a point where I'm more frequently associating with people (including 'females') in the 25-35 age range and have had this debate internally. I've started using 'lady' for this very purpose, though I realize it's not as socially common. I might recount an interaction by referring to 'A guy' or 'A lady' I met (rather than 'girl'). Personally, I'd love for it to be socially acceptable to refer to people with words that don't presuppose age (or gender, for that matter) but that time isn't coming anytime soon.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> I'm torn on this.

On the one hand high frequency dating is a good thing because it adds liquidity to the market.

On the other, it raises the risk of of increased volatility and flash crashes (when your partner finds out).

<comment><USER6> _> high frequency dating is a good thing because it adds liquidity to the market._

Ewwwww.

The door to a whole world of truly unsavory double-entendre has been opened.

<comment><USER10> Those markets don't recover nearly as quickly as they used to.

<comment><USER6> There's a pun somewhere connecting the phrase "the markets can remain irrational longer than you can remain solvent" with premature ejaculation, but I can't seem to find it.

You'll have to finish it off for yourself.

<comment><USER11> If the utility function is especially curvy, the optimal position for a rational actor might not be underneath it.

<comment><USER12> Yeahbut. Fun is frequently irrational.

</comment></comment></comment></comment></comment></comment><comment><USER13> This is fantastic satire. Especially, since I've just read The Circle. Judging by the other comments here, a lot of us were going along believing it was true. Until robot.

And, why not? The pieces were believable: OpenCV, NLTK, some scripting and API twiddling. The virtual assistant wasn't much of a stretch either.

Especially if you're familiar with modern online dating sites now. Still thinking that online dating is like browsing an organized list of potential dates where an online host helps you with searching is naive. Craigslist personals are still like that, stripped down, no profile, anonymous and no algorithms.

OKCupid, like other dating sites, makes money via ad revenue, not by connecting you with a partner, so what's their priority? Who knows if your experience is affected by: \- how often you visit the site \- if you use an adblocker (they know, and they let you know they know) \- if you're on a free account \- message response rate \- if you use their features (quickmatch, etc.) \- how many questions you've answered (at a tech talk recently, Sam Yagan co-founder said answering more than 10 questions was pointless) \- your quantcast/cookie/tracker profile \- sentiment analysis of your profile/messages

Here's a fun anecdote: As a new user of their iPhone app, I was interested in using the Locals feature (to see who was available on short notice for a date). The first day it worked, let me see those in my vicinity. The next day it was completely removed from the app. No warning. Something (I was a new user) must've decided that that feature wasn't for me.

This goes beyond dark design patterns which attempt to influence your behavior (i.e. on another dating site, you have to pay to send messages, and attractive people send you collect messages, that you have to pay to read.). With dark design, if you're aware, you know what the site wants you to do. If your online dating success is controlled by black box methods without feedback, they silently judge.

So, how soon before hackers decide they're tired of being gamed and start using tools they're familiar with defensively? Could this be the start of a new arms race?

<comment><USER14> Out of curiosity, what did you think of the Circle

</comment></comment><comment><USER15> This is hilarious and as a bonus it induces the warm, smug feeling I get when reminded I'm thankfully out of the dating game and happily married to a beautiful, smart woman. Good luck, kids.

<comment><USER16> > smug feeling I get when reminded I'm thankfully out of the dating game

I on the other hand get a warm, smug feeling from knowing that if my girlfriend decides not to see me anymore (or I get bored, whichever comes first), new prospects are a walk to the nearest club/bar away. Good luck to you too.

<comment><USER17> good partners are not modular components that can be easily replaced, you'll discover this when you find one.

<comment><USER18> You'd be surprised. Of course no 2 people are exactly the same, so you'll miss someone terribly. After a while, you realize that the so called scarcity of 'great people to date' is Hollywood inspired pseudo-romantic bullshit. (I speak as a man seeking women)

One of the biggest advantages of living in a time of so many people is that the number of great people, in absolute terms, is also greater

<comment><USER19> E.g., [https://www.youtube.com/watch?v=Gaid72fqzNE](https://www.youtube.com/watch?v=Gaid72fqzNE)

</comment></comment></comment></comment></comment><comment><USER20> I like it!

But I think we can take this further, surely she's into automation too? So he- bot and she-bot are the ones that actually get together.

But then why bother with the physical world if it's all software? The entire exchange can be virtualised and simulated at high speed, then you only need to actually bother the meatspace human if the whole thing has been electronically predetermined to be acceptable to all parties.

That way you can find the perfect match in seconds. Unless, of course, they were a little creative or devious in their parameter settings, but nobody would ever do that, right?

<comment><USER21> Whoa. The possibilities... It's pre-arranged marriages but WebScale(tm)(r).

</comment></comment><comment><USER22> This article is a joke but I have a mildly sociopathic friend who does the first section of this. Has an app that just replies to everyone on craigslist / dating site with a standard greeting that he has statically determined over 5 years as being the most successful. It does filter for undesirable terms to him. It also does one round of banter using a trained data set of responses. He says he gets around 30 actual profiles to look at and personally contacts the ones he's interested in.

Must work, guy goes on 2-3 dates a week.

<comment><USER23> > over 5 years

</comment></comment><comment><USER24> __EDIT __I 'll leave my post as two people were kind enough to point out that I was just flat out wrong.

I had originally thought that the below post was a parody. I'm told it wasn't, though in my defense it definitely reads like a parody... I mean the perfect cutlery... the most meaningless item in anyone's house??

This reminds me of another parody post here a while ago about someone who said they'd bought the perfect cutlery.

They went a bit further and beat the joke to death talking about the difference between several cutlery sets. It was bit better because it started out with some good points bout optimizing your life and buying the best and then it jumped into how to buy what is probably the least important thing in anyone life...cutlery

I think this hacking your life is starting to jump the shark:)

Here is the other parody post:

[http://dcurt.is/the-best](http://dcurt.is/the-best)

<comment><USER25> I'm going to call Poe's law on this one, because I'm genuinely not sure if this is a parody post or not.

<comment><USER26> This is the part that got me:

 _Yanagi designed his flatware to stand the test of time. He died in 2011, but his design lives on._

</comment></comment></comment><comment><USER27> Up to the fourth paragraph I was going to post something patronising about it being a great way to get a fuck buddy but a bad way to form a relationship.

However, having finished the post, I now think that a long term relationship leading to marriage and children would be possible. Some tweaking might be required. Ideally, a long and meaningful relationship could develop with 0 physical contact.

<comment><USER21> A cynic would say that most marriages consist of zero physical contact... ;)

<comment><USER28> I've been told I'm not allowed to upvote you...

</comment></comment></comment><comment><USER29> This is a great read. The OpenCV part hit a bit too close to home though: I was stuck for a minute trying to think how he managed to segment faces well enough to compute ratios (not just as a rectangle or a blob) given all of the possible conditions/perspectives of the photos.

<comment><USER30> you bet! i was automatically thinking about how did he manage to get sufficiently good resolution, how did he cope with lighting/background changes, and so on....

<comment><USER31> It's really the wrong approach. Supervised learning is the way to go. For example a paper by Kumar et al.[1] shows how to build an "attractive woman" classifier that is 83% accurate.

[1] [http://homes.cs.washington.edu/~neeraj/publications/base/pap...](http://homes.cs.washington.edu/~neeraj/publications/base/papers/nk_pami2011_faceattrs.pdf)

<comment><USER32> Presumably if they used 310 million faces instead of only 3.1 million it would be even more accurate, which is pretty impressive.

</comment></comment></comment></comment><comment><USER28> Beautiful article. Well played sir. I went from "this could work" to "huh" to "W T F" loving every single sweet paragraph. So much win. Thank you :)

</comment><comment><USER33> The first comment is sort of a buzzkill:

"I guess I see what's supposed to be funny here, Rob, but I don't think everyone will. As the man behind an awfully high-profile startup, I don't think this is likely to attract any beneficial attention to you, and may very well attract some negative attention. Even if this is meant in good fun, I'm not sure it's in your best interests."

<comment><USER34> Is it a bad idea for me to ask what startup he created?

<comment><USER35> [http://lmgtfy.com/?q=rob+rhinehart+startup](http://lmgtfy.com/?q=rob+rhinehart+startup)

<comment><USER34> Haha thanks, that made it easy. I am on my phone and didn't notice that the URL gave away his last name. The blog post only says "by rob".

<comment><USER36> The url clued me in robrhinehart.com all you need is a space and wikipedia ;)

</comment></comment></comment></comment></comment><comment><USER37> This isn't too implausible. I remember a story about a guy who was fooled into dating a chatbot for 2 months.

[http://www.radiolab.org/story/137466-clever- bots/](http://www.radiolab.org/story/137466-clever-bots/)

<comment><USER20> Heh. You ever hear of Vixenlove?

She was a yahoo or aim chatbot (can't remember which) that pretended to be a slightly flirty teenage girl but logged all her interactions to the author's website. There was some great material in there.

</comment></comment><comment><USER38> I think this can work well as a startup. You sign up and create a profile. Then the system matches you up with as many other people as it can and runs several simulated dates based on your profiles. After 3 successful simulated dates, you are both booked a room and given a transcript of your conversation this far, plus a list of fetishes.

<comment><USER39> That's a great idea. I see a couple of problems though:

\- Once the simulation gets sufficiently advanced, it will want to pass the buck to another simulation, because that's what you did.

\- In a world where many people do that, if you find yourself on a date with someone, that raises the chance that you're a simulation. What you do with that knowledge is up to you :-)

</comment></comment><comment><USER40> Not too far from the truth:

Amy Webb: How I hacked online dating

[http://www.ted.com/talks/amy_webb_how_i_hacked_online_dating...](http://www.ted.com/talks/amy_webb_how_i_hacked_online_dating.html)

</comment><comment><USER41> It seems to me that FABIO could be massively improved upon by offloading the computation to a remote (cloud?) server, allowing the date to continue until screams of pleasure are recorded.

Additionally, the robot self destruct seems like overkill. It would be better to simply wipe them and start over. After all it, it wasn't a hardware failure that resulted in a bad date, but a software problem!

</comment><comment><USER42> It took me until the Double Robot to realize this was a joke.

</comment><comment><USER43> LOL! I just got at the robot part that this was a fiction :P

<comment><USER44> Let's just agree the robot part is the nerd threshold.

<comment><USER43> YEP :P

</comment></comment></comment><comment><USER45> This doesn't use MongoDB therefore this is not web scale.

</comment><comment><USER46> ... Oh it's a joke.

I actually know a few programmers, who are also pick up artists, that do something similar but less complex.. they write scripts that spam msg to girls on dating site and just shot gun approach.

I think I've found my next project...

<comment><USER47> > pick up artists

You misspelled misogynist.

<comment><USER48> can you explain?

<comment><USER49> don't bother. anyone who equates competence at picking up women with misogyny is incapable of being helped. their views are too old-fashioned.

</comment></comment></comment></comment><comment><USER50> I'm reminded of a story told by Tim Ferris about outsourcing his dating for a bet:

[http://www.youtube.com/watch?v=7eim8J0NIpQ](http://www.youtube.com/watch?v=7eim8J0NIpQ)

</comment><comment><USER51> This made me sad, mostly because the base variable is facial attractiveness. Gotta love living in a culture so saturated in image worship that dating sites have nearly boiled off text bios entirely. Have fun chatting with people you have next to nothing in common with!

<comment><USER52> That assumes the objective is to 'chat'.

<comment><USER4> If all you need is a warm body with the correct orifices, facial looks aren't terribly relevant either.

If you intend to spend any amount of time together, what you hear is just as relevant as what you see.

</comment></comment></comment><comment><USER53> I've tried high frequency dating once, but had to stop when all of my glassware broke.

</comment><comment><USER54> First they laugh at the high frequency dating, then they fight it, then it wins.

</comment><comment><USER55> Automated bot actually makes sense for a first or maybe even second message. Things would become even more interesting if girls would write their own bots too. Someone should build an API for that.

<comment><USER4> Only the first. You have got to read their response yourself. If you don't, it can't possibly work. Or it shouldn't work. You're basically accepting a relationship where people ignore each other.

The people who drop out after that second message are probably the real keepers. The ones that stay apparently didn't say anything worthy of a response anyway.

</comment></comment><comment><USER56> Possibly related:

[http://www.ted.com/talks/amy_webb_how_i_hacked_online_dating...](http://www.ted.com/talks/amy_webb_how_i_hacked_online_dating.html)

</comment><comment><USER37> Reminds me of this comment:

[https://news.ycombinator.com/item?id=5397797](https://news.ycombinator.com/item?id=5397797)

</comment><comment><USER57> After reading the first 2 paragraphs, I started looking for a "download" button to get the source code! You got me!

</comment><comment><USER58> Tim "4 hour workweek" Ferris actually did something similar using virtual assistants. [http://blog.timferriss.com/1/post/2009/07/how-to-tim- ferriss...](http://blog.timferriss.com/1/post/2009/07/how-to-tim-ferriss-your- love-life.html)

</comment><comment><USER59> I would be left feeling quite sorry and embarrassed for the partner in the case that they were actually a warm body. They would essentially be interviewing to play the submissive within a hegemony.

</comment><comment><USER60> Then, at some point, the female starts sending her robot too...

</comment><comment><USER61> Now, the only improvement left is to set up the same system from the perspective of the "female", and have two robots go on a date, etc.

</comment><comment><USER62> It may not have been intended, but it came off as a damn fine parody of the idiot "pick up artists".

</comment><comment><USER63> A friend of mine set up a micro to repeatedly click on the thumbs up - and I thought _that_ was bad!

</comment><comment><USER64> Ironically, the tinder app is already completely overrun with chatbots.

</comment><comment><USER65> Who will be regulating it? Government?

</comment><comment><USER66> I love the thinly veiled threats from other startup hustlers in the comments. Yeah Rob, you might suffer from some _difficulty_ for deflating our bubble a bit... these people are pathetic excuses for humans, maybe we can replace startup founders with a simple Perl script that uses a simple genetic algorithm to find the best combination of cloud technologies that get investors to part with their money at the highest ratio.

</comment><comment><USER67> This is an awesome idea!... But I guess this type of dating has its advantages and disadvantages, just saying... (",)</comment>


This high-tech card is being rolled out by French banks to eliminate fraud - <AUTHOR> http://www.thememo.com/2016/09/27/oberthur-technologies-societe-generale-groupe-bpce-bank-this-high-tech-card-is-being-rolled-out-by-french-banks-to-eliminate-fraud/ <comment><USER2> USA could use these. This would stop people from being accidentally subscribed to recurring payments they didn't sign up for. I'm sure there's a way to design the card to make it handle recurring transactions differently so that you know for sure you will be billed monthly.

<comment><USER3> Lots of issues with dynamic CVV. Dynamic card number makes more sense, which is how we solved at Final (YC W15). Available in the US today: www.getfinal.com</comment></comment>