With Google's RAISR, images can be up to 75% smaller without losing detail - <AUTHOR> http://www.pcmag.com/news/351027/google-raisr-intelligently-makes-low-res-images-high-quality <comment><USER2> The title is a bit misleading. Detail was lost, that is the law. Raisr makes up detail based on some learned likelihood of that detail being there.

You could add any image to Raisr and it will make up more detail, you could let it loop over the same picture over and over and it will probably add infinite detail, or up to some fixed point.

What's cool is that for many pictures, it's good enough at making up detail that the result is credible.

<comment><USER3> Seems similar to image inpainting...educated guesses that can be stunningly accurate, or stunningly bad :)

<comment><USER4> Yes. And as such it has obvious artistic value, as images look better. But I can see that people can misuse them CSI style. You can add more detail to an image, but it is mainly an artistic interpretation that is not the real original image.

</comment></comment></comment><comment><USER5> This article and the linked blog post from Google [1] suggest that this has already been deployed. How does it work in the field? For instance, I can imagine it being a JS library that can be downloaded and cached for client- side use, or it could be deployed as an Android module that the Android browser can use. But I don't know where to go looking for this because I don't use Google+, have no photos on it, and wouldn't be sure whether or not I was seeing it.

[1]: [https://www.blog.google/products/google-plus/saving-you- band...](https://www.blog.google/products/google-plus/saving-you-bandwidth- through-machine-learning/)

<comment><USER6> >RAISR produces results that are comparable to or better than the currently available super-resolution methods, and does so roughly 10 to 100 times faster, allowing it to be run on a typical mobile device in real-time....For example, in addition to improving digital "pinch to zoom" on your phone, one could capture, save, or transmit images at lower resolution and super-resolve on demand without any visible degradation in quality, all while utilizing less of mobile data and storage plans.

> In our proposed approach, the run-time is more than one to two orders of > magnitude faster than the best competing methods currently available, while > producing results comparable or better than state-of-the-art.

From the blog post & article, I think the idea is that you ship a small CNN (a few MB model size, which will accordingly run in realtime on mobile GPUs) to the Android device, and then when browsing, it downloads a small thumbnail (cheap on bandwidth, quick to download), and upscale it as necessary locally on the device.

<comment><USER7> In general they'd get better bandwidth savings for the same quality and decode effort by shipping the higher-resolution image with more aggressive image compression (using [http://bellard.org/bpg/](http://bellard.org/bpg/) or something, not JPEG, and ideally running the decode in hardware). Seems like a dubious method overall.

The main impression I get is "woo! neural nets can do everything! let's use them everywhere!"

I don't believe their claim that this is "comparable or better than the state of the art" for image upscaling without much better evidence than they provide in their paper.

</comment></comment></comment><comment><USER8> If you click enough links, you may eventually find your way to the paper: [https://arxiv.org/abs/1606.01299](https://arxiv.org/abs/1606.01299)

<comment><USER9> Thanks. I'd like to make some comments on the paper \- it is very readable, even for non-ML folk

\- first author was an intern at Google. Cool for him to have a project like this handed to him.

\- paper is quite long and I don't think it would ever be published in a reputable journal. The content/length ratio is too low, for one

\- another reason I think it would not get accepted is the lack of novelty. What is being done here is a basic interpolation scheme (which explains the "10-100X speedup over SotA) but with weights determined by a lookup table. The table itself is learned beforehand by analyzing a large number of other images.

<comment><USER10> I havn't time to read through it, but based on your comments, I could see it being accepted to a conference, which is where most CS publications come from (in europe anyway).

</comment></comment></comment><comment><USER11> This exactly what Magic Pony (acquired by Twitter last year) does.

[https://www.inverse.com/article/17200-twitter-buys-london- vi...](https://www.inverse.com/article/17200-twitter-buys-london-video- company-magic-pony-to-improve-its-live-video)

There's an example of them finding a low res image of Barack Obama, and filling in the missing detail via ML to make a compelling high resolution image that still looks like Barack Obama: [https://fsmedia.imgix.net/25/36/be/9d/fd04/4c51/9f79/ef675b0...](https://fsmedia.imgix.net/25/36/be/9d/fd04/4c51/9f79/ef675b0143e3/magic- ponys-machine-learning-of-an-image-of-barack-obama.png)

(Upvotes for anyone who a) replies with a better link and b) is Zehan [if b) then HI ZEHAN!])

</comment><comment><USER12> The biggest about this is not being able to 'compress' images to 25%, but that you can now take (some) images that we're previously only low-res, and upscale them!

<comment><USER13> One day we'll be pointing at pictures yelling "Enhance!", and not in jest!

<comment><USER14> Good idea for a dystopian CSI. "This AI invented image detail shows you are guilty"

<comment><USER15> Well then it means statistically there's a good chance that what produced the end low res image is incriminating. And of course I'm not serious.

Although on a serious note, does anyone know if and how statistical probability is accepted as evidence in a court of law?

<comment><USER12> Yeah, it is, that's called circumstantial evidence. You do need direct evidence to validate the circumstantial evidence though..

<comment><USER15> It even has a name, didn't expect that. Thank you.

</comment></comment></comment></comment></comment></comment><comment><USER16> From Google blog:

[https://www.blog.google/products/google-plus/saving-you- band...](https://www.blog.google/products/google-plus/saving-you-bandwidth- through-machine-learning/)

"To help everyone be able to see the beautiful photos that photographers share to Google+ in their full glory"

"we've only begun to roll this out for high-resolution images when they appear in the streams of a subset of Android devices."

Anybody has an idea which subset?

<comment><USER17> I'm fairly confident you can assume they're referring to pixel devices.

<comment><USER18> And it's probably something like 20% of them.

</comment></comment></comment><comment><USER19> I wonder how it compares to this: [https://tinyjpg.com/](https://tinyjpg.com/)

<comment><USER20> The cool thing is that it's not a compression algorithm so you could use both. TinyJPG to compress the smaller-sized image, RAISR to upsample the smaller image. If you've ever played with GIMP (or Photoshop I suppose), RAISR looks like unsharp mask with an neural network controlling the inputs.

<comment><USER21> Now create a psychophysical compressor that optimizes for the weighted combination of smallest compressed size and most-faithful RAISR restoration.

I wonder if there's a guaranteed-optimal way to do that, given whatever RAISR is using as an algorithm; some logical inverse to the particular way it adds information. Maybe truncated wavelet compression?

</comment></comment></comment><comment><USER22> I wonder if this could be used to upscale, say, a 1080p movie frame-by-frame to 4k? Could be fantastic if so. Imagine if it could be built into an FPGA and done in real-time by high-end TVs. Very impressive!

<comment><USER23> The trick is that using a simple frame-by-frame approach means the details filled in only depend on the frame, not on the details which were filled in to the previous frame, so you get crazy jitter.

Deepart.io now has a video mode [0] that takes this into account.

[0] [https://deepart.io/video/](https://deepart.io/video/)

</comment></comment><comment><USER24> The article makes it sound like it is some sort of machine learning algorithm, which makes me wonder: How is the upscaling done client side?

<comment><USER25> It's very much within the realm of possibility to have a pre-trained neural net on the client, which then simply asks it questions.

For example, swiftkey does this already with its keyboard prediction. Prisma does it with image styling.

<comment><USER26> I actually think Prisma sends the image to their servers for processing, their app size is way too small to contain that many trained networks. Also it doesn't work without an internet connection if I'm correct.

<comment><USER27> That used to be the case but recent updates do the processing on the device now. I don't know how they managed it but they did.

</comment></comment></comment></comment><comment><USER28> I'd be interested to see if similar techniques could be used for scaling up pixel art. Tools to upscale pixel art do exist already, but the results are a bit hit and miss. Could be a good stress test for the machine learning algorithms too.

<comment><USER23> That sounds interesting. Do you have any links?

I must not understand what you mean by scaling up, I though the best way to scale up pixel art was to disable interpolation, so each pixel just becomes a perfectly sharp square?

<comment><USER28> >"That sounds interesting. Do you have any links?"

Plenty to take a look at here:

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

<comment><USER7> Existing pixel-art-specific upscaling methods are going to be better than this, for pixel art.

But if they wanted they could probably try to train their neural network for pixel art specifically, similar to [https://github.com/nagadomi/waifu2x](https://github.com/nagadomi/waifu2x)

</comment></comment></comment></comment><comment><USER29> Here's a list of various image interpolation techniques:

\- [http://www.ifp.illinois.edu/~jyang29/papers/chap1.pdf](http://www.ifp.illinois.edu/~jyang29/papers/chap1.pdf)

* Image super-resolution: Historical overview and future challenges

\- [http://www.robots.ox.ac.uk/~vgg/publications/papers/pickup08...](http://www.robots.ox.ac.uk/~vgg/publications/papers/pickup08.pdf)

* Machine Learning in Multi-frame Image Super-resolution

\- [http://www.cs.huji.ac.il/~peleg/papers/icpr90-SuperResolutio...](http://www.cs.huji.ac.il/~peleg/papers/icpr90-SuperResolutionSequences.pdf)

\- [http://www.wisdom.weizmann.ac.il/~vision/SingleImageSR.html](http://www.wisdom.weizmann.ac.il/~vision/SingleImageSR.html)

\- [http://chiranjivi.tripod.com/EDITut.html](http://chiranjivi.tripod.com/EDITut.html)

\- [http://www.tecnick.com/pagefiles/appunti/iNEDI_tesi_Nicola_A...](http://www.tecnick.com/pagefiles/appunti/iNEDI_tesi_Nicola_Asuni.pdf)

\- [http://www.eurasip.org/Proceedings/Eusipco/Eusipco2009/conte...](http://www.eurasip.org/Proceedings/Eusipco/Eusipco2009/contents/papers/1569192778.pdf)

\- [http://bengal.missouri.edu/~kes25c/](http://bengal.missouri.edu/~kes25c/)

* [http://bengal.missouri.edu/~kes25c/nnedi3.zip](http://bengal.missouri.edu/~kes25c/nnedi3.zip)

* [http://forum.doom9.org/showthread.php?t=147695](http://forum.doom9.org/showthread.php?t=147695)

\- [http://arxiv.org/pdf/1501.00092v2.pdf](http://arxiv.org/pdf/1501.00092v2.pdf)

* [http://waifu2x.udp.jp/](http://waifu2x.udp.jp/)

* [https://github.com/nagadomi/waifu2x](https://github.com/nagadomi/waifu2x)

* [http://waifu2x-avisynth.sunnyone.org/](http://waifu2x-avisynth.sunnyone.org/)

* [https://github.com/sunnyone/Waifu2xAvisynth](https://github.com/sunnyone/Waifu2xAvisynth)

\- [http://i-programmer.info/news/192-photography-a- imaging/1010...](http://i-programmer.info/news/192-photography-a- imaging/10100-no-comment-super-resolution.html)

* [https://github.com/david-gpu/srez](https://github.com/david-gpu/srez)

\- [http://arxiv.org/pdf/1609.04802v1.pdf](http://arxiv.org/pdf/1609.04802v1.pdf)

\- [https://github.com/alexjc/neural- enhance](https://github.com/alexjc/neural-enhance)

<comment><USER30> Great list, leaving a comment here to "bookmark" it.

</comment></comment><comment><USER31> I think this is what futurama's "better resolution than real life" TV sets are going to look like.

</comment><comment><USER32> Does anyone know if there's something like this available now to experiment with? I've been looking for a new way to ultra compress images and never heard of these techniques before. Looks like Google hasn't released any tools yet to the public, if they ever will.

<comment><USER33> For storage purposes: If you want, you could just downsample your images right now, and just wait around for this or similar to be released. I dont recommend it.

</comment></comment><comment><USER34> How many of these compression plays are driven by a real market need and how many are driven by Pied Piper envy?

</comment><comment><USER35> Inventing details out of thin air to make a low resolution image look more detailed feels like cheating to me.

</comment><comment><USER36> Works kind of like PerfectResize for PS then, except this downscales or I might be completely wrong..

<comment><USER23> I believe the down-scaling is done the old fashioned way. The up-scaling uses a neural network to guess what the original image was. See waifu2x [0][1].

The new thing here is that they're using it to save bandwidth, and running it on the user side.

[0] [https://raw.githubusercontent.com/nagadomi/waifu2x/master/im...](https://raw.githubusercontent.com/nagadomi/waifu2x/master/images/slide.png)

[1] [http://waifu2x.udp.jp/](http://waifu2x.udp.jp/)</comment></comment>


Better to React Than to Act - <AUTHOR> http://sciencenow.sciencemag.org/cgi/content/full/2010/203/1?rss=1

<comment><USER2> Indeed, the big variables here have nothing to do with the delay of reaction time but the speed at which each participant can do their thing.

In self-defense training, a standard thing to do is to have a "defender" with a fake gun in his hand, finger on the trigger, pointed at the "aggressor", who is holding a fake knife. For just about any combination of people (including those out of shape), the aggressor can lunge 21 feet and "stab" the defender before the latter can pull his trigger (and it should be noted that hitting someone with one round is not necessarily going to stop them, only a CNS hit will do that for sure, and that's a small target).

In this case, it probably comes down to the simplicity of using a knife; drawing a gun from a holster and using it effectively and quickly (and safely!) is much less natural and requires training.</comment>


Man filmed being dragged off United flight causes outrage in China - <AUTHOR> http://www.cnn.com/2017/04/11/asia/united-passenger-dragged-off-china-reaction/ <comment><USER2> I just can't believe they couldn't find a volunteer to make their next flight free. disgusting.</comment>


Ask HN: What are you working on and why is it cool? - <AUTHOR> I'm working on a self-service product for SaaS that predicts which users will churn, are ready to buy or upgrade. This is something I desired to have at my previous company, and I just thought this would be the right time to build it.<p>You? <comment><USER2> I've been looking at Apache Arrow ([https://arrow.apache.org/](https://arrow.apache.org/)) and trying to figure out how to integrate it into the browser. It's an in-memory data format, and the idea is to share the same data chunks amongst various clients, but shared memory in javascript got nuked by Spectre, unfortunately. I'd like for the same data to be accessible from, eg, multiple tabs or session-wide without copying, so it's like a shared cache that mmap's or shmat's its objects into each consumer on a read-only basis.

If we get this to work we make data a lot easier to play with in the browser; the user can load the data once and then play with the presentation or slice and dice it in multiple ways without overhead.

</comment><comment><USER3> Working on open source cache server [nuster]([https://github.com/jiangwenyuan/nuster](https://github.com/jiangwenyuan/nuster)), migrating to HAProxy v1.8

</comment><comment><USER4> Since many months, I am building back my very own base tools. Alternatives to: grep, cat, apt, tail, head, cut, awk, sed, inotify, macro recorder, gif recorder, etc... Yes, reinventing the wheel, my very own set of. It appear to be an incredibly good experience. Both of my tools performs over the originals, this wasn't my first goal! Using them in other projects is amazingly faster than i can imagine. Facing real cases, I modify them to perform better and better. I can't advise it much than anything else. This is exactly what an old mechanics do. His tools perfoms over anything you can gift him.. ;)

</comment><comment><USER5> Thanks for the opportunity for some self promotion! I'm working on a new data serialisation language that focuses on character efficiency. It's around 30% more character efficient than JSON at a basic level but 60%+ more efficient for complex objects.

Minimal Object Description Language

[http://www.modl.uk](http://www.modl.uk)

It's cool because MODL makes it possible to store objects in places that have extremely limited capacity like DNS TXT records, QR codes and RFC tags.

</comment><comment><USER6> I'm working on a bunch of lexer and parser related tools for personal use.

The reason they're cool is that it automates a lot of the tedious, error-prone stuff that I've been doing by hand as I experiment with grammars and the like.

Sure, there are a ton of tools out there to generate lexers and parse tables and such. But using them doesn't help me understand how they were built.

And using them doesn't produce the same sense of accomplishment or, at least for me, /depth/ of understanding.

I try to document the tools as best I can so that fellow students who are interested in such things can learn or make use of them. :)

</comment><comment><USER7> I'm working on a piece to go into my portfolio. It's a guidebook for companies navigating crisis communication during and after security incidents occur, such as breaches. I'm only an undergrad so I don't have much experience, so a lot of it is compilation and synthesizing professional advice (properly attributed of course), but with my own recommendations and criticisms of specific cases.

note: if anyone has particular advice to give me with this project, what you might want to see featured, i'm all ears.

</comment><comment><USER8> Tesults ([https://www.tesults.com](https://www.tesults.com)) - it's cool because for teams of say 10 or more doing automated testing they can focus on writing tests and maintaining automation infrastructure and allow this to handle reporting. It also gets better and better every day. Just today, launched a feature where csv files attached as part of a test case (like for captured performace metrics data) are automatically visualised as scatter charts with x and y axis fields being selectable.

</comment><comment><USER9> I'm working with my family managing our supermarket. It is not cool _at all_.

I got a Bachelors degree in CS at UFPE. I have been studying for a while to get back to software developer career.

<comment><USER10> You could so some pretty cool stuff. Have you been hyper optimizing it?

Product shelve to sale ratios?

80/20 type optimizations on revenue by skus?

Traffic flow maps?

I'd love to hear some result or stories if you do end up doing some of this.

<comment><USER11> Doing some basic image processing and tracking customers flow through the store would be fascinating.

You could categorize what people are shopping for, how long, and what buying one item tends to mean for the rest of their shopping cart.

I'd read that paper!

<comment><USER12> Which paper ?

<comment><USER11> I was implying that it would make an interesting academic paper.

</comment></comment></comment></comment></comment><comment><USER13> I'm working on a brainstorming/idea generation site as a side-project. No idea if people would want this.

Which lead me to down the path of wondering if there are any idea pitching sites. In the meanwhile, I just created a subreddit(/r/ideaspitch) which could serve that function for the time being, just so that I can relax and focus on my original idea again...

So yes, brainstorming/idea generating tool.

</comment><comment><USER14> AI driven stock trading robots, it's cool, because you compete in the market with the smarts people on Earth every day and making good money in the process...

</comment><comment><USER15> Electrical Vehicel Routing

Highly theoretical stuff that let me transition well from university

<comment><USER12> Is it possible to allow me to be part of your adventure?</comment></comment>


EnterpriseDB, Postgres Plus Maker, Raises $19 Million  - <AUTHOR> http://www.informationweek.com/news/software/database/showArticle.jhtml?articleID=220900775&subSection=News

<comment><USER2> Correction: EnterpriseDB doesn't make PostgreSQL -- they make a product _based on_ PostgreSQL.

EnterpriseDB:PostgreSQL :: RedHat:Linux

<comment><AUTHOR> fixed

</comment></comment><comment><USER3> "Postgres Plus includes, among other things, compatibility with Oracle (NSDQ: ORCL)'s PL/SQL data access language."

This is huge (if it works). At my job, PL/SQL has us locked in a loveless marriage with Oracle. Sign a pre-nup, use stored procedures judiciously.</comment>


There's a war on sugar. Is it justified? - <AUTHOR> http://freakonomics.com/podcast/theres-war-sugar-justified/ <comment><USER2> Sorry the article is very hard to read. You can't write articles with pull quotes for every other sentence. Well you can but it will be horrible

<comment><AUTHOR> It's a podcast.</comment></comment>


CSS is unnecessary given a layout language - <AUTHOR> http://pchiusano.github.io/2014-07-02/css-is-unnecessary.html <comment><USER5> Graphical layout is one of the most underestimated challenges in computer science. Programmers instinctively look at the problem and thing "oh, this is logical, I'll just whip up some basic principles and layout primitives and I'll have this solved in no time!"

No, you won't. Designing a layout framework is really, _really_ hard. Designing one that is simultaneously expressive enough to handle all of the crazy corner cases that pop up on a daily basis AND simple enough to allow "normal people" to actually use and extend it is quite difficult. For example, the Android layout system is suitably expressive but totally mystifying to anyone who hasn't spent a year reading the source for View/ViewGroup/FrameLayout/ViewRootImpl.

The OP's suggestion that there is some singular, beautiful, composable layout system that we could drop in to replace CSS is, frankly, a pipe dream. Or rather, I would be far more convinced if he actually pointed to a spec or pre- existing system that we might base our new system off of [1].

I see only three real possibilities going forward, in order of increasing likelihood:

1\. Someone does indeed come up with the One True Layout System (very unlikely).

2\. We finally shove bytecode-level runtimes into a browser and let a thousand flowers bloom (even odds).

3\. We keep incrementally improving CSS, adding support for various layout relationships that people need (probably).

[1] Elm's system looks neat, but it's not there yet.

<comment><USER6> 1\. Someone _has_ come up with the One True Layout System. It's just that most people like to pretend TeX doesn't exist or, when they grok the box-and-glue layout model, try to reinvent it from scratch.

<comment><USER7> Someone yell at me if I'm wrong, but isn't TeX designed for paged content?

That means while TeX might work amazingly for paginated content, single page apps, or really any non-paginated content, is very much a screwdriver where a hammer should be used scenario.

<comment><USER8> Overall it is, but when the above commenter mentions box-and-glue, they're talking about the building blocks of the line breaking algorithm TeX uses (you can read about it in this paper: [http://onlinelibrary.wiley.com/doi/10.1002/spe.4380111102/ab...](http://onlinelibrary.wiley.com/doi/10.1002/spe.4380111102/abstract) ). The box-and-glue system is a way of expressing a layout as an optimization problem (in the paper, they talk mostly about determining line breaks within a paragraph, but the idea of minimizing badness can be extended to determining page breaks as well). A bigger concern for me is the performance of laying out any reasonably complex page — the performance we get from rendering a reasonably complex webpage today is generally much better than rendering a reasonably complex LaTeX document.

I've come across a feature request for Firefox where someone proposed to use the Knuth Plass line breaking algorithm just for text layout, but they didn't get very much traction: [https://bugzilla.mozilla.org/show_bug.cgi?id=630181](https://bugzilla.mozilla.org/show_bug.cgi?id=630181)

<comment><USER9> Are there any CSS replacement proposals that are based on linear programming [1]? There are a lot of things you cannot solve with just LP (e.g. rearranging floats on a page) but it's a pretty good -- and simple -- abstraction for laying out boxes relative to each other.

Solving LP is fast, _especially_ when many of your constraints are equality constraints (as would be when specifying tables).

[1] [http://en.wikipedia.org/wiki/Linear_programming](http://en.wikipedia.org/wiki/Linear_programming)

<comment><USER8> I think Cassowary [1] is what you're talking about (particularly section 1.2 where they talk about some modifications to make their system very fast for incremental updates). Apple has based their constraint-based layout system, Autolayout [2], on Cassowary. There's also a project that incorporates Cassowary constraints into a CSS-like declarative syntax called GSS [3].

[1] [https://www.cs.washington.edu/research/constraints/cassowary...](https://www.cs.washington.edu/research/constraints/cassowary/cassowary- tr.pdf)

[2] [https://developer.apple.com/library/ios/documentation/userex...](https://developer.apple.com/library/ios/documentation/userexperience/conceptual/AutolayoutPG/Introduction/Introduction.html)

[3] [http://gridstylesheets.org/](http://gridstylesheets.org/)

<comment><USER9> Great links, thanks!

</comment></comment></comment></comment></comment></comment></comment><comment> grey-area CSS is broken.

I've just been watching a colleague learning HTML/CSS for the first time. HTML was easy and she has a very good handle on that, producing some nice HTML5 markup by hand very quickly. CSS has been a nightmare - mostly not because of selectors or values (that comes later), but because of basic layout issues caused by the nasty hacky layout model of CSS - in particular the concepts of floats, block and inline and unpredictable element sizes due to the box model.

But I disagree that CSS should thus become a general purpose programming language - the separation of concerns in HTML into content/style/controller is very useful and would be terrible to throw away, just because our current styling language is so lacking.

The problem with CSS is layout - properties, selectors and values could do with some work of course, but they're mostly passable if a bit underpowered. Layout is insane and it's down to assumptions made at the creation of CSS - <USER2> very simplistic doc model assuming some basic structure of heads, text and a few pics flowing in a linear fashion down a page - like a technical paper or simple book layout. Flexbox looks equally unintuitive if a bit more powerful.

It is a hard problem, but there has to be a better way than the current agglomeration of hacks upon hacks - something akin to the HTML5 movement for styling - remove or deprecate most of the overcomplex spec and refine what is actually in use. _Grids are key here_ \- they've been used in graphic design for centuries, and they are a fundamental part of organising information which is entirely missing from the CSS spec and should be the basis of layout, not an afterthought.

<comment><USER10> Indeed CSS is broken. But, if you tried to make that case several years ago during the Great War on Table-based Layout, you'd have been absolutely persecuted. Oh how we wrangled with the utter pain that is CSS layout, only to appease the tableless zealots. I can remember wrestling for hours with simple layouts that just wouldn't cooperate cross-browser. Meanwhile, I could achieve those layouts in mere minutes with tables. Not only that, the resulting table- based design HTML was an intuitive read.

The reason was as you say: Grids are key.

How many people would now honestly say that we are better off for CSS-layout vs. tables? But, it's amazing how an entire industry lurched in one direction so quickly, based on ideology. The pressure to use the "right" approach was immense. The whole thing had a very "Emperor's New Clothes" feel to it. Everybody seemed to agree that CSS layout was completely awesome, while I beat my head against the wall trying to make it work. Now, we all see that so many were actually suffering in silence.

> _the separation of concerns in HTML into content /style/controller is very > useful_

This is a belief that I question to some extent and I've wondered whether it's a core assumption that sounds great and thus goes unchallenged, but fails to make the cut in the practical world. In particular, how much do we really need to separate content from _layout_? Styling is one thing, but layout tends to be intrinsically tied to the content. You can change the appearance of content without modifying its meaning, but changing its organization or layout can render it absolute nonsense. Thus, if CSS were all about colors, fonts, etc., it would actually be a somewhat reasonable approach to separating reasonably separable concerns.

But, as most now agree, it's CSS's horrible attempt at managing layout that makes it so painfully bad. And, I really wonder if the core problem is just that there's no real benefit to trying to separate layout (vs simply style) from content in the first place. What we're really saying in attempting to do so is that we want to be able to create a document wherein we have a bunch of unstructured content that we want to insert in an essentially random fashion, then create a second document that rearranges the content.

It's an unnecessary abstraction that seldom provides an ROI. How often do we later want the content to stay exactly the same, but simply want to change where it appears on the page? And, if we do, is it really easier to change the layout in an external document (CSS or otherwise) than it is to modify the document?

I have yet to hear a proposal that makes more sense than the old-table based design. The purists said that tables are strictly for presenting tabular data. Fine. So, let's create a new tag called "grid" for layout and give it the same layout flexibility as the tables of old.

<comment> grey-area _Styling is one thing, but layout tends to be intrinsically tied to the content._

This is an interesting distinction - thanks. As you say there are issues with separating layout and content, because the two can be hard to separate effectively. I _think_ it is worth the effort though, and sometimes pays off (for example reflowing content for a mobile device). An interesting thought though that we should separate style and content, not layout and content.

As to tables, I think there were two issues mixed up in that religious war - the nasty markup of table/tr/rd, sliced images etc polluting every website when it was intended for data, and grid layouts (which it made easier). Unfortunately grid layouts were thrown on to the auto-de-fé along with sliced images and table markup, and then promptly reinvented (with much pain) by entire frameworks designed to make up for the shortcomings of CSS.

There have been very recent attempts to add grids to CSS, and hopefully they'll come to something (see link above from buovjaga) - I do think they're far more intuitive and most importantly impose a sensible structure on people attempting to lay out information.

<comment><USER11> Untying styling from layout is what OOCSS does. All styling is written only with classes. This makes it easy to reuse styles. All other selectors, especially nested, are avoided, since they rely on a certain layout and can't be reused.

[http://www.smashingmagazine.com/2011/12/12/an- introduction-t...](http://www.smashingmagazine.com/2011/12/12/an-introduction- to-object-oriented-css-oocss/)

</comment></comment></comment></comment><comment><USER12> Most "problems" with CSS (with the exception of vertical centering and a few others) are caused by the fact that people can't be bothered to learn CSS.

It's funny: if a programmer is told to write CSS but doesn't know how, he'll copy-and-paste from Stack Overflow, get a shit result, and say that CSS sucks. If a programmer is told to write Elm but doesn't know how, he'll learn the language, write some decent Elm, and be happy. Now, who do you think will have the better time - the person that actually learned his tools or the person that copy-pasted CSS from Stack Overflow?

Even if you assume that CSS is as horrible as the author would have you believe, the 'solution' of Elm is preposterous. As another commenter [0] said: it outputs a crazy amount of divs, all the styles are inline, you lose the CSS ecosystem, and you lose performance. Even the demos of Elm for layout are completely broken.

[0] [http://pchiusano.github.io/2014-07-02/css-is- unnecessary.htm...](http://pchiusano.github.io/2014-07-02/css-is- unnecessary.html#comment-1466610097)

<comment><USER13> That.

I actually learned CSS in a school. My teachers were real front-end developers.

I can honestly say that I never had any problem with CSS and that I never found it to be broken. The only issues that I think of come from trying to fix things for the old IE browsers, which are broken.

CSS itself? Mastered it in 3 months if not less.

Come on, people. You can't give me both "You are paid less because CSS is easy to learn!" and "CSS is so hard! I can't use it! We should create something new to remplace it!".

<comment><USER14> You seem new to this. Just keep centering variable height content vertically in variable height containers on different browseres until you get what's broken with CSS.

You can also try to pick up a newspaper (multicolumn) and try to replicate its layout so it behaves well with dynamic content.

<comment><USER13> Both of those things are easy.

Doing both of those things in IE6 is hard.

To me, IE6 is broken, CSS isn't.

<comment><USER14> Ie6 is ancient history now. Ie9 is the new ie6.

<comment><USER13> In a way, yes. IE6 isn't something that I have to support anymore.

However, most clients actually pay an extra to have us support IE7 - 8. On responsive websites. With plenty of customization and fancy graphics.

</comment></comment></comment></comment></comment></comment><comment><USER15> I'm not really sure I understand what the point of this message is. The point of separation between CSS and HTML is not that "designers" are idiots. Nor is it that developers are poor designers. The idea is strictly to keep the data separate from any other concern. This is broken all of the time by all sorts of grid based elements and such. But the idea does seem decent, if a touch naive.

That is, to Spolsky's credit, the point of HTML being completely layout free is supposed to be the compelling feature. And it roughly works for basic documents. I'm actually convinced it could work decently for more complicated layouts if absolute positioning were more understood by developers and designers.

Are there better ways to go? Certainly. I'm particularly fond of the way that LaTeX gets things done. Though, that is far from a "safe" environment. (For example, you should probably never just up and run a .tex document on your computer without first scanning it yourself.) Also, it is worth noting that efforts are usually made to separate style from content there. (Not sure what the overall verdict is on those at the moment. But they do exist.)

At the end of the day, though, the dream is still a language where you can edit one file to change the way something looks on render, and another to change what it contains. Any language that lets you do both in one place will result in you doing both in one place. Such that it becomes very problematic to change the look of something without changing what is in it. And vice versa.

Right?

<comment><USER16> > That is, to Spolsky's credit, the point of HTML being completely layout free > is supposed to be the compelling feature.

Except that it isn't. If you want to do anything entirely non-trivial, you have to annotate your HTML with classes and ids, and then hook into this using a complicated declarative language. But, at this point, there is no abstraction gain from

...

over

      floating_figure(...)

Functions are fine abstractions and nothing stops you from providing different implementations for different situations, and these implementations can again use abstractions to deal with a variety of output devices. Nothing here requires you to define layout specifics as part of the document [1].

Moreover, not all the world is just plain sequential text. There are mathematical formulas and syntax diagrams, for example. math.stackexchange.com falls back to Javascript (via MathJax) in order to display formulas; and Lout provides an excellent example of how one can specify the spatial relationships of syntax diagrams [2] while still abstracting over the implementation details (Lout is another functional layout/typesetting language).

[1] Of course, in practice, the world is never so clean, and you can rarely ignore layout constraints entirely; anyone who has ever written a paper containing a non-trivial mathematical formula knows that.

[2] [http://i.imgur.com/huD07xc.png](http://i.imgur.com/huD07xc.png)

<comment><USER17>
      > But, at this point, there is no abstraction gain from
      >
...

      > over floating_figure(...)

There is no abstraction gain, because you are using a presentational class name. It should not be "floating_figure", "big_red_text" or anything of the kind. What it could probably be is "feynman_diagram" or something simmilar describing what's so special about this particular element, not the looks or placement of it. And then it is up to your CSS to decide should it be floated, fixed, or hidden altogateher.

<comment><USER18> The idea of semantic class names is reasonable, but even that ends up needing to be ridiculously contrived with things like "feynman-diagram-wrapper."

<comment><USER19> There's proposal for ::outer pseudo-element to eliminate all such wrappers.

</comment></comment></comment></comment></comment><comment><USER20> I don't think the problem is that CSS is an unnecessary approach to the problem of layout. It is more that it is a _poor_ approach to the problem of layout.

A layout language is unnecessary given a bytcode VM a chunk of memory, code, and an output. The balance is in capability, performance, and understanding.

I have done a lot of CSS wrangling which has given me plenty of time to consider what 'a better way' could be. I doubt I'm alone in that respect.

CSS has three parts. Properties, selectors, and values. When someone is talking about how awesome CSS is they have usually done something clever with selectors. When someone is ranting about getting CSS to work right, they are usually trying to figure out what set of values to put into properties.

The properties themselves are insane. The legacy of incremental development and serving many masters. The options for values are limited. attr() would help my own usage a great deal but Firefox doesn't support it (see here someone complaining in 2011 that they've fallen behind Internet Explorer on this [https://bugzilla.mozilla.org/show_bug.cgi?id=435426#c3](https://bugzilla.mozilla.org/show_bug.cgi?id=435426#c3)).

Actually Properties, values and Selectors are all limited. Selectors are just the least weakest link. Properties could do with a complete _breaking_ overhall (ie. If a document is in doubleplusgoodCSS mode it only supports the new style properties). property values should be the results of expressions in a pure functional language. Selectors should be another expression system with operators and member-check functions, the selector system is close to what it needs to be already. Just a mechanism for user defined groupings (such as attributeContainsPrimeNumberAsHex("class")) and combinators.

<comment><USER21> I fully agree with your distinction of selectors, properties and values - <USER3> all parts of CSS are bad. When you say "property values should be the results of expressions in a pure functional language" \- which I think is a great idea - do you mean to use them to compute layout as well?

<comment><USER20> When I posted that comment My view was that layout would still be primarily driven by higher level style properties, but after I posted I though about it some more and I realized if done properly you could probably the css value language could theoretically do it all. If it were to generate values for the complete layout, bypassing the higher level layer, effectively telling the display engine that everything was absolutely positioned and in the right place already.

I don't think I would advocate for that to be the standard way to implement layout, but it should be at least possible.

Similarly I think the system should be capable of specifying a table where each cell has a background colour corresponding to its position in a Mandelbrot set. I don't think people should be doing that normally either, but I certainly think it should be something that is capable.

</comment></comment></comment><comment><USER22> In Servo we've been able to get a lot of parallelism out of the basic building blocks of CSS. Any replacement would have to have a good story here. "Just write your layout in JS" is _not_ good enough and would be a large performance regression.

<comment><USER23> Constraints based system is the way to go. And yes, it should be native replacement for CSS- a DOM property called constraints instead of style. Unfortunately, JS has to be used for now. [1] As for parallelism, we still have web workers for the solving of constraints computations.

[http://gridstylesheets.org](http://gridstylesheets.org) [1]

<comment><USER22> > As for parallelism, we still have web workers for the solving of constraints > computations.

I am confident that the lack of shared memory, along with the heavyweight nature of web workers, means that any attempt to use web workers to perform parallel layout will be slower than sequential.

<comment><USER23> You are correct. A native solution with a dedicated thread would be amazing.

</comment></comment></comment></comment><comment><USER24> I'm struck by the contrast between the conventional wisdom that content and layout should be kept separate, and the recent highlighting of Mike Bostock's work at the New York Times on articles like [http://www.nytimes.com/interactive/2014/07/03/world/middleea...](http://www.nytimes.com/interactive/2014/07/03/world/middleeast/syria- iraq-isis-rogue-state-along-two-rivers.html)

I've always been dubious about how well that mantra applies to web applications, but conventional wisdom certainly has it that content and layout separation works most strongly for documents; but Mike's work shows that layout can be a powerful component of messaging.

Producing pieces like the ISIS layout requires a much richer concept of separating the layers that go into the final presentation; paragraphs of text associated with geographical regions, times, and news events are the content items - not simple divs with classes, but rich objects. Choosing then how to lay those out is clearly far beyond the capabilities of CSS. And while in theory the layout logic to display a scrollable strip map with location markers could be reused for another story, in truth that layout is part of this article, not a generic 'stylesheet' that would be shared by a number of documents containing similar objects.

We need tools that facilitate creation of procedural layouts. CSS has its place in specifying typographic conventions, but it's a hindrance to making more interesting content-led layouts.

</comment><comment><USER25> Does anyone think it'd be a good idea for browsers to support more than one toolset? Right now it's just HTML+CSS+JS, no matter what languages people build on top of that assembly.

Elm seems like a neat idea, but based on Paul's post, I dislike the fact that it compiles down to CSS. It seems a disingenuous way to present the language. I'd much rather a browser was simply told this was an application/elm or something and ran with that properly.

<comment><USER26> "Does anyone think it'd be a good idea for browsers to support more than one toolset?"

Some people do. I do. But it seems to be a minority opinion; most web developers seem to live in this weird cognitively dissonant state where the HTML DOM+CSS is always the right tool for the job because it theoretically allows for platform-independent layout to "any" browser while then spending most of their time dealing with getting their layouts to actually work on about a handful of real-world browsers which all treat the same layout code differently (in ways from subtle to large); resulting in piles of frameworks, pre-processing systems and general hackery to get everything working, mostly, most of the time.

If there were a second toolset that were more rationally designed to solve the real-world problems of modern web apps, giving you layout via binding similar to what you see in Adobe Flex, WPF, Qt/QML, etc (not advocating any of those as the specific answer, just stating that I think they are all individually more sane than HTML/CSS/JS for app/UI layout) and just accepted the fact that the vast majority of websites are designed to be laid-out in a fairly constrained way (while still allowing for responsive layout for different sizes/dpis) I think web technology would be a lot less terrible.

And just to get it out of the way, there are some good hacky solutions that help the problem I described, like React.js, Angular, Dart, etc, but they are all built on a shaky foundation which always manages to show through because we're stuck with HTML/CSS/JS.

<comment><USER27> I used to believe using something like the tools you outlined would be easier until back in 2004 I spent 6 months porting my naitive windows application to apple. I scrapped the whole thing and started rebuilding on the predecessor to xulrunner, rebuilding mozilla and using XUL was great until I started to need graphing and different fluid layouts that I realized HTML is so much better for cross platform as more people are spending more hours every day making it better on more platforms and devices and it really is write once run everywhere once you move your native app to the server - at the end of the day you are going to spend countless hours tweaking for the different target OSs anyway - the web with HTML / CSS / JS are better at this than any other native solution...

[update] we ported our native c++ components to xpcom interfaces and rebuilt the frontend in 4 months allowing us to launch our product simo health - <USER4> purchased by RevolutionHealth 4 months later... I still as recently as 3 months ago receive emails from past customers asking for updates.

</comment></comment></comment><comment><USER28> The way we got here is interesting. In 1995, if you'd wanted to implement one of today's websites, you might have written a Tcl/Tk script that users could download and run. Tk solved pretty well all the problems people are talking about here in the 90s; it even had a safe mode for running untrusted scripts. But users in the 90s would have regarded as crazy any suggestion that they download and run random Tcl scripts from every site they visited! Lots of them turned off the early versions of Javascript, which couldn't do much apart from formatting tweaks.

Is the killer feature of CSS and Javascript simply that they undermined the frog's security assumptions so gradually that it stayed in the pot until it boiled?

<comment><USER29> TK finally got native looking skins in what, 8.5? Perhaps a set of attractive defaults combined with a cross platform package management system and we could have been talking.

That said, the web was easy for users. That makes all the difference.

</comment></comment><comment><USER30> I actually like CSS as it is now, and it's getting better ( _cough_ , flexbox). Am I the only one who finds CSS incredibly hard to master, though? I've been writing CSS for years and I still feel like a newbie sometimes, and feel like I'm just tinkering with random attributes until it looks right.

<comment><USER31> Suppose you want to create the largest possible square div inside the rectangle of another div. Any layout language that can't let me satisfy such a simple and obvious layout constraint is a travesty.

CSS will not let you do this, even with flexbox.

<comment><USER32> GSS will though! [http://gridstylesheets.org/](http://gridstylesheets.org/)

<comment><USER31> Does GSS work with Reactjs? If so, I might give it a try.

<comment><USER33> If GSS doesn't touch the markup, I think it would.

</comment></comment></comment></comment></comment><comment><USER14> I'd say we still have one language too few.

At the beginning html had content, layout and styling. CSS pretty cleanely excised all the styling from HTML. But it took out large part of layout functionality but lots remained. Best way to follow would be to extract layout stuff from HTML (so it can do what it does best, semantically annotate the content) and from CSS (so it can do what it does best, all the pretty colors, decorations and animations) and put it in new language that can define layout elements and bind styling and content to those elements.

</comment><comment><USER34> A layout engine works on a different level of abstraction, putting layout features in CSS will be awkward. CSS is fine for typographic features and selectors, but layout is all about relationships.

Actually, one really impressive engine for web layout engine is Treesaver: [https://github.com/Treesaver/treesaver](https://github.com/Treesaver/treesaver)

It's meant to provide primitives that are familiar to people from graphic design working on paginated content, like columns, grids, floating containers. Like Latex, it's also has the least-bad-layout strategy, but here, this runs on the client in Javascript, so that it adapts to the screen size.

I had just stopped working on a startup based on this technology. Operationally, it was proving extremely difficult adding effects that people are taking for granted in InDesign to work in a responsive manner on top of CSS and a 20kLoC Javascript layout engine. It took around a year of development just to get to the level of layout automation sophistication comparable to what a junior layout designer would produce.

</comment><comment><USER35> So what does it look like to define a layout in elm?

<comment><USER36> This is what he is saying is better than CSS? I don't think so.

[http://elm-lang.org/edit/examples/Intermediate/Form.elm](http://elm- lang.org/edit/examples/Intermediate/Form.elm)

<comment><USER37> That code is doing a lot more than just layout and styling.

</comment></comment></comment><comment><USER38> I think if you strip down this article, it's saying that something could be as powerful as CSS with fewer primitives given more composability.

</comment><comment><USER39> I like Mr. Victor a lot but I'm not sure I agree. I think the way CSS is implemented either doesn't jive with the paradigms many programmers use to approach problems or perhaps it is just laziness?

I meet a lot of programmers who are generally pretty smart and capable completely throw up their hands when it comes to laying out HTML via CSS. It's just rectangles being displayed on rectangles. It's nothing complex like displaying three or >3 dimensional information on a manifold. I am confident I could layout anything anyone threw at me, and CSS is just something I've picked up over the years.

<comment><USER40> It's not that it's difficult, really, but the tools are incredibly underpowered. For example:

* How do you vertically center an arbitrary element inside another where you don't know the height of any of them? Answer: The only reliable way is via "display: table-cell". It has several annoying limitations.

* How do you ensure that several horizontally adjacent boxes fill the width of the container and are all of equal height, regardless of their contents? Answer: Table again, but it's not always possible without JS because of how height percentages are calculated. (Also, all browsers including Chrome implement "height: 100%" differently.)

* How, given N elements arranged horizontally next to each other, do you ensure that they (1) fill the width of the container, (2) if they become too narrow (ie. min-width), any element(s) that don't fit will wrap below? (Note: Rule #1 must apply; when one element doesn't fit, the preceding "line" must expand to fit the full width of the container.) Answer: Not possible in CSS alone.

* How do you ensure that an element (eg., an image) of arbitrary width is always has the same height as it's width? (For example, imagine a grid which should expand to fit the window, and all cells should be quadratic.) Answer: With images, possible with an unintuitive "height: 0; padding-bottom: 100%" hack, not for other elements without JS.

* How do you center an absolutely positioned element of arbitrary width and height (think tooltip or speech balloon)? Answer: JS.

* How do absolutely position an element without specifying a width, so that the width becomes the minimum needed to display all of its contents up to a max-width? For example, a box saying "Hello" should take up the space required by that word and no more. Answer: Not possible in CSS alone, although you would have thought that "display: inline-block" would work. Firefox actually does it, Chrome/WebKit don't.

* How do you have an absolute element be the same width as another element? For example, a drop down menu should be at least the width of its menu item, and an autocomplete box should at least be the width of its input box. Answer: JS.

* How do ensure a label is vertically centered on the same text baseline as an adjacent textarea? Answer: Textareas are considered blocks, not text, so you cannot without computing the baseline and using padding or negative margins, and that is imprecise.

These are just a few basic real-world layout challenges. They should not be challenges, they should be simple to implement, but CSS doesn't help; it gets in the way more than it aids. In some cases, inconsistent browser implementations result in wildly different rendering. The result is JavaScript to fill the holes, and sometimes just to say "screw this, I will do in code".

<comment><USER41> 1\. Flexbox, through the align-items property.

2\. Flexbox, setting flex: 1; to the boxes. Can be done vertically or horizontally.

3\. Flexbox, setting flex: 1; to boxes. Setting a min-width to a flex-item takes precedence so it will be honored.

4\. You got me. I remember hearing talk about an aspect-ratio property. I'm not sure if the object-fit/object-position properties get the job done. The hacks will have to continue for now.

5\. left: -50%; and margin-left: 25%; will work. See: [http://codepen.io/bennettfeely/pen/LktDi](http://codepen.io/bennettfeely/pen/LktDi)

6\. width: content-width;? I don't know how the browser support is there, however. It may be possible.

7\. Same width as what element? The parent? Set position: relative; to the parent and top: 0; right: 0; to the child.

8\. That seems like a real edge case and maybe a bug. I'm not sure.

I hope that I got at least a few of those right but CSS and browsers are consistently getting faster and more powerful and the answer to tricky layouts is increasingly not "just use JS". Flexbox is now supported by all the browsers and solves a whole lot of layout problems that designers/developers have wrestled with.

<comment><USER40> Flexbox would solve a lot of these, but it's not supported by enough browsers to be usable, afaik. Are people using it in production?

Re #5, I managed to leave out the important part. I mentioned tooltip because I was going to write: ...where the element is placed _above_ another arbitrary element. This is impossible, and raises problems such as escaping "overflow: hidden" and what if the position goes beyond the viewport.

6: In theory, but it is apparently not supported by all browsers.

7: Not the parent, but an arbitrary element. For example, let's say I have an input field. I want to show an autocompletion dropdown box. The box should be at least the width of the input field. It must be absolutely positioned. The parent container of the input field may have "overflow: hidden", too.

(Overflow handling is really a broken concept that screws up a lot of CSS, because there is no way to escape it. Z-index is another awful one.)

Last pet-peeve: Floats depend on their order in the DOM. A float-right element must be placed before any non-float element in order to position itself vertically to be aligned with the parent box.

</comment></comment></comment></comment><comment><USER42> That's basically what I consider [1] famo.us to be.

Instead of using css for the layout/positioning, just use javascript directly.

and then build a [2] proper scene graph in javascript.

[1] - [http://famo.us/](http://famo.us/) [2] - [http://adnanwahab.com/Render- Tree-Visualization/](http://adnanwahab.com/Render-Tree-Visualization/)

<comment><USER43> Not seen famo.us before... Pretty much none of the demos work properly on my phone with the stock Android browser and 4.3.. And the amount of flickering in the browser even on my laptop was annoying. Looks to me like they have a long way to go.

</comment></comment><comment><USER44> The problem with the web is more fundamental: it is trying to simultaneously be two different things. One of these things -- document markup and hypertext linking -- it does pretty well. The other -- a GUI framework for remotely accessed applications -- it does _horribly_.

</comment><comment><USER45> Haven't looked at Elm. It may be the cat's pajamas.

But reading this article, I'm immediately reminded of all the marketing surrounding XAML a few years back. Not particularly enamored with the results there.

Poorly-done, abstraction actively _gets in the way_ of combination. At some point, everyone has to agree on the same abstraction if they're gonna work together; _enough_ of CSS has been widely implemented to allow folks to build on that, while plenty of other, richer, more powerful abstractions predate it, but were never widely agreed upon.

</comment><comment><USER46> I'd say we're getting pretty good mileage out of what we've got? CSS dominates layout for a large portion of overall screen time.

Are native app developers crying for CSS? Not exactly.

The browser window itself is a big layout impediment on the desktop. On mobile, hopefully the browser will just get out of the way, and give the app a decent way to install an icon, and some more "permanent" state.

</comment><comment><USER47> My concern with people rolling their own layout engines is that they are reinventing the wheel (for the most part). Diverging from standards means learning how to do something I already knew how to do.

Extending CSS with things such as LESS and SASS means I don't have to relearn everything. I just have to learn about the new features that actually bring something to the table.

</comment><comment><USER48> Html used to have style embedded into it (blink, table, align, font etc).

The idea of separating the style into a css file was born in a time when server side scripts were generating the html (hence the programmers), and the frontenders didn't want to ask for code changes nor code themselves. So they figured that if you could separate the content from the style, they could make changes without talking to programmers.

This didn't always go so well. As you all know, css quite often require wrapping divs and other content tweaks to do its wonders.

Eventually the frontenders gave up and took over responsibility for all the markup, only requiring a CRUD backend.

So now we have separation for no apparent reason. Some argue that it's a great benefit to be able to swap styles by swapping csses, but how often is this really used? And having parallell structures in your code is a known to be costly developer-wise.

If I look at how Bootstrap tries to close that gap by fixing the style of different elements and factor in the fact that all frontenders know how to code and own all the markup I think to myself: why not go back to the old system?

Html5 has already started this trend by giving explicit names to tags instead of calling them "div", "span" or "object". Btw, why have div and span in the contents, the only difference between them is style, right?

I think it's time to consider html a rendering artifact and let style be embedded.

</comment><comment><USER49> Am I the only one who actually likes CSS?

I tend to find can do pretty much any design that I've been tasked with without using graphics.

For example: [http://justinvincent.com/page/2043/anatomy-of-a-native- feeli...](http://justinvincent.com/page/2043/anatomy-of-a-native-feeling- html5-ios-app)

But I will admit it has taken 17 years to get to that place.

<comment><USER50> Building eye candy with CSS is lots of fun, and I enjoy it more than in other systems (e.g. UIKit). It's text layout that is ridiculously hard.

E.g. add a second button "calculate totals" under "done", but ensure that they always have the same height if one contains a line break. Maybe it's possible with flexboxes, but no client will let me target IE 10+.

</comment></comment><comment><USER51> Browsers use DOM whether you like it or not. The rendering engines are built on eventing model. CSS is what they understand now. We can think of changing that, but given the history of browsers and HTML standard, I am not very optimistic that such changes can be pushed through easily in a reasonable amount of time.

</comment><comment><USER52> "It's true that in using a language like Elm for layout, one loses the ability to cut and paste random CSS found on Stack Overflow in cargo-cult fashion without understanding what it does. I consider this limitation a feature."

Wow, elitist much?

<comment><USER53> It could have been worded better, but if you consider that people will do this copy-paste out of frustration with the inability of CSS to come up with a reliable, easy to use way of doing layout, which Elm solves, then it's not entirely unreasonable.

</comment></comment><comment><USER54> I'm not sure using a general-purpose language is the way to go, they do that for Mac/iOS development and it's 1000 times worse than CSS. Now, perhaps the FRP nature of Elm would alleviate the pain, I don't really know.

</comment><comment><USER55> We have a very fast internet nowadays, so we can include our own CSS engine (written in javascript) inside our webpages. It will rasterize the content into Canvas, it will look the same in all browsers.

</comment><comment><USER56> Is anyone using Flexbox in production?

I'm wondering how it works in practice, caniuse indicates that it can support all major recent browsers and not having to use a grid library would be nice.

</comment><comment><USER57> The solution is simple. Let the computer understand the intent of the user (why he needs an interface), and generate a custom interface that exactly fits his needs.

There is no reason to hardcode design. Design should be dynamic, and that goes beyond "responsive" design.

Heck, even a simple card-oriented UI where every model has a manually designed layout would beat whatever we have now.

Unless you're implementing a system that generates UI dynamically based on the data to display, you don't need to touch any low-level GUI code dealing with margins, colors, animations, sizes, etc.

All of this is quite obvious and intuitive. I'm sure it's been tried many times before. Why is it not what we use today?

<comment><USER58> Because the ui of a website or program is not just an interface, it's also (and quite often primarily) presentation. Visual presentation is a justifiably complex field with a rich history that has taught us that how you present information is often just as important as the information itself. All those colors, animations, etc are an integral part of expressing authorial intent that goes far beyond simple branding.

Arguing that computer ux should solely be driven by the needs of interface without concern for presentation is like arguing that all print media should look like unillustrated pages from a research paper.

<comment><USER57> I don't get what you mean.

What's the purpose of a presentation, and why can't it just be generated?

If colors and animations convey meaning, there's no reason not to include them in the generated UI.

I have used many aggregators that let me use features from a handful of services, and never have I missed the diversity of presentations of all the base services.

> Arguing that computer ux should solely be driven by the needs of interface > without concern for presentation is like arguing that all print media should > look like unillustrated pages from a research paper.

Unless I don't understand your definition of presentation correctly, and ignoring the absurd idea of avoiding illustrations in a research paper, I don't see a problem with this.

</comment></comment></comment><comment><USER59> It strikes me that CSS is pretty good, but the mess of hacks that the OP complains of are the result of crappy browser implementations, not crappy CSS?

</comment><comment><USER60> CSS seems too complex (and is) because you can't EASILY set boundry for rules in inner elems. This problem is solved by ShadowDOM.

It's easier to think in CSS when top level css is only top layout plus theme color setting. Try PolymerJS.

</comment><comment><USER61> I really like the point about designers learning to program. It got me thinking that eventually many/most professionals may need a basic grasp of programming. Then it dawned on me; why not teach EVERYONE basic programming in school?!

<comment><USER62> What about accounting? Most professionals need a basic grasp of accounting.

<comment><USER63> Accounting is not a language, programming is. You can create anything with programming.

Thats why it should be taught.

Edit: Care to elaborate why that comment should be downvoted?

<comment><USER64> I think you're being downvoted because life isn't just about creating something. Basic accounting is an important tool for any adult living in this world. I would argue the knowledge of managing finances is more important than programming, because it applies to everyone, regardless of your career path.

Debt, loans, mortgages, interest, investments, retirement plans, etc. These are important things for everyone to understand. When I look around, I think a lot of people would be better off if they had a better understanding of finances, but I rarely look at people and think their lack of programming know-how is holding them back.

<comment><USER63> I have run successful companies and been fine without ever knowing basic accounting.

We are not talking about what is most important we are talking about what is most useful powerful for someone who today is in school and need to have some skills for the future.

Are you seriously telling me that if you had to choose for your kid you would tell them to learn accounting and not programming?

<comment><USER64> You're missing the point, we're not talking about career paths here, no one is advising anyone to become an accountant over a programmer. We're talking about an introduction to these subjects.

If you had one week to sit down with every person in this world, I think that time would be better spent discussing finances, investments and retirement, instead of an introduction to variables, if/then statements, and loops.

<comment><USER63> I am not missing the point since I was the one making it.

It doesn't matter what you think would be better what matters is whether programming contrary to accounting can be seen as a language or not and is the reason why it should be taught.

Just putting some arbitrary other field in there is what is missing the point whether that is accounting, CPR, sports, history and so on.

You can put anything in but programming is different since it potentially can contain all the other fields in it's ability to simulate them all.

</comment></comment></comment></comment></comment></comment></comment><comment><USER65> Quick. Everybody get out their 'web standards' sticks and lets all beat this guy up. The web must be done with standards, otherwise someone might not be able to use some web pages on some device at some point in time, and that is not acceptable.

</comment><comment><USER12> TL;DR Neither this blog post, the Elm website or Elm's example sites have a good example of something laid out well with Elm (all break horribly badly when resized.) Also, If people actually learned CSS, they would have a much easier time.

Firstly, I find it hilarious that when I opened this blog post dissing CSS the author's 'responsive' design was completely and utterly fucked. I opened the page at 50% width and 100% height on a laptop, and I was confronted with a bunch of unrelated text taking up literally the entire fold. By resizing my browser I found out that the hideous thing taking up my entire browser window was what would be the sidebar if I expanded my browser further. I then go to the Elm website and am presented with a site that's not responsive at all, and I take a look at some "example sites" built with Elm and I get this[0] site, which breaks in a ridiculous fashion when resized. Hell, if you're designing a layout language and you can't even point to one example where it works I'll really start to question it.

Secondly, I think that the vast majority of 'problems' people have with CSS would be solved if people just learnt it as they would a programming language. All the time I hear "CSS is so frustrating!" from people that write code in other languages just fine but don't know CSS. Well, just learn it! Most people don't care about learning CSS, and only copy-and-paste from Stack Overflow. You wouldn't copy-and-paste every single line of code from Stack Overflow for your C++ application, so why do you do it with CSS? I actually took the time to learn CSS a while ago, and it's been much easier to write it since. I have only had one problem in the past few years with CSS specifically: vertical centering and browser inconsistencies. I'd say having only two major problems for a language that's been designed around browser politics is excellent.

[0] [http://library.elm-lang.org/](http://library.elm-lang.org/)

<comment><USER66> > Firstly, I find it hilarious that when I opened this blog post dissing CSS > the author's 'responsive' design was completely and utterly fucked.

That kind of proves his point, though. If the foundational layout language for the web requires more than basic effort to create a responsive design, something with it is fundamentally rotten to the core.

<comment><USER12> > If the foundational layout language for the web requires more than basic > effort to create a responsive design, something with it is fundamentally > rotten to the core.

CSS is a language. Like Haskell, C++, or Ruby, if you only put "basic effort" into learning it when you try to write some it will be absolute shit.

<comment><USER66> > CSS is a language. Like Haskell, C++, or Ruby, if you only put "basic > effort" into learning it when you try to write some it will be absolute > shit.

CSS is not a general purpose programming language. A domain specific language is a failure if the most basic features of the domain cannot expressed with minimum complexity.

THERE'S NO WAY TO CENTER THINGS VERTICALLY WITHOUT FALLING BACK ON HACKS, FOR GOD'S SAKE!

<comment><USER12> Sure, it's not a general purpose language. As a result, writing decent CSS is easier than, writing, say, decent Haskell. But people have to put _some_ effort into learning it or they'll get crap.

I agree with you entirely re:vertically centering things, but that's one of a very small number of major flaws in CSS.

</comment></comment></comment></comment></comment><comment><USER67> Yawn, just a typical engineer who can't understand CSS. Go back to the dinosaur languages like C and Haskell and leave the web to the smart guys.</comment>


Ask HN: Why the black border? - <AUTHOR>

I've noticed that there's a mini black border on the top of the HN bar.<p>Why? <comment><USER2> The late Mr Jobs. It's happened a few times before.

<comment><AUTHOR> Ah, yes. I had assumed it had something to do with the death of Steve Jobs.</comment></comment>


Show HN: Valleygirl – A chrome extension that discreetly likes everything - <AUTHOR> https://github.com/tylerkrupicka/valleygirl <comment><USER2> It's a good thing extensions are disabled in incognito mode by default.

</comment><comment><USER3> Fun project to get bearings in making a Chrome extension. Good one!

</comment><comment><USER4> An Instagram version would be very much appreciated.

</comment><comment><USER5> I might create a dummy account, install this, and view the volume of likes it'd produce...</comment>


Resurrecting a Dead Library: Part Two – Stabilization - <AUTHOR> https://mtlynch.io/resurrecting-2/ <comment><AUTHOR> Author here. Happy to answer any questions about this article.</comment>


How I discovered CCS Injection Vulnerability (CVE-2014-0224) - <AUTHOR> http://ccsinjection.lepidum.co.jp/blog/2014-06-05/CCS-Injection-en/index.html <comment><USER2> It seems odd that I haven't seen a full state diagram (including send/receive packet details) for SSL, unlike e.g. TCP, since I think that having one, either as part of the spec (which only contains a brief one for the handshake sequence) or created from it before writing any code, would've made it much more difficult to cause bugs like this. At least I've found state diagrams very useful when working with protocols like this.

<comment><USER3> Agreed. The sheer brilliance of clarity in the classic _TCP /IP Illustrated: Volume 1 - The Protocols_ only becomes visible in hindsight. Anyone know if the the LaTeX source for its diagrams are available? I have been able to emulate them for the most part in _graphviz_ using _shape=record_ when required, but wonder if that was the technique used.

(PS. Reading the above tome ~1999, I actually discovered numerous specification flaws in the RFCs ... eg. for ARP and ICMP, that could be used for remote OS detection.)

</comment></comment><comment><AUTHOR> What is interesting is that the (core?) of OpenSSL was re-written in Coq according to the author. Then the natural question can that representation be used to generate C code from it and would that make a safer product.

<comment><USER4> It seems like the author was able to discover the vulnerability while in the process of specifying it in Coq (understanding the handshakes better during specification).

From what I read the Coq specification itself wasn't complete or used to discover the vulnerability.

Would be great if the author shed some light here.

<comment> ian-lewis That seems correct. He discovered it while creating the coq specification but coq wasn't itself used to discover the bug. He confirmed that much in this podcast (It's in Japanese though): [http://mozaic.fm/post/88061749963/4-security- protocol](http://mozaic.fm/post/88061749963/4-security-protocol).

</comment></comment></comment><comment><USER5> Okay, how many of you thought this said "CSS"?

<comment><USER6> Mildly disappointed this was not about injecting arbitrary styles into sites.

<comment><USER7> > How I hacked HN using a CSS vulnerability to make it look like reddit. 4214 > comments 1 hour ago

</comment></comment></comment><comment><USER8> It's funny, I just assume open source security oriented development would follow far more rigorous testing and verification than it apparently does. I guess it's no different from every other kind of development - testing and verification are not the fun part. Human incentives being what they are, this keeps playing out. Bounties are probably the only practical way to reverse those incentives because making that cash makes testing and verification fun again.

<comment><USER9> Even at big shops... testing is not fun and not done as much as you'd [want to] think.

<comment><USER10> Proposal: When something is completed according to the devs a bonus is posted. For every vulnerability discovered by all the other devs in the company a portion of the bonus gets paid out. If an 'x' period has passed and no vulnerabilities have been discovered the remainder is paid out to the original devs.

<comment><USER3> Your proposal is interesting in an office dynamic sense, however I feel that the problem is really time pressure, not a lack of quality pressure. Additional carrot (financial reward) for programmers is always good, but perhaps a more meaningful range of attacks would only be made by experienced external consultants... and the size of the fund must then be large enough to interest them.

For fun, I just duckduckwent 'make a game of it' and got some amusing responses in the context of this suggestion.

 _Kids can make a game out of almost anything! See more about gross motor activities, outdoor play and pool noodles._

 _Whatever you 'd like to improve about your life, try making it into a game. Challenge yourself. Make up your own rules. Then play it to win._

 _When the family gets so big that you no longer can buy holiday gifts for everyone, you have to find an alternative. For many, that turns the gift exchange into a rousing game. "We used to buy for everyone and I enjoyed that, but in the last couple of years, we had to face the fact ..._

 _I decided to put together my own Iron Rations and make a game of it. You are welcome to play. I hope you have some helpful ideas to add to the stash. The rules are: Everything must be shelf safe with an expiration date or best by date of at least two years._

 _Principal Skinner: Oh, licking envelopes can be fun! All you have to do is make a game of it. Bart: What kind of game? Principal Skinner: Well, for example, you could see how many you could lick in an hour, then try to break that record._

<comment><USER8> Perhaps but there are so many more actually fun "games" than testing your code that you are again fighting natural incentives - people will pick the most fun game when given the choice of many, yes?

<comment><USER3> With reference to the parent's suggestion, 'winning' the game means getting paid. Hence game theory :)</comment></comment></comment></comment></comment></comment>


Restoring a Soviet-era analog synthesizer - <AUTHOR> http://imgur.com/a/8plOW <comment> c-smile Yeah, that's where Open Source was born - in USSR.

I do remember that each consumer device was sold there with its schematics, assembly/disassembly and installation instructions. And that was the law.

<comment><USER3> > "I do remember that each consumer device was sold there with its schematics, > assembly/disassembly and installation instructions. And that was the law."

That's interesting. I wonder if there's a archive of those schematics/documents for Soviet consumer devices somewhere.

<comment><USER4> A lot of western instrumentation and test equipment used to come with full circuit diagrams and assembly info. The understanding was that your HP spectrum analyser or Tektronix scope cost so much money that if it broke then you would have it repaired, and to do the repair you need the circuit diagram.

<comment><USER3> Yes, similar information used to be made available for Western electronics. In addition to engineering equipment, consumer electronics such as TVs and radios, and even computers had full schematics at one point.

As an example, can see hardware schematics in the Apple II Reference Manual found here:

[http://www.applelogic.org/UserManuals.html](http://www.applelogic.org/UserManuals.html)

I'm mostly interested in the Soviet material as I'm assuming that because it was a legal requirement the types of documented designs will be more broad, but if you know of an archive of old Western schematics also, I would be interested in taking a look.

</comment></comment></comment></comment><comment><USER5> I'd call this a servicing more than a restoration. The thing looks incredibly well built with an eye towards serviceability over ease of assembly - <USER2> much exactly what I would expect for a Soviet built appliance.

<comment><USER6> There was plenty of awful Soviet tech, too - this thing has survived because it had some value, was well built and taken care of but you don't hear about the thousands of pieces of tech that were shoddily made cheap crap (though expensive for a Soviet citizen) and wouldn't last a year without repairs.

Soviet tech had to be built for serviceability - people couldn't often afford new things and even if they had the money, there was no guarantee it was even available. And many things just broke down constantly. It even went so far that "a set of golden hands," meaning one could fix a lot of stuff was a valued characteristic in males, and women sometimes may have overlooked other personality flaws in a relationship because of it, like drinking.

My grandma had a Soviet TV well into the 90s and even early 2000s, maybe out of sentimental attachment more than anything else. The thing broke down constantly, every 3-4 months at least, and she'd always call a repairman. In the end I think more money was sunk into it than a brand new 4K TV would cost now. It was finally laid to rest when her usual TV repairman died, and the new one found it increasingly difficult to find replacement parts, and finally gave up, and we could at last get her a new TV.

<comment><USER7> To make a counterexample, my grandmother had a Zil refrigerator she bought in the 1950's ([http://i.imgur.com/POw7U6R.jpg](http://i.imgur.com/POw7U6R.jpg)) that worked for over 50 years until the late 2000's. It would have probably worked another 50, if we hadn't changed it for a modern larger and more energy efficient one.

<comment><USER8> It's not only Soviet built things would last longer. US washing machines, refrigerators made in 50-60s also last forever. The ones you buy now, the way the are made and painted will rust in couple of years and will be thrown to garbage in 5 years. And no, it's not because it's cheap to buy a new one, they are just simply bad.

<comment><USER6> You can actually buy decently made appliances nowadays, it's just that the majority of people don't want to spend that much money. A $300 washing machine in the 50s was much better than a current washing machine at the same price but that amount of money in the fifties is $3000 now. A $3000 modern washing machine would probably blow the 50s one out of the water.

<comment><USER9> Unless you buy insane super-appliances, long-lasting appliances typically cost 2-3 times the consumer average.

I bought a Miele washing machine in 1996, and it's still being used today. It was about twice the price of machines that I'd had to before that never seemed to last more than a few years.

</comment></comment></comment></comment></comment></comment><comment><USER10> That's a great piece of work - it's wonderful to know that old electronics are being cared for.

If you're curious to see one in action - [https://www.youtube.com/watch?v=zlP5hdPVB18](https://www.youtube.com/watch?v=zlP5hdPVB18)

<comment><USER8> Another one : [https://youtu.be/6SRYIPlt3z0](https://youtu.be/6SRYIPlt3z0)

</comment></comment><comment><USER11> The upside-down mounted capacitors seem weird. They are particularly visible in the modulator board picture[1], but are also on other boards. Anyone know why that was done, or seen such assembly before?

[1] [http://i.imgur.com/VNEpWkS.jpg](http://i.imgur.com/VNEpWkS.jpg)

<comment><USER12> Stress relief. Thermal / moisture expansion of the PC board (and this looks like shoddy phenolic paper) bends the leads a tiny bit and the bending forces go through the component. By making the leads longer, they are less stiff and require less force to accommodate, so less drift due to this.

It was a relatively common method in precision electronics.

There could be other reasons as well, e.g. if these were ceramic capacitors they might do that to avoid cracking issues. (Because ceramic capacitors drift a lot by themselves, a drift/precision explanation does not make sense)

<comment><USER13> I've taken a good amount of Soviet-era electronics apart and those capacitors (the red ones) crack very easily. I think they are ceramic.

In fact I remember being deliberately careful around them as they were easy to bend, when reaching in a tighter space to solder or adjust some variable resistors or capacitors.

</comment></comment></comment><comment><USER14> Here's the Alisa 1387 album it mentions at the beginning: [https://www.youtube.com/watch?v=3K9g0Kmznxc](https://www.youtube.com/watch?v=3K9g0Kmznxc)</comment>


Ask HN: How can we make the real Tunisian Revolution? - <AUTHOR>

Hi,
I have seen some interest here in the Tunisian revolution. I'm looking for your opinions and suggestions on how we can implement a democratic government and educate more people.
Today, after the storm, I walked down the street. I was amazed with the change. In the past, all people talk about football, now they all talk about politics. Something no one talks about in the Ben Ali Era, even with one word. Internet is free, even Wikileaks works now.
Here are some backgrounds about the revolution
1. Bouazizi sets fire on himself, because of humiliation from the authorities
2. The poor people went on a strike, with cell-phones asked their relatives in other cities to go on strike.
3. The manifestations took place in several other places and gov. was exteremly upset.
4. The Internet users were suddenly freed and every one began to talk about politics (sharing videos and status).
5. Government, extremely upset, killed 25 person in less than 24 hours. An estimated 89 were killed in the last 5-6 days of manifestations.
6. Tensions got high, manifestation become violent and they set fires on parks, hotels, resorts.. The red area of Ben Ali.
7. Ben Ali speaks to people, asking them to cease. He opens the Internet, freedom of expression, access to media (like Aljazeera). He certainly lost.
8. With Facebook and Twitter, a big manifestation took place in front of the ministry of interior.
9. Ben Ali runs away, his militia are still in the country, along with his corrupt system and disorder took place.
So what do you advice? We don't have an armed opposition, we don't have a political opposition at all.
We just want to leave peacefully and securely. <comment><USER2> A stable and open economy that offers opportunities is more important than an immediate democracy. People in the west seem to think that democracy is some mythincal "fixall" for the world's problems- it isn't. Democracy is worthless without a stable state- the backbone of a stable state is a large middle class, a middle class can't be created without a vibrant economy. Look at Russia in the 1990s, Iraq now or a myriad of other examples that demonstrated that democracy by itself can't create stability.

Democracy is an excellent goal to shoot for in modern society. But take a look at China- they modernized their economy and saw the population's quality of life rise, they have a way to go, but opening up the economy has done much more, quicker and with less pain than reforming the political system without economic reform, or reforming both at the same time (once again look at Russia).

<comment><AUTHOR> You are assuming here a faithful system that ,at least, let people work and move. They'll put obstacles in front of you whenever you want to do anything, you can't trade freely, don't think about industry here too, the new education system is miserable...

I'm not looking for a government, where people can hear my voice. I'm just looking for a government that just let me work (legally).

You can get abused by police for no reason.

</comment></comment><comment><USER3> Network. Keep in contact and form alliances to ensure free speech and free information as long as this is possible. Communication was the key point in the events in Germany before the wall was falling.

Don't split your energies in small fights. The next step must be democracy, not fights about details of politics. Who are the people you can trust? Can they form a party that ensures free elections?

Our hearts and minds are with you. And we wish you all the best on your way to become a strong democratic country.

Have You access to world news? German news tells us, that Ben Ali is in Saudi Arabia now. His wife is said to have brought 1.5 tons of gold (worth 49 million euro) out of the country.

edit: I just read, that there are strikes in Jordania as well. Inspired by the events in Tunisia. (And Gaddafi in Libya didn't sound too happy about the events as well, maybe frightened of a revolution in his country as well)

<comment><AUTHOR> Thanks, strikes and fights are back here in Tunisia. The people are still decided that the system should collapse. I'm afraid of abusive use of power, today one person is killed from the system militia.

</comment></comment><comment><USER4> Support a system of checks and balances, rather than any leader or party, however good or popular. Support a judiciary independent of the executive, a state system that doesn't overtax or subsidize industries, but lets them be. I don't know how you do that really. Tunisia is not extremely poor, and is relatively educated. You have the potential to compete and create jobs rather than just a welfare state that will lead to another clique of cronies.</comment>


To Boldly Go: A One-Way Human Mission to Mars - <AUTHOR> http://journalofcosmology.com/Mars108.html

<comment><USER2> I have a couple people I would be absolutely delighted to send on such a trip, even knowing the science return would be hardly significant.

<comment><USER3> As Robert Zubrin has said, if there were an open invitation for volunteers to be the first explorers to Mars, they would be lined up coast to coast.

<http://www.nationalgeographic.com/adventure/0009/q_n_a.html>

<comment><USER2> I would not sure if anyone on my list would volunteer, but I would be more than happy to send them against their will ;-)

Mars needs politicians.</comment></comment></comment>


D. Crockford removed as speaker at Nodevember for making speakers uncomfortable - <AUTHOR> https://www.reddit.com/r/javascript/comments/50u77r/douglas_crockford_removed_as_a_keynote_speaker_at/ <comment><USER2> ALso really obnoxious the way is the way "they" have redefined "unsafe", and created a charge that no one can possibly defend themselves from: "he made me feel unsafe". It really puts one in a Kafkaesque position - what response can you possibly give - if someone decides they feel unsafe then thats that.

</comment><comment><USER3> A Hacker News link to a Reddit thread to a tweet. I'd really like to see a little bit more detail before grabbing my pitchfork.

I'll admit to being pretty clueless - it would be great if the organizers could write up the reasons in a blog post or similar. I don't know what Crockford has done to deserve this - not saying he doesn't, just that I don't know - and would like to know.

<comment><USER4> From what I can discern, a few speakers feel "uncomfortable" speaking at a conference with him around.

Here's one person's opinion on it: [https://medium.com/@nodebotanist/why-i- won-t-be-speaking-at-...](https://medium.com/@nodebotanist/why-i-won-t-be- speaking-at-conferences-with-douglas-crockford- anymore-61bc29f028c8#.5da3ctvx3)

Everyone is entitled to their own opinions, but I honestly think this particular community is taking Doug waaay too seriously. The community claims to want diversity... Unless that person thinks differently.

There are some explicit examples of how Doug was hateful in the reddit comments... And it really just came down to him calling the "old web" promiscuous, and that translated to "slut shaming" The entire web.

It's situations like these that make me ashamed to call myself a Javascript developer, but I know that drama happens in all communities.

</comment></comment><comment><USER5> Another irony fail</comment>