The Inventor of the Browser Tab - <AUTHOR> http://www.buzzfeed.com/josephbernstein/meet-the-man-who-invented-tabs <comment><USER3> This:

 _I think tabbed browsing gets out of control when users don't have good bookmarking systems. I have friends who end up with 50 tabs open at a time. They want to return to a given page at some later date, but don't have a good method of saving those for later or remembering to return. On mobile, that's solved reasonably well with apps like Instapaper and Pocket. But on desktop, that problem doesn't seem to be solved. Bookmarking systems can feel to heavy or permanent. And if you have been around a while, you know bookmarking apps tend to come and go (ie Delicious and Kippt)._

Tabs (and I love them) are a poor solution to the horrible state-management challenge of browsers.

What I _want_ is to maintain a list _of current references_ , preferably _with some spatial context_ (tree-mode browsing is great for this) to what the relationship is between pages in my browser session.

 _What I do not need is for every last single page to be open at the same time, sucking down memory, CPU cycles, and worse: playing videos and /or making noise._

That state-management is missing. Bookmarks aren't really it -- they're a quick-reference to stuff you want to go back to, and as with any storage locker or closet, suffer from the clean-out problem: it's a goddamned pain in the ass to go and sort through the stuff you've tossed in there and clean out the junk.

Browser history isn't it either: it's _too_ comprehensive, is insufficiently contextualized, doesn't record context (other than, maybe, relative time). On mobile devices it's a chore to sort out where in your history a given page was. Site-supplied titles are often absolutely worthless for finding content (though as I glance up at my browser's window title I see that HN is actually pretty good for this).

There's a space between the comprehensive listing of everything you've visited, and the highly organized catalog, that's missing in the browser space. Effectively: the current workspace, with the papers and books with which you're currently working open in front of you.

I've been playing with this stuff for decades and it's still a frustration.

<comment><USER4> You might be looking for the Tabs Outliner Extension for Chrome. I've been using it heavily for the "middle-state" of saved and not open, but not bookmarked; now I'm looking for a "meta Tabs Outliner"-esque program, but I can't quite articulate my needs...

> What I want is to maintain a list of current references, preferably with > some spatial context (tree-mode browsing is great for this) to what the > relationship is between pages in my browser session.

Tabs Outliner puts every tab as a leaf in a tree, and you can nest leaves and affect the visual ordering on the tab bar at the same time - you can also do this reordering while the tab isn't even open! This is good for a while, but for me when I have thousands, it's lacking in some retrieval sense: I guess I want to query for just these tabs that have connections, and cross-reference research annotations on these sets of connections.

[https://chrome.google.com/webstore/detail/tabs- outliner/eggk...](https://chrome.google.com/webstore/detail/tabs- outliner/eggkanocgddhmamlbiijnphhppkpkmkl)

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

<comment><USER3> Hrm....

My first impression on watching this is that it's not quite what I'm looking for (tabs open, list grows, they stay loaded) ... but the ability to close tabs then re-access them looks promising.

The outline part is useful.

OK, this _might_ actually be helpful.

The labeling feature would be handier if I could tag/label sets of tabs.

I'm giving this a shot.

Thanks!

<comment><USER4> > The labeling feature would be handier if I could tag/label sets of tabs.

You can! Instead of tagging each tab, you can rename the containing window's "Window" text, as if it was a manilla folder. Windows can also be contained in (named) Groups, allowing for hierarchical categories. Bottom-up tags can be accomplished by adding a note as a tag (I like using #hashtags to differentiate from plain text). In terms of retrievability, Ctrl+F doesn't discriminate!

> the clean-out problem: it's a goddamned pain in the ass to go and sort > through the stuff you've tossed in there and clean out the junk.

I forgot to mention a workflow video for that: [https://www.youtube.com/watch?v=VvlK1ttZ3dI](https://www.youtube.com/watch?v=VvlK1ttZ3dI)

The dev has mentioned elsewhere that this extension is not (yet) designed to organize, but rather to get a handle on the tens/hundreds/thousands of tabs one may have open. It's done it so well that I have a lot of ad-hoc 'fuzzy' categories and random notes inside my outline I would love to be able to manipulate and build into a grand scheme or other. To use an analogy, it's like a great grafter/sieve to separate the wheat from the chaff, but there's no cooking oven.

<comment><USER3> Yeah, I'm learning.

I'll still say this wasn't _quite_ what I had in mind, but it may well be good enough in terms of tabs management (there's still the content presentation, but that's another story).

I've been watching the vids, and they're _really_ helpful.

I've given this tool mention on my subreddit (comment so far, story likely to follow) and on G+. After tabbed browsing and competing with vimperator, probably the biggest revolution in browsing I've encountered in 17+ years.

[http://www.reddit.com/r/dredmorbius/comments/256lxu/tabbed_b...](http://www.reddit.com/r/dredmorbius/comments/256lxu/tabbed_browsing_a_lousy_bandaid_over_poor_browser/chetplk)

[https://plus.google.com/u/0/104092656004159577193/posts/B43j...](https://plus.google.com/u/0/104092656004159577193/posts/B43jhoXQuNQ)

</comment></comment></comment></comment></comment><comment><USER5> I wish tabs were truly first-class citizens in the modern browser. I'd like to be able to select with shift and command, just like files, a subset of tabs to transfer to a new window, the ability to save and restore tab environments by name, perhaps even email an entire window of tabs to another user.

<comment><USER6> Chrom(e|ium) can do some of these things! You can use shift and control clicks just like in a file browser to select tabs, then drag the whole selection to another window, or off to the side to create a new one. Easily movable tabs + a tiling WM makes it surprisingly easy to keep dozens or hundreds of tabs open (very useful when you're trying to research multiple topics in depth at the same time).

It's my #1 most missed feature in Firefox, where you can move tabs individually between windows, but not in a group. Trying to split off a group of related tabs into its own window is so painful that I often just kill them all and manually navigate back to them in the new window. It's a shame that they wasted so much effort on the Tab Group feature just to abandon it, instead of adding a tiny bit of functionality to the existing tab interface.

<comment><USER7> AFAICT, the Chrome multiple tab drag to separate into a new window doesn't work on Mac OS X, only on Windows (and Linux?). This one really hurts me every time I need it on the Mac.

What's even more frustrating is that multiple tab select works (at least, UI- wise it appears to), but then when you actually drag the tabs out only one comes along.

<comment><USER8> You are also still able to close multiple tabs at once. Besides selecting, I think that's all you can do.

</comment></comment></comment></comment><comment><USER9> This doesn't impress me. Tabs as an organizational concept have been around for a century, and they were most frequently used to organize sheets of paper. Of course they'll get used to organize web_pages_ as well. I see the "invention" of the browser tab as a totally obvious and inevitable porting of a particular technology to a related field.

The guy who "invented" the mobile phone keyboard did not do anything special by realizing that you could apply a keyboard to a small computer, and similarly, the guy who realized that you can organize digital pages with digital tabs didn't do anything special either.

<comment><USER10> > I see the "invention" of the browser tab as a totally obvious

Anyone could have done it but nobody did except that guy.

</comment></comment><comment><USER11> Tabs should be a mechanism of the windowing system and not of the web-browser or other specific applications, IMO.

<comment><USER12> Agreed, application-level tab support is a short term win. I wouldn't want to use a browser without them, but i would rather it was all a well thought out part of my main interface.

</comment></comment><comment><USER13> For my money the person who invented middle click opening things in a new tab without switching focus was the significant one.

</comment><comment><USER14> I find the timeline a bit murky- I could have sworn I was relying on tabbed browsing in Mozilla m12 in 1999- [http://beta.slashdot.org/story/8938](http://beta.slashdot.org/story/8938), it was the single feature that caused me to switch.

The 1995 date in the article definitely preceeds 1999, but the path to getting it into Mozilla does not seem correct.

<comment><USER15> The linked "directly responsible" more or less meets my memory - <USER2> first, Mozilla main later. The MultiZilla site of the time confirms it, the history links point to a 2001 start which would make 2002 in Mozilla itself reasonable.

[http://web.archive.org/web/20010603123052/http://multizilla....](http://web.archive.org/web/20010603123052/http://multizilla.mozdev.org/index.html)

</comment></comment><comment><USER16> I wish his browser NetCaptor (why not NetCopter?) had ridden the wave of massive growth via tabbed browsing that got Firefox & Maxthon really big -- Adam deserved it.

(...I also wish Adam used our Epic Privacy Browser instead of Chrome :-(</comment>


Ask HN: We need to onboard C-level position at final accel. interview round - <AUTHOR> I am working with a small company building something like a EMR/Medical Enterprise system.
> 2 Founders both have strong backgrounds. They have industry experience & professional history, one being a bit more technical and one a bit more business. Both contribute to product immensely.
> 50/50 cap table split
> First hire(me) helping out ~6 months. Small salary 0 equity.
> Trajectory- Space is very slow moving due to regulatory inertia. Product is in "prototype"/concept stage. Underlying models/engine built out and design mocked up. Integration risk is such that a partnership needs to be struck for technical & economic reasons.
> 100% bootstrapped by founders.
> last stage of accelerator app process
> contract close with a U.K. based company for building a similar component. e.g. We could keep IP but get paid to develop and integrate a component that is 25-33% of the value prop.
> "Close"(ambiguous) to closing an industry partner in the space. Talks & relationship with them has been ongoing ~8 months & they are an advisor type capacity to company.
Problem: At the final stage of the interview process at an accelerator. We have to bring on a near C level employee/partner/founder. She is known by the founders like a friendly acquaintance, so some relationship but 6mos-1year occasional professional overlap. She has a Medical degree and excellent technical skillset and a seemingly good fit/value add. It is possible 1 cofounder may need to take time off from the venture although it is unknown if/how long this would be. Due to the technical skills required the company is predicated on leveraging the professional experience here.
o essentially, the risk is that if a founder has to step away for some time, we will have someone who can execute. However, due to timing we have to put this in motion in the span of days, then try and get accepted as it is likely the linchpin of the companies success.
How can we derisk this? <comment><AUTHOR> To add;

What obligations ethically/ professionally do we need to think about in terms of info disclosure?

Would a strong earn out and cliff be a smart protection strategy and protect us from having to disclose the idea this could happen, as it would not trigger a material change warrant.</comment>


"How Do I Get C Namespaces?" and "How do I get Python Slices in C?" - <AUTHOR> http://blog.808inorganic.com/2012/06/how-do-i-get-c-namespaces-how-do-i-get.html

<comment><USER2> At least one of the suggestions here (using structure full of function pointers as a namespace substitute) is likely to have a significant negative impact on performance. Don't do that.

<comment><USER3> This is actually untrue. I had a follow up post regarding the criticisms I had. The only negative attribute to the namespace substitute was that functions weren't being inlined.

[http://blog.808inorganic.com/2012/07/bad-coders-doing-bad- th...](http://blog.808inorganic.com/2012/07/bad-coders-doing-bad- things-1-of-2.html)</comment></comment>


The Purpose of Technology - <AUTHOR> https://balajis.com/the-purpose-of-technology/ <comment><USER2> Any time immortality is mentioned, the commentary inevitably focuses on the goal itself.

This is natural, but also, myopic.

The dividends of research into immortality are incremental, but each breakthrough has the same outcome: increased quality of life. Humans become healthier; eventually, we last longer.

Yes, at the _limit_ , there are problems with immortality: Sterling's _Holy Fire_ is a great exploration of the problems a gerontocracy could pose, as is Morgan's _Altered Carbon_. Without older generations dying off, would there be any room for the young?

I submit that these would be excellent problems to have, that there is no guarantee we will ever have them, and that the dividends from trying to earn ourselves such problems would be considerable.

<comment><USER3> Unfortunately, projects and discussions focused on immortality, or life extension in general, do not necessarily improve the aggregate well-being of all humans. (One could argue that capitalism does improve the aggregate well- being of all, but that is a different topic.)

Across the entire planet there is unimaginable suffering everywhere one looks. Some of that suffering is obvious, while other suffering is hidden behind an illusion of prosperity. When considering how to invest finite resources, and claiming to seek a positive outcome for all, why not address the immediate problems?

Technology is knowledge of tools -- tools that provide leverage for solving (or causing) problems. As for why we have those tools, why we improve the ones we have, and why we invent new tools, aspirational goals are nice, but it seems callous to ignore applications that could significantly improve the quality of lives today; raising quality of life would also accelerate the rate of innovation.

Should we actively advance technology, and potentially spread out into space? Yes, I think we should. However, the more we spread out, the more advanced certain segments of humanity become, the more potential there is for others to be left out of the equation and relegated to the role of wasted human potential.

<comment><USER2> The problem of aging is an immediate problem for every human being on the planet.

There is no problem more immediate.

There's no reason, at all, to sacrifice work on this problem to work on any other problem. There are plenty of industries and practices which actively make things worse. Let's divert resources from those instead.

<comment><USER3> \- Clean drinking water is an immediate problem.

\- Adequate sanitation is an immediate problem.

\- Adequate childhood nutrition is an immediate problem.

\- Physical security in crime-laden areas is an immediate problem.

\- Physical security in conflict zones in an immediate problem.

\- Access to quality medical services is an immediate problem.

\- Mosquito-borne illness is an immediate problem.

</comment></comment></comment></comment><comment><USER4> So, if we're so close, why isn't immortality capturing public interest yet? Ideas:

 _Religion_ \- Among other things, religion's goal is to help people endure the inevitability of death. Thus, to many, this is a solved problem.

 _The age divide_ \- Older people have the immediate need, but their ideas about tech are by now set in concrete. The young are open to more radical tech, but dying of old age isn't an immediate threat to them. Nor do these two cultures tend to mix.

 _Technological pessimism_ \- There was a lot of overblown technological optimism in the mid-century, but the pendulum has since swung the other way. The word "chemical" no longer has positive connotations in popular culture, for example.

</comment><comment><USER5> Maybe I'm missing something, but how can immortality, even a theoretical one be achieved? Say you find a way to cure all diseases and reverse aging, you can still be killed or die in an accident. Say you find a way to transfer your consciousness to a machine (ignoring all philosophical implications). That machine can still be shut down and destroyed. All you get is just a longer life, which still ends at some point. And given the fact that it's not time that actually matters, but the perception of time, one might still view their life as being short.

I find the article a bit naive, this question lies deep in the realm of philoshopy. What if technology and life merge at some point? It's not hard to imagine that technology and life might become indistinguishable in the far future.

<comment><USER6> The quest for immortality isn't a 0 or 1 objective. Using technology to reduce or reverse aging is one aspect. Using technology to reduce the accident fatality rate is another aspect. E.g, what was the car fatality rate 100 years ago and what is it now when you account for safer cars and better medical tech.

Unless you bypass the Second Law of Thermodynamics (Greg Egan's Permutation City provides a possible example), technology will get us asymptotically closer to true immortality. But even if we don't reach true immortality, reducing suffering caused by our current level of mortality is a noble goal.

<comment><USER3> I disagree that technology will get us asymptotically closer to true immortality. It is far more likely that technology gets us asymptotically closer to a theoretical maximum lifespan that is determined by our relationship with the environment. Radical changes to our form might extend that theoretical maximum, but it is not clear that someone who wants immortality would be satisfied with a form radically different from human.

As an example, an entity with a fractured consciousness that spans tens of thousands of lightyears (yet not necessarily dispersed enough to be considered immortal) would have a radically different concept of self. If one was uncomfortable with the concept of a few dying for the many, in order to perpetuate the species, then a dispersed consciousness devoid of a self seems equally unpalatable.

</comment></comment></comment><comment><USER7> The phrase I use is: _Technology supports technique._ If the technique is to _play piano_ , a well-maintained acoustic piano is the ultimate instrument. If the technique is to _play music_ , a toy keyboard will suffice.

What technical studies often lose track of in their quest for perfection is a sense of balanced technique. If you want an immortalized _thought_ you can very nearly achieve that by publishing a book. But an immortal body and mind is at odds with a _developing_ body and mind. When we say immortality we surely don't mean "I can continue to be a glum and unfulfilled soul staring at a screen forever." And yet, with respect to our digital technologies it really is somewhat like that - more and more gets captured and archived. Does life improve? Depends on the measure. We address one set of traumas only to uncover others, at first dismissing them, and then gradually coming to afford them respect. It's extremely common not to recognize how screwed up we are.

If we were to say, instead of the preservation of your exact form, you get to be healed of past trauma and remain full of energy, but without controlling exactly where you end up, how you evolve, and maybe forgetting some of your past - would that still be immortal? And if so, then a existing healthy, fulfilled life is very near to that.

And I do believe philosophical thoughts like those are where we are going, since we have picked most of the low-hanging fruit leading to material comfort while still guarding it jealously and justifying a deficit in column A by pointing to spectacular achievements in columns B, C, and D. We have to realign the techniques and therefore the technologies to square it up.

<comment><USER8> Call me old fashioned but I will achieve immortality through my children in just the way you described.

</comment></comment><comment><USER9> Right now, the most effective possible activity to reduce mortality would be work to eliminate excess sugar from the human diet. The most effective avenue for that would be to eliminate it from beverages.

Probably we would need to begin treating Coke'n'Pepsi like we treat tobacco: start with required warning labels, ultimately an advertising ban. Lead was a tough nut, but we cracked it. Tobacco was a tough nut, but we cracked it. Trans fats was a tough nut, but we finally got that one, too.

</comment><comment><USER10> And even if anti-aging tech doesn't come quickly enough, preservation a person for centuries in a restorable manner is technically here today:

[https://www.brainpreservation.org/wp- content/uploads/2018/02...](https://www.brainpreservation.org/wp- content/uploads/2018/02/vitrifyingtheconnectomicself_hayworth.pdf)

Edit: I volunteer for the group that published that document

<comment><USER11> In a _theoretically_ restorable manner. Actual restorations are somewhat lacking at this time. (Or have I missed something?)

</comment></comment><comment><USER12> Immortality is totally selfish and uninspiring, and really just a bad comms strategy to recruit more tech progressives. We need a better vision for how it'll make the world more Good and Just, improve lives, and make things more egalitarian, instead of helping privileged people just continue to enjoy their status and wealth.

<comment><USER4> Aging and death is an enormous drain on society, emotionally, financially and in myriad other ways. Years leading to death are often uncomfortable or miserable. Extended friends and families are affected in their freedoms, finances, and mental health. Thus it seems reasonable to expect huge, across- the-board gains in human flourishing and well-being, if we could somehow eliminate aging and death. Nor does that mean we couldn't work in parallel to address inequality, oppression and suffering in other ways.

<comment><USER3> Regarding "huge, across-the-board gains in human flourishing and well-being," how do you envision economics and labor would play out? What does this look like with regard to resource allocation?

<comment><USER4> I'm not omniscient nor an economist, I have no idea.

Here's a comparison though: War is another of those realities—like aging and death—that we seem to have normalized and accepted at a cultural level. It's fair to ask how economics, labor and allocation would play out once a civilization stops dumping a third of its resources into the destructive act of war, but to ask whether we _should_ end the war, just because we're uncertain of the answers, strikes me as absurd.

</comment></comment></comment></comment><comment><USER3> Mortality is inevitable and necessary. I posit that the purpose of technology should be to reduce suffering. The purpose of technology should not be the redistribution of wealth from the masses to those who are adept at manipulating the systems employed by civilization.

<comment><USER13> "At another point in the discussion, a man spoke of some benefit X of death, I don't recall exactly what. And I said: "You know, given human nature, if people got hit on the head by a baseball bat every week, pretty soon they would invent reasons why getting hit on the head with a baseball bat was a good thing. But if you took someone who wasn't being hit on the head with a baseball bat, and you asked them if they wanted it, they would say no. I think that if you took someone who was immortal, and asked them if they wanted to die for benefit X, they would say no."

[https://www.lesswrong.com/posts/aSQy7yHj6nPD44RNo/how-to- see...](https://www.lesswrong.com/posts/aSQy7yHj6nPD44RNo/how-to-seem-and-be- deep)

<comment><USER3> Though it may be depressing to contemplate, death is an essential element of a fitness function, a requirement for evolution in the broadest sense. No death would lead to either depletion of resources or a stagnation of growth that would inevitably lead to extinction due to inevitable and unanticipated catastrophe.

That said, a reduction of suffering may naturally lead to extended lifespans. However, the elimination of mortality is something altogether different.

<comment><USER13> You don't need to wait around for natural selection to make changes (we don't do that for medicine).

We have an entire universe to grow and expand into, along with the capability for long-term thinking. These problems are solvable problems and a critical part of reducing suffering.</comment></comment></comment></comment>


On being stateful (2008) - <AUTHOR> http://joeduffyblog.com/2008/09/13/on-being-stateful/ <comment><USER2> I think this guy was too kind to STM. Otherwise I largely agree.

Despite being a C++ programmer I like using high level abstraction. I like being able to write a few lines and knowing what the result will be and having the computer just figure it out the details. Despite that I really want those abstractions to be as close to zero cost as possible. I also want to precisely know how to work with the contract the spec demands and the implementation reality requires, because performance is all too often a real concern for me.

STM has never had a role in any of that because it tries to be a panacea. It tries to fix everything for everybody. There is no way it can be an optimal (or even reasonable) solution for most problems).

I think me and the author would agree that naked mutexes are the gotos of threaded algorithms. Just as we replaced gotos with several kinds of loops, several kinds of functions, classes, lambdas and countless other more expressive tools, we will replace naked mutexes with a host of other tools. Have something you just want to run on some other hardware and get the answer from, try a future/promise. Have N units or identical work, try a parallel for or a one of the many GPU executors. Have a complex dependency chain of heterogeneous work, build a DAG of actors or other automata. Need something else, perhaps your threading primitive hasn't been invented yet.

<comment><USER3> I think you should also mention work queues and producer / consumer thread pools. These are very powerful concepts you don't mention here, and they are often the first tool I use. You very often don't need anything else.

</comment></comment><comment><USER4> I'm not optimistic about the kinds of approaches mentioned fostering "ubiquitous parallelism." Just as a better compiler, language, or implementation technique won't make a bubble-sort into a quicksort, I don't expect them to turn essentially sequential programs into parallel ones. We need new kinds of algorithms, not better programming techniques. Being explicit and telling the compiler all about isolated pockets of dependencies does not ultimately defeat their constraints on the overall program. I remember a statement by Knuth in an interview[1]: "Let me put it this way: During the past 50 years, I've written well over a thousand programs, many of which have substantial size. I can't think of even five of those programs that would have been enhanced noticeably by parallelism or multithreading."

[1]: [http://www.informit.com/articles/article.aspx?p=1193856](http://www.informit.com/articles/article.aspx?p=1193856)

<comment><USER5> A lot has happened in that space since that 2008 blog post. Unfortunately for us all, what has happened is that automatic parallelism has basically been disproved. It effectively isn't possible. At best, it requires a language so profoundly different than anything we have to prod developers into using it in a way that can be automatically parallelized that it's arguably not really automatic anymore, but a new restricted DSL for the task.

Similarly for STM; it's only practical in a language with enough mutation control built into it that nobody will want to use it, i.e., Haskell. It can't be added to conventional languages. IIRC it was already looking pretty grim by 2008, but now it's certain; you can't bodge STM onto a conventional imperative language.</comment></comment>


"One Damn Slide After Another": PowerPoint at Every Occasion for Speech (2016) - <AUTHOR> http://computationalculture.net/2016/01/11/one-damn-slide-after-another-powerpoint-at-every-occasion-for-speech/ <comment><USER8> The best-constructed talk i ever saw as as scientist was by a medic who considered himself far too busy and important to spend time mucking around with Powerpoint. The only slides he had were figures of his results - photomicrographs of tissue, graphs of drug effects, etc - probably lifted from a paper in preparation, and so probably done by his graduate students anyway. This meant that there were only a handful of slides, so very few distracting transitions to distract from his talking, and the screen was always full of important content.

Needless to say, that this guy's combination of laziness and arrogance had led to him to have a much better presentation than me with much less effort left me _absolutely furious_.

<comment><USER9> Q - medic = doctor in British(?) Terminology?

<comment><USER8> Yes. Specifically one who practices medicine rather than surgery (who would be a surgeon).

This guy was a consultant, ie a very senior doctor, and got to do research as a sideline. If the context had been clearer, i would have said "a consultant", but on HN that could mean anything!

I think in the US such people might be called "internists", which is also a weird and confusing term in its own way.

</comment></comment></comment><comment><USER10> Every time I sit down to work on a presentation, I intentionally recall Cristian's retort [0]:

"We used a helium neon laser, captured its phase shift with a photo sensor, and manually corrected by 30 percent to account for the index of refraction," Cristian answered rapidly, keyed up on adrenaline. Cameron had peppered them with questions on the drive to Santa Barbara, and Cristian was ready.

Swean raised a bushy, graying eyebrow. He asked about motor speed, and Lorenzo sketched out their combination of controllers and spike relays. Oscar answered the question about signal interference in the tether by describing how they'd experimented with a 15-meter cable before jumping up to one that was 33 meters.

"You're very comfortable with the metric system," Swean observed.

"I grew up in Mexico, sir," Oscar said.

Swean nodded. He eyed their rudimentary flip chart.

"Why don't you have a PowerPoint display?" he asked.

"PowerPoint is a distraction," Cristian replied. "People use it when they don't know what to say."

"And you know what to say?"

"Yes, sir."

[0] [https://www.wired.com/2014/12/4-mexican-immigrant-kids- cheap...](https://www.wired.com/2014/12/4-mexican-immigrant-kids-cheap-robot- beat-mit/)

<comment><USER11> I guess I don't really get it... How are powerpoint slides any different than flip chart sheets? It seems to me that either thing can be used illustratively by people who do know what to say, or as a crutch by people who don't.

<comment><USER12> The cost of editing flip chart sheets is huge in time and inconvenience. It forces me to actually think about them in advance and do them right, rather than the typical powerpoint method of creation; copy some text from a completely unsuitable document, add bullets points and then start removing words.

<comment><USER13> The problem here is you, not the tool.

<comment><USER14> I quite doubt EliRivers is responsible for all powerpoint presentations across the world.

Their point is that flip chart edition acted as a filter on garbage production, as editing a flip chart is time and labor intensive more time goes into planning and whittling down the amount of stuff to show, as well as into preparing the presentation itself. Powerpoint does the opposite and facilitates the production of huge streams of garbage quickly, resulting in exactly what we can see.

And sure you can still state that _it 's the user's fault_, but here's the thing: the user has been a moron all along, it took your tool for the user's stupidity to become damaging. When your tool empowers stupidity and you refuse to acknowledge basic reality, your tool is at fault.

</comment></comment></comment></comment></comment><comment><USER15> Bezo's reasoning on Amazon's no powerpoint policy: "Well structured, narrative text is what we're after rather than just text. If someone builds a list of bullet points in word, that would be just as bad as powerpoint.

The reason writing a 4 page memo is harder than "writing" a 20 page powerpoint is because the narrative structure of a good memo forces better thought and better understanding of what's more important than what, and how things are related.

Powerpoint-style presentations somehow give permission to gloss over ideas, flatten out any sense of relative importance, and ignore the innerconnectedness of ideas."

[http://www.businessinsider.com/jeff-bezos-email-against- powe...](http://www.businessinsider.com/jeff-bezos-email-against-powerpoint- presentations-2015-7)

</comment><comment><USER16> I don't buy the PowerPoint hate at all.

we are in a time where you plug your computer into a projector. your computer can display anything you want, but I believe most people would still show PowerPoint for a presentation. yes there's a lot of bad presentations out there, there's patterns that make your ppt bad. but that doesn't mean PowerPoint is a bad tool, I think that really just highlights giving a presentation is difficult. PowerPoint may make it seem easy because you can make them fast but making a good one is still difficult

lots of websites suck but we don't blame the web

lots of apps suck but we don't blame the platform

<comment><USER17>
      - <USER2>
        - <USER3>
          - <USER4>
            - <USER5>
              - <USER6>

<comment><USER18> On the other hand, powerpoint has good font size defaults. I haaaaate when people use one of those javascript presentation things (or, shudder, something home grown), because their fonts are ALWAYS[1] too small for me to read (I don't have great eyesight, even with glasses, I can't always read everything at a distance), while powerpoint is typically pretty readable (as long as you have no more than 5 points on a slide... after that, it gets too small)

[1] in my experience thus far

<comment><USER19> Yeah, this; if you really are going to show code, make it huge. No such thing as too big when it comes to that. Stick to 40 character lines tops and make them fill the whole screen. Prefer to use the full slide for a code example, and put the most important thing at the top of the screen (usually the bottom half of a presentation / beamer screen is unreadable)

</comment></comment></comment></comment><comment><USER20> My son is finally to the age where he needs to submit/present PowerPoint presentations for homework assignments. After walking him through the best practices for presenting + making sure his presentation was ship-shape, he received a C. His teacher sent a rubrick for the next assignment with criteria like: must have at least one animated transition; must use at least two backgrounds; must use at least 3 text animations; must not be in outline format; use complete sentences.

I was floored, but in the end explained to him that he's doing something for a grade, not for it to be good, and that there is a right and wrong way to do a PowerPoint presentation.

<comment><USER21> Maybe present yourself as a seasoned presenter and business veteran and offer to help the teacher prepare a top-notch lesson plan for next year's PP segment?

<comment><USER20> I cause enough trouble at school as it is.

</comment></comment></comment><comment><USER22> It's not a Powerpoint problem, but a presenter problem. Slides should be short and concise with a few words or graphics. If someone can read a presenters slides, and understand the presentation then too much was put on the slides.

<comment><USER23> Or, as my public speaking instructor put it: reading is faster than listening. If I can read what you are going to say, then why are _you_ here? I'd rather just read it.

<comment><USER24> To some extent, people could also just watch the recording online, and skip through the boring content. When I attend a presentation, it's usually to engage with the speaker and with other people in the room. Powerpoint or not, if the speaker is just reading an overly rehearsed script, I'll probably fall asleep.

<comment><USER18> I'd rather read. Skipping over video is an exercise in frustratingly watching snippets to see if you've overshot or not.

<comment><USER22> What you want to read then is the transcript of the presentation along with slides to follow along.

<comment><USER18> Yeah, that would be pretty good.

Although, having said that, I find a written article is usually better written than a transcript of spoken language, since spoken language tends to go off point or include filler or whatever, while written articles are generally better edited. But transcript + slides are pretty good, when available.

</comment></comment></comment></comment></comment></comment><comment><USER25> I am surprised there isn't more on this in this thread:

Persuasion is the center-piece of business activity.

One of the most powerful ways to persuade is through storytelling. Well storytelling is central to our social and cultural experience. No wonder that it finds its way in our work — esp work at big companies (more humans = more social, cultural). Most presentations, discussions or meetings are exercises in persuasion via storytelling.

For years stories are told with theatrics or embellishment. That's PowerPoint.

In the hands of a good storyteller — someone who has something to say and a compelling way to say it — PowerPoint will seem like a great tool. Conversely, the tool will suck (in the same way a guitar sucks when i play it, but becomes magical in the hands of jimmy page :))

Now, as a storytelling tool — just the fact that PowerPoint has found its way into a Billion computers — is astounding. Probably makes it one of the most useful tools invented!

</comment><comment><USER26> People forget that especially in the business world PowerPoint presentations are not only used for presenting content but also as a medium of distribution.

The author presumably does not see need to assamble two sets of the content and just uses the same slides intended for presentation also as handout - resulting in eiter an overloaded presentation or useless handouts.

I try to avoid that by integrating all necessary background info in the presentation but skip that during the presentation and only display it if asked for.

<comment><USER27> Yeah. But these are two different exercises. You have on screen presentations on one side, which is probably less than 5% of the use of powerpoint in large companies, and pitchbooks which are probably like 95%.

Pitchbooks are never meant to be shown on-screen. They are paper handouts (or on-screen on a tablet or PC). They are as much a visual aid for the meeting for charts and bullet points, than a take away to avoid people having to take notes. It de facto replaced word documents in large companies outside of a few formal documents.

So it has to be concise enough to be efficient. The rule of thumb is that you should be able to read the title and subtitle of every slide only and get the message that the pitch carries. It should have an executive summary that serves the same purpose. But it needs to be detailed enough, with an appendix and footnotes, for someone who didn't attend to get all the important details.

<comment><USER28> I wish that was the case at my company. I'm required to create slide decks that are supposed to be usable as presentations and can stand alone without anyone presenting them. I don't think it's actually possible.

</comment></comment></comment><comment><USER29> Anyone reminded of Alan Kay's way of presenting with Smalltalk? He always takes a moment to point out how horribly limiting PowerPoint is too.

I recall reading about another alternative OS where the "desktop" was a zoomable canvas and files were opened by zooming in far enough. Presentations on that machine apparent were a simple matter or aligning files next to each other and scrolling.

<comment><USER30> I've watched a presentation done with an app that works like this and it's nauseating. All the zooming in and out gave me a headache. It was literally one of the worst presentations I've ever viewed.

<comment><USER31> I am assuming you are referring to Prezi. I agree that Prezi is one of the worst presentation software out there. Both presenting, viewing, and creating one of those presentations is the worst.

<comment><USER29> I think the main issue with Prezi-style presentations is that it demands too much skill to use properly. A better interface with sensible defaults and much less emphasis on wow-factor would help a lot here.

Normal powerpoint "only" requires a basic awareness of composition and narrative coherence, which already is too much to ask in practice. To make good Prezi presentation you need to have the skills of a cinematographer/editor. Specifically, the skill of continuity editing[0] so your audience can follow what is going on.

What we want is the calm, easy to read compositions of, say, Yasujirō Ozu or Wes Anderson, and Akira Kurasowa's sense of movement[1][2]. Instead everyone uses it in a way that it feels more like the worst aspects of Bayhem[3].

I still believe Prezi-like presentation tools have the potential to be good, because they _could_ be used to map relationships in your narrative to spatial relationships. But that would require _a)_ that you are aware of those relationships yourself and _b)_ that you posses the skills to translate that into spatial compositions that are coherent.

This is obviously an unrealistic demand, so instead the tools should assist you with that. It needs is an interface that helps users structure their story, with sensible default conversions. Maybe something like Treesheets[4], where you can create a tree-based hierarchy in your topics, and then a conversion of that to a spatial hierarchy that is easy to follow, and _not_ a distraction from the actual narrative.

The vertical slides in reveal.js are a step in the right direction, starting from the powerpoint side of the spectrum[5]. What we need a step in the right direction of the free-flowing Prezi side of presentations. At some point there will be a happy middle ground.

EDIT: Maybe we should all just work our way through Pixar's storytelling course on Khan Academy[6]

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

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

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

[3] [https://www.youtube.com/watch?v=doaQC-S8de8](https://www.youtube.com/watch?v=doaQC-S8de8)

[4] [http://strlen.com/treesheets/](http://strlen.com/treesheets/)

[5] [http://lab.hakim.se/reveal-js/#/](http://lab.hakim.se/reveal-js/#/)

[6] [https://www.khanacademy.org/partner- content/pixar/storytelli...](https://www.khanacademy.org/partner- content/pixar/storytelling)

</comment></comment></comment></comment><comment><USER32> We use power point to prototype our UIs. It's actually quite powerful and works surprisingly well given that we don't usually go into complex workflows when prototyping. I don't think I've seen a better commercial product for throwing something together real quick.

<comment><USER33> I have used Power Point for a long time as my go to "image composition tool".

You know, when you just want to annotate a photo or a map, or superimpose a few images on each other (like for quick workplace jokes)

It is the fastest tool I found to do these sorts of quick and dirty jobs. I call it "PowerShoping" =)

<comment><USER19> I had a colleague that did that too, either with Powerpoint or MacOS' version; he used it to create pretty complex graphics and everything with it.

</comment></comment></comment><comment><USER34> When the IEEE article was posted last week, I followed a link to a book written by one of the developers of the original PowerPoint. I got very little work done that Friday, but it was very interesting, particularly thinking about the difference between OHPs and 35mm slides.

[http://www.robertgaskins.com/powerpoint-history/sweating- bul...](http://www.robertgaskins.com/powerpoint-history/sweating- bullets/gaskins-sweating-bullets-webpdf-isbn-9780985142414.pdf)

I'd like to hear Robert Gaskins give a TED talk. I emailed him to ask if he also wants to, and if he's willing then I think we can nominate him through the TED website. It's quite meta, because I think TED would never really exist without PowerPoint.

[http://speaker-nominations.ted.com](http://speaker-nominations.ted.com)

</comment><comment><USER35> I generally avoid power points - but I think the hate is misplaced. The reason people put detail in power points is because there is no expectation of prior reading/review/preparation from an audience. It makes things worse with a remote work culture where a power point gets treated as a "summary".

</comment><comment><USER36> This article has too small font, too many words, I lost interest part way through. Is there a presentation somewhere that covers the authors' main points? Thanks.

:) j/k

<comment><USER37> The words are pretty much par for the course in academic writing.

That font, though, is inexcusable.

<comment><USER38> [http://www.orwell.ru/library/essays/politics/english/e_polit](http://www.orwell.ru/library/essays/politics/english/e_polit)

Now that I have made this catalogue of swindles and perversions, let me give another example of the kind of writing that they lead to. This time it must of its nature be an imaginary one. I am going to translate a passage of good English into modern English of the worst sort. Here is a well-known verse from Ecclesiastes:

> I returned and saw under the sun, that the race is not to the swift, nor the > battle to the strong, neither yet bread to the wise, nor yet riches to men > of understanding, nor yet favour to men of skill; but time and chance > happeneth to them all.

Here it is in modern English:

> Objective considerations of contemporary phenomena compel the conclusion > that success or failure in competitive activities exhibits no tendency to be > commensurate with innate capacity, but that a considerable element of the > unpredictable must invariably be taken into account.

This is a parody, but not a very gross one.

</comment></comment></comment><comment><USER39> "It has likely been used to raise more money than any other tool in history."

Hmm, I'm going to have to think for all of 2 seconds and say I can't see a way of interpreting "used to raise more money" such that powerpoint is going to come in ahead of the pen.

And the hyperbole continue. "Are we really thinking here or is this just so much pointing and clicking." [https://www.allposters.com/-sp/Are-we-thinking- here-or-is-th...](https://www.allposters.com/-sp/Are-we-thinking-here-or-is- this-just-so-much-pointing-and-clicking-New-Yorker-Cartoon- Posters_i9172134_.htm)

It would seem the author wishes to blame a tool for their own failings..?

</comment><comment><USER40> I know it's fun and easy to bash PowerPoint but I strongly believe it has its merits. I guess, as a strategy consultant I have to say so :) As there are ways to properly structure a text document, there are ways to properly use PowerPoint. E.g., for detailed management briefings, a PowerPoint, if done right, allows the reader to get the main messages within minutes but also allows for in-depth reading of key points. Typically, such presentations would be structured results/recommendations-first [1] and using the assertion/evidence model [2]

[1] Most people structure their PowerPoints sequentially ("we started doing this, then we did that..."). In most cases it is better to start with the final outcome ("we recommend doing x") and then provide all the required backing

[2] State the learning from the slide in the title and present the required evidence in the content part. This allows people to just skim all the titles and get the full story but also dive deep where needed

Edit: To be precise: such presentations are not intended to entertain. They are a tool to guide people as effectively as possible through complex content and allow pre-reading / post-reading

</comment><comment><USER41> Personally I like to be able to keep presentations really really short and dense by showing a live demo, gifs, or pictures.

.. I think when pp presentations start having text or bullet points is when it starts to go wrong.

</comment><comment><USER42> I always use the mantra that power points should only be used when you need to show something you can't draw in 5 seconds.

If it's not strictly needed, then it does more harm than good, by distracting listeners.

</comment><comment><USER43> Limit presentations to 10 slides. This works for VC pitches. It should probably work for anything.

Guy Kawasaki even has his 10 20 30 rule [1]. 10 slides, 20 minutes, 30 point font.

I had a writing assignment once in college. The limit was 1000 words. And then there was a list of points we had to address. Enforced brevity was the challenge.

On the other end of the spectrum, there's David Byrne _I Heart Powerpoint_ [2] which I had the pleasure to see at Berkeley. He's mentioned in the article.

[1] [https://guykawasaki.com/the_102030_rule/](https://guykawasaki.com/the_102030_rule/)

[2] [http://archive.wired.com/wired/archive/11.09/ppt1.html](http://archive.wired.com/wired/archive/11.09/ppt1.html).

</comment><comment><USER44> "By inadvertently privileging the relationships between personal computing and networked forms of sociality..."

What a bunch of gibberish.

<comment><USER45> It's not gibberish. The meaning is clear. In English, you would say, "We got sidetracked by the rise of social media platforms and forget that people do other stuff with computers." There's a difference between gibberish and obfuscation, a difference upon which hangs tenure.

<comment><USER46> Is that what that meant? Must admit I couldn't parse it.

</comment></comment></comment><comment><USER47> I think one point that sometimes gets overlooked is that there are different types of presentations. For example, a set of slides that are designed to accompany lectures for a course on partial differential equations should be very different from a set of slides designed to pitch a business idea, especially if the lecture slides are intended to also serve as notes/textbook.

</comment><comment><USER48> The text on this site is confined to a very narrow column that is about 15% the width of my display. Whatever point the author has about the goodness or badness of PowerPoint as way to present is diminished thanks to the site's inability to present its own content.

</comment><comment><USER49> I understand the powerpoint hate, but seriously when you are presenting data plots you dont want to draw it. You want to show the data. Another benefit of slides are that researchers post them on the internets, with presenter notes. These are often very informative.

<comment><USER50> > when ... presenting data plots you dont wnat to draw it. You want to show > the data.

I agree with you whole-heartedly. The criticism of powerpoint is not so much it's broader context. There are plenty of ways to present structured data with computers promoting good-practices. The criticism is that Powerpoint doesn't encourage people to show the data in the first place.

TL;DR: This issue isn't what Powerpoint _can_ do, it is what it nudges people to do.

</comment></comment><comment><USER51> How does the community feel about well-presented talks using very few or none slides?

I kind of feel that even in tech, you would come across as unprepared or "lazy" for not having slides/PowerPoint

<comment><USER52> I think that to pull it off, you need to convey the impression that you're too important and busy to create PP slides, and that you're showing stuff that's just so urgent and great that you didn't want to make them wait for a PP.

Also, practice will improve your ability to give those presentations, so it's worth practicing on low profile meetings before doing it in front of the CEO.

<comment><USER53> I remember a presentation by Martin Fowler which was without slides - <USER7> extempore about his latest thinking on software development - and very engaging it was too!

</comment></comment></comment><comment><USER54> I've found doitlive is a good way to give a quick, non-interactive talk, for example, where you know you won't have time to answers questions from the audience.

I used a proto-doitlive, which inspired the actual doitlive, to present a lightning talk on Mercurial revsets:

[https://www.youtube.com/watch?v=NSLvERZQSok#t=965](https://www.youtube.com/watch?v=NSLvERZQSok#t=965)

</comment><comment><USER26> I wish this website was summarized in a few slides.

</comment><comment><USER55> If you want to see what a good powerpoint looks like: [https://www.youtube.com/watch?v=J3RnDD4kETI](https://www.youtube.com/watch?v=J3RnDD4kETI)

Bad powerpoints are bad, and good powerpoints are good. They're a useful tool. If they're used well, then they help the talk.

(This is also a _excellent_ talk. I recommend watching it.)

</comment><comment><USER56> If only Lincoln has PowerPoint

[https://norvig.com/Gettysburg/sld001.htm](https://norvig.com/Gettysburg/sld001.htm)

<comment><USER30> Did you not see this example in the article? What's your point?

</comment></comment><comment><USER57> > the box-shaped selection tool that allows speakers to select a portion of > the slide for public display is hidden from the audience

What tool is this? I am unfamiliar

</comment><comment><USER58> I don't get the PowerPoint hate. You can have a wonderful presentation while having PowerPoint slides. As an additional benefit, your audience can keep the presentation PDF which makes it easier for them to remember the cornerstones of the talk.</comment>


Am I Too Old to Be Successful? - <AUTHOR> https://medium.com/swlh/am-i-too-old-to-be-successful-1a9013a5de43 <comment><USER2> You are going to get older anyways, it's better to get older trying to achieve goals, and failing (in the process learning and becoming a better version of you), then just sitting around feeling sad for yourself. I would also not spend time looking at the current state of the world for validation, there are those who achieve contrary to expectations and normalize it, and then there are those who look at the status quo and decide that they just can't do it. I suggest everyone try to be the former and not the latter.

</comment><comment><USER3> Biased blogpost looking for evidence to support his main idea. Basically arguing over the definition is losing the point, which this article is doing?</comment>


Show HN: FastAPI: build Python APIs with Go-like speed and automatic UI docs - <AUTHOR> https://fastapi.tiangolo.com/ <comment><AUTHOR> FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+. It is one of the fastest Python frameworks available, as measured by independent benchmarks.

It is based on standard Python type hints. Using them, you get automatic data validation, serialization, and documentation. Including deeply nested JSON documents. And you get editor completion and checks everywhere.

Designed around the OpenAPI (Swagger) and JSON Schema standards.

It includes 2 alternative interactive API documentation systems that are generated automatically.

OAuth2 capable from the start (including JWT). Dependency Injection system, compatible with all databases (relational and NoSQL), Websockets, GraphQL, CORS, etc.

<comment><USER2> It seems like a lot of the "FastAPI features"[1] are coming not from FastAPI but from Starlette:

\- Just Modern Python

\- Editor support

\- Short

\- Unlimited "plug-ins"

Would it be fair to say that this is Starlette + an API schema + OAuth2 + data validation?

[1] [https://fastapi.tiangolo.com/features/#fastapi- features](https://fastapi.tiangolo.com/features/#fastapi-features)

<comment><AUTHOR> Yes! Sort of... Most of FastAPI features come from Starlette AND Pydantic.

In FastAPI you declare the parameters of your request (including deeply nested JSON bodies) as function parameters.

So, "editor support" here means, for example, autocomplete even for deeply nested models.

Also, you get automatic data validation and serialization. Automatic detailed errors in your API responses.

Also, it has a powerful dependency injection system, that helps in a lot of cases.

</comment></comment></comment><comment><USER3> Another way to get Go like speed is to use Go. Go has an excellent built in http web server, and unlike Python it comes standard with a bug reducing type system and an easy and intuitive syntax. In fact, the entire specification of the language can be read in an hour by a novice programmer.

Not only that, but Go has best in class editing support in VSCode and Vim, has an official code formatting tool (sorry black), and makes writing concurrent code painless with a syncronous abstraction (sorry asyncio).

Also it may have good response times in a vacuum but there's still the Python memory tax, startup times (which matter when you need to scale horizontally), and scaling of latency to think about.

<comment><AUTHOR> Yeah, the advantage here over Go would be to have automatic data validation, serialization, and documentation, all based on standards: OpenAPI and JSON Schema. Including automatic web user interface for API documentation.

And maybe the dependency injection system.

And Python's ecosystem with lots of packages.

And that Python is the best/main way to do Machine Learning/Deep Learning.

I personally don't think new asyncio (Python 3.6) is more difficult, but that's more personal taste.

Indeed, FastAPI inherited benefits from ideas in Go and other languages and frameworks.

<comment><USER3> > Yeah, the advantage here over Go would be to have automatic data validation, > serialization, and documentation, all based on standards: OpenAPI and JSON > Schema. Including automatic web user interface for API documentation.

Golang has libraries for all of the things you mentioned, and web tools to generate APIs based on those schemas. There's no advantage here over Go.

> And maybe the dependency injection system.

Go has interfaces, which facilitates easy DI. No advantage there, and Go sells itself on not having a magic DI framework like the crap Angular 1 had.

> And Python's ecosystem with lots of packages.

Python's ecosystem may have more packages taken as a whole, but Go has a richer web and infrastructure community thanks to being a web first language and growing out of the DevOps community.

> And that Python is the best/main way to do Machine Learning/Deep Learning.

Which means nothing. You shouldn't be running ML in your web server. You use grpc or http to make requests to your ML backend, or generate a config for the web server to consume.

> I personally don't think new asyncio (Python 3.6) is more difficult, but > that's more personal taste.

Even if it isn't more difficult, functions have to be colored async which leads to ecosystem fragmentation. It's a huge pita.

<comment><USER4> Dude, are you a Go bot written to promote Go?

Have you considered that maybe not every one wants have anything to do with the 8th wonder of the world that is Go?

Take it easy pal, let people enjoy things.

<comment><USER5> It looks like some (extremely dedicated) trolling, don't take it seriously. There is certainly nothing wrong in expanding the ecosystem of your preferred language!

<comment><USER3> The way I see it, you're offering no counterpoint and trying to discredit me with a character attack, which makes you the troll.

</comment></comment></comment></comment></comment></comment><comment><USER6> You should also check out starlette and other supporting projects that Tom Christie (of DRF fame) is working on right now. Both FastAPI and Responder are thin wrappers around starlette.

Tom Christie has been quietly building what's starting to look like an async first decoupled version of django:

\- [https://github.com/encode/starlette](https://github.com/encode/starlette)

\- [https://github.com/encode/orm](https://github.com/encode/orm)

\- [https://github.com/encode/typesystem](https://github.com/encode/typesystem)

\- [https://github.com/encode/databases](https://github.com/encode/databases)

\- [https://github.com/encode/apistar](https://github.com/encode/apistar)

\- [https://github.com/encode/uvicorn](https://github.com/encode/uvicorn)

<comment><AUTHOR> Yep, FastAPI is based on Starlette, heavily inspired by the (now "deprecated") APIStar.

What it adds is automatic data validation, serialization, and documentation, with Python type hints. All using Pydantic.

So, you declare request parameters and bodies with standard Python type hints (even for deeply nested JSON bodies) and it automatically does all that.

It also has a simple but powerful dependency injection system.

And thanks to Tom Christie's work, it is compatible with all those tools too (databases, orm, uvicorn, all from Starlette, etc).

</comment></comment><comment><USER7> Great documentation! The extra level of detail like explaining the command for running the server is super helpful for less experienced users.

<comment><USER8> Also love the fact that some of the code samples are unit tested to make sure they are functional.

<comment><AUTHOR> Nice observation!

Yes, most of the tests come directly from the docs, that way, by having full test coverage, means that at least a big part of the functionality is not only tested but also documented somewhere.

</comment></comment></comment><comment><USER9> Looks great; been searching for something to rewrite a 6yo side-project with and this looks just about perfect.

Small wrinkle: I spotted a broken link on the "deployment" page - "Bigger applications with multiple files" doesn't link to the right place (in fact it links nowhere, the `href` attribute has no value).

<comment><AUTHOR> > Looks great; been searching [...]

That's great!

> Small wrinkle [...]

Oops, good catch! Thanks. It's fixed now.

</comment></comment><comment><USER10> It's looks great. I've been looking for something like this. I like the documentation. It's very clear.

<comment><AUTHOR> That's great to hear!

</comment></comment><comment><USER11> How does this compare to [https://moltenframework.com/](https://moltenframework.com/)? They both provide type hints and are inspired by API Star. Why should I use FastAPI over molten?

<comment><AUTHOR> Molten also helped inspire parts of FastAPI. And they are indeed quite similar in several things.

Molten is based on WSGI, FastAPI is based on ASGI.

So, you can do async/await stuff in FastAPI.

FastAPI inherits directly form Starlette, so it inherits its benefits, like testing tools, GraphQL in-process background tasks, etc.

And it benefits from the ASGI ecosystem, for example with plugins to handle Django-Channels like Websockets, deployment to "serverless", even including other tools like Socket-IO.

FastAPI is based on Pydantic instead of an internal library for declaring schemas, so any improvements there are inherited here.

It supports Flask like route decorators.

The dependency injection is simpler, probably more intuitive (but this is more subjective). The same with several other parts.

But again, Molten is a great tool, and was one of the tools that inspired FastAPI (it's even mentioned in the docs).

<comment><USER11> Thank you for the detailed answer!

<comment><AUTHOR> :)

</comment></comment></comment></comment><comment><USER12> For someone who is a little lost when somebody just says "API" ... Is this like flask but without jinja-templating?

<comment><AUTHOR> It's designed to be very helpful while building web APIs that communicate JSON over HTTP.

You can have semi-automatic data validation, serialization (converting from JSON to Python data types, etc). And an automatic web user interface that documents your API. You don't have to do anything to have that web interface, it's done automatically from your definitions of the data types that you need.

It is also compatible with Jinja templates.

It's like a modern Flask with several benefits, especially for web APIs.

</comment></comment><comment><USER13> When you look at what you need in Python to get semi-decent performance:

\- C library everywhere ( network, serialization ... )

\- server that manages process ect ...

At some point if you need that kind of things just pickup a language that does it out of the box.

<comment><AUTHOR> Maybe, but Python is still quite easy to pick, the only one that can do Deep Learning and Machine Learning well, etc.

So, if we can use it, take advantage of its benefits and have tools like this that simplify everything without too many constraints, I would say it's a good tradeoff.

<comment><USER6> Yeah for data science and CRUD workloads python is great. The performance difference between go and python in those settings are negligible and python wins out on ease of use and ecosystem.

<comment><AUTHOR> Exactly. Totally agree.

</comment></comment></comment></comment><comment><USER14> This looks awesome. I'll definitely be using this for the next API I build.

<comment><AUTHOR> That's great!

</comment></comment><comment><USER15> Best completion I've ever seen and a breath of fresh air. Love it.

<comment><AUTHOR> :D

</comment></comment><comment><USER16> Why should I use this instead of Falcon?

<comment><AUTHOR> To use Python type hints, and get automatic data validation, serialization, and documentation for your API (including interactive UI docs for your API). All that, even for deeply nested JSON bodies. And by using type hints, you get autocomplete everywhere, type error checks, etc.

Your API gets documented with standards: OpenAPI and JSON Schema.

Or to be able to have WebSockets.

Or for its dependency injection system, that saves you a lot of code and plugins.

You can check the features here: [https://fastapi.tiangolo.com/features/](https://fastapi.tiangolo.com/features/)

And you can see alternatives and comparisons here: [https://fastapi.tiangolo.com/alternatives/](https://fastapi.tiangolo.com/alternatives/)

<comment><USER17> Note that if you are currently using Falcon, another route to get many of these features is to use hug ([https://github.com/timothycrosley/hug](https://github.com/timothycrosley/hug)) which inspired many of API Star features back in the day - and is part of the Falcon ecosystem. But there's also a lot of really amazing work done in this ecosystem that hug doesn't currently support - I may have a busy couple of months ahead :).

(DISCLAIMER: I am the creator of hug)

<comment><AUTHOR> Yep, and Hug was one of the first tools I saw with this style of declaring parameters with types in the functions, along with APIStar.

Great job! And thanks. It helped inspiring the creation of FastAPI. Apart from other of your tools that I use all the time, like isort.

An advantage I see of Hug: the same Hug application can be a CLI app.

A couple advantages I would see of FastAPI (disclaimer, I'm the creator :) ):

* The API schema uses the standards OpenAPI and JSON Schema * It includes a couple of interactive API documentation web user interfaces (Swagger UI, and ReDoc). Thanks to being OpenAPI. * It uses standard Python type hints, not custom types included as part of the library. * The dependency injection system. * Websockets.

<comment><USER17> Glad to hear that :)!

Honestly, what you've built looks super solid and polished. In many ways, it's what I _wanted_ hug to be - it's really inspiring to see someone build that.

<comment><USER18> Just wanted to second @tiangolo's "Thanks for paving the way with Hug" \- Absolutely yup! It's a lovely bit of interface design - definitely had a really positive impact on the space.

</comment></comment></comment></comment></comment></comment><comment><USER19> Been using it, works great.

<comment><AUTHOR> Awesome!

</comment></comment><comment><USER20> honest,sincere question:

i don't understand why people do this - build these frameworks. it's hundreds of independent labor hours and forgoes the key value prop of python (or whatever language they're reimplementing the wheel in): the existing ecosystem. i would never use this over flask or django because the community around each of those frameworks. that includes plugins, docs, blog posts, SO posts, etc. further more i'm not going to trust that one shop will exist forever and maintain this framework to the same extent that django is maintained. so in effect by adopting this framework i take on the maintenance responsibility. but why would i ever do that? it's not interesting work (very little groundbreaking research left in the http server space i think), it's thankless, and it's just completely unnecessary - every time i submit a PR i'll be looking enviously at django foundation's latest release.

so why would anyone write something like this and why would anyone ever adopt? if you're going for speed without ecosystem then just use Go or Java or C# to begin with. is it just NIH syndrome?

<comment><USER21> Simply because any sufficiently old Django app has the same intro curve as any other (possibly customised) framework.

Have you actually used Flask, by the way? Or the older version of it called Pyramid? The truth with it is that it's not only complex, but also doesn't prefer any of it's optional components. Any project you'll be building in it is going to be custom anyway.

<comment><USER22> > Have you actually used Flask, by the way? Or the older version of it called > Pyramid?

Flask is in no way related to Pyramid. It came out of an April Fools joke in 2010 ([http://lucumr.pocoo.org/2010/4/3/april-1st-post- mortem/](http://lucumr.pocoo.org/2010/4/3/april-1st-post-mortem/)). Pyramid, OTOH comes out of the Plone/Zope communities (it used to be known as repoze.bfg).</comment></comment></comment>


How to hack the upcoming Dutch elections and how hackers could have since 2009 - <AUTHOR> https://sijmen.ruwhof.net/weblog/1166-how-to-hack-the-upcoming-dutch-elections <comment><USER2> To answer the question:

You change the SHA1 hash of the voting data in both the PDF and the XML filename. As long as the user is not verifying against a paper printout this attack will work.

Everything else in this article is secondary.

</comment><comment><USER3> Well, that's funny: Firefox tells me that "Your connection is not secure. The website tried to negotiate an inadequate level of security."</comment>


Ask HN: Were you able to get a job lately in the Bay Area? - <AUTHOR> I'm desperate guys... I've applied at 20 different companies and haven't been able to land a job. This has never happened to me in the past. I'm applying for software engineering positions. I'm a full stack engineer with several years of experience, I worked for some very hot companies out there in the Bay Area.<p>What is going on right now??? I've always been good at interviewing and I've switched jobs 6 times over the last 10 years. I manage to get through the interviews and answer most of the questions, sometimes ALL the technical questions. I come up super motivated and energetic over the phone and onsite. They keep saying they love my profile and experience and at the end of the whole process I keep getting the same email: "we decided to move with other candidates" or "we don't think you're a perfect fit". <comment><USER2> It is difficult to diagnose this on a forum, but I'm going to suggest another angle.

Unless there has been something radically change in your life, I'm going to suggest that you are simply having a run of "bad luck."

1\. You have a good work history

2\. You are in a field that is in demand

3\. The unemployment rate is low not only in the bay area, but nationwide

At least for me, "Fooled by Randomness" by Nassim Nicholas Taleb was a life changer. The main thought: when we get hit with chance (good or bad luck), we (as humans) tend to find some type of causality, when it was just randomness. With a large amount of readers for HN, somebody is going to get into a situation where something didn't click on multiple job interviews (even 20 interviews or more), and the negative outcomes were just bad luck

Now I may be reading between the lines, but your post sounds a little panicked. Once you panic this rolls in the job search, and panicked humans have a tendency to regress in terms of our execution on job interviews. The interviewer starts to get the feeling that the person is desperate, and once somebody is desperate, you no longer get the feeling that the person that you are hiring is unique. This lowers the chance of getting a job.

The key is convincing yourself that it is a numbers and networking game. Even on your time between jobs, keep networking using friends and social meetups. Then interview as much as possible, and tell everybody that your just looking for the right match on the right team.

</comment><comment><USER3> This is going to be very anecdotal, and may be unrelated, but here's another data point.

I recently went through the shutdown of a startup and also had to find a new job. This was my first time seriously job hunting in 10 years as I got my last few jobs in a variety of ways that were easy. So I did what seemed to make the most sense -- launch up LinkedIn Jobs and started applying.

Out of 20+ jobs I applied to on it, I heard back from basically none. 1 company responded, but was a very quick "not a fit" without even a phone screen.

I got a total of 3 interviews, where 2 were friend referrals and 1 was through a new job matchmaking startup. (Won't name it here in case it's mistaken as advertising) Fortunately for me I landed 1 of them.

So my issue could be that no one really checks these LinkedIn job applications, which isn't related to your issue.

I'd also like to point out that the shift in technologies in just the past 3-4 years have been huge, among startups especially. Your skillset may not be up to date with what companies look for now if you had been with the same company for 5+ years.

<comment><AUTHOR> Thanks for sharing your experience. Last time I switched jobs was 2.5 years ago. My domain is pretty stable in terms of technologies, I'm up to date.

I had a little bit of everything, mostly linkedin. My "conversion rate" is actually pretty good, I usually get contacted when I apply. I made it to several on-sites even though I failed at a couple of technical phone screens at the very first stage. I'd say I nailed about %50 of my all interviews. Sometimes I'd "score" %100 at a tech interview, leaving plenty of room for me to ask a lot of meaningful questions (well prepared in advanced) to my interviewers. I mean, when you nail their coding questions, answer all their technical design questions and describe your past projects in details, what else do they need? I stay pretty humble usually and try not to come up too cocky.

I feel somehow confident about all the on-sites I had and usually got a good feedback right away (during the actual interview). Though, as I said, none of them led to an offer which is pretty amazing.

Also, I went through 2 jobs from 2 friend referrals. Failed on both. I also noticed that companies are super messy sometimes. I would apply for a position and in the middle of the process they would switch me to another position thinking it would be a better fit for me. I end-up talking to a new set of people (WTF??) who haven't heard about me nor selected my application in the first place. I feel like a bag of potatoes.. So it puts me in a weird situation where they're like "well, let's talk to him at least see what's up" without really carrying too much since they're already talking to a bunch of candidates. At the end they email me saying I'm not a great fit. Like... dude...

I'm a bit speechless right now to be honest...

<comment><USER3> I have to say I had a very similar experience as you did in my interviews as well. I felt like I did at least decent, if not pretty good, and not getting the offer from 2 of them. The place I did land, may only be because it's a small team and half the team were people I knew from a previous job (i.e. friends).

</comment></comment></comment><comment><USER4> You should apply to more. It's a numbers game.</comment>


Model-view-controller, Haskell-style  - <AUTHOR> http://www.haskellforall.com/2014/04/model-view-controller-haskell-style.html

<comment><USER2> Why are people so fixated with the term `MVC`, it's just the name of _an_ architectural pattern.

What the library author has here looks pretty cool, but I don't understand how it's anything like MVC. It's not that the author is special here, things like ASP.NET MVC and PHP 'MVC' frameworks make no attempt to be even close to the design pattern but still take pride in calling themselves 'MVC frameworks'.

In general, people seem to be calling everything that does 'separated presentation' MVC.

One of the things I don't understand.

<comment><USER3> Can you elaborate a little more on how this is different from MVC? It seems to me that this library is rather similar to Wikipedia's description of MVC, but with the state moved out of the model.

<comment><USER4> The model may use pure state (using the `State` monad), but if you wish to read or write that state to a persistence layer you must go through a `View` or `Controller`.</comment></comment></comment>


Pivoting - <AUTHOR> http://cdixon.org/2010/06/14/pivoting/

<comment><USER2> He's referring to Loopt (and others I suppose) when he says _"The other companies built elaborate infrastructures: e.g they partnered with wireless carriers so that users' locations could be tracked in the background without having to "check-in"."_

This is the kind of mistake that burns so badly. You find yourself saying something like "You mean you just _ask them_ to update their location manually and that works?"

It reminds me of when Ballmer was bragging about how sharing songs via WiFi on the Zune could get you a date. Then Steve Jobs recommended simply giving one earbud to the girl.

The differencing between trying to untie the The Gordian Knot and taking a sword to it.

<comment><USER3> The timing of the iPhone (its OS and its app store ecosystem) played a significant role in the check-in model, I think, as it encouraged developers to [finally] sidestep the carriers, and also prevented background processing. Though this is kinda irrelevant to Chris' bigger point of pivoting towards a perceived advantage.

(It will be interesting to see how things change with OS4's background processing. I'd guess users will continue to prefer for check-in based over continuous gps logging, though there may be some interesting/appealing applications of continuous logging. Haven't really looked into the specifics yet.)

<comment><USER4> Google Latitude on the Android follows the continuous logging model. It's interesting but for very different reasons than Foursquare. Foursquare's appeal to me is more keeping a record of interesting places I go and sharing that with others. Latitude's appeal is, oh, where are my friends right now.

</comment></comment></comment><comment><USER5> #2 is a big one. If there's one HN ethos that I disagree with, it's the idea that a better engineered solution is always a better solution (full stop). Unless you have infinite time and developers, that's not true.

<comment><USER6> A better engineered solution _is_ always a better solution. What he is describing is _over_ -engineering.

I am failing to remember who said: the perfect racing car falls apart the moment it crosses the finishing line - all others else are over-engineered. The point is that _good_ engineering is _appropriate_ engineering. All the things that PHBs sometimes think off as the geeks going off on their own obsessions - maintainability, clarity of design, low fault tolerance, high scaling ability - these are either good engineering or over-engineering depending on the stage of the lifecycle, the purpose of the project (air traffic control systems anyone?), the future staffing estimates and so on.

For example in my own area of acedemic-(ish) software engineering, maintainability absolutely trumps delivery dates. Clearly, if you are chasing ramen profitability, it may not.

Context matters.

<comment><USER7> Has been said of Colin Chapman, and also attributed to Ferdinand Porsche:

[http://forums.autosport.com/lofiversion/index.php/t63818.htm...](http://forums.autosport.com/lofiversion/index.php/t63818.html)

</comment></comment></comment><comment><USER8> He hits on a powerful question: "If we were to start over today, would we build our product the same way we had so far?"

<comment><USER9> I'm certain that over time, our product would have evolved through user feedback and bug fixes. But he's definitely referring to the products that did launch, because I am also considering the products that we thought would create market share yet went south. This is where Chris's rule #1 applies.

</comment></comment><comment><USER10> _2\. The Bridge on the River Kwai syndrome._

How is this counteracted by asking whether they would build the product the same way were they to start over? It seems it would do the opposite: Bring all the warts to their attention and make them rewrite the code even though it works perfectly well.

</comment><comment><USER11> What if your business is going pretty much like you expected? I am actually kind of stressed out that things are going smoothly, does that mean I am not finding the weakness in my business fast enough? Or are things actually going smoothly?

</comment><comment><USER12> There's also the danger of pivoting too fast. Don't continually half-ass things without letting them bake and mature. Something's to be said about following through and executing your vision, right?

</comment><comment><USER13> The startup that I work for started out as a video upload site. On a whim one of the developers added the ability to use an embed code instead of uploading a video from your computer. When that became popular, it got promoted more and more until now, where there isn't even the option of uploading your own videos anymore. I always thought that was a hell of a pivot.</comment>


Funniest reviews - <AUTHOR> http://www.amazon.com/gp/feature.html/?docId=1001250201 <comment><USER2> If you've never seen it, the Tuscan Whole Milk reviews have become a work of art. No, really. Go to [http://www.amazon.com/dp/B00032G1S0/ref=azfs_379213722_Tusca...](http://www.amazon.com/dp/B00032G1S0/ref=azfs_379213722_TuscanWholeMilk_1?pf_rd_m=ATVPDKIKX0DER&pf_rd_s=center-5&pf_rd_r=0P8Z6VGW8T2D7B5RJ6KC&pf_rd_t=1401&pf_rd_p=1580659342&pf_rd_i=1001250201) and start reading.

However my favorite Amazon review of all time remains The Story of Ping: [http://www.amazon.com/review/R2VDKZ4X1F992Q](http://www.amazon.com/review/R2VDKZ4X1F992Q)

<comment><USER3> This deserves a subreddit.

<comment><USER4> [http://www.reddit.com/r/HumorousReviews](http://www.reddit.com/r/HumorousReviews)

</comment></comment></comment><comment><USER5> Short link without affiliate code, in case anyone cares.

[http://www.amazon.com/gp/feature.html/?docId=1001250201](http://www.amazon.com/gp/feature.html/?docId=1001250201)

<comment><USER6> Why would/should I care? Honest question, I don't know much about the affiliation programme.

<comment><USER7> Allowing submissions with an affiliate code encourages people to submit material to HN that has no intellectually gratifying qualities (see guidelines) in the hopes that thousands click through, and their future purchases are tracked and a commission paid to the submitter.

</comment></comment></comment><comment><USER8> The reviews of the Uranium Ore can are the most hilarious:

"It is not cat food…. The cat's huge and well, doesn't really look much like a cat anymore."

"I purchased this product 4.47 Billion Years ago and when I opened it today, it was half empty."

<comment><USER9> Though it would not be half empty, as there would be Pb now.

<comment><USER10> True, but the joke isn't funny if you pedantically stick with the truth.

<comment><USER9> HN crowd knows to chuckle for a joke and also question its validity at the same time :)

</comment></comment></comment></comment><comment><USER11> It's nice to see Amazon embracing this in a positive way. One of my all-time favourites was the "Harry Potter vibrating broomstick". It took a while to find but here are some of the reviews: [http://www.methodshop.com/gadgets/reviews/potters- stick/inde...](http://www.methodshop.com/gadgets/reviews/potters- stick/index.shtml)

</comment><comment><USER12> Nice to see Amazon doing something like this. My favorite Amazon review has to be for Veet for Men Hair Removal Gel Creme. The first one always makes me chuckle [http://www.amazon.co.uk/Veet-Men-Hair-Removal- Creme/dp/B000K...](http://www.amazon.co.uk/Veet-Men-Hair-Removal- Creme/dp/B000KKNQBK/ref=cm_rdp_product)

<comment><USER13> I cried with laughter the first time I read these. Some of the most creative euphemisms I've ever heard...

</comment></comment><comment><USER14> If you're willing to excuse the language in the reviewer I genuinely cried with laughter when I read this. The review probably cried too but for different reasons.

[http://www.amazon.co.uk/product- reviews/B000KKNQBK](http://www.amazon.co.uk/product-reviews/B000KKNQBK)

(The most helpful review - not linking directly to the review so you can see the product.)

</comment><comment><USER3> On a receiver cable:

 _" The most horrific thing of all was that after having spent 300 years crawling to the system to unplug said cable, my brother was unable to control the sheer power of such a quality signal and like an ancient psychedelic Mr Miyagi struggling with a running fire hose, pointed the beam directly into his face."_

This is a comedy gold mine. I love that Amazon curates these.

</comment><comment><USER15> If you are amused by this you should subscribe to /r/wtfamazon over at reddit.

</comment><comment><USER16> It is rare that 'a funny review' makes you buy the product, however I did after reading about 'Chompy', let me quote:

Is it possible to become emotionally attached to a kill-crazy cannibalistic worm that looks like a facehugger from the Alien movies and spends most of its time attempting to eat its siblings? Having recently shed a tear while burying my last one - Chompy - in the back garden, I'd say yes. These little beasties inspired fear and disgust in my girlfriend, but to me they were true friends.

The rest of the review:

[http://www.amazon.co.uk/review/R3V27MXZINXUSL/ref=cm_cr_rdp_...](http://www.amazon.co.uk/review/R3V27MXZINXUSL/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B00008OS3U&linkCode=&nodeID=&tag=)

</comment><comment><USER17> Just to add to the mix, a great restaurant review: [http://www.london- eating.co.uk/review-comments/123446.htm](http://www.london- eating.co.uk/review-comments/123446.htm) (more comments here: [http://aroundbritainwithapaunch.blogspot.co.uk/2008/01/take-...](http://aroundbritainwithapaunch.blogspot.co.uk/2008/01/take- her-up-oxo-tower.html))

</comment><comment><USER18> The reviews for 'Haribo Sugarless Gummy Bears' are pretty excellent as well. Only in massive intestinal distress can true poetry be written.

[http://www.amazon.com/Haribo-Gummy-Candy- Sugarless-5-Pound/p...](http://www.amazon.com/Haribo-Gummy-Candy- Sugarless-5-Pound/product-reviews/B000EVQWKC?pageNumber=12)

</comment><comment><USER19> This review about Cattle Prod ( yes, they sell those on amazon ) is pure gold.

[http://www.amazon.com/review/R14IVEZTWB0C1H/ref=cm_cr_pr_cmt...](http://www.amazon.com/review/R14IVEZTWB0C1H/ref=cm_cr_pr_cmt?ie=UTF8&ASIN=B000LF652Q&linkCode=&nodeID=&tag=#wasThisHelpful)

</comment><comment><USER20> If you speak french, this is way funnier: funny review about a giant swiss army knife - [http://www.amazon.fr/Wenger-19201-Couteau- suisse-g%C3%A9ant/...](http://www.amazon.fr/Wenger-19201-Couteau- suisse-g%C3%A9ant/product-reviews/B000R0JDSI)

<comment><USER21> The UK version of this was going to be my recalled suggestion: [http://www.amazon.co.uk/gp/aw/d/B000R0JDSI](http://www.amazon.co.uk/gp/aw/d/B000R0JDSI)

</comment></comment><comment><USER22> The reviews on one of Snooki's (Nicole Polizzi) books are also hilarious. [http://www.amazon.com/Shore-Thing-Nicole-Snooki- Polizzi/prod...](http://www.amazon.com/Shore-Thing-Nicole-Snooki- Polizzi/product-reviews/B004WB19MG/)

</comment><comment><USER23> Be careful the link is tagged with an affiliate tag, so if you buy anything next they get a cut

<comment><USER24> Why should you be careful?

</comment></comment><comment><USER25> This one for the secret is a classic. [http://www.amazon.com/review/R2X2TB3S4O5I60](http://www.amazon.com/review/R2X2TB3S4O5I60)

</comment><comment><USER26> By the way, going from any of the listed products to the recommended products yields a flurry of facetious reviews certainly worth checking out.

</comment><comment><USER27> is "how to avoid huge ships" a real book? all reviews on it are great

<comment><USER28> Yes: [https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships](https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships)

<comment><USER29> That is one of the 532 "Internet Memes" which I now need to read about: [https://en.wikipedia.org/wiki/Category:Internet_memes](https://en.wikipedia.org/wiki/Category:Internet_memes)</comment></comment></comment>


App Store Intelligence API for iOS and Android - <AUTHOR> https://apptweak.io <comment><USER2> Huge amount of available app data. Give it a try!

</comment><comment><USER3> Awesome API. Would recommend to any apps !</comment>