Peer-to-Peer Communication Across Network Address Translators (2005) - <AUTHOR> http://www.brynosaurus.com/pub/net/p2pnat/ <comment><USER2> We been doing this at Vonage since 2001. This was our "secrete sauce", since at the time there wasn't a well documented or an industry standard on how to do this. Eventually SIP through NAT papers and RFC's did appear, but we already had our way of doing it that was just as effective.

We found that renewing the NAT entry at a rate of once per 20 seconds was good enough. This made it work through all the routers and gateways we came across.

EDIT: SIP is short for Session Initiation Protocol. Its the protocol used to connect VOIP phone calls. We used UDP. SIP's standard port is 5060 and 5061. We had to switch to port 10,000 (any port other than the standard) because too many high end routers and gateways would manipulate our packets. These routers were trying to implement SIP through NAT on their own. I applauded their efforts but it caused problems for us. I still remember the day that I took it upon myself to change production to use port 10,000. I was really scared I was going to break something but everything worked out in the end.

<comment><USER3> I used to be a Vonage customer (service was nice, as long as my Cox internet was working - but I shut it off after my wife and I finally both had cell phones - this was at least a decade or more ago).

I had always wondered how you guy's were doing it, but I had always thought that the router Vonage handed out was something special that used its own reserved ports or something that wasn't easily visible. I never looked into it deeper. It's interesting that instead something like this "hole punching" technique was used.

I've heard about the technique before, but never investigated it before...

<comment><USER2> The solution was very simple. It came down to this.

\- SIP end points register every so often. Each registration had a TTL. We set the TTL to 20 seconds. This actually leads to a registration every 16 seconds, since SIP end points register at 80% into their TTL.

\- When a SIP end point reigsters, do not register the end point at the IP:port that it is advertising int he SIP Registration message. Instead use the source IP and port of the IP/UDP packet/datagram.

\- Inbound calls to that SIP end point must go through the server that the SIP end point registered with and it must use the destination port (10,000) as the source port. We need to match the NAT entry in the router.

\- When a phone call comes in for that end point, send the SIP Invite message to source IP:port of the SIP end point. Since the device is registering every 16 sec, there is sure to be a NAT entry in the router to allow our packets into the network and routed to the SIP end point. It is vital that we use the same server that the SIP end point registered with.

<comment><USER4> Everything is simple if you know what you are doing. Kudos! I had my own share of adventures with SIP across NAT so I know it must have been lots of experimentation and studying to find this simple solution.

<comment><USER5> It sounds like they are describing "symmetric RTP" which is still a common way to get SIP n RTP to work. Another way is to use a VPN and route the blasted things - which was/is a classic cop out with a gloss of security added in. Then you got to fix the pain of subtly incompatible IPSEC implementations instead. Strangely enough all VoIP phones with a VPN built in (that I know of) use OpenVPN and not IPSEC. OpenVPN uses a single port which may be 1194/udp or not.

Another "fix" to SIP - a protocol that works just as successfully over NAT as ftp (mmm active or passive? 1:1 NAT bodge/fix? etc etc) - is to mix the control and data into one stream: eg IAX(2). IAX uses a single well known destination port (4569/udp) which is as easy to implement as DNS or NTP, which are both generally UDP but DNS can require TCP, through a NAT. IAX can make a fine

Sometimes folk decide to run SIP over TCP instead of UDP and may even decide to run that inside a TCP tunnel eg OpenVPN over TCP. That's fine until you discover how TCP inside TCP can result in exponential standoffs when network conditions are sub-optimal. That can really bugger up voice traffic that really needs sub 100ms point to point latency to be acceptable. Then there is dealing with packet fragmentation if changes of media require it and of course the fact that TCP packet streams can arrive out of order and be re-assembled. That latency wont worry your web browser but it makes voice sound horrid.

<comment><USER6> Lots of confusion on this thread. SIP never handles actual voice traffic. It is just a signaling protocol used to initiate the ICE process of actually establishing the connection, either a direct p2p connection or a relayed connection using TURN when the NATs can't be traversed. That's when traffic is typically UDP, as it's easier to traverse NATs with UDP. The transport SIP uses is largely irrelevant, although it's pretty silly for it to use anything but TCP because reliability of sending the offer and the answer is pretty important, and they can be sent in multiple packets.

</comment></comment></comment></comment></comment></comment><comment><USER7> Strange to see this relatively old article appear. NATs are still with us. The main progress has been WebRTC. Otherwise, researcher who looked at TCP at the time (e.g., stunt) for simiulataneous TCP Syn packets failed. It was too hard to synchronize timing. Most middleware still ignores NATs and hopes it will go away (it won't). NATs are the reason REST won over CORBA et al.

<comment><USER8>
       > The main progress has been WebRTC

Yes, it is a kind of combination of the best approaches to NAT traversal from the SIP world, supporting both STUN & TURN and ICE with the Trickle addon.

Some very good references on the topic I found recently: [https://webrtchacks.com/](https://webrtchacks.com/) and [https://www.html5rocks.com/en/tutorials/webrtc/infrastructur...](https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/).

<comment><USER9> The WebRTC stuff was based on libjingle originally. We built that as part of the Windows Google Talk client. It was all based on XMPP and not SIP.

The techniques were used in many contexts at the time.

<comment><USER6> Yeah exactly. This signaling protocol doesn't really matter, and both SIP and XMPP to me are way over engineered and super inefficient- silly that they're text based at all. Essentially like HTTP 1.0 and 1.1 vs HTTP/2 - we just don't have the latter in the signaling case yet, or at least not standardized that I know of.

</comment></comment></comment></comment><comment><USER10> I wonder why this comes up here. This is a quite old method. I think it is used in many peer-to-peer applications. I'm quite sure that Skype has used it also in the past.

We have also implemented that in our game OpenLieroX. We call it UDP NAT traversal if you search for it in the code.

Main code: [https://github.com/albertz/openlierox/](https://github.com/albertz/openlierox/)

UDP master server: [https://github.com/albertz/openlierox/tree/0.59/tools/UDPMas...](https://github.com/albertz/openlierox/tree/0.59/tools/UDPMasterServer)

<comment><USER11> Because, while old, it's still used and useful. And a lot of (relatively) young people don't know about it.

<comment><USER12> And consequently they don't think end-to-end communication is feasible without "WebRTC"?

<comment><USER13> Sigh.

WebRTC just uses hole punching, and its implementation (ICE+STUN+TURN) is as over-engineered as you would expect from a modern protocol stack.

<comment><USER12> Successful peer-to-peer networking goes back many years. I would guess gamers solved it first, but I am not sure. Could be a fun project to try to document all the history, if that is even possible.

1999: [http://alumnus.caltech.edu/~dank/peer- nat.html](http://alumnus.caltech.edu/~dank/peer-nat.html)

I have seen reliable, fast overlay networks accomplished with a relatively small amount of code. As a result, this is where I set the bar. The more voluminous the project, the more quickly I lose interest.

</comment></comment></comment></comment></comment><comment><USER14> Adam Ierymenko (@api here and reddit) has a modern and concise take on NAT

[https://www.zerotier.com/blog/state-of-nat- traversal.shtml](https://www.zerotier.com/blog/state-of-nat-traversal.shtml)

<comment><USER13> That's still the blog article that gets the most hits. I wrote it in response to someone on HN claiming that "you can't do peer to peer because of NAT" when we were doing it.

There's the standard ways -- hole punching as described there, uPnP/NAT-PMP, etc. -- and then there is a long tail of hacks for getting to that 90%+ success rate you want. Here's an incomplete list:

* Port prediction for symmetric NATs that increment ports

* Creating multiple sockets to work around buggy NATs that can't hole punch if multiple devices have the same local port, etc. There are also buggy NATs where hole punching breaks if you also open a port with NAT-PMP or uPnP. There are a lot of buggy NATs. (Factoid: we have found zero correlation between the cost of a NAT device and its buggitude.)

* Getting the timing as tight as possible -- we use a triangular three-party rendezvous method to try to get it so both sides see a send before the "reply."

* Sending UDP packets with incrementing TTLs ahead of the real hole punch message to open multiple layers of NAT, and randomizing the few-byte payload of those low-TTL packets because some NATs care about this. Yes people plug NATs into NATs into NATs. It's pretty common. Ugh. As long as none are symmetric it works.

* If at first you don't succeed try try again... forever. For long-lived links (common with ZeroTier since they are virtual LANs) if you keep trying and include some random port trials you will eventually punch a symmetric NAT. There are only 65535 ports.

ZeroTier still has to relay though if both parties are behind hostile NATs, but we can provide free relaying for everyone since it's only a small percentage of traffic and cloud bandwidth is cheap.

Edit: there are more sophisticated methods that work more of the time, but those unfortunately can trip intrusion detection systems. We try to walk the line with ZeroTier between high success and not tripping your IDS.

Edit #2: wow there's a lot of outright nonsense on this thread. I continue to be saddened by how few developers (even top notch ones) know so little about networking and have so many misconceptions about it. Networking is still such a black art. Of course if it wasn't maybe there would not be a niche for us. :)

<comment><USER7> That's a good list of hacks I've come across. But I thought we stopped using the 'symmetric nats' terminology a decade ago when the IETF Behave specification came out? [https://tools.ietf.org/html/draft-ietf-behave- rfc3489bis-18](https://tools.ietf.org/html/draft-ietf-behave-rfc3489bis-18) The specification tries to classify Nat behaviour into 3 classes: (1) when a port mapping can be reused (for any outgoing connection, for an outgoing connection to the same IP, for an outgoing connection to the same IP:Port endpoint), (2) what port is allocated when a new mapping is created (same as the private IP if possible, a contiguous port generated by a global counter, or a random port), and (3) how are incoming packets filtered/dropped based on the source IP:port (not filtered, ok from same IP, must be from same IP:port). Most Nats can be described using some combination of these behaviours. See this paper for details: [https://www.hivestreaming.com/natcracker-nat- combinations-ma...](https://www.hivestreaming.com/natcracker-nat-combinations- matter/)

</comment></comment></comment><comment><USER15> Autonomous NAT Traversal (2010) aka pwnat

[https://samy.pl/pwnat/](https://samy.pl/pwnat/)

[https://hn.algolia.com/?query=pwnat&type=comment&sort=byDate](https://hn.algolia.com/?query=pwnat&type=comment&sort=byDate)

<comment><USER11> Very good stuff, on paper. I couldn't make it work, by the way, from Mac to Linux. I'll try again in a different scenario.

</comment></comment><comment><USER16> Plug: [https://github.com/selvakn/p2p-port- forward](https://github.com/selvakn/p2p-port-forward) Based on [https://www.zerotier.com/](https://www.zerotier.com/)

</comment><comment><USER17> Keep in mind that this paper was outdated the moment it was published and announced on p2p-hackers mailing list [1].

It doesn't deal with the "long tail" of NAT devices that increment/decrement ports in (somewhat) predictable manner and _most importantly_ it describes hole punching as a _client_ -driven process.

The latter is the crucial point. By tasking a dedicated (mediating) server with coordinating the punching sequence it becomes possible to time the process much more precisely and to help predictions to actually match the reality. Combined with a bit smarter port predication it brings the success rate from 80% to 95-97%... or at least it did 10 years ago when I was using this for Hamachi P2P VPN, though I suspect that very little has changed in terms of NAT type distribution since then.

[1] [http://copilotco.com/mail- archives/p2p-hackers.2005/msg00126...](http://copilotco.com/mail- archives/p2p-hackers.2005/msg00126.html)

</comment><comment><USER18> I didn't read the whole thing so maybe it's addressed, but from what I understand it sends packets to both private and public IPs of the person you want to talk to, and use the first one you get an answer from.

What if the private IP from the other peer is in another NAT, but in your local NAT, you have another peer with that same private IP? He would answer you, and would would establish communication with the wrong peer?

Probably would need an extra step to validate the peer's public IP address is also the same?

<comment><USER19> Yes, it addresses that concern, and it proposes that the packets sent should be validated in some form of previously agreed method

</comment></comment><comment><USER20> If I could piggyback on the topic here, can anyone speak to the practical usage of these (or other) techniques on mobile devices? Are there working peer-to-peer apps?

</comment><comment><USER21> This is a wonderfully succinct description of the topic and probably the most approachable explanation I have read. Really interesting that this was written in 2005 since the concepts described form the basis of how the later WebRTC and its supporting infrastructure STUN/TURN work.

As brilliant a hack as hole punching is I hope someday we can move to a world of IPv6 where it is no longer necessary.

</comment><comment><USER22> overlay network are a good solution to NAT i think, i'd say they should be anonymous but something that's just private like cjdns is pretty good too. there are some performance and latency issues to deal with, but when you overlay you don't have to wait for network operators to fix NAT.

</comment><comment><USER23> IPv6

<comment><USER24> This technique will remain useful with IPv6. NAT will disappear, but the stateful firewalls (which are often combined with NAT) will remain.

<comment><USER13> Yes, but IPv6 helps a ton. Hole punching with IPv6 is almost 100% successful as long as your firewall allows it (and most do unless you are whitelist- only). IPv6 kills symmetric NAT and over-provisioned NAT.

</comment></comment></comment><comment><USER25> This is the method Vizio TVs use to register with the Inscape mothership to report to the system what is being watched on every Vizio TV in existence.

<comment><USER26> Why though? Was the Inscape mothership behind a NAT they didn't control?

<comment><USER25> No, the TV needs to initiate the connection to the mothership to punch the hole. This then allows the mothership to send commands to the TV over UDP to manage its activities.

<comment><USER13> That's not P2P hole punching. That's just a UDP to a cloud server. Stateful firewalls remember UDP sessions for a period of time.

UDP hole punching is when both parties are behind NAT and it's used almost exclusively for P2P: torrents, VoIP phones, video chat, multiplayer games, ZeroTier, WebRTC, IPFS, etc.

</comment></comment></comment></comment><comment><USER27> tl;dr: UDP Hole Punching using a server.</comment>


Lessons from a Google App Engine SRE on how to serve over 100B requests per day - <AUTHOR> https://cloudplatform.googleblog.com/2016/04/lessons-from-a-Google-App-Engine-SRE-on-how-to-serve-over-100-billion-requests-per-day.html <comment><USER2> I used to be a scientist and I went to work at Google to apply their technology to science problems. My first team was SRE- and I have to say, Google's SRE approach to computing completely changed how I thought about things, and more importantly, how I programmed systems that went to production. I've read the SRE book and can highly recommend learning from the principles it lays out.

<comment><USER3> Can you please give reference to that book ?

<comment><USER2> It's the one mentioned in the interview, [http://www.amazon.com/Site- Reliability-Engineering-Productio...](http://www.amazon.com/Site-Reliability- Engineering-Production-Systems-ebook/dp/B01DCPXKZ6)

</comment></comment></comment><comment><USER4> The book they mention[1] is very good so far.

[1][https://play.google.com/store/books/details/Betsy_Beyer_Site...](https://play.google.com/store/books/details/Betsy_Beyer_Site_Reliability_Engineering?id=tYrPCwAAQBAJ)

<comment><USER5> Upvoting because this link is cheaper than the Amazon link.

<comment><USER6> If you are willing to wait, many times of the year O'Reilly will have their ebooks on sale for 50%-60% off. The best time is black friday.

</comment></comment></comment><comment><USER7> > Advance preparation, combined with extensive testing and contingency plans, > meant that we were ready when things went [slightly wrong] and were able to > minimize the impact on customers.

Following that link provided some interesting reading (for a mundane error report, at least): [https://groups.google.com/forum/#!msg/google-appengine- downt...](https://groups.google.com/forum/#!msg/google-appengine-downtime- notify/T_e7lVg7QNY/lifcqZBcracJ)

TIL that even Google have datacenter fluctuations they can't figure out. It's nice that they quietly make this info publicly available, and also nice that I've now discovered where to find it :)

<comment><USER8> I love their solution.

They turned it off, then on again

</comment></comment><comment><USER9> I've been seeing a lot of references to SRE recently. Is Google trying to market this position and acquire more engineers?

The SRE book, and Google in general, have mentioned that SREs are notoriously hard to hire, and I'm wondering if they are doing a marketing push.

<comment><USER10> SREs are very hard to hire, speaking from experience. At Google SRE directors and VPs will often cherry-pick promising candidates from the mainline SWE hiring pipeline and give them a "hero call" to convert them to SREs. SREs at Google are also paid more, controlling for level and performance, as a way to hire and retain.

<comment><USER11> Interesting. Can you expand on "hero call"? What does that entail?

<comment><USER12> Donning a cape and meeting destiny.

In all seriousness they make it out to be more than it is. From my experience going through their hiring pipeline there seem to be two tracks in SRE; software and sysadmin. If you score higher in algorithms and data-structures, presumably, you'll end up working more on tools and libraries whereas in the other you'll work more on infrastructure and automation. Either way both tracks work together on the same team towards the same goals.

If you want in be prepared to solve simple-to-tough algorithms problems and be quizzed on TCP re-transmission, Linux system calls, and memory pressure. It's a bit challenging because you not only have to know Big-O well enough to estimate the asymptotic complexity of an arbitrary algorithm but you might also be asked what a sequence of TCP packets would look like if you sent some data and pulled the plug or what the parameters are to a given system call on Linux. You quite literally have to know everything from how virtual memory works, how to implement a fast k-means, how the network stack works from top to bottom, etc, etc.

If you've done any work in cloud development and supporting moderately large one it's that but bigger. Make one a hero, it does not.

</comment></comment></comment></comment><comment><USER13> I'm actually really really glad that Google released this book because I think they are one of the few companies that is actually doing this SRE thing right. I think the hardest bit about the SRE paradigm (like DevOps) is having companies wholly adopt it, and I think that this book being out will help change that.

</comment><comment><USER14> This got me wondering what the AWS services' work load per day was. Best numbers I could find were from this 2013 article about serving ≈95 billion requests per day for just S3. The size and scope of cloud providers is truly cool and fascinating engineering.

[https://aws.amazon.com/blogs/aws/amazon-s3-two-trillion- obje...](https://aws.amazon.com/blogs/aws/amazon-s3-two-trillion- objects-11-million-requests-second/)

</comment><comment><USER15> I don't know why this isn't on HN, but this is another interesting post from the Google Cloud Platform blog from today:

[https://cloudplatform.googleblog.com/2016/04/Google-and- Rack...](https://cloudplatform.googleblog.com/2016/04/Google-and-Rackspace-co- develop-open-server-architecture-based-on-new-IBM-POWER9-hardware.html)

<comment><AUTHOR> It is -> [https://news.ycombinator.com/item?id=11440179](https://news.ycombinator.com/item?id=11440179)

</comment></comment><comment><USER16> s/lessons/lesson/

"If you put a human on a process that's boring and repetitive, you'll notice errors creeping up. Computers' response times to failures are also much faster than ours. In the time it takes us to notice the error the computer has already moved the traffic to another data center, keeping the service up and running. It's better to have people do things people are good at and computers do things computers are good at."

</comment><comment><USER17> 1,157,407 requests per second.

<comment><USER18> One Node.js server can do 10x that! /s

</comment></comment><comment><USER19> Only 100 bytes? That's easy... Sheesh.</comment>


Require-from-Twitter - <AUTHOR> https://gist.github.com/rauchg/5b032c2c2166e4e36713 <comment><USER2> This is the Internet of Things for code. This is wonderful.

This is also probably a snarky shot at npm [1], for those who lack context.

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

<comment><USER3> My goal was for it to be entertaining and educational[1]. I love npm (which made this possible to begin with!)

[1] ES6 features (arg defaults, destructuring, modules, template literals, String.prototype.repeat), babel configuration and runtime compilation, async / await

<comment><USER4> I feel like require-from-twitter really helps enforce the Unix philosophy. It's hard to write modules with multiple responsibilities in 140 characters.

<comment><USER5> I wonder how large a system could be created using nested tweets of js. Needs versioning though.

<comment><USER6> As large as you want: [https://users.soe.ucsc.edu/~jpagnutt/Elevator_Pitch.pdf](https://users.soe.ucsc.edu/~jpagnutt/Elevator_Pitch.pdf) (PDF warning)

<comment><USER7> This does need a warning, but PDF isn't the reason.

<comment><USER8> What does the link do?

<comment><USER9> It opens your mind until your brain falls out.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10>
        >   "dependencies": {
        >    "babel-preset-stage-0": "6.5.0",
        >    "babel-preset-es2015": "6.6.0",
        >    "babel-runtime": "6.6.1",
        >    "babel-plugin-transform-runtime": "6.6.0",
        >    "babel-cli": "6.6.5",
        >    "babel-core": "6.7.4",
        >    "twit": "2.2.3",
        >    "entities": "1.1.1"
        >    },

The problem right here. Just to run a script you now need to import a whole third party language runtime ? what other language does pull this kind of stunt ? Javascript is madness.

<comment><USER11> Not really. Usually people include them as "devDependencies", and Babel will transpile to ES5 before publishing.

I think Guillermo simply didn't care. Because it's not important for a joke.

\---

Uninformed presumptions are madness.

<comment><USER12> Umm isn't babel-runtime an actual third party language runtime dependency (like polyfills and shared code for stuff like async) ?

<comment><USER13> I wouldn't really call it a dependency since it gets inlined with the shipped code.

</comment></comment></comment></comment><comment><USER14> I'm currently talking to investors to start a business around this. Please don't delete it.

<comment><USER15> Maybe this will make Twitter finally profitable?

<comment><USER16> Twitter is known for deleting twitter accounts when they get reports of tweets though.

</comment></comment></comment><comment> martin-adams Maybe to make this more reliable, you should retweet the module first, then require your clone.

<comment><USER17> Thanks for providing some morning entertainment. Love this comment.

</comment></comment><comment><USER18> Hi. I don't know how to program (otherwise I would do this myself), but can you port this to Google+ please? My office blocks twitter. Thanks!

</comment><comment><USER19> Why is this not a npm module yet? Name suggestion: kik2

<comment><USER20> Not enough Twitter, can't you tell that's the problem here

</comment></comment><comment><USER21> Tangentially related(tweet sized js) and an awesome project: [https://t.d3fc.io/](https://t.d3fc.io/) is a collection of d3 visualizations from tweets. The code is cryptic on first inspection, but if you look at the sandbox setup, it starts to make sense and 140 chars is a wonderful constraint. eg: [https://t.d3fc.io/status/694991319052103680](https://t.d3fc.io/status/694991319052103680)

</comment><comment><USER22> Require from stack overflow?

require('how do I prepend spaces to a string')

<comment><USER23> Autocomplete from stack overflow: [https://news.ycombinator.com/item?id=11335766](https://news.ycombinator.com/item?id=11335766)

</comment></comment><comment><USER24> A developer gets upset at unilateral actions by NPM resulting in a project being renamed or taken down unnecessarily (potentially breaking builds). So this dev decides to take down all their projects, as a sort of protest. This breaks a lot of builds. The JavaScript community thinks a clever solution is utilizing Twitter as part of the build process? Because then everything would be dependent on Twitter not adding an "edit tweet" button...

<comment><USER25> > The JavaScript community thinks a clever solution is utilizing Twitter as > part of the build process?

The JavaScript community thinks a hilarious, tongue-in-cheek solution is utilizing Twitter as part of the build process.

FTFY

<comment><USER24> Oops. I retract my comment and denounce myself.

</comment></comment></comment><comment><USER26> Pretty comical. I bet folks would actually use this to some extent, without realizing that Tweets can also be deleted.

<comment><USER19> > without realizing that Tweets can also be deleted.

Yep, _just_ like NPM modules.

<comment><USER27> > also

</comment></comment></comment><comment><USER28> the next version should have a require from #hashtag, so that it can be fault tolerant, and would last longer when lawyers request a takedown!

</comment><comment><USER29> > // ES6 leftPad

and he even had space for a comment in there....

</comment><comment><USER30> For everyone who doesn't know it, there's a project called [http://140byt.es/](http://140byt.es/) compiling many code snippets that fit in a tweet (;

There was also a clever trick to compress/uncompress ascii text by using base[huge number] or something like that (full unicode) so it could be uploaded to twitter, but I don't remember the exact number

<comment><USER31> [https://github.com/ferno/base65536](https://github.com/ferno/base65536)

<comment><USER30> Awesome! thanks, also here's the reasoning from the Why? [1]

> I wanted people to be able to share HATETRIS replays via Twitter.

> Twitter supports tweets of up to 140 characters. "Tweet length is measured > by the number of codepoints in the NFC normalized version of the text."

[1] [https://github.com/ferno/base65536#why](https://github.com/ferno/base65536#why)

</comment></comment></comment><comment><USER32> Next up: require from bitcoin blockchain

</comment><comment><USER33> this would actually be an interesting coding challenge and experiment to see if something could be built worthwhile in modules limited to no larger than 140 characters.

<comment><USER34> Not a good constraint. Just make each tweet module export a string, and concatenate them and eval().

<comment><USER29> well, that could be easily solved by prohibiting eval?

<comment><USER35> Concatenate them and then run them through Babel...

</comment></comment></comment></comment><comment><USER36> Make sure you scroll down and read the mandatory disclaimer before commenting on the merits of this approach.

</comment><comment><USER37> Github could easily solve this problem:

If a repo meets certain criteria in licensing, create the ability to "Static Publish" a release. This feature communicates that the version repo is the public's and cannot be removed by the individual or team. Github also enters the agreement that if there is ever a need to "move" the version due to copyright infringement, it provides either aliasing or sooner sort of notification and time bomb before it goes offline.

If this were done, folks could be in the know about which packages and dependencies are at risk, so they enter into the install with their eyes wide open.

</comment><comment><USER38> Shouldn't have voted against increasing character count, we could've had a free cdn

</comment><comment><USER39> Well there you go. Problem solved.

</comment><comment><USER40> Standardized modules like this are exactly what the node.js-stack bot herding community has needed!

On the plus side: if you saw this dependency in a module you were looking at you would know to think twice.

</comment><comment><USER41> There's still another eight days until April first.

</comment><comment><USER42> There's also a package manager for it: [http://require-from- twitter.github.io/](http://require-from-twitter.github.io/)

> require-from-twitter is the core code for the tweet package manager. Our > beta version has only one dependency: npm. But we're working hard on adding > more dependencies as quick as possible.

</comment><comment><USER43> Along similar lines, I made it possible to use NPM packages in the browser without a build step or server: [https://github.com/olegp/bpm](https://github.com/olegp/bpm)

More info here: [https://meetabit.com/talks/37](https://meetabit.com/talks/37)

</comment><comment><USER44> What we really need is require-from-stackoverflow

</comment><comment><USER45> One of the interesting side-effects here is that while it encourages you to write very small packages, it also strictly caps the maximum number of packages which you can add as dependencies of your own package. There's only so many `require` calls you can fit in a Tweet.

</comment><comment><USER46> Twitter finally has a business model! Who knew that source code hosting would be the killer app?

</comment><comment><USER47> I know this is supposed to be funny, BUT if you vendored and kept a local copy in you're build environment, you wouldn't have to worry if the tweet gets deleted.

This is the lesson I see noone talking about.

Of course, using a tweet as a source for a library is silly.

</comment><comment><USER48> TDD - Twitter Driven Development

</comment><comment><USER49> Well, twitter staff was saying they'd last at least another ten years, would NPM?

</comment><comment><USER50> Filesystem interface to Twitter:

[http://softwaretechnique.jp/DownLoad/twfs_en.html](http://softwaretechnique.jp/DownLoad/twfs_en.html)

This is probably more generic than the project discussed here.

</comment><comment><USER51> Why not just use anonymous gists in conjunction with RawGit CDN?

Unique IDs, no way to change or delete (since the gists are anonymous), served right out-of-the-box with a proper content type from cdn.rawgit.com.

</comment><comment><USER52> For deleted tweets:

On every fetch, submit the tweet to archive.org and archive.is if not already there. If tweet is deleted, fetch from there instead.

</comment><comment><USER53> I'm impressed no one has posted their own version for a different language.

</comment><comment><USER54> twitter doesn't have an edit button, but it does have the delete button ;)

<comment><USER55> martin-adams solved this problem:

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

</comment></comment><comment><USER56> can someone explain what is this ? I really have no idea

<comment><USER57> This person wrote a tweet and the tweet has code[1]. This snippet in JavaScript allows you to import that code into your code as a module. I think this is trolling on state of the Node community because over the previous few days, people have found some pretty interesting dependency architecture[2].

[1] - [https://twitter.com/rauchg/status/712799807073419264](https://twitter.com/rauchg/status/712799807073419264)

[2] - [http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/?...](http://www.theregister.co.uk/2016/03/23/npm_left_pad_chaos/?mt=1458720804410)

</comment></comment><comment><USER58> Let's host systemd on Twitter.

</comment><comment><USER59> Lol YMMD

</comment><comment><USER33> funny :)

</comment><comment><USER60> If you can get a good toolkit for writing a GLR parser, then people will write their own tokenizers, BNF formal grammars, and plug it into your parser. It would take a single person about two to six weeks to get something thoroughly polished in JavaScript along the lines of what is described. However I think that without some form of centralization, (perhaps a subreddit? idk) it will be difficult for the standardization and namespace organization process to take place. If it is just one person, there is no question of standardization; if it is multiple people, the question of who is in charge of the namespace becomes relevant. Who is in charge of the namespace in this particular experiment?

</comment><comment><USER61> npm over twitter? A site populated by trolls and spammers. What could _possibly_ go wrong?</comment>


iOS Typesafe and automatic font,color,image,localization(+Interpolation) manager - <AUTHOR> https://github.com/farzadshbfn/Styled <comment><AUTHOR> This library will manage different Color/Font schemes and Device font managements and Localization (including String-Interpolation) to be managed automatically (with device or custom controls) and in a type-safe way. SwiftUI uses the same technique, but if you're limited to support iOS versions prior to 13.0, I'm pretty sure this library can boost your application.</comment>


Obama and Romney on Science - <AUTHOR> http://www.scientificamerican.com/article.cfm?id=obama-romney-science-debate

<comment><USER2> Here is a question-by-question breakdown:

Innovation and the Economy

Obama: I will throw money at research and set a goal of 100k STEM teachers.

Romney: I will fix immigration, privatize government training programs, lower corporate taxes, reduce regulation, protect IP, free trade, offer k-12 educational "choice", and politically polarize government research spending. Also, Obama politically polarized his research spending, so he sucks.

Climate Change

Obama: I agree that climate change is an issue, and I have proposed (and will continue to propose) carbon pollution limits, reduced emissions, and reduced dependency on oil.

Romney: Waffle, waffle: warming is occurring, and it's partly man-made, but there's no "scientific consensus". Science doesn't dictate policy. Obama sucks, it's called "global warming", not "america warming", so it's China's fault. Cap and trade sucks, carbon tax sucks, let's do a "no regrets policy" that will reduce emissions but not harm the economy. That means "clean coal" and "safe nuclear", not hydro or solar power.

Research and the Future

Obama: I spent 90 billion on research into clean energy. I will also continue investing in medical and security research. Also, permanent R&D tax credit.

Romney: Obama spent 90 billion dollars on a failed attempt to promote green energy. I would have spread that out over 20 years. I will give money to corporations for research rather than give the money to scientists. Also, Obama sucks.

Pandemics and Biosecurity

Obama: We need to work internationally to help address communicable diseases.

Romney: We need to invest in public health monitoring systems. Also, Obama stifles medical innovation. Did I mention he sucks?

Education

Obama: We need to focus on STEM, goal is 100k STEM teachers, announcing federal program: STEM Master Teacher Corps.

Romney: Education sucks, A Nation at Risk, only American politics is suckier than education. Spending on education sucks. Teacher unions suck. Strangely, Obama doesn't appear to suck. I will privatize education with charter schools, transfer public school funding to said private schools (I call this "enabling choice"), penalize teachers whose students don't test well, and try to hire "better" teachers.

Energy

Obama: "All of the above", increase fuel efficiency standards, reduce dependence on foreign oil. Renewable energy.

Romney: Increase "domestic energy production" (he probably means oil), Obama and green energy sucks, where's my Keystone XL Pipeline? Drill, baby, drill.

Food

Obama: Give the FDA the resources, authority, and tools to do their job. Strengthen standards, support certified organic initiatives.

Romney: Preventative practices are best set by the people who produce the food, not government. Only they know whether or not a particular requirement will be profitable -- I mean feasible. I will have the FDA partner with growers and producers to determine the correct standards to use. Obama.... doesn't suck this time?

Fresh Water

Obama: I support water conservation and waste water programs through grants, and will work collaboratively with communities to ensure they have access to fresh water.

Romney: Lawsuits against businesses for clean water suck. Unnecessary constraints on business suck. I support market-based incentives to improve the water in our nations lakes and rivers.

NOTE: Neither candidate addressed the issue of pollution.

The Internet

Obama: Free internet is important, but so is IP. Draconian anti-piracy policies must not reduce freedom of expression or undermine the internet. Also, we need cyber-security.

Romney: The government shouldn't manage the Internet. It's owned by private companies, let them manage it. Obama sucks and is trying to take over the Internet. Net Neutrality sucks, broadband providers should be free to prioritize their traffic -- after all, they own the Internet. The UN sucks and wants to take over the Internet.

Ocean Health

Obama: We are investing in restoration projects, and will continue to do so. We will also support conservation efforts.

Romney: The economy is based on fishing. We need less regulation of fishing, and I will protect the health of fisheries, because the economy is based on fishing. NOTE: Once again, neither candidate addressed the issue of pollution.

Science in Public Policy

Obama: I support transparency and public participation, and I base my policies on the best science available without distortion or manipulation. I will continue this in my next administration. I do not support distorting science to fit a political agenda, and make decisions based on facts, not ideology.

Romney: I will base my policies on the best available scientific and technical information, and will avoid manipulating science for political gain. Obama sucks and distorts science to fit his agenda. He will get rid of mercury pollution by bankrupting the coal industry. Also mercury pollution is measured in dollars. Finally, I will establish a "regulatory cap", forcing agencies to spend as much time repealing and streamlining outdated regulations as they do imposing new ones.

Space

Obama: We will continue to focus on sending humans to an asteroid by 2025 and Mars by 2030. Space is exciting and inspirational work. Romney: Space is crucial to spurring the economy, innovation, and national security. Also, it shows how awesome we are to other countries. I will not give NASA more money, I will clarify their priorities: practical missions, security/defense/military use, and stuff that can be used by corporations for profit.

Critical National Resources

Obama: China sucks for not exporting more rare earth minerals, and we're suing them for it. We need to be less reliant on other countries (like sucky China), so I'm going to focus on research for electronics that don't rely on rare earths.

Romney: The US used to produce rare earths self-sufficiently. But regulation sucks, and that's why we don't do that anymore. Oil is a similar problem, and I'm going to spend two paragraphs on how we need to drill, baby, drill. Apparently rare earths are energy.

Vaccination and public health

Obama: Obamacare will help make vaccinations affordable and available.

Romney: We need to make vaccines, which means we need to strengthen the economy so medical companies can profit from vaccines, giving them incentive to make new ones.

</comment><comment><USER3> These are all words in the article, let's look at the actual track record, after all in a politician past performance guarantees future performance

Under Obama the NSF and NIH budgets have been flat. As far as the actual _practice_ of science goes, there is no difference between the candidates. We didn't know that five years ago, when it was guaranteed that there was going to be a Democratic president and Congress. Most every university started building projects to expand their aging facilities, considering that Democratic administrations had always been favorable to the sciences and that under Bush II federal funding for the sciences had been flat. The increase in funding didn't happen, and that is part of the reason that US universities are in trouble.

</comment><comment><USER4> Obama on Education: "An excellent education remains the clearest, surest route to the middle class."

This is a really weird quote to me. Is class in the US an aspirational thing? What is the best route to the upper class? What is the upper class? I for one am unsure about my new upper class overlords.

<comment><USER5> Class in the US is absolutely an aspirational thing, but he's referring not to "class" in the literal sense of positional status within society, but more to the material trappings of "middle class life": things like a house, one or two cars, the ability to take occasional vacations, cable TV, an iPhone, etc.

Arguably many or most people want many or most of those things because of perceived status advantages they provide, but that's another issue altogether.</comment></comment>


Giant Artificial Wall Under Antarctica Could Stop Catastrophic Sea Level Rise - <AUTHOR> https://www.iflscience.com/environment/scientists-think-a-giant-artificial-wall-propped-up-under-antarcticas-ice-sheets-could-stop-catastrophic-sea-level-rise/all/ <comment><USER2> One climatologist I spoke with during grad school days said something that stuck with me: we are past the point of abatement, and beginning the cycle of adaptation. While cynical, it seems more on point than articles like this proposing huge geoengineering projects in the age of distrustful authoritarianism.</comment>


Streaming video on 10 Gigabit Ethernet and beyond - <AUTHOR> http://www.bbc.co.uk/rd/blog/2015/10/streaming-video-on-10-gigabit-ethernet-and-beyond <comment><USER2> Interesting, reminds me of a related question. I've looked recently for 10 gig ethernet on a new laptop and haven't been able to find it.

I know it is overkill, its just that it has been about ten years already, isn't it cheap enough yet? Can't a modern ssd keep up with it?

<comment><USER3> Probably a combination of lack of need until recently (125MB/sec is more than fine to saturate a classic disk), parts cost and power consumption.

I can't think of anything except connecting to a _fast_ SAN that would require a 10GBE port in a laptop. Maybe something specialized for a network engineer, but even then it's probably easier to buy dedicated equipment for line rate port monitoring

<comment><USER4> A very cheap RAID5 setup with 4 spinning disks and a filesystem like ZFS or btrfs should get you about 3-500 MB/s, so 10 GbE is good for that setup on nodes.

<comment><USER5> The only way you're getting 3-500MB/s on a 4-disk ZFS RAID5/raidz is with very, very fast SSDs and a very, very fast CPU. Not exactly "very cheap". (The compute and I/O overhead for raidz is significant.)

<comment><USER6> This is... not my experience at all. I have a RAIDZ2 comprised of 6 4TB Seagate drives (the 5900RPM variety) and it can do about 600MBps read/write with moderate CPU usage on an Intel i3. A mirrored zpool of two Samsung 850 EVO SSDs can do nearly 1GBps read/write. That's not a particularly expensive setup.

<comment><USER5> 600MB/s write over 6 drives in RAID-Z2 is very good on an i3.

</comment></comment></comment></comment></comment></comment><comment><USER7> from the article:

> Each core needs to generate a few thousand data packets per second, because > Ethernet packets typically contain up to 1500 bytes. This gives the CPU > around 100 microseconds to process each packet.

No it doesn't, not when using TCP Segmentation Offload (TSO)

This only works for a particular use-case: sending static data using TCP, but this is the most common use-case since a typical "video streaming server" is actually a simple HTTP server that serves static MP4/MPEG-TS data.

for each connected client this is what happens \- nginx/apache does sendfile(file, sock, off, <large_number>) \- kernel issue large (> 10kB) DMA read to the file storage backend into a set of memory pages and wait for completion \- kernel allocates/clone a small IP/TCP header (40 bytes) \- kernel gives that small header + set of memory pages to network card, which will segment and create those 1500 bytes packets and send them on wire

if you have a lot of RAM, the read from storage could even be skipped because the previously read data pages are kept in the page-cache with a LRU approach. (help if clients are requesting the same file).

you can easily saturate a 10G link with spare CPU cycles on cheap hardware with that approach, no need to bypass anything.

</comment><comment><USER8> Kind of arcs back to the days when people were putting HTTP servers in kernel space. Slightly different tac though

<comment><USER9> but the same result, reduce copies.

<comment><USER10> Reducing context switches is probably just as important.

<comment><USER8> Context switches in to kernel land are a lot cheaper on x86 than they used to be.

</comment></comment></comment></comment><comment><USER11> My state of knowledge leads me to think, that bypassing the kernel requires some non-blob network drivers with which you can tinker around. Am i mistaken?

So right now, i am missing the information on what kind of NIC they were using. Any thoughts or comments on that HN-community?

What vendor and product model would be a reasonable entry point for such endeavours? Answers very much appreciated.

<comment><USER12> In the past, some of my colleagues have used Intel's 82599 NICs for kernel bypass. Their Linux driver is quite good, they have a DPDK platform for developing user-space apps to directly access ring buffers on the NIC, and if you do a quick search, you should be able to find examples online.

Cloudflare wrote a blog post recently about accelerated packet IO and their post mentions the 82599 NIC: [https://blog.cloudflare.com/kernel- bypass/](https://blog.cloudflare.com/kernel-bypass/).

<comment><USER9> via netmap, yes.

</comment></comment></comment><comment><USER13> Is a single CPU core able to process 4k/50fps video stream? Or is there no need for any processing, other than encapsulating it into data packets for sending to the network card?

<comment><USER14> Clearly not, which is exactly why kernel bypass is such a huge red flag: it's only possible (rather, useful) if you aren't doing anything sensible with the data anyway, or the kernel overhead would be tiny compared to the processing.

Use the right tool for the job and don't funnel network data through your instruction pipeline. When they realized that for memory, they called it "DMA", and when graphics was scaling up, we created the GPU.

<comment><USER15> The networks used by supercomputers have have kernel bypass with DMA for more than a decade... and they do a lot of processing on the data, too. Check out Infiniband and Intel's Omni-Path for modern examples. Or the Cray T3E (1995), which had an excellent network with a user-level DMA engine that only did 8- or 64-byte transfers.

</comment></comment></comment><comment><USER16> Linus Tech Tips talked about the difficulties in getting 10 Gigabit working.

[https://youtu.be/D03t890dKTU](https://youtu.be/D03t890dKTU)

</comment><comment><USER17> All this talk about TCP and HTTP streaming when they are actually trying to do low-latency UDP for broadcast production.

(When you have a hammer (web technologies) everything looks like a nail I guess)</comment>


Microsoft mercifully puts an end to April Fools' Day gags - <AUTHOR> https://www.engadget.com/2019/03/27/microsoft-ends-april-fools-day-gags/ <comment><USER2> Fun in tech really died when they killed off the Easter Eggs. Excel used to have its own embedded flight simulator and engineers got a place to sign their names. In XL95 it was the Hall of Tortured Souls, a Doom like room you could explore.

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

</comment><comment><USER3> Corporations hate things that make us human, humour, ambiguity, sex and emotion.

Unless they are monetising them.

</comment><comment><USER4> The really simple solution is to only have the gag for non- corporate accounts. Then again a lot of people (myself included) use their personal email for buisness. Yet people also use non-domain windows licenses for buisness use and get angry when updates are automatically installed.

I think this is just part of the trend of tech companies becoming more corporate and traditional as expectations increase.

</comment><comment><USER5> April fools, Microsoft is a very hip company. /s

<comment><USER6> While I totally agree with this, I think it's none the less an example of becoming just another part of the economy rather than being s special part of the economy.

I.e. tech is mainstream and diffuse and not as niche as it used to be in its own economic orbit.

</comment></comment><comment><USER7> I usually avoid the Internet on April 1.

</comment><comment><USER8> Another thing Microsoft tries to ruin</comment>


Method of loci - <AUTHOR> https://en.wikipedia.org/wiki/Method_of_loci <comment><USER3> There's an active memory-improvement community at [http://artofmemory.com](http://artofmemory.com) including forums and a wiki of techniques.

Why bother? Because these techniques increase the capacity of "cache" that is closer (low latency) to human "computation". This can lead to faster traversal of the OODA loop, [https://en.m.wikipedia.org/wiki/OODA_loop](https://en.m.wikipedia.org/wiki/OODA_loop), which is relevant to lean startups, business competition, combat and more.

See the HN thread on AI as an enabler of IA, [https://news.ycombinator.com/item?id=10373180](https://news.ycombinator.com/item?id=10373180)

In addition, spaced-repetition techniques can be used to increase your vocabulary, which is like gaining extra pixels for the expression of nuanced goals, helping any compass which guides execution to a goal. Words are proxies for dreams and dangers, especially in a software-constructed world. Greater word capacity becomes greater visibility over a software-based terrain.

<comment><USER4> I can vouch for spaced-repetition being an excellent training tool. It isn't just for words though. My uses for it range from individual terms to small training exercises. When I find a new solution to a problem I have, I often make a spaced-repetition card for it. You can learn a lot by making a daily habit of it.

<comment><USER5> (Adding to what you wrote.) Since you mention that it's not just for vocab, here's an extensive article on how to formulate knowledge in general that goes into a spaced repetition system. (There is also a summary at the bottom.) [http://www.supermemo.com/articles/20rules.htm](http://www.supermemo.com/articles/20rules.htm)

It's part of a site for a closed-source client, but Anki[1] is a good open- source one.

[1] [http://ankisrs.net/](http://ankisrs.net/)

</comment></comment></comment><comment><USER6> Very very cool! Interested? Read 'Moonwalking with Einstein'

I recall being surprised (the whole class) by a surprise test for some people who wanted to study us. We had 5 minutes to memorize 50 random words. I just read Moonwalking with Einstein so I learned how to use loci. The average that people could recall (N=25) was around 20 words. I was able to recall 49! 49! That's almost perfect! I was pretty fucking baffled. I still know most of them ...

A JAMAICAN person jumped off a RAMP on the TITANIC and then flew in to SPACE on the ISS where he saw a DOG which was playing the VIOLIN which then bit TESLA, GHANDI was playing CHESS and then the iss crashed down into MILAN which was covered in a huge OMELET, we flew over mount FUJI and ... etc

Bolded words are words that were on the list. It's pretty awesome for hardcore memorization!

<comment><USER7> The one problem I've had with these "construct a story" mechanisms is that I have just as hard of a time remembering the specifics of the story as I do some of the things I'm trying _to_ remember.

In your example, "the ISS crashed down into $city" requires remembering the city name, and that's just a few words in. By the time the novella gets to the 50th word, there are a __ton __of details one must remember, aside from the story itself that houses them (which in your case seems custom made for those words; I 'd be surprised if that was your general purpose loci).

This problem is compounded by the system described on ArtOfMemory's wiki ([http://mt.artofmemory.com/wiki/Method_of_Loci](http://mt.artofmemory.com/wiki/Method_of_Loci)) where they use a fixed story but with interchangeable items in the rooms. I'm sure with enough reciting of that story, I could remember the corn and milk, but the _second_ time I need that memory palace, only this time with different items, I'm screwed because the two stories will bleed together.

I recognize this comment might sound like I'm deriding the method, but I promise that's not the case. I just want to know if someone else has the same "stories don't work for me" and to know if there is a twist or alternate which makes them work for the kind of brain which isn't helped by loci.

<comment><USER8> This is Josh from artofmemory.com. If you get ghost images, try waiting longer between each use. You can have multiple memory palaces and rotate them to give each palace a rest after use. After some practice, it should come more easily. I haven't written a shopping list down in years.

There are more tips on the memory palace page ([http://mt.artofmemory.com/wiki/Memory_Palace](http://mt.artofmemory.com/wiki/Memory_Palace)), and you can ask more questions in the forum.

</comment></comment></comment><comment><USER9> There is a great TED talk about this: [http://www.ted.com/talks/joshua_foer_feats_of_memory_anyone_...](http://www.ted.com/talks/joshua_foer_feats_of_memory_anyone_can_do)

<comment><USER10> And a great book called Moonwalking with Einstein

<comment><USER11> Yes, it is a great read.

I heard about the "Memory Palace" on BBC's Sherlock. Holmes says that you can theoretically remember everything (I think this was in the episode The Hounds of Baskerville). I then happened upon this book via gatesnotes[0], and picked it up.

The author is quite successful in learning and putting this technique to use. He reaches the finals of the USA Memory Championship. However, he says this at the end - "For all the memory stunts I could now perform, I was still stuck with the same old shoddy memory that misplaced car keys and cars. Even while I had greatly expanded my powers of recall for the kinds of structured information that could be crammed into a memory palace, most of the things I wanted to remember in my everyday life were not facts or figures or poems or playing cards or binary digits."

It seems this method can help in memorizing things you consciously put effort to remember. This becomes easier as you practice. But if you were thinking of using this to remember every point of your life, as in where you placed your car keys this morning, or where you left your phone, things get murky - <USER2> what the Author mentioned. Although I do wonder how many people would try doing that.

0: [http://www.gatesnotes.com/Books/Moonwalking-with- Einstein](http://www.gatesnotes.com/Books/Moonwalking-with-Einstein)

<comment><USER12> I can't find a reference now, but I read about a women who had a debilitating mental illness -- she could remember very many of the mundane details of her days, and it crowded out her ability to perform other mental tasks.

<comment><USER13> [https://en.wikipedia.org/wiki/Hyperthymesia#Cases](https://en.wikipedia.org/wiki/Hyperthymesia#Cases)

The person you heard about might have been

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

These cases remind me very strongly of the Borges story "Funes the Memorious" ("Funes el Memorioso").

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

Edit: It was interesting to hear that Price rejected the interpretation of her condition that was given in the Wired story about her (which was how I'd heard about her).

</comment></comment></comment></comment></comment><comment><USER14> This came to my attention while reading the essays collected in Tony Judt's book _The Memory Chalet_ ([http://www.nybooks.com/articles/archives/2011/feb/10/tony- ju...](http://www.nybooks.com/articles/archives/2011/feb/10/tony-judt- distinctions/)). From the review:

"Physically unable to write [because of ALS], but with a mind as sharp and active as ever, [Judt] plotted the twenty-five short essays that compose this book in his head, while he was alone at night, using a mnemonic device taken from accounts of the early modern "memory palace," whereby elements of a narrative are associated with points in a visually remembered space; but instead of a palace, he used a small Swiss chalet that he had once stayed in on vacation as a boy, and that he could picture vividly and in detail. He was then able to dictate these feuilletons the next day from the resulting structure."

</comment><comment><USER15> I took the Jonathan Levi Superlearner course on Udemy about a year ago and the Loci method is a key part of this course.

I highly recommend it for anyone who is interested in this topic.

I can say that it's extremely useful for remembering lists of things, but I haven't had a lot of success in using it to retain or organize abstract information.

<comment><USER16> >I can say that it's extremely useful for remembering lists of things, but I haven't had a lot of success in using it to retain or organize abstract information.

I think the fact that these techniques have died out is some evidence that they are not actually very useful.

<comment><USER17> Just as a counterpoint, in the book "Moonwalking with Einstein", the author talks quite a bit about the fact that many of these methods survived for a long long time, and people in the past considered memory an incredibly important proof of someone being educated.

The methods seem to have been "lost" mostly when better options for external memory (e.g. writing and printing) became more universal. (iirc - i'm probably messing this up somewhat).

<comment><USER13> Yeah, it might be harder to convince people that classic memory techniques are important when they carry smartphones. But the classic memory techniques may still _work_ just as well as they ever did!

</comment></comment></comment></comment><comment><USER18> About halfway during an Introduction to Psychology exam in college (and this was told to the class ahead of time), the professor told us to close our exam booklets and listen to a list of 20 things, having the class using the Method of loci to remember them. Afterwards, students had to write it down the list _in order_ in their test booklet. The question was worth as many points, with _any_ out-of-order mistake forfeiting the rest of the points for the list.

Somehow, I managed to get everything correct.

</comment><comment><USER19> I'm really curious about building a virtual memory palace for VR. Seems there would be many possibilities to make memorizing more effective.

Some common techniques like following a predetermined path through a palace and imagining diffrent unique objects and scenes at fixed locations along that path could be really nicely visualized.

I would think you could benefit a lot from actually beeing able to explore and fully take in a memory palace while feeling like you're actually present with VR.

<comment><USER20> If you are a really visual person, perhaps. I would want all sorts of other senses in addition though. Being able to lay my hands on the brickwork and hear how sounds are affected by walls would be important parts for me.

On the other hand, a palace in VR has the benefit of not getting demolished, and being accessible even if you move to another country.

I understand that fictional locales were used as palaces for this reason. For instance, Dante's circles of hell.

Edit: corrected an inexplicable typo (had 'and' for 'hands')

</comment></comment><comment><USER21> Are most people able to just "picture a room" as required by this technique? I've never been good at that. Whenever I try to picture a location, I just see objects and landmarks with no real sense of place, kind of just floating in an impressionistic aether.

<comment><USER22> For me it's not really about picturing a room, but coming up with the vivid transitions between objects.

Ex. For wolf, orange, hail; I might picture: The wolf sitting on top of a house, and when he opens his mouth it violently rains an infinite stream of oranges, then when gravity kicks in the oranges start falling from the sky turning into huge balls of hail.

The imagery like hundreds of oranges pouring out of a wolves' mouth, and oranges falling from the sky like hail are what do it for me. I've used this technique for lists of 20-30 somewhat unrelated items effectively.

</comment></comment><comment><USER23> People who watch BBC Sherlock should be familiarized with it :)

<comment><USER24> Not sure why you're getting downvoted, the show led me to looking up memory palaces too!

</comment></comment><comment><USER25> There are a lot of methods that was developed by Harry Lorayne. I recommend to read some of his books (The Memory Book).</comment>


Buying a laptop online is a broken experience - <AUTHOR> https://raed.it/blog/buying-laptop-online-broken-experience/ <comment><USER2> > Needs to be powerful enough to run a text-editor like VS Code or Atom with > some Node or Python in the background.

Sorry, I had a chuckle to myself that in 2018, we are worried about computers capable of running text editors!

Hail Electron and JavaScript ecosystem!

<comment><AUTHOR> This is true. And I agree with you but modern "text-editors" are not really just text-editors. They come with git, syntax highlighting, debugging tools, etc...

Not quite an IDE, but not notepad either.

<comment><USER3> And people claimed that Eclipse was bloated. Yet I was able to run 5 years ago not one but 2 Eclipse instances on an ARM Chromebook with 2GB of memory compiling and debugging an Eclipse extension. This was in a crouton chroot [1] with few chrome tabs opened in parallel. When I edited the files that involved using a lot of IDE features for Java the system was snappy. The only time when I felt that the system was slow was when rebuilding everything. But that was expected given the slowness of CPU and RAM.

So how can a text-editor that is not even an IDE require more resources...

[1] [https://github.com/dnschneid/crouton](https://github.com/dnschneid/crouton)

<comment><AUTHOR> Eclipse is and has become even more resource hungry : [https://imgur.com/a/TnS7CPi](https://imgur.com/a/TnS7CPi)

<comment><USER3> This is trivially to deal with by a one or two of command-line arguments to limit Java heap to 256MB or less. This had an added benefit of making full GC faster so when it happened the pause was not annoying.

</comment></comment></comment></comment></comment><comment><USER3> I have found reviews from [https://notebookcheck.net](https://notebookcheck.net) rather useful with their notes about keyboard and screen mostly matching what I get on a physical machine.</comment>


Elena Kagan's  White House Emails - <AUTHOR> http://www.elenasinbox.com/ <comment><USER2> Forgive my ignorance, but I cannot be alone on this one: Just exactly what the heck am I looking at?

<comment><USER3> Official White House email transcripts from when Supreme Court nominee Elena Kagan worked as Bill Clinton's staff lawyer.

The clever bit: putting it in a webmail interface rather than making people scroll through a 1000 page pdf and double check every header.

</comment></comment><comment><USER3> I'd usually flag for lack of hack, but I have to admit this presentation is innovative and serves a worthwhile public purpose by making the information so accessible.

<comment><USER4> I'd argue that this is a wonderful example of civic hacking, but then again I'm biased, as I work for the guy who built this.

<http://www.google.com/search?q=civic+hacking>

</comment></comment><comment><USER5> What's with all the return receipts? Do people really use return receipts that much?

<comment><USER6> She's an attorney -- such audit/evidence trails are essential in her profession.

<comment><USER7> Email clients don't have to honor read receipts. In fact, apps such as Outlook, have an option where you can turn it off. And I've use a Lotus Notes macro that removed them.

<comment><USER8> Yea, and I doubt that the footers lawyers append to every email mean much in terms of disclosure, but that doesn't stop law firms from trying it anyway.

I think read receipts fall into the category of "good faith effort", and not much more.

</comment></comment></comment></comment><comment><USER9> Read <http://sunlightlabs.com/blog/2010/elenas-inbox/> \-- this data is extracted from a PDF of data OCRed from a printout from a web interface to the actual email archive. Yuck.

</comment><comment><USER10> Incredible, I love it. My first instinct is to say every public official should have this.

<comment><USER11> Then they'd stop using email. One of the nice things about email is that a lot of the time people don't realize they're on the record.

<comment><AUTHOR> Federal employees know all emails are going to be kept. It's part of their training and it's required by federal law. I'm not sure though about individual state and local laws though.

And if they were going to stop using email, what would replace it? Personally, I can't see these busy individuals doing all business over the phone. Blackberries are also covered by federal law.

<comment><USER12> I seem to remember a certain VP nominee using her personal email for work purposes in a different public role...

</comment></comment></comment></comment><comment><USER13> This is an outbox.</comment>


Twitter experiences major, 2-hour+ outage - <AUTHOR> http://status.twitter.com/post/699623494/site-availability-issues-due-to-failed-enhancement-of

<comment><USER2> This is a perfect storm. Many twitter clients automatically retry posting tweets when there is a non 200 return code from the Twitter API (including humans posting on the website seeing errors). Unfortunately, Twitter has been returning 5xx codes while successfully posting tweets. This, plus the apparent fact that duplicate tweet detection is failing/turned off means that all of the duplicate posts get through. Mayhem ensues...

<comment><USER3> #firstworldproblems

</comment></comment><comment><USER4> This happened the other day as well (probably on a shorter timescale, I'm not sure). I'm not sure if it was a 5xx error code - it seemed more like connections were hanging.

It showed me the danger of working on someone else's platform, cue warning story:

I had something that queried Twitter in php (Curl) but it never really occurred to me to time out the connection (this was ages ago, I forgot about the project till the other day). For some reason I assumed the host would kill long running PHP scripts..

Apparently not because my whole account got disabled for too many open connections.... oops.

</comment><comment><USER5> "..failed enhancement of a new approach to timeline caching"

I hope this is not a testament to scalability of Cassandra or Redis.

Ref: [http://engineering.twitter.com/2010/02/link-cassandra-at- twi...](http://engineering.twitter.com/2010/02/link-cassandra-at-twitter.html) <http://github.com/twitter/haplocheirus>

<comment><USER6> At this point, neither Cassandra nor Redis are in the critical path of their timeline service.

</comment></comment><comment><USER7> I noticed I kept getting Internal Server Error messages, so I kept trying to post, until I checked my timeline and saw it showed my post 4 times. Then I saw someone I follow post the same message about 20 times in a row.

It kind of reminds me of the Win32 exception with a result code of 0, "Operation completed successfully." but backwards.

</comment><comment><USER8> Never before has a free service been relied upon by so many diverse people, from business people, to students and demonstrators. Long live Twitter!

<comment><USER9> google.com</comment></comment>


FBI Director wants 'adult conversation' about backdooring encryption - <AUTHOR> http://www.theregister.co.uk/2016/08/31/fbi_wants_adult_conversation_about_backdoors/ <comment><USER2> Ok, let's do that.

FBI: Let us in the backdoor?

US: No.</comment>


SCOTUS: Debt collectors may submit time-barred claims in bankruptcy cases [pdf] - <AUTHOR> https://www.supremecourt.gov/opinions/16pdf/16-348_h315.pdf <comment><AUTHOR> tl;dr

In cases where the statute of limitations has made a debt unrecoverable in court, debt collectors may nonetheless file a claim for that debt as part of the debtor's bankruptcy proceedings, even though the statute of limitations is a valid defense against the claim.

The 5-3 majority found that debt collectors don't do anything wrong by filing such claims and should not be legally prevented from doing so, because there's a difference between a claim and a valid claim, and it's up to the courts to sort out the validity.

The dissent argued that the debt collectors' business model essentially exploits the bankruptcy system. Even though they know their claim will be shot down if noticed and appropriately answered, it often goes unnoticed or not appropriately answered.</comment>


Former CEO of RadioShack now an ER doctor on frontlines of Covid-19 fight - <AUTHOR> https://nationalpost.com/news/canada/second-act-former-ceo-of-radioshack-now-an-er-doctor-on-frontlines-of-covid-19-fight <comment><USER2> Holy crap, I used to volunteer in this exact ER for years! I'm pretty sure I've seen him around, I had no idea he was the former CEO of RadioShack!

<comment><USER2> Since this comment seems to be fairly top-rated, I'm going to expand on this story a bit.

I graduated from ECE at Waterloo in 2008. I wanted to go to med school, so I studied for the MCATs (did well), volunteered at this ER, and eventually went on to do a Masters in medical imaging. I never did go to med school though, I didn't have the marks nor the drive.

That said, volunteering at this ER was a significant turning point in my career/life. Besides the life experience of being in a busy ER, it actually served as the foundation point for my current career as a software engineer/startup founder.

During my volunteer stint, my volunteer coordinator passed my name along to the company running the bedside television terminals in the hospital. I started working for them, selling services to patients. Through that work, my innate curiosity and need to solve problems got the best of me. I saw they had a fairly new/technical system, yet we were doing things by paper. I started hacking on the system, figured out how to extract data from the DB using a PHP script. This caught the attention of the company owner. Eventually, I left that job to continue doing contract software/technical work for that owner. We had a very interesting relationship over the years.

Eventually, I leveraged that opportunity to find future opportunities in commercial real estate, which I used to create my current startup.

Oh, and I met my wonderful wife through that volunteer position too. We now have a beautiful 1.5 year old.

All because I volunteered in the ER.

</comment></comment><comment><USER3> When I was a kid, my dad sat next to a different RadioShack CEO on a plane. He mentioned that I was always in the store and Mr. Roberts gave him this, [https://imgur.com/a/BolEA](https://imgur.com/a/BolEA)

<comment><USER4> that's cute :)

I know my kid would have really liked something like that.

</comment></comment><comment><USER5> Holy Shit! Imagine being the CEO of a RadioShack, then saying "I want to become a Doctor" and actually doing it. That's amazing! Love this story.

<comment><USER6> A bit tangential, but this reminded me of Dexter Holland [0] the lead singer and songwriter of the band The Offspring. He went on to get a PhD in molecular biology (not an honorary one) and publish various papers about HIV.

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

<comment><USER7> Note that he was already a PhD candidate went he met success with the Offspring. The same could be said of Brian May with astrophysics and Queen.

</comment></comment></comment><comment><USER8> One of my all-time favorite satirical articles from the onion: [https://www.theonion.com/even-ceo-cant-figure-out-how- radios...](https://www.theonion.com/even-ceo-cant-figure-out-how-radioshack- still-in-busine-1819569077)

I wish either one of its ex-ceos was like that in real life. But an ER doctor is pretty cool as well.

<comment><USER9> Ha, that's also one of my favorite Onion articles (besides the one that says Toyota issuing a recall on all 1993 Camrys because it's really time for the owner to get a new car).

Another great piece of RadioShack literature is Jon Bois' recap of working there for years. It's long but worth a read if you have 20 minutes.

[https://www.sbnation.com/2014/11/26/7281129/radioshack- eulog...](https://www.sbnation.com/2014/11/26/7281129/radioshack-eulogy- stories)

I think if someone asked me to sort of define the 2000s, outside of some obvious life events, this article does a pretty damn good job of painting a picture of where we were.

<comment><USER10> just sharing one of my favorite Onion articles here since we're on this topic: [https://www.theonion.com/protagonist-scrolls-intensely- throu...](https://www.theonion.com/protagonist-scrolls-intensely-through- microfilm-1819571094) if i tell you more i'll ruin it

</comment></comment></comment><comment><USER11> Some people can learn to do more than one thing reasonably well and more easier than others. I won't be surprised if we see another headline in 5 years telling us that Mr Levy is a rocket scientist working for NASA, or he started a successful business or he is an acclaimed novelist.

I find people like him inspiring, I would much prefer if media would concentrate on presenting us more people doing useful things instead of celebrity gossips.

</comment><comment><USER12> > 'I am just one of those people who was very fortunate, where things worked > out, and where I could do not just do one thing I really enjoyed in life, > but two'

I relate to all of the gratitude in the above quote. It seems almost gratuitous to be able to pursue more than one major career pathway. I feel lucky to have the opportunity and lucky to have realized that I didn't have to choose.

</comment><comment><USER13> I've always dreamed of leaving behind Silicon Valley and pursuing emergency medicine. I need to stay the course for a while to ensure my college approaching kids are taken care of but stories like this are inspiring reminders that age doesn't have to be a factor when I finally decide to make the move.

<comment><USER14> We should start a support group. Seems like there are lots of us who want to leave tech for something that matters.

<comment><USER15> There are tech companies that only _think_ they're doing good. But there are plenty that are doing good, and they would love your help.

By all means pursue things elsewhere, but not because you think there are no opportunities in tech.

<comment><USER14> The opportunities in tech do not provide enough leverage for meaningful progress IMHO.

Personally, I believe I can do far more good writing and pushing public policy than any amount of code. That is "operating at scale".

<comment><USER16> Working on public policy is a worthwhile (and uphill) fight for sure. But it lacks imagination to suggest that impact at scale isn't possible in tech (examples: robust low cost medtech for non G7 economies, same for finance in those markets, support systems for large scale NGO efforts, access to justice efforts, etc. etc.). Clearly these opportunities exist, but they may be under resourced relative to lucrative tech options.

<comment><USER14> I don't want to take this thread off topic.

With that said, here is my example: Medicare For All would save us $450 billion, and avoid 68k preventable deaths, every single year. I find it a stretch to suggest that ambitious goals such as that "lack imagination". Such impact is simply not obtainable with tech or NGOs alone. Even Bill Gates has needed roughly $50 billion to drive forward his foundation's humanitarian efforts (but admittedly, is very efficient, with estimates of having saved ~122 million lives through their work).

<comment><USER16> I don't think this is a counterexample, and the imagination lacked wasn't in the scope of what can be done in policy work, but in the scope of what can be done in tech.

To stay with your examples, some of the Gate's foundation efforts have largely been tech efforts, some haven't. Some of the things I mentioned off-the-top have potential to reach 10s to 100s of millions of people. MFA is a big $ number partially because the US healthcare system is expensive and inefficient, so that draws focus on $ saved ... other efforts may focus on lives impacted at much lower $ impacts.

Most public policy work isn't as big as MFA either.

I'm not saying policy work isn't important or impactful. I'm rejecting the idea that you (generic 'you') can't have similar effect in technology to what you might be able to achieve in policy; especially the idea that this is so clearly true that the "right" thing to do is quit technology to go into policy. Even assuming you can be as effective in policy work as you are in tech work, which isn't a given.

<comment><USER14> This has given me something to think about. I appreciate you taking the time.

<comment><USER16> You're welcome. I think it's a really interesting question in general: where do I want to spend my working time, and to what end? I've spent quite a bit of time thinking on it for my own case, and trying to find technical areas where I hope to be able to find an impact. It was the majority reason I left academic work (not that I am saying that can't be impactful).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> Is few years back I legit wanted to buy an AM/FM radio. I had A tiny one I loved to listen to while running that broke. I went into radio shack and asked if they, you know, sold radios. They did not. I was crestfallen.

</comment><comment><USER18> His personal website is here. Sounds like we was about 48y.o when he started down the path of becoming a doctor.

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

<comment><USER19> Wow. I had no idea that one could get into medicine at that age. I feel like I'd been told that medical schools could discriminate based on age, with the idea being that an older person would be physically unable to serve for as long as a younger person.

I have an interest in medicine but simply wrote it off as being impossible because of my age.

<comment><USER20> Beyond having the money or not. By the time you're in your mid-forties, I just don't have the stamina for late-nights that I did when I was 20, even 30. I'm sure the money, maturity, experience I've accumulated between 20-45 would help, but no doubt the raw endurance is lower. I would not enjoy these legendary 24hr+ rotations that residents apparently have to do.

But hats off to this guy -- i think it's very cool. Makes my daydreams of what I'd like to do post this-job seem quaint and underachieving.

<comment><USER21> But these 24hr shifts seems to be an US thing. In my country doctors would have a more relaxed schedule, in fact you will get a more pressing schedule if you are in tech.. but generally engineers start out with better salaries than doctors here, though slowly the doctors then catch up and retire with better salaries than engineers..

</comment></comment></comment></comment><comment><USER22> OT but does anyone have insight into why there are so few med schools in the US? There are way more prospective students than admissions slots. Are there high capital costs or something I haven't considered that make starting a med school unprofitable even with average tuition fees being so high?

<comment><USER23> There are limited residency spots for med school graduates and if you don't get one you can't become an actual licensed doctor. The MD schools try to keep their admissions in line with the number of spots because that would be a raw deal to just pump out people with degrees in $500k in debt who will never get licensed. The residency spots are not controlled by the medical associations or the schools.

<comment><USER24> The AMA lobbies very hard against expension every year.

<comment><USER25> Do you have a source for this? I hear about it all the time but have never seen any evidence.

<comment><USER24> I was incorrect. Recently they have been lobbying for an expansion.

</comment></comment></comment></comment></comment><comment><USER26> I still have a Radio Shack Battery Club card with only one more punch needed. Maybe if I run into him... nah, he'll insist I have to give him my name and address.

<comment><USER27> or try to sell you a disco ball strobe light combo

</comment></comment><comment><USER28> Recently, I was thinking about what I'd do if I retire early. I pretty much settled on going and getting a PhD in chemistry.

Why?

I always enjoyed chemistry and research. I would be doing it because I find it interesting, not for the multitude of reasons for my career choices so far - money, geography, future potential growth.

<comment><USER29> I have heard that getting a PhD can be so political and soul destroying that only those that really need or want it or have no other better options make it through. Not sure how universal that is though.

<comment><USER30> I did my PhD in the French Riviera. Some people were maxing out the extensions on their funding not because they couldn't defend on schedule, but they simply enjoyed their current work. But that might speak more to the misery of postdoc, than to the joy of PhD?

I remember doctoral studies very fondly. But finished on time and moved to the industry, because once you graduate, the academic job market is outright depressing.

<comment><USER31> Eurecom?

<comment><USER30> INRIA

</comment></comment></comment></comment></comment><comment><USER32> A Tandy Corporation. They almost went under and then they were bought out by a leather crafts business. We used to joke around about Radio Shaft but my Trash 80 was the most hacked up PoS ever ! Great memories. And good on him for living his dream.

<comment><USER33> That's bizarre to read. I was a frequent customer of Tandy when I was doing leather as a hobby. No idea they ever related. How odd.

</comment></comment><comment><USER34> This is very inspirational. I'm applying to emergency medicine residency this year and love to see stories about how much people enjoy it. I'm curious what skills cross over from CEO to EM physician. Leadership and teamwork for sure.

<comment><USER35> Anaesthesiologist here.

I did EM for 6 months and hated it. This is because it just doesn't suit my personality.

To be good at EM you need to be: \- Comfortable with being a kinda bad at everything and great at nothing \- Comfortable with large amounts of uncertainty and risk and having to make decisions anyway \- Being abused by drunk/mentally ill patients constantly \- Being patronized by medical colleagues in other specialties

<comment><USER36> > Being patronised by medical colleagues in other specialties

Of which your post here is a prime example!

<comment><USER34> :thumbsup:

</comment></comment></comment></comment><comment><USER37> This link got hijacked for me and sent to a Norton AV scam page.

</comment><comment><USER38> I think the most fascinating thing, to me, is that transitioning from CEO of RadioShack to med student in your 40s means you _must_ have a humble, down to Earth ego.

<comment><USER33> I met tons of rich kids doing residency in their mid 20s with massive egos and zero humility. I doubt a millionaire former CEO doing it as a hobby requires any humility.

<comment><USER10> you doubt that opting into a situation where your wealth is completely irrelevant when it comes to saving lives (and, before that, passing medical exams) requires any humility?

</comment></comment></comment><comment> why-el Reminds me of another great, Brazilian footballer Socrates, who was also a doctor: [https://en.wikipedia.org/wiki/S%C3%B3crates#Personal_life](https://en.wikipedia.org/wiki/S%C3%B3crates#Personal_life).

</comment><comment><USER39> You've got infections, he's got answers.

</comment><comment><USER40> It's like the reverse story of Jonathon Nelson from Hackers/Founders who was a paramedic before becoming a CEO.

</comment><comment><USER27> I'm glad something good came out of the collapse of The Shack. Such a sad story with a bit of a silver lining.

</comment><comment><USER41> I wish he could have cured RadioShack. It was nice to have a local store for electronic components.

</comment><comment><USER42> "Before we can close you up, what is your name, address and phone number for the form?"

</comment><comment><USER21> Not exactly similar the top scientists of the EU, Mr Ferrari recently resigned, because he tried to push for a Manhattan Project like scientific project to find cure/vaccine for the virus, whereas EU wanted a bottom up approach of funding specific projects that come up organically..

Anyways Mr.Ferrari is a medical doctor, but it appears he was a Mechanical Engineer. Then at age 43 after his wife died of disease, he went back to university joined medical school and became a respected medical scholar and tried to find treatments for what affected his wife..

And later was selected to be the top EU scientist on the basis of his medical credentials.

</comment><comment><USER43> I was hoping to spot a Roach.

</comment><comment><USER44> And yet he still keeps asking everyone for their damn phone number!

</comment><comment><USER45> Can this guy be president?

<comment><USER46> Hopefully not, we'd like to keep him here in Canada.

</comment></comment><comment><USER47> living the dream</comment>


Early Mapping of Silicon Valley and the Web - <AUTHOR> https://www.davidrumsey.com/blog/2019/5/12/early-mapping-of-silicon-valley-and-the-web/ <comment><USER2> the best kind of followup for this after the infamous iA web trend ones would be the layout of the introduction to the TV series Silicon Valley, with it's small conglomeration of brand firms and animation of change as companies buy/sell/open/close in short period.</comment>


Sleep has a role in developing Alzheimer's - <AUTHOR> https://qz.com/1737881/scientists-are-looking-at-sleeps-role-in-developing-alzheimers/ <comment><USER2> I read the title here--"Sleep has a role in developing Alzheimer's"\--and I was like "well, it is a good thing I don't do that, then!", but sadly the article title now says " _Too many bad nights of sleep_ could play a role in developing Alzheimer's"... :(.

</comment><comment><USER3> This is briefly touched upon in "Why we sleep: unlocking the power of sleep and dreams" by Matthew Walker. I highly recommend it!</comment>


Western diet increases Alzheimer's risk (2016) - <AUTHOR> https://www.sciencedaily.com/releases/2016/08/160825102121.htm <comment><USER2> A genius experiment designed to track down just what the difference in diet is and does: [https://medium.com/@russjj/choline-is-it-the-key-to- modern-i...](https://medium.com/@russjj/choline-is-it-the-key-to-modern- illnesses-5da8f831a04b)</comment>