What If IBM's Watson Dethroned Google as the King of Search? - <AUTHOR> http://www.wired.com/opinion/2013/10/google-in-jeopardy-what-if-watson-beat-the-search-giant/ <comment><USER2> _Oh Please.._

This sounds like it was written in 2007 or something.

Google has been working on question answering for years now, but only exposes it when it is sure of the answers.

[https://www.google.com.au/search?q=when+did+jfk+die](https://www.google.com.au/search?q=when+did+jfk+die)

(I get a "one box" answer saying "November 22, 1963 John F. Kennedy, Date of death"). You'll note that Google had to derive that I meant "John F Kennedy" by JFK, that I wanted a date, and then retrieve the answer.

[https://www.google.com.au/search?q=how+old+was+jfk+when+he+d...](https://www.google.com.au/search?q=how+old+was+jfk+when+he+died)

"46 (1917–1963) John F. Kennedy, Age at death"

[https://www.google.com.au/search?q=how+did+jfk+die](https://www.google.com.au/search?q=how+did+jfk+die)

"Assassination John F. Kennedy, Cause of death"

It's worth clicking the "More info" button under one of these "One boxes". Google will tell you what it regards as "facts" and where it is deriving them from.

(Also, [http://www.wolframalpha.com/input/?i=how+old+was+jfk+when+he...](http://www.wolframalpha.com/input/?i=how+old+was+jfk+when+he+died) is just as impressive)

<comment><USER3> I'm also continually surprised at how good google is at queries of the type "what was that that movie where the guy did that thing" and "what was that music group that has that gimmick".

<comment><USER4> Do you have an example? ( The two I tried did not work.)

<comment><USER5> I have another example. I live in Mexico and I watch movies in Spanish/English depending on the channel. The titles are always in Spanish and a lot of times they don't translate clearly to English or they don't make any reference to the title in English. If I am watching a movie I usually try a few Google queries to find about the movie I am watching, to see if I like it or just to know the end. Even with out knowing the title I am usually able to quickly find about the movie even if it is not a blockbuster.

horror thriller where woman goes to russia meets brother

[http://www.imdb.com/title/tt0475937/](http://www.imdb.com/title/tt0475937/) \- The Abandoned

^The result I was looking for appears first.^

I think it is ludicrous to think that Google can be displace from it position as the global leader of web search in the short or mid term. To displace Google a new search engine wouldn't just have to be better it would have to make Google appear like last century tech. With this said I have to make clear that I am no Google fan or Google hater but I am glad there are other search engines that can at least compete with Google on their national markets (Yandex, Baidu, Naver, Seznam & Yahoo Japan).

</comment></comment></comment></comment><comment><USER6> This is one of the most ridiculous stories I have ever read. How do they so quickly dismiss Google's search algorithm as something to fall back to? Microsoft have been chasing their tails for years trying to be as relevant as Google and never achieving it.

It sounds like the author is suggesting dynamic web pages built by Watson that would answer questions (summarise court cases etc). The underlying problem is, where does all this data come from? It sounds like Watson would intepret multiple data points from around the web to compile the information. How can they say this information is correct? Google at least points you in the direction of the information then you make an informed decision yourself if it is correct.

This sounds like something we already have, we have Google and Wolfram Alpha. Problem sorted.

<comment><USER7> This is certainly not ridiculous. It is very legitimate to wonder whether systems involving more AI such as Watson are going to take over standard search techniques or not. Regarding Bing, it is as you said: Microsoft has been _chasing_ Google but Watson is a totally different approach so the question is still open.

<comment><USER6> The concept of the AI is not what I am disputing, it's this particular story. There is no expansion on how it will replace it and equally dismisses Google's algorithm as simple to replicate.

I don't see it as replacing search either, people search for websites. What is the end result, that Watson replaces all sites on the internet with it's own dynamic page filled with its own information?

How would Watson choose how to display the information it returns to me? Am I getting the full story?

This article breezes over so many specifics I cannot take it seriously.

</comment></comment></comment><comment><USER8> Without diminishing the props that need to be given to the team at IBM Research which developed Watson, the author of this article has significantly overestimated the general AI capabilities of Watson, while downplaying what is involved with Google Search.

On the Google Search side, its algorithms are a lot more than just "the PageRank algorithm". The knowledge graph and its ability to remember and take advantage of context from previous searches are examples of this.

On the Watson side, a huge amount of what it was doing involved identifying keywords and finding relevant information from the clue words. It did not really reason about questions or have a deep understanding of the semantic content of the query. It was hand optimized for the sort of questions that tend to be asked on Jeopardy, which was an impressive feat, but in terms of being able to create new knowledge, as the author suggests? The state of the art in AI is a long way away from that.

</comment><comment><USER9> The reason Google Search works well is because through many of it's iterations it actually uses crowdsourced data from real humans to answer questions. Whether it is the simple initial vote of confidence by links, to google's ever changing internal data about clickthrough rates, personalized results, search volumes and general user behavior, or simply from the many hardcoded questions in certain format ("What is the capital of Spain?" or "distance from the sun to jupiter"), Google is continuously getting better at judging intent and answering questions. Similarly for a lot of the other technologies, such as translations, the real work is being done by consumers and users who generate the gigantic corpus of data.

The question is -- does IBM have access to the same amount of data?

</comment><comment><USER10> If Watson were to ever dethrone Google, I am willing to almost bet it would be because it was programmed to consume data via Google. It all comes down to the data in the end, unless IBM have managed to gain access to the same size and or bigger trove of data than Google currently has (which is a lot), there is no way anyone can beat Google. And lets face it, people don't just use Google because they have the biggest database of knowledge and data, people use it because they trust it, they know it works, and Google as a company have established a rapport with people that has taken years. IBM to me will always be a company focused on corporate and enterprise offerings, not offerings for the general consumer.

</comment><comment><USER11> I've always thought Google would want to buy some Watsons to help their search engine. I'm surprised they haven't yet.

That being said, I wonder if they're more interested in how their D-wave quantum computer will turn out.

</comment><comment><USER12> What is the diameter of a Krugerrand?†

Actually, I needed the answer, since I was reaching into my desk drawer for some wedding gifts and needed to buy some gift boxes (Google helped with that, too).

Watson may have a head start on the AI stuff, but Google is a quick study.

Also, Google is really good at server farms.

†[https://www.google.com/search?q=What+is+the+diameter+of+a+kr...](https://www.google.com/search?q=What+is+the+diameter+of+a+krugerrand%3F&oq=What+is+the+diameter+of+a+krugerrand%3F#es_sm=119&q=what+is+the+diameter+of+a+krugerrand&safe=off)

<comment><USER13> [What years have Pixies toured England?] is a nice example of a search that doesn't work. You don't get a historical list, you get very many sites selling you tickets or sites telling you about a tour this year or an upcoming tour.

</comment></comment><comment><USER14> Given past experience with other MPI-based software, I'm not sure that Watson would scale without extensive retooling. MPI tends to be extremely chatty (MPI - Message Passing Interface), we ran ours off a hypercube (network topology) switched Infiniband setup. MPI depends on broadcast/scatter/gather semantics. This squarely lands in the 'what if' category for now.

<comment><USER15> Infiniband sucks. IBM's or Cray's proprietary interconnect will scale your code because it removes the chatter. On a Cray our MPI latency is 20x better and has almost no discrepancy between PEs.

<comment><USER16> Interesting, I went to a super computer conference in Germany last week and was curious to see many papers using 10GbE and vendors talking about infiniband. Can you point me to any resources? Also have you any insight as to what the current thinking is about Hadoop clusters - are people making the move to 40GbE to try and get good throughput or is it pointless. Our tiny 8 node cluster has recently got in a fluster due to having a 1GbE switch, an obvious fix is to get a 10GbE one - but will this help?

<comment><USER15> MPI programs and Hadoop will scale until the MPI latency becomes too high to effectively perform a data swap. When you look at the profiler on a good machine you see that 25% of the time is spent in MPI_recieve. When the time spent in MPI_receive goes up you are done - the task simply can't scale. Vendors like Cray and IBM sell machines that have low MPI latency. This happens in both hardware and software. The interconnect is fast (I think Intel baught it) and the MPI layer performs optimization for all the traffic. OpenMPI doesn't even come close to optimizing the traffic. Ethernet doesn't do direct DMA likes the propriety interconnects - this adds latency and jitter. I don't believe the Ethernet strategy can scale for such applications, primarily because the time to complete the step is the highest latency on the network. If one node jitters and takes 100micros, it doesn't matter much that the rest of the guys took 20micros. Anyways, benchmarks would help.

The smallest machines Cray sells cost about $500,000. If you want scalability you gotta pay. 8 nodes isn't a real machine.

</comment></comment></comment></comment><comment><USER17> Every few years the idea of a natural language / semantic / question answering search engine crops up again.

Natural language understanding is quite relevant for the crawling and indexing part of information retrieval systems and Google is very good at that. Just look at their quite formidable automatic translation software, which is a by- product of their ability to correctly map natural language concepts to strings.

The thing is: People just don't want to converse with a search engine as if it was a human being. Some library / scientific information retrieval systems tried to go in that direction, which resulted in retrieval systems that were just cumbersome to use.

Google nailed the search engine user interface quite some time ago and Peter Norvig is absolutely right when he says that users simply don't want to ask questions when searching. They're much faster at entering keywords relevant to their search intent because they've learned how to efficiently converse with search engines in their 'native' keyword language.

Hence, passing the Turing test is completely irrelevant for search and information retrieval in general. Even in mobile environments where due to the device's constraints a natural language user interface makes a lot more sense than on the desktop, software like Siri more or less is just some gimmick that in most cases is easily outperformed by more traditional input methods. Sure, asking Siri to 'Show me the way to the next whisky bar' might be fun at first but simply entering 'pub' and the name of the town you're in right now is still a lot more efficient. Again, I think Google nailed the user interface part with Google Now for mobile information retrieval as well. I don't want intelligent machines to pretend they're human. I want them to take a back seat and present me with the right information once it becomes relevant.

<comment><USER18> _Google nailed the search engine user interface quite some time ago..._

If there is one area of search technology where Google has contributed almost nothing, it is the search interface. The subjective user experience is virtually unchanged since the days of Alta Vista circa 1996.

<comment><USER19> Actually they fucked it up when they started messing with the perfectly working +,- operands.

<comment><USER13> \+ might have worked perfectly, but most people didn't use it, and of those who did use it most used it incorrectly.

([http://insidesearch.blogspot.co.uk/2011/11/search-using- your...](http://insidesearch.blogspot.co.uk/2011/11/search-using-your-terms- verbatim.html))

> we found that users typed the "+" operator in less than half a percent of > all searches, and two thirds of the time, it was used incorrectly.

Check my arithmetic but that means only 1 in 600 searches used + correctly; 2 in 600 used it wrong, and the other 597 searches didn't use it at all.

<comment><USER19> That's what they say, but it's strange disappearance directly around the time of Google+ says otherwise.

</comment></comment></comment></comment></comment><comment><USER18> The biggest obstacle to Google's progress in search is Google. They make virtually all of their money from advertising, including the same spam that pollutes their search results. Targeted advertising can only help so much, because in the end, advertisers don't just want to reach people already interested in their product, they want to attract people who _aren 't_. Google's dominant position in the online advertising market is an unreconcilable conflict of interest with their search users. They continue to dominate search not because they are technologically unbeatable, but because no one has figured out an alternative business model that makes search pay without corrupting it with advertising.

</comment><comment><USER20> we should stop thinking in monolithic terms - as if one company will be able to do it all in the global scale. Google seems to have mastered data centres and spiders, and will probably form a base layer for part of the next step towards humanity-AI. Maybe Watson will consume Google data, but maybe a thousand individual tuned AI like services will arrive - for booking flights and for negotiating mining contracts and ...

I think we shall soon see the end to the idea one organisation (based in SV) will be able to service all the worlds needs on a march towards AI - I suspect Google is as an organisation already straining. why not let markets flourish ?

<comment><USER21> I agree. Certain search terms relate to a single concept with a single authoritive source of information. A fireman searching for plans for a building on fire only really want a single answer (contrived example). Google is bad at domain specifics searches where you are looking for one answer. It is so easy to get trapped in obscure business listings, local news and press releases.

Google works well when there is no clear source of authority and the algorithm can make a judgement. Some searches have a definitive thing that you are looking for and the algorithm would need to know that source to give the right answers. We need more human input which can make search engines that give results that are shamelessly partial to particular sources of information (like patent searches).

</comment></comment><comment><USER22> Quality of search results has very little to do with market share. Had it been the case, Bing should have ad near equal share with Google and Ask should have had zero.

Google owns Chrome and Android which is basically 50% of web traffic.

<comment><USER23> How does this explanation change in light of the fact Google was way ahead of Bing when IE had majority market share?

</comment></comment><comment><USER24> When I first heard about Watson, I expected IBM put a version of it online for people to experiment with. If it's as good as they claim, it could be a useful tool and create good PR for them. I know the searches are much more resource intensive than Google's, so I wouldn't have minded if they needed to limit it something like 1 question/IP/hr.

</comment><comment><USER15> What if Watson just googles for the answers?

<comment><USER25> We could ask.

</comment></comment><comment><USER26> My knowledge of the actual workings of Watson is sketchy, but doesn't it devote a massive amount of resources to understanding natural language queries? Can it scale its ability to handle one question at a time to handling a billion queries?

And Google is getting much better at understanding syntax and will continue to improve.

</comment><comment><USER27> Google search itself is becoming Watson like, with the all the additions in the knowledge graph, and I think with Google Now google search will also have a lot more context. Watson can of course be a classical disrupter in search but Google isn't exactly inactive in this arena.

</comment><comment><USER28> ...yet another Wired article where the author can't be bothered to use synonymous nouns for the sake of intelligible readability:

"they could still resort to a simple PageRank-like algorithm as a last resort"

</comment><comment><USER29> The problem with search is that nowadays, people judge results quality by their similarity to Google results. So anything that doesn't look like Google output looks "off".

<comment><USER30> At this point, I judge search quality by the words I'm searching for appearing on the page the search link sends me to. I am starting to pine for the days of Alta Vista so at least I could include and exclude words with some thought it might work.

</comment></comment><comment><USER31> Is there something like Betteridge's law of headlines for headlines starting with "what if"?

<comment><USER32> Fortunately we rarely seen headlines starting with "what if", though I'm sure such law would define the answer to be "nope".

<comment><USER33> Or probably even "meh."</comment></comment></comment>


Base Your Business On An Irrational Behavior - <AUTHOR> http://statspotting.com/base-your-business-on-an-irrational-behavior/

<comment><USER2> None of the things the article cites are actually irrational.

In fact, the only thing that's irrational here is the article itself and the confused view of "rationality" that it relies on.

Having friends, and wanting to share messages and photos with them is perfectly rational, and so is finding an easier way to do that.

"An emotion is an automatic response, an automatic effect of man's value premises. An effect, not a cause. There is no necessary clash, no dichotomy between man's reason and his emotions—provided he observes their proper relationship. A rational man knows—or makes it a point to discover—the source of his emotions, the basic premises from which they come; if his premises are wrong, he corrects them. He never acts on emotions for which he cannot account, the meaning of which he does not understand. In appraising a situation, he knows why he reacts as he does and whether he is right. He has no inner conflicts, his mind and his emotions are integrated, his consciousness is in perfect harmony. His emotions are not his enemies, they are his means of enjoying life. But they are not his guide; the guide is his mind. This relationship cannot be reversed, however. If a man takes his emotions as the cause and his mind as their passive effect, if he is guided by his emotions and uses his mind only to rationalize or justify them somehow—then he is acting immorally, he is condemning himself to misery, failure, defeat, and he will achieve nothing but destruction—his own and that of others."

\- Ayn Rand, Playboy interview, March 1964

<comment><AUTHOR> Agree, the examples are not great. I started the post to highlight the possibility of looking for irrationalities but ended up quoting the wrong examples. Will do a follow-up soon.

Thanks</comment></comment>


Show HN: Readable.cc RSS reader - <AUTHOR> http://readable.cc

<comment><AUTHOR> So, I made this. It's a readable feed reader that promotes interesting content based on articles you vote for.

This is not a finished product, I'm trying this "release early" thing. I figured the timing is right with Google Reader disappearing.

Readable.cc is open-source, built on Swiftlet: <https://github.com/ElbertF/Readable.cc></comment>


Tiny websites are great - <AUTHOR> https://tinyprojects.dev/posts/tiny_websites_are_great <comment><USER2> I love this initiative in principle, but the instructions left a rather sour taste in my mouth. Create a Firebase app, download and install Node and run some arcane cli commands? For what? To upload a 10-byte HTML file somewhere?

Please, do yourself and us a favour and sign up for a free account on [https://neocities.org](https://neocities.org), and make a quirky website by hand for all of us to enjoy.

I half want to write a post like this but with dead-simple instructions, like "Open Notepad, write Hello!" inside and upload it to Neocities. Congratulations, you now have a website!"

A good addition would be a nice CSS stylesheet ([https://newcss.net/](https://newcss.net/) looks good, linked by sdan in his comment here) to get the site looking nice and mobile-friendly. That's pretty much all you need to make a simple website.

<comment><USER3> Not affiliated but I think Netlify offers a similar level of initial effort but with more room for later growth.

<comment><USER4> Yeah, they let you drag and drop a zip file to create a site, but is geared more towards companies/professionals. Neocities is more geared towards a community of independent creators, though, so I'd rather support/promote them for indie stuff.

<comment><USER5> That's a cool initiative. The HN in me wants to critique it a bit. Why no markdown or WYSIWYG editor? Is it because that would turn it into wordpress?

I feel like there's a place for a service that can,

* Host static content like netlify/neocities on a CDN

* Allow you to register a domain

* Choose a template and enter content with basic markup

This should be able to be done in < 5 minutes for a non-tech user. You'd think registrars would be incentivized to build such a service.

edit: ~~markup~~ markdown/WYSIWYG

<comment><USER6> WYSIWYG editors are universally bad, and so are Markdown ones. The benefit of Markdown is that you just write it in a text editor. You don't need syntax highlighting to use it effectively. Take reddit, as an example, which got millions of people to write perfect Markdown as intuitively as writing English.

<comment><USER7> It really depends on the editor. Some editors give you raw access to the underlying code and apply styles to it as you type, kind of like syntax highlighting. Some actually try to be rich text editors with a (usually restricted) Markdown input. You can guess which ones make me want to flip a table. (Hint: Slack, fix your editor!)

<comment><USER8> If you think Slack is bad, try [https://github.community/](https://github.community/).

<comment><USER5> > You ranked up to Ground Controller Lvl 1

I hate those undisableable social media accomplishments that come up as notifications, is Github.community based on Discourse or did it just copy their bad ideas?

edit: wow you can disable them in this one, amazing. I still hate it.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> >" Things have really changed since I began learning, and rightly so. Instead of coding in plain HTML, CSS and JS, I'm now using endless frameworks, modules and libraries to build increasingly more complex web and mobile applications. It's great, if I didn't use these tools my code would be an unmaintainable mess."

How sad that this has become the widely accepted narrative. There's a lot of value right now in NOT building things that way. Last week I had to deal with fixing another dev's mess on a stuck project. Big company website, but nothing fancy at all. Purely a marketing window. The amount of complexity he put into it by using Vue.js was insane for the scope of the project. INSANE. To do something as easy as changing the pages <title> tag we had to write an unjustified amount of lines of code. Framework-itis really is a bad disease, it not only affects your work, but it definitely clouds the simplest form of judgement, it appears. Then we have exactly this: someone who got a hammer and spent years treating everything like a nail comes to a reckoning, usually framed as a longing for the good old days when things used to be simple. Well, you know, things can still be simple, if you don't offload to unjustifiably complex frameworks the duty of understanding what's going on in your project. To be clear, I'm not at all against frameworks. I love and use some of them, but they're like a closet. If you are a tidy and organized person, your closet will be full of neatly folded clothes; if you're a messy person, it will still be a repository for heaps of displaced garments, ready to fall out as soon as you open the door.

<comment><USER10> I don't understand why changing a title tag would require any code. Is it the framework or the code?

(I don't know Vue, but this smells a bit.)

<comment><USER11> We had a similar scenario at my workplace, but with React rather than Vue.

We wanted an internal component to be able to change the page title, which ended up with a project to transition to using react-helmet. It ended up taking a few weeks before this project completed.

<comment><USER12> Which is nuts, because you can also just write your own little one-liner to manipulate the title

```ts

const setTitle = (t: string): void => document.title = t

```

<comment><USER11> Yeah, that would've been great but it was a shared codebase among many teams and one of the hard rules was no access to stuff like document :(

We also couldn't console.log in this codebase, it was very ideologically pure but it took ages to make any changes

<comment><USER13> Sounds to me more insane than pure

</comment></comment></comment></comment></comment></comment><comment><USER14> [https://jrimbault.io/citation_needed/](https://jrimbault.io/citation_needed/)

I made that _tiny_ website for evenings with friends. It works great. You enter a few names, hit the save button, you get a list with scores and a +1 button for each players. When you refresh the page the scores are reset. The most important feature is the _ding_. The ding makes it fun.

It's ridiculously small, but it brings lots of fun.

<comment><USER15> You have a bug where adding a player doesn't work the first time (from [https://jrimbault.io/citation_needed/](https://jrimbault.io/citation_needed/)) as it redirects to [https://jrimbault.io/citation_needed/?#](https://jrimbault.io/citation_needed/?#) and clears the player list. Then it works.

<comment><USER14> yep, didn't care about it :)

It's tiny, it's fun, it's _enough_. Keyword : enough. Yes I could add a preventDefault, but _I don 't care_. Really, I only entered the names of my friends once, it has been in my localStorage since, and it's only really meant to be used by me.

Fixed it.

</comment></comment></comment><comment><USER16> Yeah! I am with you on this. I've used nothing but HTML/CSS for all of my side projects for years. I manually create, update, and publish each page. Hell, I still drag and drop via FTP. It is indeed very fun.

Here's a screenshot of my latest project, nothing fancy, just starting to tinker with Tufte CSS and typography (Lyon Text and Concourse): [https://cln.sh/BzBD](https://cln.sh/BzBD)

<comment> ezequiel-garzon Looks great! Why not a link to the actual website?

<comment><USER16> Thanks! There's nothing to show yet. No domain, no essays, no pages. Just an early work-in-progress.

</comment></comment></comment><comment><USER17> Tiny websites are great!

It's interesting to note that the website content itself for this article is 5,045 bytes (HTML + CSS), but the analytics code (firebase-analytics.js) is 26,458 bytes, and firebase-app.js (whatever this is?) is 19,865 bytes.

Not a criticism; analytics is important & maybe the app JS is too. Just think it's worth bearing in mind that it's really easy to blow out your website's total delivery impact to users by several times with third party includes.

<comment><USER18> There are also "tiny" solutions for analytics.

I'm working on Plausible Analytics which is only 1.4 KB right now and provides a modern dashboard. It also doesn't use cookies and doesn't collect personal data so you're not required to show the cookie/GDPR prompts which would make tiny websites much less tiny.

See [https://plausible.io/](https://plausible.io/)

There's an issue on our Github which will help us perhaps reduce it to under 1 KB too. We're working on that [https://github.com/plausible- insights/plausible/issues](https://github.com/plausible- insights/plausible/issues)

<comment><USER19> You claim that using your analytics doesn't require user consent:

 _> "Plausible does not use cookies and does not collect any personal data. This makes us compliant with the different cookie laws and privacy regulations. It means that you are not required to annoy your visitors with a cookie notice if you're using Plausible analytics."_ [1]

 _> "Compliant with privacy regulations: Google Analytics places cookies and collects a lot of data from your visitors. You're required to have a privacy policy, to show a cookie banner and to obtain consent for GDPR. Plausible Analytics doesn't use cookies and doesn't track personal data so you don't need to annoy your visitors or worry about those prompts."_ [2]

It would seem you are collecting PII and processing it server side (?), e.g. calculate_fingerprint here [3].

Care to explain how that doesn't require user consent?

[1] [https://plausible.io/data-policy#plausible-is-compliant- with...](https://plausible.io/data-policy#plausible-is-compliant-with-the- cookie-law-gdpr-ccpa-and-pecr-out-of-the-box)

[2] [https://plausible.io/blog/blog-post-changed-my- startup#new-p...](https://plausible.io/blog/blog-post-changed-my-startup#new- plausible-analytics-individual-product-pages)

[3] [https://github.com/plausible- insights/plausible/blob/master/...](https://github.com/plausible- insights/plausible/blob/master/lib/plausible_web/controllers/api/external_controller.ex#L85)

<comment><USER18> This is what we do:

Instead of setting a cookie with a unique user ID, we simply count the number of unique IP addresses that accessed your website to determine the visitor count.

To enhance the visitor privacy, we don't actually store the raw visitor IP address in our database or logs. We run it through a one-way hash function to scramble the raw IP addresses and make them impossible to recover.

To further enhance visitor privacy, we add the website domain to their IP hash. This means that the same user will never have the same IP hash on two different websites. If we didn't do this, the hash would effectively act like a third-party (cross-domain) cookie.

Network Address Translation allows many unique users to share the same public IP address. For this reason we also add the User-Agent string to the hash, although we don't store the actual User-Agent string.

</comment></comment></comment></comment><comment><USER20> Mine[1] is rather tiny and simple. It is actually generated by the tree command in about a second. It's a port from the gopher protocol and is hosted by the venerable sdf.org[2]. I decided to pay an exorbitant $60 a year for an enhanced membership simply to have an https address and some other assorted goodies[3]...

[1] [https://every.sdf.org/](https://every.sdf.org/)

[2] [https://sdf.org/](https://sdf.org/)

[3] [https://sdf.org/?tutorials/metaarray](https://sdf.org/?tutorials/metaarray)

<comment><USER21> I was considering joining SDF, but I'm confused about the membership levels. What's the minimum level needed for static html hosting with a domain I already own?

<comment><USER20> This may be what you are looking for. An ARPA membership with a small annual fee...

[https://sdf.org/?faq?VHOST?01](https://sdf.org/?faq?VHOST?01)

</comment></comment></comment><comment><USER22> I was nodding reading this and then:

> No libraries or frameworks (the exception being analytics)

There has got to be a better way of collecting analytics than to inject a bunch of crappy JS from some company (probably Google).

<comment><USER23> with static sites server-side analytics are doable. You can still cookie the browser, record it to access log and you can get pageviews and uniques easily

<comment><USER24> Problem is if you're using a CDN it might not give you access to complete logs. Still there's at least one better free option than GOOG analytics IMO[0]

[0]: [https://anderspitman.net/20/#get-off-google- analytics](https://anderspitman.net/20/#get-off-google-analytics)

<comment><USER25> So? I have javascript disabled so a frontend analytics option also won't give you complete analytics.

It's a tradeoff, you get to decide if you run code on your visitor's computers without consent and get analytics that are wrong in one way, or if you run code on your server with your own permission, and get analytics that are wrong in another way and simpler.

<comment><USER24> Do you feel that the amount of error for those with JS disabled is similar to those going through a CDN?

</comment></comment></comment></comment></comment><comment><USER26> I think the premise of this blog post is flawed.

> During my time using frameworks I've become more and more out of touch with > the code I'm writing. For example, when I plonk down a button in the Ionic > Framework I get a beautifully engineered and designed button, but it also > has 10 CSS classes attached to it that I don't really understand. I > sometimes feel like the thing I've created isn't truly "mine".

That seems to be the nature of CSS utility frameworks. Composition over inheritance; or in this case monolithic element styles. Is the utility function to fetch elements from the DOM tree also truly "yours"? Where's the line drawn? I could get the text representation of the DOM tree and write my own parser? How about that?

> I therefore decided to go back to the basics and code my own tiny website. I > already knew how to go about it, you probably do too, it's really easy (if > you don't know here's how). However, I'd never actually done it, and I'd not > made a website without a framework in over a decade.

Ah! And there's the problem! Are you creating a website or an application? I do understand that this feels like a cleansing of sorts. But in my opinion doesn't reinforce the original argument.

I think the more experience you gain as a developer the more often you will come to the realization that technology evolves and also becomes more nuanced over time. When confronted with this fact of course the first instinct will be to feel overwhelmed and return to basics. Which if you're creating a mostly static website in this case is perfectly reasonable. But you can't be an expert in everything. Thus frameworks and tools emerge to alleviate some of the pain that stems from designing _applications_ not websites.

Which again reinforces another often quoted realization: the right tool for the right job.

</comment><comment><USER27> Most of the "small" designs and frameworks I've seen are quite large, in my mind. I just finished building a minimalist html/css template for some of my own projects. I'm starting to feel like this is some lost art form.

[https://neat.joeldare.com](https://neat.joeldare.com)

<comment><USER28> Your `pre` elements are set to `overflow: scroll;`. You pretty much never really want that. (And it looks terrible on platforms that still have real scrollbars instead of the iOS-style overlay indicators that fade away. It should be `auto`.

See [https://www.w3.org/TR/CSS21/visufx.html#propdef- overflow](https://www.w3.org/TR/CSS21/visufx.html#propdef-overflow)

<comment><USER27> I've updated this. Still looks the same on all my devices but hopefully it's an improvement for others. Thanks, again, for the tip.

</comment></comment></comment><comment><USER29> Tiny websites are indeed great. They load fast, and minimize the steps involved in publishing content. I think my sentiment however, practically (i.e: in a business, startup, big company) conflicts with two things/requirements:

1\. People who usually write content are not developers 2\. People tend to trust sites that are minimal like the one OP posted.

Content writers traditionally come from background where they are trained and use tools like wordpress. We are now asking them to write HTML. I believe Jekyll here is a good compromise. We can generate static sites using Jekyll while still allowing simpler tools pre-publishing.

Regarding my point #2. Not a week ago, there was a thread to discuss how cool Stripe's animations are. There were multiple conversations in said thread that attest to this fact. Many people look for a sense of branding on product or service based businesses and relate those to their legitimacy.

I think my sentiment for small/simpler sites is a pretty common one on HN, but I think it all boils down to who your users are and what they prefer.

</comment><comment><USER30> My personal website, [https://g5t.de](https://g5t.de) uses a custom directory- listing kind of framework I wrote - so it doesn't tick all of the requirements. It's not much, but it does its job kinda well (still lacking notable, deep and interesting content, sorry).

<comment><USER31> That is very nice, a little broken in some places: the [001]-how-to-not-build- a-router link doesn't work, you have to click the .md file, and your github link is broken

But it looks very nice and I love the idea.

<comment><USER30> Thanks for your kind words! I fixed the broken links. Maybe I should automate the creation of the readme.md files. :)

</comment></comment></comment><comment><USER32> I see that this is your first submission. I love that it is refreshingly original.

Now, there are two main steps to making a website public.

* Developing the website (idea, design, development)

* Hosting it (domain, email, host, server)

What you posted is great for emphasizing that the first step can be done in a very simple way, without any complicated frameworks.

The way you did the second part - hosting your site (Using Node.js/npm, Firebase, and npm package) - does not fit well with the simplicity you demonstrated while doing part one.

However, if considered as a how-to for building a tiny website using Firebase, it is awesome.

</comment><comment><USER33> >No libraries or frameworks (the exception being analytics)

No, analytics are not an exception. Don't put fucking spyware on your pages. I can't believe it's 2020 and people still need to be told this. It's _not_ okay.

<comment><USER24> Nowadays you can have your cake and eat it too. There are privacy-respecting free alternatives to GA.

<comment><USER34> Name your favorite?

<comment><USER24> GoatCounter. I did a writeup comparing a few options here:

[https://anderspitman.net/20/#get-off-google- analytics](https://anderspitman.net/20/#get-off-google-analytics)

</comment></comment></comment></comment><comment><USER35> I think the same idea can be applied to the backend as well, instead of creating a firebase account, and allowing someone else's code to magically serve your tiny website. Granted, its not as simple as
 Tiny Website
, but it is just as satisfying to build something on the backend that is "your own", as least in my humble opinion.

</comment><comment><USER36> > No libraries or frameworks (the exception being analytics)

Why? Why are analytics necessary? How does it matter for such a website?

<comment><USER37> It's nice to know if people are reading what you're putting out.

<comment><USER38> I have a (french) blog[1] having analytics for first years. I realize most page views where not necessary the ones I had the most fun at writing. It was sad to realize your next post would not necessary bring interest and you start to bring what you _guess_ peoples would be interested in, and not what you are interested at in the first place. It breaks motivation on the long run. Like if you where no more blogging for yourself.

I finally remove analytics and now write what I love without being to rationals. It brings far less pressure.

[1] [https://www.fevrierdorian.com/blog/](https://www.fevrierdorian.com/blog/)

<comment><USER37> I can appreciate that! I have some videos I've created that I've never once checked the view stats for. In that case, I'm just as happy not knowing.

Somehow I feel differently about articles I've posted, but to each his own.

</comment></comment></comment></comment><comment><USER39> I have been working on a tiny website aiming to teach Japanese using HTML/CSS and Emojis. It is hosted on Github pages. I take this opportunity to share it since I believe it is the kind of website that people miss.

[https://drdru.github.io/](https://drdru.github.io/)

The main problem I have is that despite some love for this type of website on Hackernews they are not really popular. Also, they are not accepted in Show HN.

</comment><comment><USER40> Tiny websites are great, agreed. The best thing about them? They can be deployed in a decentralized fashion and can protect the visitor's privacy.

This guide however, suggests using Google Analytics which tracks unsuspecting users' browsing history across almost the entire web.

It hosts the website centrally by a Google owned service (which provides even more tracking to Google). It suggests buying a domain name from Google.

Is this some kind of Google advertisement?

No, but no thanks.

</comment><comment><USER41> > 2\. As few CSS tweaks as possible > 3\. It must be fun to build

I personally enjoy messing with CSS, it's incredibly fun to try new things and give an otherwise boring page some life and expression. Obviously there is a fine line between tasteful design and obnoxious/unnecessary clutter but a simple website with some character via design is much more memorable that black text on a white background.

<comment><USER7> CSS 3 is absurdly powerful and, if you use semantic HTML, progressively degrades _really_ well. Putting just a bit of your touch on the content is a nice feature to take advantage of.

</comment></comment><comment><USER42> Since we're talking about tiny websites, and this seems pretty relevant:

If it's only static HTML and CSS, it's just a bucket o' files. You can store things like that on S3 for... I don't even know how little. A tiny amount. You will not find a cheaper hosting option than this.

I made this site on S3, using Svelte, which is intentionally the humblest, smallest step up from plain JavaScript HTML & CSS, at the link below.

[http://pitch-deck-svelte.s3-website-us-east-1.amazonaws.com/](http://pitch- deck-svelte.s3-website-us-east-1.amazonaws.com/)

Now, the one drawback here is that this doesn't have HTTPS, and you'd need CloudFront for that. This link covers how to do that (note: you should buy your domain on AWS, using Route 53, when following these instructions to make your life easier).

[https://medium.com/@sbuckpesch/setup-aws-s3-static- website-h...](https://medium.com/@sbuckpesch/setup-aws-s3-static-website- hosting-using-ssl-acm-34d41d32e394)

<comment><USER43> You will find a cheaper hosting option. GitHub and GitLab pages are both free for static sites. I've used both, they both are pretty painless. You basically click "make this a website" and tell it your URL. Automatically HTTPS, completely free.

<comment><USER42> Wow, I didn't know you can even hook up your own custom domains (looking at GitLab pages). That's pretty amazing.

<comment><USER44> Yeah, I've been using github pages for my personal site. It even supports HTTPS these days. I only pay for the domain.

</comment></comment></comment></comment><comment><USER45> I eventually added an editor that displays the html source in a textarea. Above it is a field with the file name, below is the submit button and a password field. (There also is a cookie req that I make manually and it does some IP checks when trying to save.)

After submitting it checks if there are links pointing at the (new) page. If those are missing the "success!" page gets a link pointing back at the editor with the index appended to it as the query string, the url that must be added and the page title. (the substring between <title> and </title>)

When clicked it loads the index into the editor and inserts a link into the html (so that I can move it around or type text around it)

That same functionality is reused by a bookmarklet to insert www links into pages. (it also inserts highlighted text from pages)

Except the save page everything is still static html.

</comment><comment><USER46> Managing a website and writing for it are two different activities to me. I prefer to do the latter in a WYSISYG editor. I don't want to fire up a terminal to deploy content changes.

With proper caching, the output of a CMS can be indistinguishable from a static site, but it can also include RSS, pagination, categories, tagging, responsive images, tables of contents, etc.

Take [https://allaboutberlin.com](https://allaboutberlin.com). In my browser, most of its pages load faster than the tiny website above. It has a big header image, custom fonts and other features. You can achieve great things with HTTP2 server push, static caching and gzip.

You should definitely consider making simple, fast websites because they're great for visitors, but how you produce the HTML doesn't matter.

<comment><USER47> RSS, pagination, categories, tagging, responsive images, ToCs - all these things work just perfectly in static sites.

<comment><USER46> Sure, but they need to be generated by some sort of framework, somewhere. If your definition of a static site includes framework-generated index pages and page structures, aren't almost all websites static already? Making them tiny is just a matter of writing better templates, not picking more obscure frameworks.

<comment><USER47> In my books the difference lies in how the HTML is generated. In case of static sites you generate it only when you rebuild the site after changes. In dynamic sites you build it dynamically on each request. Sure, you can cache the hell out of it and have a feeling that it's the same, but the truth stays that perhaps you're doing 50 SQL queries for a simple "welcome on our site" landing (something I actually witnessed some years ago). And with caching you're achieving the result with adding another infrastructure layer on something that could have been dead-simple from day one.

</comment></comment></comment></comment><comment><USER48> I tried to apply the philosophy of keeping things as simple as possible while writing [https://saityi.github.io/sml-tour](https://saityi.github.io/sml-tour)

Initially, I wanted no JS and for it to look good in a text-based browser like links, too, but I've strayed from that a bit. Syntax highlighting of the code examples was easiest with a javascript include, and the TOC is a mess hidden by CSS, so it looks particularly egregious in text-based browsers.

The website is still functional without JS and text-only, though, and without the favicon and syntax highlighting it comes in at ~4kb to load a page, which I'm happy with; with them it's closer to 40kb, which isn't the worst.

<comment><USER7> Why not do the syntax highlighting beforehand instead of on the fly? For example, I use Rouge to highlight all my code as the site is generated.

<comment><USER48> Now complete -- thanks again for the suggestion! I never liked having to include that bit of JS.

<comment><USER7> It looks great!

</comment></comment></comment></comment><comment><USER49> 50 internet points to whoever guesses who I designed my simple portfolio site to impress (i.e. here's my shameless plug).

[https://whoami.dijksterhuis.co.uk](https://whoami.dijksterhuis.co.uk)

\- Pure html and CSS (except embedded iframes like soundcloud).

\- hosted on GitHub.io

\- domain name from AWS

Only "server side" thing I had to do was put a special file in the GitHub repo.

Super cheap too. I have a free pro GitHub account (student ftw) so the only real cost is the AWS hosted zone for dijksterhuis.co.uk

I also have subdomains I set up for machines I SSH into because I'm that lazy.

</comment><comment><USER50> Yeah, following the same principles with [https://dumbprojectideas.com/](https://dumbprojectideas.com/)

<comment><USER31> Hmm, "A marketplace for golfers" I'm not sure that is an actual bad idea.

</comment></comment><comment><USER51> How far down the abstraction tree do you go before something is 'pure'? Programming on the whole is at a much higher abstraction level than ever.

Maybe what people are really looking for is simplicity, but this changes depending on the complexity of your project. Therefore the question becomes, "What is the best level of abstraction for this project?"

That changes every time you do something new.

</comment><comment><USER52> This is exactly why I was so excited that so many people found [https://news.ycombinator.com/item?id=23220081](https://news.ycombinator.com/item?id=23220081) interesting.

I do HTML from scratch and Flask w/HTML templates at most. Adding a couple of CSS files is all I'm looking towards, not a bunch of weird React code (which imo looks ugly).

</comment><comment><USER53> I love the original thinking in this post. If there was no React/Angular/VueJS, how would YOU design ANY system to help you code faster and more maintainable? That what I'd love to see: more original ideas to solve complex tasks, and not stopping at the first idea coming to mind.

BTW: I believe tailwindcss is fantastic at achieving and helping with the OP's frustration.

</comment><comment><USER54> I hope this keeps the author more encouraged to write, because as usual, this is the first and the only post on their blog.

</comment><comment><USER55> For me the biggest requirement is > 3\. It must be fun to build

for me that requires a level of abstraction, I don't want to be monkeying with HTML if I don't have to, I just want to write the damn article. That's why I use Hugo, I feel like it hits a fantastic balance between speed for the user and ease of maintenance for me.

</comment><comment><USER56> Along the same vein, I've been working on a Vi-like editor for creating webpages [0], and if anyone's looking to create a tiny website, it's worth checking out.

If you enjoy using Vi, you'll likely have a blast using this one.

[0] [https://vivpage.com](https://vivpage.com)

</comment><comment><USER57> I've been yak shaving my website to try and get it to load as fast as possible: [https://cetra3.github.io/](https://cetra3.github.io/)

I did cheat a little bit and used SpectreCSS but have really tried to squeeze down the page size as much as possible.

<comment><USER46> 29 milliseconds. That _is_ fast.

</comment></comment><comment><USER58> Recently I decided to build the next version of my website by going back to the basics. [http://kyle.simukka.com](http://kyle.simukka.com)

Still unsure of what the content and goals are, but it has been a lot of fun to work on a very simple website.

</comment><comment><USER59> Taper is a literary/artistic venue for very small websites (less than two Kilobytes and no links to external resources):

[https://taper.badquar.to/4/about.html#submit](https://taper.badquar.to/4/about.html#submit)

</comment><comment><USER60> Really awesome idea! I ended up following suit and whipped together [http://kojichamber.com](http://kojichamber.com) to put out the list of things I used to build a fermentation chamber and the nuances of one.

</comment><comment><USER61> Really love building tiny projects like these. Had built a simple online code editor a long time ago for exactly these types of projects. [http://codecast.me](http://codecast.me) (not optimized for mobile yet)

</comment><comment><USER62> Just a nit: Using "max-width: 600px;" leaves enormous white margins on either side of the text, when browsed on larger monitors. I wish CSS writers would stop trying to guess the width of my screen.

</comment><comment><USER63> Reminds me of the 90s when I first started out. In a way it's a shame that the basics have been forgotten, and the first step taken to develop a website is a cli app to install a load of boilerplate.

</comment><comment><USER15> I think a better term should be lightweight, usable and performant. The framework shaming mentality is getting quite old.

Also, the portfolio website of the author is the opposite of tiny, with a 3.6mb load.

</comment><comment><USER64> Ugh, how I loathe the term "full stack". Many who claim this have attended a 12 week crash course where they're armed with the programming equivalent of heavy weaponry and then turned out onto the world to "engineer" websites that are bloated, slow me-too creations with background video, fly-in scroller elements, and everything else that bogs down even the most powerful PC.

"Many were increasingly of the opinion that they'd all made a big mistake coming down from the trees in the first place, and some said that even the trees had been a bad move, and that no-one should ever have left the oceans." \- Adams

</comment><comment><USER65> Why not go a step ahead and host it on a raspberry pi from your home. Then one could copy the text file directly to the public folder or create the file in the rpi itself.

</comment><comment><USER66> I really like the concept lets say you want to include a code snippet does it support the syntax highlighting and do you write a blogpost in plain html or markdown

<comment><USER16> You can always write in Markdown, say with iA Writer, then export to HTML. I typically write offline, then type and revise on the computer, then copy paragraphs over to Sublime. Code snippets and syntax highlighting done with CSS.

<comment><USER66> I see

</comment></comment></comment><comment><USER67> Can anyone recommend a good WYSIWYG editor (for non-devs) for making static sites that is not tied to hosting?

ie. I just want to output a folder of /html.

<comment><USER68> Maybe try publii[1]

[1][https://getpublii.com/](https://getpublii.com/)

</comment></comment><comment><USER69> I liked it it's very well articulated and seems promising I just had a new years resolution with the same goal. Keep going Ben!

</comment><comment><USER70> The funny thing about this website is the page finishes loading before my phone OS finishes the animation to switch to the browser.

</comment><comment><USER71> That's what I did with my website. Still tweak it every now and then, but it's nice because 99% of the code is mine.

</comment><comment><USER72> Are all these projects targeting this particular buche within HN? Soon as they see this design, people are gonna bounce.

</comment><comment><USER73> No libraries or frameworks to make development easier, but still analytics to help Google spy on readers? Pass.

</comment><comment><USER74> In fact you don't really need to depends on third party to do analytics as well

</comment><comment><USER75> Why take so many steps to do something so simple? That defeats the whole purpose

</comment><comment><USER76> I dig the concept, but for ease, firebase-tools, node?

Use netlify! Or s3 bucket w hosting

</comment><comment><USER77> Everything on this website is mine! ... Uses Google Firebase to host.

</comment><comment><USER78> "Did Not Connect: Potential Security Issue"

How do you visit this site?

<comment><USER79> I got that, but it was from the office firewall considering it to be a malicious site

<comment><USER80> My corporate network uses Cisco and it seems to block any newly set up website.

</comment></comment></comment><comment><USER81> If only there were a search engine for tiny websites.

<comment><USER82> If every tiny website linked to at least two other tiny web sites using something that a crawler could recognize it would be easy.

Alternatively, is there a heuristic that reliably classifies websites in to tiny/not-tiny?

How could we get this started?

<comment><USER83> you might want to try wiby.me

<comment><USER82> Thank you. Looks interesting.

</comment></comment></comment></comment><comment><USER84> Would love to have some simple stack automated.

</comment><comment><USER85> Welcome to the 90's, have a rad time.

</comment><comment><USER86> I've been messing around with a personal site hosted on S3. Does anybody here like any small UI frameworks that they would recommend?

</comment><comment><USER80> Make a tiny website, just with Node and Firebase, lol.

<comment><USER87> Can you please make your substantive points without being a jerk? We're trying for a bit better than that here, and it's all too easy to come across that way, even if you didn't mean to.

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

[https://news.ycombinator.com/newswelcome.html](https://news.ycombinator.com/newswelcome.html)

</comment></comment><comment><USER88> They are great but they are very bad for seo, so they are vastly underutilized.

<comment><USER89> Why are they bad for SEO? The author seemed to be talking more about CSS and JS rather than content - does not using bootstrap or ReactJS mark you down on search results?

<comment><USER90> IMHO, SEO is just shorthand for SnakEOil.

If gaming search engines is your Brad-and-butter, is your idea really _that_ novel?

<comment><USER34> It's not about gaming them anymore.

It's about structuring pages and content in such a way that Google et al believe works best for the reader.

Due to Google-side analytics, it's also about bounce-rates. This leads to both more in lengthy pages with depth, as well as lengthy pages of bullshit.

</comment></comment></comment></comment><comment><USER91> >It's your little corner of the internet to do as you please with. > >Follow me on social media: > >Twitter Instagram

Really makes you think huh?

<comment><USER92> Everyone knows solo blogging is lonely. That's why RSS is valuable, and the indieweb folks have tried to make new social protocols.</comment></comment>


Mp3.com Founder Talks Radio Search and Copyright Lawsuits - <AUTHOR> http://fortune.com/2015/11/24/mp3-com-founder/ <comment><USER2> Pretty cool idea, yet I just tried it out and no radio station loaded/played any of my choices.

He complains that Google was victorious in their similar copyright lawsuit. Well that's because they are Google and have way more money then Michael Robertson... whom I'd enjoy meeting!</comment>


Ask HN: What is your experience with smartwatches? Is it worth it? - <AUTHOR> I am thinking of getting Fitbit for my sleep tracking and fitness. Still haven't decided. What is your experience with smartwatches? Which one would you recommend? Is it worth it in your opinion? <comment><USER2> I bought a FitBit Inspire HR earlier this year. Overall I've been underwhelmed. Here's my breakdown of the features:

\- Sleep tracking. Very useful, if a bit shallow. Revealed issues to me that I'm working on now.

\- Exercise tracking. The manual stuff is fine, but the automatic tracking is bad. Sometimes it thinks a car ride is a bike ride. Doesn't pick up long walks half the time. My friend uses the built in stuff on his Android phone and it seems to work better.

\- Heart rate monitor. All it gives you is a crappy line graph. Doesn't seem very accurate. This feature is too shallow to be useful.

\- Moving reminders. All you can do it set hours and days for a 10 minute reminder before the end of an hour. I don't even notice the reminder most of the time. Its inflexibility makes it pretty useless for me. More robust reminders and a calendar integration would probably help.

\- Weight tracking. Not really helpful to me, as I weigh myself each morning on a regular scale.

\- Water intake. Never used it.

\- Calorie tracking. The UI isn't very helpful if you cook your own food. The calorie tracking display is often wrong and contradictory. I filed a detailed bug report and linked a bunch of online forum posts with the same problem, to get a canned response about reinstalling the app.

\- Step tracker. I drum on my desk alot and it mistakes it for steps. This makes it really inaccurate for me.

I'll probably keep using it till it dies and look at other options like Oura.

</comment><comment><USER3> I have owned a Fitbit Alta for over 2 years. When I got it I wore it all the time, except when it was charging. The strap broke after 3 months, bought a replacement strap and that is now held together with twine. Now I only wear it when going for a long walk, i.e. over 100 minutes.

The sleep tracking function was OK, but I think it is not robust enough to be worn 24x7 (less the 5-6 hours it takes to recharge). From various tests, the step counter seems to be in error more than the claimed 5%. I still use the phone app to track my weight using a conventional (non-Fitbit) digital scale and entering the values manually most days.

It's one of those techy things. When you don't have one you think of all the benefits. After months of ownership the novelty wears off and it is all rather mheh. Fitbit keep sending me emails to upgrade to their latest and greatest. Seriously, you can buy a Seiko Kinetic watch for the price of a low end Fitbit and the Seiko will work for decades without even needing a new battery. Why keep buying ever more expensive smartwatches?

</comment><comment><USER4> I bought an Apple Watch 4 back in February and by May had stopped using it entirely. I wanted to use it as a complete replacement for my cell phone, and I think the main thing that kept me from doing that was 2fa codes.

You have to charge most smartwatches fairly often, and most people charge them at night, so sleep tracking is difficult. Plus I've read that some of them don't do sleep tracking very well, and I can confirm that with my experience with the Apple Watch 4. It would indicate I was asleep when I knew I was awake (like to use the restroom in the middle of the night), and would indicate I was awake when I'm pretty sure I was asleep.

I bought a cheap-o Mi Band or whatever it's called, and was using that for sleep tracking. It was like $25. I would suggest you start with that. Their Mi Smart Band 4 advertises that it tracks sleep, so maybe it does a good-enough job?

<comment><USER5> How did the 2fa codes stop it from working for you? I didn't follow that piece.

<comment><USER6> Think he's saying that it can't replace having the phone around because of a 2fa app that only the phone can use.

<comment><USER4> Exactly, thanks for clarifying my vagueness :)

</comment></comment></comment></comment><comment><USER7> What I want is a way to collect heart rate and activity, ideally without a display, as I'd like to continue wearing my nice Swiss automatic watch. This device should stream all the information into the iOS health app, I explicitly do not want to store it off-device on some vendors cloud I have no idea if they are long-term trustworthy.

The closest I came to it was something from Garmin, rather small but with a display. I stopped using it as it became apparent that their data privacy policy was awful, I either could consent to everything or their app would basically be useless. This is over 1 ago, they might have changed the policies, don't know.

I have surrendered to the market now and got an Apple watch. It at least ensures that the data is not spread to additional companies, as apple has the data anyway. It's a nice product, but honestly mostly a gimmick for me.

</comment><comment><USER8> i've had a middle of the road garmin for a few years now. What watch you want depends what you want out of it. I cycle daily and like to have the information available for how long my commute is, what the weather was like (though the wind speeds are often very off).

It works nicely as a watch too, though unless you pay top whack they aren't very fashionable looking.

I don't care much about apps, but I do care if it can connect to other equipment (like a rowing machine or a turbo) so being ANT+ compatible is important to me.

</comment><comment><USER9> If you only want to use it for sleep tracking and fitness and don't care about the other smart watch features, look into Whoop. You pay a monthly fee instead of up front but it is a much better fitness and sleep tracker than any smart watch I know of.

Bonus: You can charge the whoop while you wear it so you don't miss out on sleep tracking as is mentioned in other comments.

[https://www.whoop.com/](https://www.whoop.com/)

</comment><comment><USER10> I have owned 3 different smart watches, including android wear, cheap chinese fitness bands... My gf got a fitbit charge 3 for a health study and I decided to get one as well. Sleep and hr tracking is the most accurate from what I tried, I get notifications and battery lasts a week+ plus water resistant overall is the only wearable worth using IMHO. I'm happy with it and would recommend.

</comment><comment><USER11> I bought one to try for only sleep tracking, the FitBit Versa. It tracks sleep very well and shows you when you were awake or in deep sleep. However, my only complaint with it is that some of the data is hidden behind a premium subscription. I already paid for the FitBit and now they're taking my data and trying to sell it back to me? No thanks. For this reason, I'll be returning it after I've made some adjustments to my sleep.

</comment><comment><USER12> I've got a Pebble color that still works thanks to rebble.io.

For me it's got the best balance between features and simplicity.

Any more features and the battery (life or size) would be worse.

Sleep and step tracking is average, notifications are just right.

I'm hoping a reasonable replacement surfaces before it dies, and am still sad Fitbit destroyed this product, and won't be considering any of their products for that reason.

</comment><comment><USER13> I have Garming Forerunner 235 and have had it for the last 2 years or so. I wear it daily plus on all the exercises. It good for running, hiking, cycling etc. It has built in GPS also which is nice. Battery lasts about week when not using the GPS. Overall im very satisfied with the watch.

In the future I would probably get more high end Garming so I can have my cycling route on the watch to follow it.

</comment><comment><USER14> I tried the first smartwatch from Samsung, but in the end, I switched to Xiaomi MiBand for daily monitoring of sleep, steps and receiving notifications as it's small and lightweight and Polar Sport Watch for sports

</comment><comment><USER15> My friend is very active and loves his fitbit. I am not very active and got bored with mine and got a new watch. Experience will be in the eye of the beholder :-)

</comment><comment><USER16> I've never owned one and don't plan to. I don't need one more device strapped to my body distracting me every ten minutes...

</comment><comment><USER17> I had an Apple Watch Series 3 back when they came out and ended up returning it. It actually had a fault too, but I chose to take the refund rather than a replacement because I didn't find myself liking it so much.

I initially went for it for stuff like notifications and hoping it would make me more productive and help me track my time better. Ultimately, I think the ecosystem has potential but it's in its infancy currently.

Main good points, though:

\- Fitness tracking. If you do things like running or swimming you'll benefit from the watches. Most useful functionality is for fitness.

\- Elderly people. I think the functionality for falls, although it seemed like a joke to some, can actually be pretty useful for older people and encourage more independence.

I think it has the potential to be useful in more areas:

\- Health. I think the heart rate and ECG is genuinely beneficial. Many people have cardiovascular conditions or are on medication and doctors advise them to take regular checks of heart rate, blood pressure, etc. But in my experience with the Series 3, the heart rate functionality was a mess. My HR was around 65, whenever I opened the app on my watch it would start at 120bpm and slowly go down to my actual HR. It would log all the results in the watch app, even the very incorrect readings of 120bpm. I hope they fixed this since.

\- Sleep tracking. The Apple Watch doesn't currently have native sleep tracking, though 3rd party apps exist that I've never tried (they may be hit or miss). I'm not sure how accurately a watch can track sleep data anyway. Rumours suggest the Series 6 may have sleep tracking. I think this would be useful - my sleep sucks often and I'd like to have more data on it.

\- Notifications. One of the main reasons I got it, but it's not very useful. It doesn't save any time compared to just looking at it on your phone, and you often can't do much about a notification on the watch.

\- Reminders. Medication, water, movement. I never used this functionality on the watch, if it has it, but for people in desk jobs, taking medication, etc., I think they're pretty useful.

\- Authentication and identity. It already has Apple Pay, and it can unlock your Mac, but I'd like to see it go further. I think it'd be a good way to conveniently replace a wallet.

\</comment><comment>----

Right now, I would only get a watch if you're into fitness, to be honest. I think they have promise, but aren't there yet. Perhaps stuff has changed since the Series 3, but from the updates I've seen I think it's still not there yet.

</comment><comment><USER18> I got an Amazfit Pace 3 years ago. Cheap watch with strava sync. It made me into a weekend runner.</comment>


Scott Adams responds to fervor over his use of PlannedChaos alias - <AUTHOR> http://dilbert.com/blog/entry/planned_chaos

<comment><USER2> It has been an interesting few months looking at Scott Adams. I think he has been failing at presenting a PR facade to the internet and has actually been saying his thoughts and feelings. It is refreshing to see a real person, who is imperfect, who harbors opinions I think crazy mixed with those I think intelligent. It reminds me of learning about Orison Scott Card's political views after reading and loving his books, but I think Scoot Adams is a lot less crazy and more real of a person.

Welcome internet, to a real person, who normally you like, but occasionally does things you do not. This is normal. I know you have been spoon fed PR facades of people for most of your lives when consuming media, welcome to a brave new world. I like it.

<comment><USER3> ... Scott, it's you? ;)

</comment></comment><comment><USER4> Ugh, try to double-click to highlight text on his blog. Some terrible 'helper' sharing app by meebo.</comment>


The Dangers of Book Learnin' - <AUTHOR> http://jobtipsforgeeks.com/2013/05/17/booklearnin/

<comment><USER2> Unfortunately I haven't had much benefit from having code samples out there. Interviewers will rave about my work, and say they're really impressed by my code, but then I still get grilled in the interview and when I mess up writing a regex parser on a whiteboard somehow they assume I can't code.

I always wonder who they think wrote all my projects?

But my last interviews were several years ago, maybe the industry is moving away from that?

<comment><AUTHOR> I've been recruiting for 15 years, and never has it been more important (or expected) to have some samples. Many clients expect to see code samples before even agreeing to interview or phone screen. I think you'll see the difference next time you interview, and you may be forgiven more often for small errors in live coding demos.

<comment><USER3> What do you think is the best way to present your programming portfolio?

<comment><AUTHOR> That really depends on what it is and the scenario. If you are applying to a job, including a GitHub link on the resume or 'cover letter' (email body) does the trick. Showing up with a laptop that has your code samples could also be effective for an interview. If you ask a more specific question I may be able to give a better answer, but generally giving them access to code you've written in any form is better than no code portfolio at all.</comment></comment></comment></comment>


Something Rotten in the Core - <AUTHOR> http://www.codersnotes.com/notes/something-rotten-in-the-core/ <comment><USER2> It seems like commenters here on HN are caught on the point that GDB _does_ provide a reasonable machine interface. That's not the author's point; responding specifically to that fact is missing the forest for one mis-labeled non-tree.

Here's two paragraphs from later on that sum much better:

> We've seen it hundreds of times in all kinds of software. Functions that > return bool instead of an error code. Where did the precise error vanish to? > Poof, it's gone! What used to be a useful error message became false, and if > you're lucky you'll get a generic "Unexpected error" appearing on screen. > And that's if your program is using a library. If it's calling out to a > command-line worker, the most likely case is it won't get checked at all and > will just get printed out into a log file you'll never find, and then never > seen again.

> (image) Homer's typing bird: [http://www.codersnotes.com/notes/something- > rotten-in-the-cor...](http://www.codersnotes.com/notes/something-rotten-in- > the-core/pecking.gif)

> We're making systems that are fragile, because they're just glued on rather > than bolted together. We're wrapping complex things up a wrappers that don't > take the same responsibilities as the things they rely on. Like Homer's > pecking bird in the Simpsons, they work just fine when everything is as > expected, but when the slightest change in situation happens then everything > breaks.

I think the article is worth reading in full.

<comment><USER3> I agree that GDB isn't substantive to the author's point, it's merely an example and validity of the argument as a whole isn't contingent on that one example.

However, I guess I'm not clear about the argument as a whole. The author is essentially claiming, "We write wrappers that are shoddy in that they don't consider failure cases."

That is true. What the author doesn't address is: what's the solution?

If the answer is "Code better," or "Think more," I feel like that's a straw- man.

I think the real question is how can we make a wrapper (e.g. a complex setup script) provide visibility into its problems (permissions issue, harddrive space, network issue, etc) without doubling the work involved?

</comment></comment><comment><USER4> I couldn't tell whether the author was making a good point, because their facts were badly askew.

Historically, there were multiple UNIX debuggers. It's true, gdb largely exterminated them (and anyway, when people say UNIX they often mean linux+freebsd+macos, where gdb was the defacto standard). However, there is now a second common UNIX debugger from the llvm/clang alternate universe (lldb).

In the very bad old days, debugger wrappers did drive gdb via the exact same interface that a human would, with all the terribleness that entails. but gdb has gone through several iterations of "GDB/MI", alternate APIs for "machine interfaces"; the current iteration seems to be "mi2".

Besides this, GDB has long since standardized the "debugger stub", which does low level operations like reading memory from the debugged process, starting/interrupting, etc.

As you can see, there are a plurality of interfaces to the debugger, several of them oriented specifically to use by other programs, rather than being repurposed human interfaces.

Besides this, gdb has also become internally extensible in Python, which is pretty great.

In short, invoking gdb as a subprocess is A LOT more like using an API than it is like trying to parse the output of "ls -l" as the only way to get a listing of files and their properties. It just happens to involve a second address space (a third, when you count the debugged program). It's just stream oriented, and doesn't look like JSON (or name your preferred hotness) because it was developed independently of, and quite possibly before, that preferred hotness.

(I'm pretty sure lldb's interface is also designed to be driven by other programs from the start, and it may also support a same-address-space embedding mode, but I don't have any actual experience using lldb, I just know it's out there)

<comment><USER4> "The LLDB debugger APIs are exposed as a C++ object oriented interface in a shared library. The lldb command line tool links to, and uses this public API… The entire API is also then exposed through Python script bindings which allow the API to be used within the LLDB embedded script interpreter, and also in any python script that loads the lldb.py module in standard python script files. See the Python Reference page for more details on how and where Python can be used with the LLDB API."

<comment><USER5> And therefore three is no stable ABI because C++ lacks one. Maybe in the future...

</comment></comment></comment><comment><USER6> This is a classic problem with open-source GUIs - they're a wrapper around a command-line program. Such programs typically have no clue what happened at the command line level - they just present whatever the command line program prints to the user.

A few days ago, there was a UI designer on here who was looking for an open source program to work on. I suggested "git gui". Git's default GUI is a Tk wrapper around the command line program. Lots of buttons, corresponding to command line options. No understanding at the GUI level of what's safe, what's useful right now, and what the state of the project is.

The original Macintosh deliberately lacked a command line, so programmers had to figure out a usable GUI for everything. They had the right idea.

One of the original design misfeatures of UNIX is that programs take in command line parameters and environment variables, but all they give back is a numeric error code. If they gave back a list of strings and a set of name/value pairs, and there was some convention about what should come back, scripts and GUI front ends would be less dumb.

<comment><USER7> They also write a descriptive message (and nothing else) on stderr as a convention.

<comment><USER6> Which is usually useless to a GUI or a script.

<comment><USER7> Other than for informing the user what went wrong (which is specifically one of the things you called out as a problem)

</comment></comment></comment></comment><comment><USER8> > We've seen it hundreds of times in all kinds of software. Functions that > return bool instead of an error code. Where did the precise error vanish to? > Poof, it's gone!

A thousand times yes.

Earlier this year, two of us spent a full day debugging a problem with some of our automation. Our team has pretty good automation, for the most part, but this particular problem was in kind of a dark corner. A shell script in the automation would start up a process in the background, and then send commands to that process. The background process could be slow to start up at times, so to deal with this, the commands running in the foreground had long timeouts if any. Guess what happens if the background process dies?

Well, the shell script doesn't care, that's for sure, it wasn't watching for error codes in background processes. It was a bit of an adventure following the path from the foreground commands to the missing background process, and finding the log files for the background process.

It's one of the things I like about writing this quick-and-dirty automation in Go--the error handling is so _explicit_ that you'll usually end up with good logs explaining what went wrong and what the program was trying to do at the time. Much better than dealing with shell scripts. Shell scripts are quick to write but you're often left in a bad position when they fail in unexpected ways, or even in expected ways.

(The actual bug we hunted down was traced to one missing line in a configuration file, but the problems with that piece of automation are far larger.)

<comment><USER9> So what you mean to say is that the problem is not so much that there isn't any error reporting, but that, in C, it's being ignored ?

Never do

      printf("here's a number: %d", 11);

Always do:

      int attempts = 0
      int ret = printf("here's a number: %d", 11);
      while (attempts++ < max_attempts && ret < 0) {
        switch (ret) {
          case EINTR:
          case EAGAIN:
            ret = printf("here's a number: %d", 11);
          default:
            // At this point you, as a programmer, should STOP AND THINK.
            // What would be a reasonable reaction here ? How will it affect
            // everything else the program does ? What is the correct way to
            // proceed ?
            //
            // P.S. Anyone doing "return -1;" at this point should be taken out and shot.
            // and yes, that's the C equivalent of what every Go programmer always does.

            panic("printf error", ret); // for example, crash the program.
        }
      }

Needless to say, you should do this on EVERY printf statement.

There. Isn't explicit erroring great ? NO IT ISN'T.

Needless to say, this has an almost direct translation to Go. Does anyone do this ? Of course not. In Go, like in C, like in shell scripting, in the vast majority of programs nearly all errors are ignored.

That's why exceptions are so very superior to explicit error handling : it accomplishes many things :

1) it alerts the user that an error occured. "Explicit error handling" like C, Go, most C++, ... do will simply silently attempt to proceed, likely turning a small error or a typo into a disaster or catastrophe. Silent database corruption, here we come !

2) It provides information about where the error occured. Stop me if this sounds familiar: "when an error is printed, and the program crashes, I download the source and grep it for what I think is a unique word in the error message. When it turns out it isn't I get cranky. When it turns out there isn't a unique word in the error I just sit down in a quiet corner and softly cry".

3) It allows for "layered" error management strategies. I'm not saying it gets it up to OCaml levels, but it is far superior to C or Go error management. In the main function, you catch any Exception for the various parts of the program you start, log it in a reasonable manner, alert if necessary, and restart the relevant portion of the program. Inside the parts of the program you catch finer grained exceptions with more explicit management.

4) it's far more concise.

So "explicit" error management ? Let's just be truthful here (just look at Github examples of C and Go code): it's really just ignoring errors.

You can find coding errors involving ignored errors in the Go standard library in minutes. Examples:

1) [https://github.com/golang/go/blob/master/src/bufio/bufio.go#...](https://github.com/golang/go/blob/master/src/bufio/bufio.go#L239)

2) [https://github.com/golang/go/blob/master/src/bufio/bufio.go#...](https://github.com/golang/go/blob/master/src/bufio/bufio.go#L270)

3) [https://github.com/golang/go/blob/master/src/flag/flag.go#L5...](https://github.com/golang/go/blob/master/src/flag/flag.go#L528)

So even the Go core developers themselves can't be trusted to not ignore errors.

<comment><USER8> > So what you mean to say is that the problem is not so much that there isn't > any error reporting, but that, in C, it's being ignored ?

...huh? No, I'm not saying that. I'm saying that if you write a shell script there's a risk of not detecting errors that you care about. I also said that I _like_ to rewrite these overgrown shell scripts in Go, which is apparently a Wrong Opinion and some bad C code will somehow convince me of this.

First, the nitpicks: EAGAIN should not be handled here. EAGAIN shouldn't be retried in a loop, that will just spin the CPU for no good reason. If printf() returns EAGAIN it means that you made stdout non-blocking and hopefully you would know if you did that, but that's unusual except in language runtimes. There's also a missing break; in the switch.

Beyond that, I don't really care about error handling for printf() when I'm logging output or running interactive programs.

Compare this with the behavior for C++:

        #include <fcntl.h>
        #include <iostream>
        #include <unistd.h>
        int main() {
            close(STDOUT_FILENO);
            std::cout << "Hello, world!\n";
            return 0;
        }

Try it yourself.

As an example of the errors we see in our logs, they often look like this:

        some_file.go:399: could not realign warp core coupling b502:
          plasmaManifold.PhaseInterplex(): host not found: m19d.eng.ncc1701d

The "ignored errors in the Go standard library" aren't really ignored errors. Look at the bufio code a little bit more closely, you'll see that those errors are properly returned.

<comment><USER9> > First, the nitpicks: EAGAIN should not be handled here. EAGAIN shouldn't be > retried in a loop, that will just spin the CPU for no good reason. If > printf() returns EAGAIN

Manpage seems to imply that's not the only reason:

[http://man7.org/linux/man-pages/man3/errno.3.html](http://man7.org/linux/man- pages/man3/errno.3.html)

And I'm pretty sure that the manpage is right : with creative redirects you can make that happen for other reasons too. You can redirect stdout to a file on NFS, or to a tcp socket that may have a full buffer, lots of evil ideas come to mind.

I'll take another good look at the bufio error. Thing is, I'm also pretty sure that I'd want bufio to correctly handle EINTR and EAGAIN and it seems to me very unlikely that this golang runtime code is correct for those cases. But I'll spend some time trying to make it fail. Maybe I'll learn something.

</comment></comment></comment></comment><comment><USER10> Lost interest right here:

> We're not talking about calling out to a library here. We're talking about > actually launching an instance of GDB, passing it commands, and parsing the > results it prints out. And this is where we get led down a dangerous path.

That's just wrong. GDB has a reasonably well specified control protocol, which is what everything uses. Yes, it's ASCII and readable. No, it's not just "parsing gdb output".

Come on.

</comment><comment><USER11> > So much user-facing network software is built on top of other programs, like > ssh or rsync, and when those things fail they just don't know what to do. > And so much of the problem is precisely because they're not using them as > libraries, they're using them as command-line utilities.

Unix CLI utilities have well defined way to return an error - non zero exit code. It is even possible to return different errors as different exit codes, though it is rarely done.

</comment><comment><USER12> I know it was just the specific example a commonly-wrapped program that the author happened to use but it does bear noting that gdb actually ships with a perfectly usable raw mode interface built in. It even supports split panes.

</comment><comment><USER13> reminiscent of Spolsky's law of leaky abstractions, definitely another side of the same problem</comment>


Tridactyl has been delisted from AMO - <AUTHOR> https://github.com/tridactyl/tridactyl/issues/1800#issuecomment-525133008 <comment><USER2> Hello, I am one of the founding contributors to Tridactyl.

I think the three comments from this one[1] down summarise the overall issue well.

[1]: [https://github.com/tridactyl/tridactyl/issues/1800#issuecomm...](https://github.com/tridactyl/tridactyl/issues/1800#issuecomment-523797764)

After appealing the first reviewer's decision, we appealed to the amo-admins who basically said "we agree with reviewer 1 and will _reject_ affected versions of the addon".

Apparently they have decided that all of our addon versions ever are affected (which is not really true) and have delisted the entire addon.

Further, they have asked us to also remove another opt-in feature that disables some CSP protections so that Tridactyl can insert its own UI into e.g. raw.githubusercontent.com. This is required because webextension content can still be blocked by a site's CSP setting, supposedly this is fixed in Firefox 69, but our testing is inconclusive and the new Firefox ESR is 68 anyway.

Our intention is to make tridactyl compatible with the AMO reviewers' requests for the sake of our users, but we're all very busy and none of us really wants to make these (in our opinion) overly invasive and unnecessary changes.

Our understanding is that users who have already installed Tridactyl will continue to have it installed and that new users will not be able to install it or find it on the AMO (where it has been removed with no explanatory text), but they can follow instructions on our github repo to install it fairly easily.

We believe that the AMO reviewers' choices do not serve the community and that a more suitable response would be to ask us to display prominent warnings over these features for our users and ask for their re-informed consent for their continued use.

We also note that loads of other extensions (including Mozilla-recommended addons) talk about the very same config settings that we have been delisted for on their AMO pages![2]

[2]: [https://www.google.com/search?q=site:addons.mozilla.org+exte...](https://www.google.com/search?q=site:addons.mozilla.org+extensions.webextensions.restrictedDomains)

Just deleting the features and undoing the changes for all users (as Mozilla has asked us to do) means that Mozilla is forcing our users to adopt a risk model and level of risk aversion that I think is not actually appropriate for the majority of our users. If we want to trade a little security for functionality we should be able to do that.

<comment><USER2> Another fun thing to note is that because they have delisted the addon users may also struggle to work out what is going on, which really goes against the whole "let's update this critical security preference" thing.

If they had left us listed but only with older versions we could have at least left a message in the addon description telling people about the issue and how to manually revert the preference for people who care. And obviously we would have done so if asked.

<comment><AUTHOR> I'm just annoyed that my fears of losing the ability to implement and use powerful Firefox extensions, ever since Mozilla instituted the extension walled garden, are slowly but surely coming true.

</comment></comment></comment><comment><USER3> Previously discussed (as a possible outcome) on HN: [https://news.ycombinator.com/item?id=20716963](https://news.ycombinator.com/item?id=20716963)

<comment><AUTHOR> Just to stave off any possible confusion: the title of this submission talks about the possibility of existing _installations_ getting forcefully removed from users' browsers. This has so far not happened. What happened is that Tridactyl disappeared from [https://addons.mozilla.org](https://addons.mozilla.org).

<comment><USER4> That's not nothing

<comment><AUTHOR> Indeed, I did not want to imply so.</comment></comment></comment></comment>


KiCad 5 – A New Generation - <AUTHOR> http://kicad-pcb.org/blog/2018/07/KiCad-5--a-new-generation/ <comment><USER2> KiCad 5 is an exciting release.

Most notably over kicad 4 it allows arbitrary placement of vias not attached to a PCB trace. It sounds like a small change, but it was really one of the last big features that other EDA programs like Eagle or Altium had and KiCad did not.

When I first got into electronics Eagle (closed source) was the defacto standard EDA software for those learning how to make PCBs and many online projects. Now there is no little/no reason to use it over KiCad.

CS toolchains have a long history of being FOSS, but for EE / embedded electronics a lot of important tools are closed source (and often very expensive). Its really exciting that a FOSS PCB layout tool is competitive.

</comment><comment><USER3> KiCad has made incredible progress over the last few years and shows no signs of slowing down. Mindshare for kicad is growing with folks like digikey now offering symbols and footprints in kicad format.</comment>


Lessons Learned: Scaling Uber to 2000 Engineers, 1000 Services, and 8000 Git Repos - <AUTHOR> http://highscalability.com/blog/2016/10/12/lessons-learned-from-scaling-uber-to-2000-engineers-1000-ser.html <comment><USER2> I'm most curious how 1000 services fit in 8000 repos.

(Maybe it's the same way that 40 cities fit in 70 countries.)

\---

FYI, with Git, the "repo too big" problem has a _lot_ of solutions.

Grafts (shallow commits) for long histories, large file storage (LFS) for binaries, and in extreme cases filter-branch.

Yes, when you hit Google scale is it possible to write enough source code to not fit on disk. But Uber isn't Google scale. Maybe Uber can't fit code into one repo. But ten repos should be fine.

<comment><USER3> The 40 is probably a typo, the cities number is closer to 400.

I don't think the microservices is about repo too big in a technical sense. The problem is when you have 100s of engineers working on a single repo, just merging changes or building , testing etc. will take all day. Microservices are more a solution to scaling engineering teams with a lot of people because they can work independently rather than a technical scaling thing.

<comment><USER2> Sure, but I wasn't quibbling about the number of microservices, just about the number of repos used.

</comment></comment></comment><comment><USER4> "This same pattern of explosive growth is happening in cities all over the world. In fact, Uber is now in 40 cities and 70 countries."

Um. Stopped reading at this point.

<comment><USER5> even worse, they repeat it further down in a bullet point list

</comment></comment><comment><USER6> Not in the article: why does Uber need that much software? Does anyone know here what all those services and engineers do?

</comment><comment><USER7> Wow Uber'S tech stack is a total mess</comment>


Ask HN: Is IQ hereditary? - <AUTHOR> I have been reading several different sites and there seems to be a consensus that IQ is at least partially hereditary.
There have been some studies that even suggest it is linked to the mothers IQ.
Is this a foolish assumption? <comment><USER2> You're likely not going to get anything better here than from [https://en.wikipedia.org/wiki/Heritability_of_IQ](https://en.wikipedia.org/wiki/Heritability_of_IQ) .</comment>


Mock Page Lets You Hack Like in a 90s Film - <AUTHOR> http://www.hackertyper.net/

<comment><USER2> Page is loading infinitely for me when I click Hack!. Waited for about 2 minutes.

<comment><USER3> It's about what you'd expect. When you press any key, a few characters of linux kernel source code appears, so you can randomly mash keys and it looks like you're programming at breakneck speed.

</comment></comment><comment><USER4> Pretty sad when it ended on me...is that meant to happen?</comment>


My Career with the Phone Company - <AUTHOR> https://medium.com/the-coffeelicious/my-career-with-the-phone-company-ff95853cee8b#.twe3dfssx <comment><USER2> 1\. This is the story of every industrial dispute, ever, since the dawn of unions. Manager bad, worker good.

2\. There is truth to manager bad, worker good. There are also other truths.

3\. When presented something by the media, ask yourself "Why am I hearing this? And why am I hearing this _now_?"

4\. Mike Rowe is right.

5\. I smell a PR firm in this article.</comment>


MVC v/s MVVM - <AUTHOR>

We are moving from MVC framework to MVVM. Just wanted to check if it is really worth the effort<p>Appreciate your advice <comment><USER2> Backbone to Angular?</comment>


A long-term historical population model for Ireland - <AUTHOR> https://www.sciencedirect.com/science/article/pii/S0305440318304977?via%3Dihub <comment><USER2> Hmm, some boffins with a model based in part on stuff like soil nitrogen levels claim that there was a mysterious gradual decline in population in Ireland right before the Vikings came ... versus contemporary chroniclers who claim there was a non-mysterious decline in population right after the Vikings came to Ireland. Which one should we believe?

Kind of reminds me of the "historians"[1] who claimed the German invasions of Rome were peaceful multicultural changes rather than the sacks of the place recorded both in the archaeological record, and by contemporary chroniclers.

[1] c.f. "The Fall of Rome: And the End of Civilization" by Ward Perkins.

</comment><comment><USER3> Hmm I wonder how much the decision to arrive was influenced by the decline as orders of priority. Say in a simplified gamey heuristic:

1\. If there are boats or coastal settlements around the island and decent canidates attempt trade to fulfill needs - it is lower risk and where the greatest speed and cargo volume may be obtained. 1a. If trading won't be sufficient and they appear weak enough to gamble raid - it might get you killed but greater riches. If you would starve anyway what do you have to lose? (That infamous practice while it may have saved them from harsh winters got their civilization effectivly after the profession of raiders - it would be sort of like calling all of England and their descendants pirates.) 2\. If the land is decent and under or unsettled land to fulfill needs - it is slower than boats and has lower cargo capacity. Also less likely to find undefended farmland or similar assets.

Essentially if the population didn't decline they never would have bothered heading inland more as either boats and coast fulfilled their needs better or if in bad relations scared off as the type of place that would rob or kill them on sight.

</comment><comment><USER4> "Contextualizing the data"

"model has been developed"

"We suggest"

But headline suggests proof.

This happens in other scientific fields ( _cough_ ).</comment>