Living Wage Calculator - <AUTHOR> http://www.livingwage.geog.psu.edu/ <comment><USER2> According to this site, the cost of housing in Cambridge, MA for one person is $1063/month. I live there with a roommate, and the total rent for our place is $1200/month. This is a nice apartment with hardwood floors and lots of light, in a nice location. You do the math, because apparently the creators of this site didn't.

Also, their hourly "living wage" seems to be based on a 40-hour work week. I personally work way more than that, and I know people that work less.

If you think about it, the very concept of a "living wage" -- as a function only of your location and the number of people you support -- is wrong-headed. What do you suppose the living wage is for Beverly Hills, CA? News flash: not everyone can afford to live everywhere. Just like some cars are cheaper than others, some places to live are more affordable than others. If you aren't making enough to live where you want to live, maybe you should re-examine your job skills or your aspirations about where to live, rather than blaming your employer for not paying you a "living wage".

<comment><USER3> _"What do you suppose the living wage is for Beverly Hills, CA? News flash: not everyone can afford to live everywhere."_

Yet everywhere you go, there's a demand for people who clean up your trash, fix your meals, sweep your streets and teach your children. These people have to live somewhere, too.

<comment><USER4> They can live someplace nearby and commute.

According to google maps, it takes 34 minutes to get from Compton (a cheap area, if rap songs are accurate) to Beverly Hills. There are probably other cheap areas not legendary for breeding hard soldiers, I just don't know the west coast at all.

[http://maps.google.com/maps?f=d&hl=en&geocode=&s...](http://maps.google.com/maps?f=d&hl=en&geocode=&saddr=compton,+ca&daddr=beverly+hills,+ca&sll=37.0625,-95.677068&sspn=36.315864,79.101563&ie=UTF8&t=h&z=11)

On the east coast, Jersey/Brooklyn/LI to Manhattan is equally reasonable.

<comment><USER5> > They can live someplace nearby and commute.

The problem with that is that commuting distances is it's own expense. It also rules out people like me who don't have a driver's license to drive a car in the first place. I can only work in heavily urban areas (Most of Chicago, or even parts of Toledo) because of it.

Also, note that the argument above had nothing to do with ecological or foreign dependence concerns, which is what most people think of when they pan commuter culture.

<comment><USER4> The problem timr was describing is that Beverly Hills needs some low skill workers. I'm sure sufficiently many low skill workers have cars/bus passes to meet the needs of Beverly Hills.

I'm not a fan of car culture either. I'm just pointing out that a "living wage" in beverly hills can't be more than a "living wage" in Compton + cost of commuting.

Incidentally, the market adjusts wages in exactly that way: the 50'th st Qdoba in Manhattan pays a couple bucks more/hour than the Hoboken Qdoba. Most likely there is a similar wage premium to work in Beverly Hills.

</comment></comment></comment></comment></comment><comment><USER6> This site has a pretty major flaw. It assumes one worker regardless of the number of adults, and it also charges for childcare. So really, both adults could work for half of the wage in the 2-adult models.

I'm not begrudging people that live near the poverty line higher wages. I'm just saying that the site is very misleading.

<comment><USER4> It has other flaws as well.

The most obvious flaw: a "living wage" should be the same in areas within short commuting distance of one another. Just live in whichever place is cheaper. An example:

Living wage in New York City is $7.72, while that in Jersey City or Hoboken is $11.28; the main difference is rent ($484 in New York, $884 in Jersey). So a person making only $8/hour in Jersey City can simply live in New York City and commute (the exact opposite of what people do in real life).

Another flaw is that their costs for rent are a load of crap. Out of the 5 cities I feel qualified to comment on (NYC, Jersey City, Hoboken, New Brunswick and Union City), and only one (Jersey City) was remotely accurate.

[Edit: another serious flaw I just noticed is child care for 2 adults, 1-2 children. If we talk about the "living wage" for one adult, the other adult can provide child care for free. Or each adult need only make "living wage"/2.]

<comment><USER7> Here's another weird bit: in my area the "medical" cost for one adult is $79 a month. But for two adults it's $226 a month. How the hell does that work?

<comment><USER8> With two adults it's usually a male and a female who engage in activities that create a new life, and there's a cost for that new life even before it is born.

Or are they thinking that two people will dislike each other enough to shoot or stab or beat on each other thus increasing the medical costs?

The site may be imperfect but at least it tries to offer some comparative info. I've never seen another site that does the same ... not in such an easy to understand format anyways.

<comment><USER9> [http://cgi.money.cnn.com/tools/costofliving/costofliving.htm...](http://cgi.money.cnn.com/tools/costofliving/costofliving.html) has been around for a while.

</comment></comment></comment></comment></comment><comment><USER10> Wow... Mountain View, CA is 9k more expensive per year than where I'm living. Heck, it's 8k more than New York.

Remind me why shoestring-budget startups are supposed to flock there?

<comment><USER11> Because MV has resources that those other places don't have. If you can succeed without those resources, MV isn't the place for you. However, if you need them and acquiring them costs more than $9k/year somewhere else, MV is cheaper.

<comment><USER12> Which resources are those, exactly?

<comment><USER13> people, duh.

I meet smart developers everyday, and have lots of hacker types friends. As the expression goes: You can't swing a dead cat on the bay area without hitting a good engineer/startupper in the head

Try that in any other place. You have to swing that a lot harder.

If you are trying to build a great startup you live by the talent, and die if you don't have it. Execution is key. Being frugal and cheap is second.

<comment><USER12> I won't disagree with that, but I do think it's overrated, to be honest.

</comment></comment></comment></comment></comment><comment><USER12> Just once I would love a site like this to consider the possibility that people actually live outside the US.

It would have been interesting to see those results... sigh.

</comment><comment><USER14> It would be nice to know what the source of the numbers are. I found some specific numbers that seemed low to me. For example, it budgeted $156 a month for food for one adult in SF. I used to budget $40 a week for food for myself in the eighties, reasonably sure its not enough now.

<comment><USER7> Top Ramen, with 390 calories per package and selling for twenty-five cents, will fulfill your daily calorie needs for $1.25 a day.

Seriously though, I would be surprised if you couldn't put together a balanced if rather dull diet for $156 a month (or $5.12 a day, which now I come to think of it happens to be approximately my daily coffee budget). You wouldn't be eating much meat, but with cereal for breakfast, a simple sandwich for lunch, and pasta or rice + vegetables for dinner I'm sure it'd be sufficient to keep you alive and healthy.

<comment><USER14> Your daily calorie needs, yes. I think what you'd really be forsaking is not meat (hamburger is relatively cheap) but fresh fruit and vegetables, milk, and most of all, variety. So I'd dispute "healthy." Sure it'll work when you're young, but 10 years of it, and say hi to cancer. And your point about your "coffee budget" just emphasizes it.

In the interest of fair disclosure, I should admit that the reason I had such a low food budget was so I could have more money for beer ;-)

<comment><USER7> Fresh fruit and vegetables really aren't that expensive. An apple costs, what, fifty cents? A banana, about the same? And you can get a whole head of lettuce or half a bunch of celery for not much more than a dollar. Or potatoes... I forget how much they cost, but it ain't much. As for milk, buy a half-gallon every week for $2.50 and you've got all the calcium you need.

Variety remains the big problem, of course.

<comment><USER15> To many people on HN, "fifty cents" for an apple is not that expensive, neither is $2.50 for some milk...I know I easily spend that on a bottle or two of Bawls or 50x that on a new toy for my laptop, or even 100x that on a single nice anniversary dinner at craftsteak in vegas with my significant other while we were in town for defcon (so, hotel and all was even _more_ money). _However_ , 50 cents for an apple earning a minimum wage paycheck working multiple jobs with your spouse to provide for your children while trying to pay the rent and bills is not an insignificant amount of money.

I still remember the congressional food stamp challenge from a year or two ago where everyone who attempted to live on food stamps for _a single week_ made a real point of saying that while it was simple to buy junk food and things like peanut butter, fresh fruits and vegetables, among other "healthy" items to eat, were nearly impossible to buy. Plus even just buying the cheaper junk food, they found that they didn't have the energy they had and always wanted more food...but of course, they wouldn't be able to keep up with the challenge. (<http://foodstampchallenge.typepad.com/>)

So no, fresh fruit and veggies _can_ be pretty expensive and unaffordable.

</comment></comment></comment></comment></comment><comment><USER16> All of these numbers are ridiculously high. I could afford not to die even when I was earning half of what they say the minimum is for my area. I suspect that this is politically motivated (e.g. they highlight all the jobs they don't think pay enough -- but they don't highlight all the expenses they could argue are too high).

<comment><USER17> The phrase "living wage" is loaded to start with. I'm sure there are political motivations here.

However, when I ran their calculations for my town, I was surprised to get a number very close to what we had already figured out as our minimum "comfortable" budget. No, we wouldn't die on less money, but the cuts would have to come someplace painful, like dropping health insurance for me and my wife, or eating a lot more potatoes and a lot less meat and vegetables.

If you wanted to rephrase the concept to "minimum stable middle class income", they were right on, at least in our case.

</comment></comment><comment><USER18> These numbers just seem wrong.

A specific example is they include child care - $800 per month, and then write: ...must earn to support their family, if they are the sole provider....

????

If you are going to include child care then divide all the numbers in half, and things make more sense.

Edit: heh jackowayed said the same thing :)</comment>


Virtual Forest - <AUTHOR> http://virtualforest.io/faq.html <comment><USER2> Great stuff! I'm a little frazzled by the fact that you're leaving 350$ cameras in the woods unattended, though. Figures they're not too far from your home given the CAT5 length you mention, but for anyone interested in building one in a more remote location (IoT SIMs with decent data plans are a thing now!), you might want to consider camouflage, and/or setting up in a tree.

<comment><USER3> You'd be surprised how much untouched wilderness there is out there. And generally opportunistic criminals don't tend to be wandering through the wilderness looking for cameras to steal. And even then they're face will be recorded for all they know.

<comment><USER4> Yeah. There are many trails in the US where you can hike for days without seeing another human.

<comment><USER5> Maybe if you go in circles. If you cover 20 miles/day, even in places like Alberta or Wyoming, it's hard to go much more than two days without bumping into another one in one form or fashion.

<comment><USER6> On the trails, sure, but a short way off of even the busiest trails you could go an extremely long time without seeing anyone, especially in areas that don't allow hunting.

For example, this woman died after weeks spent lost just near the Appalachian Trail: [https://www.bostonglobe.com/metro/2016/05/25/hiker-who- died-...](https://www.bostonglobe.com/metro/2016/05/25/hiker-who-died-after- disappearing-from-appalachian-trail-survived-for- weeks/KAcHuKSdYVHNTNu0qQobvK/story.html)

<comment><USER5> Yeah - we used to have a few of those unfortunate events reported every year when I was growing up in Wyoming. Sometimes even when it wasn't cold (dehydration is a thing, apparently). As young kids, we didn't know anything about anything, and always wondered, "why didn't they walk in a straight line? they were never more than 75 miles away from help."

<comment><USER7> 75 miles is a lot to cover on foot, too!

<comment><USER5> It is! Almost two days on open range! (Which is why dehydration is such an issue)

When I was a kid, we were amazed at the people who apparently got lost on Hell's Half Acre, about 40 miles west of Casper:

      - https://www.google.com/search?q=hells+half+acre+wyoming&num=20&source=lnms&tbm=isch&sa=X&ved=0ahUKEwi2iqHTsOXPAhWCsFQKHegtCo0Q_AUICCgB&biw=1151&bih=818

Broke an ankle or got stuck in a gully - sure, but lost?

Now that I'm officially old, and far less energetic, I'd be willing to believe that they just sat down and hoped that help would find them in time.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> It looks like it's just a single 360 camera with one viewpoint so it isn't really a "true immersive experience" on VR headsets, it's just a 2D image projected on a sphere. For true immersion in VR you need stereoscopic 360 degree recording, which can be achieved with using two of the 360 cameras or with this mount for GoPros:

[http://izugar.com/product/z6x3d.html](http://izugar.com/product/z6x3d.html)

<comment><USER9> Surely if you have two 360° cameras, one of them will be capturing the other one. I would think you'd need one 360° camera rig with stereo pairs of cameras.

<comment><USER10> With just two cameras, not only would you capture the other camera in view, but in those co-linear directions I don't believe it would be possible to get any depth information (or it would be all weird, like the same view, but magnified in one eye).

<comment><USER11> See: Lytro, which has struggled to find a good use for its lightfield cameras, but might actually have something now. Lightfield cameras can extract depth information directly, which lets them synthesize stereo views with a single camera.

Duct-tape enough of them together and you can synthesize stereo views in every direction, which is pretty cool.

</comment></comment></comment></comment><comment><USER12> Pitch black. Not sure if nighttime, or not working correctly :P

<comment><USER13> Looks like something is working, the browser is receiving an image and it's not a solid black colour, turning up the contrast to the max you can see some difference:

[http://i.imgur.com/Tm6J5iI.jpg](http://i.imgur.com/Tm6J5iI.jpg)

I'm not sure if it's just image compression artefacts or that's what the camera is actually seeing before it's processed and sent to users.

</comment></comment><comment><USER14> Does anyone else find it weird that you click and drag in the opposite direction you (well I) would expect, considering that the cursor becomes a hand that grabs?

<comment><USER15> Yes. I came here to say this.

<comment><USER16> Filed a PR. [https://github.com/aframevr/aframe/pull/1987](https://github.com/aframevr/aframe/pull/1987)

</comment></comment></comment><comment><USER17> I don't have a cardboard to properly see if the image really is "3D", but it seems like it's just a photosphere and therefore doesn't really have depth information. Is that right?

<comment><USER4> That is correct.

Sometime in the future, consumers will have software that can turn 2D images into simulated 3D [0]. It's still in dev mode right now, though.

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

<comment><USER18> Yeah, and there are some other in-dev camera rigs that use multiple cameras plus software interpolation to simulate 3d as well.

The thing that's most intriguing to me are the experiments using multiple depth cameras set up around a space and using software to build a live, 3d model and overlay the video data as a texture on top of the models. It's all very rudimentary and low-res at the moment but it's the sort of thing that can eventually become 3d/VR telepresence and that just strikes me as awesome.

</comment></comment></comment><comment><USER19> Pretty cool. Make it live and add some sound and you could almost feel like you're there.

Simple nitpick: when I drag to the left, I expect to go to the right. (I'm just seeing this through my browser though, maybe it makes sense in VR, idk.)

<comment><USER20> There is no consensus on drag direction. I've built several projects and have alternated the drag direction on each and have always received vociferous complaints about both.

<comment><USER21> Or just make it a preference, like what Apple does with trackpad scrolling direction.

<comment><USER20> Making it a preference means creating a settings UI. People have their preference, but they are also adaptable. It's not immediately clear that a "VR" experience (not that I'd call 360° photo "VR") would benefit from a preferences UI.

</comment></comment></comment></comment><comment><USER22> This is cool, it's a DIY 360 degree camera attached to a Raspberry Pi that you can view with a VR headset.

This page is the build and parts list but the web VR using A-frame is at: [http://virtualforest.io/vrforest.html](http://virtualforest.io/vrforest.html)

<comment><USER23> Demo is just a static image... isn't this supposed to be a webcam or something?

<comment><USER22> > Images stream live every 15 minutes from 4 - 22h in the EST (GMT-5) time > zone

There is a large 360 YouTube timelapse video here: [http://virtualforest.io/vrtimelapse.html](http://virtualforest.io/vrtimelapse.html)

If you want to do non-360 timelapse with the regular (and much cheaper) Pi camera then I wrote a guide: [https://unop.uk/time-lapse-photography-with-a- raspberry-pi](https://unop.uk/time-lapse-photography-with-a-raspberry-pi)

</comment></comment></comment><comment><USER24> On Chrome on Nexus 6 with Android 7 get black screen regardless of orientation or screen touching/dragging.

</comment><comment><USER20> This is incorrect:

        On mobile devices the A-frame framework will use the device sensors to figure out it's relative position.

It will only figure out orientation, not position. Position is impossible to integrate from the low-end IMUs used in smartphones.

</comment><comment><USER25> Doesn't seem to work for me on my HTC Vive but I've never used any A-Frame site before so I might just be doing it wrong. I tried on both Chrome and Firefox.

<comment><USER20> For starters, you need an experimental build of Chromium that Google provides in a ZIP file, or you need Firefox Nightly, and in both cases you have to enable a flag.

After that, I do not know what the current status is for A-Frame supporting the Vive. And of course, there was recently a big change to the WebVR API, so A-Frame may not be caught up to that, either.

As far as I know, A-Frame's "known good configuration" is Oculus Rift + Firefox Nightly, or (HTC Vive|Oculus Rift) + not-latest Experimental Chromium.

And Windows 10, of course, because Facebook can't find a single person capable of doing graphics work on Linux out of 15,000 employees, or so they would have us believe.

You can find access to all of these things at [http://www.webvr.info](http://www.webvr.info)

<comment><USER26> > because Facebook can't find a single person capable of doing graphics work > on Linux out of 15,000 employees

Either you muck around with NVidia binary Linux drivers (or worse, binary drivers for some ARM chipset in an Android phone), or you're working with Intel stuff (which isn't going to give you a cutting-edge VR experience).

A for-profit corporation has better things to spend its 20% time on.

</comment></comment></comment><comment><USER27> The A-Frame framework that is mentioned can be found here: [https://aframe.io/](https://aframe.io/)

</comment><comment><USER28> What's the UBEC for?

Edit: does it just convert the 24v to 5v, and why is that better than just doing 5v to begin with? Is this so you can get more current?

<comment><USER29> If the power supply is far away it's better to have a higher voltage due to voltage drop due to cable resistance, 24V is pretty standard AFAIK.

</comment></comment><comment><USER30> Really cool! I'll have to test this with Cardboard.

The VR view seems to crash Firefox on Android 5 / 6 on two devices I tested though.

</comment><comment><USER28> This is really cool, and I'm not complaining or feature creeping at all, but what about the sound of the forrest?

</comment><comment><USER31> There doesn't seem to be anything to control condensation.

Do you think this might become a problem?

</comment><comment><USER23> Doesn't seem to work well with custom orientation in Chrome devtools: [http://i.imgur.com/fp2kSO8.png](http://i.imgur.com/fp2kSO8.png)

<comment><USER16> I recommend [https://chrome.google.com/webstore/detail/webvr-api- emulatio...](https://chrome.google.com/webstore/detail/webvr-api- emulation/gbdnpaebafagioggnhkacnaaahpiefil?hl=en)</comment></comment>


Alcohol-induced brain damage continues after alcohol is stopped - <AUTHOR> https://neurosciencenews.com/alcohol-brain-damage-10985/ <comment><USER2> Experiments like this are almost guaranteed to produce a result. Let's take:

\- The worst off population (individuals hospitalized for brain damage)

\- Image them shortly after they "stop drinking" (within six weeks)

\- Using a very sensitive technique (MRI)

So ok. It would be nice to understand the _truly_ long term effects, since that is what everyone will care about.

</comment><comment><USER3> The pop-science belief is that brain damage is irreversible, so is anyone particularly surprised at this result</comment>


Go 1.4.2 released - <AUTHOR> https://golang.org/doc/devel/release.html#go1.4.minor

<comment><USER2> Does anyone else find it odd that the major releases are listed in descending order and then minor revisions are listed in ascending order?

<comment><USER3> Not if they you to read all the minor update changes in order. Personally, I'm fine with either way.

<comment><USER2> It's not really a big deal. I'm just used to seeing the most recent changes first.</comment></comment></comment>


Like Grep but for Code - <AUTHOR> https://github.com/returntocorp/semgrep <comment><USER2> See also Comby, which is a language-aware sed that Just Works for many common use cases. It matches named :[holes] in your code (think capture groups) and can perform additional logic on the matches (think Rust's conditional match arms).

[https://comby.dev/](https://comby.dev/)

<comment><USER3> Finally, somebody made another implementation of IntellIJ's "structural serarch and replace" feature.</comment></comment>


Directus – Free and Open-Source SQL Database GUI - <AUTHOR> http://getdirectus.com/ <comment><USER2> This looks very interesting, but be warned that in this project's case SQL == MySQL and nothing more.</comment>


Y Combinator continued - <AUTHOR> http://venturebeat.com/2007/04/16/y-combinator-continued/ <comment><USER2> Though this article is defending us, I disagree with it. What makes YC a good deal is not that we take common stock rather than preferred, but simply that we improve the average startup's outcome way more than the 6% we "cost."

<comment><USER3> I think the bottom line is that the competition is envious - I don't know who could provide the kind of network that YC provides. There is also probably the fear that YC represents the new way to fund startups "sucking" all the talent from the old way. Fear and Envy are a powerful combination and a great motivator for lashing out with the hope that the lashing will create some dent in YC. But the effort on the part of the competition will come to no avail - in fact you could argue it is a sign of how successful YC is becoming.

<comment><USER2> Actually I think the reason people attack us is cleverer than that. We've gotten a lot of press lately. Anyone who can establish himself as the canonical YC critic can thereby use the both-sides-of-the-story reflex of reporters to get mentioned in any story that mentions us.

Ustream is doing this to Justin.TV right now. They have nothing; just off-the- shelf hardware hooked up to a streaming service. If they'd launched by themselves, no one would have cared. They've achieved what prominence they have entirely by getting themselves mentioned in articles about Justin.TV. They matter more as the antiJustin than in their own right.

<comment><USER3> Thanks for pointing that out. I guess the competing VC did use his moment to advertise his counter offer while bashing YC at the same time. Media savvy is probably not a bad thing to master, especially if you actually have a product with really good value. Your MS article is definitely an example of amazing media savvy.

</comment></comment></comment></comment><comment><USER4> YC is almost like a talent agent or broker -- finding the best hackers and setting them up with the logistical necessities, social connections, and advice. Taking a small cut of the transaction, entirely from the excess they create, is the only logical way to operate long-term.

</comment><comment><USER5> Now that we know that Y Combinator is not a scam (I wonder how many established businesses applied to YC for the first round? PG?), I think it's clear you want to go with them.</comment>


Power Method for Approximating Eigenvalues [pdf] - <AUTHOR> http://ergodic.ugr.es/cphys/LECCIONES/FORTRAN/power_method.pdf <comment><USER2> The convergence analysis is a bit lacking, but there is a significant sped up when you store the last power of A and you keep multiplying by that instead of A. That is: A, A^2, A^4, A^8, ...

It makes the second case they give go from 60 iterations down to 7.

<comment><USER3> Multiplying a matrix by a matrix is a lot more expensive than a vector by a matrix.

<comment><USER4> Yeah and if you're gonna go matrix matrix you might as well do the QR method

</comment></comment></comment><comment><USER5> Fun fact, the power method is what all neutronics codes that simulate neutron distributions in nuclear reactors use. The diffusion/transport equation in a multiplying medium is a eigenvalue equation and the dominant eigenvalue is the inverse of k, the multiplication factor

<comment><USER5> EDIT: Explained in detail in another comment: [https://news.ycombinator.com/item?id=16017949](https://news.ycombinator.com/item?id=16017949)

</comment></comment><comment><USER6> Is there a relationship between the power method and some "standard" optimization algorithm (grad. descent, Newton's, ...) applied to maximization of the Rayleigh quotient?

<comment><USER4> Conjugate gradient (And other krylov subspace iterations) are basically a generalization of power iterations where you consider the whole set of {b, Ab, A^2b...} rather than just the one.

<comment><USER7> MATLAB, for one, in its eigs function uses Arnoldi with restart (picking a arbitrary seed to zoom on "good" parts of the Krylov subspace). Imagine we pick an Arnoldi vector for restarting (a member of that orthonormal basis which spans that subspace) which is equivalent to some polynomial expression of the initial matrix times our initial vector. We essentially want to pick this vector using such a polynomial (not the characteristic) so that the values of this polynomial function peak as a function of the true eigenvalues of the matrix - this lets us pick out the Krylov space that better approximates the correct eigenvector and hence the correct eigenvalue.

</comment></comment></comment><comment><USER8> Once you know the dominant eigenvector, I recall there was some trick you could do to get the second-dominant eigenvector, by projecting the dominant one out somehow. How can you repeat power iteration to get all the eigenvectors of a matrix?

<comment><USER9> The largest eigenvalue of (A - k)^{-1} is 1 / (x - k) where x is the smallest eigenvalue of A that is larger than k. So by using this technique on (A - k)^{-1} for various values of k you can find all of the eigenvalues of A.

<comment><USER5> In practice this is numerically unstable and it's generally better to use methods that use a larger and orthogonal subspace (i.e. Krylov methods) to get multiple eigenvalue/vectors. In nuclear reactor problems you can maybe get about 5 eigenvalues by filtering the larger ones but after that it gets noisy fast. I've gotten up to 1000 good eigenvalues from a large neutron diffusion problem using Arnoldi.

</comment></comment></comment><comment><USER10> What are you all computing eigenvalues for? I am curious.

<comment><USER11> PageRank is computing the principal eigenvector of the transition matrix describing the connectivity of the web. PageRank is no longer, AFAIK, the primary signal that Google uses but it's an idea that was worth $Billion at least.

<comment><USER12> $25b, in fact. [https://www.rose- hulman.edu/~bryan/googleFinalVersionFixed.p...](https://www.rose- hulman.edu/~bryan/googleFinalVersionFixed.pdf)

</comment></comment></comment><comment><USER13> What textbook is this excerpt from?

<comment><USER14> Erwin Kreyszig, Advanced Engineering Mathematics

<comment><USER15> yep I recognize it. that's an awesome book.</comment></comment></comment>


How to build a simple project fastly - <AUTHOR> http://tboox.org/2016/07/16/how-to-build-a-simple-project/ <comment><AUTHOR> Xmake is a make-like build utility based on lua.

The project focuses on making development and building easier and provides many features (.e.g package, install, plugin, macro, action, option, task ...), so that any developer can quickly pick it up and enjoy the productivity boost when developing and building project.

</comment><comment><USER2> The github repository for Xmake: [https://github.com/waruqi/xmake](https://github.com/waruqi/xmake)</comment>


Baidu CEO Robin Li Interviews Bill Gates and Elon Musk - <AUTHOR> https://www.youtube.com/watch?v=NG0ZjUfOBUs

<comment><USER2> there were some great quotes in this interview from bill gates... 'And he [Lee Kuan Yew] was not only just thoughtful, just the very idea that he would take parts of the Western system and say 'Oh this part is good, this part may not apply everywhere,' this part he disagreed with. It was kind of bold because of course the Western system was succeeding, you know, basically all the rich countries in the world had followed the Western system, and so the idea that he thought he would do it slightly differently was a huge contribution. And so Singapore's a city state, so you do things in terms of paying government salaries and excellence there that may not scale up but what he did was very incredible. What we really want is this mix of democracy and expertise and no country has that balance right. If you err on the side of democracy there are certain extreme thing about the wrong person getting in power and if you kick them out then how do you get new people? So a democracy they have some huge advantages that helped the US quite a bit. It is a little scary now when we have complex problems like how do you run a healthcare system efficiently. Why is the US paying so much? And there really isn't at this time any elected representative who can have a good discussion about the dynamics of the system and why it's different from other countries and how we might change that. So government has to deal with very complex issues and the Chinese government although I'd say the trend is a tiny bit away from it has had engineers and scientists in a lot of key positions and a willingness to look at what other countries do and also this notion that if you're going to have a new policy you can often try it out in part of the country see if it works and tune the policy before you try to scale it up in a really broad way. So the Chinese government is a student of policy more than just a, say, the UK Parliament or the US Congress where people are kind of yelling at each other like 'I'm right', 'No you're right' It's not like 'oh we're going to do an experiment.' I've never sat in the US Congress and had them say 'Oh let's try yours out in one state and we'll try out mine and we'll come together and let's combine the best features.' That's not a typical electoral dialogue that we're having right now. So it's a work in progress. There are things like how you run your universities where the US model - you know other people should just adopt it. Then there's things like health systems and governance where they should take some aspects that try out variation. So we get the benefit of 192 countries slightly different experience including at the sub-national level.'Robin Li replies 'We have a very strong government and they have very strong execution capabilities when it comes to infrastructure, like high-speed rail or highways. We have massive constructions and now is probably the largest infrastructure in terms of transportation in the world. But when you have a strong government are you concerned about innovation? There might be things that are too strict that's going to hurt innovation. Bill Gates'...in terms of things like, how do you make energy the state policy's not holding back somebody figuring out some big invention. In fact, I have a nuclear power company called Terra Power. That really, China's the most natural partner for us with the breakthrough generation of nuclear. Because China's a lot like the United States was in the 1960s, where the idea you want to go forward and do new things, it's very clear. The idea that the status quo isn't where you want to be. The US today is very careful that they were pretty happy with the current conditions, so if somebody wants to build a new building or take some new approach, there's a lot of 'Hmm, maybe no.' There's like five levels you go through, maybe no, maybe no. Whereas the bias towards moving and doing new things which has a small downside but a huge upside as well. I'd say in terms of breakthroughs in some areas, like nuclear, it's more likely to come out of China than almost any other place because of this bias towards doing big projects. And 1950s, 1960s that was the US and the 70s it started to be Japan. Korea took on that role, that big engineering bias is great for the world.'</comment>


The Joy and Agony of Haskell in Production - <AUTHOR> http://www.stephendiehl.com/posts/production.html <comment><USER2> > If care isn't taken, projects can quickly devolve to become unmanageably > slow to compile, usually the problem is avoidable with some care.

This is currently not the case. It's sometimes not avoidable at all. Compile times are a real concern right now. A GHC maintainer has even confessed to it being a very significant issue.

[https://www.reddit.com/r/haskell/comments/45q90s/is_anything...](https://www.reddit.com/r/haskell/comments/45q90s/is_anything_being_done_to_remedy_the_soul/czzmbt1)

<comment><USER3> As a big Haskell fan, the memory usage of GHC on certain modules is one reason I don't use it as much as I'd want. Several times I've had to double my swap file or increase the RAM on a VPS to compile some Haskell package, and I don't want to impose that on users of my software. Usually people don't build Haskell on their servers, just deploy binaries, but I do all my work on a VPS right now. Anyway, compiler resource use is a pretty big factor for me.

<comment><USER4> My only experience with compiling Haskell on a VPS involved over 100gb of swap I/O happening during a >24 hours compilation of LambaBot on a 512mb machine.

<comment><USER3> In a utilitarian sense, the pain caused by this could probably be greatly reduced with a robust system of cached binary builds. Right now we're all just compiling the same dependency trees over and over again, wasting cycles.

So since making GHC drastically more efficient is an enormous problem, maybe getting Stack/Cabal to download binary caches would be the best way to go forward.

There's a Nix build server that offers all of Stackage in binary form. That really takes a lot of pain away, at least if you're on a supported architecture (x86_64, I guess). But it's run by a volunteer individual, I think.

Of course, Debian and others have been packaging Haskell binaries forever, but I don't think most people want to deal with distribution packages for development.

I'm sure there are lots of discussions about this in other places... All I've found from my random googling is this post which is about binary sharing on the same computer:

[https://www.fpcomplete.com/blog/2015/09/stack-more-binary- pa...](https://www.fpcomplete.com/blog/2015/09/stack-more-binary-package- sharing)

<comment><USER5> I've seen Stack download prebuilt binaries for some packages but build others... always having prebuilt versions of text/aeson/vector/lens/etc would definitely speed up resolver upgrades.

</comment></comment></comment></comment></comment><comment><USER6> Good article. I'm involved with a large-ish OCaml project[1] and some of these things apply there too.

In particular we avoid "academic" features of the language like functors[2] and first class modules, because they obscure the flow of the code and are a headache for ordinary programmers to understand. I often get requests from people from the OCaml academic community asking if we have any available positions, and the answer has so far always been no.

[1] [https://github.com/libguestfs/libguestfs/tree/master/v2v](https://github.com/libguestfs/libguestfs/tree/master/v2v)

[2] [https://realworldocaml.org/v1/en/html/functors.html](https://realworldocaml.org/v1/en/html/functors.html)

<comment><USER7> Monads are essentially functors...

<comment><USER8> Not just essentially. All monads are functors.

<comment><USER9> Not in OCaml. It's a different concept.

<comment><USER10> There seem to be a hundred language definitions of Functor. Even Haskell's doesn't exactly correspond to the mathematical understanding of the term (if it did, Set would be a functor)

C++ is the worst offender, though.

<comment><USER11> How is Set a functor in a mathmatical sense?

<comment><USER10> You can define a function setMap such that if you setMap any function f from a -> b where Set a and Set b are valid types, then setMap f lifts f to a function Set a -> Set b. setMap will also satisfy the functor laws (or law, if you understand the parametricity derivation of the second law, which I don't :) ). Or in other words, setMap id = id.

In fact, the mapping is absolutely obvious. Haskell slightly brain damages us by assuming that setMap would have to apply to all a->b functions, which can't be done because a and b need to be Ord.

Although apparently it _can_ be done in GHC 8. ish.

[https://gist.github.com/ekmett/f783ea6af2e041b7b887](https://gist.github.com/ekmett/f783ea6af2e041b7b887)

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> Comments based our experience with production Haskell at Front Row:

* stack is pretty solid at multi-package builds, save everything in one single git repo for easier snapshotting. See yesod for reference

* use stack with stackage LTS unless you have a really good reason not to

* TH is nice to avoid, but you also miss out on great libraries like Persistent. Seems reasonably hard to dodge that one if you're sold on the conveniences of the yesod ecosystem

* We've been overall pretty happy with classy-prelude as Prelude replacement. Can throw off beginners at first, but is quite convenient to work with.

<comment><USER13> I think Opaleye will work well without TH.

</comment></comment><comment><USER14> This was good. Thank you.

The part that most worried me was _If we look at the history of programming, there are many portents of the future of Haskell in the C++ community, another language where no two developers (that I've met) agree on which subset of the language to use._

I also perked up when he talked about the difference between pipeline-paradigm coding and coding involving monadic trees.

I'd love to dive into the language, but with F# I'm happy enough that I code as little as possible and create lots of value. While I think that would be even more true in Haskell, it doesn't seem worth the switch -- yet.

Having said that, I'm definitely seeing some parallels between my own experience in F# and this author's experience in Haskell, especially the part about multiple ways to solve a problem. Are there no good books about common FP best practices? Seems like much of what you would consider a "best practice" would apply whether it's F#, OCAML, or Haskell.

<comment><USER3> There might be good such books, I wouldn't really know. The Scheme-oriented _How to Design Programs_ seems like a good candidate.

I think the Haskell world would benefit from talking a bit more about "design patterns." I've seen the concept get a fair bit of abuse because of the claim that Haskell's abstraction facilities are good enough to eliminate the need for Visitor Pattern style boilerplate—which has truth to it, but loses the baby with the bathwater.

Design patterns as in "common ways to structure programs and parts of programs" are fundamental for people who are learning to program productively. They constitute the repertoire of coding on the level above syntax. They're the principal structures of the idiomatic lexicon. The good ones seem obvious once you understand them, but a poor grasp of them causes vague confusion and big missteps.

In Haskell (and pure FP in general), there are a lot of useful design patterns that beginners pick up from the ambient culture if they're lucky:

      - the reader/state/IO monad transformer stack;
      - domain values as algebraic structures e.g. monoids;
      - functor composition;
      - free monad interpreters;
      - Xmonad-style pure core with I/O wrapper;
      - explicit ID values for representing identity;
      - recursion schemes;
      - and so on and so on.

Sure, Haskell can represent a lot of these things as formal abstractions, and that's wonderful—but people still need to learn when and how to use them and adapt them for their domains.

What I'm describing is far from a Haskell-specific problem, actually—there aren't that many resources in general that focus on these kinds of patterns.

When I was a beginner programmer, I was lucky to find Ward Cunningham's original wiki, the Portland Pattern Repository, which was all about spreading and discussing this kind of cultural conceptual knowledge.

There was a strong humanistic influence (from Christopher Alexander, through the early agile movement before it became a high-octane consultancy buzzword) and Haskell's culture has more DNA from mathematics and logic, and so treats patterns differently...

Still, I would love to see more discussion about functional patterns, at all scales from function implementation to application architecture.

<comment><USER9> Yes. People say "patterns are just first-class functions"but they miss the point that not all functions can be combined with each other in manageable ways, so there is still an art to it.

Also, stuff like "strictness annotation" is not a function.

<comment><USER15> > Also, stuff like "strictness annotation" is not a function.

Ah but it should be :)

[Not a function actually, but a type constructor: [http://h2.jaguarpaw.co.uk/posts/strictness-in- types/](http://h2.jaguarpaw.co.uk/posts/strictness-in-types/)]

</comment></comment></comment></comment><comment><USER16> This felt like a really fair and unbiased overview of the pros and cons of using Haskell. It's really refreshing to see that kind of honesty without any sensationalism. And it seems to have a lot of really interesting social insights about the situation, which I found surprisingly interesting.

<comment><USER9> Diehl has a lot of good no-nonsense newbie-accessible writing on Haskell.

</comment></comment><comment><USER17> For those looking at the where to start ([http://www.haskellforall.com/2015/08/state-of-haskell- ecosys...](http://www.haskellforall.com/2015/08/state-of-haskell-ecosystem- august-2015.html)) link in the post, here is the more up to date github repository ([https://github.com/Gabriel439/post- rfc/blob/master/sotu.md](https://github.com/Gabriel439/post- rfc/blob/master/sotu.md)).

</comment><comment><USER18> > Haskell code tends to be of high quality by construction, but for several > reasons that are only correlated; not causally linked to the technical > merits of Haskell. Just by virtue of language being esoteric and having a > relatively higher barrier to entry we'll end up working with developers who > would write above average code in any language.

I think this happened to Ruby for some time, not anymore probably. Maybe the next language to get the benefits of the "experienced early adopters effect" will be Elixir.

<comment><USER19> I think it's already happening with Rust. People are doing really cool things with it.

<comment><USER20> Any top apps?

I don't think you can beat other languages yet, except in some very niche areas. There's not even incremental compilation!

Hell, even python can infer function types these days!

Rust has been around much longer than Swift for example, and yet there are many very more production Swift apps. Whereas rust seems limited to play stuff.

Of course, given another 2-5 years it should catch up in many ways. Comparing it to mature languages, or languages like Swift (from the worlds largest company paying some of the worlds best language developers) is not really fair.

Definitely a play ground for enthusiasts at this point. Which I guess is what you meant.

<comment><USER21> Dropbox has Rust at the core of their product now. We have a fair amount of production use.

<comment><USER22> Aren't they sold to Go?

[https://twitter.com/jamwt/status/629727590782099456](https://twitter.com/jamwt/status/629727590782099456) [https://blogs.dropbox.com/tech/2014/07/open-sourcing-our- go-...](https://blogs.dropbox.com/tech/2014/07/open-sourcing-our-go- libraries/)

<comment><USER23> The same person behind that linked tweet has openly remarked about Dropbox's Rust usage, see for example here: [https://www.reddit.com/r/programming/comments/3w8dgn/announc...](https://www.reddit.com/r/programming/comments/3w8dgn/announcing_rust_15/cxucrse)

</comment></comment></comment></comment></comment></comment><comment><USER24> > Strings The strings types are mature, but unwieldy to work with in practice. > It's best to just make peace with the fact that in literally every module > we'll have boilerplate just to do simple manipulation and IO.

Conversion is part of the hassle, the other part is not having common functions (like, say, "splitPrefix") that will work across all string-like types.

For this, I recommend the monoid-subclasses package which, among other goodies, offers the TextualMonoid typeclass, that has instances for many string-like types.

[http://hackage.haskell.org/package/monoid- subclasses-0.4.2/d...](http://hackage.haskell.org/package/monoid- subclasses-0.4.2/docs/Data-Monoid-Textual.html)

<comment><USER25> Is there any good article on how Haskell got into a situation where there are multiple different string types? I understand how it happened with C/C++ (e.g. on Windows), but Haskell is much more modern than that.

I feel there must be some sort of story or interesting thing to learn here. Or is it just the usual str vs widestr type problems?

Also was interested to see the comment about huge records and the memory pressure it can cause. Seems like that's really an issue with immutability. I was expecting the author to provide some sort of advice or workaround for it, but apparently not.

<comment><USER26> I don't know an article, but the overall situation is pretty straightforward to understand.

The original Haskell strings were linked lists of characters. This was simple and elegant and worked well with the functional programming approach of the time (1980s, by the way, so maybe Haskell in its origins isn't quite so modern as you think). Nobody was much concerned about high performance string operations in Haskell at the time.

Inevitably, later people wanted to add more performant string types. But should they be lazy or strict? And do you want an abstract representation of Unicode, or do you want something more immediately suitable for arbitrary binary data? Enter four more string types. And now here we are with 5 string types in common use.

<comment><USER25> Thanks.

By "should the types be lazy or strict", you mean, if you do a string operation like uppercase/lowercase/substring/replace/etc, is that operation lazy or strict? Or are you meaning decoding bytes to characters or ... what aspect of the type itself can be lazy or strict?

<comment><USER26> Yes, the issue is whether the various string operations are lazy or strict. But whether it's possible to implement lazy operations does depend on the type itself. If the type is implemented as just an array of bytes in memory, it would be impossible to do anything lazily, because there's nowhere to store thunks (unevaluated values), only data.

</comment></comment></comment></comment></comment><comment><USER27> I am not a professional developer (never gotten paid to write software) but now do some prototyping code in Haskell so real engineers can pick it up from me later.

For me, Haskell has been a huge productivity booster. It forces me to write good code and 90% of mistakes that I normally make are all caught at compile time. I use _servant_ for creating my API server and it is pleasure to use (being able to create APIs declaratively is very easy for me to understand as a non professional). I recently had to write some front-end code in JavaScript and I noticed how simple mistakes can take 1/2 hour to debug (you pass in an array of objects instead of an object and you will wonder why `for (k in obj)` logic is not working.

I refactor huge parts of my code - can gut a particular API endpoint response and rewrite it without worrying about introducing more bugs. This allows me to start writing code without a lot of planning and refactor as I go instead of spending a lot of time upfront thinking through the implications.

Using Hoogle or Hayoo to search for functions based on types is just simply awesome. If you want a function that returns the index of a list that satisfies a predicate, you don't need to come up with search words instead you just look for it based on the types like so: [http://hayoo.fh- wedel.de/?query=%28a+-%3E+Bool%29+-%3E+[a]+-...](http://hayoo.fh- wedel.de/?query=%28a+-%3E+Bool%29+-%3E+\[a\]+-%3E+Maybe+Int). This does not mean you can solve all problems this way but it is very quick to get easy answers than Googling or putting it on SO.

Most developers write their APIs and need to spend more time documenting it. With _servant_ I just derive documentation directly from the types so my documentation moves in lock step with my code.

That said, using Haskell has its challenges (especially as a beginner).

* Compile-refresh cycle is frustrating. With Python or Go, you make a change and refresh the page, it is there. With Haskell, the 30s wait can become painful. My code is organized into modules but it is hard to avoid dependency related compile issues -- I tend to put most of my data records (mostly related by business logic) in a module and if you add anything to this module, you will end up recompiling everything that depends on it (which is most of the code). I am sure a pro-Haskeller would do it differently but whatever suggestions available online is not steering me in the right direction.

* Starting out with a fresh framework is not trivial for a beginner. _servant_ is really nice because it came with very good documentation and also a tutorial by someone on how to use it with _wai_ (http server) and _persistent_ (an ORM). Without it, I would not have been able to get to where I am now.

* Not all libraries are created equal -- some of the common use cases are well documented or has enough documentation that you will be ok. But once you venture beyond common use cases, trying to use a library is not easy. Most of the time, types help and being able to test it in the REPL is nice but it can only take you so far. I recently looked at a library for creating a MIME string but got lost in some undocumented library.

* Haskell's community is great. You will always find someone to help you. However, as the author was saying, you want to get some work done and you cannot wait 2 days for an answer on Reddit or SO. IRC is great for specific libraries (say servant or Yesod) but general #haskell can be daunting -- 90% of the people seem to be discussing Lenses or Free Monads and your stupid type error is not going to get any attention.

* Easy parts of Haskell are very easy to pickup and the hard parts seem impossible to fully comprehend (I will think I understand Monad Transformers and will try to implement some logic but will get stuck in type check hell and quickly give up).

Btw, I did not know about _fieldLabelModifier_ until now and it will cut down a lot of boiler plate. That said, I cannot wait for GHC 8 and its Duplicate Record Fields! Records are really annoying for writing business logic driven API servers.

<comment><USER24> A workaround for long compile times is trying to stay withing GHCi whenever possible and reload from there.

[http://chrisdone.com/posts/haskell-repl](http://chrisdone.com/posts/haskell- repl)

[http://chrisdone.com/posts/making-ghci- fast](http://chrisdone.com/posts/making-ghci-fast)

The Haxl team seem to use this strategy:

"Haxl users at Facebook do a lot of development and testing inside GHCi. In fact, we've built a customized version of GHCi that runs code in our Haxl monad by default instead of the IO monad, and has a handful of extra commands to support common workflows needed by our developers."

[http://simonmar.github.io/posts/2016-02-12-Stack-traces- in-G...](http://simonmar.github.io/posts/2016-02-12-Stack-traces-in-GHCi.html)

<comment><USER28> I find ghcid very useful. It reloads your code automatically when it detects a filechange.

[https://github.com/ndmitchell/ghcid](https://github.com/ndmitchell/ghcid) [http://neilmitchell.blogspot.de/2014/09/ghcid-new-ghci- based...](http://neilmitchell.blogspot.de/2014/09/ghcid-new-ghci-based-ide- ish.html)

</comment></comment></comment><comment><USER29> I don't agree that TH is bad. It's bad for generating real code (like I wouldn't use it to generate complicated logic), but just like you don't write Eq,Show,Ord instances yourself and instead let the compiler derive them for you, you use TH to generate JSON instances. I see TH more as a extension of deriving so I can easily derive custom typeclasses than for generating real code.

<comment><USER30> For Aeson instances you really should be using the Generics. I do agree though that there are useful libraries (AcidState/SafeCopy is one example) that cannot reasonably be used without TemplateHaskell. While TemplateHaskell should be avoided if possible, it isn't the only consideration in choosing a design and dependency tree.

<comment><USER29> The article does not go into detail why TH is bad, and neither do you. Why should I be avoiding it? What are the exact problems with it, except the occasional breakage with new GHC releases?

Generics is also not without its faults (it inflates compile time/memory, for example, see problems surrounding aeson 0.10). If the article is correct when it says that /[TH is] a eternal source of pain and sorrow/, then you're trading one pain for another.

<comment><USER5> As a maintainer of a >130kloc Haskell codebase spanning thousands of modules and hundreds of packages, I avoid TH primarily for one reason: slow builds. Painfully slow.

For cases where GHC.Generics is an option, I always take GHC.Generics over TH. Yes, Generics can be slow at times too but this somewhat controllable with various GHC_OPTIONS. Either way, there is no loader and interpreter overhead... and a lot of Generics code compiles in less time than it takes TH just to load `text` or `aeson` ;-).

Other reasons:

      * Some TH libraries add implicit dependencies that are not tracked by the build system
      * GHCi/TH's loader is different than the OS loader, sometimes causing failures if a TH dependency touches C++ libraries
      * No cross compiling ability... not an issue for me but it's painful for those targeting Javascript (via ghcjs), ARM or smaller x86 embedded systems

</comment></comment></comment></comment><comment><USER31> I wonder how much time is spent on deriving instances and whether some sort of caching would make a big difference. After all if datatype definition has not changed there's no need to change the derived code.

</comment><comment><USER32> Use PureScript and node in production instead. Great performance, interop with JS, and it's eagerly evaluated so runtime semantics are easy to understand. PureScript does not have Haskell's record problem.

</comment><comment><USER33> I arrived in Mountain View tonight. I want a job. It must involve Haskell. Anything else is a waste of time. My prediction: Haskell will be ready for production when people are ready to engineer code that lasts 1000 years.

<comment><USER34> If the language you want to work in is so important, you should have picked the company first and the location second.

Besides, data outlives code. By orders of magnitude. You seem to be in love with Haskell today, chances are you'll be using a different language in ten years but the data you'll be working with will probably have been around for much longer than that.

Don't fall in love with programming languages, it's a waste of emotional energy.

<comment><USER35> That's a very insightful comment. I 100% agree. And I'd add that I'm still completely baffled to see that some very obvious data support issues are still not resolved in the industrial world (e.g Java) : * Computing with units (which is tough to put in a language, but so is compilation) * Computing with dates in a sensible way

Of course one _can_ make computation on those types, but it is so un-natural that it scares me :

* BigDecimal for currency, let me laugh * Date/timestamp without proper casting rules * Types towers with inheritance, generics, etc. Pfff... * Still no fine library to represent an address * Representing mutable ordered lists in SQL databases is still quite painful (possible, sure, but there's so boiler plate code to write)

So the data representation/manipulation problem, which goes with the data longevity you observe, that's something to learn about...

There's no reason to love current programming languages :-( (but I do love Python :-) 3 of course :-))

<comment><USER36> > Computing with units (which is tough to put in a language, but so is > compilation

F#'s units are nice.

> Computing with dates in a sensible way

The new Java time API is pretty good. But honestly my favourite datetime API would have to be Postgres'.

> BigDecimal for currency, let me laugh

Out of curiosity, why?

<comment><USER35> For F#, I didn't know. It looks verrrrrry sweet.

For BigDecimal, my grief is that it makes code horrible (at least in my experience, I'm still locked in JDK 1.7).

BigDecimal has the problem I see with the rest of my griefs : it is possible to compute things correctly with code (obviously), but the way the code is written is ugly (and painful).

       BigDecimal yearly_amount = new BigDecimal("1000.00");
       BigDecimal daily_amount = yearly_amount.divide(new BigDecimal("12")); // Beware the rounding issue

Wouldn't it be nicer if :

       money<4> yearly_amount = 1000.00 EUR; // 4 decimals
       money<2> daily_amount = yearly_amount / 12; // Beware the rounding issue !

Of course, this notation doesn't help much with rounding, but at least it makes the code easier to read. And trust me, using BigDecimal, doesn't prevent many people of making mistakes with rounding.

<comment><USER36> True, but it can do, if you set precision etc.</comment></comment></comment></comment></comment></comment>


Ask YC:  Why not prevent suicides by automatically spying on people's emails? - <AUTHOR> One can create AIish algorithms to see how depressed someone is likely to be by analyzing their emails. Something like that could be done with gmail for example.<p>If some depression threshold is passed, mental health authorities would be contacted automatically and immediately.  Surely the lives saved would be worth any loss of privacy? <comment><USER2> Why not have televisions that watch back and make sure we're not making bombs? Why not have random searches and seizures if there's a chance we could save a life? Why not put GPS tracking into every car, every person, so we could find out where they are if they go missing?

Slippery slopes.

And don't call me Shirley.

<comment><USER3> > Why not put GPS tracking into every car

This is already here... GM offers use of it's OnStar system to law enforcement so they can hear what you are saying while in your car, OnStar also has GPS tracking.

> every person

Your cellular phone already does, even when it is turned off.

<comment><USER4> OnStar is designed specifically only to work in two instances: 1. Someone presses the blue button in the car manually, or 2. the car detects an accident and automatically calls OnStar and the police.

It doesn't "hear what you're saying while in your car" just randomly.

<comment><USER5> You probably think your phone only listens when you take it off the hook, too.

</comment></comment></comment></comment><comment><USER6> "AIish" is my new favorite word. Let's apply this principle to some other words.

"I'm sorry that your father died, but we aren't really a hospital... we're hospitalish."

"I'm not a plumber, but I am plumberish."

"If I just came right out and said that strong AI is a joke, and that I wouldn't necessarily trust an AI to sort my socks, let alone recommend to government authorities that I be committed to a mental institution, it would not be subtle. But it might be _subtleish_."

Also, you do realize that your plan would permit anyone who can forge a FROM header to conduct a denial-of-service attack _on your entire life_ , don't you?

</comment><comment><USER7> Amichail you have missed your calling -- you shouldda been a hacker version of Jerry Springer. "Live! This afternoon! Gay Midget Nun LISP programmers and the System Administrators they love"

Here's a better follow-up question: if Google currently analyzes emails to determine what advertisements to place, and it can be shown that similar email processing could prevent suicides, is Google liable for not either providing the service or notifying people that the service is not included?

<comment><USER3> And what if by analyzing your email Google aided in your suicide by bringing up advertisements that lead you to what you used to commit suicide with. Google might bring up an advertisement "Search eBay for 'commit suicide' now!" or "Find books on amazon on "commit suicide"!"

<comment><USER7> It could be worse. It could be Microsoft, and that little animated paperclip pops out. "Hey! Looks like someone is wanting to commit suicide today! Have you written your suicide note yet? Studies show that suicide notes written using AllIsLost letter creating software are 22% more poignant! Thought about creating an online will? How about some overseas prescriptions at really low prices? Did you know that the nearest gun store is 7 miles NE of your location. Like directions? There's a Taco Bell on your way in case you're hungry. I'll just keep chatting down here until you finally off yourself."

<comment><USER5> Turns out many people have associated Clippy with suicide notes [+]. Something about Microsoft's 'help' just brings out those feelings!

[+] <http://www.visar.com/AssistedSuicide.html>

</comment></comment></comment></comment><comment><USER8> I have a feeling that the person receiving the email will be a lot better than your AI is at knowing if the person is depressed or suicidal.

<comment><AUTHOR> But maybe he/she would not be willing to contact mental health professionals without your permission?

</comment></comment><comment><USER4> Maybe we should put cameras in your bathroom that monitor your bowel movement habits. When you're severely constipated with a bowel obstruction, should it call the ambulance for you?

</comment><comment><USER9> Every time I see a post like this I'm sure amichail wrote it, does it happens to you?

I'm sure google ads will show some health club publicity with that kind of content on an email.

<comment><USER10> > Every time I see a post like this I'm sure amichail wrote it, does it > happens to you?

Yes. I guess he has a severe case of collectivism, which is quite strange for someone hanging out here.

</comment></comment><comment><USER11> Why not? Have you read "1984"?

<comment><USER12> Double plus goodthinkful, comrade.

</comment></comment><comment><USER13> "Surely the lives saved would be worth any loss of privacy?"

Very scary mindset you've got there.

<comment><USER7> Hey this is the modern world. We don't expect to take personal risk for anything. If there is any death at all from doing something, there's somebody out there who wants to take away our freedoms to do it in the name of "safety". This is just the logical continuation of that trend (which has been going on for many decades, I might add)

</comment></comment><comment><USER14> _Clippy pops up_

It looks like you're going to commit suicide.

Would you like to:

\- Buy some pills.

\- Buy some ammo. ...

</comment><comment><USER15> The estate tax is a better monetization plan.

</comment><comment><USER16> what's wrong with suicide? all of us die at some point. i'd rather die at a point of my own choosing. so suicide is the best death option (for me!), and since i'm going to die, it's best if i (eventually) commit suicide. Now there's this problem of committing suicide "too early"...presumably the right cutoff point would be the point when life stops being worth living. which then raises the problem of knowing when that is (i.e. teenagers getting dumped and assuming, erroneously, that life is no longer worth living). thus, having a web app for calculating that point would be REALLY convenient (hint hint!)

<comment><USER17> You are the first hit in my suicide filter, and I didn't even need access to your mail client. Please pay up.

If you were being remotely serious about suicide, here is what I decided at a young age when I first thought about the subject when trying to decide whether a religion was true or not: If this whole existence is worthless and meaningless, make the best of it while you are here. If this whole existence is part of something bigger, make the best of it while you are here. There really is really no problem or ailment that makes suicide a viable option.

</comment></comment><comment><USER18> No, you can't create AIish algorithms to detect depression. Not with the current state of the art in AI.

</comment><comment><USER19> heh, this is kind of a bad idea for a lot of reasons.

but rest assured, the nsa already monitors all domestic internet traffic.

</comment><comment><USER20> You sure have a lot of faith in "the authorities". Should they be able to forcibly medicate you into a vegetative state for life so that you never kill yourself?

A better use of technology is to make people's lives _better_ so they don't feel suicidal.</comment>


HTTPie: cURL for humans (colorful CLI for python-requests) - <AUTHOR> https://github.com/jkbr/httpie

<comment><USER2> Great tool Jakub, httpie is instantly a part of my toolbox

<comment><AUTHOR> thanks, Saevar :)</comment></comment>


Why Gandi doesn't advertise - <AUTHOR> http://www.gandibar.net/post/2014/03/26/Why-Gandi-doesn-t-advertise

<comment><USER2> Pretentious.

<comment><AUTHOR> Sorry you feel that way. For me, it's a fundamental part of what we do, and it's a big reason why I love working at Gandi. That's not to say all advertising is bad, but... what Bill Hicks said.</comment></comment>


Bookboon: free ad-supported e-textbooks written by college professors - <AUTHOR> http://bookboon.com

<comment><AUTHOR> Mathematics for Computer Scientists ([http://bookboon.com/uk/textbooks/it- programming/gentle-intro...](http://bookboon.com/uk/textbooks/it- programming/gentle-introduction-to-mathematics-for-computer)) looks especially interesting.</comment>


New portal to unveil the dark sector of the universe - <AUTHOR> http://sciencebulletin.org/archives/11589.html <comment><USER2> Blogspam of

[http://www.ibs.re.kr/cop/bbs/BBSMSTR_000000000738/selectBoar...](http://www.ibs.re.kr/cop/bbs/BBSMSTR_000000000738/selectBoardArticle.do?nttId=14417&116235853=705612498)

with author credit (Dr. Letizia Diamante) ripped out. Graphics also copied from there without attribution.</comment>


Teaching Encryption Soon to Be Illegal in Australia - <AUTHOR> http://bitcoinist.net/teaching-encryption-soon-illegal-australia/

<comment><USER2> Given their first link 404's and the DSGL list has an exemption for basic research and stuff in the public domain, I'm hoping that this is just misinterpretation or FUD.

[http://www.defence.gov.au/deco/DSGL.asp](http://www.defence.gov.au/deco/DSGL.asp)

I had a bit of a dig through the defense site and after a bit of a cursory search on encryption couldn't find anything to suggest what this site is claiming.

</comment><comment><USER3> "Teachers at schools or universities will have to be approved to teach encryption if students are outside of Australia."

Sorry Australia but this is just stupid and a little racist.

</comment><comment><USER4> Is there a culture of civic disobedience in Australia?

You could have some people teaching number theory to people in public places as a form of protest.</comment>


Ask HN: Happy New Year - What are you doing differently in 2020? - <AUTHOR> <comment><USER2> I'm gonna try not to focus too much on economics and politics, different schools of programming and all those raging debates, but instead channel that effort into work, friends and family.</comment>


Roman Sacrifice, Inside and Out (2016) - <AUTHOR> https://www.cambridge.org/core/journals/journal-of-roman-studies/article/roman-sacrifice-inside-and-out/24585106EF99A77C65EFB622E34DC22A/core-reader <comment><USER2> > the word _immolatio_ itself derives from the Indo-European root _melh2− ('to > crush, to grind'):_ immolatio* is cognate with English 'mill'. From this > same root also derives the name for the mixture sprinkled on the animal > before it was killed, _mola salsa_. The Romans were aware of the link, as is > made clear by Paul. ex. Fest. 97L: 'Immolare est mola, id est farre molito > et sale, hostiam perspersam sacrare' ('To immolate is to make sacred a > victim sprinkled with _mola_ , that is, with ground spelt and salt'), a > passage which also suggests that the link between _immolatio_ and _mola > salsa_ was active in the minds of Romans in the early imperial period

This is a very strange way to make this argument. You don't need to link _immolatio_ all the way back to an Indo-European root. And you certainly don't need a citation for the obvious, obvious claim that the link between the words _mola_ and _immolatio_ was known to the Romans -- of course it was known to the Romans, because that link exists entirely within the Latin language. _Immolare_ is transparently nothing more than _in_ + _mola_ +[verb endings], and _immolatio_ is the noun derived from _immolare_. Arguing that _immolatio_ and _mola_ are related because they both derive from the same root that existed thousands of years in the past is obtuse -- _immolatio_ derives directly from _mola_. Even if the words were actually unrelated, the form of the word _immolatio_ _guarantees_ that the Romans would perceive it as deriving from _mola_.

</comment><comment><USER3> I'm afraid that anyone qualified to read this article was not informed by it. And anyone informed by it was not qualified to read it.

> Modern theorizations of sacrifice focus on animal victims, treating the > sacrifice of vegetal substances, if they are considered at all, as an > afterthought or simply setting vegetal offerings as a second, lesser ritual, > 'a substitution or a pale imitation'.

This is a silly claim.

<comment><USER2> I was confused by the assumption that modern conceptions of sacrifice view it in one of two ways: as an exercise of violence for its own sake (??), or as a communal meal.

My _first_ association with the concept of sacrifice is an offering or a trade: You give something to a spirit or god, and the spirit or god hopefully gives something back to you.

<comment><USER4> That is a very modern reinterpretation. Trade was a practice of more-or-less equals. One doesn't trade with gods, much as one doesn't trade with parents. One hopes to attract their favorable attention, and fears their ire or neglect.

<comment><USER2> Or, in older words:

 _" Holy Athena," she cried, "protectress of our city, mighty goddess, break the spear of Diomedes and lay him low before the Scaean gates. Do this, and we will sacrifice twelve heifers that have never yet known the goad, in your temple, if you will have pity upon the town, and on the wives and little ones of the Trojans." Thus she prayed, but Pallas Athena granted not her prayer._

(Iliad 6.305-311)

Direct offers to trade with the gods are common in classical mythology. (And, um, everywhere else, ancient or modern day, fiction or reality.) And I specified that a sacrifice was often just an offering. Trading is normal, but not required.

> much as one doesn't trade with parents

I mean, I guess I can agree with this. I take it you don't have kids?

<comment><USER3> It was Socrates' atheistic critique of contemporary definitions of piety to call this "trade" or "ἐμπορικὴ" in Euthyphro 14e.

And for an historical example, according to Xenophon [Xen. Anab. 3.2.10] the Athenians promised to sacrifice a goat to Artemis for every Persian killed at Marathon. This turned out to be 6,400 [Hdt. 6.117] and since they could not find enough goats, they instituted a yearly sacrifice of 500.

Although only a wag like Socrates would call this a direct trade with the goddess.

</comment></comment></comment></comment></comment><comment><USER5> Why doesn't page up / page down work on some sites anymore? Surely academic readers haven't all transitioned to consume-only touchscreen devices?

<comment><USER6> Works for me, using the Mac option+down to mean pagedown.</comment></comment>


Growing Up Digital, Wired for Distraction - <AUTHOR> http://www.nytimes.com/2010/11/21/technology/21brain.html?hp <comment><USER2> _> Sean's favorite medium is video games; he plays for four hours after school and twice that on weekends._

I don't get it. My son would certainly do the same if given the choice, but he is allowed to play 2 hours a day on week-end, and 0 minutes the rest of the week. He's not supposed to be in command. And he hasn't got a mobile phone, either, because he simply doesn't need it. This is good parenting 101, setting limits.

<comment><USER3> To an extend yes, but how old is your son? At some point children needs to be handed more responsibility (and it will _always_ be before you think they are ready for it), because while they will make mistakes it is better that they make these mistakes while you are there to help them clean up the mess and the mess isn't too big.

But more importantly than that one day they will be old enough that you can no longer set the limits for what they should do, which they will not be able to handle unless they have had their freedom handed to them gradually.

<comment><USER2> _> To an extend yes, but how old is your son?_

13\. He's getting responsible enough; we don't need to tell him what's reasonable and what isn't, so the rules are now subject to interpretation, which wasn't the case at 9 :)

</comment></comment></comment><comment><USER4> _Allison Miller sends and receives 27,000 texts a month, carrying on multiple text conversations at a time._

Assuming that means she sends 27k/2 = 13,500 SMS per month, and she sleeps 8 hours a day, that means in a 30 day month (480 waking hours), she's sending 1 message every other minute while awake. 13,500/480 ~= 28.1 per hour.

I guess that counts as distraction.

<comment><USER5> Or, some minutes she sends more, and some fewer. I can imagine two people fitting an exchange like the following into a single minute:

        -> "hey"
        <- "what"
        -> "movie?"
        <- "sure"
        <- "when"
        -> "8"
        <- "ok"

<comment><USER4> _Or, some minutes she sends more, and some fewer._

Yes, this is the beauty of statistics.

</comment></comment></comment><comment><USER6> Sweet! There's a video in case I don't want to take the time to read a whole article about shortened attention spans.

<comment><USER7> Reading is 2-3 times faster than listening.

<comment><USER8> Assuming you can read well.

<comment><USER7> We can assume literacy on these boards :)

</comment></comment></comment></comment><comment><USER9> What I find odd is that most of the kids profiled have really good grades. I mean, Vishal's friend has straight A's (even though he wishes to do better on SATs) and yet he's on facebook all the time? And, Allison the texter has only 3 B's on her report card?

And, the main character study, Vishal, won't finish his Summer take-home book, but he'll slave away for two hours perfecting a few seconds of his demo reel for college? That's not being lazy or digitally distracted; to me, it's academic arbitrage. And, he's still making A's and B's. What's more, if that article is at all correct, Vishal was taking AP courses _in his junior year_. In my day (yes, back when we trudged up hill in 10 feet of snow to and from school) AP was only for seniors.

These kids are way ahead of the game. I'd venture a guess and say they aren't really representative of most kids. Take this article out of silicon valley and put it smack dab in the middle of the US fruited plains to see how digitally distracted the mainstream youth has become and if it really does a detriment.

<comment><USER10> I agree. I don't see how one could claim Vishal is unable to focus on a task at hand when he is able to devote hours to perfecting his filmmaking.

</comment></comment><comment><USER11> The NYTimes content signup wall for international viewers is really starting to annoy me.

<comment><USER12> It doesn't bug me at all. I've been logged in with the same cookies for months now and haven't seen it since the very beginning.

</comment></comment><comment><USER13> This article seems like bull shit. I mean, have you been to Woodside?

<comment><USER14> No. Have you? Why don't you share?</comment></comment>


How to Turn a Sphere Inside-Out (video) - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=BVVfs4zKrgk

<comment><USER2> interesting!</comment>


The Future of Mathematics? [pdf] - <AUTHOR> http://wwwf.imperial.ac.uk/~buzzard/one_off_lectures/msr.pdf <comment><USER6> I've been following Buzzard's evangelism of proof assistants for some time.

A few months ago I decided to try formalising some old mathematics olympiad problems in Coq. Part of my motivation was to get a sense for how much work would be involved in proving something slightly non-trivial but still very elementary. I managed it, but it was _a lot_ more work than expected (results here: [https://github.com/ocfnash/imo-coq](https://github.com/ocfnash/imo- coq)).

Partly based on this exercise, I think that while it is possible that mathematics may go the way of chess, so to speak, it is a lot more distant than the ten years mentioned in this article.

I strongly support, very much hope, and even expect, that the use of proof assistants may become mainstream in mathematics within a generation or so but I think it is impossible to guess the exact role they will play accurately.

<comment><USER7> I like to think that I'm good at these combinatorics-kind of questions, but I can't wrap my head around this one. I can follow the construction of the matrix, but I don't understand how you came up with the formula.

<comment><USER6> I presume you've been looking at my presentation here [http://olivernash.org/2019/07/06/coq- imo/index.html](http://olivernash.org/2019/07/06/coq-imo/index.html) which I confess is quite concise; apologies if it is too terse.

Reusing the notation of my post, here's how the formula arises.

The argument based on counting cells that are either row/column good/bad requires the following of the parameter k:

      1. k-1 < r/m
      2. k-1 < c/n
      3. k−1 < cr/(c(m-1) + r(n-1))

These are equivalent to:

      1. k <= ceil r m
      2. k <= ceil c n
      3. k <= ceil cr (c(m-1) + r(n-1))

And so it is sufficient to have:

      k <= min (ceil r m) (ceil c n) (ceil cr (c(m-1) + r(n-1)))

We can then rearrange this to the headline formula by noting:

      * ceil r m = ceil (cr) (cm)
      * ceil c n = ceil (cr) (mr)

And then simplifying by repeatedly using the fact that for any x, y, z:

      * min (ceil x y) (ceil x z) = ceil x (max y z)

All this is of course in the Coq code. E.g., the last fact mentioned above is here: [https://github.com/ocfnash/imo- coq/blob/f6d2e8337fadf00583fd...](https://github.com/ocfnash/imo- coq/blob/f6d2e8337fadf00583fd09f86faf9cba62a25677/q3_2001/inequalities.v#L50)

<comment><USER8> Related: [https://imo-grand-challenge.github.io/](https://imo-grand- challenge.github.io/)

<comment><USER6> Cool!

</comment></comment></comment></comment></comment><comment><USER9> Could someone with knowledge of both COQ and LEAN provide more info/comparison? Are they based on the same foundation or are there differences? Might it be possible to automatically convert proofs between the two? What about "strategies" ?

I was able to find a basic example of the natural numbers and the operation `plus` in both languages, and it seems like the structure is quite similar.

Coq:

       Inductive nat : Type :=
         | O : nat
         | S : nat → nat.        (* S stands for successor *)

       Fixpoint plus (n : nat) (m : nat) : nat :=
         match n with
           | O ⇒ m
           | S n' ⇒ S (plus n' m)
         end.

via [https://softwarefoundations.cis.upenn.edu/lf- current/Basics....](https://softwarefoundations.cis.upenn.edu/lf- current/Basics.html#lab30)

Lean:

       inductive nat : Type
       | zero : nat
       | succ : nat → nat

       def plus : nat → nat → nat
       | m nat.zero     := m
       | m (nat.succ n) := nat.succ (plus m n)

via [https://leanprover.github.io/introduction_to_lean/](https://leanprover.github.io/introduction_to_lean/)

<comment><USER8> There are subtle differences. What ostensibly they are both based on the calculus of inductive constructions, there are incompatible extensions to the logic in the kernel.

The majority is convertible, though. If I had to make a programming analogy, it would be like converting between C++ and D, or different Lisp dialects. The difference is bigger than Python 3 vs Python 2, but less than F# vs OCaml. Clearly possible, in a sense, and if you can read one language, you can read the other, but automatic conversion is just out of reach due to edge cases.

</comment></comment><comment><USER10> The biggest problem in mathematics has never been proving theorems. Mathematics was never focused on proof until the formalization of math became popular approximately 100 years ago. Mathematics is used as a tool to explain the world and to create the least-complex model which predicts the data.

So computers can aid us in verifying our work--but ultimately we aren't interested in determining all the possible logical theorems. Instead, we're only interested in finding the logically valid theorems which serve the above purpose of explaining the patterns in the world concisely.

It's a subtle difference, but for computers to solve that problem requires for them to have a certain understanding of humans and our goals with science.

I think that's more than 10 years out.

<comment><USER11> Mathematicians choose what to keep according to aesthetics. Mathematics can only be defined as what mathematicians like.

For a long time, they didn't like irrationals, so anything involving those didn't count as mathematics. Zero took a long time to be accepted, starting in India. Negative solutions of quadratics were illegitimate until astonishingly recent days. Complex numbers were accepted even more recently. Greek geometers knew they lived on a sphere, but spherical geometry was too unpleasant to contemplate until quite recently, when it turned out interesting theorems could live there.

People worked outside these boundaries all along, but what they wrote didn't catch on. Laplace's transforms were ignored and forgotten until they were needed to shore up Heaviside's extremely practical D operator. Complex numbers turned out to be needed to for electromagnetics. Once people got deeply into the topic, they discovered beauty and then mathematics accepted them.

Mathematics is the world's largest and longest-running effort to produce a collective work of sublime beauty. What is beautiful goes in, what isn't dies with its creator. New forms come to be seen as beautiful as they are shown to open new vistas to explore, but very slowly.

<comment><USER12> > _For a long time, they didn 't like irrationals, so anything involving those > didn't count as mathematics._

Note that this is more or less a myth.

> _Greek geometers knew they lived on a sphere, but spherical geometry was too > unpleasant to contemplate until quite recently_

Astronomers did a huge amount of sophisticated spherical geometry, from Mesopotamians through e.g. Hipparchus and later Ptolemy, then Arabs/Persians, Indians, medieval Europeans, right down to the present.

<comment><USER11> Why then, was violating Euclid's fifth axiom explored so recently?

I assume yo have no problem with the rest.

<comment><USER13> Because they considered the sphere as embedded in 3D space.

</comment></comment></comment></comment></comment><comment><USER14> [https://leanprover.github.io/about/](https://leanprover.github.io/about/)

<comment><USER15> The entire article makes it sound like Lean is significant step in usability and power over other systems. That seems like an important thing and makes me interested to download it and play with it.

Microsoft Research seems to have done some exciting things with provers over the years - Z3 is another significant program. All under the direction of Leonardo de Moura, notably.

<comment><USER16> Power, perhaps. But I'm a bit skeptical about usability. Lean doesn't even use one of the most obvious things that make interactive proof systems far more usable - a declarative mode instead of the usual tactics-based scripts. (Yes, you can kinda sorta fake the former with "structuring" tactics, except not really - declarative proofs are really their own kind of thing.) There even used to be systems that automatically rendered inputed definitions and declarative proofs in natural language (given that the basic terms and symbols were previously defined of course) which does enable even an average mathematician to easily figure out what the system is up to. You just can't do this properly if all you have is a list of "tactics" fiddling with the prover state.

<comment><USER8> "Lean doesn't even use one of the most obvious things that make interactive proof systems far more usable - a declarative mode instead of the usual tactics-based scripts."

Citation needed. I can make a perfectly reasonable Isar-style declarative proof in Lean. Just because most users of Lean choose not to do this doesn't mean it can't be done. I should mention that users are more willing to write imperative proof code instead of declarative in Lean is because 1) the interactive debugger is responsive and easy to use, and 2) writing a nicely structured declarative proof is more work than an imperative proof.

<comment><USER17> Indeed, most of the book [https://leanprover.github.io/logic_and_proof/](https://leanprover.github.io/logic_and_proof/) is entirely term mode proofs, with tactics largely absent.

</comment></comment></comment></comment></comment><comment><USER18> I agree with this wholeheartedly. The down side is that it's going to take forever to get everyone on board. Mathematicians are very hostile to outside influences.

Constructive mathematics should be more of a thing too.

<comment><USER19> I don't think Mathematicians themselves didn't like this idea. In fact Hilbert tried it ([https://en.wikipedia.org/wiki/Hilbert%27s_program](https://en.wikipedia.org/wiki/Hilbert%27s_program)) one hundred years ago and it failed and proved to be not possible. Well maybe the Hilbert program is too aggressive, and this Lean thing is much moderate. But at the end of the day, the boundary of what program solver could do is bounded already hence no one is paying too much attention.

<comment><USER18> Things get nicer when you accent constructive mathematics.

I (I'm not the only one) think that Hilbert was wrong.

</comment></comment></comment><comment><USER20> _" So if proper mathematicians aren't interested in a proof of the odd order theorem, what are they interested in?

Example: Perfectoid spaces.

(Topic) - Proof of odd order theorem - Perfectoid spaces

Got author a Fields Medal? - Yes (1970) - Yes (2018)

High level mathematics? - No - <USER5>

Lots of PhD students and post-docs working in the area? - No - <USER5>

Talks happening about these things all over the world? - No - <USER5>

Mathematicans interested in 2019? - No - <USER5>

Earlier this year, Patrick Massot, Johan Commelin and myself formalised the definition of a perfectoid space in Lean. I am getting invitations from across the EU to speak in mathematics departments about the work. Serious piece of research, or elaborate PR stunt? Maybe both."_

They may be learning more than programming from their contacts in the computer department. Is always much easier to get something out there when it is fully buzzword compatible.

</comment><comment><USER21> > Possible: tools such as Lean will begin to do research semi-autonomously, > perhaps uncover problems in the literature. Maybe these tools will replace > research mathematicians.

> In April, Christian Szegedy from Google told me that he believes that > computers will be beating humans at math within ten years.

I wonder whether automated mathematics software would really be able to compete with humans at explaining how areas of mathematics fit together and what roles different mathematical objects play.

I'm not a mathematician so sorry for the simplistic example, but for example, would automated mathematics software be able to do something like (a) invent the complex numbers (i.e. as an object in algebra -- a "field extension" of the reals), and (b) also make a statement like "these are useful for modeling cyclical/oscillatory behavior"?

<comment><USER22> _In April, Christian Szegedy from Google told me that he believes that computers will be beating humans at math within ten years._

From my experience the track record of Outlandish Claims Made by People Having Vested Interest in Casting Them is rather poor. In fact, I can not recall a single one that was accurate.

<comment><USER23> I was at Buzzard's talk at Microsoft last week. Kevin spent a lot of time in the live talk explaining what he thinks Szegedy actually meant (there should eventually be video on youtube of this). Kevin clarified that in his opinion what Szegedy means by "math" isn't at all what Kevin means by "math", since it takes so long to get to the frontiers of research math. In particular, Kevin speculated that for Szegedy "math" is some specific research questions in combinatorics, which isn't at all what Kevin's view of "math" is. So Kevin's conclusion was that Szegedy really means that computers will beat humans at "something specific involving combinatorics" in the next ten years. Kevin wasn't optimistic about the same claim was about number theory, unless 10 years is replaced by "some day".

Kevin also explained live in his talk that his main motivation for his recent interest in interactive theorem provers is a very bad experience he had a few years ago refereeing an important research paper by some famous mathematicians. That experience very much shook his faith in the ability of humans to do correct deep mathematics... I suppose from that perspective "computers will be beating humans" might just mean that humans are convinced of a (false!) result, but computers can't be convinced of that same false result (in the sense that nobody can formalize it).

(Incidentally, some of the people at Kevin's talk were at Richard Stallman's talk in the same place the day before. Evidently RMS didn't allow any pictures or video, so not much will appear from that.)

</comment></comment></comment><comment><USER24> No one is going to care until an important proof can't be verified and a counterexample to some step is found. At that point, you'll see a sea change. This could take twenty years, or it could happen next year.

</comment><comment><USER25> There are way more libraries and plugins for Coq though. Using Lean would require writing them by yourself.</comment>