X to close - <AUTHOR> https://medium.com/solve-for-x/x-to-close-417936dfc0dc <comment><USER3> As an Atari ST user from 1985 to roughly 1993, I wasn't expecting the author would actually mention GEM/TOS. I was pleasantly surprised when I scrolled down and, lo, there it is.

That said, since the "X" in this case is white on a black background, I always interpreted the icon as four arrows pointing inward to indicate a shrinking/disappearing motion. In fact, when you closed a window, GEM would play an (inelegant) animation akin to the Macintosh of the time, composed of a sequence of boxes first shrinking from the size of the window to a small box and then shuffling that off to the top left of the screen.

As bemmu points out, the maximize button (at the top right in a GEM/TOS window) is four arrows pointing outward. Incidentally, GEM did not have a notion of "minimize."

Put another way, although I find the Japanese inspiration argument interesting, I don't think there's a whole lot to it. I think it's a fun coincidence.

In any event, thank you for the trip down memory lane and for the fun screen grabs!

<comment><USER4> I don't think there is much relevance in the Japanese argument. One funny detail is that Sony actually inverted in their games the meaning of Round and X for western markets -> making X act as "validate" and Round as "Back/Cancel", the exact opposite of what they do in Japan.

As for "X being a true icon", I don't know. For me, it could stand as well as an abbreviation for "eXit" -> X.

The AmigaOS Workbench used (and still uses) a dot instead of a X. It's just a matter of conventions.

<comment><USER5> Was this true in all of their games? I know early PlayStation games did use O for confirm and X for cancel - even a few years into its lifetime, this was the case as Final Fantasy VII is an obvious example.

<comment><USER4> Are you talking about the Japanese version of Final Fantasy VII or the western version ? I have the Japanese version at home, I can check quickly if needed.

<comment><USER6> Both versions use O to accept and X to cancel. In the european FFVIII hovewer it was switched around. I think only early and rushed ports of japanese titles used O to accept on the playstation.

It's still true today, for instance dark souls on the ps3 uses O to accept on the japanese version and X on the western.

I'm still not sure why Sony did that by the way. While I'm willing to believe that X strongly means "bad/false" in japanese, I don't feel like it really means "accept" in western cultures as far as I know. When the playstation came out I don't think I would have had a lot of trouble accepting O for accept and X for cancel.

<comment><USER7> I think in FFVIII it was Triangle to cancel. (O was the menu button.) They completely jumbled it all up for some reason.

<comment><USER8> Triangle was the menu button, O for cancel, X to accept/action, Square to play Triple Triad.

<comment><USER9> I believe I had to remap 'menu' back to Triangle when I played through it on my Vita last month. Could be misremembering though.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Another old example.

WordStar: Used "X" to Exit to system in its main menu ([https://www.flickr.com/photos/markgregory/6946218793/?rb=1](https://www.flickr.com/photos/markgregory/6946218793/?rb=1)) - I do not know the revision shown in the screen shot.

According to Wikipedia ([http://en.wikipedia.org/wiki/WordStar](http://en.wikipedia.org/wiki/WordStar)) WordStar was released in 1978. Which moves the date back to at least 1978 to use X for exit.

However, there is possibly a very simple explanation that the blog posting overlooked. In text menu's, such as WordStar's, which were quite common for a lot of software from that era, using the word "Exit" to mean "leave this program/application" was also common. When one goes looking for a single character memonic for "Exit" to build in as a keystroke to activate the "Exit" command from the menu, one has four choices: [e] [x] [i] [t]

Since [x] is an uncommon letter, while e, i, t, are more common, and therefore more likely to be used for triggering other commands in the menu(s), choosing [x] to mean exit meant that the same character could likely be used as a universal "leave this menu" command key across all the menus.

Which would then lead to the common _F_ile->E_x_it command accelerators in drop down style menus (whether in a GUI or in a text menuing system). [x] was unlikely to have been used for the keyboard accelerator for other entries in the "file" menu, so picking e[x]it was a safe choice.

It is not a far reach from _F_ile->E_x_it using [x] as its accelerator key to labeling the title bar button that performs the same function with an X as well, to take advantage of whatever familiarity users might have with the drop down menu accelerators

<comment><USER11> In WordStar it's a little more nuanced than that.

First, it's properly ^K X, as the ^K prefix subcommands block/file actions, as written by Rob Barnaby into all the WordStar versions starting with CP/M.

Second, ^KX as 'exit' means to save the latest revisions out to file before quitting, while ^KQ, 'quit', means to abandon the revisions. You might get a confirmation dialog and a chance to change your mind before you're dumped back to the commandline.

Current-convention iconic close-window behavior more closely emulates the latter.

<comment><USER10> Correct on the commands while editing a document, but I was specifically referring to the WordStar start screen before one begins editing a document (check the flickr link) where it has "X EXIT to system" (the all caps is also in the screen shot).

On WordStar 7.0a for dos, the main start screen menu selection is "X exit WordStar".

</comment></comment></comment><comment><USER12> [http://toastytech.com/guis/ns08.html](http://toastytech.com/guis/ns08.html)

NextStep 0.8, '88 vintage.

<comment><USER13> Good find. That's clearly an [X] in the upper-right corner.

<comment><USER4> Yeah, but still more recent than Atari's Gem.

<comment><USER12> The Atari Gem thing is not an X, it's actually supposed to be a gem. It's just confusing because of the low-res image. Take a look at

[http://toastytech.com/guis/gem11menu.png](http://toastytech.com/guis/gem11menu.png)

<comment><USER14> That's not GEMTOS, that's GEM for DOS... big difference...

<comment><USER12> I was looking at the wrong end of the window, to boot.

[http://en.wikipedia.org/wiki/Atari_TOS#mediaviewer/File:ST_D...](http://en.wikipedia.org/wiki/Atari_TOS#mediaviewer/File:ST_Desktop.png)

Looks pretty X-like. It seems GEM itself was licensed from Digital Research but their GEM didn't use X.

Edit: Fixed DEC to DR, as pointed out by reply comment below.

<comment><USER15> I doubt DEC had anything to do with GEM. It was a product of Digital Research (same company that gave us CP/M, MP/M and DR-DOS)

<comment><USER12> They didn't, I just brainfarted. You know, [http://vt100.net/dec/alpha_era_logo_small.png](http://vt100.net/dec/alpha_era_logo_small.png) and all that.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> Interesting, but the connection to symbols from Japan seems a bit dubious (or at least not very recent). The term "cross out", and hence the use of an "x" to indicate negating something, seems to have been in common use in English since at least the 1920s: [https://books.google.com/ngrams/graph?content=cross+out](https://books.google.com/ngrams/graph?content=cross+out)

<comment><USER17> A few counterpoints.

"X marks the spot"

Checking a box to indictate your selection on a form or ballot.

I can't think of any more off the top of my head.

<comment><USER18> Checkmarks (positive, accepted item) are quite often opposed to X marks (negative, undesired item).

</comment></comment></comment><comment><USER19> It can also be thought of as a pun -- when you want to "exit" an application, you "X it".

<comment><USER20> I'd describe that as "verbing" it rather than "punning" it. The verb makes sense too, when you take keyboard short cuts into account. A very common short cut to exit a program (in Windows at least) is File->Exit, which translates to `Alt+F, X` so you do, in fact, "X it".

</comment></comment><comment><USER21> Wow, I had always thought the "X" was like an elevator close button. Sort of like a greater-than sign and a less-than sign put together: ><.

<comment><USER22> That's interesting... is the latin alphabet your native script?

<comment><USER21> Yes, English is my first language. I don't know why I internalized that symbol the way I did. And looking at the Atari TOS screenshot, I would have said the symbol in the upper right corner looked like an elevator "open" symbol, something like <>. But thinking more deeply, >< and <> are in only one dimension. They are good for expressing the idea of "close" and "open" respectively, but they fail to acknowledge the two-dimensional character of a window. So, I like what some of the other posters have said about four arrowheads pointing in and out respectively. That said, the symbol of two diagonal, outward-pointing arrows in the upper right corner of Mac OS X windows now strikes me as brilliant; in a minimal way, the idea of maximizing in two dimensions is expressed.

</comment></comment></comment><comment><USER23> The Acorn Arthur operating system, a precursor to Risc OS used a sort of fat X icon to close windows in 1987

[http://www.mjpye.org.uk/images/screens/arthur2.gif](http://www.mjpye.org.uk/images/screens/arthur2.gif)

<comment><USER24> I never used Acorn Arthur but I did use RiscOS 3 whilst at primary school circa '91, and this had an X in the corner: [http://www.mjpye.org.uk/images/screens/riscos-02.gif](http://www.mjpye.org.uk/images/screens/riscos-02.gif)

I'm sure the GUI design of RiscOS 3 helped to inspire Windows 95.

<comment><USER25> I don't remember where the [X] came from specifically but there were a bunch of Brits on the Windows team at the time (myself included) and we had a number of Archimedes machines around. A _lot_ of Lemmings was played.

I remember there was nearly endless debate about where the [X] should go so people wouldn't accidentally. I think the desire to make it visually distinct was a big factor.

<comment><USER23> Interesting. That surprises me - I'd always assumed that the UK scene didn't have much influence on the US technology world.

<comment><USER25> At the time Microsoft's Languages Division was run by a Welsh guy (David Jones) and he liked to hire fellow Brits.

</comment></comment></comment></comment></comment><comment><USER26> RiscOS had the x as well in the late 1980s

edit - Here's Arthur, the precursor to RiscOS in ~ 1986 - [http://www.rougol.jellybaby.net/meetings/2012/PaulFellows/10...](http://www.rougol.jellybaby.net/meetings/2012/PaulFellows/1024/IMG_8131.jpg) \- It has nice x icons.

<comment><USER27> Here's a cleaner shot: [http://upload.wikimedia.org/wikipedia/en/f/f7/Risc_OS_311_De...](http://upload.wikimedia.org/wikipedia/en/f/f7/Risc_OS_311_Desktop.png)

Until the NewLook sprite set, it looks more like a weird flower shape than an X.

Here it is with NewLook: [http://www.guidebookgallery.org/pics/gui/desktop/full/riscos...](http://www.guidebookgallery.org/pics/gui/desktop/full/riscos37.png)

Clearly now an X.

<comment><USER28> That's RISC OS 3, which is several years later. Arthur already had the X in 1987, see for example [http://mobile.osnews.com/story.php/18941/mobile-opt- out.php](http://mobile.osnews.com/story.php/18941/mobile-opt-out.php) . (Later than the 1985 find in Atari OS of the original article, but still interesting.)

As far as I know, Acorn's RISC OS also pioneered the icon bar and the context menu.

<comment><USER27> I see that, but it's the same symbol as pre-NewLook RO3, and is only charitably described as an "X". It's more of a splat.

</comment></comment></comment></comment><comment><USER29> _In this early demo (Codename: Chicago), the minimize and maximize buttons have been redesigned, but the close button remains the same, and to the left as before._

I wonder where the author got the idea that the [-] button at the top-left was a close icon. It was the "Control Box", a menu icon. AFAIK it's still there, just invisible -- hit alt+space to open it.

Disclaimer: I'm currently unable to test that.

<comment><USER30> If you double-click it, it closes the application. It was converted from a picture of a spacebar to the application's icon, but still functions the same way.

<comment><USER31> Some time ago I was stunned discovering how many Windows users had no idea that double-clicking [-] closes the window. I bet that was the main reason for introducing separate close button.

<comment><USER32> As someone who used Windows 3.1 for years and now uses Powershell on Windows 7 every day at work, I'm ashamed to admit I had no idea.

</comment></comment></comment></comment><comment><USER33> I worked at Atari, on the Atari ST (writing a bunch of systems-level code). My cow-orkers were working closely with DRI to port GEM to the ST hardware. GEM wasn't done yet, and much of the engineering effort there was helping DRI finish it up. A lot of stuff was done on the Atari side of the fence that never made it back to the DRI sources.

I can categorically state that there wasn't any Japanese influence on that "X".

If anything, it was programmer art. We Atari folks were mostly video-game programmers, with _some_ sense of design, and a lot of the stuff that was coming out of DRI was pretty ugly. So it probably got tweaked late a night until it "looked pretty" and wasn't revisited (the ST was started and shipped in about 10 months, so we were in kind of a hurry).

</comment><comment><USER34> As the article shows, the close button on MacOS classic was basically an empty box, but on mousing down on that box, it transformed into something that looks a bit like an x. I'm basing this on what I can see from using [1], but from my possibly inaccurate recollection of using the real thing in the 80s and 90s, some versions of MacOS had an even more "x like" mouse down image on the close button.

[1] [http://jamesfriend.com.au/pce-js/](http://jamesfriend.com.au/pce-js/)

<comment><USER35> Yeah, I was remembering this too. Of course, it also kind of felt like you'd "selected" the box. In fact, I think early checkboxes had x in them on Mac, didn't they? So it might have been a bit of a coincidence ... or an inspiration.

</comment></comment><comment><USER36> The delete/rubout key on many old terminals had an X on it. Like this: [http://www.cosam.org/images/vt220/keyboard.jpg](http://www.cosam.org/images/vt220/keyboard.jpg)

<comment><USER37> The backspace key on my Lenovo keyboard is identical. And if I remember correctly, it was the same key on an electrical typewriter I used in the 90s.

<comment><USER38> On typewriters you would backspace and then overtype an X. Those keyboards tend to just use the word "backspace" or a back arrow symbol.

So typewriters use this symbol when they automate the overstrike or they moved to correction tape.

</comment></comment></comment><comment><USER39> I always found it interesting that Sony swapped the X and O buttons for the western Playstation market. In Japan X (batsu) does mean "back" or "no", whereas elsewhere it is reversed.

<comment><USER40> Reminds me of how I use [x] to tick boxes in paper forms in Europe, but I was told in Asia (Taiwan) that I should use a check-mark instead. x is no.

<comment><USER41> I think check-for-yes, x-for-no is a fairly common convention in English as well, just not in tick-box forms. You do see it in feature-comparisons grids a lot, often with the check-mark colored green and the x colored red, to mix in another convention. Example: [http://prezi.com/pricing/](http://prezi.com/pricing/)

</comment></comment></comment><comment><USER42> They mention X and O on the PS controller but usually in games O is for no and X is for yes. Completely opposite of the batsu/maru, incorrent/correct they were discussing.

<comment><USER43> In Japanese variants, he is correct. When Sony westernized the playstation controller, the O and X functionality was flipped. Sony is yet to comment on the reasons why.

<comment><USER44> It might be because of Sega's consoles, which were more popular in the US than they were in Japan, where Nintendo ruled.

The Genesis' button layout was A,B,C arranged in a diagonal from bottom-left to top-right. A was usually 'accept'. The Dreamcast had a diamond with A at the bottom and B to the right.

Nintendo's Famicom buttons read A,B from right-to-left, and that trend continued with the Super Famicom's diamond, which had A to the right and B at te bottom. The N64 had a weird layout, but again B was to the left of A.

Sony probably focus tested the pad in the US and found that players were more used to Sega's layout.

<comment><USER45> As I said in another comment, almost every Megadrive game I've played lets you use both A and C for accept in menus, so you could use whichever orientation you were more comfortable with. I think anyone who started with Nintendo consoles would instinctually rest their thumb between B and C.

My guess is that Sony thought that X and O wouldn't have as obvious connotations outside of Japan, and figured that people would assume the button closest to the player (X) would be the OK button. In practice, I have found that people with very little exposure to Japanese culture still have the same association with X and O in their heads and get confused when using Playstations ("you press X to accept???"), so I'll curse Sony forever for this stupid regional change.

<comment><USER44> This is almost certainly a result of intense focus testing, so I don't think it would be a design choice by Sony based on cultural differences so much as an observation of user comfort and expectations.

That's not to say that those expectations weren't due to cultural differences.

</comment></comment></comment></comment></comment><comment><USER46> No 'x' to close vi? Was that not always there? I've certainly been using it as long as I can remember; that's not to say it's always been there though - <USER2> anyone know when it was first available?

Edit: seems Wordstar used X too, probably starting in 1978.

<comment><USER47> Well, that's different. You are talking about an "x" that you type in, as opposed to an "x" you can click on.

To answer your question, "x" (short for eXit) was available in vi from the beginning:

ZZ Exits the editor. (Same as :xCR)

Source: Bill Joy's "An Introduction to Display Editing with Vi" [http://www.verticalsysadmin.com/vi/vi_editor__bill_joy.pdf](http://www.verticalsysadmin.com/vi/vi_editor__bill_joy.pdf)

<comment><USER46> Yes, it's different, but the article was trying argue that since "X" wasn't used in that context at the time it was introduced as a GUI element, the GUI element couldn't possibly be referencing the letter as a way of closing a program. While I agree that it's unlikely that the GUI "X" refers to a letter "X", that's not a valid argument for that position.

Edit: and thanks for the vi ref.

<comment><USER47> Understood, and you're welcome!

</comment></comment></comment></comment><comment><USER48> Too bad, that popular Windows applications like Skype and Spotify have gone against this and made "X to minimize". And their making of Alt+F4 also to minimize drives me nuts.

<comment><USER49> X closes the _window_ not the _application_. The only intuition you need is to realise that window !== application.

<comment><USER50> That's not standard. If it's a one-window app, such as Skype, it should close the app. BareTorrent is also sort of a daemon process (where you often want it to live in the systray), and it follows standards. Minimize will put it in the system tray and close actually closes it. It's standard and feels intuitive.

<comment><USER49> I don't think so - I find this very subjective - I've always assumed that X just closes the window, even if it's a single window app. This is consistent, just some applications happen to also run in the background.

<comment><USER51> > _I 've always assumed that X just closes the window_

That was one of the old differences between Windows and OS X behavior (or app- centric vs window-centric).

If you're reffering to Windows, then X usually closed the app too.

<comment><USER52> > If you're reffering to Windows, then X usually closed the app too.

I think his point is the X closes the window, and many, but not all, Windows applications also choose to quit when their (last) window is closed.

</comment></comment></comment></comment></comment></comment><comment><USER53> What about crossing out dates or tasks?

[http://cache1.asset-cache.net/gc/88203236-calendar-with- date...](http://cache1.asset-cache.net/gc/88203236-calendar-with-dates- crossed-out- gettyimages.jpg?v=1&c=IWSAsset&k=2&d=35VXefqbfky52bmcKHRgj0npKe9jkjCibt1WYq781dM%3D)

Or crossing-out an item to "delete" it on the page?

</comment><comment><USER54> NeXT had X buttons to close windows before windows 95, with a very similar look to to win 95 window button styles too. I think NeXTStep 1.0 was in 1989 or thereabouts.

</comment><comment><USER55> It's not X, it's ❌. (90° angle of the two lines) I always hate it when someone actually uses an X. Looks ugly.

</comment><comment><USER56> I recall being mildly shocked when Windows 95 came out with the the [x] button. I don't know why, but I thought that it was somewhat dangerous to allow users to quickly exit an application like this.

Maybe it's because I was used to Windows 3.11, where you had to actually double-click the [-] button to exit an application.

<comment><USER57> Agreed. But more to the point, I'd like to know what idiot decided it would be great to put a close button _right next to_ the maximise and minimise buttons. It's a disaster just waiting for a mis-click. Since Win95, everyone else has copied this particular feature.

First thing I do whenever I do a new Linux install is put the close button on its own on the left where it belongs.

<comment><USER58> On Linux I always eliminate window decoration. I don't even like to have borders, let alone buttons I never use.

I really wish I could do the same on Mac.

<comment><USER57> That's actually not such a bad idea. I have just a single pixel border around the left/right/bottom at the moment, just so I can see the edge of overlapping terminal windows. I have to say I wouldn't miss the titlebar much either.

</comment></comment></comment></comment><comment><USER59> In the Atari TOS screenshots, other icons such as arrows are black on white background.

If the icons in upper left and right are also like that, then the upper left icon is actually four little triangles pointing inwards and not an X. The one on the right is four little triangles pointing outwards.

(Or it could be an X)

<comment><USER14> Atari ST users seemed to see it as an X -- so whether or not it was intentional on the part of the designer, it's not that hard to see how one of these users could have then translated that misconception to the Windows 95 GUI. It's all about perception...

</comment></comment><comment><USER60> UPDATED:

So this little article has travelled pretty far! There were a lot of good tips, comments and insights into the origin of [x] but none as good as this email that I received from Windows 95 team member Daniel Oran.

"Hi Lauren,

A friend forwarded me your Medium piece, "X to Close." He remembered that I had worked on Windows 95 at Microsoft — I created the Start Button and Taskbar — and thought I'd be amused. I was! :-)

It's fun to see how history gets written when you actually lived those long- ago events. I joined Microsoft in 1992 as a program manager for the user interface of "Chicago," which was the code name for what eventually became Windows 95.

So, who was responsible for this last minute change? As far as I can tell, this person is responsible for the proliferation and widespread use of [x] in UI design today.

It wasn't a last-minute change. During 1993, we considered many variations of the close-button design. And the source wasn't Atari. It was NeXT, which had an X close button in the upper right, along with the grayscale faux-3D look that we borrowed for Windows 95.

I wanted to put the Windows X close button in the upper left, but that conflicted with the existing Windows Alt-spacebar menu and also a new program icon, which we borrowed fromOS/2, on which Microsoft had originally partnered with IBM.

Attached is the earliest Chicago bitmap I could find that includes an X close button. It's dated 9/22/1993\. (In attaching the file to this email, I just realized that it's so old that it has only an eight-character name. Before Windows 95, that was the limit.)

Thanks for your very entertaining essay!

Best,

Danny"

I guess you could say case [x]ed.

Thanks again to everyone who helped track down earlier examples of GUIs and early text editors that used [x] to close as well. Fascinating!

</comment><comment><USER61> Windows 95 was the first time I remember using it, and I have been using PC's since TRS model 80. It makes sense, X means "stop" in most cases and stop essentially means close or terminate a process / app.

<comment><USER62> > It makes sense, X means "stop" in most cases

I'm trying to think of any cases where this is true. Stop signs aren't crosses, they have a special shape.

</comment></comment><comment><USER63> Windows versions prior to Windows 95 lacked an "X" button, but double clicking on the left menu icon would close the window.

A behavior still present in modern versions.

</comment><comment><USER18> The use of the X symbol to mean "cancel, close" isn't nearly so mysterious as the author claims. "Cross off" and "cross out" are common phrases in English, and traditionally denoted by an X symbol (the "cross").

There is no reason to suppose that the GUI usage was inspired in any way by exotic Japan. The X as "cancel symbol" has been quite common in the west and indeed worldwide for millenia.

</comment><comment><USER64> If I recall, clicking on the X on old Macs added an X inside the square, so I think there's a step missing from this article.

<comment><USER65> It wasn't really an X, more "stretch marks" to visually indicate the mouse- down event.

<comment><USER64> Odd they didn't use such stretch marks anywhere else.... except perhaps check boxes.

</comment></comment></comment><comment><USER66> "Vi, vim, emacs or edlin?

No [x] to close these 1980's text editors either. X was commonly used to delete characters in-line, but not to close the program."

Hmm... I've used :x to write+quit in Vim for years. And, :X is to encrypt+quit. Don't have a year when that was added though. Could be fun to try and dig that up.

<comment><USER67> >Hmm... I've used :x to write+quit in Vim for years. And, :X is to encrypt+quit. Don't have a year when that was added though. Could be fun to try and dig that up.

:x (short for :xit) was in the original ex written by Bill Joy in 1976. According to Joy[1], ex pulled together ideas from a few different places:

1\. em from QMC, written by George Coulouris[2]

2\. a modified version of ed from UCLA

3\. An early version of ex written by Charles Haley based on the em source in 1976

4\. Bill Joy himself

em uses 'x' for its interactive find-and-replace mode ("e __x __change "), so it didn't originate there. That leaves 2, 3, and 4 as possible origins. I can't find anything on the UCLA ed. If the origins are in 3 or 4, :x is from 1976.

[1] [http://roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf](http://roguelife.org/~fujita/COOKIES/HISTORY/1BSD/exrefm.pdf)

[2] [http://www.eecs.qmul.ac.uk/~gc/history/](http://www.eecs.qmul.ac.uk/~gc/history/)

</comment></comment><comment><USER68> Wow great article. I don't agree with his conclusion that it came from Japan. But it's as good a reason as any I suppose.

One quick thing, IIR Windows 2.0 and 3.0, the '-' button in the upper left wasn't "close". It was a small menu that happened to have close as an option.

<comment><USER69> You could double-click it to close, though. And of course the menu (and the double-click-to-close functionality) is still there, it's just that the [-] icon was replaced with the application's own icon. So contrary to the article, the close button was _added_ in Win95, all the other elements are still there.

</comment></comment><comment><USER70> If you want to see the UI of GEM for yourself, here's an in browser emulator of an Atari ST with GEM:

[http://jamesfriend.com.au/pce-js/atari-st/](http://jamesfriend.com.au/pce- js/atari-st/)

</comment><comment><USER71> OS/2 gets pretty close with a [ / ]

[http://en.wikipedia.org/wiki/OS/2#mediaviewer/File:Os2W4.png](http://en.wikipedia.org/wiki/OS/2#mediaviewer/File:Os2W4.png)

<comment><USER72> This is a screenshot from OS/2 Warp 4, which was released after Windows 95 (source: [http://www.os2museum.com/wp/?page_id=132](http://www.os2museum.com/wp/?page_id=132)). OS/2 Warp 3 that came before Windows 95 had the following set of Window buttons:

[http://www.guidebookgallery.org/screenshots/os2warp3](http://www.guidebookgallery.org/screenshots/os2warp3)

</comment></comment><comment><USER73> IIRC on windows 3.1 keyboard navigation X was always the key for exiting, as E was already used for other things.

I clearly remember that for closing windows one could do alt+f4 (which was itself a shortcut to Close) or open the file menu (Alt+F) and select eXit.

I can't check but I believe it was the same for Write and notepad as well and any other programs that had the Exit option.

So maybe that's where the windows 95 developer took inspiration for the X icon

</comment><comment><USER74> Also: NEXTSTEP.

</comment><comment><USER75> I had a non-technical friend who insisted it was an x because you used it to "x it"

</comment><comment><USER76> Someone in our office insists on calling closing a window 'crossing it off'.

</comment><comment><USER77> When we have completed a todo task we "cross it" to mark it done. i would say the x to close is intended to represent a "crossing out" not the letter x. It is pressed to signify a task has been completed.

<comment><USER78> My thoughts exactly. Not being from exactly a Western culture (I'm Russian) I always saw the X not as a letter but rather as a cross (Russians say "click the cross to close the window"), a sign of deleting or cancelling something by crossing it out. It made perfect sense so I never even thought there could be other explanations. All because in our language there is no X-exit connection.

</comment></comment><comment><USER79> Lots of banner ads make the close symbol e.g. the second from right (swap maximize and close) or swap the functions... thus exploiting muscle memory of people to open the ad :/

</comment><comment><USER80> I think I remember that hitting the "close" button on early, black-and-white macs would make a star appear in the square, signifying the press. Almost like the X...

</comment><comment><USER81> Perhaps it's not an icon, and was meant to indicate eXit. I know must use 'q' for quit, but I've seen a few programs that use 'x'

</comment><comment><USER82> I'm not icon designer, but I just finished the hackdesign.org course (I recommend it) and now I understand a little bit of it and now I always try to think as one.

The [X] icon in graphic windows software (not in WordStar, Vim, etc), and not thinking as a letter of the alphabet (remember that maximize and minimize don't are also) but just as picture, it remembers me something collapsing. Like something bigger in a normal state with the borders collapsing to a center till disappear. As when you turn off and old CRT television (or an Android powered cell phone).

<comment><USER82> I'm still thinking on this... in design you don't think in one part alone, all the context is important. The minimize represents the future state of the window in the bottom bar, and the maximize represents the window occupying all the available area.

I conclude these three icons are really good and well designed.

</comment></comment><comment><USER83> This is a great story, and I enjoyed the look back at all the different OS. sadly if it happened today the x to close would have been patented.

</comment><comment><USER84> I'd always thought of it like the "crossing out" kind of gesture such as drawing an X over something on paper.

</comment><comment><USER37> What about using CTRL-X to exit DOS programs?

</comment><comment><USER85> 'X' always seemed fitting for another, more poetic, reason: The kiss of death (X also represents a kiss). I wonder if it was in the designers mind.

</comment><comment><USER86> Well what you know about `windows` in GUI? What is the first appearence of the `windows` based-GUI?

</comment><comment><USER87> I misinterpreted the title as "X Windows consortium to close."

<comment><USER88> I'm glad I'm not the only person to think that (mind you this was over breakfast and before much coffee).

I did think very briefly that it was something to do with X, then thought X was a variable as in "$X to close".

</comment></comment><comment><USER89> Mouse-wheel to scroll (to intro).

</comment><comment><USER90> For me, the pinnacle of Windows UI design has always been Windows 95.

<comment><USER91> The best windows UI imho was Win2000. Best UI overall would still be OSX, also imho.

</comment></comment><comment><USER92> Mind telling us why this is so important !

<comment><USER93> Because it is a design artifact that has survived decades, and here on HN there are a significant number of people who are designing artifacts that they hope will survive decades. Context is everything - for those people, this article provides a little context. Yesterday's "X" to close is today's 'swipe to close', and tomorrow's [___?___]. Solve for [___?___].</comment></comment>


Show HN: Antelope, free iOS adblocker - <AUTHOR> http://getantelope.com/ <comment><AUTHOR> Hey, project creator here -- been working on this with some friends as a side project. It's a free, open-source adblocker, and it's based on EasyList / EasyPrivacy. It doesn't have 'acceptable ads.'

Hoping to add user-controlled whitelisting soon. Would love feedback on app design / setup flow / any constructive thoughts!

<comment><USER2> Cool! Anything that makes it different from [http://adblockfast.com](http://adblockfast.com) ?

<comment><AUTHOR> It's a different block list -- they wrote their own, this one is based on open-source Easylist / Easyprivacy.

I'm honestly not sure which blocklist is better between mine and Adblock Fast's. If you have feedback, would love to hear.

</comment></comment></comment><comment><USER3> Simple and clean!

Also, the video/animation for load time is hard to compare, it would be great to see them side by side or see actual numbers.

<comment><AUTHOR> That makes sense -- good point.

</comment></comment><comment><USER4> @mattkrisiloff -- What makes this different/better than Crystal? Thanks.

<comment><AUTHOR> It's free / open-source is the main thing. No 'acceptable ads' either.

Crystal costs $1, and they're paid money by Adblock Plus to pass some ads through.

</comment></comment><comment><USER5> Does/will this a) have a companion safari extension for OS X and b) sync it's settings via iCloud?

<comment><AUTHOR> a) Probably not -- I'm a Chrome user on desktop, and uBlock works sufficiently for me.

b) That's a good feature idea! Thanks.

<comment><USER5> Well now that I've installed it and see it has no settings, b) seems somewhat irrelevant..

</comment></comment></comment><comment><USER6> Nice demo. And nice touch to mention the cache, which was on my mind.

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


Should I present myself as a person or as a company in the about page? - <AUTHOR> http://tagbeep.com/about.php

<comment><USER2> This all depends on your target customer.

Put yourself in their shoes, and try to do your best to write what would make them feel comfortable and good about your product for long enough for them to get out their credit card.

Regardless of the size of your company though, it's good to keep in mind that some people are going to be very sensitive to stability when making purchasing decisions, especially if they've been burned in the past by a service that suddenly stopped working. The people who don't care about this, won't care anyway, so for them it doesn't matter what you write.

So I'd be erring on the side of talking about stability, even if you are a one man shop. Especially if your product is still in the early stages and lacking the polish of more mature products.

So perhaps instead of: "After working for 4 years as a server administrator for some medium to large websites and after having a lot of trouble with existing monitoring solutions I decided to build my own."

Maybe something like: "TagBeep was developed in response to a gap in the market for a professional yet simple tool to track website uptime.

Our years of experience in server administration for medium to large sized websites provided us with unique insight into designing a powerful application that takes 5 minutes to set up, and helps you keep your sites up and running 24 hours a day."

Also, while you're clearing in active development and doing a lot to improve your product, I'd hesitate before broadcasting this process that to a small business owner who might not be familiar with the development process, and who is in the decision making phase while looking at your About page. I'd be moving the "Whats Next?" stuff to a dev blog hosted on tagbeep.com/blog.

<comment><AUTHOR> Your comment has some very good advice. I realized now that most of the marketing stuff that I've written was made with the assumption that the user is like me. I like reading about the developing process of an app… that's why I thought it is important to broadcast that. I will try to read more about marketing and about how to know your clients and market. Thanks for your time.

</comment></comment><comment><AUTHOR> I'm a one man startup.

My about page should be personal like: After working for 4 years as a server administrator for some medium to large websites and after having a lot of trouble with existing monitoring solutions I decided to build my own.

\---OR---

Like a company: With our 4 year experience in the server management industry, we build this tool to help our clients… etc

please let me know what do you prefer.

Thanks!

<comment><USER3> I'd preffer the first one, you are a startup so your company won't have 4 years of experience in the industry, you have. Also clients will figure out that you are a one man startup anyway.

Jason Cohen writes exactly about this question in [http://blog.asmartbear.com/youre-a-little-company-now-act- li...](http://blog.asmartbear.com/youre-a-little-company-now-act-like- one.html)

<comment><AUTHOR> the short summary of the article: "Be human. Stop hiding. Be yourself." is a good suggestion

</comment></comment></comment><comment><USER4> Both! Describe the company: "tagbeep's goal is to help administrators...". Then follow it up with a message from "Your Name, Founder": "After working for four years as an administrator, I started this company to...".

That way, the about page projects a professional corporate image while keeping the personal touch. A bit like how GoDaddy is more than just Bob Parsons but he's the face of the company in some ways.

</comment><comment><USER5> It's definitely a good question. You need to consider the pros and cons and decide for yourself.

If you present it as a company, people will be much harsher with their criticism and expectations. If you present it as a person (yourself) people will be more lenient, but at a cost: they could question the longevity of the service; trust, support capacity etc. More important for enterprise customers though, imo.

On the other hand, there is a sense of wanting to help the 'little guy' when I read your about page. Like, if I was on the fence I could be compelled by the fact that it was done by a solo entrepreneur, and want to try it out of support. But, that's probably because I am in the same boat :)

Finally, you could take the middle road and personalise the about page from the perspective of ceo / founder of the company.

<comment><AUTHOR> I don't think I'll have enterprise customers, my target market is formed by small sites that have to be online (eCommerce and services that ask money). So i'm left with the middle path or personal.

Thanks for your suggestions!

</comment></comment><comment><USER6> 3 seconds of thinking about this is at least 2 seconds where you could have been doing something which actually matters but were not.

It is the _canonical_ question asked to avoid actually making or selling stuff on the Business of Software forums.

<comment><AUTHOR> I know what you're saying but I really needed some help on this part of the project. For example when I was listing my site in web app directories or in the chrome web store I always tried to talk about my service in a very personal way (that made it look like a hobby) but after getting a lot of feedback here I will talk about the service in a professional way and about the company and plans in a personal way.

The feedback from this thread is amazing, thanks to all!

</comment></comment><comment><USER7> Among academics, the convention is to use "we" when writing papers irregardless of the number of authors. It's half custom and half a matter of maintaining professional distance.

Use "we" even if everyone can see that it's a single-author paper. It communicates that it is a company and not just your personal services, which is especially important if it's just your services for now. You can still come back and talk about the exciting thing you're personally working on as a founder.

In either case, pick the singular or the plural and stick with it. Mixing "I" and "our" like you currently are is a matter of grammar rather than style.

<comment><USER8> >irregardless

I was crucified on /. when I wrote that :)

<comment><USER7> Call it revenge on my elementary school English teacher for complaining about "ain't." ;)

</comment></comment></comment><comment><USER8> Personally, I'd leave the about page as is; but I'd definitively change the main page to impersonal discourse.

"tagBeep has some unique and very useful features but there is a lot of room for improvements and I'm working on them." Would become (something like, I'm not a native speaker): "tagBeep has some unique and very useful features but there is a lot of room for improvements which are being actively developed"

" The app has some unique monitoring features, but it's far from where I want it to be." Would become something similar to: "The app has some unique monitoring features, but it's far from finished"

<comment><AUTHOR> When I've made that page the idea was to present myself as a person, as one software developer working on a nice product.

A lot of people suggested a middle path... that is what I'm thinking to do now but I will give it more time.

<comment><USER9> The poster was suggesting that you use 'impersonal discourse' on other parts of your site but can leave the about page as 'personal'

The rest of site should not be about you. It should be about the product. Otherwise it comes across like a hobby project (and I'm guessing you don't want that).

</comment></comment></comment><comment><USER10> I think you can go either way. Since your product seems to be targeted toward enterprise, one could argue that you want to sound more professional.

However, in my experience the About page is seen by about 5% of your users. So to say things clearly: it doesn't matter.

PS: I don't particularly like your company version. I'd still make it personal, but sounding like a company: "XYZ was started by John Foo...". So it's pro, and personal.

<comment><AUTHOR> 1\. The product is targeted towards small website owners that depend on it. (ecommerce, services that charge money)

2\. When the product is finished I plan to add a payment plan for some additional features. People won't read the about page even when they want to pay for the service?

3\. Yes, your pro and personal is a very good suggestion … thanks!

</comment></comment><comment><USER11> Both!

It's important you don't just say you're a person, because you'll piss off some random person who doesn't understand you need to outsource some part of a project you don't know how to do (who is angered you personally didn't do it).</comment>


First stage of Falcon 9 has landed on Just Read the Instructions - <AUTHOR> https://twitter.com/SpaceX/status/820330549529047040 <comment><USER2> I know this is not unprecedented, but this was the first launch/landing I've seen live, and the sensation I got when it landed on the pad is one I've rarely experienced before.

Might be hyperbole to others, but it was like the feeling that a step was made for humanity as a whole, and not just a group of people.

<comment><USER3> The onboard video camera is a powerful tool, because it allows us to witness firsthand the seeming absurdity of the situation: you're so high up that the Earth's curvature is very pronounced and you can see to the far edges of the state, and yet you flip around, do some microcorrections, but largely fall back down in what we'd commonly perceive to be an uncontrolled descent: and yet you land perfectly on a small structure towed out into a spot in the middle of the ocean.

Sure, we can use analogies to explain how extraordinary this feat is, or visualizations, but seeing the actual video feed, let alone live (just ask sport viewers why they have a stronger emotional response), as the vehicle is shaking, the engine is still firing and nothing in particular seems to suggest that a clean landing will follow -- and yet it does.

This is a great achievement but they've landed these before. But with the landing shown live for the first time from the first stage, the innovation of today is that they've communicated their incredible feat in a tangible way that elicits a strong, visceral emotional response. I wouldn't be surprised if years down the road, this _particular_ footage will be considered mandatory to archive, being significant to human history the same way footage from the moon was.

<comment><USER4> On the other hand, a somewhat significant number of people still believe that the earth is flat!

</comment></comment></comment><comment><USER5> Isn't it ironic that anyone who could successfully parse this headline without looking up the individual components, probably already knew the information. Conversely, to anyone not deeply interested in SpaceX, this headline appears to be word salad from a stroke victim.

<comment><USER6> Actually, I wasn't aware that was the name of the ship and was at first confused, but the proper use of english capitalization rules was my first clue it was a proper noun of some sort. :)

</comment></comment><comment><USER7> Landing is here: [https://youtu.be/7WimRhydggo?t=2194](https://youtu.be/7WimRhydggo?t=2194)

</comment><comment><USER8> That's a very Banksian name for a Ship...

<comment><USER9> Intentional. The other ship is named Just Read The Instructions.

</comment></comment><comment><USER10> link to video?

<comment><USER11> Hosted: [https://www.youtube.com/watch?v=tTmbSur4fcs](https://www.youtube.com/watch?v=tTmbSur4fcs)

Technical: [https://www.youtube.com/watch?v=7WimRhydggo](https://www.youtube.com/watch?v=7WimRhydggo)</comment></comment>


Holiday Inn Express wants your solution for delivering best night's sleep ever - <AUTHOR> http://ihgchallenge.ideascale.com/

<comment><USER2> Demands a login without saying anything about what it is, or giving a privacy policy.

No thanks.

<comment><AUTHOR> Appreciate the feedback, Colin -- will share it with their team.</comment></comment>


Libcaer – Minimal C library to access, configure and get data out of AER sensors - <AUTHOR> https://github.com/inilabs/libcaer <comment><USER2> Dynamic vision sensor is a novel type of imaging sensor.

"Regular" image sensors output a 2D image where each pixel encodes light intensity. Dynamic vision sensor outputs pixel-level changes in the scene.

For dynamic applications you usually are only concerned about the changes in image (e.g. object tracking, robotic navigation). An image sensor which only outputs changes reduces image processing requirements considerably!

Example: 640x480 greyscale image at 120FPS is about 35MiB/s of data. If the scene is static, all the computation cycles are wasted just to find out there is nothing new in a frame. That is rather heavy load for tablet/cellphone class processors which are usually found in embedded devices!

Here's a more detailed description about this technology: [http://siliconretina.ini.uzh.ch/wiki/index.php](http://siliconretina.ini.uzh.ch/wiki/index.php)

This 2 minute video explains and demonstrates the concepts: [https://www.youtube.com/watch?v=LauQ6LWTkxM](https://www.youtube.com/watch?v=LauQ6LWTkxM)

<comment><USER3> So if we end up building these into killbots that go out of control we will have a Jurassic Park situation.

"Stand perfectly still! Its vision is movement based!"

</comment></comment><comment><USER4> From reading the description, I wasn't sure what "AER" meant. After googling a few related keywords I found a site that claims [0] the acronym stands for: address-event representation.

Can anyone explain what this is for and in how it's useful? Not asking in a sarcastic way or anything like that, I just have no familiarity with the subject.

[0] [https://sourceforge.net/p/jaer/wiki/About%20jAER/](https://sourceforge.net/p/jaer/wiki/About%20jAER/)

<comment><USER5> You may be interested in the Linux kernel docs[0]. We use it at work to better identify faults with devices hanging off he PCIe bus, namely GPUs and interconnects.

[0] [https://www.kernel.org/doc/Documentation/PCI/pcieaer- howto.t...](https://www.kernel.org/doc/Documentation/PCI/pcieaer-howto.txt)

<comment><USER6> PCI Advanced Error Reporting is not the subject of this post, it's another (different) AER.

<comment><USER5> Whoops! I only skimmed the comments, sorry my bad.

</comment></comment></comment></comment><comment><USER7> really good work on using these cameras for robot vision from Davide Scaramuzza's lab: [http://rpg.ifi.uzh.ch/research_dvs.html](http://rpg.ifi.uzh.ch/research_dvs.html)

</comment><comment><USER8> AER?

</comment><comment><USER9> link to davis camera please?

<comment><USER10> All of the mentioned products seem to be produced by iniLabs:

[http://inilabs.com/products/](http://inilabs.com/products/)

[http://inilabs.com/products/dynap/](http://inilabs.com/products/dynap/)</comment></comment>


HPC is dying, and MPI is killing it - <AUTHOR> http://www.dursi.ca/hpc-is-dying-and-mpi-is-killing-it/ <comment><USER2> I enjoyed this piece when it came out in 2015. I think it's worth a read for those who haven't seen it before. The previous HN comments are at [https://news.ycombinator.com/item?id=9335441](https://news.ycombinator.com/item?id=9335441) . There's also a followup essay at [http://www.dursi.ca/objections- continued/](http://www.dursi.ca/objections-continued/) .

Looking now, I see the author discussed the topic further in a podcast at [http://www.rce-cast.com/Podcast/rce-97-jonathan-dursi.html](http://www.rce- cast.com/Podcast/rce-97-jonathan-dursi.html) . I have not yet listened to it.</comment>


Newton - Javascript Physics Library - <AUTHOR> https://github.com/hunterloftis/newton <comment><USER2> Haven't looked too much at the API, but right off the bat I would suggest a more compelling suite of demos, with collision, stacking, etc...I may just be missing the links.

You're definitely targeting a gaping niche IMO though (same one I'm trying to fill through a side project). Using Box2D in JavaScript feels like programming in assembly sometimes.

<comment><USER3> Yep, the demo is just non-interactive falling objects, it feels like an "intro" instead of a physics engine.

<comment><USER4> It is! I'm the author of newton and didn't realize it was going to be published on hacker news. It's fast and simple but lacks some basic features I'm rounding out - plus it needs more examples and a test suite.

</comment></comment></comment><comment><USER5> You really need to submit a single newton.js to GitHub so people can try it out more easily. (how I did it for my library[1]. Other than that, I've been using Chipmunk-JS lately and struggling a bit here and there so I very much look forward to using Newton.

[1]: [https://github.com/davidgomes/pentagine/blob/master/tools/me...](https://github.com/davidgomes/pentagine/blob/master/tools/merge.rb)

EDIT: Already filled in a pull request, the code looks quite good.

<comment><USER4> Awesome, thanks. What do you mean though by submitting a single newton.js to github?

</comment></comment><comment><USER6> I wish you all the best with your ambitious project ^w^

You should seriously consider employing techniques such as LLJS[1] to avoid thrashing the GC.

At the very least use typed arrays à la glMatrix[2] rather than a Vector prototype.

Typed arrays have the added benefit of interoperability with WebGL and Canvas2D via Function::apply.

\---

[1] [http://mbebenita.github.io/LLJS](http://mbebenita.github.io/LLJS)

[2] [http://glmatrix.net](http://glmatrix.net)

<comment><USER7> Author of ChipmunkJS here. I did some benchmarks moving things to typed arrays about a year ago, and the change was a wash in my benchmark results. I think that might not be the case now considering all the optimizations the v8 team have been making to asmjs-like code.

I did some quick benchmarks using emscripten recently and performance absolutely blew away my hand-tweaked chipmunk code[3]. Hand optimized, ChipmunkJS takes 2.8x as long to run the tests. Emscripten compiled chipmunk is 1.4x, so twice as fast.

That said, the generated code is huge and awful, and the API is terrible. I've been playing around with porting my library to LLJS recently, but when I looked at LLJS it hadn't been updated in over a year. Its nice to see that there were some commits a few months ago, but LLJS needs a lot of work before its generally usable. I've been doing some stuff manually as a toy - still not sure where to go with all of this. Bridging from ASMJS to regular javascript makes your API really hard to use.

\---

[1] [https://github.com/josephg/Chipmunk- js](https://github.com/josephg/Chipmunk-js)

[2] [https://docs.google.com/spreadsheet/ccc?key=0Ap2hDnCZnXiVdDV...](https://docs.google.com/spreadsheet/ccc?key=0Ap2hDnCZnXiVdDVFenh2cm5fdUx3WGw0N2szdVotOXc&usp=sharing) , though this is somewhat hard to read.

[3] [http://josephg.com/blog/chipmunkjs-and- emscripten](http://josephg.com/blog/chipmunkjs-and-emscripten)

[4] [http://josephg.com/blog/chipmunk-in-asm- js](http://josephg.com/blog/chipmunk-in-asm-js)

</comment></comment><comment><USER8> _" Unfortunately, these ports combine the clarity and conciseness of C++ with the speed of JavaScript."_

This is exactly how I felt using the Box2D port for our swarm project--itself a port of an ActionScript port of a C++ library.

</comment><comment><USER9> I wonder how it compares to p2.js[1], another recent 2D physics engine, but created by the same person who created the 3D physics engine Cannon.js[2]

[1] [https://github.com/schteppe/p2.js](https://github.com/schteppe/p2.js)

[2] [https://github.com/schteppe/cannon.js](https://github.com/schteppe/cannon.js)

<comment><USER4> Thanks for the link, I hadn't seen p2.js.

Here are a few points for comparison:

\- p2.js is significantly more complete than newton

\- p2.js uses a rigid body simulation closer in principle to box2d, while newton uses a particle-and-constraint based verlet integration

\- newton provides a game loop with separate render/simulate time tracking (something I feel is missing from existing libs)

</comment></comment><comment><USER10> This would be perfect for my idea of a tool for teaching programming to kids: a small game framework that they can program with a DSL, then teach them to hack the DSL....

</comment><comment><USER11> I can't find a license.

</comment><comment><USER12> This would go really nicely with Snap.svg. Hurry up and finish it, please!

<comment><USER4> On it!</comment></comment>


Ask HN: Would this work? Encryption with IP addresses? - <AUTHOR> Say our IP address consists of a public and a private key, the public key is what servers send encrypted data to, and the computer decrypts the data with the private key. Would this theoretically work and would it be of any good use? <comment><USER2> You are describing is [https://www.wireguard.com/](https://www.wireguard.com/) which is a stable choice for this application.

</comment><comment><USER3> Kinda sounds like Tor hidden services.

<comment><AUTHOR> I dont think so

<comment><USER3> Well, there's some variation in various approaches to routing, but routing like we do with IP wouldn't work with a key-based scheme, so you'd need _some_ other mechanism for that.</comment></comment></comment>


The Truth About Autism: Scientists Reconsider What They Think They Know - <AUTHOR> http://www.wired.com/medtech/health/magazine/16-03/ff_autism

<comment><USER2> Ok, I'll say it. That's just plain stupid.

She's redefined language to mean something else, and then said hers is not inferior to ours. Twiddling a knob on a dresser is not a language, it's just an unusual curiosity. We don't have electricity and cars and antibiotics because people had conversations with doorknobs and running water. We have them because people communicated abstract ideas to each other. That's language.

"And you find yourself thinking: She might have a point."

Only if you don't know what the word language means. Otherwise you find yourself thinking "that's stupid."

<comment><USER3> That's a good point. Which is why, if autistic people can't score well on tests aimed at people who process the world in a non autistic manner, the autistic people should be considered retarded. The article seems to have completely missed this; instead of defining intelligence as generally quick and precise thinking, it should be defined in terms of ability to communicate with normal people. I think this would eliminate a lot of confusion on the part of us normal people and make the world easier to understand.

<comment><USER4> is this ironic?

<comment><USER3> Yes. I tried to tread the fine line between making my point and being subtle, but I failed.

The article's countering exactly the issue I say it missed.

<comment><USER4> It's not that you failed exactly -- I thought I got the point. It's just that it's pretty hard to be sure on online forums. Plus I didn't read the article :)

What I noticed was you said we should define intelligence in terms of being normal instead of thinking quickly and precisely. So I guessed you were making fun of the parent post by agreeing in a silly way.

<comment><USER3> Yep, zegactly!

The article's point is that though we generally rank autistic people as retarded according to intelligence tests, these tests are biased towards a certain form of communication. If the autistic people communicate on their own terms, they are often quite bright. There is an intelligence test called Raven that can get past the communication barrier better than the standard test.

And, at the risk of being pedantic, there are multiple levels of irony going on in my original response, since the subject is misunderstood communication.

</comment></comment></comment></comment></comment></comment><comment><USER5> Watch the video.

It's good.

I have significant issues with the core argument, but mostly due to it's naïveté.

It does not address the issue that there are numerous, hmm, micro-languages. Say one invented spontaneously between twins that only the twins and say a couple grad students (maybe) will ever be fluent. The twins language may be incredible but it is useless to order a big mac.

Can two autistic folk each with their own totally valid non-verbal language ever communicate?

The world is getting so specialized, perhaps with tools some very smart folks cut off due to neurological, er differences, will become dynamic members of the greater society.

I really liked the view down the slinky, good thing that it was not a full 9 minutes of just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. just that. (wow, doesn't it feel good typing just that ;-)

</comment><comment><USER6> Part of it is that she has an opportunity to explore this way of thinking. What happened around age 20 when she decided to give up with the neurotypical way of vocalizing? An older brother or sister that never veers far from neurotypical would begin the influence on you with, for example: "what? you don't have a cell phone? thats not normal!"</comment>


LightningJS: safe, fast, and asynchronous third-party Javascript - <AUTHOR> http://www.olark.com/spw/2011/10/lightningjs-safe-fast-and-asynchronous-third-party-javascript/

<comment><USER2> From the comments:

"The short answer is that the third-party provider must make small modifications to take advantage of LightningJS. This is done by adding the bootstrap Javascript and ensuring that the code uses window.parent for manipulation of the original document."

That's kinda a big asterisks to add. That said, deferring JS safely is really hard. It's not a bad thing for more people to be working on.

<comment><USER3> I agree. LightningJS was originally written for third-party Javascript providers to improve their own embed code, though I think it would be _awesome_ if end-users could easily take matters into their own hands. Maybe something for future development...

</comment></comment><comment><USER4> I see you're creating an iframe and then loading the javascript script tag into the it. I assume this is how you are providing encapsulation of a unique window object per script. However, what about scripts that depend on access to the real window object?

<comment><USER3> Good question. Since LightningJS writes the iframe with a "javascript:" URL, that iframe is really part of the same domain (and therefore same security context). To access the window on the original document, just use the "window.parent" object.

</comment></comment><comment><USER5> Did you guys look at caja? <http://code.google.com/p/google-caja/>

<comment><USER3> I did just now :) The concepts in Caja are really interesting, but probably outside the scope of LightningJS. We used the term "safe" as in "safe from library conflicts", though I can see how that might have unintentionally indicated that it provides a managed sandbox as well.

That said, some kind of Caja integration could be a pretty nice addition to LightningJS.

</comment></comment><comment><AUTHOR> The funny thing is that this shows that Google Analytics's async loader can actually slows down window.onload in some cases.

</comment><comment><USER6> For a somewhat-related blast from the past, see Crockford's ADsafe:

<http://www.adsafe.org/>

<comment><USER3> Haha, yea I remember that post. Good stuff. LightningJS is really more focused on being "safe" as in "no library conflicts", rather than sandboxing the code itself. In general, end users are copy/pasting embed code directly, so there wouldn't really be a guarantee that the third-party wrapped their resulting code in ADSafe :)

Definitely would be interesting to perhaps include some concepts from ADSafe into LightningJS though - maybe in the bootstrap component?</comment></comment>


What's Really Driving Apple's New-Found Fondness For 'Free'? - <AUTHOR> http://9to5mac.com/2013/10/23/opinion-what-is-really-driving-apples-new-found-fondness-for-free/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+9To5Mac-MacAllDay+%289+to+5+Mac+-+Apple+Intelligence%29

<comment><USER2> It's so weird to continually hear authors parrot the claim that the trivial cost of an OS upgrade is relevant to businesses. Fact is, any business over about 20 employees has a Microsoft Software Entitlement license, where you pay (substantially under market price) per user for Office, Windows, etc. And Software Entitlement is valid across all currently supported versions of the OS and Office. That means that if your company is running XP and Office 2003, it's entirely because your IT group didn't want to go through the trouble of upgrading everyone (and retraining users), NOT because of the cost. The time to test various enterprise apps and ensure they work and work reliably is expensive. Just because Apple wanted to encourage a bunch of bloggers to update their Airs isn't going to be a tipping point for Apple into any real market share - in fact it'll harm their chances in the future when they stop issuing security patches to a 2-year-old OS because "upgrades are free".

What is driving Apple's new-found fondness for free is that they don't want to deal with supporting older OSs. Unfortunately, that's a requirement for being in the business world. Apple has just excluded themselves from it.</comment>


Hyperloop unveils full-scale 750-mph passenger capsule - <AUTHOR> https://www.usatoday.com/story/tech/2018/10/07/hyperloop-company-unveils-750-mph-full-scale-passenger-capsule/1449869002/ <comment><USER2> A capsule is irrelevant. To get to 750mph they actually have to get a track that can mitigate all known and unknown physical problems that stop trains nowadays from even going over 350km/h during operation. Showing a mockup does nothing to address hyperloop's baseless promises and simpsons monorail reenactment. To put it in perspective, its as if they showed a supersonic jet when they didn't even recognized the existence of sonic booms.

<comment><USER3> And what happens when the train stops unexpectedly between destinations? It becomes a coffin.

</comment></comment><comment><USER4> That looks streamlined. I thought the idea of the hyperloop was that it was low vacuum and the front of it was a giant fan to move the remaining air from front to back of the capsule to further reduce friction. Or was that only in the early design and it's been abandoned?

<comment><USER5> That was Musk's plan. In addition, the fan powered an air beating.

Prior to release of his plans he specifically denied that it was maglev in an evacuated tube. However the name got quickly coopted by people who were building maglev in a tube.</comment></comment>


Massachusetts Sues Exxon over Climate Change, Accusing the Oil Giant of Fraud - <AUTHOR> https://insideclimatenews.org/news/24102019/massachusetts-sues-exxon-climate-change-investor-fraud-misleading-advertising-healey <comment><USER3> This is some combination of grandstanding by the state prosecutors, abuse of the extremely vague statutes under which such suits can be brought, and a threat to the rule of law.

It strikes me as implausible that even if Exxon has published all of its internal climate research it would have made a substantive difference in people's likelihood to invest, or to consumers propensity to purchase Exxon gas. Because these are the only outcomes germane to the case aren't they?

You can tell by the comments here that people want Exxon punished, they don't care much about the means by which this occurs.

<comment><USER4> Should cigarette companies have been punished for knowing their products kill and then misleading the public?

Oil kills via air pollution. Oil companies hid this information.

Do corporations get to willingly and maliciously lie to people?

<comment><USER5> Cigarettes only kill people.

Oil saves more lives than it kills and it makes lives better for all of us. You can't just take the negatives and ignore all the positives.

Most of us wouldn't be here if it wasn't for oil, the internet would not be here if it wasn't for oil, most medicine, the ability to keep an incubator running let alone the materials for creating and I could go on we wouldn't be as many people on the planet today if it wasn't for our use of oil.

<comment><USER6> And wouldn't this be a nice discussion to have had, 30 years ago, without firms like Exxon and Fox destroying our ability to discuss this freely and honestly?

And if we had realized 30 years ago that we were not happy with it, or that maybe we wanted to reduce our exposure wouldn't we have had 30 years to change our infrastructure ?

Wouldn't the amount of emphasis on the Middle East changed?

Mass transit would be a conversation 30 years more advanced.

The trick in my argument is that 30 years ago we Knew that oil was problematic.

And we saw good scientists avoid engaging with the paid shills and cranks arguing for oil and against global warming - because that would give them more credibility.

Then we saw how that made no difference.

Then scientists went on Fox hoping to have an honest discussion- and were slaughtered by dishonest arguments, fired by news anchors who were part of an ecosystem funded by Exxon and their ilk.

We all collectively owe Exxon and it's friends an accounting for their actions, which they knowingly took in bad faith.

Because, it would have been nice to have this discussion 30 years ago.

</comment></comment></comment></comment><comment><USER7> The complaint [1] is 211 pages long, but it seems to argue that ExxonMobil misled both investors and consumers about climate change.

a. Allegedly, investors were wronged by being presented with misleading projections about the company's future prospects.

b. Allegedly, consumers were wronged by being misled about the impact of the company's products.

[1]: [https://www.mass.gov/files/documents/2019/10/24/Complaint%20...](https://www.mass.gov/files/documents/2019/10/24/Complaint%20-%20Comm.%20v.%20Exxon%20Mobil%20Corporation%20-%2010-24-19.pdf)

<comment><USER8> It only makes sense to use the term allegedly when something isn't yet proven.

I'm curious how you believe either of those statements are anything but fact given what we now know.

<comment><USER9> Believes are important in churches, and in courts these are all just allegations that need to be proven first. That's how the law works.

<comment><USER10> Shhh! The church of climate change has found a witch and is conducting an inquisition here! Who needs the law when a company is literally causing climate armegeddon?!?!?!??

</comment></comment></comment></comment><comment><USER11> What are the possible results? If it's only fines than it may not deter anyone from doing similar things in the future (in case the gain is big enough, i.e., bigger than the fine).

Is there a possibility for personal responsibility and jail time for the people who did this?

<comment><USER7> The last two pages of the complaint [1] list its specific requests in "VIII. REQUEST FOR RELIEF".

This includes a request for $5,000 each violation of a consumer-protection- act, recovery of legal fees, and a request for " _comprehensive injunctive relief_ ". However, I suspect that the main thing may be an attempt to get the court to declare that there're on-going " _deceptive practices_ " (first item in that section).

I'd guess that, if they can establish wrong-doing, then they'd have a basis for later follow-up actions.

[1]: [https://www.mass.gov/files/documents/2019/10/24/Complaint%20...](https://www.mass.gov/files/documents/2019/10/24/Complaint%20-%20Comm.%20v.%20Exxon%20Mobil%20Corporation%20-%2010-24-19.pdf)

</comment></comment><comment><USER12> Is there no direct way to sue the company? As in, "You made a big environmental mess, pay this fine".

This seems to my non lawyer eyes to sound more like "Hey you lied to the investors who wouldn't otherwise have bought your securities". Which is also a thing, but seemingly a bit convoluted.

<comment><USER13> No, there is no direct way to sue the company, because Exxon has been selling a legal product the whole time. We all have benefited from cheap fossil fuels and continue to do so. "More Americans believe in global warming — but they won't pay much to fix it: Most Americans are unwilling to pay $10 a month to fight climate change, a survey found." [https://www.nbcnews.com/news/us- news/more-americans-believe-...](https://www.nbcnews.com/news/us-news/more- americans-believe-global-warming-they-won-t-pay-much-n962001)

The MA and NY lawsuits are grandstanding and scapegoating.

<comment><USER14> _Most Americans are unwilling to pay $10 a month to fight climate change, a survey found._

That's quite funny when you think about the costs we will incur if we don't get a handle on this. Most people really do think in the short term.

<comment><USER15> It could be that they're unwilling to pay $10 a month because they think the ultra-wealthy and companies bringing in billions of dollars a year should pay for it.

</comment></comment></comment></comment><comment><USER16> When Exxon realized the problem decades ago, they could've lead a forward- looking campaign. Investing in renewables and nuclear technology. If they had done that, maybe today we'd be mostly powered by clean energy.

Here's the kicker: It would've been a long term win-win for both Exxon and the world. Putting themselves in a strong position to capitalize on the transition and even be a respected player.

<comment><USER17> This post is a facile fantasy.

To be clear, while you are not required to give a flying fig about whether or not Exxon investors earn a return, you can't exactly expect them to all line up to gleefully throw their money away, either. That's a charity, not a business.

And trust me, if we compare the financial returns on investment for renewables and nuclear technology over the past N decades, versus Exxon's returns today? Definitely _not_ a win-win.

<comment><USER16> I'm talking about a long term view.

If they had started investing back then, they'd likely be in a better position today and going forward. A leader in _future_ fuels instead of clinging onto fossil fuels, which is definitively short sighted.

<comment><USER17> Exxon is worth $293 billion right now. Its earnings over the past N decades are probably worth more. For that money, you could buy alternative energy providers outright. You could buy Siemens (~$50 billion), who, in addition to transportation and other lines of businesses, have a big renewables business, and are among the world leaders in nuclear ... or, well, they were, until 2011, when they abandoned that line of business entirely.

There is no financial case to be made here whatsoever.

<comment><USER18> I don't disagree, but Exxon might have had the cachet, especially in the 1980s, to speed up decreasing the carbon intensity of the economy. The entire energy sector is now <= 5% the size of the entire S&P, down from 18%, so it's unclear if energy companies still have that level of cachet.

Now, going forward, in 2020, there might be a different calculus. Usually, the market cap/stock price of a company reflects future cash flow. For an E&P company, much of Exxon's valuation comes from the cash flow expectation on its oil reserves. That's problematic if some of those oil reserves are in effect stranded assets. Certainly not all will likely, but say, things like the tar sands? It very well could be.

</comment></comment></comment></comment></comment><comment><USER19> Good. This is no different than cigarette companies knowingly selling a cancerous product and misleading the public.

How many more times do we have to be subjected to known harms and disinformation campaigns before we outlaw this kind of corporate behavior?

<comment><USER20> Similar argument can be made for fast-food, frozen and heavily processed food, and many other daily use items. By your yardstick, all of them spread misinformation and mislead the public since the harms of consuming fast-food or overly processed food are known.

I then wonder, why this happens to be the case. Can't fathom, really.

<comment><USER19> You've already demonstrated your bad faith in this thread. I'm not going to engage with you or your strawmen again.

</comment></comment></comment><comment><USER21> It's hard for me to imagine a positive outcome from this for either Exxon's shareholders or the public at large. I imagine it will translate pretty well into higher prices at the pump for everyone.

</comment><comment><USER22> Massachusetts should now return all the taxes collected from selling gas. After all if selling gas is fraud, so is collecting taxes on it. :)

</comment><comment><USER23> Seems a lot like the whole impeachment, even though no president has ever been impeached. Just a bunch of empty virtue signalling that won't make a real difference.

<comment><USER17> It'll make a difference. Finding a bogeyman and making a lot of noise about making them pay is a great way to launch a political career.

</comment></comment><comment><USER24> I'm all for sueing companies like Exxon for misleading people and spreading lies, but I also find it weird that we're trying to blame the big oil companies like it's all their fault. After all, it is the consumers themselves who create a massive demand for (cheap) oil.

<comment><USER25> This is an invalid argument, verging on non sequitor. High demand for a product does not legitimize fraud about the product, especially when that fraud _increases demand_. It is irrational to expect individuals to make the best ethical decisions for the larger group - this is why we have regulation on food, drugs, energy, etc.

<comment><USER26> I think the flaw in your argument is the assumption that the demand for fossil fuel is variable depending on anything Exxon has to say. I don't see an Exxon ad and think "man I should buy an SUV".

You wouldn't blame an electric company on you buying electronic items, it's the usefulness of the items themselves that drives the sales.

<comment><USER25> Demand is a function of many factors, including individual ethical concern and cost. Exxon has spent billions to reduce both of these effects - <USER2> concern is reduced because of the seed of doubt about climate change, and cost is reduced because of political contributions. Exxon is a great example of a firm successfully privatizing profit and socializing cost.

</comment></comment></comment></comment><comment><USER27> This case will be recorded in the history books as the court case that decided the fate of the human race.

<comment><USER28> A case about whether Exxon committed fraud by misleading investors about climate change will decide the fate of the human race?

</comment></comment><comment><USER29> I hope justice is served with Exxon, but I also hope people motivate personal change by realizing that most of us did what Exxon did in the same time on an individual level.

Growing up in the 70s, I heard about sea level rise and global warming. Nearly everyone I know flies (and eats meat, drives, etc) more than necessary for their profit and pleasure and all the things they know contribute, using excuses similar to Exxon's but translated for themselves.

Anyone who makes excuses for the emissions that puts Americans (and likely your country if you aren't American) so high up in emissions -- if we think Exxon should change, shouldn't we?

In this quote, substitute for "Fossil fuel industry" and "Exxon", "we" and see how well it fits. I'm not talking about blame but taking responsibility for change now.

> _Scientists have known for decades that the burning of fossil fuels is > causing climate change. There is so much evidence that at least 97% of > climate scientists agree that humans are causing global warming. It's as > settled as the link between smoking and cancer._

> _The fossil fuel industry has known about the role of its products in global > warming for 60 years. Exxon's own scientists warned their managers 40 years > ago of "potentially catastrophic events". Yet rather than alerting the > public or taking action, these companies have spent the past few decades > pouring millions of dollars into disinformation campaigns designed to delay > action. All the while, the science is clear that climate-catalyzed damages > have worsened, storms have intensified, and droughts and heatwaves have > become more frequent and severe, while forests have been damaged and > wildfires have burned through the country._

<comment><USER30> Strongly disagree. Many Americans have understood for 50 years that the _only_ way to stop fossil fuels use would be through government regulations. But, companies like Exxon have continually used their lobbying muscle to stop it.

<comment><USER29> You state strong agreement then -- justice served with Exxon, as well as curbing what stops regulation. You mentioned one source of curbing -- companies like Exxon. I cited another -- the people of the U.S. and our lifestyles.

Independent of people's talk, the U.S. government is well representing our behavior. There's nothing stopping us from polluting less as individuals. We don't, saying government should tell us what to do. Politicians know that if voters say one thing and do another, they'll vote consistently with what they do.

You want to stop curbing environmental regulation? Show legislators that voters want it. Right now voters overwhelmingly show they want the opposite. They fly around the world for vacation when they could go camping, etc.

<comment><USER31> It's impossible for the US public to change their mind quickly as a whole. Would you disagree if I said that the US public is the public that is the most affected in the world by corporate media and marketing? Even prescription drugs are advertised here and it's rather shocking to realise that's just normal here. Similarly, greenwashing and lobbying really work and have impact on the US public. Nearly half of the US public don't believe in man-made global warming, a striking difference from the 97% consensus among climate experts [1]. You must ask yourself where this gap comes from? Big oil is and will be doing everything to slow down the public from going away from fossil fuels and the US system is built do support big corporate money.

[1] [https://en.wikipedia.org/wiki/Surveys_of_scientists%27_views...](https://en.wikipedia.org/wiki/Surveys_of_scientists%27_views_on_climate_change)</comment></comment></comment></comment>


Live Leaderboard for Node Knockout - <AUTHOR> http://leaderboard.no.de/

<comment><AUTHOR> Make sure you click the small music note in the bottom left-hand corner...</comment>


Ask HN: How to be nice to contractors that are terrible - <AUTHOR>

Hi,
I'm wondering how you manage to stay nice and humble when faced with a contractor who makes terrible solutions?
In general I'm overly negative. Especially when the contractor is big, and when I feel I could make a 10x solution if I was just given the time?
Also I'm terribly negative to companies like IBM and Microsoft. Especially since my Outlook crashes multiple times a day (seg fault).
How do manage to continue to be a "nice person" in such situations?
EDIT: To be clear. These are software vendors/contractors delivering off the shelf solutions and custom solutions that I feel would have given very low grades if delivered at college/uni. <comment><USER2> Obvious answer: Tiny companies/Individual contractors (aka temporary workers/consultants/etc) terminate their contracts immediately.

For larger companies you lawyer up and negotiate restitution as per the contract with them.

Longer answer: You generally get contractors in when you are resource-poor but have the budget for it. The obvious solution is take the development in-house. In real life the answer apparently to get contractors in and deal with the fallout later.

TLDR: Don't be a nice person, you're in business to get a defined goal completed. "Being Nice" doesn't come into it. "Being Fair" is a different matter though.

<comment><AUTHOR> We pretty much have to work with them (our contractors/vendors), can't just jump ship.

I want to be nice to them, even when I don't like what they are delivering. Being nice should be for everyones good, to inspire them and to make them feel better and to help me feel better.

And with regards to lawyering up, that's probably just going to make things worse. Our contracts aren't good enough to withstand that kind of trashing, and it's not going to help the projects I'm working on to get completed within the time-frame anyway.

<comment><USER2> As I was trying to get over, you need to be fair. Not nice.

You'll have to (probably?) step outside your comfort zone and be assertive so your vendors deliver what you ask of them in a timely manner.

You're their customer, you're not there to help them feel better or inspire them. If you're the one that signs off their timesheets/customer acceptance reports/etc then you're the guy/gal that sets the expectation for them.

Be consistent with them and be firm about behaviour you don't like. Of course reward occasionally but appropriately (ie outstanding work, etc). But at the end of the day their reward is a paid invoice.

As for the lawyering up, sometimes you need to, often you don't ... lawyers are there generally to avoid litigation (expensive/messy) not cause it.

</comment></comment></comment><comment><USER3> > How do I manage to continue to be a "nice person" in such situations?

Civility is a most desirable management trait. So is effectively monitoring a contractors process, progress, and results.

The contractor deserves to understand your expectations and receive prompt clear feedback. Focus on the metrics/measures without getting too personal.

</comment><comment><USER4> Hold them to their specs, to their agreements, etc. If you see work done that it sub-par, send out emails explaining your analysis and make sure your manager is aware. Everything in writing helps.

Also take on the mindset that as an employee you're there to own the product. The contractors are temporarily there to help but might not care at all about quality or consequences.

You only need to be courteous and professional. You're the customer here, and being upset and complaining if you didn't receive what you bought is expected. You shouldn't be nice and kind to someone who's ripping you off, yet being mean or rude is wrong and counterproductive (unless you're the one who actually hired or is responsible for these contractors in which case it's a judgment call).

</comment><comment><USER5> > Especially since my Outlook crashes multiple times a day (seg fault).

Check your RAM, check your system for overheating, and check for addons (e.g. COM+ based) that may be interacting with Outlook. Cannot reproduce the issue.</comment>


Ask HN: language choice for dynamic website given our skills - <AUTHOR>

I know many languages but I'm a master of none (I work with HW on my day job). My cofounder works with Java from 9-to-5. Should we go with Django or some Java framework? <comment><USER2> Java was my first "real" programming language. I went to a Java school. I did primarily Java programming at my first job. I've done almost exclusively Java programming at my current job. I made a business selling downloadable Java software half just to show people it could be done.

I say this so that when I tell you DO NOT USE JAVA you won't think me biased. Its strengths are more apparent in Big Freaking Enterprise applications with teams of dozens or hundreds of people working on them. Its deficiencies are even more glaring when there are only two of you -- chiefly, the productivity lag you'll suffer to do even the smallest things.

You'll have a bit of a ramp-up period learning Rails, Django, or your favorite modern MVC framework of choice. Trust me: it is worth it. It will probably even make your cofounder a better Java programmer in the bargain.

</comment><comment><USER3> If you want to leverage your existing collective talent, choosing java is an easy choice. If your co-founder wishes to learn something new & different or you have a specific use case where python-based frameworks make more sense, then you choose this route. Both languages have their pluses and minuses. Without getting into a language war, choose to leverage existing ability, the best for your use case, or the one that will be most fun and interesting. After all, if this venture takes off, it is a language you will most likely be stuck with for some time.</comment>


Essential Image Optimization - <AUTHOR> https://images.guide/ <comment><USER2> A bit of "self promotion" here, but I was annoyed with optimizing images manually, so I wrote a plugin for webpack that does it for me.

It allows you to use any imagemin plugins you want, which have wrappers for most image compressors out there. And since it runs every "production build" you can commit your unoptimized images to your repo.

[https://github.com/Klathmon/imagemin-webpack- plugin](https://github.com/Klathmon/imagemin-webpack-plugin)

<comment><USER3> Hey thanks, I used this recently with responsive-loader and it worked great, although responsive-loader was a little finicky to get working!

<comment><USER2> That's actually why I created it in the first place! I no longer use responsive loader any more (fully offline web application, so the responsive images just weren't worth the extra complexity at that point), but it does work wonderfully once you wrangle it under control.

<comment><USER3> Yeah it does. But you're totally right about the complexity. Figuring out the right values to generate the srcset at felt insanely complicated for what you get out of it in data saving, but images were so blurry on chrome when downscaling them even a little bit that srcset almost seemed mandatory :(

</comment></comment></comment></comment><comment><USER4> I appreciate that using WebP has its advantages but when I look at canIuse, it's support isn't as widespread as the author suggests.

[https://caniuse.com/#search=WebP](https://caniuse.com/#search=WebP)

<comment><USER5> Yes so it is much better to use Google's Pagespeed module for Nginx or Apache to handle this aspect. In that way the compression is abstracted out and you don't have to worry about it. Pagespeed will know that someone is using an old version of Safari rather than Chrome and will send the correct type of image, i.e. one that will render.

</comment></comment><comment><USER6> I have a mini benchmark of lossless PNG compressors, in case anyone finds it useful.

[https://www.olegkikin.com/png_optimizers/](https://www.olegkikin.com/png_optimizers/)

<comment><USER7> It would be really cool to get something like this that is run against all formats and their specific optimizers. I'd like to see how MozJPEG stands up against the best PNG optimizers or how everything compares to webp (which in my experience is the smallest)

<comment><USER6> It's hard to objectively compare lossy encoders. Yes, there are various metrics, but you will get very different results depending on which metric is chosen.

</comment></comment></comment><comment><USER8> Here's an open question that I'm having a hard time finding an answer for:

I have a series of images that are basically screenshots of a visual novel (pretty much a comic book). Most of the space of the screenshots are identical from image to image, and I'd like to compress these files together to save space. My first thought is to use some kind of video compression format to do this, but I'm wondering how to handle playback (currently the windows built in image viewer is used).

Backstory: My wife enjoys reading VNs on her phone and screenshots them so she can re-read them on the PC. I've automated most of the capturing of screenshots via some adb scripting and a WPF app that talks to the phone, but the resulting files are quite large and I can tell that I could be smarter with how the resulting files are stored.

<comment><USER9> Let's say you already have image X saved, and you want to also store image Y, which is mostly similar. Take all of the pixels which are the same in both X and Y and set them to RGBA (0,0,0,0). Instead of using the Windows image viewer, write a web viewer in JavaScript. The viewer takes image X and image Y, composites them in a Canvas, converts that into an image, and then displays the result.

The extra steps with compositing in a Canvas first will prevent you from getting artifacts from scaling the images, but the artifacts may not be particularly visible.

If you are comfortable with NumPy this whole process should be fairly easy and painless. I have done something similar in the past, but it was for making animated GIFs.

If you are particularly adventurous, you could remove large chunks of the VN foreground by taking the per-pixel median value from a large stack of images that share a background. You could then use this as a base image.

<comment><USER10> This is basically how GIF works. If you have a GIF viewer that can pause and advance frame by frame, you could use GIF without the canvas needs.

<comment><USER11> But the compression in GIF is so terrible that it will possibly be way bigger than individual JPEG or WEBP. I would say, go with WEBM and a mobile frame-by- frame player, there are dozens.

</comment></comment></comment></comment><comment><USER12> Shameless plug for my tool for automatically taking in a static site and spitting out one that uses responsive optimized images: [https://github.com/trishume/enfasten](https://github.com/trishume/enfasten)

Unlike all non-custom Gulp/Webpack/JS based tools I know, it does incremental builds so that it only resizes/optimizes images that you change or add, so it won't substantially slow down your site build times. It also rewrites the output of your existing static site generator so you don't have to do much to integrate it.

</comment><comment><USER13> Images in the guide can be further compressed by 7% (lossless) and 25% (lossy) using Optimage [1], and even these results can be improved. There are many nuances in image optimization, and sadly, some of them are not in the guide [2].

[1] [http://getoptimage.com](http://getoptimage.com)

[2] [https://github.com/GoogleChrome/essential-image- optimization...](https://github.com/GoogleChrome/essential-image- optimization/issues/55)

</comment><comment><USER14> I have some benchmarks of image optimisation tools here at [https://foldleft.io/image-tools/](https://foldleft.io/image-tools/)

</comment><comment><USER15> Good article, and very comprehensive coverage of different aspects. However, they are using JPEG images for screenshots and clean vector artwork. Isn't this worse than using PNG in terms of quality and size? And doesn't this violate their own goal of promoting better image optimization practices?

</comment><comment><USER16> Hi, please avoid if not useful. I built an image compressor with bulk uploading and parallel processing of images. It's free to use. Suggestions, bugs, new features welcome. Link here: [https://imgsquash.com](https://imgsquash.com)

</comment><comment><USER17> Pngnq is a bit better than pngquant, and zopflipng is really good at compressing pngs even further.

</comment><comment><USER18> I use the ngx_pagespeed module for Nginx for automatic image optimization. It's really good and easy to install: [https://github.com/pagespeed/ngx_pagespeed](https://github.com/pagespeed/ngx_pagespeed)

I describe the whole setup step by step on my blog: [https://blog.tjl.rocks/cheap-secure-and-fast-ghost-blog- set-...](https://blog.tjl.rocks/cheap-secure-and-fast-ghost-blog-set-up/)

<comment><USER19> yes agree about ngx_pagespeed but personally never liked the idea of keeping care of nginx compilation (and all the modules). My advice: [https://github.com/cryptofuture/nginx-hda- bundle](https://github.com/cryptofuture/nginx-hda-bundle) so that you can use nginx, brotli and pagespeed all in one package :)

</comment></comment><comment><USER20> This is such a low-hanging fruit yet so rarely done. I've been getting good github mileage out of submitting PRs that just losslessly optimise images with ImageOptim.

<comment><USER2> I completely agree!

People will complain over a few hundred kb of JavaScript, but a 3mb unoptimized image will be ignored.

It drives me insane!

</comment></comment><comment><USER21> I do use [https://tinypng.com/](https://tinypng.com/) to do JPEG or PNG optimise. Not bad at all.

</comment><comment><USER19> great guide!! Only downside: I think it needs an essential text/article optimization, the text is huge, had to scale it down at least to 75%.

<comment><USER22> It's easier to read. I appreciate proper font size for once. I have to use 200% zoom on HN to get the same font size, for example.

</comment></comment><comment><USER23> Is there any real benefit to progressive JPEGs? I kept reading about how it'll load in a better fashion in browsers but it seems no browser actually supports it.

</comment><comment><USER24> Except image hosting sites applying _lossy_ "optimization" contribute to the VHS problem, especially when they don't allow you to download the original. I am looking at you, twitter "gifs". Stripping out metadata on a high-res photo shot with a DSLR is also a minor nuisance, since you can't even check at which settings it was taken. Optimizing lossless compression is ok, although even that has a minor downside that it makes data deduplication more complex, i.e. you can't rely on zfs or btrfs deduplication, you have to use format-specific tools that compare the decompressed output.

Most of these things can be avoided by providing a link to the original.

[https://xkcd.com/1683/](https://xkcd.com/1683/)

</comment><comment><USER25> This was posted yesterday

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

<comment><USER26> There was no discussion, so there's no point linking to it.</comment></comment>