Leaflet: An open-source JavaScript library for mobile-friendly interactive maps - <AUTHOR> http://leafletjs.com/ <comment><USER2> Leaflet is an amazingly powerful tool. As others have mentioned, it makes it easy to use a variety of sources for the underlying map tiles; in my case I was able to replace the modern-day base map with a map of the Roman Empire for an interactive academic publication[1].

Another great feature that doesn't get as much attention is Leaflet's ability to handle non-geographic images. In the same publication I'm also using it as a general-purpose deep zoom viewer for displaying artifacts[2]. It's great to just use a single library to handle all of this.

Kudos to the Leaflet developers for continuing to improve such a great library!

[1]: [http://www.getty.edu/publications/romanmosaics/catalogue/ita...](http://www.getty.edu/publications/romanmosaics/catalogue/italy/) [2]: [http://www.getty.edu/publications/romanmosaics/catalogue/1/](http://www.getty.edu/publications/romanmosaics/catalogue/1/)

<comment><USER3> Museum tech roll call! I picked up leaflet for the same purpose and it's worked great - [http://collections.artsmia.org/art/1218/olive-trees- vincent-...](http://collections.artsmia.org/art/1218/olive-trees-vincent-van- gogh)

The Rijksmuseum "Rijksstudio" site has been around for a few years and adopted leaflet very early on for image viewing: [https://www.rijksmuseum.nl/en/rijksstudio/artists/rembrandt-...](https://www.rijksmuseum.nl/en/rijksstudio/artists/rembrandt- harmensz-van-rijn)

Perhaps of interest to this sub-thread is "IIIF" (the international image interoperability framework), an attempt to standardize access to images (and collections of images) with a JSON(-LD) metadata model: [http://iiif.io/](http://iiif.io/)

<comment><USER2> Nice project!

RE: IIIF, we're interested in going in that direction as well. Fortunately it looks like someone already wrote a plugin for it: [https://github.com/mejackreed/Leaflet- IIIF](https://github.com/mejackreed/Leaflet-IIIF)

PS - Hey Kjell! This is Eric from the Getty. It's nice to see there are other museum folks on HN!

<comment><USER3> Yep - I figured based on the projects, but didn't want to call out your real ID in case that mattered. Lunch out on your plaza sounds pretty appealing right now compared to the weather up here!

</comment></comment></comment></comment><comment> harry-wood LeafletJS is awesome. It's an important open source offering within the OpenStreetMap ecosystem. If you're looking for an "OpenStreetMap API" for embedding a map, then you're looking for LeafletJS! ...or another one called OpenLayers, or various other lesser used options. You have a choice! With OpenStreetMap you also have a choice of where you get your map "tiles" from, or you can render and host them yourself. Check out this website which explains a lot more about the various options for making the switch to OpenStreetMap:

[http://switch2osm.org](http://switch2osm.org)

</comment><comment><USER4> Leaflet author here. Thanks for the kind words everyone! A few core developers are here too. Ask us anything. :)

<comment> mickael-kerjean Any plan to support webgl in the future as mapbox gl does?

From a user perspective the difference is huge

<comment><USER4> WebGL is notoriously hard to use and requires tons of code for even simple things like drawing lines and polygons. (Disclaimer: I'm also one of the core developers of Mapbox GL JS)

One of our core devs (Ivan) works on Leaflet WebGL renderer, but I'd like it to remain a plugin, so that Leaflet stays true to its goal — to be as small and simple as possible.

<comment><USER5> Indeed! From my point of view, WebGL rendering for Leaflet makes sense, but it's very important to _not_ remove support for browsers which don't implement WebGL right now.

MapboxGL is very performant, but it changes all the abstractions to the map elements, which is something I'm particularly not very happy with. Thus Leaflet.GL.

</comment></comment></comment></comment><comment><USER6> In my experience the best thing about Leaflet is the possibility of using CSS to style, transform and animate markers.

Shameless plug, see for instance this map using css 'explosions': [https://citybik.es](https://citybik.es)

<comment><USER7> On an iPhone 7 Plus, the maps on citybik.es looks terribly pixilated. I am getting a feel that either openstreetmaps does not properly support retina tiles, or no one actually bothers to use them. Not sure which is worse.

<comment><USER8> OpenStreetMap.org's tileservers don't supply retina tiles. But OSM's tileservers are effectively a tech demo and a resource for mappers, not a user-facing service. If you're building a consumer-grade product, you're expected either to use OSM data to render your own tiles, or use a third-party provider which provides tiles based on OSM data (such as Thunderforest, Geofabrik or Mapbox). Leaflet, as the client-side JS part of your mapping solution, can happily show retina tiles from such a provider or your own tileserver.

</comment></comment></comment><comment><USER9> Here are three things I'd like to do with Leaflet, or generally just have from an online mapping tool:

1\. Use WebTorrent[1] as the tile provider (would probably need a canonical WebTorrent server so that all tiles would always have at least one seeder).

2\. A Progressive Web Map (teehee) so that users can store tiles offline and use the mapping service while offline. Obviously not a new concept but AFAIK there isn't a map provider that does it in the browser.

3\. Client-side routing/navigation. This could start as a simple Dijkstra in JavaScript (like is demonstrated in [2]), but maybe could be made more powerful and capable soon with WebAssembly.

Is anybody working on these sorts of things? Is anybody interested in them? I've heard of peermaps[3] but it hasn't been updated in over 6 months. I'd be interested in contributing or teaming up with others on these sorts of things.

[1] [https://webtorrent.io/](https://webtorrent.io/)

[2] [https://christophercliff.com/dijkstra/](https://christophercliff.com/dijkstra/)

[3] [https://peermaps.github.io/](https://peermaps.github.io/)

<comment><USER8> For offline mapping, it's best to use vector rather than bitmap tiles. Look at the ecosystem around Mapbox GL (which is open source).

</comment></comment><comment><USER10> One of my favorite tricks with leaflet is to tie into the ontileload event. You can index your data by tile id or quadkey and seamlessly load your data in for the specific data that is in view.

<comment><USER11> Oh that is a really good tip! Good one. Do you have a demo?

<comment><USER10> Here's a screencast of a side project that used that technique. The top artists are bound to quadkeys and are loaded via the ontileload event via a websocket. Going to get back into some map work in the next few months and might write out a blog post about this technique.

[https://drive.google.com/file/d/0BwPUV-- rEjyiVDc4UXBzUnhhMDA...](https://drive.google.com/file/d/0BwPUV-- rEjyiVDc4UXBzUnhhMDA/view)

<comment><USER11> Hah, wow that is really great. Super fun application and the UX is awesome. Nice job

</comment></comment></comment></comment><comment> nezza-_- Works quite well (on iOS), really good work! Here is a small issue I experience on a lot of mobile sites with embedded maps and also on yours:

If I zoom the page outside of the map and then scroll so that the map fills the full screen there is no way to zoom out/get away from the map again. You will just scroll and zoom the map and eventually will have to reload the page. It also allows to scroll far out of bounds of the world which can be a bit confusing.

<comment><USER12> This happens with other UI elements as well like those instructive subscribe pop ups.

I'm not up to speed with the latest JS and browser features, but unless there is some sort of zoom reset from the browser itself I don't think there is an easy solution without making arbitrary decisions like "user has scrolled up 10 times, move entire page up"

For instance , if I shake my mobile (think google maps) or 3 finger Zoom out, then the browser resets the zoom level.

</comment></comment><comment><USER13> Leaflet is awesome and what I'd recommend for any starter or simpler project. But also be aware of the existence of OpenLayers when your needs start to grow considerably. I find it much more featured and closer to a GIS than just a mapping interface.

<comment><USER14> Can you elaborate more on what features OpenLayers has or does better than Leaflet?

We recently replaced an app built with GeoServer for one with Leaflet and Angular. My employer had previously used OpenLayers so we considered it but Leaflet is just so easy (we pushed most of the complexity to the API/database and kept the UI as a lightweight tile/geojson renderer). I'm curious about what we missed out on by not using OpenLayers!

<comment><USER15> Lots of stuff, starting with nicer projections. [http://openlayers.org/en/latest/examples/](http://openlayers.org/en/latest/examples/)

But if Leaflet does what you need, just use it.

</comment></comment></comment><comment><USER16> I've been using Leaflet for about a year now for my map editor project ([http://makemaps.online/](http://makemaps.online/)) and it's been a pleasure. The community and the plugins are awesome, and the library itself is built well and performs nicely.

</comment><comment><USER17> Leaflet is really nice. I used it to render a big map of my drawing game ScribbleGrid:

[http://scribblegrid.com/maps/origin/](http://scribblegrid.com/maps/origin/)

I used Node.js Canvas to render a file of each room, ImageMagick morgify/montage to add grid borders as well as combine them into one big image and GDAL2Tiles to split the image up into parts in a "z / x / y" folder structure for Leaflet to fetch.

</comment><comment><USER18> I'm working on a project right now and using ui-leaflet for Angular, which sadly is getting pretty stale. I suppose it's not a huge surprise for an Angular 1 project, but it's still worth checking out if you use Angular and Leaflet.

</comment><comment><USER19> I worked on a Leaflet project a while back (about a year and a half ago). While the project didn't rely on Leaflet heavily enough to use all of its features, I've gotta say, it's ridiculously easy to use if you want to get something useful up and running.

</comment><comment><USER11> Yes Leaflet is just awesome. Vlad (Mourner) and the other contributors have done an amazing job at keeping focused on making leaflet super lightweight and really easy to use.

The stuff they are doing with MapBox is super awesome as well, especially the OpenGL work.

Deeply appreciate the effort.

</comment><comment><USER20> I really love Leaflet as a tool, and the ecosystem is amazing, but I find integrating it within a React environment to be quite tough. I can integrate the react leaflet components pretty well but once I start doing things like using plug-ins (for edge markers or heat maps or something) then it's no longer easy to use, primarily because very few leaflet plug-ins use npm.

Is there an easy way to integrate leaflet plug-ins using react? My best attempt was to download the plug-in script and modify it such that it takes the Leaflet object as a parameter (instead of the IIFE) but this causes a lot of overhead for using plug-ins.

Any tips from a fellow react developer?

</comment><comment><USER21> I like it very much, also the underlaying structure of extending and monkey patching inside the plugins is very useful.

Here are some maps we have made: [https://green- giraffe.eu/projects](https://green-giraffe.eu/projects) [http://www.danielbeeke.nl/inbraken-in-uw- buurt/#12/52.0553/5...](http://www.danielbeeke.nl/inbraken-in-uw- buurt/#12/52.0553/5.0376)

</comment><comment><USER22> I made a Scala.js facade of this recently for my work :) It's still not _completely_ done, but covers alot of the API. If anyone's interested in Scala on the front end and would like to check it out - [https://github.com/cibotech/leaflet- facade](https://github.com/cibotech/leaflet-facade)

Most of the stuff I saw online was for previous versions of Leaflet, I wanted to make something that uses this new release

</comment><comment><USER23> I've just used Leaflet to create a map for a music festival. It was a joy to use, works well on mobile devices easy to deploy and has been well recieved. Thanks to @mourner and the team for superb library. Small, neat, well documented and changes are improvements not bloat.

<comment><USER24> Same here. I used it on a site that needed a map, and although I didn't try an alternatives it was well-documented and worked immediately.

I can't say how well it competes with alternatives, but for my use-case it was ideal and very easy to get started with.

</comment></comment><comment><USER25> Anybody using Mapbox GL JS? Basically Leaflet with WebGL and some other useful tricks.

<comment> mickael-kerjean Yes I do and from a user perspective its much better as it tends to be lighter in term of network request and smoother as you don't need to load new tiles for every single level of zoom.

I just hope leaflet will be there one day with smooth degradation for browser that don't have webgl enabled

</comment></comment><comment><USER26> We've been looking for a good bathymetric layer (with depth contours) for Leaflet. Has anyone done this?

<comment><USER27> For the US, NOAA serves depth charts for free [http://www.charts.noaa.gov](http://www.charts.noaa.gov)

</comment></comment><comment> mickael-kerjean I used to be heavy user of leaflet but the lack of webgl support is a non starter anymore comparing to mapbox gl. any plan to support this in the future?

</comment><comment><USER7> Am I the only one not getting retina tiles? On an iPhone 7 Plus, the map on leaflets.com looks terrible.

<comment><USER4> Leaflet supports retina tiles, they're just not used on the frontpage example because default OSM tile service doesn't provide them, and we don't use other providers on that example for the sake of simplicity (to keep it as short as possible).

</comment></comment><comment><USER28> Really great. Especially if you've ever gotten stuck using an old, busted library like Polymaps.

</comment><comment><USER29> Doesn't work at all on desktop with blocked Twitter / Google

<comment> harry-wood Do you mean the leaflet website, or the leaflet maps library itself?

I see the [http://leafletjs.com](http://leafletjs.com) website uses some google fonts, and google analytics, but I would have thought it would degrade gracefully if those things are blocked.

As for the leaflet maps library itself, this will definitely operate independently of google or twitter. Try here for a simple example embedded on my website (with no googleness) [http://harrywood.co.uk/maps/examples/leaflet/1-just- map.view...](http://harrywood.co.uk/maps/examples/leaflet/1-just- map.view.html) or even better, try here where I'm loading it from locally hosted javascript: [http://harrywood.co.uk/maps/examples/leaflet/1b-local- osm.vi...](http://harrywood.co.uk/maps/examples/leaflet/1b-local- osm.view.html)

Those links working for you?</comment></comment>


Reddit's possible solution to famous Zodiac cipher - <AUTHOR> http://www.reddit.com/r/IAmA/comments/i6b1o/update_im_the_guy_who_took_3_days_off_of_work_in/c21azoo

<comment><USER2> In what sense is that a 'solution' to the cipher? It just looks like the sort of pattern spotting that the human brain is good at and doesn't seem to indicate any sort of systematic crack of Zodiac 340 at all. This sort of reasoning is typical of people who 'crack' ciphers by coming up with all sorts of complex explanations. I call this sort of 'crack' a 'Dan Brown'.

What's needed to crack Zodiac 340 is a systematic way in which The Zodiac enciphered the message. His Zodiac 408 had a clear and simple pattern.

My recent posts on the matter:

[http://blog.jgc.org/2011/06/how-zodiac-enciphered- zodiac-408...](http://blog.jgc.org/2011/06/how-zodiac-enciphered- zodiac-408-cipher.html)

[http://blog.jgc.org/2011/06/identification-of-homophone- sequ...](http://blog.jgc.org/2011/06/identification-of-homophone- sequences.html)

<comment><AUTHOR> I didn't recognize that the cipher could be split into four quadrants (with the "+" symbol bisecting vertically and horizontally) before reading the comment; maybe he's cycling through the symbols based on the quadrant they're in? I noticed you wrote about substitution cipher, so maybe some relation to that (rather than cycle sequentially)? There were some interesting comments from the thread, although I agree with what you're saying that it's not systematically cracked if Zodiac was following the method he used in the other ciphers.

<comment><AUTHOR> too late to edit my comment but an interesting analysis which does consider the quadrants: [http://zodiackillersolved.blogspot.com/2008/12/340-cipher- so...](http://zodiackillersolved.blogspot.com/2008/12/340-cipher- solution.html)

</comment></comment></comment><comment><USER3> Anyone that does what he did certainly has some kind of mental health issue.

However how much of what supposedly he says in those messages is true? Couldn't he be playing the role of someone with a thin grasp of reality just to misguide and have fun with the police and profilers? It's probably the best way to avoid being correctly profiled and possibly caught.

<comment><USER4> Why was this downvoted? It's a valid and inoffensive view point. Are we just downvoting people we disagree with now?

<comment><USER5> Probably confusing the "he" in the comment as the solution-creator rather than the Zodiac guy.

<comment><USER3> If it was that, my apologies for not being clear the 'he' meant to be referring to the so called Zodiac killer.

</comment></comment></comment></comment><comment><USER6> Reminds me of the ultima runic alphabets: <http://www.uo.com/archive/runic/runicbig.gif>

<comment><USER7> That alphabet was actually used by humans long before it was used by the Ultima games: <http://en.wikipedia.org/wiki/Runic_alphabet>

<comment><USER8> We have some gravestones in runes out here where I live (on the west coast of Norway), roughly a thousand years old. It's a pretty cool sight.</comment></comment></comment>


Ask HN: Why doesn't Apple build iTunes into Safari? - <AUTHOR>

Apple released iTunes at the start of 2001, and this wouldn't have been possible back then. But I think now you could build most of the key iTunes functionality into Safari, perhaps with something like plugins. Maybe you couldn't have it do everything iTunes does right now, but getting the core functionality into the browser instead of the clunky iTunes interface would be a win. Thoughts? <comment><USER2> iTunes isn't clunky. It's a well-designed application that does what it says it does. That it has features I don't use doesn't bother me because they are grouped or hidden away from view.

</comment><comment><USER3> Most people had assumed that the LaLa acquisition would bring some sort of web-based ITMS about, but it hasn't yet materialized.

Maybe with Apple's continued interest in SproutCore, plus the fact that iTunes is one of the last Carbon apps...</comment>


The Code is the Model - <AUTHOR> http://meissereconomics.com/2017/06/22/code.html#main <comment><AUTHOR> Submission statement: Computational models in science are traditionally created with a clear separation of specification and implementation in mind. In this paper, I challenge this view, at least in the context of agent-based simulations. Inspired by agile software engineering, I claim "the code is the model".</comment>


How do spammers harvest email addresses ? - <AUTHOR> http://www.private.org.il/harvest.html <comment><USER2> My email address is in plain text all over the place. I rarely see spam though. Almost all of my mail is redirected to Gmail and their spam filters are great. Do community based spam filters exist? Sort of like how AdBlock has feeds for ad rules.

Although, I understand that spamming is annoying to people that manage infrastructure.</comment>


On the Road with Aristotle: Zen and the Art of Motorcycle Maintenance (1974) - <AUTHOR> http://www.the-tls.co.uk/articles/public/zen-art-motorcycle-maintenance/ <comment><USER2> There's a section in this book that discusses the inability of a narcissist to fix a motorcycle. As a software engineer with narcissistic tendencies, that section really struck a nerve, and inspired me to dive way deeper into our systems and try to understand "what where they thinking" when working in a legacy code base someone else designed. This curiosity has led to several aha moments that I would have prematurely dismissed as an idiotic code base designed by idiots had I not spent the time to try and understand it.

</comment><comment><USER3> There's a number of times when I've finished reading a book, reading an article, listening to an album, or watching a movie, I'm left thinking "What the fuck was that?" It didn't necessarily bring joy, but it made me think, and much later I realize how good it was. Zen and the Art of Motorcycle Maintenance is the best example of this.

</comment><comment><USER4> People complain about this book a lot but I enjoyed it for the most part. Having no philosophy background, I generally struggled through some of his more academic points though.

But I generally enjoy books that have "quotable wisdom" in the narrative. One of the quotes that has stuck with me the longest is from this book:

"The place to improve the world is first in one's own heart and head and hands, and then work outward from there."

<comment><USER5> "Be the change you desire"?

</comment></comment><comment> aaron-lebo It should be cautioned that this book gets killed by a lot of people who have done philosophy for various reasons. But Phil Jackson is apparently a fan, and anyone who wins 10 NBA championships and got the best out of MJ, Kobe, Shaq, and the Worm, and is a "Zen Christian" must know something interesting.

And yeah, it's a book worth reading through, if grueling at times. I can't find the quote, but one of his points is that quality things have quality because their creators deeply cared about them and put that care into the product. It seemed very Jobsian (maybe not surprising given his own interests).

<comment><USER6> Interesting, do you have any links to stimulating critiques at hand?

<comment> aaron-lebo They may not be stimulating and Reddit search is not working at the moment, but if you'll search there, there's a lot of commentary at different times and across various subreddits on the book.

</comment></comment></comment><comment><USER7> Is there a resource in the vein of the linked review, but that explains the book (and its philosophical content) on a more basic level, for someone with no background in the subject? I was hoping that Pirsig would help me understand philosophy by placing it in a familiar and tangible setting -- that's what the title suggests. I was very disappointed.

Take the idea of Quality, for example. Pirsig talks about it for half the book; this is a concept that drives him insane and is central to his life and to the narrative. I still haven't the foggiest idea of what he is talking about, pages of strange analogies notwithstanding.

To me, this was a book about a troubled intellectual and his grappling with mental illness. About somebody that drives himself insane by obsessing over abstruse concepts arising from human experience. And it's a well-told story that made me think, but also made it very hard to relate to the protagonist simply because I do. not. understand. his intellectual struggle.

<comment><USER8> But you do! You are saying and itterating exactly how he feels when it comes to quality. You can't define what he's talking about in his book. He can't define quality. They're very similar concepts, not exact, but they provide the same feeling.

How would you define quality?

<comment><USER7> I would say that quality is an abstract value judgement that requires context to be meaningful. That's why it escapes precise definition.

Whenever Pirsig talks about quality, it seems that he is heavily overloading the term. What he is really trying to do is develop a set of guiding principles that makes him feel like he understands the world and his role in it. Most people use religion or science for this, but Pirsig explicitly rejects science as a way of discovering the truth (for his definition of truth), and I think he implicitly rejects religion as well. I ended up reading "Quality" as just a label that he attaches to the personal philosophy he develops instead.

</comment></comment></comment><comment><USER9> That's a brilliant review, capturing the major threads of the story like no other I've seen. But it also seems best suited to those who've already read the book (and can appreciate the relevance of the reviewer's philosophical argot), and perhaps not as suited to those who are deciding if this story would be worth their time.

OTOH, maybe anyone not put off by the reviewer's language and willing to read his entire review will see that s/he indeed does have The Right Stuff to plumb the rich depths of ZatAoMM.

God speed, Mr Pirsig. Your book meant worlds to me.

<comment><USER10> Slight tangent: I have seen a lot of mention of Zen, but not many people bring up the follow-up book, Lila. I found the second to be a more accessible and applicable-to-every-day-life sort of book, and more maturely written.

I enjoyed Zen more when I was younger and Lila more as an adult; I have read both at least 4 or 5 times apiece.

Both are brilliant though. And the linked review is fantastic.

<comment><USER11> Yes, Lila is great. I think there is a lot there if you are looking to make some meaning out of a seemingly random world.

</comment></comment></comment><comment><USER12> I don't know what you all are talking about. Clearly this is a great piece on how to fix motorcycles! :)

I enjoyed it. The part where he talks about how a stripped screw is suddenly the most important screw in the world and you should treat it as such really stuck with me. I have used that attitude many times to get out of jam.

Also, I really enjoyed his description of how he approached fixing his bike vs his friend's BMW. And also the little talk he gave in putting together the grill and the instructions manual.

</comment><comment><USER13> The podcast "I don't even own a television" did an episode about the book - [http://www.idontevenownatelevision.com/2015/05/22/zen-and- th...](http://www.idontevenownatelevision.com/2015/05/22/zen-and-the-art-of- motorcycle-maintenance)

The podcast is about "bad books" so that's the angle they approach it from, but the guys are funny, very nice and aren't super cruel or anything.

</comment><comment><USER14> One of my favorite books about philosophy. And funny enough, a good book about motivation.

</comment><comment><USER15> To interpret Plato as a practitioner of Zen...the other Buddhist sects must be far different from Mahayana Buddhism--anyone who is familiar with Mahayana, especially the line stemming from Bodhidharma, and Plato's thought will know that to compare Plato's philosophy with Zen is patently ridiculous--the one rejects the existence of objects, the other wants there to be a whole heaven of conceptual objects--to think there is any similarity in the 'one' of zen and the 'one' of Plato, or the Neo-platonists for that matter, just shows to me that you've engaged in very shallow reading. Still perhaps there's something in it, based on how absurdly incorrect it seems--plus I only know a bit about Mahayana--no other Zen traditions, so perhaps there are some that are more akin.

In general I am suspicious of all books and articles that insist on modelling their titles off of buzzy cliche's:

"Zen and the art of XYZ" "How I Learned to Stop Worrying and XYZ" etc.

It just does not leave a tantalizing impression and stinks of shallow laziness to me.

I suppose this isn't totally fair to this book, considering it came out in 1974--but still!

That's a shame because skimming through this article, this books sounds as though it may prove to be somewhat interesting.

Please, you've worked so hard on your book--for the love of god, bless it with the title it deserves!

I think this is some practical advice for writer's: consider the glittering titles of Nietzsche's works before you settle on a name for your book--is that _really_ what you want to call it?--is that _really_ its name?

Sheesh, I may have to read this just because of how vehemently I disagree with that Plato/Zen analogy--I need to see where the hell this guy could possibly be coming from other than bad, clumsy reading, and poor conceptual housekeeping--if not from here he's picked up on a grand connection I've missed, and has thus created something worthwhile.

(If only the _name_ designated so!)

<comment><USER16> The book is a monument of literature. Its title is the genesis of your buzzy cliché, not a lazy user of it. It deserves none of that opprobrium from someone who hasn't read it.

<comment><USER17> _" Its title is the genesis of your buzzy cliche"_

It's not, actually. The progenitor of such titles is _" Zen in the Art of Archery"_,[1] which was published 26 years earlier.

[1] - [https://en.wikipedia.org/wiki/Zen_in_the_Art_of_Archery](https://en.wikipedia.org/wiki/Zen_in_the_Art_of_Archery)

<comment><USER18> For those unfamiliar with the works, it's a good reference. In 'Zen in the Art of Archery' Eugen Herrigel uses archery as a metaphor to initially learn, and then to teach Zen to a western audience because teaching it directly, intellectually, is indicated to be impossible.

Pirsig's novel references this because large sections of the book deal with the inability to express something on a purely 'classical' or intellectual level, the inability to define certain concepts, and the attempt to somehow bridge that intellectual leap of faith and explain things that cannot be explained directly.

So he tries to convey his ideas on a more intuitive level, using all the arts of redeemed sophistry through the means of creative writing, a story about travelling on a motorcycle with his son and discussing motorcycle maintenance.

It's interesting to me to what extent the huge amount of "Zen and the Art of.." books that exist these days are references to Pirsig's novel or to Herrigel's. My feeling is generally a lot of them are unaware of the existence of Herrigel's novel and the choice of phrasing does suggest Pirsig's. However, even right at the start Herrigel's title was a template for other books: only a few years after its publication his wife Gustie also published a book called 'Zen in the Art of Flower Arrangement' with a similar treatment of Zen through the medium of Ikebana or flower arrangement.</comment></comment></comment></comment>


Google delists AllFAQ.org due to DMCA complaint by Experts-Exchange - <AUTHOR> http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=mysql+double+slow

<comment><AUTHOR> I think this requires a bit of context. I was troubleshooting a mysql query when I discovered the text at the bottom of the linked page: "In response to a complaint we received under the US Digital Millennium Copyright Act, we have removed 1 result(s) from this page. If you wish, you may read the DMCA complaint that caused the removal(s) at ChillingEffects.org." That links to the takedown ( <http://www.chillingeffects.org/notice.cgi?sID=30399> ).

Upon reading the takedown, I don't actually see Google listed by name, so this piqued my interest and I'm wondering if any HNers know more about this.</comment>


Thoughts on Go after writing 3 websites - <AUTHOR> http://blog.kowalczyk.info/article/uvw2/Thoughts-on-Go-after-writing-3-websites.html

<comment><USER2> I've just worked my way through the Go Tour and have begun working on my first real project in it (a basic wiki, for learning purposes). At first, I was expecting C with some syntax changes, but the changes made feel like they were almost entirely made for legitimate reasons. Types definitions after variable names really does make sense when you start to use it. Even with my limited experience in it, I can say that it is really a joy to develop in.

</comment><comment><USER3> Thanks for posting this, the code is very readable and good for learning. How much time did you spend on Go before you finished these projects?

<comment><AUTHOR> I can't really quantify it as it was in drips but in general, since I already knew C and Python, learning Go was easy. I could have started to write a web app right away, following tutorials on Go website and elsewhere.

At the beginning it's frustratingly slow, as it always is when you learn something new, but if you know other C-like languages, picking up Go will be fast. You just have to put the time to learn standard library and Go way of doing some things.

<comment><USER4> I have some questions. Are you on Linux or Windows? Did you have to use a debugger or no need?

<comment><USER5> Go has full support for gdb if you want a debugger. You can even hook into go routines.

</comment></comment></comment></comment><comment><USER6> > If you know the shape of [JSON] data, you can serialize (marshal, in Go's > parlance) data structures to JSON or XML and de-serialize (unmarshal) from > JSON or XML into a struct.

I wrote a short script to automate generating the struct definitions, since I didn't want to generate the structs by hand. Go's reflection made this really easy.

<https://github.com/chimeracoder/gojson>

<comment><USER7> PHP has json_decode() and json_encode() which do all of this correctly ... GO is interesting, but production ready? Not for awhile.

<comment><USER8> Package encoding/json from the standard library can decode to objects ("Object" in the Java sense, "void *" in the C++ sense) like json_decode does.

It also can decode directly into typed structures. An example from the documentation (you'll have to open the linked example): <http://golang.org/pkg/encoding/json/#example_Decoder>

Anecdotally, a typed version of JSON decoding is much nicer to work with.

<comment><USER7> "Anecdotally, a typed version of JSON decoding is much nicer to work with."

How so? Considering that JSON isn't strongly typed.

<comment><USER8> Indeed JSON is not strongly typed. However, in practice, every API, every data exchange format I've ever seen or used has used JSON in a strongly typed fashion. i.e. they say "the returned object will have a key of 'foo' with a number as the value, and a key of 'bar' with an array of strings as the value.

Why is this nicer?

Let's say you are working with the Reddit API. You can, of course, do it the way you suggested, and just decode the result into an untyped object. However, I find this incredibly brittle. You end up with strings indexing into arrays all over the place.

On the other hand, when you decode into a Go struct, you use the regular dot syntax to access parameters. You can't misspell these or use the value inappropriately (trying to loop over a JSON number, for example). You can write comments on the fields to document what you expect various values to hold. It is nicer in the same sense that using classes is nicer than just using arrays for everything.

Another benefit is of course the improvement of performance. Accessing an string value in a JSON object by a key is the equivalent of a hash table lookup in Python or PHP. It is incrementing a pointer by a constant number in Go (assuming you use strongly typed decoding).

I'll say it again, Go's encoding/json can do what you want (the equivalent of json_decode). There are better alternatives available to users of that package, and the GP was discussing how to exploit one of those better alternatives without having to write the struct by hand (which I personally find a trivial one time cost).

<comment><USER7> json_decode() without the second param or with it as false will create an object for you that is typed, loosely only if you mess with it afterwards. So what is the advantage other than speed? If I'm CPU bound, then yes, it's worth a look just as many other alternatives are worth a look. But that is a whole different issue.

<comment><AUTHOR> Speed is pretty important.

Compiler telling you about a bug because you have a typo in your code (as opposed to blowing up at runtime, sometimes in a way that you won't notice) is also important.

Struct definition is also a documentation of your data. Another developer (or you a month from now) doesn't have to go back and re-read, say, Redit API docs. He (or you) can just re-read definition of the struct and know all the data that a given JSON request provides. That's nice.

An editor can parse the struct definition and give you auto-complete, which is also nice.

<comment><USER7> Really? Another static vs dynamically typed language argument? Not this year.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> And for those of you who are not cofortable running with net/http (it is a rather simple server), there is always uWSGI support for Go, which I found to be a rather brilliant idea

<comment><AUTHOR> (I wrote the article and 3 web apps on Go).

I would be much more uncomfortable running on uWSGI than on net/http. As far as I can tell ([https://github.com/unbit/uwsgi/blob/master/plugins/go/src/uw...](https://github.com/unbit/uwsgi/blob/master/plugins/go/src/uwsgi/uwsgi.go)) Go's uWSGI implementation is just a small wrapper over C code inside a dll.

It's not portable (support for cgo on Windows is extremely sketchy).

It also goes against common sense. Any code you can write in C, you can write in Go, except it'll be easier (Go is garbage collected, has built-in arrays, strings, hash tables etc.) and there's drastically smaller chance Go will have a security issues due to memory over-write.

It duplicates lots of net/http functionality.

net/http is well documented, well tested, reviewed by extremely knowledgeable people.

Most importantly, it is being used in production by me and many other people.

Finally, net/http gave me everything I needed to write my web applications. Before I would even considering using uWSGI (or anything else) someone would have to explain what exactly does it provide that is so indispensable for writing web apps.

<comment><USER4> You have basically just described the advantages of the D language too. Do you plan on trying D?

<comment><AUTHOR> I did try D when it was in its early days (i.e. D 1) but at the time I was put off by lack of documentation, the standard library split (phobos vs. D) and general immaturity of the system. I'm sure things have improved since then but I really like Go's simplicity.

</comment></comment></comment></comment><comment><USER10> Is 7776000 pageviews/month the kind of traffic that you'd expect to be able to generate $80/month? $0.00001/pageview/month? If the average user viewed 1,000 pages a month, that would be $0.01/user/month.

Obviously it depends on the average pageviews per user, but what's your gut feeling? Should $80 have been too expensive?

<comment><AUTHOR> Your math, while precise, is meaningless.

I probably could have gotten away with paying $0 if I didn't care about the best performance.

App Engine is distributed. You get one front-end instance for free. The more front-end instances you spin up, the lower the latency for your requests (consider a fron-end instance a process, the more processes you have, the more requests you can handle in parallel, which lowers latency for each request).

All the money was spent on additional (3, I believe, front-end instances).

Was the price high? Yes, which is one reason I switched to a $60/month kimsufi server which hosts the blog and still has 99% of capacity free for other things.

It's possible I was over-paying. I'm not an App Engine expert. I picked the number of instances more on a gut-basis than a comprehensive analysis basis. I could afford it so it wasn't a big deal.

<comment><USER10> Ah, I thought GAE was spinning those instances up for you automatically. That's the default, it spins up extra instances as-needed to keep latency down. With Go apps, that's generally down to i/o from API calls.

</comment></comment></comment><comment><USER11> I don't understand the deployment section. Go has the simplest deployment I've ever had the pleasure to use. You compile the binary and copy it up. Static binaries make it so simple as to be trivial.

<comment><AUTHOR> First, if you use C libraries, you can't just compile on OS A and copy to OS B. I'm not 100% sure but while Go has much better cross-compiling story than others, I believe net/http does uses OS's C library and therefore cannot be cross-compiled that easily.

Also, you have to copy the assets (templates and such) and if you're deploying a new version of a web app, you don't just overwrite the binary. My script makes sure that if something goes wrong (i.e. a new version doesn't work or has a bug), it's easy for me to revert to previous version.

That being said, none of that implies that Go makes deployment harder (or easier, for that matter) than deploying code in other languages would be. It's pain in the ass but nothing that I couldn't solve in a day with a script written with Fabric.

<comment><USER12> _My script makes sure that if something goes wrong (i.e. a new version doesn't work or has a bug), it's easy for me to revert to previous version._

Isn't that the point of version control? Any DVCS makes that easy to do.

<comment><USER13> The point is that there is an existing application in production and a new application is being deployed. If the deployment fails, it simply does not enable the new application, leaving the existing one running. Using version control to rollback a running application is inadvisable (yet quite common).

</comment></comment></comment></comment><comment><USER14> The links for securecookie and mux links are down (redirecting to <https://www.gorillatoolkit.org/>, which doesn't respond).

<comment><USER15> The documentation is also available on GoDoc:

<http://godoc.org/github.com/gorilla/securecookie> <http://godoc.org/github.com/gorilla/mux></comment></comment>


GMO tomatoes may stay firm longer - <AUTHOR> http://www.wsj.com/articles/gmo-tomatoes-may-stay-firm-longer-1469458926 <comment><USER2> Because that's the number one thing that people who like to eat food are asking for, right? "Make 'em like softballs!" they cry. "I should be able to throw 'em into my shopping cart from across the store without bruising them!" "Make sure I can leave them on my counter at home for a month with virtually no detectable changes in their styrofoam-like texture and flavor!"</comment>


Tell HN: A realization about working for myself - <AUTHOR>

So I have been a web developer for a while, since college I would pick up contract jobs, making sites for customers etc. And though it brought in some nice side income, I was never really driven to do it. I didn't wake up thinking about my client's websites. Part of this was that they were usually simple projects, never really web apps, just simple websites or blogs.
With my recent project Shove.mobi, though it is just a week old, I realized something critical. This was something I wanted, for me, and that I hoped might be useful to others. But largely, I was building it for myself.
I used to think, based on the motivation and lack of drive for contract work, that I wasn't really cut out to be self-employed. But I realize now that I'm not cut out as a freelance web designer/developer. I want to develop apps that I come up with or that I am passionate about.
Has anyone else had this realization moment? <comment><USER2> I've had some of those moments, and then things change for me a bit. Been self-employed for a number of years now, primarily doing freelance web app development, but also some training, publishing, and a few other things. There's not been one thing that has yet clicked as my lifelong passion, but that's been OK. I didn't find things clicked when I was taking fulltime w2 gigs either, so it's not been much of a change in that respect.

Congrats on finding that moment for yourself - I hope it lasts for you :)

</comment><comment><USER3> "I didn't wake up thinking about my client's websites."

No, but I wake up knowing that I have the freedom to wake up anytime I want, be it 8am or 2pm.

<comment><USER4> What's even more fun is being so excited that you wake up early to work on your own project.

<comment><USER5> Really? I can never work on projects when I wake up, I don't know why, but I need about an hour or two of other activities (such as watching youtube) before my brain can get to work.

</comment></comment></comment><comment><USER6> I have been doing freelance work for about 4 -5 years now. I am coming to the conclusion that I would like to work on a signal project/product without the burden of reporting hours.

I hate having to always explain to someone what I did for the last 8 hours.

<comment><USER7> It's also a completely different experience to see something through beyond launch, and refine it over the course of many years.

</comment></comment><comment><USER5> I had a somewhat similar experience. Working on various projects for specific clients isn't so exciting. Although I must admit I learned the most from it, but I never felt that it's what I'm cut out to do.

I think the difference between working on an application vs doing a contract work is having someone mandate to you what you have to do and when you have to do it, vs deciding yourself what you want to work on.</comment>


Ask HN: Is there a public 3rd party GitHub status monitor? - <AUTHOR> When I access GitHub and get an error, I'm often unsure whether it's because of issues with my connection or because GitHub is genuinely not working and hasn't updated its status page.
Is there an existing third party GitHub status page with a higher resolution than the official GitHub status page? I'm asking here because discussions about GitHub uptime are popular and I hope someone has already found a solution.
Let's keep this thread about high resolution status monitoring instead of GitHub uptime, we've had a lot of the latter already, e.g. https://news.ycombinator.com/item?id=22763270 . <comment><AUTHOR> In case anyone finds this later: I've searched more, by looking at demo pages of popular status monitoring tools hoping to find GitHub, and I've found one such demo: [https://updown.io/d043](https://updown.io/d043)

</comment><comment><USER2> Could you use a generic down detector? [https://downforeveryoneorjustme.com/github](https://downforeveryoneorjustme.com/github)

<comment><AUTHOR> That works, but I was hoping for something nicer, maybe with:

\- ping from different areas, for making sure that calls from my area are being served

\- recent history, if my task failed 5 minutes ago and I want to check why</comment></comment>


We got rejected by Y Combinator - <AUTHOR> http://www.karenx.com/blog/we-got-rejected-by-y-combinator/ <comment><USER3> Vinod khosla (Sun co-founder) says "Fail Fast", meaning that learn all the possibilities (specially the dead ends, how not to use) of the new technology/idea before competitors do. So when the competitors place their baby step on the idea you're more far from the starting line. Good luck.

<comment><AUTHOR> Thanks for the support!

</comment></comment><comment><USER4> Karen, I don't have any special insight into pg's mind (having never met him), however when I watched you at Startup School, two things struck me about your session during Office Hours.

The first was pg seemed intrigued by the idea. He was even feeding you additional ideas about where you could take it. It felt a little like you hadn't fully thought through why what he was saying was good or bad. One thing you could have concentrated on would be whether your idea has any kind of network effect and if you really can keep getting people to come back to your site. The barrier to entry for starting something like this is pretty low, so focusing on the community is really important.

The second point was that Finbarr didn't do much of the talking. pg is a geek at heart, so I felt like if Finbarr could have talked more about the technology choices, things could have gone better. The choice not to use YouTube to me (despite YouTube being down as I write this) seemed really odd and I think that didn't sit particularly well.

Being rejected by YC certainly isn't the end of the world, so stay positive and keep plugging away at it.

</comment><comment><AUTHOR> Here's the cache in case my blog goes down:

\</comment><comment>

Why is this news?

Well, it's not supposed to be. News is when so-and-so raised a $15 million round from Sequoia-this or Andreessen-that.

Yesterday, we had an interview with Y-Combinator for our video startup, [http://giveit100.com](http://giveit100.com). We just had a pretty good launch earlier in the week. My co-founder Finbarr is more reserved than I am - <USER2> doesn't like to count his chickens before they hatch. But me, I had practically made myself a chicken sandwich. We'd get in for sure!

A little embarrassing to admit, but I'd already started writing my self- congratulatory Facebook status in my head. "So excited to announce that 100 has been accepted into the next batch of Y-Combinator," I'd say.

Then at 8pm: we got our rejection email.

Ugh.

Here's the Facebook status that went out instead: \</comment><comment>-

So excited to announce that we had our YC interview today and ...didn't get in.

You only hear about people when they succeed huh? I'm way guilty of this too. Only posting the good news on Facebook. Painting an artificially glossy version of my life.

But I better start practicing what I preach. Show my mistakes. Don't be ashamed of failure. Be proud I tried my hardest. Fall 7 times, get up 8.

YC gave us some good, actionable feedback in their rejection email. They even challenged us to prove them wrong. I appreciate that.

Challenge accepted.

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

Then a cool thing started happening. One by one, people left comments about how they'd failed before. Joel Gascoigne from Buffer wrote how they didn't get into YC - they didn't even get an interview. People told me about other YC founders who didn't get in on their first try. Drew Houston from Dropbox is one of them.

Overall, Silicon Valley is pretty good about embracing failure. Here, it's not taboo to say you started a business and it failed. I don't know anywhere else like that.

But that's easy to forget when we see shiny headlines on TechCrunch. We're only seeing a brief moment of glory. We don't see the self doubt, the lost sleep. The dozens - sometimes hundreds - of rejections from investors.

We're good at embracing failure - but we could be better. Do the scarier thing. When we stop hiding our failure, we stop fearing it.

"The master has failed more times than the beginner has even tried."

\- Stephen McCranie

<comment><USER5> I think you have a great idea and 100 will be a great medium for expression. I was glad to see you at Startup School and bummed they didn't invite you then. Keep at it! I think that they had some good advice and questions, but I'm sure you are doing everything you can with such a small team.

<comment><AUTHOR> Thank you. Yes we really appreciated how helpful and specific their rejection email was, it wasn't one of those generic forms. Learn from it, iterate, get better.

</comment></comment></comment><comment><USER6> It would be really cool if people could self-organize, crowd source, support, motivate, etc. a virtual incubator based on the same ideas and techniques as Y Combinator. The barriers to entry for creating products and companies is so small, it's a shame not to keep trying. After all, software is still eating the world:

[http://www.wired.com/business/2012/04/ff_andreessen/5/](http://www.wired.com/business/2012/04/ff_andreessen/5/)

And all you really need is a lot of dedication:

[http://quotesondesign.com/john-carmack/](http://quotesondesign.com/john- carmack/)

</comment><comment><USER7> Maybe I missed it, but where's the failure part? The author's startup didn't get into YCombinator. That's _not_ failure. She and her co-founder did _not_ make any mistakes.

Failure is what happens when your business doesn't go anywhere. The only possible mistake here would be for her and her co-founder to believe that they needed to get into YCombinator (or any other program) for their business to go somewhere.

<comment><AUTHOR> In this context, I'm referring to failure in the "setback" definition. Not ultimate, unrecoverable business failure sense.

</comment></comment><comment><USER8> And now when you succeed in spite of this, it will be that much sweeter!

Never let the failure define you, only let it temper your proficiency so that you and your projects pass through each phase stronger than before.

Just because one does not perceive the value as highly as you do does not mean the world reflects that opinion. Keep taking the shot.

"Go then, there are other worlds than these."

</comment><comment><USER9> There's no shame in being rejected from YC. Nice work to date - and fyi, I'm a fan of the hover play on the site. Looks slick. :)

</comment><comment><USER10> I didn't get at interview either...

</comment><comment><USER11> I ran into giveit100 and I'm planning to use it in the near future. So please keep up the good work!

</comment><comment><USER12> It could mean ycombinator does not have the necessary expertise to help you like they would want.</comment>


Apple iTV detailed: It's like a 42-inch iPad - <AUTHOR> http://www.extremetech.com/computing/117305-apple-itv-detailed-its-like-a-42-inch-ipad <comment><USER2> I hope the 42in is their baseline size and that they have bigger sizes. We're at 50" plasma right now and I'm not sure I'd want to downgrade size.</comment>


"I don't want young black kids to aspire to be rappers or ballers." - <AUTHOR> http://www.complex.com/covers/childish-gambino-interview-know-the-ledge-2014-cover-story/ "Coding is a beautiful thing," he says. "If there is a God, he definitely codes. There are fail-safes in the world. That's code. I don't want young black kids to aspire to be rappers or ballers. Even lawyers and doctors—those are service positions. I want them to be coders. They can make their own worlds then. They don't need anybody else. I love hearing those kids' ideas, all these kids on the Internet. The excitement of making something, that's the spark of God." <comment><AUTHOR> Donald glover on writing code.

"Coding is a beautiful thing," he says. "If there is a God, he definitely codes. There are fail-safes in the world. That's code. I don't want young black kids to aspire to be rappers or ballers. Even lawyers and doctors—those are service positions. I want them to be coders. They can make their own worlds then. They don't need anybody else. I love hearing those kids' ideas, all these kids on the Internet. The excitement of making something, that's the spark of God.</comment>


Azure Will Suspend Gab.ai's Hosting If They Don't Remove 2 Posts - <AUTHOR> https://twitter.com/getongab/status/1027550072932851713 <comment><USER2> For the curious, the posts Microsoft are flagging are listed here: [https://twitter.com/bam_boo_88/status/1027593499166826496](https://twitter.com/bam_boo_88/status/1027593499166826496)

Transcribed should that get taken down:

\---

Patrick Little (@Patrick_Little): Count down to a live stream of me taking a sledge hammer to a holohoax memorial in twelve months.

Will someone take this cross from me?

> Patrick Little (@Patrick_Little): I will see the destruction of at least one > US holocaust memorial in the next 12 months, or I will take a sledge hammer > to one myself.

This is a campaign vow for 2020.

Either a holohoax memorial is revised in the next 12 months in the US

or I will revise one.

<comment><USER2> Ah, should have researched the platform- it appears to be a haven for such activity first and foremost.

[https://twitter.com/getongab/status/1027551223845736449](https://twitter.com/getongab/status/1027551223845736449) [https://twitter.com/getongab/status/1027550622860623872](https://twitter.com/getongab/status/1027550622860623872)

<comment><USER3> The vast majority of "free speech safe" sites are. Where else would they post these opinions?

I also laugh at the poster claiming this violates his free speech rights. The fact that Microsoft does not want to publish his nonsense, as a private company, is one of THEIR free speech rights.

<comment><USER4> I would like to see a hosting provider who says 'all stuff we host for you is your responsibility, and we shall not police it in any way'.

I'm well aware they have the right to run their business however they choose, but I'd pay a premium to know that my hosting provider won't pull the plug on my site based on its content.

<comment><USER3> What's in it for the hosting provider? How many sites are so often toeing the gray area of acceptable conduct that they would monetarily benefit from it? Does it make economic sense?

This is really just the "free market" at work. IMO, this time it's working for the good of society, somehow

</comment></comment></comment></comment></comment><comment><USER5> Did they reply back saying they believe it's a mistake ?

</comment><comment><USER6> Bring on the decentralized blockchain</comment>


HP To Introduce Flash Memory Replacement In 2013 - <AUTHOR> http://hardware.slashdot.org/story/11/10/07/0344214/hp-to-introduce-flash-memory-replacement-in-2013

<comment><USER2> Wouldn't it be crazy/awesome if, after years of cost-cutting and right-sizing and "pivoting" and various CEO's gimmicks, the thing that saved HP was something that came out of their R&D department?

<comment><USER3> If it happens, hopefully people will learn the right lessons.

</comment></comment><comment><AUTHOR> EE Times has a more detailed article with some interesting statistics:

"Read times are less than 10 nanoseconds and write/erase times are about 0.1-ns. HP is still accumulating endurance cycle data at 10^12 cycles and the retention times are measured in years"

[http://www.eetimes.com/electronics-news/4229171/HP-Hynix- to-...](http://www.eetimes.com/electronics-news/4229171/HP-Hynix-to-launch- memristor-memory-2013)

<comment><USER4> I _guess_ that 0.1 ns must be 0.1 us. As stated (also in eetimes), writing and erasing will be at least an order of magnitude faster than reading. That seems weird as writing typically takes more energy then reading.

The only reason I can think of for this to be reversed would be that reading will be destructive. That, however, would make me wonder whether this can be a good replacement for Flash. Think about it: reading the memory would run the risk of erasing it.

<comment><AUTHOR> Well, 0.1 us write times wouldn't make sense with the claim that this can replace DRAM and SRAM, but those claims do seem rather dubious anyway...

</comment></comment></comment><comment><USER5> Don't link to slashdot, link to the original article: [http://www.electronicsweekly.com/Articles/06/10/2011/51988/i...](http://www.electronicsweekly.com/Articles/06/10/2011/51988/ief2011-hp- to-replace-flash-and-ssd-in-2013.htm)

<comment><AUTHOR> I did, yesterday. It didn't make the front page.

</comment></comment><comment><USER6> I really hope this works out because I really want to play around with some programmable memristers and this would help make them cheap.

</comment><comment><USER7> How reliable are memristors, as compared to HDDs and SSDs?

<comment><USER8> Potentially more reliable than both, but that remains to be proven out. HDDs have a 1E14 unrecoverable harder error rate, flash is higher (1E15) The lack of moving parts is a plus for SSDs and memristors but the susceptibility to tunnelling electrons is higher on flash/memristors than in the magnetic domain of HDDs. When they were first talked about at ISSCC the temperature sensitivity of memristors was also mentioned.

I know, not a lot of useful info, my notes are sparse on these guys. I figured we'd see pattern memory (IBM) sooner. Maybe we'll get both, that would suck since they both need high initial costs to quickly offset their development costs. Hard to do in a strongly competitive environment.

[1] [http://spectrum.ieee.org/semiconductors/processors/how-we- fo...](http://spectrum.ieee.org/semiconductors/processors/how-we-found-the- missing-memristor)

[2] <http://news.cnet.com/8301-11386_3-20026553-76.html>

[3] <http://www.sciencemag.org/content/330/6012/1810.abstract>

</comment></comment><comment><USER9> this is really encouraging!

</comment><comment><USER10> This is really exciting, I think there's a lot of potential in memristors, so seeing it used for a practical purposes is great news.</comment>


Elon Musk Shares Awe-Inspiring Animation of What SpaceX Is About to Achieve Next - <AUTHOR> https://www.businessinsider.com/elon-musk-spacex-crew-dragon-astronaut-launch-animated-video-2019-12 <comment><USER2> If you're not a Musk fanboy you're just a hater.</comment>


How my fellow developer stole my Steam game from me - <AUTHOR> https://medium.com/@sickbrick/how-my-fellow-developer-stole-my-steam-game-from-me-57a269fd0c7b?utm=em <comment><USER2> "I made all the RTS buildings, tanks, some enemies, terrain textures and so on. Maxwolf never paid me anything.

Since I never got paid I asked Maxwolf to help me finish my game SickBrick."

Well, there's one of the problems ( _Ignoring the misdeeds of the other person and Steam 's inability to resolve this scenario_). If you're in a situation where this person _won 't fulfill an existing agreement_, don't start another agreement with the person. If they won't fulfill the one, you have no idea if they'll fulfill any of the other agreements.

<comment><USER3> He's a broke <20 years old and lives in Croatia. Stripe was created to solve the payment problem because it's HUGE and doubly difficult outside north America and on a tiny budget. His first "real" game.

Sure, you're right but something like this happened to you or someone you know and you learned that lesson. He learned it , hindsight is 20/20 cut the guy some slack. It's not like the other dev was the first developer to let a deadline slip

<comment><USER4> I'm not saying he's completely fault, but if you go back for seconds and you get the same thing you got the first time, getting shafted, you were basically asking for it.

If someone dicks you over, cut them out of your life. It can be difficult, painful, and possibly the hardest thing you've ever done, but if you don't do it you'll have even more regrets later on when they take advantage of you again and again.

You're broke, you're desperate, you've only got this one contact, and you figure, hey, what's the worst that could happen? Well, now you know. Now you're still broke and even more angry than before.

That being said, if he's got a legal leg to stand on he should lawyer up and go after this guy.

</comment></comment></comment><comment><USER5> And that is why the first rule of business is not to trust anyone. If you do trust, verify that you have are in a position to take action if things start going south.

<comment><USER6> That's a fine "realist" perspective but it hardly absolve anyone being a crappy person, and seems a bit victim-blamey. Besides, this guy had a signed contract and it didn't help.

</comment></comment><comment><USER7> Hindsight is 20/20, etc but a few things don't add up:

1\. You agreed to do some work for him, didn't get paid for anything yet still continue to work with him (and considered him a friend)?

2\. Article says you gave the distributor 10% of sales but contract only says 5?

3\. Going along with a 50/50 split off Steam sales with no written contract and you are doing a majority of the work?

4\. Continuing to partner with him after he steals your assets to release in his name?

</comment><comment><USER8> You need to see a lawyer.

<comment><USER9> will probably cost more than he has and he will get from it, plus a lot of nerves

<comment><USER10> Not necessarily. You don't need to pay a lawyer too much to send a strongly worded letter, and that can be enough to scare a low grade scammer into paying back half of his earnings.

</comment></comment></comment><comment><USER11> So we need a way to sign games on steam (or any other publisher) that will act as a proof of authenticity?

I would not be surprised to see the concept of multi-signing crop up soon.</comment>


Ask HN: Has the Touch Bar improved your productivity as a developer? - <AUTHOR> I'm getting a new MacBook soon, and don't want to pay much extra for the Touch Bar, but would consider doing so if there were commands/apps that improve developer productivity.<p>I use vim and a full-fledged JS IDE for development (not sure if it has special Touch Bar commands but will look). <comment><USER2> A few more buttons or a little more screen space won't make you more productive.

The way to be more productive is to work on figuring out underlying problems, coming up with better solutions, using languages or frameworks that automate away repetition (e.g. garbage collection vs. manual memory management).

The ROI on the Touch Bar is probably negative to miniscule. Better to spend that money on a good book that will teach you some useful skills. More on productivity here: [https://codewithoutrules.com/2016/08/25/the-01x-programmer/](https://codewithoutrules.com/2016/08/25/the-01x-programmer/)

</comment><comment><USER3> It has not increased productivity as a developer at all, if anything it has slightly reduced it because sometimes I'm unsure if I managed to hit the ESC key or not. The most frequent buttons I use on it are volume control and screen-saver. Everything else is a wasted space. The one major issue I have with it is that it provides no physical feedback as compared with physical keys, perhaps if it had haptic feedback I would dislike it slightly less.

<comment><AUTHOR> I can see how having to look at the esc key all the time could slow one down. That said, I think I look at all of the other keys -- actually maybe not volume up -- since it's so close to pwr

</comment></comment><comment><USER4> For VIM: I am using CAPS Lock now as ESC key, because there is no physical ESC Key with the touch bar anymore.

Generally: I configured my touch bar to match the old keyboard function keys layout & they never change, no matter if I switch the program. I just don't want to change my behaviour + can't deal with the fact that I can't quickly change volume/brightness + hit play/pause/forward/backwards keys.

<comment><USER5> > can't deal with the fact that I can't quickly change volume/brightness + hit > play/pause/forward/backwards keys.

Do you find this a deal breaker? I use a MacBook and not being able to get a new model without a touch bar is holding me back from upgrading.

<comment><USER3> This annoys me so much, at least provide the option to make certain buttons globally accessible regardless of the applications context.

<comment><USER6> There is a way to do this. It took me a bit of googling but it is possible. I needed the function keys or IntelliJ would be rendered useless

</comment></comment></comment></comment><comment><USER7> A MBP with touch bar costs 1/3 of a new car in my country. We need the high taxes to protect the national consumer electronics industry.

</comment><comment><USER8> I got a Macbook with the Touch Bar, mostly for the Touch ID. It's super convenient!</comment>


The Rise, Fall, and Revival of American Whiskey - <AUTHOR> http://www.collectorsweekly.com/articles/all-american-whiskey/ <comment><USER2> I was reading a whiskey connoisseurs' magazine of some sort at a friend's house. And they basically outlined how due to the popularity and profits involved. A lot of the "smaller" ("craft") distilleries are often trademarks bought by bigger companies from older distilleries that are long out of business. The booze is bought in large batches, relabeled, and resold.

Here is another article on it I found:

[http://www.thedailybeast.com/articles/2014/07/28/your- craft-...](http://www.thedailybeast.com/articles/2014/07/28/your-craft- whiskey-is-probably-from-a-factory-distillery-in-indiana.html)

I like this quote:

Breaker bourbon, the "first bourbon produced in Southern California since Prohibition." [...] company behind the brand, Ascendant Spirits, wasn't started until 2013. Yet, they brag their "ultra small batch bourbon" is aged 5 years. So how do you open a distillery one year and have 5- or 15-year-old whiskey to sell the next? Not by making it.

Reminds me of when recruiters ask for 5 years experience in a language or framework that has been out for less than 3 years.

<comment><USER3> Yeah, this business tends not to be that transparent about where they source their whiskey. It ranges from the big boys (Diageo is doing it with Orphan Barrel) to the small labels. Most of the new brands just source MGP; which is not necessarily bad but it's not fun to buy bottles from two different brands that taste pretty much the same.

<comment><USER4> Whiskies with a high percentage of rye are actually fairly difficult to produce. The enzymes in common use for breaking corn starches down into sugars don't work well on rye, and the typical result is incomplete conversion, a gummy mess, clogged machinery, and a lot of extra cleaning and maintenance. Producing pure rye whisky efficiently requires special strains of fungi, etc.. For this reason and the relatively low demand for pure rye, there are very few producers out there. A mixture containing a small percentage of rye and a larger proportion of corn or other grains is much easier to work with, but a lot of whisky producers simply buy rye whisky and blend it it with their own whisky.

Other "producers" buy rye whisky and sell it unaltered. For example, Whistlepig rye and Masterson's Rye, whose websites both make it sound like they produce these products, are made from rye shipped South from Alberta distillers. Alberta Distillers supplies a significant percentage of the rye used in premium "artisanal" rye whiskies "made" in the U.S. as well as for flavoring various other blended whiskies. Oddly enough, their own whiskies (Alberta Premium and Alberta Springs) aren't typically sold South of the border.

Every few years Alberta Distillers puts out an extremely limited bottling. The last one was a 30-year-old 100% rye priced at a truly bizarre $50 a bottle. It literally sold out _before_ hitting shelves. I had to ask a liquor store manager to set aside a bottle for me, and when I picked it up he said they weren't even bothering to put the stuff on shelves. People remembered the 25-year old bottling from 5 years previous and the bottles were all spoken for while still in the crate. The stuff was amazing. They could have sold it for $500 a bottle and it would have offered better value than any scotch priced that high (Honestly, a lot of scotches priced that high aren't very good at all). If you happen to be in Canada when the 35-year-old edition comes out...

</comment></comment></comment><comment><USER5> Whiskeys are making their way to China now; they are the newest wrinkle for China's growing middle-class. I don't think alcohol in general,the most popular legalized drug with all its ill-effects on society, ever goes down too far in sales. Types of alcohol are just 5 to 10 year trends outside normal consumption. It was tequila (Patron and others)for a while, vodka (Grey Goose and other boutique vodkas)before that, gin had a renaissance, and now whiskey - surprise. I remember growing up in Brooklyn, and people would trade food stamps for cash so they could buy beer instead of food.

</comment><comment><USER6> Whiskey is probably my favorite alcohol these days and its rich history is always entertaining. Also see

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

</comment><comment><USER7> India is the world's largest consumer of whiskey (despite alcohol in India taxed at 150%).

Every known international manufacturer sells in India. single malts are really big. P.S. alcohol advertising is illegal in India.

Yet the only american whiskey (sort of .. I'm including bourbon) we get is Jack Daniels. There are marginal sales of Jim Beam.

This is also true for wine and beers. We get average quality wine and beer from around the world.. but none of the spectacular Californian wine and ales. I think American F&B companies have not yet figured out the India and China markets .. like the luxury markets already have.

<comment><USER8> How much of the whiskey consumed is locally made? It seems like the US is by far the largest consumer of Scotch whisky. I would guess most of the whiskey imported is from either Japan or the US but that's mostly because I can't think of any other top whiskey producing countries. (I guess Ireland is the only other one)

<comment><USER9> Huge amounts - I stumbled upon this story recently and it was a pretty interesting read - [http://qz.com/475494/how-a-cheap-indian-whiskey-beat- smirnof...](http://qz.com/475494/how-a-cheap-indian-whiskey-beat-smirnoff-to- become-the-worlds-largest-spirits-brand/)

</comment></comment></comment><comment><USER10> this was a decent related read

[http://www.amazon.com/Bourbon-Empire-Future-Americas- Whiskey...](http://www.amazon.com/Bourbon-Empire-Future-Americas-Whiskey- ebook/dp/B00O2BS47O)</comment>


Yahoo released aggregate sum of government data requests [Jan-Jun 2013] - <AUTHOR> http://l.yimg.com/pj/info/tr/Yahoo_Transparency_Report-Jan-June-2013-1.3.xls

<comment><USER2> For those who don't want to deal with a .xls spreadsheet, I grabbed it, added a couple helpful columns (accounts per request and requests per 100m population), took a screen capture, and uploaded the PNG to imgur.com.

You can see it at: [http://i.imgur.com/xhZIG6C.png](http://i.imgur.com/xhZIG6C.png)

The US has the most total requests, by far, but is only 5th when population is considered. Here are requests per 100m population:

       11869 Hong Kong
        8434 Taiwan
        5234 Germany
        4386 Italy
        4030 United States
        3273 Australia
        2864 France
        2853 Singapore
        2761 United Kingdom
        1584 Spain
         457 Argentina
         370 Ireland
         209 New Zealand
         158 Brazil
         136 Mexico
         123 India
          86 Canada</comment>


Single Writer Principle (2011) - <AUTHOR> https://mechanical-sympathy.blogspot.com/2011/09/single-writer-principle.html <comment><USER2> Wonderful stuff, as usual. And, because it's written from first principles, it holds up almost a decade later.

</comment><comment><USER3> So I have heard about the idea of OOP being about passing messages between objects, rather than just calling functions with parameters but I can't seem to figure it out in a mental model.

How does passing a message to an object differ from just calling an object's methods with parameters? Is there other good sources for understanding the differences and rewiring the mental model?

<comment><USER4> A large part of your confusion might be that a lot of OO teaching sources define message passing as calling a function.

Message passing allows for you to have the receiver of the message run in a different execution context; for example erlang.

Calling an objects methods with parameters is tied to that execution context.

Message passing is a larger concept than OOP. Microkernels for example are built around message passing as the means of communication.

<comment><USER5> > Calling an objects methods with parameters is tied to that execution > context.

Not necessarily - this depends on the language, or rather, on the object model. But consider COM or CORBA: you call a method, but the object might be on a different machine altogether.

</comment></comment></comment><comment><USER6> Can't believe this is almost a decade old. I recently tried explaining this concept during an interview and got a lot of strange looks. Most devs (even senior) were taught von Neumann architecture and assume all memory is shared. This is an excellent explainer and one I'll refer to in the future.

<comment><USER7> What's a way to implement this in practice? Does this article imply that if 1 core was writing the value of a variable (without any locking) and other cores were simply reading the value of that variable without any locking, it will just work correctly due to underlying CPU cache coherency protocols?

</comment></comment><comment><USER8> This principle is the basis for the extremely better throughput of ring buffers over other so-called "lock-free" queue structures. Things labeled "lock-free" typically are not; instead, they rely on locks at the hardware level that are subject to the same sort of contention seen with software- visible locks, such as mutexes, and the same sort of stalls, with just smaller numbers. So, a lock-free queue is often little faster than a locking one.

But a ring buffer suffers from none of these overheads. The reader has to be sure to keep up with the writer, over a short enough time scale not to "get lapped"; but you need that anyway.

<comment><USER9> > Things labeled "lock-free" typically are not; instead, they rely on locks at > the hardware level that are subject to the same sort of contention seen with > software-visible locks, such as mutexes, and the same sort of stalls, with > just smaller numbers.

This isn't quite true. The 'hardware level lock' you're referring to are memory ordering primitives that allow you to coordinate threads of execution in a way that allows them to see memory operations in sequences that come to the same thing. Your notion of a software-visible lock is a construct built out of these primitives: the simplest mutex is an Acquire/Release pair. The difference might seem subtle -- and it is -- but it's very important. A lock requires that all coordinated threads operate in lockstep with one another at some point in their execution. A lock-free structure does not. A lock-free structure will be built to allow coordinated threads to see memory in ways that come to the same thing but in ways that don't require lock-step. A subclass of these kinds of structures are lock-free/wait-free, that is, they provably do not have any 'stalls' where coordinated threads must wait for the forward-progress of one of their cohort before they can operate, if I understand correctly what you're referring to as a stall.

I do however acknowledge that x86 will coordinate your threads in some cases because of it's strong consistency guarantees. That is a complication.

> So, a lock-free queue is often little faster than a locking one.

This strongly, strongly depends on the environment you're running in and the nature of your queues, how over-contended your structures are. OS provided locks will often have hooks into the scheduler, which is a significant win over naive user-space spins. That's not to say you can't signal the scheduler yourself about being unable to proceed, and this is often done. I will readily admit that lock-free structures -- especially wait-free -- are specialty structures and you're almost surely better off starting with a traditional locking structure, unless everything you're doing can be done with relaxed ordering.

> But a ring buffer suffers from none of these overheads.

This is not quiet accurate. While there are many various designs for ring- buffers -- do you want MPSC, MPMC, do you need to detect 'lapping' etc etc -- any of the variants that are thread safe that I'm aware of will have to participate in some kind of explicit memory ordering, not to mention memory reclamation.

<comment><USER8> "Not quite true", here, meaning not false. Hardware sequencing differs in detail from mutexes, but has to solve many of the same problems, ultimately much the same way. If your atomic-swap fails, you have to loop and try again, which absolutely counts as a stall, particularly counting your branch misprediction. A mutex ever held much longer than that mispredicted loop would indicate poor design.

And, of course, a single-writer ring buffer is entirely different in character. Writes cannot stall, and readers can work wholly in parallel without contention of any kind. (Multi-writer ring buffer? Good one.) New Intel chips have an instruction for a reader to sleep waiting on a cache invalidation, allowing the other hyperthread to run unimpeded by its partner's spin loop.

Lapping is easy to detect with a generation counter if needed, but anyway it is better just to keep up. Detected, being lapped is generally a system failure anyway.

</comment></comment></comment><comment><USER10> Discussed just a bit at the time: [https://news.ycombinator.com/item?id=3219193](https://news.ycombinator.com/item?id=3219193)</comment>


Show HN: LambStatus – Status page system built on AWS Lambda - <AUTHOR> https://github.com/ks888/LambStatus <comment><USER2> The demo pages looks really nice!

Public: [https://demo-status.lambstatus.org/](https://demo- status.lambstatus.org/)

Admin: [https://demo-admin.lambstatus.org/](https://demo- admin.lambstatus.org/)

</comment><comment><USER3> When I discovered that Route53 won't healthcheck private DNS entries, I rolled my own pinger. Mine sucks. Yours is double awesome.

</comment><comment><USER4> Looks great. Email notification of incident to subscribers is must. I couldn't find it.

You can hook it up with SNS I think.

<comment><AUTHOR> Thank you. Actually the email notification is supported but disabled by default. Here is the doc: [https://lambstatus.github.io/set-up-email- notification](https://lambstatus.github.io/set-up-email-notification)

</comment></comment><comment><USER5> This looks awesome, since it's lambda and node.js can it be deployed to multiple providers e.g. Google and MS?

<comment><AUTHOR> Thank you. Unfortunately it can't so far since it depends on other AWS components like API Gateway and DynamoDB.

</comment></comment><comment><AUTHOR> Hey HN! Thank you for all the interest! Feel free to ask any questions and I'll do my best to answer them!

</comment><comment><USER6> this is awesome

<comment><AUTHOR> Thanks!</comment></comment>


Trying to take back control of your mental health - <AUTHOR> Hi all,
I recently wrote this post (https://psiloveyou.xyz/married-to-someone-with-anxiety-d5bab822ba2d) that prompted a really good discussion on HN - https://news.ycombinator.com/item?id=13037164
After speaking with my wife, and reading comments people we had, we thought we'd try and write a follow up that is aimed at looking at more practical advice. Specifically we have looked at what helped us.
Hope it is of some use and feel free to add comments so I can update the article with other people's suggestion.
The article is here - http://www.getinspired365.com/articles/taking-back-control-of-your-mental-health
thanks <comment><AUTHOR> My new article - [http://www.getinspired365.com/articles/taking-back- control-o...](http://www.getinspired365.com/articles/taking-back-control-of- your-mental-health)

Original article - [http://www.getinspired365.com/articles/married-to-someone- wi...](http://www.getinspired365.com/articles/married-to-someone-with-anxiety)

HN Discussion - [https://news.ycombinator.com/item?id=13037164](https://news.ycombinator.com/item?id=13037164)</comment>


The most essential list of resources for Front-End beginners - <AUTHOR> https://github.com/thedaviddias/Resources-Front-End-Beginner <comment><USER2> Equally important is a good webdev IDE. I say this as a hardcore vim/emacs user.

Try webstorm:

       brew cask install webstorm

Then run `webstorm foo/` to open the webapp located in folder foo. It works with basically every type of webapp in existence.

It'll look like this: [https://i.imgur.com/z2euynI.png](https://i.imgur.com/z2euynI.png)

Now tap the shift key twice. It'll pop up omni completion. You can type any partial filename, any partial symbol name, etc, and it will take you to it.

Note the ten thousand quality of life improvements. Example: when looking at a CSS file, #ff0000 will render with a red background color. (The background color of the text is literally the color that the text represents.) And clicking on it brings up a color swath.

Changes appear on your website as quickly as you can type. When you're editing solely HTML and CSS, there's no such thing as a refresh. No need. You just type.

Here's an Angular 2 project ([https://github.com/preboot/angular- webpack](https://github.com/preboot/angular-webpack)):

[https://i.imgur.com/vb4uDMw.png](https://i.imgur.com/vb4uDMw.png)

It's a bit hard to tell, but webstorm has deep awareness of what your code represents. Notice the tags like "description", "moduleDef", "assertion", etc. Those are hints about what each function expects.

Want to see documentation? Hover your mouse over any symbol. For example, hovering over "it" gives:

[https://i.imgur.com/4Xv4BMb.png](https://i.imgur.com/4Xv4BMb.png)

I could go on for days. You may have heard of the Brackets IDE, but in my opinion webstorm completely wipes the floor with them. Live Edit (hot reload) is far better... Actually, rather than list out ten things, I'll just say "everything is far better."

Not everything I've demoed here is turned on by default. You should expect to put a day or two of work into configuring your editor. But once you do, you'll be a monster of productivity.

Have I mentioned that Webstorm has a Vim plugin? Preferences -> Plugins, "vim", search, install, done.

</comment><comment><USER3> Interesting that there is no mention of eslint. I've always found that the best way to learn a new language is to immediately install the linter and its associated plugin for whatever IDE you're using for instant feedback about potential anti-patterns / dangerous code while you work. Also curious that there's no mention of typescript: a lot of companies have already made the transition because it makes huge projects much easier to manage and read.

<comment><USER4> +1 for eslint.

When it comes to typescript, however, I believe that it's better to learn pure javascript first. Understanding -why- typescript is useful has a lot of value, and saying that you know typescript without having spent time using javascript would raise all kind of warning flags during an interview (focus on what's cool/trendy over deeper knowledge and a lack of desire to fully understand the environment in which you work, to mention some).

Also, a beginner frontend developer who reads a list of HTML tutorials will probably not spend a lot of time in "huge projects" in the beginning of their career.

<comment><AUTHOR> @michaelwu, tried to keep it simple for a beginner, and I tried to follow the "web developer roadmap 2017".

ESLint and typescript are more for an intermediate IMO, another list will follow this one and will surely mention ESLint and TypeScript.

<comment><USER4> That's understandable, and to some degree a good decision. But then eslint sometimes help you understand why something is broken, which is especially beneficial to beginners.

Whether to include eslint or not may be worthy of discussion, but since both options have valid points I'll be happy to leave this discussion as is.

</comment></comment></comment></comment><comment><USER5> Thanks for linking to our newsletters! Just one note, the internal link at the top goes to anchor "newsletter" but it's missing the "s" for the link to work. I'll do a PR later if you don't catch it.

<comment><AUTHOR> Your welcome! Don't hesitate to do a PR. Which newsletter are you managing?

<comment><USER5> From that list, I edit Frontend Focus and JavaScript Weekly.

<comment><AUTHOR> Awesome, I subscribed these newsletters since a long time. Really good job! I'm always recommending these newsletters to my team / students. For people who don't spend a lot of time doing research (some students and professionals I know), it's a great way for them to have a short "overview" of what is happening and which articles are more interesting at the moment. Please keep it up!

</comment></comment></comment></comment><comment><AUTHOR> The list was added on Product Hunt . You are welcome to support it! [https://www.producthunt.com/posts/front-end-beginners- essent...](https://www.producthunt.com/posts/front-end-beginners-essentials)

</comment><comment><USER6> I'm just disappointed the american flag is used to dictate english articles...

<comment><USER5> As an Englishman, I think it's probably for the best. No-one would recognize the English flag anyway, and the UK flag looks kinda bleugh at small sizes.

<comment><USER7> It just indicates that its English with the proper spelling of words. Color, Grey, Coffee (tea <\-- doesn't even look like the correct word).

</comment></comment></comment><comment><USER8> Nice list. I'd also add Node and NPM since you can't do much front-end without those these days.

<comment><USER9> "Can't do much without those"... Speak for yourself. Anything in frontend is possible without ever touching Node.

<comment><USER4> It is possible, but it's not the usual work flow for frontend developers (given the huge number of installs of things like react, angular, etc).

<comment><USER9> Sure, and I'd like to learn it I guess, but I'm too busy looking at interesting stuff in frontend like working with audio and getting webgl things happening. Frontend has diverse meaning these days.</comment></comment></comment></comment>