Ask HN: Immortal software: how would you write it? - <AUTHOR> Given the task of designing a software system to be used for at least 100 years, what design choices would you make to help ensure its survival and usefulness? For example, to allow it to be ported to different hardware/software platforms, or to allow it to be integrated with other systems.<p>Inspired by https://news.ycombinator.com/item?id=19272428 <comment><USER2> Given that you explicitly allow maintenance? Then your #1 problem is making an organization which persists for 100 years; the software is a detail.

If you didn't allow that, then you're asking for a complicated series of bets on future substrates your software will run on, many of decompose into "Ship an organization that will care enough about it to keep the underlying substrates running and available."

<comment><USER3> That in itself is pretty challenging: take a look at the Dow components in 1920:

[https://en.wikipedia.org/wiki/Historical_components_of_the_D...](https://en.wikipedia.org/wiki/Historical_components_of_the_Dow_Jones_Industrial_Average#March_1,_1920)

Of those, zero are in the index today. The only ones I've even heard of are AT&T, GE, Studebaker, US Steel, Western Union, and Westinghouse, and half of those don't exist today.

(As a side note, it makes me wonder if the common wisdom of buying a stock market index and holding it is really just survivorship bias. If you bought the Dow in 1920 and held _the individual companies_ , you'd be nearly bankrupt today; it's only because the index continually switches out declining companies for new large-caps that it's gone up continuously over long periods of time. That in itself might be a lesson that supports your point: the way to build a system that lives forever is to build a Ship of Theseus that can swap out and discard components that no longer serve its purposes without losing its overall identity.)

<comment><USER4> I'm not sure that your side note is a good example.

If you owned shares in the American Can Company, you would have then owned shares in Primerica and would now own shares in Citigroup which was only bumped out of the DJIA in 2009.

Several of the mining companies were bought out.

The Texas Company is Texaco.

United States Rubber Company became Uniroyal and was bought out by Michelin and Continental.

Sure, some like Studebaker and some of the locomotive companies collapsed and would have been a total loss, but it's entirely likely that holding all of those original companies would have made you a whole lot of money.

<comment><USER3> You also have to worry about bankruptcies, where even if the company is not liquidated, the shareholders are usually wiped out and the company recapitalized among debtholders. Texaco went bankrupt in 1987, for example - while it's part of Chevron now, the people who actually owned the stocks that were purchased were largely the bankruptcy creditors. Western Union went bankrupt in 1987 and 1991, Citigroup nearly went bankrupt in 2009 and was recapitalized with the U.S. government becoming a major shareholder (and diluting the existing shareholders).

</comment></comment></comment></comment><comment><USER5> As someone who just retired a fairly interesting piece of software that had been running for 20 years (not immortal, but not too bad), I have a few thoughts:

1) Have standards that don't change appreciably. I first wrote the system in the early days of the Web and put it into full production at or about 1997. The fact that HTTP, CGI and SQL didn't change much and continued to be supported helped immeasurably.

2) Use a platform that you can manage effectively. We started with SGI IRIX, then moved it to Linux, where it spent most of its life. That let us move it from machine to machine and finally a datacenter. This would have been more difficult on an OS with a commercial pressure to upgrade.

3) Be lucky with your language choice. I used Perl 5, which had just come out at the time. I started on Perl 4, but the OOP features of 5 were very attractive (was heavily influenced by articles I read about SmallTalk at the time). Because Perl 6 never really happened (for me), I avoided the Python 2.x/3.x problem.

4) Make it documentable. Every code object in the system could be easily documented (the editor included a comment field for everything, which could be automatically extracted to provide developer help). Not everyone who worked on the system used it, but I did, which made it easier to figure out what was going on years after I had been doing other things.

5) Make it straightforward. Not sure that's the best way to put it, but after I left the company, the system suffered a good chunk of updates and rewrites by people who knew more or less what they were doing, but because they had to remain compatible with the original, fairly simple architecture, I was always able to pick up the thread when I did contract maintenance on it.

6) Security is a process. At the time I wrote it, it was... let's say "fairly" secure. Some of the updates/rewrites badly degraded the capability-based security it had (the maintainers didn't understand it and thought it was decreasing performance (which, to be fair, it was), so my original security thinking was rolled under the pressure of customer requests and deadlines.

Hope that helps!

<comment><USER6> You avoided the Python 2.x/3.x problem because Perl6 isn't intended to replace Perl5 in the same way Python3 is intended to replace Python2.

Perl6 would replace Perl5 in the same way Go is a replacement for Python.

This was perhaps a little more muddy in the beginning of the Perl6 project. Larry has said that part of the reason for breaking compatibility was that the Perl5 codebase was stable enough. Meaning existing code could continue to run on it unaltered.

</comment></comment><comment><USER7> I wouldn't write software as such, but a standard; that is, a description of input, expected output, and the processes in between.

Maybe even more important than to describe expected behaviour though, is to reduce the scope to the bare minimum. I like using e.g. Git's file format as an example, because you can wrap your head around it in less than an hour. If you have a Git repository and a description of the Git file format, I'm confident you could write an application that could read the contents within a day.

I mean yeah you could probably create a codebase based on e.g. the C standard, package it together with all the necessary tools and documentation to make it compile, but you can also wonder whether that would even be relevant in 100 years. What if in 100 years it has to process a million times more data? What if in 100 years computer architecture has changed so vastly that you need a completely different programming paradigm to make it work? (think science fiction). What if instead of trying to make it work in 100 year old code, you could feed the description to an AI that can do the work?

Long story short, I think that if you want to future proof software, you should understand and describe the problem first and foremost. Write a specification of e.g. the Git file format and spec, instead of the Git application.

<comment><USER8> Agreed 100%

</comment></comment><comment><USER9> C (C99) and Javascript (ES5) are very likely to still be supported.

Most protocols will be phased out for security reasons. So I would go with direct TCP/UDP based on Linux kernel syscall (still the weakest point) in C or with fetch in JS.

Most operating systems will be trivially vulnerable to attacks, so I would go with the minimal possible attack surface (hardened kernel, firewalled, etc.)

It should survive and TCP/UDP communication makes it easy to integrate with any other software.

For the hardware I would go with a Raspberry pi if possible (and in C), otherwise just hosted on AWS.

About its usefulness, that would be hardest point. If it was useful and not updated for 5-10 years, it will be replaced however complex it is, 100 years later the problem might be generalized or not relevant anymore.

Looking at what's there:

\- 61 years old, MOCAS, OS written in COBOL used US Department of Defense, on a mainframe

\- Linux, Python, glibc, perl, emacs, ...: Most old software still relevant is a core foundation (programming languages, operating systems, text editors)

\- NASA's software: C, C++, Ada, Python. Linux for applications, Windows for end users.

So I would probably make a minimal programming language, maybe some kind of minimal Crystal.

<comment><USER10> > otherwise just hosted on AWS.

Talking about decreasing risk of failure by minimizing attack surface, but at the same time greatly increasing it by maximizing vendor lock-in, essentially betting Amazon will still be around in 100 years, it just does not feel like a very sound strategy.

</comment></comment><comment><USER11> I would write it using the oldest popular technologies currently available in production. [https://en.wikipedia.org/wiki/Lindy_effect](https://en.wikipedia.org/wiki/Lindy_effect)

</comment><comment><USER12> So you want to make sure your software can always be run on whatever platforms are in common use in the future, no matter what those platforms are, right?

Write your software for the NES. As in, the Nintendo Entertainment System. Yes I'm serious.

The Nintendo Entertainment System is the most stable platform I can imagine. No aspect of the platform can ever be modified, much less depricated or removed. Furthermore, NES emulators are relatively simple to write and have been ported to basically every major hardware platform, and I don't see this changing any time within even the next century.

Make sure to test your software against real hardware, so you know you aren't relying on emulator bugs that may not be replicated on a future emulator.

I've actually been thinking about this for a while. Old game consoles are, as far as I can think of, the most stable and cross-platform computing platform we have.

Of course, if your software requirements exceed the capabilities of an NES, this won't work.

</comment><comment><USER13> Lindy's effect comes to mind: immaterial things that were around for a long time, are still likely to be around for a long time.

So, using text files for storage could be really good, if possible. A desktop application could be written as a single process binding to a port and displaying a HTML-based GUI could work as a console, probably in all kinds of unforeseen ways.

As for the language, I would write it in Perl. There's gonna be an interpreter in an every UNIX based box for many years to come, and the community thinks backwards compatibility is a feature. I don't know if they'll keep it going for a hundred years, but we might also have bigger problems than keeping applications going.

</comment><comment><USER14> Well a software is reflection of present working. Write any software, it remain that way if your business remain same for 100yrs. Which means if you don't grow, scale, and keep using 100yrs old tech and still survive in market. If not, than who will use it? You still can run PacMan on modern PC, and it is what 40+ yrs for pacman ? But how many plays it now? Software cannot and shouldn't be immortal. The always Evolve and adjust to environment. They don't remain constant.

</comment><comment><USER15> First you define a very simple virtual machine so that the part that needs to be ported to different hardware is minimal. Then you write software for that machine using tools that are themselves written for that machine. Make sure that the parts that are needed for software development inside your VM are very precisely defined.

<comment><USER16> So far, no software has managed to last 100 years, and no computer language has either (though if C isn't still going, _something_ has happened, IMHO).

You have the right idea. I want to note that, in a sense, the program would partly be written in the specification language with which ths VM is defined. One could use English - probably OK, though English has shifted a bit in the last 100 years (is it shifting more slowly with the internet, or faster?). And you can use mathematical notation, which has also shifted, but more slowly.

That helps with porting, so it can _run_ , but the question of maintaining the software remains (changing it to meet changing circumstances and needs)

\- Is it better to totally nail it perfectly, so only known aspects need to change? (A bit like your VM approach, in some ways).

\- Or make it minimal, simple and clear, so the core can be preserved, modified, even rewritten, without losing the basic idea of it?

</comment></comment><comment><USER17> _Given the task of designing a software system to be used for at least 100 years..._

I wouldn't build it in software if I had the choice. I'd build a mechanical system. Software, and electronic computers in general, haven't proven themselves as good long term bets yet. There are mechanical systems around that have been going for many hundreds of years (eg [https://en.wikipedia.org/wiki/Salisbury_cathedral_clock](https://en.wikipedia.org/wiki/Salisbury_cathedral_clock)).

</comment><comment><USER18> I'd go down different routes, depending on what the software system was for.

Every software system is about translating the work of some humans into the rules that some body of humans cares about. As an example, let's take something that we humans like to do a lot: buying things.

So let's design an in-person payment system. Select item to buy, pay for item. Totally simple, right?

So the first iteration uses a touchscreen kiosk? In twenty-to-ninety years, that will look soooo dated as everyone is paying with their hand gestures or their minds. ("Ma, I'm blinkin but it ain't buyin!")

The part of the system that lives for 100 years needs to have no concept of a user interface.

So you produce abstractions, you define a boundary to your system that is described as simply "user submit payee details". Now that bit can be swapped out - as long as it receives a valid user payment bundle, we're good.

What about currency? Not too long ago, some countries moved from a coinage- based pounds-shillings-ha'pennies system to one based on hundredths of a pound. Soon after, many european countries banded together and moved to a single currency, still based on hundredths though. Next step might be to pay via bitcoin, at which point each mundane transaction will probably cost trillionths of a satoshi, and we'll come up with some system for calculating what order of magnitude your payment is, just to save us typing out all those zeros. So we might be representing money as 1.8265e-972. Maybe we'll write it as 18\927. Maybe it'll all be emoji, and in discussion we just call it "18 breads". Maybe society will have collapsed and we're paying with bottle tops. Two Buds and a Pepsi.

Whatever we do, how we represent the cost will either need to be so vague that we can never do any calculation on it, or again, we farm the representation and manipulation to another system that doesn't need to last for a century.

In the end, our program looks like:

ask_user_what_they_want_to_buy => find_price_of_users_basket => take_payment => inform_user_of_success

And that's all assuming that users in the future leave their homes (could be radiation), exchange money for goods (could be post-scarcity) or that there is such a thing as a company, much less that the company that commissioned the system even exists.

So my answer is probably give up and do something easier. Aim for 20 years. You'll still fail, but at least the failure will cost less.

</comment><comment><USER19> Use forth.

Pro: Forth is standardized. It runs everywhere. It's most likely the first language that will be ported to any new platform. If it isn't avaible on a new platform yet, you can write your own interpreter.

Contra: Today's software requirements most likely are too complex to be handled in forth. You might need 100 years to debug your program.

</comment><comment><USER20> Depends on what kind of software it is:

If its speed-oriented, C99(supported by most platforms).

If its security-oriented and needs to be maintained(e.g. a large project): Ada.

If its just needs to survive as long as possible and its web-based, JavaScript - amount of javascript multiplies with size of the web and all of it needs to work.

For everything non-performance critical, shell scripts and makefiles.

What i wouldn't pick:

1.Any language without a clear standard and backward compatibility.

2.Any language with one compiler/interpreter/library/framework dominating the market. ("Single-point-of-failure").

3.Any closed-source language compilers/frameworks/engines/libraries.

4.Any niche academic language, especially with poor FFI and lack of libraries/frameworks.

5.Anything that has a steep learning curve. You'll probably want it to be easy to modify, no heavy abstraction and no complex conventions.

</comment><comment><USER21> technically:

\- Separate the UI from the application and business logic and make the interface to the latter clean and well documented.

\- Either use a currently very widely deployed ecosystem (aka Java) which will have a fair chance of evolving or being emulated etc over the course of 100 years, or use a self-bootstrapping environment with a simple core like forth or scheme/lisp etc, where everything you need is self-contained.

But really what makes a _system_ still useful in 100 years or further is that it solves a problem so well, so reliably, etc, or just well enough if it's a huge and complex problem, that there's no incentive, or the investment would be prohibitive, to replace it with newer technology. Think CICS.

</comment><comment><USER22> Not quite the same, but [https://www.osti.gov/biblio/10117359](https://www.osti.gov/biblio/10117359) discusses a long term (10000 years!) system for marking areas of high radiation.

<comment><USER23> The idea how incredibly long nuclear waste needs to be at least marked (better: properly dealt with) always baffled me. You use that stuff now and it will be dangerous waste for the next 10 millenia. Yet you wil hardly find any private nuclear corporation that even has a plan for the next century.

I suspect most nuclear powers depend on the private sector for maintaining their nuclear arsenal, and having them _really_ factor these future risks, storage costs and insurances in would make nuclear energy uncompetitive.

Gladly in most nations the public readily jumps in and pays the bill (and will have to do so for centuries). Imagine the outrage if any renewable energy would demand such things from the public.

I understand the fascination with nuclear energy, look at the Voyager, which powered by a nuclear battery flew for two decades through the void. But the points I raised above are only speaking of nuclear energy as it is now used – I can imagine future cleaner reactors with less waste. But right now nobody has any incentive to really put money into it.

<comment><USER24> Compare that to carbon dioxide, which also lasts in the atmosphere a long time (roughly 1-2 orders of magnitude less than nuclear waste, which on the other hand has very localised effects) and is released by thousands of coal power plants unchecked and with minimal regulation all over the world. Not to mention the deadly air pollution, which causes chronic illnesses and death in the thousands.

<comment><USER23> CO2 like nuclear waste is effectively cost that you let future generations pay. Nuclear energy as we have it now is not a solution.

The same money that would go into taking over costs for private nuclear companies could easily flow into new technologies and energetic cycles, some of which the US is actively working against on political and economic levels.

Climate change will have an incredible impact on migration, so the best way to reduce CO2 is to make it in a way that gives Africa and its people a future. You could e.g. Force CO2 neutrality for carbon plants by having them plant trees in Africa. Which not only would reduce their CO2 impact and create jobs where they are needed to stop future drama, but increase soil stability, help with the increasing temperatures and potentially even provide food.

Btw. Coal plants are heavily regulated over hear in Europe — the filters they have to have have the size of a little house.

The question is: is the future more important than beeing/staying the geopolitical and economical leader? It is only about priorities and not about the unavailability of solutions. Are tou willing to give up long term competitveness for short term gain?

Petrol could be replaced by closed Ethyl cycles produced by solar panels in the sahara (which would again create jobs there) and we wouldn't have to use electric cars whose battery production costs more CO2 than the car would save. The infrastructure to use Ethyl is basically there (If I am not wrong the Chinese add over 10% of Ethyl to their petrol already).

I think the solution are closed cycles. If water wouldn't have a cycle on it's own or without us creating it we would all have died of thirst.

</comment></comment></comment></comment><comment><USER25> You write a temporary shell script that "should suffice for now but will replace it in a few weeks with proper solution". Done.

</comment><comment><USER26> Maybe look at SQLite? Extremely portable between operating systems, comes in a single C file for maximum ease of integration to your application.

I have no doubt SQLite deployments will be up and running in 2100.

</comment><comment><USER27> It seems like too many people are planning for the worst possible case, i.e., computers get worse.

What if they get much, much better? Can your design be adapted to use technologies that don't exist yet? Is your design parallelizable?

If people or machines get used to sub-picosecond runtimes, someone would demand your program gets rewritten. I think that's a more likely death scenario for your program than a reversion to punch cards and abacuses.

</comment><comment><USER28> I'll write it in php. That thing refuses to die.

<comment><USER29> Easily readable and based on text files is a good way to last a long time. Yes, you can make bad code in php, but you can also do that with any language. It's also easy to make simple, useful code in php which is why it stays around.

</comment></comment><comment><USER30> Don't reinvent the wheel. If you are thinking in terms of centuries, look at the work done for software preservation (mostly through emulation). It is already the standard practice for digital libraries, the preservation of games, and much more. For some research: [https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=soft...](https://scholar.google.com/scholar?hl=en&as_sdt=0%2C5&q=software+preservation) The Bodleian Libraries have an excellent presentation on the subject: [https://libguides.bodleian.ox.ac.uk/digitalpreservation](https://libguides.bodleian.ox.ac.uk/digitalpreservation) So, you basically design your software, and make sure there is an emulator that is able to impersonate the hardware you run it on.

</comment><comment><USER31> I don't have any software that's been in use for 100 years but I have a couple of items in the 15-20 year range.

About the only thing that they have in common is that they started with the thought: "I'll just knock this up in 5 mins then come back and do it properly when I have the time".

</comment><comment><USER32> I like Techdragon's idea "I'd write it in math" and Onion2k's "I'd build a mechanical system."

A lot of it depends on the complexity of the software and the complexity of the interface to the user(s). If the software merely needs to do something simple like accounting, I think a mechanical system could be made, especially one that processes punch cards (see Vaylian's answer). Mechanical systems usually require some maintenance, but if you made many copies of the mechanical system and many copies of the documentation, then you could probably still run it in 100 years on one of the mechanical computers.

If the software is an unchanging, complex, but it has a simple interface (like terminal standard input/output ascii), then consider: 1) writing the software in an old language like C or Lisp, 2) compiling the software into a Turing machine, and 3) writing a program in Fortran, C, or Lisp that can run the Turing machine quickly. (In particular the implementation should make memory access a constant time operation.)

If the interface is complex, like the internet, or graphical, then you are pretty much hosed. Somebody is going to have to maintain the interface, but you could still use the Turing Machine idea to implement the logic that is not tied to the interface. As Patio11 said, your #1 problem is "making an organization which persists for 100 years." I suggest finding an organization that has lasted 100 years and making one person responsible for the software with the idea that he/she will maintain the software/hardware for at least 40 years and then pass along the responsibility to someone else. You would need some good contracts to make this happen, but it is not too unusual for a teacher to teach in the same high school for 40 years, so you could probably design the contracts accordingly.

You should probably write the documentation in English and put it on acid free paper.

The bottom lines are: 1) Compile into a very very simple language, 2) Implement on very simple hardware (Onion2k), and 3) Set up a human organization (Patio11) as simple as possible with good contracts that will last 100 years.

</comment><comment><USER33> To start, I would choose systems and languages that have, so far, stood the test of time as there's no reason to think those won't be around for 100 more years. I would write the code to solve the exact problem and not try and create some application framework that would allow for any feature request because you don't know what is going to happen in 2 years much less 98. I would do the absolute simplest thing necessary to solve the problem. The goal is to minimize the surface for bugs to manifest. I would use plain text for storage. I would strictly avoid anything "flavor of the week."

</comment><comment><USER34> Use XML or ASCII text flat files as your data storage solution. Make it as self documenting as possible.

I would build on the java vm or the JavaScript vm. Both those will maintain a lot of backwards compatibility and have a large population of developers for the foreseeable future.

I would buy your own domain and not depend on a third party solution for your software's web presence (GitHub pages, etc) because those businesses come and go over decades. In 100 years we'll still be doing DNS or something similar.

</comment><comment><USER35> Have your major components communicate only via networked requests/responses using only language-indepedendent protocols such as SOAP, AMQP, and using only message payloads designed upfront; validate payloads

Use standardized infrastructure components with multiple, widely used implementations such as SQL RDBMs

Use standardized languages with multiple, widely used implementations such as C and JavaScript (ES5 or even ES3); if you can help it, avoid JavaScript-heavy frontends alltogether

</comment><comment><USER36> Software to do what? Run one instance or a billion instances? Networked or inaccessible? Updates or no updates?

The challenges are very different for banks versus space probes. Voyager is approaching 40 years: [https://www.popularmechanics.com/space/a17991/voyager-1-voya...](https://www.popularmechanics.com/space/a17991/voyager-1-voyager-2-retiring- engineer/)

</comment><comment><USER37> Make sure it works with punch cards. No, I am not kidding.

Yes, paper can also be subject to destructive forces, but fixing damages is probably easier than with other media.

<comment><USER38> If you are designing software that can run for 100 years you should try to make it runnable in year 1.

There are approximately zero punch card readers for new software today.

<comment><USER37> > There are approximately zero punch card readers for new software today.

Correct. But there are also approximately zero software projects with the these long term requirements today. Punch cards might be primitive, but they are relatively easy to create hardware for.

Just assume you need to have software running in space. Cosmic radiation is a major problem. Punch cards are very reliable in such a situation.

<comment><USER38> Punch cards in space??

<comment><USER37> Not unlikely, if we are talking about creating a system that should still be useful/useable in at least 100 years.

</comment></comment></comment></comment></comment><comment><USER39> I'd write it in math. The entire thing as close to pure mathematical notation as possible. As truly annoying as it could be to complete the process, depending on the project size and software complexity. It's the only thing I'd trust to survive ANYTHING the next 100 years could throw at the work.

The availability of software designed to "compute math" is something I am prepared to bet on lasting the next 100 years.

</comment><comment><USER40> If the aim is survival then perhaps an evolutionary software that adapts to the challenges of the time would probably be appropriate.

</comment><comment><USER41> If we subvert the old adage that past performance is no guarantee of future performance, then I'd target the Win32 API. GUI Windows applications written 20 years ago still work today without any modification or even recompiling and on more platforms than ever (because of Wine). I don't know of any other platform with that track record.

<comment><USER3> IBM 360 applications written 55 years ago still work on System Z mainframes sold today...

<comment><USER41> I feel like a niche mainframe platform is hardly comparable. You could as easily say that pencils sold today still support writing ones and zeros on paper. For me, a certain threshold of graphics and networking modernity that began to take shape around 1998 is needed to satisfy this exercise.

I mean, don't get me wrong, 55 years is no slouch, but 360 mainframe software used today feels archaic and Win32 software used today feels exactly the same as it did when it was new. The paradigm of the mainframe ended when the paradigm of the personal computer began.

How many System Z mainframes are sold today?

<comment><USER3> That's likely a function of when you came of age. (FWIW, I also came of age in the late 90s, and a Win98-style GUI feels perfectly natural to me.) Folks who were working with computers in the 70s are perfectly comfortable with green- screen terminals. Kids who grow up today think anything that doesn't look like either a mobile app or a Bootstrap webpage is archaic.

System Z revenue was up 70% in 2017, to nearly $3B/quarter [1]. That's pretty appreciable for any product. The PC market is definitely bigger, but it's on the same order of magnitude as brand-name PC manufacturers. Acer, for example, makes about $2B/quarter [2], while Apple makes about $8B/quarter from Macs [3][4]

[1] [https://www.itjungle.com/2018/01/22/ibms-systems-group- finan...](https://www.itjungle.com/2018/01/22/ibms-systems-group-financial- rebound/)

[2] [https://finance.yahoo.com/quote/2353.TW/financials?p=2353.TW](https://finance.yahoo.com/quote/2353.TW/financials?p=2353.TW) (30 TWD = 1 USD)

[3] [https://www.statista.com/statistics/382260/segments-share- re...](https://www.statista.com/statistics/382260/segments-share-revenue-of- apple/)

[4] [https://9to5mac.com/2018/11/01/apple-earnings- fy18-q4/](https://9to5mac.com/2018/11/01/apple-earnings-fy18-q4/)

</comment></comment></comment></comment><comment><USER42> Commit node_modules.

</comment><comment><USER27> LISP

\- has survived a very long time already

\- can trivially be implemented on top of any instruction set or VM that will be used in the future

\- basically no syntax, so its (nonexistent) syntax can't go out of style

\- supports every possible programming paradigm, even ones that don't exist yet

</comment><comment><USER43> The number one thing you would need to do is make it easy to modify safely.

Software will always need to change in that timeframe. If you make it head or risky to modify it then at some point it will get replaced.

</comment><comment><USER44> you would design a yearly service contract into that software. that's the only thing that would keep it up in some condition. you know the "wise old wizard" in scifi/fantasy stories? that's the guy who's gonna be maintaining your software until he passes on the mantle to an apprentice when death is imminent.

i like the idea of software as replacing a societal service so as long as that society survives in some form your software will survive as well(for eg our current banking systems are such software)

</comment><comment><USER45> Go pro:

[http://www.vpri.org/pdf/tr2015004_cuneiform.pdf](http://www.vpri.org/pdf/tr2015004_cuneiform.pdf)

</comment><comment><USER46> Discrete apps aligned to SRP, such that they compose a System (Systems Thinking), solving the domain instead of the use case.

</comment><comment><USER47> I'd make it to accept plain text as input and produce plain text as output.

(Picked that up from Rob Pike, I think)

</comment><comment><USER48> If history is anything to go by:

Write it in COBOL.

</comment><comment><USER49> Forget about it. Ideas are more important than code.

<comment><USER29> Which is why code that makes presenting ideas simply tends to stick around.

</comment></comment><comment><USER50> As a language, not as an application.

COBOL, for example.

</comment><comment><USER8> I would not write it at all. Instead, I would write only the test cases, thereby documenting the requirements. I would then evolve the software using modern machine learning techniques which are capable of program synthesis: [https://arxiv.org/abs/1802.02353](https://arxiv.org/abs/1802.02353) The underlying implementation can keep changing but the requirements and tests don't change so much.</comment>


Mp3 support now coming to Fedora Workstation 25 - <AUTHOR> https://blogs.gnome.org/uraeus/2016/11/10/mp3-support-now-coming-to-fedora-workstation-25/ <comment><USER2> Also see [http://www.spinics.net/linux/fedora/fedora- legal/msg02862.ht...](http://www.spinics.net/linux/fedora/fedora- legal/msg02862.html)</comment>


Zappos CEO on how Twitter has made him a better person - <AUTHOR> http://blogs.zappos.com/blogs/ceo-and-coo-blog/2009/01/25/how-twitter-can-make-you-a-better-and-happier-person

<comment><USER2> I find this one-way broadcast from leader to follower usage of twitter to be kind of... evil.

I'll just single out one bit that I find truly annoying:

        * Cause my followers to smile with something funny
        * Inspire my followers (for example, with an inspirational quote)
        * Enrich my followers' perspectives (such as with a link to an interesting article)

It's all one way. Leader-follower. Not one thing on there is actually him learning from someone else, except for the (presumably always positive) feedback from his followers.

Every link to twitter on there is his tweets. The closest we get to things actually going the other way is a picture of a guy with a cat on his head.

<comment><USER3> Your observation is correct, although I can tell you that Tony does interact back with people.

I made a comment once that Zappos should add Kangol hats to their merchandise. I really sent it more in the ether than to him directly, but he direct- messaged me back saying they would look into it.

Another time I was at a tradeshow and saw an interesting RFID inventory solution. I direct-messaged Tony to tell him about it, and I got a thanks reply back shortly after.

I think he's paying attention to and listening to what others are saying. I took the tone of his article to be more positive, and I do believe that he has far more followers than "followees", which is not abnormal for Twitter pseudo- celebrities.

<comment><USER2> I'm willing to concede that it might not reflect his actual behavior because I checked his twitter page and he does have lots of "followees."

</comment></comment></comment><comment><USER4> "What would you do differently if you were always on camera?"

One person I know calls this "glass house living" -- and I wish more people lived life that way.

<comment><USER5> That would be awful, though. To always be considering every move you make and everything you say because it may offend someone. Just the fact that I have a business requires me to censor myself, which I hate. That's absolutely nothing compared to being on camera 24/7.

I suppose if I was always on camera I'd kill myself because it would be a life with far too much compromise.</comment></comment>


The Evil Within the Comparison Functions (C,C++,C#) - <AUTHOR> https://software.intel.com/en-us/articles/the-evil-within-the-comparison-functions <comment><USER2> This is why you should use clever language features such as macros (C) and pointers to member data (C++). If your code looks like this, there's no scope for accidentally comparing two fields in the same object, or comparing different fields in the two different objects:

            return less_helper(pt1, pt2)(&pt::x)(&pt::y);

with pt::x and pt::y being integers, this ends up the same size as the open- coded version on the clang versions I tested, but two instructions longer on the gcc versions I tested, because gcc does not succeed in eliminating a needless comparison of y<x. (x86_64 in both cases) This could be fixed by taking away the automatic conversion to bool and requiring the last comparison in the chain to specify that it _IS_ the last one.</comment>


Unify – Social intelligence platform that helps you do smarter marketing - <AUTHOR> http://tryunify.com/

<comment><USER2> It is an interesting piece of software. What is the differentiator to other social media account management tools?

And I am not sure, but I guess you are mixing the sites from chargeloop and unify or so? [http://tryunify.com/guidelines.html](http://tryunify.com/guidelines.html)</comment>


George Lucas nearly wrote a perfect prequel trilogy. He just didn't notice - <AUTHOR> http://www.gamesradar.com/george-lucas-nearly-wrote-perfect-prequel-trilogy-he-just-didnt-seem-notice/ <comment><USER2> I don't think I've ever had a conversion about the story. It's very well thought out.

The problems with the prequels is the casting. If it wasn't for Portman and McGregor the films would have killed the franchise.

The new film has corrected the casting mistake, which is amazing since they picked unknowns.</comment>


The Mythos of Model Interpretability in Machine Learning - <AUTHOR> https://queue.acm.org/detail.cfm?id=3241340 <comment><USER2> Its funny, and characteristic of that part of the field, that mathematical provability in not even mentioned explicitly.

A model (and a learning algorithm) should be interpretable if we can clearly state the assumptions, and prove that under these assumptions, we get what we state we get.

We can predict the movement of the planets (short term). This is interpretable, because we only assume a model of 3d space, and Newton's laws(1). The rest is mathematics, which gives us elliptic trajectories, etc. The resulting predictions may be wrong, due to wrong assumptions, but the model is still interpretable.

Linear regressions, histograms, decision trees(2) are all interpretable. We know exactly what they do, under proper assumptions. Yes, these models can be sometimes manipulated. But we know this precisely because we know exactly what they do. Whether we should use these models, or statistics in general, in courts etc, is an ethical decision, and perhaps practical decision, similar to whether we should use the death penalty. Has nothing to do with interpretability.

With CNNs, at the moment we have very vague understanding of both the assumptions and the models. When we do have this understanding, we will likely also have better and simpler models.

Mathematics was always a tool for understanding reality. Proving is understanding. And it was pretty successful so far.

(1) and some other things -- the rest of the planets are far enough, etc. (2) given enough data wrt the size of the tree, under proper distributional assumptions.

<comment><USER3> I don't agree with this. For example, you can set up a collection of assumptions to underpin frequentist statistics, and then create a set of theorems about consistent or unbiased estimators, and develop a theory like that of p-values.

But then in a practical setting, the model doesn't correspond to something physical or to the inference goal of a practitioner. The p-value tells you something about the relative extremity of a certain statistic that, under certain assumptions, will have a particular distribution.

The practitioner wants to know the posterior probability of a particular model or hypothesis given the data, and the frequentist outcome literally can't comment on it.

In this sense I think being able to state assumptions and connect them to outcomes with theorems is good, but not always necessary or even sufficient for applied work.

And there can creep in nasty subjective aspects of the problem that are uniquely defined by the specific inference goals at hand. Proofs about how a model would behave under assumptions are often totally useless in these cases. Practitioners don't use linear regression for complex financial models because the assumptions hold or because of nice properties _if_ the assumptions held. They use them because it's simple and easy and sort of "just works" despite glaring flaws.

<comment><USER2> I don't think there's a contradiction. My comment was about what it means to understand the model, or perhaps about what it means to do science, but not about what is necessary or sufficient for applied work.

But if we do talk about that though. Yes, science proceeds by modifying or sometimes totally abandoning the assumptions. No silver bullet, and the point is to assume as little as possible.

In general, if things "just work", its not a reason to abandon attempts to understand them. Things "just work" until they don't, especially in finance.

Consider two guys. Guy A, he predicts that the sun rises every day and is there until dusk. It "works", and so, as the joke goes, he does not touch anything. And guy B, he knows physics and has telescopes. And he can predict the solar eclipses. He knows the failure modes of the model of guy A. Consider the difference between the two.

<comment><USER3> I feel like you're arguing against yourself here. Guy A's shallow model would easily be considered more interpretable than Guy B's sophisticated astronomical physics model, though Guy B's model is clearly able to articulate more detailed predictions about what might happen. Guy B's model is less interpretable, but because it "just works" in a vastly greater number of ways (can be applied to the moon, constellations, other planets), people use it or care about it.

If all that astronomy offered was a more verbose description of why the sun rises, yielding literally zero different predictions from Guy A's super simple model, no one would care, and might call Guy B a witch!

I'd argue that what matters for science is pure predictive efficacy. That's it. If you can explain something, it means you can accurately predict something about an unknown state of affairs that would falsify your model if your prediction is wrong. That's it. Any other kind of explainability is just a matter of linguistic convenience.

Of course there is overfitting, etc., but that's just part of refining the model to yield greater predictive accuracy on unseen data (less generalization error). It's still all about putting your predictions where your mouth is.

If the differing theories of Guy A and Guy B cannot be separated by actually testing the predictions they make, then there is no "interpretability" — just linguistic hand waving.

Incidentally I think a lot of modern focus on interpretability is actually about how to be a political gatekeeper or taste-maker through linguistic hand waving, and is not about developing models who better survive the rigors of being required to make real predictions about states of affairs.

</comment></comment></comment></comment><comment><USER4> You may prefer this link: [https://arxiv.org/abs/1606.03490](https://arxiv.org/abs/1606.03490)

<comment><USER5> extra points for linking to abstract, not pdf :)

</comment></comment><comment><USER6> I think interpretability is much more correlated with model size than model type.

Small neural net is much more interpretable than decision trees with thousands of nodes.

<comment><USER7> I challenge that last statement. Have there been any neural nets that actually have a solid interpretability? Usually those are more on the lines of effectiveness in training and validation data. With no real clue as to what the driving features were.

<comment><USER6> [https://distill.pub/2018/building-blocks/](https://distill.pub/2018/building- blocks/) This seems pretty good to me. And the nets are not exactly as small as I meant.

I work with random forests and build forest which have more than 80000 nodes per tree. Other than some basic computation of feature importance, it is a black box on the same scale as modern neural nets, maybe even worse.

<comment><USER7> Thanks for the link. Will take me some time to digest it. Last time I looked at one of these, it was less informative than I'd care to admit. I want to know why a classifier found a vase. The answer is typically some form of "because it was able to see the vase."

Would be more interesting to see a classifier that predicts something is going to happen. A predictor that can predict a person is about to step off of a curb, for example. Is it pose of the person? Did it require seeing multiple frames of the person, such that it was an inertia preditor?

So, yes, comparing things to gigantic trees can make things tough. But I thought that was the beauty of boosting and building up smaller trees. Most of them are usually more interpretable than you might expect.

<comment><USER6> > So, yes, comparing things to gigantic trees can make things tough. But I > thought that was the beauty of boosting and building up smaller trees. Most > of them are usually more interpretable than you might expect.

Regarding your last paragraph, I found this paper [https://arxiv.org/pdf/1504.07676.pdf](https://arxiv.org/pdf/1504.07676.pdf) worth reading. Excerpt from the abstract: "We conclude that boosting should be used like random forests: with large decision trees and without direct regularization or early stopping."

</comment></comment></comment></comment></comment><comment><USER8> An alternative proposal put out by NYU's AI Now think tank, is to require a kind of "environmental impact statement" for any black box used in government or public sector applications. Instead of rolling out an experimental Predictive Policing agent en masses for example. A "sandbox" is created first. And actual humans in the loop judge if it is prone to bias, unfairness or harm.

Public accountability is designed into the algorithm at the outset.

[https://ainowinstitute.org/reports.html](https://ainowinstitute.org/reports.html)

</comment><comment><USER9> I thought this was a good post!

In fact, I had just read a CVPR '18 paper that did the kind of thing he mentioned--presented an 'interpretable neural network' that assumed what interpretability meant...

</comment><comment><USER10> Anyone have other good references for this topic?

<comment><USER11> Interpretable ML [1] is a small online book on interpretable methods. Even if the content itself is rather shallow, it has links to a lot of more focused papers on the topic. Towards A Rigorous Science of Interpretable Machine Learning is one of the most thorough papers on interpretable ML that I have come across. The main author, Finale Doshi-Velez, has a done a lot of interesting work on interpretability [3].

[1] [https://christophm.github.io/interpretable-ml- book/](https://christophm.github.io/interpretable-ml-book/)

[2] [https://arxiv.org/abs/1702.08608](https://arxiv.org/abs/1702.08608)

[3] [https://finale.seas.harvard.edu/publications](https://finale.seas.harvard.edu/publications)</comment></comment>


5 seconds to take action on the bushfires and climate change - <AUTHOR> https://www.soapboxproject.org/archives/act-jan2020-bushfires-climate-change-tips <comment><USER2> Regardless of what this article says, I'd stay away from the Red Cross: [https://www.npr.org/2016/06/16/482020436/senators-report- fin...](https://www.npr.org/2016/06/16/482020436/senators-report-finds- fundamental-concerns-about-red-cross-finances)</comment>


Opsmatic - <AUTHOR> https://opsmatic.com/ <comment><USER2> Thoughts:

1\. The theory behind this thing is really exciting. Having visibility into the messy world of software configuration & deployment is incredibly useful for ops and dev.

2\. It's too bad this isn't open-source so it could be adopted by everyone and become a defacto standard. Why would I pay for something if I don't even know if it works for anyone else, much less can open it up and see how the gears work? I mean, give me some screenshots at least, or like, any example of why I should invest my time in this product [other than quotes from a few customers]. They seem to be losing out on a really simple business strategy.

3\. _' deb [https://packagecloud.io/opsmatic/public/any/](https://packagecloud.io/opsmatic/public/any/) any main'_ ?? I don't know who opsmatic and packagecloud are, so i'm damn sure not going to add their repo into my list of approved sources! What if they 'accidentally' push an update to glibc and brick my whole cluster? I might be able to use pinning to keep updates to only specific packages, but in theory their opsmatic packages could depend on a new glibc and it then bypasses the pinning. (With Yum I can do simpler includes/excludes so i'm not as worried)

4\. I'm not running a new, closed-source executable by an unknown company as root on all my production boxes, or even my dev boxes. Maybe if I knew it was a standalone [non-networked] product. And really, it shouldn't need to be root if I wanted to run it inside containers, for example; just have it index whatever software it can read with the privileges it has.

5\. That link map at the bottom of the page? Would be more useful to me if you put it as the header, as that's the first thing I want to click on for more information. Maybe i'm crazy, but my first interest in seeing a new service like this is not signing up for a trial [read: spam] without knowing anything about the product.

</comment><comment><USER3> Looks really cool but "The Opsmatic Agent runs as root on your hosts, so security is our top priority. The Agent is a watcher -->and does not execute any code.<\--" seems very badly phrased.

</comment><comment><USER4> I'm curious how this compares to something like GuardRail by ScriptRock.</comment>


Outgrow.Me is Where Kickstarter Projects Go When You Can Actually Buy Them - <AUTHOR> http://www.domain.me/blog/outgrow-me-kickstarter-indiegog-5098

<comment><USER2> Great article. Thanks for the coverage :)</comment>


Google Chrome's new Meltdown and Spectre safeguard is a memory hog - <AUTHOR> https://mobilesyrup.com/2018/07/13/google-chromes-new-meltdown-and-spectre-safeguard-is-a-memory-hog/ <comment><USER3> Given a choice between +10-13% memory use (hardly a "hog") and a giant gaping security hole, I'll take the former, thanks.

<comment><USER4> I agree I wouldn't complain given the trade-off, but Chrome is one of the he biggest memory consumer on most people's desktops. A 10-13% increase from one of the biggest process I have running is significant.

<comment><USER5> If it's causing memory pressure on the system to the point of thrashing, sure. But is that the case or is able to react well to other RAM hungry processes on the system? Not using additional spare memory if it gives the user a better experience seems like a no-no.

<comment><USER6> Worse is worse. There is no upside to using more memory. You don't know what a given system has for memory, Chrome needs to be as efficient as possible. Chrome is even worse than before with this change. Creating an ideal situation to make Chrome fit is disingenuous.

Hopefully in time they find a way to retain safety without furthering to bloat their browser.

<comment><USER7> > There is no upside to using more memory.

Sure there is. Most complex systems can trade-off between memory usage and CPU. With more memory, the garbage collector doesn't have to work as hard, caches stay warm, etc.

> You don't know what a given system has for memory,

Chrome knows how much memory is available on your system, and it adapts its own memory usage based on this.

V8 is designed to push the garbage collector harder when memory usage is tighter -- reducing usage at the cost of JavaScript running a little slower.

I believe Chrome is also capable of freezing entire background tab states and saving them to disk, to be restored later when you go back to the tab. But there's no reason for it to do that if you have plenty of RAM to spare.

<comment><USER6> That's why you don't use garbage collection. Wasm or static pages only. V8 has been the worst thing to happen to the web, it made JS moderately performant. That's a terrible thing, now we have all this additional complexity thanks to Google's attempt to make the web an appstore.

</comment></comment></comment></comment></comment></comment><comment><USER8> The article didn't link to the actual blog post: [https://security.googleblog.com/2018/07/mitigating- spectre-w...](https://security.googleblog.com/2018/07/mitigating-spectre-with- site-isolation.html) which has some more nuance:

"on the plus side, each renderer process is smaller, shorter-lived, and has less contention internally, but there is about a 10-13% total memory overhead in real workloads due to the larger number of processes"

<comment><USER9> That doesn't even really tell us much.

We need more information. For instance, it would be enlightening to have an understanding of how, exactly, a "real workload" is defined? How many tabs? What's going on in the tabs? Etc. A definition of "real workload" would at least allow us to compare that workload to our own typical workloads. (Which I assume would likely be different for an administrative assistant vs an executive vs a developer vs a researcher vs etc etc etc.)

</comment></comment><comment><USER10> Headline in an alternate universe: "Google Chrome saves 10% of memory usage by disabling vital security protection"

<comment><USER11> Headline in alternate universe: "With the powerful computers available in the mid-late 2010s, it is now practical to browse an international web of documents, from your own home!"

Seriously - just this _increase_ is 2x the total memory of a computer I used to browse the internet 20 years ago. People, including programmers, seriously misunderstand how amazingly powerful today's computers are, and how amazingly bloated and inefficient today's applications and websites are.

<comment><USER12> Couldn't agree more...People were creating universes with 1.44MB on floppies. Instead, Viber desktop app installer, for example, is a 133MB download, ~300MB installed and probably uses double the RAM...

<comment><USER13> Never mind a universe in 1.44MB; Elite did it in 32KB, albeit with wireframe graphics. [1]

The bloat of many current desktop apps, each with their own copy of a large- footprint GUI toolkit or rendering engine, is indeed sad by comparison. I hope this situation will change when Windows 7 and IE 11 are finally history, meaning that desktop app developers can count on the OS to provide a modern web rendering engine on all platforms.

[1]: [https://www.filfre.net/2013/12/elite/](https://www.filfre.net/2013/12/elite/)

</comment></comment></comment></comment><comment><USER14> Honest question: The interesting question, IMHO, is not how much Chrome is affected, but how strong the impact is compared to other browsers. Do they suffer similarly? Have they found a way to avoid enlarging the memory footprint? Do they ignore the issue?

( _Please_ tell me it's not number 3!)

<comment><USER15> [https://security.googleblog.com/2018/07/mitigating- spectre-w...](https://security.googleblog.com/2018/07/mitigating-spectre-with- site-isolation.html) says that they've been working on site isolation (one process per domain, so potentially several per tab) for many years. chrome has been multiprocess (process per tab) since day one and it took other browsers years to catch up with being multiprocess. So if other browsers decide to pursue this approach, it'll likely take them years as well. So 3 doesn't seem super unlikely to me :-/

</comment></comment><comment><USER16> Did I miss an announcement where those other competing browsers offered a solution that consumed no additional RAM?

I can't recall any another browser maker introducing a change as encompassing as the Chrome Meltdown and Spectre fix.

</comment><comment><USER17> "overall memory use in Chrome is higher by 10 to 13 percent when isolating all sites with many tabs open."

</comment><comment><USER18> I wish chrome would freeze and unload inactive tabs. I may get around to them one day, but there is no need to waste resource on them until then.

<comment><USER19> The Great Suspender does a pretty good job of this.

[https://chrome.google.com/webstore/detail/the-great- suspende...](https://chrome.google.com/webstore/detail/the-great- suspender/klbibkeccnjlkjkiokjodocebajanakg)

</comment></comment><comment><USER20> So what?

Site isolation is a huge win.

</comment><comment><USER21> Don't blame Google for this. They only did what had to be done in software to fix Intel's hardware flaw. And Intel is currently willing to allow developers to fix many more such Spectre-class flaws in software just so it doesn't have to radically change its architecture.

</comment><comment><USER22> Maybe Meltdown and Spectre would be a good point to stop and think if an architecture where you run arbitrary turing-complete untrusted code from multiple sources side-by-side and try to mitigate this by locking down the system is really the best direction for the web to move in.

</comment><comment><USER19> Won't this work become mostly irrelevant in the near future (at least for new hardward)? There is no way all affected software will implement workarounds like this and it this will have to be fixed at the hardware/CPU level in order to fully address it.

<comment><USER23> Not all software is equally affected by this, browsers are particularly affected because they have a JavaScript VM running untrusted code.

But Site Isolation has been in the works in Chrome for a long time and it brings additional protections because it means that exploiting a renderer process doesn't let you break the SOP, which means you absolutely have to break out of the renderer process to have a meaningful exploit - <USER2> removing the renderer codebase from your trusted computing base.

</comment></comment><comment><USER24> I'm surprised that it took Spectre to get site isolation enabled. Without site isolation, an RCE allows a malicious site to violate the same origin policy even without a sandbox escape. Site isolation is a very nice defense in depth feature.

</comment><comment><USER25> I'm certainly willing to pay for $10 more memory in exchange for not getting owned.

</comment><comment><USER26> Will electron apps inherit this increase as well?

<comment><USER27> Unsure about electron but my guess would be that Spotify will certainly inherit this since they chose to use a custom chromium to build on.

</comment></comment><comment><USER28> Wait. Browsers were a major memory hog even before. Not only Chrome, all of them. Does the extra 10% really matter?

<comment><USER26> It will matter for some people who were on the edge of swapping but that's probably not so many.

<comment><USER29> Swapping to what? Firefox uses just as much memory.

<comment><USER30> Swapping to non-volatile storage? In the context of memory exhaustion I think it was reasonably clear gpp was talking about hitting virtual memory. Although these days faster SSDs make that not quite as dramatic a hit as it once was.

<comment><USER31> Swapping on SSDs is not ideal though, because of limited number of writes. Is it still relevant with SSDs produced now by the way?

</comment></comment></comment></comment></comment><comment><USER32> Pretty sure this is explicitly not a Meltdown mitigation, since the whole point of Meltdown is that is allows crossing process boundaries.

<comment><USER33> Google Chrome is multiprocess.

<comment><USER32> Right but the whole point of Meltdown (not Sprectre) is that this doesn't matter.

<comment><USER7> Yes, you are correct. This is mitigation for Spectre (v1/2/4) but not Meltdown.

</comment></comment></comment></comment><comment><USER34> Have there been reports yet of an exploit (using Spectre/Meltdown) in the wild?

<comment><USER35> Yes? There were POCs the day of the announcement.

<comment><USER7> I think the question is: Has anyone observed it being exploited for actual malicious purposes?

Sure, it's easy to say "of course it has happened, why wouldn't it have?", but it would be really interesting to know how it is actually being used.

</comment></comment></comment><comment><USER36> Chrome has always been a memory hog. For example, the Intel chipset in my machine doesn't support installing more than 4Gb of memory (and I feel that it is artificial limitation to force consumers buy new Intel chipsets) and on top of that, some proprietary 32-bit operating system cannot use more than 3Gb because of so called "PCI hole" \- a part of address space that is allocated for PCI devices and cannot be used for accessing memory.

I think that browser developers are making a wrong choice. They increase memory consumption for caches and similar type of data so that complicated and bloated websites work faster; I don't want that. I don't visit such sites anyway and have JS disabled so I would prefer that browser just consumes less memory. Let bloated websites be slow; they deserve it.</comment>


Great 15-Year Project to Decipher Genes Stirs Opposition (1990) - <AUTHOR> http://www.nytimes.com/1990/06/05/science/great-15-year-project-to-decipher-genes-stirs-opposition.html?pagewanted=all <comment><AUTHOR> _> They also doubt that the project can be completed in anything close to its original deadline and budget._

Spoiler: It was completed two years ahead of schedule and 10% under budget.

<comment><USER2> I suggest you view it in a different light. In the 1980s, as this article points out, the human genome project was funded by the DOE and worked on at the national labs. The NIH came in and earmarked money just for the project. This pushed it from being second class citizen to being on a pedestal.

Much of the doubt expressed was based on the experience of the previous 10 years of the project, and the changing budget situation that took money from other fields.

As a somewhat distant parallel, the HST, once fixed, produced great astronomy. How much other great science wasn't funded to put up the HST?

> Opponents doubt that the human genome project will quickly cure any > diseases, either.

Spoiler: they were right.

<comment><USER3> How much other science isn't funded because we spend far too much money on other stuff? I'm sick of seeing engineers and sciences fight over a penny and demeaning the importance of each other's projects while we spend trillions on wars and other nonsense.

If you want more funding for other science projects fight to increase science budgets overall by taking money from stuff we don't need like yet another aircraft carrier. How many science projects weren't under because of just one of those?

Due to the long term nature of science benefits it's impossible to know the real importance of any one project anyway.

<comment><USER4> Cannot +1 hard enough. The F-35 will eventually cost $1 trillion.

<comment><USER5> > The F-35 will eventually cost $1 trillion.

Yeah, but for over half a century of procurement and use, and including all operating costs and inflation.

<comment><USER6> So, the equivalent of over half a century of the DARPA budget ($3 billion/yr) five times over, or two National Science Foundations ($7 billion/year), or half of another National Institutes of Health ($30 billion/year).

The NSF alone is responsible for over 20% of public nonmedical basic research in the United States so for the price of _one_ boondoggle we can increase that total pool of funding by 50%. _For over half a century._

Or we could nearly double NASA's budget and give it an economy of scale it hasn't had since the Apollo program to carry out even more basic research into astrophysics, climate change and metrology, geophysics, flight, material science, and countless other technologies that _actually_ trickle down into the public market

</comment></comment></comment></comment></comment></comment><comment><USER7> Definitely hard to believe 15 years later. Especially with the possibility (however distant) of the benefits that personal genome sequencing will give to patients: ability to live a lifestyle that can lessen the likelihood of chronic diseases and drugs that are more effective and have less side effects since they are more or less tailored to a patient's DNA. Plus, the patient will take the drug for a shorter duration and at the minimum effective dose based on their needs.

<comment><AUTHOR> I hate to make you feel old, but 1990 was _25_ years ago.

</comment></comment><comment><USER8> I like ambitious projects. It's incredible how many of them actually succeed.

This reminds me of [https://en.wikipedia.org/wiki/Human_Brain_Project](https://en.wikipedia.org/wiki/Human_Brain_Project) as there is also lot of skepticism if it's doable. But maybe we just underestimate human ingenuity.

<comment><USER2> Do you have a tally of the ones that failed?

Fifth generation computing - [https://en.wikipedia.org/wiki/Fifth_generation_computer](https://en.wikipedia.org/wiki/Fifth_generation_computer)

Strategic Defense Initiative - [https://en.wikipedia.org/wiki/Strategic_Defense_Initiative](https://en.wikipedia.org/wiki/Strategic_Defense_Initiative)

Expeditionary Combat Support System - [http://spectrum.ieee.org/riskfactor/aerospace/military/us- ai...](http://spectrum.ieee.org/riskfactor/aerospace/military/us-air-force- blows-1-billion-on-failed-erp-project)

The Field Data Collection Automation for the US census - [http://calleam.com/wp- content/uploads/US_Census_FDCA_Case_St...](http://calleam.com/wp- content/uploads/US_Census_FDCA_Case_Study_V1.0.pdf) (the failure added $3 billion to the cost of the census).

How do you score the Space Shuttle? It didn't come close to meeting its design goals, but throw enough money at something (as we did with SDI) does result in _something_.

<comment><USER8> But those are all engineering projects.. In a way, it's a lot easier to parallelize work on scientific project than engineering project. Competition from the industry actually helped Human Genome Project.

Anyway, my bet is that we don't actually need a very big supercomputer to emulate what brain does. We just don't yet know why it is so efficient, we don't know _the trick(s)_. And I think, there is a possibility, as Human Brain Project will evolve, we will get better at figuring out what really needs to be simulated and what is just a fluff. And this will make possible to scale it up even on current hardware. Anyway, at least that's why I think it should be supported.

<comment><USER2> You said "ambitious projects". Now you're limiting those to scientific projects.

Again I ask, "Do you have a tally of the ones that failed?"

Would it include the Superconducting Super Collider? ($2 billion for a hole in the ground).

Actually, it's a trickier question than that. What does failure in an ambitious science project mean to you? Do you classify the two failed Orbiting Astronomical Observatory (of four) as an engineering failure, or a scientific one, or both?

For that matter, what is on your list of ambitious scientific projects, and how many of them have a success which is not primarily due to being a well-run engineering project? That is, the success of the Large Hadron Collider surely is due mostly to being a successful engineering project.

My experience is that the high-end science projects like what you are talking about (eg, the so-called 'Grand Challenge' projects), are constructed so they _cannot fail_. They lack a solid, measurable goal, and any advancement is counted as a success. This failsafe means they are more likely to get political backing.

<comment><USER8> I thought about your comments a bit and I think what's actually interesting in projects like HG or BB (or "Man on the Moon") is perhaps not scale as much as the fact that they are open ended. We don't know how the solution will look like. And that means that the solution may look really difficult or complicated today, but it's also possible that it won't be that difficult in the end.

So what I mean, I think, is not ambition in terms of resources, but rather ingenuity.</comment></comment></comment></comment></comment>


On Switching from an iPad Pro and MacBook to a Pixelbook - <AUTHOR> http://www.speirs.org/blog/2018/11/30/on-switching-from-an-ipad-pro-and-a-macbook-to-a-pixelbook <comment><USER2> I'd much rather schools switched mostly to pen and paper, TBH. 95% of homework in the 9th grade SHOULD NOT require a computer. It's a distraction, and one which hits kids on the ADHD spectrum especially hard.

There's nothing to be gained from requiring computers for homework in most cases, and kids get plenty of computer time outside of school. The net effect of this "progress" is that I have to constantly supervise my 15 year old like a hawk, or else no homework will get done and he will watch Youtube instead.

This is not a good set-up, because eventually there will be no supervision, and then he will be well and truly fucked, because he can't seem to realize that he needs to actually care about anything other than YT and computer games. I'm afraid that by the time he realizes that it'll be too late to fix anything.

<comment><USER3> If I hadn't been allowed to take notes on a computer in school--or if I'd been born a few decades earlier and computers weren't available--I literally don't think I would be where I am today. As in, my grades would have been worse, I would have gotten into a lesser college, etc.

My handwriting is slow and difficult to decipher. And handwriting makes tiny revisions—adding words into the middle of a sentence, restructuring a sentence slightly, etc—unduly annoying.

If the internet is a problem, disable the internet.

I should mention, I actually didn't start using a normal laptop until college. In grade school, I had this "digital typewriter" of sorts that ran Palm OS. Very nifty little device... it was far more lightweight than laptops of the time, and the battery lasted weeks.

<comment><USER2> Your handwriting would be faster and easier to decipher, out of necessity.

Moreover, research shows that because of this bandwidth restriction (and because you can draw easily on paper), you'd memorize the material much better, because you'd be forced to summarize it before you write it down, so it's entirely possible that you'd get into an even better college.

Without the internet, at least in school that my son goes to, the computers are utterly useless because everything is online. They have an internet filter, but kids find holes in it anyway. Kids whose parents don't give a shit just browse bullshit during class.

At home I use a combination of PiHole and OPNSense to filter things until homework is done. The list of sites and wildcards is well over 1000 entries long, and I still can't block everything I need to.

<comment><USER4> I didn't get a computer until university. My handwriting was terrible, remained terrible, and my ability to write essays increased dramatically when I was able to do so with a computer.

<comment><USER2> Essays, yes, I can see how a computer would help with essay writing. To write well by hand, one has to rewrite them twice: first write notes and fragments, then draft, then edited essay.

But I don't know how I'd take notes in science and math if I couldn't quickly write formulae and draw. My handwriting is also terrible, but I could read it, and I would not be academically successful if I wasn't forced to take notes. I'm 100% certain of that. In fact, I've been writing more lately as a part of my studies. Things just seem to "stick" much better if I don't passively record, but either summarize, or embody something in code.

<comment><USER3> I'm glad that works for you, but I don't think it would have worked for me, and you shouldn't presume everyone learns the same way. I took handwritten notes extensively throughout middle school and never really got better at it. I don't have the hand coordination.

Learning to type around 8th grade was a revelatory experience, and it had a noticeable impact in my academic performance. Writing, reviewing, note taking, and even just general organization became much easier, and I thus got better at it.

I will say, dealing with math symbols on my typewriter-device was always a bit annoying, and I would sometimes write formulas from those classes on a standard notepad. I would hope that nowadays, we have better programs for dealing mathematical notation (in an easy/expedient way).

<comment><USER5> I believe you and the parent commenter are arguing about orthogonal things; you are arguing that you should be allowed a device that types, while they are arguing against a device that is connected to the Internet within the classroom. You could achieve a middle ground where wi-fi is not enabled in the classroom, so you have to do any online syncing of documents outside the classroom, but even cloud-based word processors like Google Docs allow you to work offline.

As far as potentially missing things, I think a thing that has changed is video recording of lectures. I went to a perennially broke mid-tier public university in the US, and all lectures (unless small humanities affairs) were recorded so that you could watch it later, and all the slides were put online. So it was possible to go back and add things to your notes that you may have missed before, and in fact it would be a severe disadvantage to _not_ rewatch lectures since everybody else was doing it. It becomes a lot easier to take handwritten notes once you can rewind and fast forward through lectures at your pleasure.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> I feel like some old fogey/luddite when I say "I've never seen the point of iPads" \- or tablets for that matter. I've had a few and they're great as media consumption/browsing devices - but am utterly bemused when people say they do "all their work from them". I feel quite angsty enough when my laptop gets decoupled from the desktop-symbiotic multi-monitors and proper mouse and keyboard. I can see the point of a Chromebook - shoving Chrome into something cheap/efficient (if Chrome is all you need), but am eternally bemused over people trying to bolt keyboards to tablets - "you wanted a laptop"

<comment><USER7> Same here, I don't understand people trying to shove work processes on entertainment devices.

I love my iPad Pro for several purposes -- media consumption, some light gaming, reading, managing media / bookmark / book collections -- but it would never occur to me to code on it (even through shells to Linux).

I am not fully comfortable even with my MacBook Pro. I am working on building a work process that doesn't rely on a mouse or a touchpad and then I could work on the MBP full time (mostly involving memorizing shell and editor shortcuts, and making a lot of shell aliases).

Before that there's simply no point -- it's like trying to run with weights on your ankles.

<comment><USER8> As a theoretical physicist, the iPad can handle work-related tasks that the MacBook cannot (and vice versa). The unique iPad features mostly center around the Pencil: annotating papers, and doing "pen-and-paper" math, except that the iPad is far superior to pen and paper (you can move things around and "re- edit" them). Actually, the iPad can handle most things the I generally prefer the MacBook for (programming and writing, mostly), but there's usually some hoops to jump through. But it's certainly good enough that when I travel, I usually only take the iPad.

<comment><USER9> Mhm, I guess its a pretty niche thing but it always kinda annoys me when people say its not a real 'Pro' device. For writing math, there's no real competition against tablets from laptops or desktops.

Not only is the editing experience amazing (which is super important as in physics I probably write more incorrect things down than I write correct things), but it makes organization painless. I never had the discipline to keep paper notes in tidy binders and put them back after I take them out.

There's no way I'd have as good access to my six year old notes if they were written on paper, especially considering that now they're all backed up to the cloud and my app has handwriting recognition (only words, not math unfortunately) so they're quite searchable.

</comment></comment></comment></comment><comment><USER10> I have been using the iPad since day 1 in 2010 and almost every single day since. Our home has 5 versions that I have cycled through for the wife/kids. It is my daily driver at work.

The best thing about them is they require almost no troubleshooting except for the occasional restart. The first iPad still has a week standby battery life which blows my mind.

That said, the devices are still fragile and require bulky protective cases for kids to not destroy them.

If Apple really cared about iPad in education, they would release a $100 plastic version (hard poly clear screen and backing a la iphone 5c) to get kids on the OS. They have the software infrastructure to make sure the device only works through schools if they were afraid of it cannibalising sales of their glass/metal versions.

Ipad could be an amazing remote teaching assistance device, where someone can write pen/paper style to walk students through problem solving (I tried this volunteering through WeTeach, but the browser software was too laggy).

I am all for google docs dominating education if Apple is unwilling to compete here. We can't honestly expect schools to spend money on 'textbooks' that will shatter if dropped, and that cost many hundreds of dollars per device.

<comment><USER11> >> That said, the devices are still fragile and require bulky protective cases for kids to not destroy them.

Modern laptops aren't much different. You should see how easy it is for a kid to destroy a MacBook.

<comment><USER12> I broke a MBP screen a few years ago. Actually, two different laptops broke. One was warrantied, the other was an accident and had to be paid. The cost for a Retina display replacement in 2015? About $700. Ouch.

I keep my MacBook on my desk nearly 24/7 now, but I'd hate to know the cost or have to pay for a display replacement.

<comment><USER13> My Lenovo laptop's screen recently started showing a dark area at the bottom. So I got a replacement panel off eBay for $40 and replaced it. Takes about 15 min.

</comment></comment></comment></comment><comment><USER14> I actually use iOS for work stuff almost constantly, lots more than I use anything else. (My Macbook spends most of its time these days downloading things from Dropbox and backing them up to time machine, plus whenever I decide to actually write some serious code.) But I'm a professor-type in a non-collaborative field, so:

\- the iPad Pro is amazing for reading academic papers with the pencil at hand. Ditto for grading and such.

\- the keyboard is good enough that I can write on it at just about full speed, and I write in markdown anyway.

\- most of the things I need to do that require full computer chops can be done in the cloud---I have a bunch of little Heroku dynos sitting around sleeping (on free time) until I ask them to do something like run a document through pandoc or add something to a database for one of my data collection projects. The shortcuts app in ios12 + Pythonista + Heroku are an amazing combination, they allow me to turn almost anything complicated into an API call that I can trigger with a freaking voice command if I really want (but mostly share documents into).

Just about the only way this hinders my usual workflow (apart from having to bust out the Mac for heavy coding) is that there's no Zotero on iOS. But sooner or later I will get around to shoving that into a Heroku dyno and making some shortcuts to push web pages into its readers and then it'll be solved too.

For non-collaborative workflows this is perfect. I can see how the author's collaboration needs really would not be met by such a setup though.

<comment> crooked-v I'd love to see a guide on setting up that Shortcuts -> Heroku -> final result workflow in a streamlined manner.

Now.sh could be another useful tool for that kind of thing, since their 2.0 product is focused on no-hassle lamda functions, without needing a full VM setup.

<comment><USER14> Maybe I'll write a guide up! I've got a pretty good setup going.

Pending full write up, here are some key pieces:

Shortcuts side: the shortcuts app is really shockingly powerful, mainly because you can share almost anything you want into it and it intelligently figures out what you want. For example, if you share a web page from safari into it, if the first action receives a url, it'll treat it as such, if it receives a web page it'll take the DOM and not worry about the URL, etc.

There are really three key actions.

1) `Get contents of URL` allows arbitrary http requests. You can pass in data from other actions. This is the main workhorse for heroku things.

2) `Run JavaScript on web page` allows you to just run arbitrary JS in the context of whatever page you share into it. It's great for data-collection type tasks, you can just rip whatever you need out of the DOM and POST it away per the above, and then shove it into a database from heroku.

3) `Run Pythonista script` does what you'd expect. It passes whatever the action receives into Pythonista as a command line argument. And then, obviously, anything goes. If you haven't tried Pythonista, you should check it out---it's hard to get 3rd party libraries in (and many don't work), but you get the full stdlib plus a bunch of key libraries that the dev has taken the trouble to build in, including numpy, requests, matplotlib, beautifulsoup, PIL, sympy, etc...)

After receiving a response from heroku, it's trivial to save it to iCloud/Dropbox, put on clipboard, open a preview window with a share sheet available, etc.

On the Heroku side, the key trick is that you can run Docker containers. So, for example, my mobile pandoc solution is a docker container that has texlive and pandoc on it, allowing me to have basically a personal improved docverter. So I just post a markdown document via shortcuts to a flask endpoint that converts the document and returns it to me as the response.

</comment></comment></comment><comment><USER15> I really wish they would add mouse support to iOS as it would allow me to work on gslides presentations. I could then leave the MacBook at home a lot more.

Are there any workarounds or markdown presentation apps I should check out?

<comment><USER10> I use Jump desktop to remote into any number of powerful desktop or laptop computers. It supports the swiftpoint bluetooth mouse so you can use it in that way as a keyboard/mouse PC/Mac setup quite well.

</comment></comment><comment><USER16> The title suggests that the article is going to be about Pixelbook but there is hardly anything about Pixelbook and the same old iOS can't do this and that type of a post.

<comment><USER17> I don't know what the title was when you saw it, but the _On Switching from an iPad Pro and MacBook to a Pixelbook_ title I see now seems to match the article -- it's about the reasons why IOS isn't meeting his needs. I didn't expect it to be about the virtues of a Pixelbook.

<comment><USER7> Actually that's exactly what I expected. If you replace A with B then I fully expect you to (1) first say how A is inadequate -- which the article did -- and (2) why is B better, which the article didn't state.

<comment><USER17> I thought that part was implied -- he switched to the Pixelbook because it's a Google product that works well with the other Google (Google Suite) product he uses.

<comment><USER7> Fair enough. I expected a bit more thorough motivation than that.

</comment></comment></comment></comment></comment><comment><USER18> > and was even able to launch a successful podcast which has almost entirely > been recorded, edited and published using iOS.

Seriously? I could do that using a 1985 Amiga or Atari ST.

<comment><USER19> You haven't lived till you've used a toaster to accomplish this... IoT is here

</comment></comment><comment><USER20> I LOVE my pixel book. Crostini is really a game changer. Its a super polished experience using native chrome + Linux apps. Android apps too!

</comment><comment><USER21> Cloudflare is trialing chromebooks as a replacement for MacBooks:

[https://twitter.com/jgrahamc/status/1068120826678001664?s=19](https://twitter.com/jgrahamc/status/1068120826678001664?s=19)

</comment><comment><USER22> I use both. The Pixelbook hardware is unparalleled. I like it better than anything from Apple right now.

The Pixelbook of course does not support iMessage, so on it I would use OWS' Signal for messaging... but they (OWS) discontinued their Chrome App version, and the Android/Play Store version is "incompatible with this device", so I can't use my Pixelbook to chat with anyone outside of Slack or IRCCloud (or other undesirable/non-e2e chat services like Hangouts/etc), which is super lame.

OWS really needs to support that platform better.

<comment><USER23> > The Pixelbook hardware is unparalleled.

Really? I've found it awkwardly designed; it's really a "form follows function" laptop to me–especially the palmrest, which makes my fingers angle _downwards_ while typing and has an unappealing material which seems to gather sweat. I know why it's there, but I feel that it could be significantly improved if the keys were placed in a depression rather than trying to add stuff to keep them from hitting the screen.

<comment><USER24> That doesn't sound like "form follows function" to me.

<comment><USER23> The "form follows function" bit is Google trying too hard to shoehorn their "two-tone" design into a place it isn't necessary and doesn't belong. The computer would have been significantly improved if the palmrest just stayed the same material as the rest of the bottom case.

<comment><USER25> Do you consider the cold metallic palmrests typical in laptops to be somehow more functional? I find the rubber palmrests quite comfortable.

Also your wrists are _supposed_ to be elevated when typing.

</comment></comment></comment></comment></comment><comment><USER26> And this is exactly why Google makes sure all the G suite apps are _just a little broken_ in iOS & Safari. It has been like this for the past half decade, since Apple stepped on their turf with Maps.

<comment><USER27> There's a Google Docs app for iOS. Shouldn't be too hard for those who are invested in Google Docs to download the app; that's pretty much standard procedure on iOS anyway, plus an app will always be a better time than a website for editing on an iPad.

<comment><USER26> This is in regards to the apps too ("iOS & Safari"). I mean, the native app shortcomings are the entire subject of this HN post. Where are you coming from?

</comment></comment></comment><comment><USER28> What keeps you from installing an alternative browser, like Firefox or Chrome for iOS? I recently switched to Opera Touch on iOS and it's been great so far. Definitely worth a try I would say.

<comment><USER29> Apple only allows the Safari Webkit engine to be installed on iOS. As a result, all third party browsers on iOS are using the identical browser engine as iOS Safari. Any browser incompatibility issues is likely shared across all iOS browsers.

</comment></comment><comment><USER30> The only thing I can't comprehend is how any person using iPad for work can be dissatisfied with the changes in iOS 12 — apart from the scale of those changes that could be bigger.

</comment><comment><USER31> I was also a little sad that Apple withdrew Safari from Windows. How does Apple envision bookmark sharing happen for a Windows user who buys an iPhone?

<comment><USER32> They've supported this for quite some time in the absence of Safari for Windows. The iCloud for Windows client will sync your bookmarks from your third party Windows browsers, much the same way as it plugs the holes for syncing photos and documents on Windows as well.

> [https://support.apple.com/en-us/HT201391](https://support.apple.com/en- > us/HT201391)

> [https://www.techrepublic.com/article/pro-tip-sync- > bookmarks-...](https://www.techrepublic.com/article/pro-tip-sync-bookmarks- > between-macs-ios-and-windows-using-icloud/)

</comment></comment><comment><USER33> For one, this article could've been 30% the original length - it drones on and on repeatatively!

While I find the reasoning sound on why iPads can't be your full time productivity device, completely ignoring Microsoft surface in this space seems either ignorant or a paid Google ad for the Chromebook

<comment><USER34> I think a history of failures in mobile tech keeps most people from even considering Microsoft gear. Surface may be great, but who is buying them? Who is developing for them?

Mobile is Apple/iOS, or Google/Android, for better or worse.

<comment><USER35> Lots of people are buying them, and anyone developing windows apps is developing for them. I dual boot my surface book 2 with Linux and I have a decent Linux machine, a decent Windows machine, a decent tablet and a decent gaming machine in one device. It's not cheap though!

</comment></comment></comment><comment><USER36> he only uses the browser... keyboard and battery should be his only concerns anyways

</comment><comment><USER37> Tl;dr: dude works in school where they use Google Docs, which run better in a desktop web browser than the corresponding iOS app.

<comment><USER23> I'm pretty sure that Google purposely cripples their office suite on mobile Safari and iOS because it helps their narrative of iPad not being a "proper" computer, which helps them sell Chromebooks.

<comment><USER38> Or more charitably, underallocates resources to keep feature parity. Yes, to sell more Chromebooks, but is Apple's iWork suite available on the Chrome Store?

<comment><USER39> It isn't explicitly a Chrome app, but there are web versions of the iWork apps available through icloud.com, and they work pretty decently in a browser.</comment></comment></comment></comment>


Gerald Sussman (2015) - <AUTHOR> https://www.artsy.net/article/ruse-laboratories-gerald-jay-sussman-creator-of-scheme <comment><USER2> In a previous life when I was at MIT, I took a course from Gerry Sussman called Structure and Interpretation of Classical Mechanics [1]. There was one lecture where he taught us Scheme, which is a simple enough language that it can be taught in a lecture. After class I went to his office to ask him a few questions, and I told him I was interested in functional programming.

He printed out some scheme file from his computer and handed it to me. It was a derivation of the Y combinator. He patiently walked me through it and answered my uninformed questions. He was always so enthusiastic about teaching, and his explanations were more like an exuberant performance than a traditional lecture.

Fueled by his contagious passion, I've since learned quite a bit about functional programming and have given many talks on various related topics. My focus is on type systems and machine-checked proofs, which strangely enough Gerry Sussman seemed to loathe. I wish I had spent more time picking his brain while I was there.

If there's one professor I miss from MIT, it's Gerry. He's so knowledgeable about so many different topics, from physics, to formal logic, to neuroscience, to AI, to programming language theory. For some topics, there are certain magic words you can say that will get him going in such a way that you'll wish you'd brought popcorn.

[1] [https://groups.csail.mit.edu/mac/users/gjs/6946/sicm- html/bo...](https://groups.csail.mit.edu/mac/users/gjs/6946/sicm- html/book.html)</comment>


The Beautiful Intelligence of Bacteria and Other Microbes - <AUTHOR> https://www.quantamagazine.org/the-beautiful-intelligence-of-bacteria-and-other-microbes-20171113/ <comment><USER2> To me, the most interesting part about those biofilms are why they're so wrinkly: Those folds form channels and Bacillus moves water and nutrients through them ([http://www.pnas.org/content/110/3/848/F1.expansion.html](http://www.pnas.org/content/110/3/848/F1.expansion.html)).

After binge watching Stranger Things 2, that seems a little bit more like science fiction.

</comment><comment><USER3> The word "intelligence" is thrown around without anyone bothering to define it. Why are stigmergic/reactive fluctuations of these biofilms considered intelligence?

I prefer the Jeff Hawkins definition: Intelligence is the ability to make good predictions. Biofilms and other stigmergic systems such as ant colonies do not seem to fit this definition.

<comment><USER4> Intelligence is the ability to take decisions that lead to maximum utility, not just "good decisions". Utility is the main currency of decisions.

I found this article very interesting because it showcases the exploration/exploitation dilemma of reinforcement learning. Even a bacteria colony is a RL agent, reacting to external events in a useful way.

<comment><USER5> Utility being propagation of the species?

<comment><USER6> But by that definition, _every_ not-yet-extinct species is intelligent. Or at least, every species that responds in any way to external environment in order to enhance survival and reproduction... which is pretty much every species.

<comment><USER7> You're assuming a binary extant/extinct dichotomy. That may work on the level of an individual species, but not on the colony level. The colony is simply attempting to propagate itself. So the utility at a given time could be given by something that measures the current size of the colony, the size of its descendants, and some estimate of how much each colony will further propagate.

<comment><USER6> Fine, but it's still a bogus use of the word "intelligence".

</comment></comment></comment></comment></comment></comment><comment><USER8> Slime molds again. Probably nature's most fascinating... thing(?). IIRC the name slime mold doesn't have much to do with actual mold. They're a seperate thing and behave pretty abnormal compared to most other lifeforms like virii, fungi or bacteria.

</comment><comment><USER9> The pictures here are amazing.</comment>


We should look closely at what Adam Smith actually believed - <AUTHOR> https://aeon.co/essays/we-should-look-closely-at-what-adam-smith-actually-believed <comment><USER2> _Under absolutely no circumstances, Smith thought, should merchants be put in charge of politics. Their monopolistic conspiracies would be 'destructive' to all countries 'which have the misfortune to fall under their government'._

Corporatism. The whole idea corporations are entities with free speech, and money being legally considered speech, in effect gives corporations a bigger voice than individuals. Humans have rights, citizens have some extra rights (mainly voting), corporations shouldn't have any political rights at all, nor does the state. Every right given to corporations or states is power taken away from individuals.</comment>


Out of order benefits - <AUTHOR> http://randomascii.wordpress.com/2012/10/25/out-of-order-benefits/

<comment><USER2> It would be interesting to see numbers from some less beefy OOO cpu (like pentium pro or cortex a9). The tested processors take the OOO to extreme lengths.

edit: there's a graph in [http://www.engr.colostate.edu/~sudeep/teaching/ppt_554/lectu...](http://www.engr.colostate.edu/~sudeep/teaching/ppt_554/lecture07-ilp_limits_tlp.pdf) that shows ARM A8->A9 speedup around 20% on most SPECint benchmarks, and part of that is from other improvements besides the OOO.</comment>


Tokyo's Affordable Housing Strategy: Build, Build, Build - barry-cotter https://www.forbes.com/sites/scottbeyer/2016/08/12/tokyos-affordable-housing-strategy-build-build-build/ <comment> barry-cotter > Like so many other global first-world cities, Tokyo is experiencing > explosive population growth, increasing by 1.6 million people since 2000. > And unlike practically every U.S. city, it has almost no empty land. So it > has responded through vertical growth, tearing down old structures and > replacing them with high rises at a pace light-years ahead of anywhere in > modern America. As FT's Tokyo bureau chief Robin Harding wrote in the > article, the city had 142,417 housing starts in 2014, which was "more than > the 83,657 housing permits issued in the state of California (population > 38.7m), or the 137,010 houses started in the entire country of England > (population 54.3m)." Compare this, also, with the roughly 20,000 new > residential units approved annually in New York City, the 23,500 units > started in Los Angeles County, and the measly 5,000 homes constructed in > 2015 throughout the entire Bay Area.

> This has stabilized Tokyo's housing prices, wrote Harding, and has kept them > far lower than in many U.S. cities.</comment>