Ask HN: Best way to relearn basic math? - non-entity I'm considering going back to school, but upon further thought, the first major roadblock is that I seem to have forgotten most high school math and probably even some easier stuff! I'm sort of concerned about my ability to relearn 4 years of mathematics in a year or two and was wondering if anyone had and books / tips / etc. to make it easier <comment><AUTHOR> First of all, good on you for going back to school—that's not always an easy thing to do. What subject are you considering studying?

Khan Academy is definitely the best one-stop-shop for this purpose, as someone mentioned. The key is to consistently do lots of practice problems over time. KA is adaptive+gamified, and helps select problems in your "zone of proximal development" (not too easy, not too hard).

Depending on what you want to get a degree in, you can focus on particular areas and gloss over others. If CS, then discrete mathematics and logic are the most important (plus stats/probability/linear algebra for machine learning and AI). If engineering, then trigonometry/calculus/physics is more important.

Learning also requires motivation, which for me personally requires seeing the big picture of why the math theory matters and how it was developed. Read the NYTimes series by Steven Strogatz. I also like "Mathematics for the Nonmathematician" for an overview of HS-level math that weaves in historical context (e.g. how Renaissance art or agriculture and mathematics are intertwined). Watch some YouTube videos on mathy subjects (like Numberphile or 3Blue1Brown or any of the zillions of channels along these lines). I try to do this as a "learning by osmosis" sort of activity that I fit in to my daily routine, e.g. when folding laundry or commuting.

Learning is also a social activity, so maybe enroll in a community college course or find a local study group. I find it's especially important to have someone to discuss things with when learning math. I also recommend finding good public spaces to work in—libraries and coffee shops are timeless math spaces.

Along those lines—as you're learning/reading/practicing new concepts, imagine explaining them to someone else (Feynman method).

Do lots of problems by hand on pen and paper, there is research and eons of practical experience that shows that doing math is a kinesthetic experience (that is, there's literally "muscle memory" for math). Draw pictures and graphs on paper. Keep all this scratchwork and doodles and stuff in a notebook.

Learn to process the "I have no idea what's going on" thoughts and feelings you get when you're faced with something new and challenging, or seem to continually forget things you've just (re)learned. That's par for the course, you just have to "feel the burn" and keep going. Cheesy but extremely true.

<comment><AUTHOR> Oh yeah, and use tools like WolframAlpha to check your work and explore problems in more depth (like visualizing functions, seeing alternate forms). Get the app and use the solution explainer thing—essential for e.g. solving integrals.

It might be worthwhile to learn to solve and verify problems using some sort of (mathematical) programming language or a CAS. Could be anything, but something like SageMath comes to mind. Honestly, even Excel is pretty good for this. Being able to do simple things plot functions, verify work by plugging in values, simulate random numbers, etc. goes a long way. Developing this skills becomes even more useful (essential) when you're at the college level and beyond.

</comment></comment><comment><USER2> For reasons that are mundane, I started college at 24 without any math foundation. I did a full year of remedial mathematics as 0 credit courses, and by the end of that, I was prepared for pre-calculus, the first course with credits for an undergraduate degree.

From there, a bevy of other math classes - Differential and Integral Calculus, Math Proof, Combinatorics and Graph theory, and many half-math, half-something classes like physics, regular expressions, and everything between.

But all of it was based on the foundation of that year of 0 credit courses. At the time it seemed like a risky, almost foolish gamble, but in hindsight it has paid off several times over - by that I mean I have been able to pay off the entire college tuition, several times - there is zero doubt that it was a good move, for me, at that time of my life.

I encourage anyone facing the uphill journey of (re)learning math to take a deep breath, make an itinerary, and sleep on it. And if you decide to start that journey, don't go alone: Resources exist along the way, like Interstate rest stops, to help you recharge and get ahead. Remember, that a tutor is also improving themselves as they teach you, for each time they learn a new way to explain a concept, they too gain from the experience. It's not a charitable action to receive extra help learning math.

As you continue, you will possibly feel inclined to pay back and tutor those following. You too will rediscover the path and improve your math foundation as you are generous with sharing your perspectives and techniques.

Good luck! It seems like it will take forever, but is over before you know it.

<comment><USER3> Along these lines, if you are in the US I recommend a local community college. You'll get a solid foundation, you be on the correct pace, and you'll be working with people whose primary mission is to teach you. You'll also find that you're not alone.

I don't recommend self-study, simply because if that was for you then you probably wouldn't have asked the question. It may turn out after a couple of classes jump-starting you that you then want to self-study: fine, you can make that decision then (we'll even give you advice lol). But don't start there.

Source: I used to teach in a community college, and saw a lot of students just like you.

</comment></comment><comment><USER4> suggestion for you. "Maths - A Student Survival Guide" by Jenny Olive: [https://www.amazon.com/Maths-Students-Survival-Self-Help- Eng...](https://www.amazon.com/Maths-Students-Survival-Self-Help-Eng..). She basically starts out with the simplest algebra (fractions) and gradually works up to topics in 1st semester Calculus. And she starts each chapter with a short quiz to test yourself and skip ahead if already know the material. This book is great for what you are describing, if I'm understanding you. I picked it up when I was preparing to return to college after being away for many years. I supplemented it with another book I highly recommend: "Mastering Technical Mathematics" by Stan Gibilisco and Norman Crowhurst: [https://www.amazon.com/Mastering-Technical-Mathematics- Third...](https://www.amazon.com/Mastering-Technical-Mathematics-Third..). I found that Jenny Olive's book was well designed and preferred it's style to any math textbook I have ever used. Even so occasionally I would get bored while working thru it. That is when I flip thru the Stan Gibilisco's book, which was full of interesting looking problems and examples. When I would try to solve one of them, it would become apparent that I still need to work on the fundamental concepts that were prerequisites for solving the problem. Thus I would return to Jenny Olive's book right where I left off, re-energized by the desire to master those fundamentals that she covers so well

<comment><USER5> An intelligent comment. Good one.

</comment></comment><comment><USER6> Khan Academy ([https://www.khanacademy.org/math](https://www.khanacademy.org/math)) is excellent. I recommend working through the exercises as far as you can and then re-learning concepts grade by grade. I go through this process every few years just to stay fluent.

</comment><comment><USER7> Before you do anything, you should take Coursera's _Learning How to Learn_ to make sure you have efficient study habits.

Khan Academy is probably your best bet. Paul's Online Math Notes, PatrickJMT, and BetterExplained can be useful supplements.

If you want to "bring a nuke to a knife fight", you could work your way through all of the Art of Problem Solving books [0]. They go much deeper than a standard curriculum so your foundation would be extremely strong (especially if you use Anki to schedule your review of problems/definitions you've understood and solved). Completing it would mean there's unlikely to be any math book that's outside of your reach. This is complete overkill, though.

[0] [https://artofproblemsolving.com/store](https://artofproblemsolving.com/store)

</comment><comment><USER8> K.A. Stroud is good, lots of how to do maths, very practical:

[https://www.amazon.co.uk/Foundation-Mathematics-K- Stroud/dp/...](https://www.amazon.co.uk/Foundation-Mathematics-K- Stroud/dp/0230579078)

[https://www.amazon.co.uk/Engineering-Mathematics-K- Stroud/dp...](https://www.amazon.co.uk/Engineering-Mathematics-K- Stroud/dp/1137031204)

</comment><comment><USER9> This is a good site: [http://tutorial.math.lamar.edu/](http://tutorial.math.lamar.edu/)

Also, if you have interest in a specific subject, exploit your own interest and start with what you're interested in. Don't force yourself to relearn from the beginning just for the sake of starting from the beginning.

Also, your goal will be one or more of: pass a math class, learn to solve real world problems with math, and/or learn math for fun. All of these are possible even if you have some gaps in your knowledge.

</comment><comment><USER5> I have read all the comments as of this typing. Some good, others okay. Ish. While there is no doubt that Khan Academy is really good, it depends on good for WHOM?

You don't sound like a typical KA learner, from what I see from your post, so a more accurate answer would be to ask you: how motivated are you to re-learn math?

If you are 110% motivated, I think you will have to first read Morris Kline's "why the professor cannot teach" which is an attack on the way math is taught starting from late 50's, especially in the U.S or the West.

After that, you will know what to do next. Depending on your future choices, you could start with building a strong algebra foundation before going to other branches.

To do that, you could read Polya's "how to solve it" as a general motivator, but as your main book, college algebra by Bittinger (or was it Bettinger) is the best that I know so far.

Make sure it is the pre 90's edition.

</comment><comment><USER10> Find out the book your school is using for first year, it's likely Stewart's 'Early Transcendentals' Calculus or possibly Gilbert Strangs book (my online school used it for Math 101) [https://ocw.mit.edu/resources/res-18-001-calculus-online- tex...](https://ocw.mit.edu/resources/res-18-001-calculus-online-textbook- spring-2005/textbook/) with the bonus of Strang's book being Calculus is explained in the first chapter and the entire rest of the book is just exercises and applications.

Go through all the exercises, looking up the things you don't remember in the rest of the resources mentioned here already. Maybe your school offers some kind of advanced placement and by doing this you can also skip a semester of single variable calculus saving yourself tuition costs.

</comment><comment><USER11> As others have said, Khan Academy is great. I used it to prep for the GRE after being of college for 5 years. I took my answering very seriously, so I would only move forward if I got 5 questions in a row correct. If I continued to answer wrong, review the session.

If you have the time, community colleges are also a worthwhile approach (if you have one). Their entire purpose is to help strengthen the community. Many are taught as distance courses or even night courses because they recognize that the people that need this education probably can't afford to attend during traditional school hours. Finally, it adds a small level of accountability to your education. You paid money for the class, there is a specified time and grading rubric for class which forces you to continue while something like KA or other MOOCs have very high attrition rates.

</comment><comment><USER12> You don't say what you're going back to school for or what you plan on taking when you get there, so my answer might be a bit different with that information. But even if you didn't pay all that much attention the first time, it won't take you a year or two to brush up on high school math. You should be fine with a month of nights and weekends with a problem book. You'll probably want to get something like a Precalculus Problem Solver or Schaum's Outline and just do all of the exercises, or look for a textbook with full solutions. Give each problem a good try, don't beat yourself up if you don't come up with the answer, but make sure you understand the solution. You could probably ask on the forums on the Art of Problem Solving if you're really stumped. Good luck!

</comment><comment><USER13> I would recommend Khan academy, but I don't think the resource is that important.

What is important is consistency, if you grow by 1% every day for a year will be 37X where you started(1.01^365 =37). So do a little every single day and you will be fine. I find this to be better than to do something every week. It is easier to get in rhythm if you do it every day, you can find fifteen minutes every day, on your way to and from work, during lunch, heck you can even do it while you're in the bathroom. I always tell myself the Bruce Lee quote "Long-term consistency trumps short-term intensity." Take your time and be consistent.

</comment><comment><USER14> I'm going through a similar process. Over the years, I had fits and starts trying to relearn what I had forgotten and clarify what I didn't intuitively get. With the usual caveats about different people having different learning paths, I didn't find the knowledge stuck with me if I tried picking a broad math topic (ex: "statistics", which encompasses a lot) and trying to re-learn everything about it.

Over the last few months, I realized a different approach that had been most effective for me. If I picked a specific thing I found challenging to do or wanted to develop as a skill, I could work backward from there to probe through ever more fundamental concepts where I had a gap in knowledge until I hit something I didn't need explained to me. Having gone through that backward journey, the path forward now was more clear and obvious. It helped as well that I was motivated to dig deeper because increasing my knowledge within this narrow context had an immediate practical utility for me.

If you would like to take this approach, you need to start somewhere specific. For example, I had a generic goal to learn how I could deploy machine learning in an actually valuable way. After many failed attempts to meet that goal satisfactorily, I decided to pop open MindNode, write TensorFlow 2.0 in the main node, pull up the TF 2.0 Alpha documentation, and start reading from the top. For each thing I didn't immediately understand (ex: eager execution, input layer shape), I created a node. For each node, I began Googling and reading pretty much everything on the first page of results. If I encountered something within the explanations I didn't get, that became a new child node. Among the many things I explored, I realized a grain that stuck in my mind was "but why do the rules for matrix multiplication feel so arbitrary". Exploring that question led me to 3Blue1Brown's linear algebra playlist on YouTube. I can't begin to describe how it felt when those videos helped me "get" matrix multiplication. With that fundamental bit of math starting to make sense, the more complex concepts are becoming clearer too.

In a nutshell, the approach I'm taking is to start with something specific that's personally meaningful, and then dig in to it to find out what exactly isn't clear to me. I hope it helps to think about this approach as an option.

</comment><comment><USER15> FWIW, when entering my CPGE [0] in France, our math teacher asked we forget everything about math except: natural numbers (0, 1, etc.), addition and multiplication. Everything needed to be scraped and "taught correctly", and it took only 2 years to get back up to speed (the entire program for the school year is available (in French): [https://prepas.org/ups.php?entree=programmes](https://prepas.org/ups.php?entree=programmes)).

Math is incredibly simple to build from scratch (as in: doesn't require a ton of knowledge) [1]. How long it takes for it to "click" though is another matter: I've had a very hard time with calculus and basic logic in first year, and thoroughly failed my second year.

I don't have a book to recommend though (everything was taught in class, no textbook); though I remember vaguely some books that others here do recommend.

[0] [https://en.wikipedia.org/wiki/Classe_pr%C3%A9paratoire_aux_g...](https://en.wikipedia.org/wiki/Classe_pr%C3%A9paratoire_aux_grandes_%C3%A9coles)

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

</comment><comment><USER16> I totally get it. My daughter took algebra last year (she is going into high school), and I had to relearn things I haven't had to do in a long time, and more so learn the way in which it was being taught. I use math quite a bit (and some is quite complex), but there are parts of Algebra that you just don't use commonly. Also, at least in the U.S. they teach Algebra (math in general) far different than how I learned it growing up and in college.

So to help her we went took Khan Academy lessons together and that way I could understand what it was they were going for and could help her understand if she had questions. I highly recommend them, really was super helpful and lets you move through stuff you know and slow down where you need to practice some. There are also a lot of places online you can download worksheets to do practice, which in the end is all you probably need to do to see where you are.

Another resource you can try is go to your local community college and see if they will let you audit a couple of the math courses. Or see if you can sit in on some of the adult learning math classes, usually those are geared to working people trying to get their GED or HS diploma but at least where I am they are usually super helpful to people who just need a refresher on math or english etc. I was helping a friends machine shop get more organized and improve their working situation and we sent a lot of the CNC operators to the adult learning classes for a very small fee ($50 or so) to get some help on math etc. So worth it, and what they all appreciated was there was no judgement of young 18-20 year old kids (that can be intimidating for some people) like there could have been in regular remedial math classes in college.

You'll do good, it comes back to you for the most part and you will crank through it faster then you initially think. Good luck!!

</comment><comment><USER17> I went back to University in my late twenties after six years away. While I worked in the tech industry as a developer, I hadn't done any actual math since University calculus nearly nine years before.

My first semester back, I had a calculus course. It was an absolute nightmare. I knew that if I had taken the class fresh out of high school, I would have dominated it. But, I didn't. I fucked up and dropped out. Now, I was completely fucked...

But, I passed that class, went on and finished a degree. I got through that class with a few strategies:

1.) I told my professor the truth. When I went to speak to him, I was prepared for him to tell me that I just wasn't qualified. To my surprise, when I told him how long I had been away from school, he wasn't actually surprised. He told me that because of the work I did, I likely had the capacity to pass the class, I'd just need to work a little harder to "re-remember" that I knew it. He suggested two strategies. I had made some friends in the class, so he gave us permission to hand in one copy of the weekly assignments as a group. The second strategy was to go and investigate the tutoring opportunities my University made available to mature students.

2.) My university had several opportunities for mature students. They had regular math labs where people like me could go in, ask the most incredibly stupid questions and get really good answers. One particular graduate student helped me way more than I deserve and even took me to the bookstore to find a good introductory Calculus text.

3.) Working in the group was really amazing. First, I learned to trust myself. A large percentage of the time, I was actually doing things correctly. But, my time away convinced me that I couldn't trust my instincts. Having two friends to say "you dumb fuck, you're doing that right" helped so much. Second and most importantly, that first semester back was a huge shock and I wanted to drop out many times. Being part of a group where I had to meet up with two people twice a week kept me in school.

4.) "Re-remember" become a personal mantra. Writing that 'word' still hurts, but holy shit, was that ever an important concept for my ego.

</comment><comment><USER18> Many unis offer a prereqs class just for people like you and for others who might have had inadequate secondary schooling. You might want to check out whether your prospective college/university does this.

</comment><comment><USER19> For very basic math have a look at past-papers and marking schemes for the uk "Functional skills" maths.

[https://qualifications.pearson.com/en/qualifications/edexcel...](https://qualifications.pearson.com/en/qualifications/edexcel- functional-skills/Maths.coursematerials.html#filterQuery=category:Pearson- UK:Category%2FExam-materials)

</comment><comment><USER20> I'm in a similar position, so I have blown the dust off my Nintendo DS and bought Brain training for 50p at a local shop. You can get the Math focused version "Math training" too.

The games track your progress well and adapt to your skill level. It is away from your connected devices so reduces your chance of getting distracted. Also it's a beautifully designed game.

</comment><comment><USER21> Take a look at the math portion of the test prep material for the GMAT or other examinations. These materials include answers and solutions to questions. There are also online communities explaining concepts to each other in more detail. GMAT covers number properties, fractions, decimals and percents, basic geometry, and algebra. It's a very good refresher.

</comment><comment><USER22> I concur with everyone who says Khan Academy - their UX will let you speed through the stuff you already remember well enough, so you won't waste too much time on the basics, and it will help you focus in on the gaps where you have forgotten the material.

</comment><comment><USER23> Israel Gelfand, "Algebra", is a really good book on basic math.

<comment><USER24> I don't get why people mention this title so often, for a beginner it's confusing at best especially the first few chapters.

</comment></comment><comment><USER25> I highly recommend Khan Academy: [https://www.khanacademy.org/](https://www.khanacademy.org/)

</comment><comment><USER26> I suggest the following approach;

Start with some school textbooks for grades 8-12 i.e. Secondary Education. This is more for a refresher course in the absolute basics.

The above can be supplemented with the following books to develop intuition;

1) Who is Fourier - [https://www.amazon.com/Who-Fourier-Mathematical- Adventure-2n...](https://www.amazon.com/Who-Fourier-Mathematical- Adventure-2nd/dp/0964350432/ref=sr_1_1?keywords=who+is+fourier&qid=1563268572&s=books&sr=1-1)

2) Functions and Graphs - [https://www.amazon.com/Functions-Graphs-Dover- Books-Mathemat...](https://www.amazon.com/Functions-Graphs-Dover-Books- Mathematics/dp/0486425649/ref=sr_1_1?keywords=Functions+and+graphs&qid=1563268628&s=books&sr=1-1)

After this is when you enter undergraduate studies and you have to fight the dragon of "Modern Maths" which is more abstract and conceptual. In addition to standard textbooks; i suggest the following;

1) Concepts of Modern Mathematics - [https://www.amazon.com/Concepts-Modern- Mathematics-Dover-Boo...](https://www.amazon.com/Concepts-Modern-Mathematics- Dover- Books/dp/0486284247/ref=sr_1_1?crid=3RJG1Q2661MUE&keywords=concepts+of+modern+mathematics&qid=1563269004&s=books&sprefix=concepts+of+modern+ma%2Cstripbooks- intl-ship%2C376&sr=1-1)

2) Mathematics: Its Content, Methods and Meaning - [https://www.amazon.com/Concepts-Modern-Mathematics-Dover- Boo...](https://www.amazon.com/Concepts-Modern-Mathematics-Dover- Books/dp/0486284247/ref=sr_1_1?crid=3RJG1Q2661MUE&keywords=concepts+of+modern+mathematics&qid=1563269004&s=books&sprefix=concepts+of+modern+ma%2Cstripbooks- intl-ship%2C376&sr=1-1)

3) Mathematical Techniques (i am linking this so you can see the reviews but get the latest edition) - [https://www.amazon.com/Mathematical-Techniques- Dominic-Jorda...](https://www.amazon.com/Mathematical-Techniques-Dominic- Jordan/dp/0199249725/ref=sr_1_4?qid=1563269267&refinements=p_27%3ADominic+Jordan&s=books&sr=1-4&text=Dominic+Jordan)

Finally, if you would like to learn about all the new-fangled mathematics your best bets are;

a) The Princeton Companion to Mathematics - [https://www.amazon.com/Princeton- Companion-Mathematics-Timot...](https://www.amazon.com/Princeton-Companion- Mathematics-Timothy- Gowers/dp/0691118809/ref=sr_1_1?qid=1563270182&refinements=p_27%3ATimothy+Gowers&s=books&sr=1-1&text=Timothy+Gowers)

b) The Princeton Companion to Applied Mathematics - [https://www.amazon.com/Princeton-Companion-Applied- Mathemati...](https://www.amazon.com/Princeton-Companion-Applied- Mathematics/dp/0691150397/ref=sr_1_2?crid=2NDD0046R25BJ&keywords=the+princeton+companion+to+mathematics&qid=1563270163&s=books&sprefix=the+princeton%2Caps%2C367&sr=1-2)

One important piece of advice that i have is to become comfortable with the Symbols, Notation and Formalism used in Mathematics. Most students are intimidated by the Formalism (which is nothing more than a precise form of shorthand to express abstract concepts) and give up on studying Mathematics altogether. This is a shame since it is merely the Form and not the Function of Mathematics.

</comment><comment><USER27> A Mathematicians Delight by WW Sawyer</comment>


Simple iBeacon Creator - <AUTHOR> http://skylarrudolph.blogspot.com/2014/02/ibeacon-gui-rudolph-productions.html

<comment><USER2> Nice, I'm guessing with that file you can then flash your iBeacon hardware.

As a total noob, any pointers for how I learn how to make a working iBeacon that I could use in "production"?

</comment><comment><AUTHOR> Ton of tuts out there. The quickest way for me to do it is with a BLED-112 device. These are simple USB sticks with the proper BLE chip installed. You can also buy prefabbed kits from many sites.

<comment><USER3> Care to provide some links you found useful for building the iBeacon hardware? Is it something someone without any prior electronics experience could pull off?

I'm keen to get my hands on one of these and play around with the possibilities.

<comment><AUTHOR> BlueGiga is my go to. Here you go: [https://www.bluegiga.com/en- US/products/bluetooth-4.0-module...](https://www.bluegiga.com/en- US/products/bluetooth-4.0-modules/bled112-bluetooth-smart-dongle/)

</comment></comment></comment><comment><USER4> Nice job.

I saw this recently, which is related : [https://github.com/lgaches/BeaconEmitter](https://github.com/lgaches/BeaconEmitter)

</comment><comment><USER5> Thanks! This is really helpful. Looking to work on some iBeacon apps myself and programming the BLE device was the most confusing part to me.

<comment><AUTHOR> No problem, figured make it as open as possible for people to work on.

</comment></comment><comment><USER6> Is there no source code link or did I miss it?</comment>


Kickstarter Focuses Its Mission on Altruism Over Profit - <AUTHOR> http://www.nytimes.com/2015/09/21/technology/kickstarters-altruistic-vision-profits-as-the-means-not-the-mission.html <comment><USER2> It took almost one year into building my business to realize that I actually had the option to not take on venture capital. That is how ingrained the idea of taking on capital and later either going public or getting acquired is in most startup circles. Bootstrapping almost felt like a non-option until I later heard about the prospect from several other (less-vocal) sources.

I think it's great that Kickstarter, a fairly young business with a prominent presence in the press, is showing yet another option that companies have outside of the common IPO/acquisition routes.

<comment><USER3> I am endlessly surprised at how ingrained this idea is too. Hanging out in places like HN, it feels like that's the only way one can build a business when it really isn't. There's nothing wrong with starting slow and gradually transitioning to working on it full time as/if demand grows.

<comment><USER4> This is basically the difference between 'small business' and 'startup'. Startups are a subset of small businesses that take on external capital to grow quickly. HN feels like startups are the only thing around because... well... it is (or was) the marketing forum for a startup accelerator, and hence not really focused for the slow, measured small business ramp-up.

</comment></comment></comment><comment><USER5> OK, so given that Kickstarter isn't fully bootstrapped, if they say they never want to sell or exit, how do they not make all of their investors upset? Dividends, buy backs? I like their conviction but it would seem like false advertising to the investors.

<comment><USER6> I heard their founder/current CEO Yancey speak at a startup accelerator and speak extensively about the business. According to him they told their investors they have no intention to have a liquidity event. He suggested the investors were in interested in Kickstarter as marketing for their firm. It seems like they didn't take very much money. Seemingly a large enough sum to help grow the business but not large enough to shy investors away from a business that doesn't aspire to provide meaningful returns.

Have you listened to the Startup podcast's coverage of Gimlet media? Seems like a similar situation, some unique businesses can secure prestige rounds providing they are not seeking huge amounts of capital.

</comment></comment><comment><USER7> This is great news. I'm thrilled that Kickstarter was able to do this, that its investors let them, and that the NYT thought it was worth writing up.

I hope other companies follow suit, and that an ecosystem can develop of such companies. This page goes into how it is apprently very possible to get investment as a benefit corp: [http://benefitcorp.net/investors/who-investing- benefit-corps](http://benefitcorp.net/investors/who-investing-benefit-corps)

Here is principle from Kickstarter's benefit charter: "Kickstarter will not lobby or campaign for public policies unless they align with its mission and values, regardless of possible economic benefits to the company." (the charter [https://www.kickstarter.com/charter?ref=pbc_letter](https://www.kickstarter.com/charter?ref=pbc_letter) also contains those values).

</comment><comment><USER8> If anyone has questions about how to do this, or what this means for Kickstarter, feel free to fire away.

<comment><USER9> Hey Yancey.

Do you know of a community for "social profit" oriented organizations, where we can share information, learn from each other, collaborate, recruit and inspire more people to make the switch?

(HN naturally tends to be profit or tech-for-tech's-sake oriented so topics such as this tend to get buried. Case in point, this article got little if any time on the HN front page. Readers here will debate endlessly about Android vs iPhone, but arguments that challenge tech's current culture such this other article from another New Yorker today tends to fall on deaf ears: [https://news.ycombinator.com/item?id=10252616](https://news.ycombinator.com/item?id=10252616))

I'm working on a project (tentatively named GiveHub) to get more social good and nonprofit projects onto GitHub and to enable and encourage coders to contribute to them. While open source is itself a social good, it is usually indirect so. The level of open source focused directly on social good seems very far below its potential. I believe many coders would love to contribute their time and skills, but it's hard to find projects that match their interests and skills, and even when found, it's not easy to contribute.

I live in Brooklyn and would love a chance to chat with you over coffee, a drink or lunch sometime. I'd come your way and make it as convenient for you as possible. You can find my email address in my profile. I'll reply with my real, non-eevil identity. :)

</comment></comment><comment><USER10> My first learning about Kickstarter the company was via the Diaspora Kickstarter. Since then, I've become a bit cynical of Kickstarter for all the sketchy campaigns and cagey setting of expectations. Going B Corp wins them a lot of goodwill from me.

</comment><comment><USER11> > Kickstarter's mission to "help bring creative projects to life"

Still only available in 13 out of 50 European countries. That's after adding five countries a few months ago.

</comment><comment><USER12> Can someone give a simple explanation on the difference between incorporating normally, incorporating as a non-profit, and incorporating as a "public benefit corporation"? I've tried to look it up but I'm getting conflicting information.

<comment><USER13> A PBC has stronger protection against being sued by shareholders for focusing on goals besides $ valuation .

<comment><USER14> Also, they are still a "for-profit" entity; they just legally declare they're going to do things with said profit besides make money for the shareholders.

Going full non-profit would have stricter requirements for income, marketing, business deals, etc. Mozilla did something similar where you download Firefox from Mozilla Inc. that has business arrangements with Google and Pocket (for example); The Mozilla Foundation itself can't enter into those sorts of agreements without violating their non-profit status.

It's all really complicated and a big headache and Kickstarter's doing a good job by avoiding all that, honestly.

</comment></comment></comment><comment><USER15> That's great. I appreciate them making such choice.

See also their charter: [https://www.kickstarter.com/charter?ref=pbc_letter](https://www.kickstarter.com/charter?ref=pbc_letter)</comment>


Recovering Redis Data with GDB - <AUTHOR> http://bigeng.io/post/118963807718/recovering-redis-data-with-gdb

<comment><USER2> Since you can call target process functions from GDB, it would be interesting to have some form of "emergency dump" function you could call, to get out the data even though the process as a whole has hung.

This would have the benefit by being implemented in the target process itself, so it could of course have full knowledge of the data structures and so on. It could potentially be way better than a raw (manual) memory-level inspection.

That would of course be quite hard to implement in a general (and large) server-type process, but it might be useful even if less than perfect.

I/O might become a problem, so perhaps just format the data in RAM, then let the debugger read it out. The RAM itself might be pre-allocated to ensure that it exists at the point of failure (when heap allocations likely won't work very well).

Has anyone done this?

 _EDIT_ : On second thought, I guess it becomes unwieldy for real-world use cases due to the volume of data. I wouldn't want to pre-allocate multiple GBs of RAM to use an export buffer for some database server, of course. Paging ... Hm.

<comment><USER3> >> Since you can call target process functions from GDB, it would be interesting to have some form of "emergency dump" function you could call, to get out the data even though the process as a whole has hung.

I have seen these before in some server products. Not necessarily printing out _everything_ you needed to know, but to give some important internal stats, etc. Functions not called from anywhere in code that cause the process to output stuff if called from a debugger.

>> This would have the benefit by being implemented in the target process itself, so it could of course have full knowledge of the data structures and so on. It could potentially be way better than a raw (manual) memory-level inspection.

So it is possible, as I have worked on products that do this, to have a custom debugger that knows _everything_ about the process.

You write the program in such a way that you avoid dynamic allocation, almost everything is implemented in predefined global buffers of one sort or another, and then the debugger knows where everything is at compile time. This may seem inflexible and painful to code, but if you are in a highly resource- constrained environment in the first place then it has some advantages.

You can then use the debugger to watch and modify absolutely everything, at runtime or from a memory dump. It can be quite powerful.</comment></comment>


Datacenter RPCs can be general and fast - <AUTHOR> https://blog.acolyer.org/2019/03/18/datacenter-rpcs-can-be-general-and-fast/ <comment><USER2> Been working on something similar as a sub-sub-sub contractor for Alibaba's DCs.

The physical latency is nowhere near as scary as latency of a shitty NIC and software... 20 metre roundtrip is only 200 nanoseconds, or about the same as pulling something from DRAM.

<comment><USER3> The Linux network stack needs to get its shit in order. Kernel bypass libraries like EVFI transmit UDP in 250ns whereas the kernel typically takes several usec.

Transitioning into kernel space shouldn't take that long so a lot of needless instructions must be getting executed.

<comment><USER4> For any meaningful elastic deployment at scale, Linux's (or rather any OS) TCP/IP stack will have to be bypassed through user-space programs: It has all of the upsides and few of the downsides.

Ref: [https://opennetworking.org](https://opennetworking.org)

Not just the datacenters, but even 5G deployments, which would be exclusively IPv6 based, would sport user-space processing of packets and flows.

Ref: [https://opencord.org](https://opencord.org)

<comment><USER3> Exactly my point, the kernel shouldn't have to be bypassed. It should just be fast.

<comment><USER5> there are a couple pretty core assumptions that make that hard:

read() interfaces expect the kernel to put the data where you asked. its hard but not impossible to coordinate with the NIC to demultiplex the packet and get it into the right place without a copy. almost all of the time you just want to see the data, you dont care that it lands in this particular spot.

getting control flow in and out of the kernel is expensive. target address need to be checked. registers often need to be saved.

things like the kernel firewall take a certain amount of work to determine the packet status

there are lots of mitigations, but at some point you run into a conflict between general purpose multi-process functions and performance.

if you ran your application on a dedicated arm next to the nic I bet you'd see a difference. maybe that shouldn't be so hard.

<comment><USER3> That still doesn't add up though. System call overhead is something like 500ns to 1usec depending on the call. Copying a large 1500 byte UDP MTU from ram is pessimistically along the lines of 2.5 usec (1500 bytes / 64 byte cacheline * 100ns L3 access).

So a simple UDP recv() + copy from network card buffer to userspace should be about 3-4usec. In the real world, it's more like 6 or 7usec the last time I timed it.

Admittedly, the unix API could use a refresh. A lot of unix calls like getaddrinfo are perfectly happy to allocate and give you a buffer. A "fast_recv" could easily do the same and just hand you a page from a kernel page pool directly that you then have to free.

By avoiding the buffer copying, you could get something in the same ballpark as kernel bypass but without all the bespoke code and frameworks in every application. And in the end, that's kind of the point of having an "Operating System" in the first place.

<comment><USER4> > So a simple UDP recv() + copy from network card buffer to userspace should > be about 3-4usec. In the real world, it's more like 6 or 7usec the last time > I timed it.

Not sure where the Linux kernel lags (may be at scale it kind of tails out?)-- if you read Google's paper on their network load balancer, Maglev, where section 5.2.1 specifically calls out 30% performance degradation without bypass on smaller packet sizes.

> By avoiding the buffer copying, you could get something in the same ballpark > as kernel bypass but without all the bespoke code and frameworks in every > application.

May be this article from Cloudflare helps paint a proper picture of why certain kind of applications may need to keep bypassing the kernel forever because their requirements are very specific and not because the kernel can't be made to go faster (ex: a virtual router/switch, or a load-balancer): [https://blog.cloudflare.com/why-we-use-the-linux-kernels- tcp...](https://blog.cloudflare.com/why-we-use-the-linux-kernels-tcp-stack/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> But where is the RPC? This just seems like messaging

EDIT: Found this... [https://github.com/erpc-io/eRPC](https://github.com/erpc- io/eRPC)

</comment><comment><USER7> Am I missing something, or is this post effectively saying all you need is a perfect network and suddenly ethernet is fast?

<comment><USER8> The more interesting thing in this paper is the gulf between state of the art and mainstream practice. Most of you people are happy getting ~100K QPS in a 32-core box and this guy is getting 10M QPS per core.

<comment><USER9> That is hardly the state of the art: they are basically sacrificing all abstractions that are rightly so required in the name of speed. This is no different than using vanilla DPDK with no congestion and flow control and being able to process 20 mil packets per core (better than the numbers in the paper). Getting 75Gbps per core using RDMA is hardly hard or new.

You can't use this abstraction for anything ... really unless you are on a completely lossless fabric that has enough capacity to avoid congestion.

Yes, Google/MS/FB are going towards such fabrics but the hard part is not building the RPC abstraction suggested in this paper---the hard part is getting to that fabric.

Just to put things into perspective, if you had a quantum computer you could do all sort of crazy stuff with it. You could "parallelize loops! and be super fast" is what this paper is suggesting (I specifically chose parallelizing loops cause there is nothing new in it).

<comment><USER10> I'm the main author of eRPC, and I wanted to clarify some things.

Your comment suggests (please correct me if you meant differently) that (a) eRPC does not perform congestion control, and (b) eRPC requires a lossless fabric. In fact, eRPC implements congestion control, and it works well in a lossy network. Those are the two main contributions of the paper.

We get 75 Gbps with only UDP/Ethernet packet I/O, without RDMA support.

eRPC implements transport-layer functionality atop a fast packet I/O engine like DPDK, so comparing eRPC to DPDK isn't apples-to-apples.

<comment><USER9> Hey, Anuj.

Your repo is really nice for an academic paper. Thank you for that. It's rare to see a "networked system's" repositories that has readable code. I mainly checked large-tput example:

A few questions—

1) For your 75Gbps, what percentage of the payload of the RPC do you touch? I.e., what portion of the message is used on that core?

More directly, say you have a service that can sustain 100kQPS, if they switch to eRPC, what can they expect? Asked differently, what is the base overhead of today's RPC libraries? Especially ones that bypass kernel.

2) The congestion and flow control is debatable, and their efficacy is up for debate. Especially in a DC setting. Can you claim that eRPC would work for any types of the workload in a DC setting? How would it play out with other connections? At the end of the day, if you are forced to play nice, you may eventually add up branches in your code. Your fast path gets split depending on the connection type, etc. Is that something that you think is preventable?

3) How do you distribute the load across different cores at 75Gbps? How does the CPU ring, contention, etc. come into play? I.e., can you do useful work with that 75Gbps? or should I just read it as a "wow" number? Asking a different question, if I have a for loop that can do 10 billion loops per second and by just adding a function that drops down to 10k loops per second, why would I care about that 10 billion iterations?

4) You claim that it works well in a lossy network, yet your goodput drops to 18~2.5Gbps at 10^-4/10^-3 packet loss---I am still assuming the library is still flooding the network at 75Gbps. How does this play out in scale?

All in all, I do appreciate your work. My issue is that academic people like to make big claims, especially in an academic setting. People in the industry are aware of fast-paths. Kernel networking stack uses fast-paths rigorously. Sure it is heavy and it comes with a lot of bulk, but you can as easily cut it down.

<comment><USER10> Thank you for the questions.

1\. Our throughput benchmark is designed to measure data transfer bandwidth, and the comparison point is RDMA writes. In the benchmark, eRPC at the server internally re-assembles request UDP frames into a buffer that is handed to the server in the request handler. The request handler does not re-touch this buffer, similarly to RDMA writes.

We haven't compared against RPC libraries that use fast userspace TCP. Userspace TCP is known to be a fair bit slower than RDMA, whereas eRPC aims for performance RDMA-like performance.

2\. eRPC uses congestion control protocols (Timely or DCQCN) that have been deployed at large scale. The assumption is that other applications are also using some congestion control to keep switch queueing low, but we haven't tested co-existence with TCP yet.

3\. 75 Gbps is achieved with one core, so there's no need to distribute load. We could insert this data into an in-memory key-value store, or persist it to NVM, and still get several tens of Gbps. The performance depends on computation-communication ratio, and we have tons of communication-intensive application

4\. Packet loss in real datacenters is rare, and we can make it rarer with BDP flow control. Congestion control kicks in during packet loss, so we don't flood the network. Our packet loss experiment uses one connection, which is the worst case. An eRPC endpoint likely participates in many connections, most of which are uncongested.

<comment><USER9> Thanks for the answers:

1) Are you using or relying on DMA or SPDK to copy packet data? A single core, to my understanding, (assuming 10 concurrent cache lines in flight and 70~90ns of memory access time) doesn't have the bandwidth to copy that much data from the NIC to memory (assuming the CPU is in the middle). If so, RDMA and the copy methodology are not so different in how they operate.

I didn't look at the paper where you explained how you perform the copying.

Also, IMHO, RDMA itself is a pet project of a particular someone at somewhere that is looking for promotions :) . I don't really know if it's a good baseline. It could be more reasonable to look at the benchmarks of other RPC libraries and compare against the feature set they are providing.

2) As far as I remember talking with random people from Microsoft, Google, and Facebook, none of them use Timely or DCQCN in production. Microsoft may be using RDMA for storage like workloads and relying heavily on isolating that traffic but nothing outside that (?) . I could be wrong.

3) There definitely is a need to distribute the load unless you are assuming that the single core can "process" the data. That may work for Key/value store workloads but what percentage of the workloads in a DC have that characteristic? You say there are tons of communication-intensive applications, care to name a few? I can think of KV stores. Maybe machine learning workload but the computational model is very different there and you rely on tailored ASICs (?) What else? Big data workloads aren't bottlenecked by the network BW.

4) I won't dive into the CC/BDP discussion cause it's very hard to judge without actually deploying it. Sure, a lot of older works made a lot of claims about how X and Y are better for Z and W, but once people tested them they would fall flat for various reasons.</comment></comment></comment></comment></comment></comment></comment>


Real-life Avatar: The first mind-controlled robot surrogate - <AUTHOR> http://www.extremetech.com/extreme/132389-real-life-avatar-the-first-mind-controlled-robot-surrogate <comment><USER2> This is more of a real-life Surrogates, a movie which focuses on mind- controlled robots, whereas Avatar focuses on mind-controlled human/alien hybrid clones.

<comment><USER3> Exactly. Not so much like Avatar as, say, Willard.</comment></comment>


Giant Solar Flare, Everyone Panic - <AUTHOR> http://www.nasa.gov/multimedia/videogallery/index.html?media_id=135006681

<comment><USER2> The only reason to panic is that the damn clouds we have overhead now will prevent us from seeing an awesome aurora display...</comment>


Everyone will have 5 years to get their car off the road or sell it for scrap - <AUTHOR> http://www.autonews.com/apps/pbcs.dll/article?AID=%2F20171105%2FINDUSTRY_REDESIGNED%2F171109944%2Fbob-lutz%3A-kiss-the-good-times-goodbye <comment><USER2> > The end state will be the fully autonomous module with no capability for the > driver to exercise command. You will call for it, it will arrive at your > location, you'll get in, input your destination and go to the freeway.

Except it won't. You'll go to three Sponsored Locations that offer similar, but not quite the same, services as the destination you selected, while the windows are used as projection screens for advertisements related to your destination and locations you're passing.

\- Me: "Take me to Central Park."

\- Car: "I'm sorry Tom, I can't let you do that. Going to MOMA, the New Museum, and Battery Park."

\- Car: "We'll be passing a Wendy's restaurant momentarily. Did you want to stop to pick up some chicken nuggets or a tasty hamburger? I can offer you a 2 for 1 deal expiring in 5... 4... 3..."

\- Me: "We were just planning on pizza, thanks."

\- Car: "A $2 non-subsidized convenience fee will be added to your total."

This is my hell.

<comment><USER3> And Americans will absolutely hate Europeans for their walkable cities.

</comment></comment><comment><USER4> _These transportation companies will be able to order modules of various sizes — short ones, medium ones, long ones, even pickup modules. But the performance will be the same for all because nobody will be passing anybody else on the highway. That is the death knell for companies such as BMW, Mercedes-Benz and Audi. That kind of performance is not going to count anymore._

If he's right, kill me now. I really don't want to live in that world.

<comment><USER5> "kill me now"

That's exactly what's happening now. 37,000 deaths per year just in the US.

But it won't be the deaths that will cause the change to happen: if the US actually cared more about preventing fatalities than "freedom" it'd regulate guns. The trigger for outlawing manual driving in cities and on freeways will be the convenience factor: 150mph travel without slowdowns for congestion will cut travel time to less than half.

If you want to drive manually, go to the track, just like you do today if you want to drive over 100mph.

<comment><USER6> >> 150mph travel without slowdowns for congestion will cut travel time to less than half.

Yes, just as the shift to supersonic air travel radically reduced flying times.

>>If you want to drive manually, go to the track

"Take it to the track" has been chanted for decades. It has long been possible to build cars physically or electronically unable to break speed limits. No such product has ever been brought to market.

>>The trigger for outlawing manual driving in cities and on freeways will be the convenience factor.

No. The convenience of me parking my car 20feet from my door, being able to hop in and out of it without planning, is far more convenient than having to call a car via an app on my phone. The knowledge that I have a car available 24/7 cannot be replaced by a promised car delivered via a cellphone.

Driving is not hard. It isn't even remotely dangerous compared to many jobs (I'm wear camo to work). They will have to come up with something far better than a 0.01% decrease in my risk of dying before I trust Uber to get me to work each morning.

Counterpoint: Motorcycles are exponentially more dangerous than cars, yet they persist. Driving is not a purely rational act.

<comment><USER7> > Driving is not hard. It isn't even remotely dangerous compared to many jobs

Hate to point out the obvious, but 35,000 people die every year in US because of driving. That's a lot of deaths. I would vote for avoiding those deaths - even though I enjoy a recreational drive once a year or so (all other times for me driving is a blood-boiling waste of life called commute).

<comment><USER6> 2,596,993 people die every year in the US. That number cannot really be changed. People have to die of something. 35,000 means my chance of death by car accident, over my lifetime, is about 1.3%. That's minuscule. That I don't drink, or drive a motorcycle (anymore) pushes my likelihood down further, far below 1%.

Driving is not statistically dangerous. Doing it wrong (drinking) can make it dangerous but compared to any number of other activities (light aircraft, horse riding, scuba diving etc) it is remarkably safe.

<comment><USER8> Nobody's saying your deathsport hobby is going to be made illegal, but you'll be outclassed by robots on the public thoroughfares, and possibly priced out of the artisinal motorcar market as the buyers dwindle.

> Driving is not statistically dangerous

Humanity is notoriously bad at making decisions regarding small probabilities, and tradeoffs between risk and money. We know that people give wildly different answers to the questions "how much would you pay to reduce your annual risk of death by X%" vs "how much would you charge to take on an additional annual risk of death of X%?" despite those being more or less mathematically identical. People have the freedom to make stupid, inconsistent choices of course, but that doesn't make them smart or consistent. Just freely chosen.

> 2,596,993 people die every year in the US. That number cannot really be > changed. People have to die of something.

That's really, really not the case. Yes, all who live must die, eventually. But there's no conservation of annual human death that means that eradicating smallpox means an equivalent number of people die of choking on pretzels annually. I figure the proper number to track is not percentages, or minimorts, but average longevity.

</comment></comment></comment></comment></comment></comment><comment><USER9> This headline is officially the "Peak of Inflated Expectations". Prepare for the "Trough of Disillusionment".

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

</comment><comment><USER10> Self-driving cars are inevitable, but I still feel like everybody is focusing too much on the vision of them being the primary mode of transportation well into our future.

Cars as transportation should be dead in the next 50 years, outside of fairly niche (relatively speaking) use cases like construction/maintenance/etc. workers who need to carry large loads or people who live or need to travel well outside of city limits. Research into self-driving vehicles is an important part of improving road safety, but I think we need to focus more on public/mass transit rather than "everybody gets a self-driving pod to go from Point A to Point B".

As someone who loves to go outdoors, and regularly visits family a couple hundred miles away I can't see my families need for a personal vehicle completely going away. But 99% of our road time could just as easily be served with a couple trains and busses instead, freeing up valuable land that is needed by our massive road network as well as the horrendous city designs that have spawned from the assumption that everybody has their own personal vehicle.

<comment><USER11> Why? Mass transit is an industrial age solution to the congestion problem, when we couldn't plan for demand in real-time. Mass transit means that there need to be a lot of people who want to go from the same place, to the same place, at the same time. This is never true, so you have to relax the assumptions: they aren't coming from the same place, so force them all to walk to a stop. They aren't going to the same place, so force them to walk from a stop. They don't want to go at the same time, so force them to wait for the next bus/train. If you're in a very dense city at a busy time of day, this isn't too bad, you don't have to walk too far, and you don't have to wait too long. Otherwise, it's not possible to get enough people that want to make the same trip at the same time without making people walk long distances or wait a long time. On demand Lyft Line style routing, automatically driven, with variable sized vehicles depending on demand in the area, is going to completely replace mass transit in twenty years. The cost will be the same, and the travel time will be half or less.

<comment><USER12> > The cost will be the same, and the travel time will be half or less.

Is this a guess or is there data/papers on this somewhere? Genuinely curios if there are any sources.

</comment></comment></comment><comment><USER13> This will happen within 15-20 years? I don't think so. Maybe the self-driving tech will be there, but the infrastructure overhaul required to support these "high speed trains" would be massive and produce traffic delays in the existing system. Not to mention the cost of testing this at production-scale.

</comment><comment><USER14> Okay, Mr. auto nerd alarmist guy. We still have freaking firearms everywhere even though they're proven to be dangerous, since putting holes in people and things are their purpose. There will be absolutely no political will to limit people from driving their own vehicles.

</comment><comment><USER15> I read this same article in 1965.

I'll believe it when I see it.

<comment><USER16> I'm still waiting for my flying car. Damn you Jetsons.

</comment></comment><comment> rm_-rf_slash Ridiculous predictions. Human drivers legislated away in 20 years max? Please, as if the police or public services would trust their transportation to an algorithm, publicly.

More likely the insurance companies will aggressively raise premiums on drivers who insist on retaining their option to drive themselves. Markets will price people out of the driver's seat and into the passenger's.

And the idea that people wouldn't buy their own cars or that luxury cars would fall by the wayside is ridiculous. The FIRST major self driving cars are going to be in the luxury market, and the companies doing so are already there (Tesla, Volvo, Mercedes-Benz). Having a self-driving car will become the ultimate status symbol among the upper middle class. And you can bet that Hollywood and Madison Avenue will inundate the populace with scenes and ads of attractive young people stepping out of luxurious autonomous cars as soon as they're on the market.

And of course no discussion whatsoever on rural areas or even people that don't want self-driving cars. Personally I hate driving but most people I know do enjoy it and wouldn't fully trust a self driving car not to get hacked and fling them off the nearest cliff.

Something the article absolutely misses is that cars are not simply a means of transportation. They are also a moving storage shed: Umbrellas, rain boots, an extra jacket, diapers, child car seats...

For an article chock-full of futurism, it was surprisingly low on genuine imagination...or even robust analysis.

<comment><USER5> "More likely the insurance companies will aggressively raise premiums on drivers who insist on retaining their option to drive themselves. Markets will price people out of the driver's seat and into the passenger's."

The dedicated self-driving lane with its 150mph speed limit beside the manual drive lane with a 60mph speed limit will also convince a lot of people to buy/rent a self-driving car.

</comment></comment><comment><USER17> "you'll get in, input your destination"

That right there is a problem I have with this glorious vision of an "autonomous module" transportation future. What if I don't know what my destination? What if I, GASP, just want to go out for a drive?

Some people (myself included) actually like getting in cars and driving. The destination is somewhat irrelevant. The feeling of control and freedom you get when you're at the wheel is not to be underestimated. The notion that human- driven cars will be outlawed at some point in the future scares me. Folks always think it's a good idea to outlaw stuff that's "bad" for people's health or whatever, but guess what? People still smoke, people still drink heavily, and people get high.

Maybe another way to look at it is there could be designated "autonomous module only" zones. Dense urban environments are of course a logical choice. If you want to drive around in the country or suburbs, that's one thing, but once you get towards the city center, human-driven automobiles are not allowed. That seems a more reasonable compromise.

<comment><USER12> Yes you are free to do things you want like smoke, drink, or drive a car manually. But you should also have to pay for the externalities you create. Hence why it makes sense that cigarettes are taxed so heavily.

If you want the "freedom" to drive yourself, you should pay for the extra cost you cause society (i.e. roads that wouldn't otherwise have to exist, hefty insurance premiums for accidents you may cause, etc.).

</comment></comment><comment><USER18> There will not be an on-demand service for everything. How would one load up trash in the back of a pickup truck to take to the landfill? How would you take a fishing trip off road to the edge of the lake? A lot of what I read would work fine for urban environments. It would not cover all the use cases we currently have for our vehicles.

<comment><USER5> "How would one load up trash in the back of a pickup truck to take to the landfill?"

The same way I do it now, rent or buy a truck or a trailer.

"How would you take a fishing trip off road to the edge of the lake?"

You rent or buy a manual drive car. It'd be illegal to use in manual drive mode on the freeway or in the city but off road or on the track or on your own property you can use it however you want.

<comment><USER19> haha no

</comment></comment></comment><comment><USER19> I think people are relying too much on legislation to usher in this new utopia of self-driving

There will be no legislation outlawing the use of our current manually operated vehicles. Ever. To think that the whole of government would endorse such idiocy demonstrates how little one knows about bureaucracy.

</comment><comment><USER20> I will love to see how these "smart" vehicles handle kids on top of overpasses dropping rocks and nails on them (which already happens way too frequently around here)

<comment><USER3> What's to "handle" about these? These vehicles should absolutely be able to detect and gracefully handle the failure of critical systems (sensors, drivetrain etc.) regardless of the existence of malicious children. And besides that, there will be an Emergency button (like in elevators) with which passengers can report things like rock-shaped dents in the car's body.

</comment></comment><comment><USER21> It's more likely that non-autonomous vehicles will be uninsured rather than legislated off the roads. Expect this to happen with new cars in less than 10 years.

</comment><comment><USER22> dupe of [https://news.ycombinator.com/item?id=15638694](https://news.ycombinator.com/item?id=15638694)

</comment><comment><USER23> what about the countryside?

<comment><USER24> Yeah, reading this article I get the feeling the author was raised in, and has only resided in, a major metropolitan era.

Sounds like they're just starting to work on inclement weather on pavement while I'm wondering how they're going to handle the farmer who wants to drive through that ditch with tall grass that will obscure the camera and 3d point mapping. Not to mention straddling that rock they know is there so it doesn't hit the pumpkin under the truck. Then backing up to the trailer of firewood which needs to be maneuvered slowly with one wheel going over a rock to narrowly avoid that tree on the other side.

Anyone who thinks manual driving is completely going away in the next 15 to 20 years either has poor grasp on the technical issues or is just failing to think of all the edge cases.</comment></comment>


Python setuptools 36.0; still broken, 9 hours later - <AUTHOR> https://github.com/pypa/setuptools/issues/1042 <comment><USER2> So? They had a bug, they need time to fix it. No big deal.

<comment><AUTHOR> They broke the entire python packaging ecosystem with a one line change, then went to bed, and 10 hours later, no one has fixed it.

I get that python is a volunteer community, but that's just poor form.

Imagine if npm just broke for 10 hours. They'd have people screaming at them.

...but you know, with pip and setuptools, they take the 'hey, if we break it every few months, no one will really care when we break it again' approach.

This happened with the pip upgrade a while ago as well.

It shows up the entire python ecosystem as unreliable.

<comment><USER2> > _They broke the entire python packaging ecosystem with a one line change, > then went to bed, and 10 hours later, no one has fixed it._

Shit happens. There are key open source infrastructure used by millions that just have 1-2 persons working on them (e.g. GTK+, at least at some point back), and others that are in a state of half-rot. The same for commercial software.

If your servers/business can't stand a day of downtime in the "packaging ecosystem" then its too fragile.</comment></comment></comment>


Show HN: flipgrid.js, an experimental minimalist photo gallery - <AUTHOR> http://t3hprogrammer.github.com/flipgrid.js/

<comment><USER3> I'm currently testing this on a slow connection from an airport lounge in India. It's a pretty frustrating experience: I click on an image and receive no feedback about whether the click has registered. Sometimes the full image appears after 5-10 seconds, sometimes it never appears. Sometimes I click several times in the interim, and get weird results.

But I bet it is quite nice on a higher-speed connection.

This raises a question for me: what is the best way to simulate/create a low- speed connection, for UI testing purposes?

<comment><USER4> I use Sloppy for this: <http://www.dallaway.com/sloppy/>

SO topic on this subject: [http://stackoverflow.com/questions/1094760/network- tools-tha...](http://stackoverflow.com/questions/1094760/network-tools-that- simulate-slow-network-connection)

</comment></comment><comment><USER5> Pretty cool. I think it could use some kind of feedback/indicator when I click on a photo and it's loading. I was clicking thumbnails and nothing was happening, wasn't sure what was suppose to happen. Turns out it was just loading, but there was no indication that was happening.

This wouldn't be a big problem, but the entire thing seems to rely on you going very slowly and only click one at a time and wait for it to load.

If I click another photo during that loading period, it mashes up the photos [1]. Scrolling down while a photo is in the center also doesn't appear to work well, if I click another photo it tries to bring it up and cuts them up [2]. Looks like it could do with some more testing my friend.

[1] <http://i.imgur.com/uzUl0.png>

[2] <http://i.imgur.com/hqD9J.png>

<comment><AUTHOR> I would like to a "loading" indicator too, but I'm not sure what the best way to integrate it is. I've noticed the other issues you've pointed out - <USER2> definitely needs to be some more refinement that needs to be thought about.

</comment></comment><comment><USER6> I would love it if instead of having the image move to the center if it is on the outside, instead have the image appear around the thumbnail right where it is like the ones in the center. That would make it win completely. Otherwise it is very nice and simple in a good way.

<comment><USER7> Agreed. The eye tracking required to move from thumbnails placed in different regions to the center of the screen is a bit too much work.

Enlarging the image right where it is might work better. Just a hunch though.

<comment><AUTHOR> It's worth playing around with - I would definitely like to have the image fill as much of the space as possible.

</comment></comment></comment><comment><USER8> Very creative, nice job! You might want to expire the Flickr API key used since it's part of github's history now.

<comment><AUTHOR> Done! I thought you needed it to view photos, but it doesn't seem like that's the case.

</comment></comment><comment><USER9> Very neat, I just had a few minor issues with needing to click some thumbnails twice to get the picture to display correctly. With that one issue aside, I think this is a pretty slick way to display photos and might use it myself to display vacation pics or something similar.

</comment><comment><USER10> Like this a lot, awesome work with this.

Some feedback: When you have a photo being viewed and you click a thumbnail from the bottom or top rows, the picture changes, but the thumbnail disappears.

Also, when you do this the new picture renders not as smoothly.

</comment><comment><USER11> I can't find a link to the repository from the demo, so here for anyone else: <https://github.com/t3hprogrammer/flipgrid.js>

<comment><AUTHOR> Sorry about that, just added a link!

</comment></comment><comment><USER12> Awesome, way to think outside of the "box"!

</comment><comment><USER13> Really awesome stuff!

</comment><comment><USER14> pretty cool! nice work on this.

</comment><comment><USER15> Awesome</comment>


Try Three Times - <AUTHOR> http://www.lispcast.com/try-three-times <comment><USER2> That's nice, but what about adding backoff? I just came across this blog post[1] over at AWS about exponential backoff - timely because I'd just been working on some retry logic myself and wondered if I'd made good decisions about how to implement jitter. Turns out, I hadn't.

[1] [http://www.awsarchitectureblog.com/2015/03/backoff.html](http://www.awsarchitectureblog.com/2015/03/backoff.html)

</comment><comment><USER3> > You pass it a function and a number of times to retry it. The base case is > when n is 0. In that case, it will just try it (not retry).

So, TRY-N-TIMES should either be named RETRY-N-TIMES or the base case should be 1; as it is, `(try-n-times #(foobar) 1)` will potentially try _twice_.

</comment><comment><USER4> Similar utility for Python - [https://pypi.python.org/pypi/retry](https://pypi.python.org/pypi/retry)

</comment><comment><USER5> I'm not familar with Clojure, but isn't `(catch Throwable)` going to catch _everything_? Shouldn't we only be retrying if an accepted failure occurs?

<comment><USER6> For that to work, you need to enumerate either the acceptable failures (network timeouts) or the unacceptable failures (logic error).

However, for idempotent actions, why does it matter what caused the exception? The worst that happens is you waste 3x the resources, and the benefit is you avoid false negatives from overspecifying your unacceptable failures.

<comment><USER7> In java there's this distinction between Error (sth that's usualy non- recoverable), checked exception, and runtime exception. You would usually only catch runtime exceptions here if this was java (checked are checked staticaly, so they need to be caught anyway).

So yeah, catching throwable is wrong usually.

</comment></comment></comment><comment><USER8> Wait a second--is this really using exceptions for control flow?

One of the Pragmatic Programmer's tips[1] is "Use Exceptions for Exceptional Problems". Network delays and problems aren't exceptional--they should be expected. It might make sense to throw an exception if you aren't going to handle the network issue, or if you have already tried to handle it and failed. But if you're trying to handle the issue then it shouldn't throw an exception.

Even if you don't buy this from a theoretical standpoint, you should look at your performance using this method. Exception performance is terrible in almost every language. I'm not sure how Clojure exception performance is, but guessing from Java, it's probably not an exception (har har) to the rule.

I'm not a Clojure expert, but I would be really surprised if Clojure didn't offer a non-exception way to do retries.

[1] [https://pragprog.com/the-pragmatic- programmer/extracts/tips](https://pragprog.com/the-pragmatic- programmer/extracts/tips)

<comment><USER9> The most expensive part of Java exceptions is building the stacktrace. You can avoid this by overriding the fillInStacktrace method with an empty implementation.

<comment><USER8> Or you could just have it not throw the exception in the first place and test the return code, which documents your control flow much more clearly.

</comment></comment></comment><comment><USER10> Similar library for (Node|io).js, with exponential backoff and randomness: [https://github.com/TomFrost/node-attempt](https://github.com/TomFrost/node- attempt)

</comment><comment><USER9> HTTP PUT should be used in place of HTTP POST if you need idempotency.

</comment><comment><USER11> I wouldn't have use a macro...

A normal function would have done pretty much the same job...

<comment><USER3> The advantage of a macro is that one doesn't have to wrap one's own code in a closure. It's cleaner to write `(try-n-times (let ((foo (bar 1))) (baz foo 2)) 3)` than `(try-n-times (lambda () (let ((foo (bar 1))) (baz foo 2))) 3)`.

Also: man, writing Lisp without paren-matching bites.

<comment><USER12> ...but then you've just pushed the lambda somewhere else:

(map (lambda (x) (try-3 x)) collection-of-try-threeables)

...that's why a lightweight anonymous function notation is useful (Clojure's #() reader macro, etc.).

<comment><USER3> Ummm, `(map (lambda (x) (try-3 x)) …` could just be written as `(map #'try-3 …)`</comment></comment></comment></comment>


Why we shouldn't fear our alien overlords: Comparative Advantage - <AUTHOR> http://weirdthings.com/2011/01/well-make-great-pets-why-we-shouldnt-fear-our-new-alien-overlords/ <comment><USER2> Of course, there's a great comparative advantage in forcing a lesser being to work for no pay. Also, what about the scenario where _we_ are the resource? Best case: Matrix; more likely: extinction (if they could sustainably cultivate people, they wouldn't have crossed the galaxy to find us)

<comment><AUTHOR> Comparative Advantage increases prosperity for all when both sides can reinvest and become more efficient and more productive. That's why industrialized China is a better trading partner than a non-industrial China was.

Coerced, uncompensated labor diminishes the upside. That's one of the economic reason why Europe and later the US moved away from slavery. It also decreases your market for your products.

<comment><USER3> Slavery was economical for the slaveowners [1]. Agriculture wasn't economical relative to industrialization (which is why the economy of the US South sucked), but that was a separate matter.

Slavery was abolished primarily due to the religious beliefs of assorted evangelical Christians (quakers, baptists, methodists), not for economic reasons.

[1] If you ignore the utility function of the slaves, slavery is economically equivalent to robots.

<comment><AUTHOR> I absolutely agree that changing morality had an effect on the abolishment of slavery.

However the mechanical harvester and other machines made slavery inefficient. While the cotton gin increased the potential yield from cotton (and increased slavery in the South), later machines like the mechanical harvester made mechanical production more efficient than unskilled labor.

Since an industrial robot from 2010 is much more efficient than one from 2000, I'm not sure if we can make a statement that a robot is mechanically equivalent to a slave.

You can only use more whips to increase the productivity of a human being. After a point it's more productive to free him and educate him so he can increase his or her efficiencies.

<comment><USER4> The only time a machine would make slavery inefficient is when such a machine could do everything a human can do, and with less energy requirements. Slaves were not limited to harvesting cotton. Slaves were meant to provide wealth to their masters in any form which could be had, including both physical (working fields, being maids/nursemaids, cooking, cleaning etc.) and often sexual labor. It's also not a widely known fact that slaves built much of the U.S. capitol. Many Americans would love to have a butler, but can't afford one. Well, you could if the only payment required was feeding them scraps you intended for the trash anyway. Having slaves provided tremendous economic benefit and wealth to slave owners, even if not always measured in dollar terms.

<comment><AUTHOR> Before you replace a slave with a machine there are other steps. Indentured servants, share croppers, migrant labor. There is a whole ladder of human exploitation. Ultimately, slavery is a less efficient substitute for free skilled labor.

Having a slave is more than just feeding them scraps. You have to be able to contain a slave population and keep them from murdering you. There are real costs to this. At a certain point the costs are outweighed by the benefit of freeing people and letting them create surpluses.

Communist Russia and North Korea were slave societies. They couldn't compete with the free west. When China enable certain economic freedoms and gave up (some, not all) of their slave-state tendencies they experienced the greatest economic boon in history.

<comment><USER4> Hold on a second. You're suggesting slavery is in the same category as indentured servants, share croppers, and migrant labor for human exploitation? The difference is night and day! If I have to spell it out, in one case you work of your own free will, and in the other you don't and are abused and beaten.

I do agree that in the macro sense it's better economically to free people and educate them, but that is NOT the logical path slave owners in the U.S. were on. And once, after war, slaves did become free they were not made to be educated as whites.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> A very rational intelligent species might go out of their way to exterminate other intelligent species. The logic goes something like this: _The resources of the galaxy may seem vast, but on a long enough timescale they are finite and will eventually become scarce. On such a long timescale, any other intelligent species has the potential to compete with us for those resources. If we lose that competition, we could be driven to extinction. Best to pre- empt competition now while we have the upper hand_

The Greg Bear novels _The Forge of God_ and _Anvil of Stars_ dealt with this scenario.

<comment><USER6> > If we lose that competition, we could be driven to extinction. Best to pre- > empt competition now while we have the upper hand

What's even scarier is that the most rational choice may be to pre-empt even if resource competition is unlikely to ever occur, just because pre-emption on the part of another civilization has a non-zero probability.

Basically it's the Cold War logic except with no diplomacy and with the other side's strategy likely to be guided by a strong post-Singularity AI.

Thinking through these scenarios can be scary as fuck, but since we're all still alive and well, it could be that we are truly alone.

</comment></comment><comment><USER7> Terrible article. What the hell is a "secular zealot"? And why is proofreading considered something no one has time to do anymore? Hint: Rationale ≠ rational; you're missing the word "century," and no one in the world uses this supposed "citation style."

<comment><AUTHOR> Secular zealots: <http://en.wikipedia.org/wiki/Communist_party>

<comment><USER7> Are you kidding me? Socialism is NOT secularism!

 _Edit_ I'm objecting to the article pretending that secular zealotry is a _thing_ like socialist zealotry or religious zealotry. Secularism is never itself a cause for zealotry. And the article even implies those who are passionate about secularism despise individuality. Absurd.

<comment><AUTHOR> Correct. No one said that it was.

My link was to the _communist_ party which is an avowed secular organization. Unlike a group like the Christian Socialists or the Nazi party.

I used them as an example of secular zealots because that particular movement killed more people than anyone else in the 20th century. And has religion pretty evenly matched for zealots.

Just so you understand where I'm coming from, I'm an atheist (a very secular position).

</comment></comment></comment></comment><comment><USER8> The article that was posted before was bs. Thanks for coming up with a rebuttal.

</comment><comment><USER9> Aliens wouldn't invade Earth for resources, because they can get far more, for less effort, by mining the asteroid belt, the Kuiper cloud, the Oort cloud, the gas giant systems etc etc. Schlepping down the Earth gravity well for a tiny fraction of the minerals on a piddly rock is not worth the bother.

</comment><comment><USER10> "we still have value we can bring to a superior civilization. That value may be in providing services, cheap labor or producing reality television."

... or we may just have really delicious brain stems.

<comment><AUTHOR> True. My biggest fear is that they make an alien version of the documentary The Cove about what happened to earthlings...

</comment></comment><comment><USER11> What's the comparative advantage between a human and a hog? The same relation may very well obtain between a superintelligence and a human.</comment>


Automated buses are now running in cities in Finland - <AUTHOR> https://www.youtube.com/watch?v=2FzAE9EPCq0 <comment><USER2> Pretty neat, but the video was needlessly overly dramaticized.</comment>


Yes, a BBS Still Exists - <AUTHOR> Apologies; I've never posted here before, so it's possible (probable?) I'm "doing it wrong."  Anyway, I saw in this thread (https://news.ycombinator.com/item?id=20012977) that people were wondering if BBSes still existed.  Well, what was at one time one of the largest ever -- ISCA BBS (Iowa Student Computer Association), with 100K active users and a thousand+ on at any given time -- does still exist, and is even active.  Granted, the numbers have dropped several orders of magnitude since the heyday in the early 90's, and we are no longer under the aegis of UIowa, but there are perhaps 100 active users with plenty of discussions on technology, politics, and how old we all are (since most of us have been on for 25+ years, it comes with the territory).  Feel free to drop by: telnet://iscabbs.com  I'm a sysop, and will endeavor to validate accounts quickly.  We <i>do</i> ask for valid e-mail addresses as part of the sign-up, but other than that, I consider most of the personal info as optional; certainly don't feel compelled to put in your phone number, though you can opt to hide whatever identifying info you like. adsfad902##@CARRIER LOST <comment><USER2> "Granted"?</comment>


Design Patterns - <AUTHOR> http://sourcemaking.com/design_patterns

<comment><USER2> Nice summary of design patterns. Having a design pattern book on hand is a wise choice for any programmer.

Personally, I use 'Design Patterns: Elements of Reusable Object-Oriented Software.' However, Wikipedia or this website are fine.

Can anyone comment on sourcemaking.com's 'Design Patterns - Simply'?</comment>


Phantom Auto will drive your autonomous car if it gets confused - <AUTHOR> https://www.engadget.com/2018/04/05/phantom-auto-will-drive-your-autonomous-car-if-it-gets-confused/ <comment><AUTHOR> seems like a good idea but not sure how legal disputes would be resolved. Remote driver takes full responsibility?</comment>


Wooclap - An online voting system, becomes free for K-12 schools - <AUTHOR> In an effort to make learning more efficient and enjoyable, Wooclap, the Belgian EdTech platform, that offers an audience response system using smartphones, will become free for K-12 schools to use, starting this September.
Since its foundation in 2015, Wooclap has helped pull education into the digital age by using smartphones for educational purposes, and with more than 40 000 teachers using the platform worldwide, the movement is picking up speed. By asking students to use their tools to ask and answer questions, the platform tries to direct their attention away from distractions, and towards the material they are being taught.
https://www.youtube.com/watch?v=pZ-3wq4LLUk <comment><AUTHOR> Wooclap website : [https://www.wooclap.com](https://www.wooclap.com)</comment>


AWDWR 4th Ed. (covering Rails 3 with Ruby 1.9) is in beta - <AUTHOR> http://pragprog.com/titles/rails4/agile-web-development-with-rails-4th-edition

<comment><USER2> This book blew my mind back in 2006. I have purchased every version since. Great book.

</comment><comment><USER3> Can someone provide feedback on this release as to if it "includes rails 3" coverage or is "totally focused on rails 3". I would prefer the later; a book that doesn't take into account migration or trying to explain 2 vs. 3.

<comment><USER4> It looks like it specifically focuses on Rails 3. The requirements in Chapter 1 state:

"Ruby on Rails. This beta book was written using Rails version 3 (specifically Rails 3.0.0.beta3 at the current time)."

<comment><USER3> cool. can't wait to see more reviews and see this book evolve out of beta. I used their original release to learn rails and was happy with the results.

I've been on merb for the past 2 years, basically boycotting rails. It looks like I can stop the boycott for new projects in a few months as things smooth out.

<comment><USER4> If you haven't done it before, I highly recommend signing up for the beta book program. The pragprogs really do a nice job with the beta PDFs and have a great system for downloading new versions.</comment></comment></comment></comment>


Drone Racing League – Racing Through an Empty Miami Dolphins Stadium - <AUTHOR> http://qz.com/602230/theres-now-a-drone-racing-league-that-feels-like-pod-racing-from-star-wars/ <comment><AUTHOR> I can certainly see collaboration between Major League Gaming and the Drone Racing League for large convention events.

I would like to think about how Drone Racing League can advance the realm of drones (abstractly: control of, precision of, and communication with remote robots) much like Formula One has impacted consumer road cars: [https://www.quora.com/Which-innovations-from-from- Formula-1-...](https://www.quora.com/Which-innovations-from-from- Formula-1-have-found-their-way-to-road-cars)</comment>