Unexpected Consequences of Self-Driving Cars - <AUTHOR> http://rodneybrooks.com/unexpected-consequences-of-self-driving-cars/ <comment><USER2> Whenever people jump up enthusiastically about autonomous cars being right around the corner, I remember taking a cab in Lima, Peru, in the middle of some horrendously chaotic traffic, where drivers were navigating with little regard for lanes, negotiation for merging is done eye-to-eye, and impatient pedestrians would throw themselves into the street, tired of waiting for minutes to cross and trusting that the driver ahead wasn't suffering from some murderous rage that day.

I also remember run-down suburbs where massive potholes and ditches make navigations of certain streets a puzzle by itself, compounded by garbage trucks ahead just doing their thing, improperly placed signage ahead, and those badly-designed intersections where you can totally count on drivers misjudging distances.

As the designers move away from the relatively trivial confines of well- maintained urban spaces and into different countries and cultures, I seriously question their ability to keep things reasonable for the rest of the human drivers. So far nothing in the near-future horizons of this technology indicates that the software would be able to navigate in many of these adverse situations without incurring huge time penalties or causing unacceptable delays.

I really do think that a lot of the hype happens to be because certain actors (Uber comes to mind as the most significant) have basically placed all their bets in these edge cases being small enough that a small number of human drivers should suffice to get around them. I remain skeptical.

<comment><USER3> Why is the situation in Peru at _all_ relevant? I too have been to lots of places where self-driving cars would have a ridiculously hard time.

Those places are also very far from the cutting edge of technology.

Even if self-driving cars are confined to US highways, cities, and suburbs they have terrific potential. The future doesn't have to be evenly distributed to arrive on time.

Seriously, I don't even understand you argument. Why would the existence of challenging backwaters in Peru prevent the development and deployment of self- driving cars in the US?

<comment><USER4> Because there are 1st world countries where the situation is not that different? Poland for example, actual road: [http://i1.ytimg.com/vi/FESuhya2Ig0/hqdefault.jpg](http://i1.ytimg.com/vi/FESuhya2Ig0/hqdefault.jpg)

Signage is absolutely atrocious, there's too many signs, some of them wrong, some of the rules are implied(speed limit ends at any intersection, but if a road is going to a private property, then it's not an intersection, so good luck knowing where a speed limit ends), people drive like crazy, there's loads of unpaved roads.....and yet a person from a very rich western country(say UK or Germany) can drive over there in few hours driving time.

Every time someone makes an argument for self driving cars, I keep thinking if they would work back home - the answer is, they wouldn't.

<comment><USER5> I would buy a self-driving car (even if it only works on normal roads and refuses to drive anywhere else) in a heartbeat. Can't drive some road in Poland? I'll manage. But if it takes the driving out of my daily commute I would pay good money for it.

On a separate note, try replacing "self-driving cars / normal cars" with "cars / carriages and horses" in such discussions. It make many answers obvious. (Hint: I am sure there were people who pointed out that the cars couldn't drive over narrow winding paths where horses ruled)

<comment><USER6> How is the self driving car going to know it can't drive on that road? I imagine the argument is that the self driving car won't notice that the signs don't make sense (like a human would) and causes an accident.

<comment><USER7> That seems like one of the easiest problems, much easier than actually navigating a well-organized road system like in the USA. If the car can follow a lane then it can certainly know when it detects no discernible lane. If the car can avoid obstacles like a pedestrian or a car crossing its lane, then it can certainly know when there is a chaotic mess of obstacles crossing its lane.

</comment></comment></comment></comment></comment></comment><comment><USER8> I thought it was a very good article, but disliked the comparison to the sad state of US trains.

The author knew he was being a little disingenuous with his comparisons to the sad state of US infrastructure, which is why he was careful to preface every reference to poorly automated train systems with the US. There are a number of automated systems worldwide that work pretty well. The Yurikamome was the first line that came to mind. Its not an extremely packed line, but having safety systems similar, like door gates, works very well. Automating a more used line would of course be more difficult, but not impossible. Aggressive door closing seems to work pretty well in taming crowds. It might take an education period in the US, but once people realize holding a door won't allow you on the train and that it will only allow you to remove a trapped limb, people will be less inclined to do it.

<comment><USER9> Haha, yeah. Entirely agreed.

There is, within 15 miles of the continental United States, a Level 4 automated train, that has been running for over 30 years, with 50 miles of track, and 300,000 passengers per day. And it works great. It's off-the-shelf technology backed by a moderately sizable 70-year-old company, so you can just go out and order a system like this yourself next year, if you want to (and you have a few billion dollars).

That doesn't solve any of the self-driving car problems in the article, so it's totally a side point, but Level 4 trains are a solved problem, for over 30 years.

</comment></comment><comment><USER10> I have to disagree with Social outcasts; A study this year concluded that driver pedestrian interactions are at an all time low; likely because of both parties using cell phones.

As the article states, I often enter cross walks to test if a car is going to slow down; and they often don't. Similarly, I recently had a near miss when a pedestrian ran across the street when I had a green light (late at night too).

(in Atlanta) Currently, cars are 1st class , Pedestrians are 2nd class, and when I bicycle, I'm often 3rd class.

Self Driving cars, I hope, will make this more equal because I'm tired of almost getting hit when I walk across the street in my residential part of town and a "showboat" enjoys flooring it (going 2x the speed limit) down my street for the 1 block between traffic lights.

<comment> nommm-nommm Twice now in the last year I've waited at intersections for the walk signal and when it came on I almost got run over and got beeped and screamed profanities at by drivers taking a right. I guess now drivers believe that they have the right to the road 100% of the time and nobody should ever be allowed to cross, even at crosswalks during the prescribed time for crossing.

Drivers have become increasingly hostile in the last several years.

</comment></comment><comment><USER11> The author is wrong, the manufacturers are already considering the problem of communicating with pedestrians.

Mercedes: [http://www.electronics-eetimes.com/news/mercedes-benz- self-d...](http://www.electronics-eetimes.com/news/mercedes-benz-self-driving- car-communicates-leds)

Google: [http://time.com/4129247/google-self-driving-cars- patent/](http://time.com/4129247/google-self-driving-cars-patent/)

And this article in popular science: [http://www.popsci.com/people-want-to- interact-even-with-an-a...](http://www.popsci.com/people-want-to-interact- even-with-an-autonomous-car)

<comment><USER12> Do pedestrians now have to learn the UIs of different brands of cars in order to not be overrun?

</comment></comment><comment><USER13> Many good points in that article. Probably self driving cars are finally going to force us to review and to fix in many occasions the way we are using cars today. Especially the ways which are already broken today. A good example is the competition for the parking in front of a Starbucks or other similar shops. The common usage pattern is still crafted by how traffic was decades ago, and you could still just drive to a location and leave your car. But that depended on there being fewer cars than parking lots. In most locations, this is a thing long past - so I would consider the current situation already as broken. Self driving cars would make it worse and such could force us to finally find solutions for these situations.

There are two obvious ways of fixing that situation. The first, recognize that trying to reach a location by individual cars cannot work out and ban private cars. Many European Cities have large pedestrian zones where private cars are locked out of whole streets in city centers.

The other option would be, and fortunately self driving cars would be part of the solution, to create enough parking spaces. Parking in the streets would still be disallowed, creating large pickup areas instead. So the road sides would be free of parking cars, enabling drivers to stop at any desired spot. As soon as the passengers left the car, the car would leave immediately for a nearby garage. This would of course depend on the creation of the necessary amount of parking garages.

<comment><USER14> Banning private cards, I believe, will be unnecessary. I know free market is often folly but in this case, I believe, the advantages of just tapping in the app to call a driverless cab will be huge. In almost all cases it must be cheaper than owning a car which doesn't work most of the time just sits there.

<comment><USER13> I was not speaking of a total ban of private cars, just banning cars from certain streets. Converting streets to pedestrian zones is quite successful in the center of large cities, where the distances are short and the traffic density higher than individual transport could deliver.

</comment></comment></comment><comment><USER15> Don't forget that once we get to level 4, every time there's rain or snow, there might even be more loss of life as everyone gets to learn how to drive again in bad weather.

</comment><comment><USER16> This is a great article that covers not only edge cases, but almost subliminal behavior that people perform almost every day.

To me, it is clear that our behavior will change. As an American in Amsterdam a few years ago, I was horrified to learn that at some places pedestrians can just walk out in front of you, and you have to stop. After a few days of observing this (as a passenger, thankfully), I noticed that you could tell the tourists - the natives would walk into the street without looking, knowing the drivers would stop. Tourists would hesitate, looking to the driver for feedback. Oddly (to me, as an American), I found that the natives had it right, and that blind faith made things smoother. The tourists, in checking for driver feedback before waling into a street, would actually slow things down more than necessary.

This is but one anecdote of thousands, but it shows how the expected behavior of a person from one place does not necessarily translate to another place. I would extend that same thinking to the future, in that or future will be a behavior change from what we do today.

I'm sure it will come slowly (although occasionally startlingly), and there will be new signs, new laws, and new behaviors. But for me, the best comparison is to when we introduced cars into the streets that had previously been owned by horses and carriages. a bit of chaos, but fairly rapid adoption (within a decade). It wasn't uniform, and it was messy, and some places lagged the modern world by decades. But it came, we adjusted, and now we can't even remember what that previous world was like.

What's that quote about the future not being evenly distributed? I think it applies here perfectly.

</comment><comment><USER17> Weird, but somewhat relevant question (given that self driving capabilities combined with buses can potentially disrupt public transportation in urban areas): why do we even allow anything that's not a bus (say, 10+ passenger) or industrial vehicle on the road?

The downsides of such a thing seem small.

1\. There would be less traffic

2\. The speed limit could be raised

3\. Due to higher occupancy, more people could go to places, faster.

4\. Cheaper per person (maybe) than most other forms of public transportation

5\. High density areas can have fleets of buses go there, express. This would have only a little overhead compared to driving your own vehicle, yet would be substantially cheaper.

<comment><USER12> Depending on destination, you might need to change buses several times, which is of course inconvenient.

OTOH, booking a busride far in advance might mitigate this. Also different price-levels could mitigate this to some extent. I'm not sure if it would be sufficient, though.

</comment></comment><comment><USER18> If and when _all_ cars are computer-controlled another consequence may be that children will be free to roam about. This assumes that those same cars are built to be incapable of hitting pedestrians. Is this possible?

<comment><USER19> Well, this sort of behavior has (presumably) already happened [1], but this also gets to the crux of "unintended consequences". Will we see kids deliberately walking in the street, knowing full well they aren't going to get hit and extorting drivers to let them pass?

1 - [https://electrek.co/2016/07/21/tesla-autopilot-saved-life- pr...](https://electrek.co/2016/07/21/tesla-autopilot-saved-life-prevented- serious-injury-pedestrian-dc/)

<comment><USER18> Yes I'm sure this sort of thing will happen however I imagine the overall social consequences would be beneficial. Children are highly confined at present and the ability to roam and talk to different people, walk to school, etc, has been lost. Largely for fear of their being run over by traffic.

<comment><USER20> _Largely for fear of their being run over by traffic._

Are you sure? I get the feeling that good old Stranger Danger is still alive and well, and automated cars won't in any way change that.

</comment></comment></comment></comment><comment><USER21> I expect as far as the social aspect of driverless cars making their way through our neighbourhoods goes, eventually most humans will just come to see them as an odd type of animal. Like a horse. It probably wouldn't hurt to give them some active animal-like cosmetic features that help nearby humans anticipate what they are "thinking".

Delightful symmetry there, no? The first great task of mechanized transport was getting rid of the horse aspects, the second was building them back in.

<comment><USER12> Nice thought, but as the article states, car manufacturers do not want their cars to be recognizable as autonomous, because others might take advantage.

</comment></comment><comment> tony-allan If the advent of self driving cars corresponds with reduced private ownership then cars will not need to wait and our children just need to hop into the next free car and their phone or smart school bag will contain their home address. For adults, cars will not need to hand around near venues because we will just get into the next available car.

I agree that the transition will be messy. Perhaps we will need to redesign our local communities a bit to help. More off street parking for example.

</comment><comment><USER22> _> Since there are no current ways that driverless cars can give social signals to people, beyond inching forward to indicate that they want to go, how will they indicate to a person that they have seen them and it safe to cross in front of the car at a stop sign?_

There is no reason that autonomous vehicles can't give other rudimentary social signals in ways similar to drivers that can't see each other by using their headlights, turn signals, emitting short 'beeps' from their horn, and so on.

For that matter, autonomous vehicles can be given greater range of expression by adding a 100^2 pixel RGB LED display or similar behind the windshield or on the hood that can display emojis, or by actually giving them the ability to speak (KITT-style): [https://www.youtube.com/watch?v=i-UqF5ElduY](https://www.youtube.com/watch?v=i-UqF5ElduY)

<comment><USER12> Eventually perhaps. But until then, there is a very large uncanny valley to bridge.

</comment></comment><comment><USER23> The comparison to level 4 or 5 trains doesn't make sense to me. For a train you've got millions of dollars worth of hardware and track so the driver is only a tiny component in the overall cost. For trucks and taxis the driver is the biggest costs. The incentives for autonomous cars are much higher than autonomous trains.

</comment><comment><USER24> What about that part where all of our computers are riddled with zero-days, and wide open to shadowy government organizations with massive technical budgets, and the part where we weren't 100% cool with that.

And like, what about the part where we were worried about nefarious anonymous super hackers cyber-attacking the electric grid, and the gas grid, and other critical infrastructure, and we were worried about that sort of thing spiraling out of control into a federal emergency, because heat and potable water were taken down in the middle of winter, when a utility worker's laptop was spearphish hacked, because internet of things? I guess that can't happen anymore?

So now, right in the middle of this, the cars get to drive wherever they want because computers, and nothing can go wrong. One has nothing to do with the other, and we'll all be safe and totally okay, right?

</comment><comment><USER25> One thing about self-driving cars that I'm not looking forward to is the proliferation of zero-occupant vehicles on the roads.

<comment><USER26> Remotely connected AI with ~1MJ of KE? No thanks.

</comment></comment><comment><USER27> Having the description of abbreviations all the way at the bottom of the article so that one has to scroll a mile to read what they mean is a bit annoying. Instead of:

>When the first IMPs^1 for the fledgling ARPANET were being built starting in 1969 at BBN^2 in Cambridge, MA, I think it safe to say that no one foresaw the devastating impact that the networking technology being developed would have on journalism thirty to fifty years later.

>[A million words]

>^1 Interface Message Processors. Today they would be referred to as Internet protocol routers.

>^2 Bolt, Beranek and Newman in Cambridge, MA, a company that was always known as BBN. As distinct from BBN, the Buckingham Browne and Nichols school in Cambridge, MA — no doubt many employees of BBN sent their kids to school at BBN.

I would have preferred for at least the first of these two to be baked into the text itself.

<comment><USER28> While I agree to some extent, I find it funny that I've somehow been around long enough to not realize people needed your example acronyms and names to be defined. Including the reference in the BBN definition to the other bbn :) I guess that's what happens when you live it first hand.

</comment></comment><comment><USER29> What about privacy?

There could be some serious privacy issues introduced by self-driving cars if they take off.

Cameras and microphones patrolling neighborhoods of the world, constantly feeding data into "the cloud" with absolutely no accountability?

Just no!

</comment><comment><USER30> I had to stop reading because the blog poster's level of thinking is really superficial.

If you're going to think completely autonomous self-driving cars, why the hell would you bother with things like parking? Why would I even bother "owning" a car? What the more reasonable approach is time-sharing of multiple vehicles, like Uber.

So instead of worrying about parking, you order a car, and it picks you up, and then you get dropped off. It drives off and services other customers. Then, when it comes time to get driven home, you order another car that comes and picks you up. You only pay for the car while it's driving you, not while it's sitting there doing nothing.

Or, if you did own the car, when you are not using it, it could go off and service other people and earn you money, and then return to pick you up.

And why would you go to Starbucks to pick up your own coffee? Why not send a self-driving car through the special self-driving car drivethru to pick up the coffee and return it to you? It could wireless transmit the order and payment details for you, and have a special slot for the coffee or food order.

Seriously, the article is really superficial thinking when it comes to self- driving cars.

<comment><USER31> I keep hearing this rhetoric and one could say that this superficial thinking because it's very out of line with how people all over the world use their cars today.

I don't feel comfortable renting out my car to strangers while it's not being used. I'm afraid of it getting dirty, them not operating it properly and causing mechanical damage that won't be seen for weeks.

On the other hand, having an "on demand" car service as my only option would increase my transportation costs. My car is paid off, insurance is almost free and gas is dirt cheap in the US it might as well be free. If I had to Uber around with self driving cars my costs of getting around would skyrocket.

Are you suggesting having your own car as well? That's the only way I could see this working.

<comment><USER10> > On the other hand, having an "on demand" car service as my only option would > increase my transportation costs.

I've done some of the math on this; here are some very conservative figures.

\- $50/mo for reasonable high deductible coverage.

\- $100/mo gas

\- $100/mo parking at the office

\- $x /mo parking at home (not realized in my case)

\- $80mo misc expenses (tires, wiper, diy synthetic oil change, taxes, car wash)

$330/mo pays for a lot of $5 uber pool trips.

And while _our_ cars are paid of; The average American does not and is increasingly spending more. This adds an additional $300 to the amount I can spend on trips.

This says nothing of the current liability of driving a car. Where an accident with a > $50k car with over $100k of medical costs creates a gap in coverage for the average American.

<comment><USER31> I don't commute to work by car so for my occasional use of getting groceries, going out to eat, getting a haircut or doing the occasional shopping, I don't spend anywhere near that much.

\- $40 for insurance

\- $30 gas

\- $5 (Maintenance)

$75/month on my end. If I were to UberPOOL everywhere, besides the fact that it would be inconvenient because it would take longer and I would have to share a ride, it would cost more.

<comment> nommm-nommm $5 in maintenance sounds low. $5 a month in maintenance is $600 over 10 years, a new set of tires would cost around $600 and you should replace your tires before 10 years no matter the tread depth(1). I believe you are probably doing more maintenance to your car than new tires every 10years.

You also can't just totally discount the initial cost of the vehicle like that as "free."

(1) [https://www.edmunds.com/car-care/how-old-and-dangerous- are-y...](https://www.edmunds.com/car-care/how-old-and-dangerous-are-your- tires.html)

</comment></comment></comment></comment></comment><comment><USER32> This is very interesting to read from a UK perspective. We don't have the concept of jaywalking, except for on motorways (I was actually shocked when an american friend explained it at uni, how the hell does anyone get anywhere, then I realised they mostly drive). So these social interactions don't just occur in certain areas, they're widespread across most roads and pedestrians technically have right of way over cars. Could autonomous vehicles cause the end of walking places?

</comment><comment><USER33> At some point, we will debate against manual driver cars. As a petrol-head, I love driving and riding but that is the truth. the sooner we get rid of manual-drived cars, the faster we switch to self driving cars because the existence of manual cars are a big problem for self driving cars and they limit the potential the self-driving cars can achieve. We should at least do that in some cities. Imagine a town with no traffic lights and cars move in a harmony and scary precision in traffic.

<comment> yjftsjthsd-h Imagine a power outage. Imagine solar flares. Imagine a town with no backup plan for complex systems suddenly encountering events with 1 in a million odds.

</comment></comment><comment><USER34> One aspect that is not covered is armed conflict (or terrorism). Imagine what would happen if enemy take over a fleet of autonomous cars, be it through hacking or by physical attack on a control center.

Another thing: imagine robbery with autonomous robots and cars.

I am waiting for Hollywood to catch up on these ideas - this would be very cinematic.

<comment><USER35> Does the car need to be completely autonomous for that scenario to be a huge issue. Isn't completely controllable through on board computer bad enough? Someone could remote control and thus weaponize such a car already, could they not?

<comment><USER34> Yeah - indeed, remote control would be enough. There is a problem with latencies though - so you need at least some autonomy in the car. And then there is also the thing that if it is remotely controlled - then it is easy to stop it - just jam the communication link.

<comment><USER26> Eliminating the passenger lets you make the tool more expendable. The attacker can control more than one and afford to lose a few.

</comment></comment></comment></comment><comment><USER36> Most of #2 sounds fascinating and not anti-social to me at all.

Except, very few parents are gonna send a car and forgo helicoptering over their kids. Isn't having kid unattended in car illegal most places?

</comment><comment><USER37> > taking away much of the rest of advertising revenue from print, radio, and > TV

TV advertising revenue continues to grow, and is still larger than online ad revenue.

</comment><comment><USER38> Bait title for blog hits. These aren't unexpected consequences, they are some of the specific benefits. It adds nothing to the discussion as it's neither comprehensive nor insightful. Why does the author think autonomous cars are a net good? Thanks, he went on and on about a few things he wants to pretend are "unexpected". SMH

</comment><comment><USER39> I think that driving in places such as India with little traffic rules might be easier for an AI because the traffic flow is self-organized. There might not be any rules, but that is not relevant as we are not talking about expert rule based systems. If the AI car sees a cow it'll just slow down and move to the side to overtake.

</comment><comment><USER40> I live in this area, completely agree, author is spot on.

</comment><comment><USER41> Social mobility is a major problem in democracy [http://www.bbc.com/news/uk- politics-24936416](http://www.bbc.com/news/uk-politics-24936416)</comment>


Google's Rules of Thumb for HTTP/2 Push - <AUTHOR> https://docs.google.com/document/d/1K0NykTXBbbbTlv60t5MyJvXjqKGsCVNYHyLEXIxYMv0/edit <comment><USER2> I appreciate in-depth analysis, the numbers, and the actual case studies, and resulting recommendations. This is a very good resource that puts actual numbers to the issue.

In my opinion, this reveals that HTTP/2 Server Push is essentially one huge microoptimization, proper use of which requires even more effort from both the server (and the client):

[1] watch and aggressively respond to network utilization

[2] construct a dependency graph of resources (presumably by actually parsing the HTML on server-side, or beforehand out-of-band and store it some other place)

[3] have the client communicate the state of its cache! [ref-1]

[4] have custom, conditional logic for cookies

\----

[ref-1] [https://tools.ietf.org/html/draft-ietf-httpbis-cache- digest-...](https://tools.ietf.org/html/draft-ietf-httpbis-cache-digest-00)

</comment><comment><USER3> Discussion: [https://news.ycombinator.com/item?id=12224258](https://news.ycombinator.com/item?id=12224258)</comment>


This is Not Normal - <AUTHOR> https://veni.dev/this-is-not-normal/ <comment><USER2> "I am writing this to let you all know that everyone's experience during this pandemic is not the same. I do not have all this extra time that folks keep talking about."

Thank you for writing this. At times, not intentionally, we surround ourselves and follow people on social media who have very similar lives to us that we don't hear different views.

It is a good reminder to listen and empathize (always, but more so now) because not everyone has lot of time now that they are working from home. Not everyone can be as productive as before at work, let alone say, read books or build a side project.</comment>


Unlearn rotation matrices as rotations - <AUTHOR> https://kodkodgames.gitlab.io/rotation_matrices/ <comment><USER2> "Don't think of them as rotations, think of them as a unit vectors of a new coordinate systems."

This makes it clear to me that many people have been very poorly served by their linear algebra courses if that is not obvious.

<comment><USER3> I'm one of those people. I really struggled with my undergrad linear algebra courses. It was taught in a very abstract way with no suggestion ever that any of this had useful applications. I passed (barely) and was glad to be free of it.

Years later when I got into graphics programming I found myself dealing with linear algebra concepts but this time it made much more sense to me. Being able to apply the ideas to real problems with visual solutions made all the difference.

<comment><USER4> I went through Stephen Boyd's "Introduction to Linear Dynamical Systems", and at some point he said something like "Eigen vectors are just the directions linear systems grow in", and bam!, many years of linear algebra came rushing back and everything made sense.

<comment><USER2> I had a very similar moment when I was thinking about why the determinants of all (non-identity) projections are 0 and the fact that the determinant is the product of the eigenvalues.

<comment><USER5> > the determinant is the product of the eigenvalues.

Ohhhhh, _now_ I get determinants. I just thought they were some easy way to classify a matrix, not that they had any special meaning. Not that they were also all the eigenvalues multiplied too.

<comment><USER6> That's one concrete way to view determinants, but it's not _the_ way to think about them.

Determinants are kind of abstract and even inelegant. This is because it's defined in terms of coordinates rather than abstractly. A coordinate free definition exists, but it's very complicated.

Ideally they would not be taught at all, but it's useful for doing exam problems. Cramer's rule in particular is quite useful when solving simultaneous equations in engineering under exam conditions, for example. Even in computer/engineering applications, row reduction/diagonal normal form type are used instead.

Determinants are a way to get a scalar number out of a matrix. You have linear forms, bilinear forms, and multilinear forms, the latter of which determinants fall under.

There are certain properties you would like the determinant to satisfy, such as det(AB) = det(A) det(B), so that the determinant can give you an idea of whether a matrix is invertible. Eventually you work out that a determinant _has to be_ a multilinear form with certain properties (alternating, skew symmetric).

Again this is all very complex and messy. Initially 'linear algebra' was just the study of determinants, because people thought of math in terms of solving equations. Linear algebra, as it's known today, came later.

Bilinear forms turn up all the time, so ideally you would first learn bilinear forms, then learn the properties a bilinear form can have (e.g. alternating, skew symmetry, etc), and then learn determinants in that context.

<comment><USER7> > Determinants are kind of abstract and even inelegant.

No they really aren't. Determinants represent the change in volume in a transformation.

> Ideally [determinants] would not be taught at all, but it's useful for doing > exam problems.

This is outright ignorant and wrong. Determinants are fundamental to a myriad of central concepts in calculus and also in engineering fields. For instance, volume integrals or any integral over a parametrization rely on determinants.

<comment><USER6> I did degrees in both math and engineering, please give me the benefit of the doubt that I'm not making a 1st year university level mistake.

In the specific examples you give, 2-forms could be introduced instead to yield the final formula for the Jacobian. I don't think this is an overkill, because it's possible to use 2-forms without precisely proving the theorems etc about them. This is more convenient for math/physics people, and engineers care more about the final formula than about how exactly it was derived.

As another comment here pointed to, the idea that linear algebra is better off without determinants was popularized by Axler - I'm not making this opinion up out of nowhere.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> > Rotation matrices just describe the unit vectors of a new coordinate system

More generally, _every_ matrix describes _how_ a change of coordinate system should happen. For any m x n (m rows, n columns) matrix, each of the the n column vectors represent how the current coordinate system (which may or may not be unit vectors) should be represented in the new coordinate system (for a left multiplied matrix).

Whenever a matrix's determinant is zero, it means that you squashed some dimensions. As you can imagine, when m is not equal to n, there will always be dimension squashing. Even when they are equal, that can happen. If you take a 3 x 3 matrix and it transforms _all_ the 3-D vectors into only planes (which are 2-D objects), the determinant will be zero. This would be stated as having a rank of 2. More simply, you'd say the "volume" of the transform to be 0 (because planes have zero volume).

EDIT: Make sure to read important clarifications by JadeNB below.

<comment><USER9> > Whenever a matrix's determinant is zero, it means that you squashed some > dimensions. As you can imagine, when m is not equal to n, there will always > be dimension squashing.

Although these two sentences are correct individually, it may be worth it to emphasise that they should not be read together: the determinant is defined only for _square_ matrices. (One can do something like computing the determinant of det(A^{adjoint}A) if you want a general numerical invariant that behaves as you like—and then we're getting in the neighbourhood of the SVD).

> If you take a 3 x 3 matrix and it transforms all the 3-D vectors into only > planes (which are 2-D objects), the determinant will be zero.

Although your meaning seems clear, I think you may have misspoken slightly. Of course 3D vectors are transformed by a 3 x 3 matrix into _vectors_ , not planes. To me, what I think you mean would read better as "If you take a 3 x 3 matrix and there is a plane such that all 3D vectors are transformed into that plane, then …", or, perhaps even better, "… such that the transforms of all 3D vectors lie in that plane …".

<comment><USER8> Those are very important points. I've edited the parent to point out this clarifying comment.

<comment><USER9> Thanks! I should also have mentioned that, assuming we've got an m x n matrix acting by multiplying vectors fed to it on the right, dimension squashing is guaranteed only if n is less than m, not whenever they are unequal. (I guess one could argue that, in the case where n is greater than m, dimension squashing happens if you feed in vectors on the left.)

<comment><USER8> Yes, I did mean dimension squashing in either direction - left or right.

</comment></comment></comment></comment></comment><comment><USER10> > The first column of the rotation matrix is the new x-axis expressed in the > old coordinate system, the second column is the y-axis and so on. An > identity matrix would yield in no rotation since all unit vectors would be > the same as the previous coordinate system.

It's a shame that this isn't made more clear in most tutorials and classes. The idea of axis application order really does make things more confusing than is needed.

<comment><USER11> I remember that in my freshman's year, my linear algebra teacher explained that _every_ matrix (i.e., not only rotation matrices) has this property: each column is the result of the operation on each basis element in the old coordinate system. This is true even for rectangular matrices.

<comment><USER12> Once you get this, you can start building matrices for any (finite dimensional) 'vector space' not just the standard 'vectors as a list of numbers'.

All you need to do is to pick a basis for your vector space, and you can start to represent linear transformations as matrices w.r.t. that basis. Even cooler is when you let go of specific basis choices, and start talking about properties of linear transformations that do not depend on a choice of basis. Things like a determinant, eigenvalues, etc.

</comment></comment></comment><comment><USER13> If we relax the restriction that the columns of the 3x3 transformation matrix must be unit vectors, we also get the ability to apply scaling and shear transformations. In solid mechanics, this is called the F tensor, and is used to describe deformation of materials [1].

There is also an augmented 4x4 form if translation is needed as well:

      | Q ...  Δx |         | vx |
      | .      Δy |         | vy |
      | .      Δz |   dot   | vz |   = new vector
      | 0 0 0  1  |         | 1  |

where "Q" is the 3 × 3 transformation matrix (e.g., rotation matrix) that is the subject of the OP, and [vx, vy, vz, 1] is the augmented form of a vector "v" = [vx, vy, vz] that is being transformed.

The augmented form is especially useful for transforming voxel indices in an 3D image array to spatial coordinates, such as for MRI or CT image data [2]. It is helpful if the index coordinate system has its origin at zero (zero- indexed arrays), like a normal coordinate system.

Finally, if we have many [x, y, z, 1] data points that each have an old and a new position, we can compute the overall best-fit transformation from the old to new positions with the least-squares solution to

      A x = b

where "A" is the (unknown) augmented matrix representing the transformation, "x" is a 4 × n array storing the points' old augmented-form positions, and "b" is a 4 × n array storing the points' new augmented-form positions. If we allow the points to have arbitrary dimension, without any particular spatial interpretation, we get least squares curve fitting and the foundation of machine learning.

[1] [http://homepages.engineering.auckland.ac.nz/~pkel015/SolidMe...](http://homepages.engineering.auckland.ac.nz/~pkel015/SolidMechanicsBooks/Part_III/Chapter_2_Kinematics/Kinematics_of_CM_02_Deformation_Strain.pdf)

[2] [https://nifti.nimh.nih.gov/nifti-1/documentation/nifti1field...](https://nifti.nimh.nih.gov/nifti-1/documentation/nifti1fields/nifti1fields_pages/qsform.html)

<comment><USER14> What you describe is very standard in 3D graphics, and it's alluded to in the article by the question at the end. You can even use the last row of the matrix as scaling factors (you'll have to re-normalize the output vector).

From a mathematical standpoint, this is now a projective vector space.

Some references:

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

[https://www.quora.com/Why-does-OpenGL-use-4D-matrices-for- ev...](https://www.quora.com/Why-does-OpenGL-use-4D-matrices-for-everything)

[https://guide.handmadehero.org/code/day362/](https://guide.handmadehero.org/code/day362/)

<comment><USER15> Note that projective spaces are not vector spaces. There is no meaningful way of adding vectors nor multiplying by a scalar.

Meaning we have to be very careful about treating our projective transformations as linear maps, as they are, in fact, nothing like that.

Of course people doing graphics often pick a section of the projective space ("last component is 1"), then map that onto R^3 and off they go, sort of ignoring the "planes at infinity" and praying for the best. This is messy but I do not see a better way.

</comment></comment></comment><comment><USER16> I was eight years in to professional videogame dev. When I decided to debug matrices used to generate racing track surfaces by drawing the columns in the game world when I realised they were X/Y/Z axis. I felt so stupid. I jokingly told the other coders around me how stupid I was... turns out we were all stupid.

One old timer laughed in the background and told us how he discovered this on the Amiga a few years before.

</comment><comment><USER17> I learned this concept by watching 3blue1brown's series on Linear Algebra: [https://www.3blue1brown.com/essence-of-linear-algebra- page](https://www.3blue1brown.com/essence-of-linear-algebra-page)

Would highly recommend. I feel like Grant's videos gave me a better understanding of Linear Algebra than the course I took in college.

<comment><USER18> The 3b1b videos are really high quality, but I don't find them particularly useful when learning new material. The fancy animations distract and mesmerize, I slip into a mode of being entertained, becoming mostly a waste of time.

For subjects I've already learned however they can be useful for gaining new visual perspectives.

On the topic of learning rotation matrices / linear algebra in video games, I'd strongly recommend the Handmade Hero youtube channel. Casey explains these subjects at length in multiple videos, using plain chalkboard-style drawings I personally find far less distracting.

<comment><USER19> They give the "feeling of learning", which is worth only a little. They also give the motivation to learn, which is invaluable.

</comment></comment></comment><comment><USER20> Funny. Only some months ago I needed to figure out how to represent unit vectors of (a rotated) coordinate system in another coordinate system. After some days of drawing on the paper I came to the conclusion that actually the rotation vector columns are just that. But found no way to verify that claim in the internet. Thank you for this.

<comment><USER21> That's not only true for rotation matrices. The columns of _any_ matrix are where the unit vectors in the original coordinate system are mapped to when multiplied by the matrix.

<comment><USER2> What are colleges teaching these days if not this??

<comment><USER22> For me I think the difficulty was just reconciling reality with the concept of a coordinate system. I think it was just some abstract concept that I considered to be out of my cognitive reach of understanding. I just had no way to anchor anything being said to me to a concept I had in my head at the time.

I remember this poor teaching fellow where I went to Lehigh University where I studied Mechanical Engineering. He was foreign and had the honor of teaching us Linear Algebra. He must have noticed that none of us had even the slightest damn clue what he was talking about. So, the class before every exam, he would literally just give go over the exam problems nearly verbatim and solve them. I came out of that class with a good grade and not the slightest fucking understanding of Linear Algebra beyond the very superficial algebraic laws of multiplying tensor objects (i.e., scalars (0-D tensor), vectors (1-D tensor), and matrices).

I'd like to thank Grant Sanderson (3Blue1Brown) and Mike Cohen (Udemy Linear Algebra course using Matlab and Python) for teaching me linear algebra. And don't forget Gilbert Strang, of course!! (find his course on MIT OCW) The visualizations of the tensors transforming provided by the first two are what really made Linear Algebra start to click for me. I want to go back to Gilbert Strang's course now that I have a better geometric understanding of what is happening and appreciate all his wisdom on the subject.

<comment><USER2> As a physics major at the time, I think that learning physics in addition to multivar and linear algebra is _so_ handy in terms of providing reference material for intuitions.

Also, learning it as part of a numerical computing stack (like python) where you can experiment and visualize is huge for building intuition.

</comment></comment></comment></comment></comment><comment><USER23> I remember asking in freenode irc channel ##math that why matrix multiplication is defined like that, why not in any other way. I was told that:

>> cuz the composition of linear maps are defined like that.

It took a long time to understand what they meant. Still I see how it is taught to work out mechanically. Brave friends of mine went to the Wikipedia page to come back with more confusion. Wikipedia is a great reference when you know the subject well enough.

[https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Mathemat...](https://en.wikipedia.org/wiki/Wikipedia:WikiProject_Mathematics/Advice_on_using_Wikipedia_for_mathematics_self- study)

<comment><USER24> > Wikipedia is a great reference when you know the subject well enough.

Some math pages on Wikipedia are great. Some are... horrid. A while back (2017?) I couldn't remember the terms in the Taylor expansion of sqrt(x), so I went to Wikipedia. The article was one of the most jumbled mishmashes I'd ever tried to read. But, even though I'm qualified to fix it, I didn't dare wade into Wikipedia politics. The rewrite would have taken a while (it's a long article), but I can't even imagine how long shoving it through would have taken!

</comment></comment><comment><USER25> I've encountered this misunderstanding many times, usually in the context of creating a rotation matrix for a given direction and "up" vector. People look baffled when I replace their elaborate Euler-rotation algorithm with three lines of code:

        z = direction
        x = up.cross(z).normalized()
        y = z.cross(x)
        M = [x, y, z]

<comment><USER26> Could you explain this is more detail?

<comment><USER27> Creates a matrix with one axis in a given direction. Then a second axis at a straight angle to that, based on a reference up axis. The third axis is simply perpendicular to both. Position goes into the last vector of the matrix.

<comment><USER28> How come _y_ is _z.cross(x)_ and not _up_?

Edit: I think it has been answered by others - _up_ is in world-space, and the camera is not necessarily aligned horizontally.

<comment><USER25> Yep, the up vector is not necessarily orthogonal to the direction vector (which is also called "look at" vector in OpenGL [1]). Another approach would be to set

        y = up.reject(direction).normalized()

where

        a.reject(b) = a - b.project(a)

[1] [https://www.khronos.org/registry/OpenGL- Refpages/gl2.1/xhtml...](https://www.khronos.org/registry/OpenGL- Refpages/gl2.1/xhtml/gluLookAt.xml)

</comment></comment></comment></comment></comment><comment><USER29> I want to share my favorite linear algebra textbook (Linear Algebra Done Right by Axler)

[http://linear.axler.net/](http://linear.axler.net/)

It's meant for a second course in linear algebra and the focus is on abstract vector spaces and linear transformations (rather than a table of numbers perspective). It also doesn't use determinants until the last chapter.

<comment><USER15> LADR is probably the best linear algebra book around. It's a bit of a shame that the "marketing" mostly involves the fact that it does not use determinants.

The last edition also contains chapters on stuff like dual spaces and quotient spaces, which are important yet very often missing in other textbooks.

That being said, his reliance on C/R in about half the book could be a problem for people with CS background. Like, what if I want to compute determinants of linear maps which are over Z_2? There are also no chapters on number wrangling (like the gaussian elimination and friends), which is a big plus in my view but possibly a problem for others.

<comment><USER29> I think these are great points. I justify the lack of some of the fundamental concepts like Gaussian elimination to be due to the fact that the book is meant for a second course in linear algebra. My copy has dual and quotient spaces and I think these are important topics to get an introduction to if you're looking to learn functional analysis, topology, etc. Some discussion of finite fields could be interesting. This has prompted me to look up linear algebra over finite fields.

</comment></comment></comment><comment><USER30> It's clearer in 2D. Rotating by angle `a` tilts the x-axis to (cos(a), sin(a)), because that's the very definition of cosine and sine (i.e. the x and y components of angles on the unit circle). The y-axis just flips the components and negates one, because that's what 90° rotations do.

</comment><comment><USER31> This is so important! I spend my life writing EKFs for navigation systems however did not have a good linear algebra education. It was a hard struggle! Now, every time I have a new hire or intern, the first thing that I go over is basic linear algebra and rotations including DCM, Euler angles, quaternions, and so on. I also make sure they understand it graphically such as how you can scale and project vectors using a matrix.

<comment><USER32> Hi, do you mind if I reach out to you? I am working on similiar projects and somehow every filters I tried have some issues.

<comment><USER31> Sure, just send me an email.

</comment></comment></comment><comment><USER33> I thought I knew what rotation matrices were until I read this article. Now I am confused. I used to think I needed a 3x3 matrix to rotate a point (with x,y,z coordinates) in 3 D space. But the article refers to Rx,Ry and Rz EACH of which are a 3x3 matrix.Why are there 3 matrices? To move an x coordinate to a new coordinate system, I only need to displace it among the the existing three axes. So each coordinate only needs a 3x1 vector to displace it . That a makes a single 3x3 matrix.

<comment><USER34> Any number of successive rotations can be represented as a single matrix. Both are right at the same time: an arbitrary rotation (represented by a single matrix) is a combination of 3 rotations about the axes of the reference frame (represented by 3 matrices).

</comment></comment><comment><USER35> I'd say quatenions are a nicer way to represent rotations, but 4x4 matrix can describe any projective transformation in 3d.

</comment><comment><USER36> Two remarks:

1\. > Right handed, z forward through the nose and x through the left ear.

Interesting, in aviation engineering the convention is different: the body frame has x forward (positive rotation around x is right roll), y to the right (... pitch up), z down (... right yaw).

2\. The best reference (reference, not explanation/textbook) for this whole spiel (rotation matrices, Euler angles, quaternions) I've seen is a paper by Diebel, _Representing attitude: Euler angles, unit quaternions, and rotation vectors_

[https://www.astro.rug.nl/software/kapteyn- beta/_downloads/at...](https://www.astro.rug.nl/software/kapteyn- beta/_downloads/attitude.pdf)

(Or maybe I like it because "Diebels Alt" is my favourite local beer... [https://en.wikipedia.org/wiki/Altbier](https://en.wikipedia.org/wiki/Altbier))

</comment><comment><USER37> Speaking of unlearning rotations, has anyone looked at [https://bivector.net](https://bivector.net) ? Some other hacker posted it a while back on another thread and I found it to be really intriguing.

</comment><comment><USER38> This is a great clarification. It's a shame that Wikipedia is such a bad reference for learning maths. I think it is a result of most maths articles being edited by people who just learnt something and therefore don't understand it enough to explain it well, and also want to show off their knowledge rather than actually explain things.

Mathworld is much much better in general.

(Somebody's probably going to reply "Wikipedia is an encyclopaedia not a tutorial".)

<comment><USER39> Wikipedia is great when you already know a math topic and just need to look something up, but is terrible at teaching math. Generally the level of abstraction is too high and too general for a first introduction to a topic.

<comment><USER40> I find that sometimes even when I'm familiar with a topic, it ends up being a bad reference. This is especially true when they start introducing variables and constants that haven't even been defined.

</comment></comment></comment><comment><USER41> i have also encountered this problem. i learned the nature of rotation from first principles in order to solve these problems without documentation... which has turned out to be a massive boon.

tutorials are the devil. they do not teach so much as demonstrate a lot of the time.

its a sad place to be

</comment><comment><USER42> There's nothing wrong with understanding rotation matrices as rotations, it's just that in their application it's not the right mental model. Ideally you'll understand both representations and switch between them as needed.

</comment><comment><USER43> The way I think about it: any matrix multiplication consists of the linear combination of the column vectors of your transformation matrix, with each column vector 'weighted' by the the input vector's x, y, z, ... n values.

</comment><comment><USER44> I think the biggest struggle with rotation matrix isn't the theory but the nomenclature. Is it R(ZYX)?! Is it rotation axis rather than Euler angles?! All the convention differences can make signficant mistake very quickly.

</comment><comment> dmch-1 For some time I was surprised that anyone would represent rotations by anything else but rotation matrices. I sometimes do find wikipedia useful for quick answers for maths, however agree its quite disorganised.

</comment><comment><USER45> Is there a good web app where you can play around in a visual 3D space with transforms like this and other ones like quaternions?

<comment><USER46> Yes, check out [https://bivector.net](https://bivector.net)

[https://github.com/enkimute/ganja.js](https://github.com/enkimute/ganja.js)

and my own geometric algebra also:

[https://github.com/chakravala/Grassmann.jl](https://github.com/chakravala/Grassmann.jl)</comment></comment>


Tomorrow turkish redditors will be lost, due to governmnet - g-garron http://www.reddit.com/r/reddit.com/comments/jptna/tomorrow_we_lose_our_turkish_redditors_to_a/

<comment><AUTHOR> No link or cite or anything in there to explain what is happening. Just a self-post by a 1 month old Reddit account. This doesn't seem worthy of HN (or of any other forum). If something is actually happening, a real link should be submitted.

</comment><comment><USER2> No it will not happen tomorrow. The law in question is already postponed to November. Title is very sensational without reason. I think the usage of filter is not mandatory. Current already censored package will be used as default AFAIK.</comment>


Interview with Sir Arthur Conan Doyle - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=XWjgt9PzYEM#!

<comment><AUTHOR> This is an unexpected gem. I wouldn't have thought such footage existed, with sound.</comment>


Redundancy and Power - <AUTHOR> http://www.paulgraham.com/redund.html <comment><AUTHOR> It felt very appropriate with all the Dart announcement:

 _In this The greater the probability a random string is a valid program, the harder it is to report errors well._

and

 _Type-checking depends on redundancy_

Even though I am generally wary of static typing[1]

[1] [https://metaphysicaldeveloper.wordpress.com/2010/06/30/the-i...](https://metaphysicaldeveloper.wordpress.com/2010/06/30/the- issue-with-static-typing/)</comment>


How the Xbox One lost me, and then won me back with 24-Hour DRM. - <AUTHOR> http://ryanhayes.net/blog/how-the-xbox-one-lost-me-and-then-won-me-back-with-the-cloud/

<comment><USER2> I wouldn't be surprised if Sony did something like a trade in for Gaikai. Warner Bros trades physical DVDs for Blu-rays here: [http://www.dvd2blu.com/](http://www.dvd2blu.com/)

Would you send in your PS3 games for a licensed online copy?</comment>


How We Measure - <AUTHOR> https://www.simple.com/blog/how-we-measure/ <comment><USER3> I like Simple and I wish them success. I don't like them because of their fantastic app and website, or excellent human customer service, but because after many years of abuse at the hands of Bank of America I wanted a bank that does not aggressively pursue Non Interest Income (ie fees, usually overdraft) as a major source of revenue.

Simple states very clearly on their faq[0] page that they make money off of interest and interchange fees, not punitive and arguably immoral fees like those imposed by the large mainstreet banks. Head over to this reddit thread[1] from this morning that discusses what it's like to work for these banks: "[the customer who was mistakenly charged the fee] struggles from week to week with finances, and needs every dollar more than the rich customers who treat us like shit yet the managers kiss their asses. It wasn't the customers fault at all yet they have to suffer".

All of the large banks are ruthless predators on the weakest of our societies, gouging their customers with an ever evolving scheme of fees and debt incentives to ensnare, entrap and exsanguinate those who can least afford it.

They are involved in price fixing scandals of the highest order, are beyond the reach of the law no matter the transgression, and seem to hold the sum total of our shared societies in contempt. Apparently there is very little that can be done at this point, the horse as long since bolted, but at the bare minimum I'll be god damned if I give them a dime I don't have to. Simple enables me to bank as usual without continuing to participate in that abusive relationship, and for that, I like them.

[0] [https://www.simple.com/faq/](https://www.simple.com/faq/) [1] [http://www.reddit.com/r/AskReddit/comments/26qpcq/redditors_...](http://www.reddit.com/r/AskReddit/comments/26qpcq/redditors_who_work_for_a_company_everybody_hates/)

</comment><comment><USER4> Maybe slightly off topic to the post, semi related to their idea of an "active" customer:

I really like the way simple presents themselves. I don't think I'll join them any time soon though.

The incentive to use a 3rd party credit card is way too strong. I get things like cash back (depending on the card, up to 6% for e.g. groceries, 3% on gas, ...) and it helps building my credit score which the debit transactions on simple won't help with at all.

I do like Fee-Free ATMs, but on both of my current checking accounts (e.g. Charles Schwab) I don't have to try to find a special one that, judging from the map, usually means a 10 minute walk. I can just go to any ATM since there are quite a few banks that will reimburse costs for ANY of them.

Photo Check Deposit is pretty standard these days as well, both my local bank as well as Charles Schwab had apps that allow me to do that.

Most of the integration that simple provides (the "budgeting" part) , I probably also get with Mint. Only that Mint actually takes ALL of my accounts (Brokerage, Credit cards, ...) into account.

Besides that, the last time I checked they only accepted "Type 1 Social Security Numbers". Sadly, as a resident alien, I only have a type 2 number ("for work"). This seemed a bit strange since pretty much every other financial institution didn't care about the specific type of SSN so far. I didn't even know there were different ones. They mention on twitter that they've "processed a few exceptions", it would probably still be very inconvenient.

<comment><USER5> You understand that the "rewards" you get when you use a credit card are somehow paid for by you yourself, in spades? Visa posted a profit of $1.6 BILLION for the first QUARTER of this year. That's your reward, right there, watching them make their oligopoly profits off of you.

I meet founders quite often who think they can get their customers to use their product because it is a _better deal for the customer_. Unfortunately, many of these ideas are not viable because of the way many people focus on short-term gains rather than all-in, lifetime cost. It's too bad that many (most?) people would rather have some immediate gratification from a company that intends to screw them at the first opportunity than a long-term better proposition from a company that is trying to help them.

A great example with Simple is when people say they're sticking with their higher-interest account at a traditional bank. While finding the highest interest rate may appeal to their competitive instinct, the extra 0.5% or so on an average balance of even a couple thousand dollars does not even begin to make up for the surprise fees the bank charges when that person makes a mistake. The usual rebuttal is "Well, I don't make mistakes." The revenue split between fees and net interest margins at the retail banks shows that this is just not true, on average. The argument, then, must be that YOU don't make mistakes because you're better than everyone else. That's just an unattractive attitude.

Someone should build some wearable tech that whenever you make an irrational decision, it beeps angrily at you.

</rant>

<comment><USER6> You are so very, very wrong. They make money off of interchange fees and carried balances.

These "rewards" are rewards for the consumer if you: 1) Never carry a balance 2) Pay the same price as cash and the merchant eats the fees [as most merchants do!]

Its perfectly rational if you make fewer mistakes on average. So far, in the 10 years of using credit cards, I've recovered about 2% of every dollar I've ever spent and never carried a balance. This amounts to half a paycheck.

Its perfectly rational to assume that my rate of 'error' will remain roughly the same as it has been historically and that I want to continue to use credit cards and force merchants to effectively give me a larger discount that they would otherwise.

<comment><USER7> You say that the merchant "eats the fees," but what actually happens is that they price their goods higher to compensate for the fees.

What's worse, because the vast majority of merchants charge you the same price whether you're paying cash or credit, people who pay cash are, in effect, charged these hidden fees as well.

If people stopped using rewards cards, and the merchants didn't have to deal with the associated fees, the cost of the merchandise would arguably drop by the same percentage as what you're getting back in rewards.

<comment><USER8> > What's worse, because the vast majority of merchants charge you the same > price whether you're paying cash or credit, people who pay cash are, in > effect, charged these hidden fees as well.

Their merchant account agreements actually require cash/card prices to be the same. (Credit card purchase minimums are generally not allowed either - <USER2> course that doesn't stop many merchants from trying.)

<comment><USER9> I think what jawns is getting at is precisely because you can't price- discriminate on the payment method, you might as well increase prices for everything in order to cover transaction fees (operating under the assumption that most customers will pay with credit card), which effectively means that cash-paying customers get stuck with those fees.

<comment><USER6> That is incorrect as of 2010 and was incorrect for several states before 2010. :/

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> From the Quartz article linked:

"If it was after technology alone, BBVA could have built a platform in a few months for half a million dollars, [banking consultant Serge Milman] says."

I know this was probably hyperbole of the cuff, but it seems rather unlikely that any bank, institutions that are non-tech focused, could develop the same tech as a tech startup like Simple or Mint in a few months for a half million bucks. Pretty classic "ignorant of the true cost and complexity of software" attitude.

</comment><comment><USER11> Slightly off-topic, but can any current Simple customers comment on their experience with the service? Their marketing is makes the service very appealing, I'd like some real world experiences though.

<comment><USER12> Simple customer here.

I've been very satisfied with their customer service. I've been very satisfied with the fact that there haven't, to date, been "surprise fees." I've never been charged any kind of fee for using the service. I like their goals system, too. Tiny bits of money leave your main account (it's still usable though, in case you spend more than is in your perceived "balance"). You end up saving money without noticing it, which is nice.

Other little moments where you interact with the bank are better: getting a replacement card, for example, is very easy and fast.

Downsides: \- The money you save isn't earning any real interest, though that's nothing different from a typical savings account.

\- It's impossible to get cash into your account. I generally don't use cash very often, so this isn't a huge problem - but every so often, it's been incredibly annoying. Forget about ATMs, too. I can't use my Simple card at an ATM without paying a big fee. There are some fee-free Simple ATMs through a partner, but I've never found a convenient one.

\- If you have an especially large check to deposit, good luck! The mobile scan limit of, say, $3,000 is not unique to Simple - but what is unique is that you have no branch to walk into.

That being said, I've had such horrible experiences with BofA, I'm happy to not have a branch.

Is my mind blown by Simple? Not really. It's fine. I like it. On the other hand, I can't say I've ever been a fuming, angry customer in front of Simple - and I can't say the same for most of my other banking experiences.

One alternative to consider: I've heard Capital One 360 is nice and comparable.

<comment><USER13> I signed up for a Simple account when my turn on their wait list came up, but I quickly realized that there were too many limitations for me. The app and interfaces are nice, but some of the things you mentioned were ultimately deal-breakers. I have to deal with checks over 3k more than once a year and also have the occasional cash transaction of over $2,000. And that goes both ways, where I need to withdraw over $1,000 cash on occasion.

At the time, they also didn't allow for joint accounts. I don't know if that has changed yet.

I ultimately switched over to PNC because they have good branch and ATM coverage in my area and although their mobile app and web interface cannot touch Simple, they were substantially better than my previous bank's offerings.

Someone told me that Charles Schwab checking accounts, although also virtual, reimburse all ATM fees. According to this person, that includes ridiculous fees like $20 at "gentleman's clubs".

<comment><USER14> If you need to withdraw more cash from Simple than the ATM limit, you can do so at just about any bank counter as a over the counter cash advance, there are generally no fees charged for this service. Checks over the deposit limit are a bit more of a challenge- unfortunately, I haven't had that problem :) I think you can mail them to Simple, but that is a few days delay.</comment></comment></comment></comment>


Fascinating Idea - One Million Monkeys Typing: A Collaborative Writing Project - <AUTHOR> http://www.1000000monkeys.com/

<comment><USER2> I should have sold them 100DrunkenMonkeys.com ;-)

</comment><comment><USER3> if you like this idea, check out storymash.com!</comment>


The State of Robotics for 2015 - <AUTHOR> http://techcrunch.com/2015/12/13/the-state-of-robotics-for-2015/ <comment><USER2> Reads like it was written by a distracted fiverr scribe moments before deadline. Why is TechCrunch allowing this kind of drivel--is this some kind of sandboxed area for unedited user submissions, maybe?

</comment><comment><USER3> Interesting for the presentation at the end, lots of pointers.</comment>


Five Conditions to Identify Machine Learning-Ready Business Processes - <AUTHOR> http://maximilianchrist.com/blog/five-aspects-ml-business-processes <comment><USER2> The amount of data matters right? Also, some level of potential benefit of the application of the optimization. I wouldn't optimize something that only one person uses unless they're time is worth about 1000x mine.

<comment><AUTHOR> What you describe are RoI (Return-On-Investment) calculations. In business, for every investment you have to be sure that the value is greater than the costs, either if it is a new homepage, a new production machine or a fancy ML optimization.

So I would not say that this aspect is ML specific, even though it is very important.</comment></comment>


Ask HN: Brevity in Haskell versus Common Lisp - <AUTHOR> I'm a CL developer, not a Haskell developer. But, in the interest of the Great Northern Wars [1], i need to ask HN:
+++  Is there any example out there on the web of a code made significantly briefer in Haskell (versus Clojure/Common Lisp/Arc/Racket/Scheme), while still being reasonably understandable? +++
I know this question cannot have a definite answer[2], so feel free to do not-so-serious answers as well.
[1] Great Northern Wars: See reference picture:
http://lemonodor.com/images/functional-programming-is-beautiful-s.jpg
Comic author: Conrad Barsky, MD.
[2] I found this nice, fun comparison of the "fake" quicksort that is typically used to show how brief can Haskell code be. The author proceeds to write the same algorithm under Common Lisp with good results:
http://blog.thezerobit.com/2012/09/01/beautiful-quicksort-in-common-lisp.html <comment><USER2> Ever heard of Rosetta Code?

[http://www.rosettacode.org/wiki/Rosetta_Code](http://www.rosettacode.org/wiki/Rosetta_Code)

This is a Wiki site whose pages list numerous small programming tasks, each of which is solved in numerous programming languages, ranging from mainstream ones to "esolangs".

</comment><comment><USER3> Just look at the sources of an editor written in Lisp (GNU Emacs and others) and Yi (in Haskell - [https://github.com/yi-editor/yi](https://github.com/yi- editor/yi) ).

Ask yourself which code you like more...</comment>


Avoiding the Politics of Code Review - <AUTHOR> http://www.daedtech.com/avoiding-the-politics-of-code-review/ <comment><USER2> "Avoiding politics" is impossible, as the author points out. Every attempt only changes the politics. In this case, hopefully, towards strict focus on smaller technical non-recurring issues that do not need to be fixed. I am not convinced that is the ideal focus for politics. It can lead to petty behavior and people routinely ignoring each other.

Everything in this comment applies to HN's no-politics week as well.</comment>


Line-profiler: line-level profiling for python - <AUTHOR> http://packages.python.org/line_profiler/

<comment><USER2> If you code in Perl, the NYT released a nice Perl profiler: [http://open.blogs.nytimes.com/2008/03/05/the-new-york- times-...](http://open.blogs.nytimes.com/2008/03/05/the-new-york-times-perl- profiler/)</comment>


Show HN: Vanilla – A simple way to share any event. We're covering WWDC 2017 - <AUTHOR> https://vaniila.com/sng/APO5rJ <comment><AUTHOR> Vaniila is a new take on live blogging, focusing on social engagement, a super-easy slideshow format, and an extremely-focused feed highlighting only the best moments. This social live blogging platform is for anyone who is passionate about sharing events.

The first prototype is still buggy, and missing a lot of features. We thought sharing an early prototype with the community will provide a lot of feedback and encouragement. If anyone has any questions feel free to chat with us here or in our live chat.</comment>


Ask HN: Why do so many HN commentators speak of Bitcoin as a failure? - <AUTHOR> <comment> wu-ikkyu BTC is primarily used as a speculative asset pinned to fiat currency ($) rather than a viable medium of exchange. So it's value is intimately dependent on the very thing it sought to obsolesce.

BTC also was supposed to eliminate the malevolent influence of adversarial third parties (central banks) and yet BTC remains vulnerable to centralized mining pool attacks and centralized exchanges.</comment>


Show HN: HNTerm – Browse Hacker News in the Terminal - <AUTHOR> https://github.com/ggerganov/imtui/tree/master/examples/hnterm <comment><AUTHOR> This is a console application that I wrote for browsing HN in a terminal. It has an ncurses UI and uses libcurl to query the HN API [0]. Currently works on Linux and Mac. I also ported it to web with Emscripten's Fetch API so it can be easily demonstrated [1].

[0] - [https://github.com/HackerNews/API](https://github.com/HackerNews/API)

[1] - [https://hnterm.ggerganov.com](https://hnterm.ggerganov.com)

<comment><USER2> This is awesome, but not sure why pressing o / O on mac (catalina) doesn't open anything.

<comment><AUTHOR> I'm just calling system() with "xdg-open" and url as argument. This is what a quick google search told me can be used for openning a browser from a C++ program. Maybe "xdg-open" is not available on Catalina. It is on Mojave I think.

<comment><USER3> Use `open` instead of xdg-open on macOS.

</comment></comment></comment></comment><comment><USER4> Woah, those are some big dates: [https://bobbyjack.me/images/hackernews/hnterm.png](https://bobbyjack.me/images/hackernews/hnterm.png)

<comment><AUTHOR> Ooops, I expected C++'s std::chrono::time_point::time_since_epoch() to always return the Unix time.. Guess it is not always the case :-)

</comment></comment><comment><USER5> Thanks for this.

I love the concept, and would use it daily if there were features for adding/removing/viewing favorites. This is something that the official API doesn't support, so it's not something I'm faulting this application for. Impressive for sure.

Also +1 on wlqlwlql's dark-mode idea, although a color theme in general might be a better approach (but perhaps overly complicated?).

<comment><AUTHOR> The "favorite"/"follow" function is something I was also thinking about. I have some ideas about it - something like an extra feed window where only favorited (and related) things show up.

Regarding color themes - these are super easy to add.

<comment><USER6> an easy way of doing it would be storin a default bookmarks.txt file wherever and use that outside of the account, love the concept.

Would love it for PH too

</comment></comment></comment><comment><USER7> Wow, the vim keybindings are very intiutive. I just pressed O without thinking about it and it opened the highlighted link in a browser. although I miss using h and l for going right and left. also, I don't know about others but it took me some time to figure out the enter key to open comments page. maybe that should be mentioned in the help window.

</comment><comment><USER8> In general your imtui library looks really nice. I may have to consider it for some future projects!

<comment><AUTHOR> Thanks! FYI, underneath ImTui, it's 99% the Dear ImGui library [0] - ImTui is basically just a textual output wrapper.

[0] [https://github.com/ocornut/imgui](https://github.com/ocornut/imgui)

<comment><USER9> Wonderful. Very solid engineering here, using the right tool for the job.

</comment></comment></comment><comment><USER10> Looking at the API request counter/how it renders it seems like you're pinging the API for every news item? 43 for just the "news" and "show" sections seems pretty high.

If that were the case I'd be worried about hitting an API limit, etc.

Great concept though! Looks clean =)

<comment><AUTHOR> It's just the way the API works - to get the details for a single story (i.e. title, score, user, time, etc.) you need a single API request. Once the stories are fetched, then you can query the API only for those that have changed.

I was wondering what is the API limit - I haven't hit it yet. Will see.

<comment><USER10> Gotcha - it's times like that that I go with an old-fashioned raw HTTP request and parse it with a DOM parsing engine. Sometimes the "web-facing API" (so-to- speak) is better than the official API.

Super cool project!

<comment><USER11> Yes, an API that is isomorphic to the website itself would be much easier to use. Our plan is for the next version of HN's API to simply serve a JSON version of every page.

In the meantime, if you scrape the HTML, please respect [https://news.ycombinator.com/robots.txt](https://news.ycombinator.com/robots.txt) and don't do it more than once per 30 seconds. HN's app server runs on a single core, so we don't have a lot of performance to spare! This is in the works to change as well.

<comment><USER12> > HN's app server runs on a single core, so we don't have a lot of performance > to spare!

That's interesting. Is there any more information about HN's tech stack? I know it's built on top of the Lisp dialect Arc, but I wonder about the server specs and would be happy to be pointed at some resource.

Although I experienced HN being down, I guess the overall uptime and availability is pretty decent. Keep up the good work!

<comment><USER11> This still holds: [https://news.ycombinator.com/item?id=16076041](https://news.ycombinator.com/item?id=16076041)

Number of requests is closer to 5M per day now.

<comment><USER12> Nice, thanks! :)

</comment></comment></comment></comment></comment></comment></comment><comment><USER13> Few UX comments: 1\. There are a few advanced features that are enabled by default that I think should be hidden by default: stats and multiple panes 2\. It's unclear how to get back when entering an article

<comment><USER14> I think a dark mode would be great too

</comment></comment><comment><USER15> That's nice! There are some other mentions about color themes, but I'm wondering if it could just respect my terminal's color theme with background & foreground colors?

<comment><USER16> You could trick it into using different colours like so:

[https://unix.stackexchange.com/a/46354](https://unix.stackexchange.com/a/46354)

</comment></comment><comment><USER4> FYI works fine on mac but requires cmake (I downloaded and built cmake from source with no problems on 10.14.6, but other installation options are available)

</comment><comment><USER17> What's wrong with browsing Hacker News in the browser?

<comment><USER18> What's wrong with browsing Hacker News in your terminal?

<comment><USER17> Just trying to figure out what problem this project is solving.

</comment></comment></comment><comment><USER19> Tangentially related - I wish there were a way to browse HN in Acme.</comment>