Lessons from a Failed YC Pitch with Paul Graham - <AUTHOR> https://keen.io/blog/116400439081/lessons-from-a-failed-yc-pitch-with-paul-graham <comment><USER3> I think Kyle's pitch could have been fine and he could have avoided 2 years of feeling shamed if pg was a bit more encouraging and patient during the delivery. A little more "yes, and" less "but, why not". Give the founder the benefit of the doubt they might be starting with some idea. If they really do have nothing it's going to be apparent, you don't need to try to sniff it out in the first 15 seconds.

"Yes, and we're really starting to see the metrics space pick up steam with the likes of mixpanel and others. That's a pretty exciting place to be. Tell us what Schmetrics is going to do amazingly well that some of these other players may not be tackling yet."

vs

"You can't even use the microphone correctly. We've already funded Mixpanel, what could you possibly do better?"

<comment><USER4> Between friends I think you're right.

But the discussion here is a pitch to investors (or YC). The point is that you need to be very deliberate and explicit.

The questions asked are very focused on sussing out not just what the product is, but if the founder has a clear and concise vision of what makes it super valuable.

In this case, presenter gets really rattled, and ends up defending all these weird edge cases because PG is throwing him off (on purpose).

Lots of people have great ideas, and even great products, but as PG says at the end - if you can't explain precisely what your product does, it speaks not only to issues of the product, but to the team that runs it.

And OF COURSE, that doesn't mean it's the only indicator of success, but it's a good sign.

But more importantly than being able to pitch, Kyle demonstrated something far more valuable - the ability to pursue his vision doggedly year in and year out until he built something people wanted.

<comment><USER5> So in a nutshell: tough love.

</comment></comment></comment><comment><USER6> How many times had you tried to pitch before that day? My guess is less than 50 times. It takes several dozen practice runs before, really, the ideas gel in your mind, the questions people ask are all predictable, the confusion points are already planned for and navigated around. This is just an example of how _everyone_ feels when they've done 'the pitch' an order of magnitude too few times.

I think it's also worth pointing out, listen to just the very next person who comes up to speak. PG hands a big gift-wrapped present to the speaker, "with that in mind, please, tell me precisely what you do" and look what the entrepreneur does... launches into a thing about something Bill Gates said, and you can see PG just going right back into that pain zone.

So I think it's a terribly common problem, and really, it's something that pretty much everyone works through manually just by getting out and giving the pitch over, and over, to different people, gauging their reactions, their body language, their questions, and just adapting, refining, sharpening that pitch to the point where it really crystallizes exactly the best way to communicate how what you're doing really makes a difference.

<comment><USER7> I believe I had spoken with 1 or 2 investors total about the company before that moment.

You're right: practice really seems like the key to getting this stuff down. One can have a clear intuitive understanding of their vision long before they have a clear way to express it in English.

</comment></comment><comment><USER8> I was there for that pitch and I remember it only because it was entertaining, not because I had any judgemental thoughts. If anything I had (and still have) so much respect for people who talk on stage because public speaking is the bane of my existence and I need to practice speaking 50 times before I'm not going to have a breakdown. So kudos for getting up there and kudos for proving "everyone" wrong.

</comment><comment><USER9> I watched this online a long time ago and it actually has come to mind from time to time. I never actually thought it was as terrible as it has been made out to be though. Kyle was obviously very nervous (as I would be) presenting to PG in front of hundreds of people.

Now realizing how successful Keen.io, Kyle, and his team have come to be I find this far more inspiring than the typical success stories that float around the HN bubble. I run the entrepreneurship club at my university and I plan to show this to all our members.

<comment><USER10> do you have the link to the video?

<comment><USER9> The video is at the bottom of the post.

</comment></comment></comment><comment><USER11> hmmm...i watched the video of kyle pitching and i understood what was talking about. i don't see what was so bad about it. to me, given the interruption- laden flow of the dialog, it was as clear and concise as you could probably expect (though i'm sure the pitch got better over time)...but i'm a developer (the target). i think the problem was not necessarily the content of the pitch, but the fact that he tasked with getting a non-developer (or one who's been out of the game) to understand the specific problem he was addressing - in an artificially short time frame. ...he was also talking to someone who was desperately trying to put his idea in a box so he could understand. it's too bad that kyle took it so hard. it's great to share this experience with others so they can learn that pitching is hard and doesn't always go your way. practice, practice, practice.

</comment><comment><USER12> I used to be "Data Scientist" in a social game company - one of OP's target - and I remember the data warehouse and back end teams tried to build something like Keen IO, but I have to say, in a non structured way because there were so many teams. All I can say is that Keen IO would help a lot this business, and I know at least one company that does exactly that.

After watching Kyle's presentation, I was reminded of the real time analytics problem I experienced, and if I was still working there, I know I really would have wanted Keen IO.

<comment><USER7> Thank you for writing this! We definitely have social game traction, 3.5 years after this pitch. (I come from that industry as well)

It's validating to hear from an industry veteran that our thesis isn't totally off base :)

</comment></comment><comment><USER13> I <3 Kyle / Keen, but that could have gone better tbh; open office hours seem to add a lot of pressure. Kyle didn't get what PG was asking though:

1) mixpanel - you = ? 2) why use keen over mixpanel?

Succinctly (+ all in imho of course); Keen is a level lower than Mixpanel; - <USER2> more powerful, more flexible, API driven events platform. Users would be anyone that wants to track and report on things which aren't the norm for mixpanel, who's product is good but pretty prescriptive in it's use.

</comment><comment><USER14> This is a really cool showcase and kudos for being so open! I'm currently writing up an article on about 18+ (simple) points of what founders should be looking at before pitching.

But many times it just boils down to the same and only point - and that's the beginning. Just directly start with the problem, and then naturally move on to the solution. Like 50% of startups we watched at pitch events just failed at that - and the crowd was left wondering what they're really doing.

It's like the most important thing. Drop everything else, just throw the problem out there - to make people think about it - and then how you solve it.

But this, this was a step harder - no slides to back you up, and an investor in another data tool grilling you on the spot and not letting you off the hook to validate his own investment - that was a tough cookie. Usually you can just leave a comment or two about competitors and move on, but here you had to stay and explain details. So it's not a black and white fail for sure.

( Another point that helped us internally was to pitch in front of the team first. Because there the fails will become evident much faster, and it's a crowd you don't care too much about failing in front. Pitching in front of your team = unit tests before the event )

<comment><USER7> Great points here. Wish I had thought to pitch the rest of the team first.

For your article, you may be interested in a piece I wrote about Demo Day pitching specifically:

[https://keen.io/blog/41079734225/how-to-write-your-demo- day-...](https://keen.io/blog/41079734225/how-to-write-your-demo-day-pitch)

</comment></comment><comment><USER15> I watched this a long time ago. I actually remember thinking that you handled the situation well, and seemed quite comfortable. It's a stressful situation, plus you were alone, without a co-founder to help answer some questions. Also, there was added distraction with the microphones etc. You were brave to go up there, many people wouldn't.

</comment><comment><USER16> I was at KeenCon when Kyle did the opening talk in front of the audience and I remembered thinking how well-spoken Kyle was and how awesome could be if _I_ could pull it off as well.

How funny it is to look at the Startup School video now - a great story about Keen IO not getting into YC and _then_ raised $11M+ from Sequoia!

</comment><comment><USER17> Two things.

One: I don't know what is the idea of keen.io after watching the video. I guess it is some sort of generic data collection platform with querying capabilities.

Two: based on the pitch (6 mins) I don't know why should I not just roll with opensource components are assemble this platform myself, tailored to our use case.

During the video the keen.io guy kept mentioning mongodb as a competitor, I am not sure why. Bringing together a very similar platform that is able to collect metrics, able to process them and query the results for meaningful analytics is roughly two weeks project for a seasoned guy. The value of such a system provided is not extremely high. I am pretty sure they got a revenue and all that, I am just not sure if it is profitable to provide this service. Seems a little thin to me.

<comment><USER18> I think we're almost all in agreement that pitch video doesn't do a very good job explaining Keen IO. I mean, it was posted on HN three years ago as an example of a bad pitch :).

The idea for the service was at its infancy and Kyle's ability to articulate it to pg in front of 300 people just wasn't there yet. If you'd like a more up-to-date answer, here's one I wrote to the question "Why wouldn't I just roll my own" that someone else asked in this same thread: [https://news.ycombinator.com/item?id=9378228](https://news.ycombinator.com/item?id=9378228)

<comment><USER17> Thanks!

</comment></comment></comment><comment><USER19> I remember Kyle. He was on the same session as those two Stanford girls (PG told them not to make a recipe site because they were Stanford hackers, if I recall correctly) and that guy who forgot to shake PG's hand.

From what I remember, I didn't understand a thing from what he was saying but he seemed to have done two things:

* Solve a problem _HE_ had. * Acquire some paying customers (that early).

Tradeoffs stating that people part away from their money in order to get something they want/need, his product seemed to matter to someone.

That, to me, was pretty neat on its own.. So Kyle, if you're reading this: I didn't think you were a fool and actually look up to you, dude. I'm writing something that solves a problem -I- have right now and I have to learn a lot about a lot before it works.

Good luck!

</comment><comment><USER20> I actually can't see how this epitomizes a failed Pitch. Sure, he was struggling a little bit, and towards the end went off the rails.. but generally if this summarizes what a 'poor pitch' is like, then we're in pretty good shape.

</comment><comment><USER21> I still don't really grok what value keen.io provides. The storage and querying of data (including unstructured) is pretty easy (and has been for a long time) with numerous ready-to-go solutions.

Is the value mostly on the visualization and dashboard portion? Is it some sort of WYSIWYG query editor?

<comment><USER13> Sure - you can do most things yourself - doing analytics is actually pretty hard to get right. From my pov, their value is on not having to do it yourself, plus a good, flexible API.

<comment><USER21> Sure I get using existing tools but I'm trying to grasp the real value here. So I should view it as an analytics platform that supports completely adhoc data types? Because, to me, the first main selling points it makes on their site I couldn't care less about. Storing and querying adhoc data is a solved issue and extremely easy.

Now if they are providing the tools to make analysis quick, efficient, and intelligent - That makes a bit more sense. Guess I'll have to check out a trial.

<comment><USER18> [note: I work at Keen and have a lot of biases :)]

The main alternative to Keen IO is to build your own backend. Some developers will always prefer that, but many folks don't have the time & resources to devote to constructing & maintaining an analytics backend. Here are some things that people appreciate about Keen IO:

\- The ability to start collecting & querying their event data immediately & easily

\- Keen's uptime and reliability (transferring backend ops from their pager to ours).

\- Not having to worry about scalability. For customers who are collecting billions of events per month and planning to double in less than a year, data challenges are less trivial.

\- A point and click query interface that can be used by some non-devs to run analysis, create graphs, extract data, etc

\- Query & visualization libraries that allow you to create reporting interfaces (websites/dashboards/customer-facing-analytics) much more quickly

\- A growing inventory of features & open source tools that build on the API (scoped keys, caching, notifications, dashboard templates, etc)

</comment></comment></comment></comment><comment><USER22> Kyle is one of the most humble, coolest, down-to-earth individuals I've met - his personality and ambition is what entrepreneurial communities need.

</comment><comment><USER23> Noting that I applaud the introspection: He was embarrassed for thinking he sounded stupid whereas I think he should have be embarrassed for seeming like a jerk.

<comment><USER7> Now that I've finally re-watched it, I can't help but agree. I definitely sounded like a jerk (and probably a fairly stupid one). It's funny how one's defensiveness can be interpreted :(

<comment><USER24> You've figured it out. Most people interpret defensiveness as an absolute sign that you're a jerk and that you're wrong. It doesn't matter if you're arguing in favor of the laws of physics, if you sound defensive, you will be dismissed as an arrogant idiot.

But anyone who would rush to judge someone so harshly is revealing themselves as the bad person. A little compassion is all that is necessary to see that you meant well.

Take pride in having gotten on stage and put yourself out there. You tried something that would scare most people to death. And you did quite well. Plenty of people like myself have nothing but respect for you and don't think you're a jerk.</comment></comment></comment>


Microsoft Doubles Down on Ethereum with New Blockchain Product - <AUTHOR> http://www.coindesk.com/microsoft-launching-new-ethereum-blockchain-product/ <comment><USER2> I don't really understand why some big companies are so excited about blockchain. The trustless part of it seems unnecessary for them.</comment>


Ask HN: What is best career advice you ever received or you can give? - <AUTHOR> <comment><USER2> Quitting is always an option (i.e. avoid the sunk-cost fallacy as much as possible).</comment>


An MIT Trick: Computing On Encrypted Databases Without Ever Decrypting Them - <AUTHOR> http://www.forbes.com/sites/andygreenberg/2011/12/19/an-mit-magic-trick-computing-on-encrypted-databases-without-ever-decrypting-them/ Original paper, CryptDB: Protecting Confidentiality with Encrypted Query Processing http://people.csail.mit.edu/nickolai/papers/raluca-cryptdb.pdf <comment><AUTHOR> Original paper, CryptDB: Protecting Confidentiality with Encrypted Query Processing [http://people.csail.mit.edu/nickolai/papers/raluca- cryptdb.p...](http://people.csail.mit.edu/nickolai/papers/raluca-cryptdb.pdf)

<comment><USER2> Yeah, not very new. The idea of "homomorphic encryption" has been around for a while.

[http://www.securityweek.com/making-use-sensitive-data- cloud-...](http://www.securityweek.com/making-use-sensitive-data-cloud- without-ever-decrypting-it)

<comment><AUTHOR> I agree, novelty is not a factor here but the performance is.</comment></comment></comment>


AWS Cost Allocation Tips and Tricks - <AUTHOR> http://copperegg.com/aws-cost-allocation-tips-and-tricks/ Step-by-step guide to setting up and using Amazon's new AWS cost allocation feature. <comment><USER2> very cool!</comment>


A conspiracy so vast - not just NSA, FBI and local police are also spying - <AUTHOR> http://www.foxnews.com/opinion/2013/12/12/conspiracy-so-vast/

<comment><USER2> As an article for the informed, not really a lot of new stuff, and unfortunately no links to sources backing up the allegations made--though a few minutes of Googling gets you what you need.

Loathe as I am to support Fox in any way possible, this is the exact sort of article written in the exact sort of way that you could push it out to your family and extended family in a "[FWD][RE][RE][RE] BAMA IS SpYiNg ON U$" message.

And it's important to have this sort of article for important issues--let us never forget that half the population is below average.

EDIT:

If there is hope, it lies in the proles.</comment>


Java: Missing Features - <AUTHOR> http://www.infoq.com/articles/Java-The-Missing-Features <comment><USER2> Apart from primitive specialization the biggest omission in my opinion is the lack of value types ("structs"). It's almost impossible to write code that is heap allocation free or allows reasoning about cache locality.

<comment><USER3> Just yesterday I've watched this: [https://www.youtube.com/watch?v=88-szpeNfrU](https://www.youtube.com/watch?v=88-szpeNfrU)

Long story short: keep the traditional getters and setters but have just a byte[] field to store the object state. For example If you need just the date (without the time) you can store it in 2 bytes, say 7 and 8, and in getDate() method you do

        public Date getDate() {
             int day = bytes[8] * 256 + bytes[9]
             return new Date(day * MILLIS_PER_DAY);
        }

Some of the improvements are amazing

</comment></comment><comment><USER4> What I would love to come over from C# is:

* Auto-Properties - Get rid of all those ugle getters and setters cluttering up POJOs

* Object and Collection Initialisers - [https://msdn.microsoft.com/en-us/library/bb384062.aspx](https://msdn.microsoft.com/en-us/library/bb384062.aspx)

<comment><USER5> might want to checkout lombok. [https://projectlombok.org/](https://projectlombok.org/)

<comment><USER6> Just keep in mind that some of the features are a bit iffy. If you use their vals IntelliJ will syntax highlight it as an error in red for the simple reason that it's non-compliant with the Java language spec. Also, you'll usually need a new version on Lombok every time a new version of Java comes out, otherwise what used to compile with the previous java version will no longer compile. If you use the auto constructor you're going to have fun finding usages since there's nothing to click on, and changing the order of fields in your class will silently change the ordering of parameters in your constructor - double the fun of the fields are of the same type. You'll also be left wondering why you went to all the trouble of adding dodgy language extensions instead of just using a language which provides those features anyway. That and your code (subjectively) looks really ugly plastered with annotations everywhere. Some people like Lombok, just make sure it's a choice you make going in with your eyes open.

<comment><USER7> _> If you use their vals IntelliJ will syntax highlight it as an error in red for the simple reason that it's non-compliant with the Java language spec._

There's a free plugin that adds Lombok support to Intellij. You will be able to use getters/setters/builders etc. as if they were compiled.

<comment><USER6> Builders etc. work fine, it's the vals that are permanently underlined in red, even with the plug in. It compiles OK with vals, but still highlights it as an error in red in the editor.

</comment></comment></comment></comment></comment><comment><USER8> Some of those missing features are being worked on for Java 10 and can be tested already from the early prototype that is available.

JVMLS 2015:

[https://www.youtube.com/playlist?list=PLX8CzqL3ArzUo2dtMurvp...](https://www.youtube.com/playlist?list=PLX8CzqL3ArzUo2dtMurvpUTAaujPMeuuU)

Technical Keynote at JavaOne 2015

[https://www.oracle.com/javaone/on- demand/index.html](https://www.oracle.com/javaone/on-demand/index.html)

Of course, first we still need to get Java 9.

And then when Java 10 with value types, reiffed generics, new FFI API, long Arrays is available, one can write blog posts about being forced to use Java 7 with these missing features on Android.

</comment><comment><USER9> > The issue of primitive specialisation of generics is only tangentially > related to type erasure, and run-time visible generics are actually much > less useful than Java folk wisdom insists.

Run-time visible generics are pretty important because it lets us avoid boxing everything. In .NET, they don't have this problem, and as a result primitive dictionaries are ~17x faster [0]. Java folk wisdom seems pretty accurate to me in this case.

[0] - [http://fsharpnews.blogspot.com/2010/05/java- vs-f.html](http://fsharpnews.blogspot.com/2010/05/java-vs-f.html)

<comment><USER10> He's talking about reification versus specialization. The .NET runtime is specializing generics for value types and that's how you avoid boxing. For normal classes though, specialization would not have any benefit and the boxing argument goes away.

Interestingly, specialization can be done at compile-time and doesn't necessarily have to be a runtime feature. Here's a Scala compiler plugin doing that: [http://scala-miniboxing.org/](http://scala-miniboxing.org/)

<comment><USER11> > He's talking about reification versus specialization.

It's neither according to the usual (C++-inherited) lingo where specialisation is the userland override of generics reification. Refinement may be a better term for what the article is talking about (runtime-optimised instances without reified types).

And refinements should already be doable in java today with no static type information, Pypy does it with list strategies, I expect Objective-C's hidden classes could also enable it (though I'm not aware of such a use).

> Interestingly, specialization can be done at compile-time

That's where they started...

</comment></comment></comment><comment><USER12> The author of the article seems to be essentially looking for Kotlin (except for the structural typing part, which is a terrible idea and which Kotin thankfully ignored).

<comment><USER13> Structural typing is actually very useful when you need it occasionally, which is one of the reasons I've largely ignored Kotlin so far. The jury is still out on that one.

</comment></comment><comment><USER14> Ok weird, as a scala programmer these aren't the main pain points when I go to a less powerful language. I miss monadic comprehension, implicit parameters/higher kinded types (for type classes) and inference the most.

</comment><comment><USER15> Moving from C# to Java 3 years ago was a painful experience in language expression.

However, IntelliJ, Java8 Streams, and Google Guava made the process tolerable.

I've grown to begrudgingly tolerate the weak Generics support, but the one thing absolutely still drives me insane is that I cannot have a method overload for a different generic parameter

i.e.

        public void do(List<ABC> abcs);

        public void do(List<DEF> defs);

FFS Java, come on. (Yes, I know, type erasure, it's still humiliating)

</comment><comment><USER16> >For example, it was only with C++14 that lambda expressions finally arrived.

nope.

</comment><comment><USER17> I've been bitten by the "Long indices for arrays" lack once before. But then again, I had no reason for storing a String of length greater than MAX_INT in memory in the first place. Streaming it was the better approach in my case.

Honest question: is there ever an acceptable case for having such a long String in memory?

<comment> andrew-lucker So would this affect all flat memory allocation? Say if you wanted to allocate 100GB for a bloom filter, would you need to break it into chunks?

<comment><USER10> Yes, you'd need 6 arrays of 2147483648 longs (max int), plus one array of 536870912 longs, so a total of 7 arrays. Not that bad really.

<comment><USER18> Yes, I have code like that and its annoying and bug prone. Even if its a write one exercise :( Would be nice if could just avoid that exercise in bit shifting and anding.

</comment></comment></comment></comment><comment><USER19> Some of these, like reified generics, would be great, and it's sad it's too late to add them to the JVM. Some of these, like more expressive imports, seem pretty pointless given that we use IDE's. But some of these are quite un- Javaish.

Structural typing would really go against the grain of the language, and i have a very hard time believing it would actually be useful. What method name is currently widely used with the same semantics across many classes, without being specified by an interface or base class? I can't think of one. There used to be close(), but that's been dealt with. Are there others?

Collection literals seem like a poor idea when there are so many different collection implementations. If i say:

      List<Integer> list = {1, 2, 3};

What kind of list do i get? ArrayList, as that's the usual go-to? A foot- shooting opportunity for anyone doing concurrent programming! And a frustrating missed chance for anyone with a functional bent who would prefer an immutable list. Moreover, it seems unnecessary when you could easily just add constructors or factory methods like:

      List<Integer> list = new ArrayList(1, 2, 3);
      List<Integer> list = ArrayList.of(1, 2, 3);

Which leave the choice in the hands of the programmer for only a minimum of extra syntax.

Maps are a bit harder, because you need a way to describe pairs. In most projects i work on, i end up creating some helper methods that let me write:

      Map<String, Boolean> map = map(entry("Java", true), entry("Go", false));

And i wish there was a better syntax for that.

Something like algebraic data types would be good, though. You can already implement un-extendable classes using mild hacks:

        public abstract class Shape {

            private Shape() {}

            public static class Circle {
                public static Circle of(int radius) {
                    return new Circle(radius);
                }

                public final int radius;

                private Circle(int radius) {
                    this.radius = radius;
                }
            }

            public static class Rectangle {
                public static Rectangle of(int width, int height) {
                    return new Rectangle(width, height);
                }

                public final int width, height;

                private Rectangle(int width, int height) {
                    this.width = width;
                    this.height = height;
                }
            }

        }

Because the constructors are all private, so putative subclass can't call them. But you don't get pattern matching, and of course it's all rather verbose.

There are various madmen out on the edge of town trying to create terse approaches to this by meddling with forces beyond mortal knowledge:

[https://github.com/poetix/mtuples](https://github.com/poetix/mtuples)

But i can't see that going mainstream.

<comment><USER20> The visitor pattern essentially gives you pattern matching for your example. It can even give you destructuring pattern matching, if you wish. With a fixed hierarchy, each visit method handles one concrete case, and its signature can destructure fields and pass them individually. It's a hoop to jump through but not so bad.

<comment><USER19> Very true, but you have to write it all by hand, so it's the usual tedious and error-prone boilerplate until IDEs learn to autogenerate it. It would be nice to have an automatic solution like you get with real ADTs.

</comment></comment></comment><comment><USER21> Things that would be good to add in Java are:

\- Collection and map literal.

\- Value type.

\- Multiple return values.

\- Destructure.

\- Pattern matching.

<comment> saiya-jin that multiple return values got me interested. I can see this exploding complexity/unreadability of the code at first glance.

honest question - what would be real added value compared to dedicated wrapper type holding all you need for return?

<comment><USER13> 1\. Not having to declare a pointless wrapper class.

2\. Tuples support pattern matching.

3\. For simple cases the return type is clearer, no need to dig up another class declartion to figure out what the field types are.

</comment></comment></comment><comment><USER22> I would like to see support for json and regex, similar to JavaScript.</comment>


How much money will your idea make you? - <AUTHOR> http://blog.reemer.com/how-much-money-will-your-idea-make-you <comment><USER2> "Excel is about as sexy as a pig wearing a miniskirt" - loved that.

Great post - remembering that a better definition for how successful X is could be how much money you will make instead of how many users you have is worth repeating..

after all, if you believe in price elasticity - a free product should have infinite users even if it is crap.

I think just about every project I start is done with a back-of-the-envelope type calculation on return, return on time, return on money, etc. I forget not everyone does this.</comment>


The Golden Ratio and Typography  - <AUTHOR> http://www.lauradhamilton.com/the-golden-ratio-and-typography <comment><USER2> That's actually a common misconception. There's no proof the proportions of Parthenon especially exhibit the golden ratio, neither do the proportions of the human body. Not to mention that there are so many body parts to compare to each other lengthwise, that it's inevitable some will end up close to 1.618.

According the Wikipedia article for the golden ratio, there's a few places where it might show, but nothing too conclusive. In my opinion, it's just make-belief, people want to believe in a mysterious and divine constant guiding nature. I don't know a lot about typography, but I see no reason whatsoever to use the golden ratio to determine the proportions between sizes.

1: [http://measureofdoubt.com/2011/08/29/lies-and-legends- about-...](http://measureofdoubt.com/2011/08/29/lies-and-legends-about-the- golden-ratio/) 2: [http://en.wikipedia.org/wiki/List_of_common_misconceptions#M...](http://en.wikipedia.org/wiki/List_of_common_misconceptions#Mathematics)

<comment><USER3> Another nice summary of this sort of thing: Fibonacci Flim-Flam

[http://www.lhup.edu/~dsimanek/pseudo/fibonacc.htm](http://www.lhup.edu/~dsimanek/pseudo/fibonacc.htm)

</comment></comment><comment><USER4> Relevant: Mythbusting the Golden Mean

[http://gurneyjourney.blogspot.ca/2013/01/mythbusting- golden-...](http://gurneyjourney.blogspot.ca/2013/01/mythbusting-golden-mean- part-1.html)

[http://gurneyjourney.blogspot.com/2013/01/part-2-golden- mean...](http://gurneyjourney.blogspot.com/2013/01/part-2-golden-mean-and- leonardo.html)

[http://gurneyjourney.blogspot.ca/2013/01/part-3-golden- mean-...](http://gurneyjourney.blogspot.ca/2013/01/part-3-golden-mean-in- nature-and-man.html)

[http://gurneyjourney.blogspot.ca/2013/01/part-4-golden- mean-...](http://gurneyjourney.blogspot.ca/2013/01/part-4-golden-mean-and- human-body.html)

[http://gurneyjourney.blogspot.ca/2013/01/part-5-last- questio...](http://gurneyjourney.blogspot.ca/2013/01/part-5-last-question- about-golden.html)

</comment><comment><USER5> Inspired by Brown's modularscale.com, I built another viewer for golden ratios for my own use. I use them all the time in css. [http://gelform.com/golden](http://gelform.com/golden)

</comment><comment><USER6> I wish this myth would die a well-deserved death. The Golden Ratio isn't a well-kept mathematical secret behind Greek architecture, art and typography. This is New Age nonsense masquerading as science.

</comment><comment><USER7> It'd be nice to see an example at the end. Does the page itself even use the ratio for the headings?</comment>


Anatomy of a Modern Production Stack - <AUTHOR> http://www.eightypercent.net/post/layers-in-the-stack.html <comment><USER2> This is an interesting portrait of _container_ -based production stacks, but I'm sure most companies aren't using containers.

This also doesn't mention anything about the application you're serving: HTTP servers, databases; nor does it mention the vehicle you use to push changes to your application (source control? ssh to host? ssh to each guest container, good heavens?), control distribution upgrades (how would you upgrade your kernel? how would you upgrade apache?), and so on.

What do other kinds of stacks that aren't on the "Container Bandwagon" look like? Just "ordinary" provisioning of virtual machines?

With so many problems, I don't think "Container" can be considered as equivalent to "Modern" quite yet.

<comment><USER3> I'm no expert, but I would imagine environments without containers probably use some sort of provisioning software like Chef or Ansible. If your application is big enough, you cannot manually deploy to each one as you described.

This article seems more like a container-centric description since there is no mention of build servers, applications, databases, etc.

<comment><USER2> Exactly. It would be really fun to explore those facets of a production pipeline.

I'm sure that's been written before, but I can't think of anything off the top of my head...

</comment></comment></comment><comment><USER4> It's articles like this that make me feel like containers are the new Java EE, factory-factory-builders, dependency injection, etc. I mean all this makes sense in some context, but whatever happened to right tool for the right job? Just having all of these things for no reason doesn't make you "modern".

<comment><USER5> in other words, how to emulate badly working scripting language in a XML based configuration container for a web project, yo know, with flexibility.

</comment></comment><comment><USER6> This is definitely a visionary post and the title is a little misleading. A more useful title might be: A Vision for a Container-based Production Stack (based on experiences at Google). I think the post covers the scope of container-related problems very well, but I definitely know of a lot of production stacks that work well and don't look at all like the post describes :)

One consideration missing from the post: one day we could very well have a ton of opaque/sealed/closed-source container images provided as SaaS. For example, Oracle could provide their products in containers which you would then use on your own hardware or your own cloud provider. This sort of product would give CIOs a bit more control over OPEX/CAPEX and security.

The current post assumes a single central registry. IMO it's more likely containers drive a distributed ecosystem of registries, and container-oriented stacks will need to deal with this.

<comment><AUTHOR> [Author here]

I'd _love_ to see a decentralized image naming and distribution system. I'm pushing hard for this to happen as part of the OCI. See [https://groups.google.com/a/opencontainers.org/forum/#!topic...](https://groups.google.com/a/opencontainers.org/forum/#!topic/dev/OqnUp4jOacs).

</comment></comment><comment><USER7> I noticed how much of this focuses on containers and the problems that follow specifically from using containers. I thought the reason for using containers was because it makes shit simple.

<comment><USER8> I'm always thinking about a Shellshock type scenario.

Instead of "use x tool to upgrade bash on every server", it becomes "upgrade bash on every server", followed by "rebuild each of my several types of containers" then "redeploy every single container".

<comment><USER9> Ideally your containers don't depend on bash, and instead are just running their app's process. So then any given scenario is generally only _either_ upgrade bash on every server (if the problem if lower in the stack than the container) _or_ rebuild and redeploy every container (if the problem is in a library used at the app level).

</comment></comment></comment><comment><USER10> It is important to not go overboard with these things. If you are building an app that probably won't have 10^6 requests a second and won't need to scale to the moon, this is overkill. All of such things add a lot of extra latency and are CPU hungry. Logstash and elastic search are big offenders here.

</comment><comment><USER11> what I'm worried about and I think is frightening is that people may start to think that MODERN==CONTAINER which is wrong. It depends really. Do not use app containers just for the sake of being modern. If you really want a production ready stack first inform yourself deeply how to do normal Dev & normal Ops right, understand the concepts and get to know how to make a single server and your application bullet proof for production usage before ever thinking of adding the complexity layer of app containers on top or underneath of this. Chance is pretty big that you do not need app containers because your use case is too small for justifying this "modern" layer of abstraction which will give you also new sort of "modern" problems for sure at some stage. Don't get me wrong... containers can be great but not everybody needs them.

</comment><comment><AUTHOR> Author here.

Lots of comments on the term "modern" and the fact that this is container based.

While there are obviously other ways to skin this cat, for me, I want the following out of my production stack:

* Self healing and self managing. If a machine fails, I don't want to have to think about it. The system should just work.

* Supports microservices. The idea of breaking your app into smaller components (regardless of the name) can help you to scale your engineering _organization_ by keeping the dev team for each µs small enough that a 2 pizza team can own it.

* Efficient. I want a stack that doesn't require a lot of hand holding to make sure I'm not wasting a ton of resources.

* Debuggable. Complex applications can be hard to debug. Having good strategies for application specific monitoring and log collection/aggregation can really help to provide insights into the stack.

</comment><comment><USER12> Beware the pre-optimization... it's a time suck...

</comment><comment><USER13> These articles always remind me of William Gibson, who said "The future is here, it's just not evenly distributed yet."

I am sure this is in our the future.

</comment><comment><USER14> I wonder why nobody considers Ceph[[http://ceph.com/](http://ceph.com/)] as a proper storage system for micro-service stacks. Maybe because it is mostly considered an infrastructure solution.

Migrating data between hosts and containers for stateful services, data snapshots and file-system isolation can be easily solved for example with Ceph RBDs.

</comment><comment><USER15> Not even close. Nice whishlist though.

</comment><comment><USER16> Thanks for sharing your knowledge.</comment>


New IPhone To Be Announced Today? - <AUTHOR> http://www.cnn.com/2009/TECH/06/08/apple.iphone.wwdc/index.html

<comment><AUTHOR> One of the only times each year when I actually look forward to getting up at 5am.</comment>


Obama's Other Healthcare Victory: EHR Boom - <AUTHOR> http://www.forbes.com/sites/quickerbettertech/2012/07/02/obamas-other-healthcare-victory/

<comment><USER2> The EHR incentive program is "working" in the sense that adoption rates among physicians are way up, but it's only because they're being forced, not because the software is any good.

Every encounter I've ever had with EHR systems, whether direct or indirect, has been a complete mess. My online EHR through Kaiser is completely unusable, and according to the people who evaluate these things, it's supposed to be one of the best. [1]

Last week I was at the doctor twice, and both times the doctors were complaining about their EHR software, once because it takes so long to boot up, and the other time because it takes longer to sort through allergy testing results in digital form than it used to take with paper charts.

The problem is, the incentive structure in place forces docs to either adopt what's out there or miss out on big incentives, and eventually get penalized [2]. This creates a twisted incentive structure for software companies where they basically can capitalize on the fact that the docs have to adopt a system. All the software company has to do is put out something that's compliant with gov't standards, even if its totally unusable by doctors. Just take a look at the website of the company touted as a great example of the success of the gov't incentive program in the article: <http://www.medfx.com/> Would this pass muster in the consumer internet space? In enterprise SAAS? Not a chance.

So the startups are incentivized to get something out so they can get in on the scheme before the window of opportunity closes, what about the big companies who have been building these systems for years? Well, they make most of their revenue from implementing, training, and maintaining systems, not from licensing software, so their incentives are to sell contracts, not make their software any better, because that ends up hurting their bottom line [3]. All they have to do is maintain relative parity with emerging companies, and get real, real good at sales.

It's really a shame, because there is enormous room for real innovation in this space. There is a truly incredible amount valuable data is siloed off in these systems, thats sometimes not even available to the physicians themselves [4] let alone researchers who could use the data. And that, of course, is not mention the potential to help doctors spend less time wrestling with charts, and more time caring for their patients.

[1] [http://thesash.me/who-will-fix-the-ux-of- healthcare-a-3-tril...](http://thesash.me/who-will-fix-the-ux-of- healthcare-a-3-trillio)

[2] [https://www.cms.gov/Regulations-and- Guidance/Legislation/EHR...](https://www.cms.gov/Regulations-and- Guidance/Legislation/EHRIncentivePrograms/index.html?redirect=/EHRIncentivePrograms/)

[3] [http://thesash.me/who-will-fix-the-ux-of- healthcare-a-3-tril...](http://thesash.me/who-will-fix-the-ux-of- healthcare-a-3-trillio-44611)

[4] My dad had to hire a consultant to make updates to his EHR system so that he could run queries for certain things among _his own patients_

</comment><comment><USER3> I've been working on EMR and similar tech for 15 years. As an entrepreneur I look for opportunity where I can find it and I think there will be opportunities for scrappy startups once ACA rolls out.

It might be a "Boom" for some vendors, but I think it will be _harder_ for the small startup to get traction implementing innovative solutions in the EMR space, because it appears there are more artificial impediments to implementation with the new government intervention in healthcare.

I think you'll see monolithic software vendors like GE Health[1] with their Centricity EMR get the lion's share of government investment. They'll use their clout to impose more 'certification' on small vendors, raising the bar for participation and market entry.

It's already begun with groups like CCHIT[2]. A non profit certification body that apparently works in concert with the above mentioned large software vendors to create an expensive hurdle for small companies in terms of cost and compliance.

The hammer to get provider participation? Providers will have their future medicaid/medicare reimbursement rates cut if they don't use a certified EMR. With Obamacare/ACA - reimbursement is likely going to be a much bigger portion of the average doctor's revenue.

There is some incentive for 'meaningful use'[3] which is a cash reimbursement for adoption of the certified, monolithic software, but it's not clear if it completely offsets the cost of acquisition, training and support.

[1] <http://www.gehealthcare.com/centricity/> [2] <http://www.cchit.org/> [3] [http://healthit.hhs.gov/portal/server.pt?open=512&objID=...](http://healthit.hhs.gov/portal/server.pt?open=512&objID=2996&mode=2)

</comment><comment><USER4> My mom has worked in health care for 25 years and she complains furiously as she fights with EHR software. None of it is good.

If you ask me, no amount of money is worth getting wedged between customers that don't want to deal with government regulation, and The federal government. One law could destroy your margins overnight.

I'll watch these "victories" from the sideline. I'd rather get my money from the customer and not indirectly through incentives paid out by tax dollars.

</comment><comment><USER5> My takeaway,

"... consider some other ways to profit from the EHR boom. Software will need to be written that will interface with these integration platforms and make it easier for those doctors and their staffs to navigate their patients' histories. Customized devices, like tablets and handhelds, will need to be sold to those same doctors. Or perhaps some will prefer customized apps for their smartphones. If you're not a hardware or software person don't worry: all of this change will require services too – consulting, training, project management and support. "

<comment><USER2> Consulting, training, and support currently represents the vast majority of revenues generated by the Health IT industry.

In 2010 the top 25 HIT companies grossed over $26.7 billion, but on average, only 22% of revenue for each came from software. [http://www.healthcare- informatics.com/article/healthcare-inf...](http://www.healthcare- informatics.com/article/healthcare-informatics-100-companies- revenue?page=show)</comment></comment>


Show HN: rTypeset – A typographic pre-processor for HTML - <AUTHOR> http://doches.github.io/rtypeset/

<comment><AUTHOR> This was heavily inspired by this morning's discussion of Typeset.js ([https://news.ycombinator.com/item?id=10076672](https://news.ycombinator.com/item?id=10076672)), a similar pre-processor written in Javascript. Several commenters complained about not having a similar utility in Ruby.

</comment><comment><USER2> Now it should be easy to make it into a Jekyll plugin! =)

<comment><USER3> So, I'm not the only one who was thinking that. Nice! :-)

</comment></comment><comment><USER4> May I ask for porting this to PHP too :-)

<comment><AUTHOR> Maybe have a look at [https://github.com/jolicode/jolitypo](https://github.com/jolicode/jolitypo)?

<comment><USER4> Thank you very much indeed!</comment></comment></comment>


How Facebook Mobile Was Designed to Write Once, Run Everywhere - <AUTHOR> http://www.readwriteweb.com/archives/redux_how_facebook_mobile_was_designed_to_write_once_run.php

<comment><USER2> This article suggests that the new iteration of the Facebook app for iOS is written mainly with Web technologies and the fronted runs in a WebView, which explains why it sucks so much more than the previous version. Has anyone else noticed lots of really sluggish content loading, occasional hangs, mysteriously empty panes, etc? While the app is polished enough to seem native (kinda), it seems to be an argument that Web technologies are not yet ready to be an alternative to native UIKit development -- on iOS, at least.

<comment><USER3> What really intrigues me is that average users feel the same way; it's not just us. Read the iPhone app reviews (current average: 2.0 stars). Ouch!

Facebook should hire back Joe Hewitt. His native app was fast and powerful, at the very least. Is employing one talented full-time iOS developer really too much to ask from a company as big as Facebook?

<comment><USER4> _Is employing one talented full-time iOS developer really too much to ask from a company as big as Facebook?_

You might as well add the Python SDK to that. The "we don't have the resources" claim rings a little hollow, in that the company probably very likely has the resources, but thinks such things are strategically unimportant.

<comment><USER5> You may not have the experience of supporting a large web service, but I do. Believe me, supporting native apps for multiple platforms is not only a multimillion dollar money pit, but an integration nightmare. You end up building a web interface anyways then hacking together a ui in native code for every platform. The long term support structure can very quickly (exponentially) get out of hand.

<comment><USER6> I don't personally, but the people I work beside do, and it doesn't seem from talking and working with them that it's as bad as you suggest, no where close. Having launched successful apps on multiple platforms for a website, I've seen it done successfully.

<comment><USER5> Website =/= web service

Large saas, social media, and rich media delivery services have many times more complex factors than a simple content site. Why do you think Netflix, Facebook, many major banks and loan servicing institutions and most financial portals have chosen the web app strategy. It's not just because they are idiots and don't get it, it's that theyve recognized the unsupportable nature of multiple mobile platforms with such limited penetration.

<comment><USER6> Was referring to a "web site" akin to Facebook. A social network. Not merely a "content site." So, that point is moot.

> It's not just because they are idiots and don't get it

Didn't suggest otherwise. But your reasoning is flawed, I'd imagine. Your suggesting that they don't go native because smaller platforms have limited penetration? If so, that seems silly. Why not support the platforms with large penetration natively, and support the platforms with smaller penetration with a web app?

I'm not suggesting going native for every platform, but going native for none because you can't do them all is even more silly.

<comment><USER5> I was referring to the actual penetration of mobile users vs desktop browser users -- which is often on the order of 5% or less. This makes it a very expensive investment for such a minority of users.

Besides that still leaves you with Android and/or iOS plus web -- two to three times the development costs. This becomes very hard to justify for such a small percentage of total product users.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> Sure, it minimizes developer effort, but the end result of e.g. the iPhone app is very uninspiring and clunky. Compare it to a true native app like Path if this isn't immediately apparent to you.

(The use of the phrase "native goop" to describe the non-web parts seems telling. They don't seem focused on the end-user experience, but rather developer ease and (that old chimerical developer holy-grail) code reuse.)

<comment><USER8> _(that old chimerical developer holy-grail)_

There's a reason why this is important - it allows the 'native' app to stay up to date with the desktop web app. Yes, the Facebook native app is less usable and more clunky than it was before - on the other hand, it's feature-by- feature more up to date with the main site.

Is that a trade-off worth making? Perhaps, perhaps not - but in the very least, there's an argument to be made, right?

<comment><USER7> There's an argument to be made, but I'd still argue against it :) As a user, I'd much rather have a polished, pleasant to use native app that lagged behind a feature or two occasionally than unified junk. As others have pointed out on this thread, FB's gotta have the dev resources to do separate versions (though maybe not the kind of developers happy to be working on such a "boring" problem).

I think code reuse is often a chimerical holy-grail because in and of itself it is not a good thing; what matters is user experience, the amount of development work, how easy it is to fix bugs, &c. But developers still often obsess over code reuse, even at the expense of things that matter.

<comment><USER8> Often, code reuse leads to less bugs and less duplicated effort which leads to more time spent on important things like features and usability.

Except that, I don't disagree with anything else you said.

Fogbugz has their own custom compiler that generates code for the platform of their choice. Facebook has already written their own PHP->C++ compiler. I wouldn't be surprised if they have some team there working on some high-level infrastructure that lets them write UIs and code that gets compiled down to custom Objective-C/html+javascript/AndroidJava/etc...

</comment></comment></comment></comment><comment><USER9> Facebook's goal is to penetrate as many markets as possible with the fewest lines of code.

Does this mean they don't give a shit about experience? No. It means they want to have a large reach without much maintenance. After that is accomplished, then they can worry about experience on a per device basis.

I don't believe it's correct to just dismiss this as garbage because the application is currently buggy. The entire idea of this approach is to improve the experience across all devices, but for now they are limited because they are still on the first step, implementation. Also note the slide that says "betting on the browser," meaning that Facebook is betting that issues between platforms will eventually fade away.

<comment><USER10> > Does this mean they don't give a shit about experience? No. It means they > want to have a large reach without much maintenance. After that is > accomplished, then they can worry about experience on a per device basis.

Facebook maybe able to get away with this, but almost every other developer and plenty of device makers will not get that second chance and will be dismissed by customers.

This is the same thing that happened to cross platform Smalltalk programmers (e.g. VW, VisualAge). They sure could target a lot of machines, but their programs always acted crappy and slow with poor UIs. This is ok when your "customers" are forced to use your program like a custom app for a business, but it sure doesn't work for others. Even Adobe runs into user hate for their non-native widgets and ignoring platform conventions.

Most non-technical consumers are good about getting a feel for how things work on a platform (e.g. ctrl-c for copy on windows, smooth scrolling, metro on WP7). This leads to a disconnect when an app behaves differently. They may not be able to express the problem, but they will certainly notice it.

</comment></comment><comment><USER11> How is this "Faceweb" approach different from Phonegap? I believe Phonegap too does progressive enhancement as described in this article

</comment><comment><USER12> To me, there's pros/cons to this approach with the perspective of making it as EASY as possible for developers to ship across all types of hardware (which is great). But the con seems so big to me: the end-user experience is so slow (iPhone and Android) that when you think of "Facebook for Mobile", you think "Maybe I can wait to access FB on my iPad or back on my laptop when I'm home?"

All of the native apps that I've seen, played with and analyzed, speed = to some the best experiences for a user. I mean, doesn't a FB user want exactly that when they check the Newsfeed? For instance, today, I turned off 4G and moved to 3G on my Android, checked the FB app and it crawled. It junked new screen loads, comments, liking, etc. Switching over to 4G made (some of) the pain go away.

</comment><comment><USER13> developer-centric vs. user centric approach in effect.

if you don't care about utilizing every inch of platform functionalities and performance to achieve a great user experience - why bother with such meta- apps at all? just let your user place a bookmark on the home screen and be done with it. save even more developer effort.

from a pure user perspective, this approach can be summed up pretty simply: "half-assed".

</comment><comment><USER14> The new Facebook mobile site is gorgeous and is faster than the native app on my Galaxy Nexus (for whatever reason the FB app takes ages to load, and ages longer to load data after it gets off a white screen). It's so nice in the browser and it's every bit as functional as the proper "app".

Sadly, they're doing some weird user agent sniffing and are giving me the WAP site currently and are also telling me I have a Droid Bionic, so I'm not 100% sure what's up with that.

After reading the comments here, maybe my experience is so pleasant due to the power of the Nexus and the tuning in the 4.0 browser.</comment>


Paul Buchheit: The dogmatic programmer - when software becomes religion - <AUTHOR> http://paulbuchheit.blogspot.com/2007/06/dogmatic-programmer-when-software.html <comment><USER2> Different people like doing things different ways. Some ways are better and more secure. If you do it the expedient way you take a risk.

Anyway, I don't really have a point. I prefer doing things right over doing things quickly (whether or not I'm writing missile guidance software). Maybe that makes me a crappy programmer, but my results are always higher quality.

Suppose you're in the chair building business. You really want your profits, so you hack together a quick design. You sit in it, and hey, it holds up. It's even sorta comfy! So you build and sell them, and the customers generally like the chair too. But after a year, they break, so they have to come back and buy another chair. (Hey, this is sounding like a good idea, maybe I'm in the wrong business.)

Does this abstraction hold with software? Possibly. Shipping desktop software is a lot like shipping a chair, except upgrades are free. The web takes that and ups the speed of updates by a factor of, say, a hundred. So now we have the tantalizing possibility of shipping half-working software and 'fixing things as they become a problem'.

That might be a good mantra to follow, or it might not.. Only you can decide. I fight for quality over speed. Yeah, we only have 70-some-odd years of solid craftsmanship left, but taking an extra few days to design something that works better won't cause you grief and will save you headaches.

Shawn

<comment><USER3> Yup, there certainly isn't anything wrong with doing things the "right" way. It only gets to be a problem when people think that there is only one "right" way and that everyone must follow it.

</comment></comment><comment><USER4> First sentence, "Do believe that...", should be "Do _you_ believe that..." - unless you deliberately wrote it like this to catch out people who believe there's only one way to write things ;-)

Nice post btw.

<comment><USER3> Oops, fixed :)

thanks

</comment></comment><comment><USER5> What are the significant savings that mean it's worth misusing GET? Is REST really that hard? _RESTful Web Services_, <http://www.oreilly.com/catalog/9780596529260/></comment>


Vogue UK Easter Egg: Up up, down down, left, right, left, right, b, a, Enter - <AUTHOR> http://vogue.co.uk

<comment><USER2> I've always wanted to do this with a site, except for the fact I could get fired.

Plugin is [http://zurb.com/playground/jquery- raptorize](http://zurb.com/playground/jquery-raptorize)

</comment><comment><AUTHOR> Visit the site then press: Up up, down down, left, right, left, right, b, a, Enter.

</comment><comment><USER3> Dinosaurs rule Britannia!</comment>


Show HN: Water.css – A just-add-css collection of styles to make websites nicer - <AUTHOR> https://github.com/kognise/water.css <comment><AUTHOR> __Why? __

I make a bunch of tiny static websites for API demos and such, and always run against the same problem: I hate the browser 's default styles but don't want to spend time writing my own stylesheet for such a tiny app.

Now I can just include Water.css in my `<head>` and forget about it. The demo app will still work, it'll look good, and I won't have spent any time making a stylesheet.

 __Who? __

Let me quote the GitHub repository:

> You might want to use Water.css if you're making a simple static or demo > website that you don't want to spend time styling.

> You probably don't want to use it for a production app or something that has > more than a simple document. Rule of thumb: if your site has a navbar, don't > use Water.css. It's just not meant for that kind of content.

Water.css has a dark theme by default, but some users wanted a light theme so I added one. Think it's ugly? Feel free to create a pull request :D

<comment><USER2> You should consider shipping a combined css file that uses the prefers-color- scheme media query to show dark or light as appropriate!

[https://developer.mozilla.org/en- US/docs/Web/CSS/@media/pref...](https://developer.mozilla.org/en- US/docs/Web/CSS/@media/prefers-color-scheme)

<comment><USER3> I investigated this a few months ago and no browser, not even Safari supported it. Hopefully more platforms will start to support it.

<comment><USER4> It sounds backwards, but this is why you _should_ use this feature. It sends a message to browser vendors (via Chrome Status eg [https://www.chromestatus.com/features/5109758977638400](https://www.chromestatus.com/features/5109758977638400)) that developers want to use those features, which helps the Chrome team (and other vendors) prioritize what to work on.

Build sites to be standards compliant and accessible first, and then progressively enhance them using new browser features to give the user a better experience. It's absolutely the best way to build for the web.

</comment></comment></comment></comment><comment><USER5> I just noticed this biographical detail about the author:

 _I 'm a 13yo developer, wannabe designer, and cellist._

How awesome! Makes me feel hopeful about the future.

<comment><USER6> I know @Kognise from the Repl.it community -- he's super talented! [https://repl.it/@kognise](https://repl.it/@kognise)

He once reversed engineered Repl.it'sb API and created a library that creates containers programmatically and run code heedlessly without a browser. [https://repl.it/talk/announcements/Replit-Node- API/11173](https://repl.it/talk/announcements/Replit-Node-API/11173)

<comment><USER7> Oh man. I hope he has a good family situation and great mentors in the programming communities so he can develop to his full potential.

</comment></comment></comment><comment><USER8> Thank you for this. There's a bunch of us who, once in a while, think of finally putting up that simple website or blog, with a minimalist touch. But then we have to think of how it'll actually look and we go into analysis paralysis. That's where the weekend project usually goes back to snooze. This kind of initiatives helps to at least get to the next hurdle.

<comment><USER9> The default style for browsers (if you do not put _any_ css) looks rather good to me. I do not honestly understand what is the problem.

<comment><USER10> [https://www.motherfuckingwebsite.com/](https://www.motherfuckingwebsite.com/)

[http://bettermotherfuckingwebsite.com/](http://bettermotherfuckingwebsite.com/)

[https://evenbettermotherfucking.website/](https://evenbettermotherfucking.website/)

[https://bestmotherfucking.website/](https://bestmotherfucking.website/)

[https://thebestmotherfucking.website/](https://thebestmotherfucking.website/)

[https://perfectmotherfuckingwebsite.com/](https://perfectmotherfuckingwebsite.com/)

[https://codepen.io/dredmorbius/pen/KpMqqB](https://codepen.io/dredmorbius/pen/KpMqqB)

<comment><USER10> Which is to say: the defaults can be improved on, greatly, with very modest styling.

Alternatively: the defaults are poor.

<comment><USER9> This is rather subjective. Looking at this collection of pages, I have no doubt that the first one looks much, much better than any of the others.

<comment><USER10> On wide screens, and with different pixel densities, defaults start to manifestly suck rapidly.

Fonts which are too small or large, or text lines which are too long, are objectively harder to read. Other design choices similarly have measurable impacts.

Jakob Nielsen's methodology of timing task completion and measuring completion accuracy is a UI/UX testing methodology which removes subjectivity.

<comment><USER9> > Fonts which are too small or large, or text lines which are too long, are > objectively harder to read.

I compulsively CTRL+wheel-up and CTRL+wheel-down all the websites that I read until the "right" size appears, so I do not really care about the font size setup by the author of the site. But probably my behavior is not very representative.

</comment></comment></comment></comment></comment></comment></comment><comment><USER11> This is nice and useful. You have inspired me to start a list of classless themes: [https://github.com/dbohdan/classless- css](https://github.com/dbohdan/classless-css). I used part of your demo page as the basis for the comparison screenshots.

</comment><comment><USER12> That looks pretty neat.

The table layout is ugly, though. As this is a pretty basic HTML table, you can't do much but you can certainly do better than a table with all borders.

I thought I learned about web table design in a very concise article but I couldn't find it. The best my google-fu provided is this article: [https://alistapart.com/article/web-typography- tables](https://alistapart.com/article/web-typography-tables)

Some quotes:

"As a starting point, avoid any border or frame surrounding the table. This is a Victorian embellishment which is entirely unnecessary as text alignment will shape the table just fine."

"Tables should not be set to look like nets with every number enclosed. Try to do without rules altogether. They should be used only when they are absolutely necessary. Vertical rules are needed only when the space between columns is so narrow that mistakes will occur in reading without rules. Tables without vertical rules look better. Thin rules are better than thick ones."

Edit: Here is a quick design I tried: [https://i.imgur.com/xgKsNvy.png](https://i.imgur.com/xgKsNvy.png)

I didn't do any color striping, this would also be an improvement to distinguish the table head from the table rows but I didn't find quickly any coloring I liked.

<comment><AUTHOR> Hmm, interesting... wanna make a pull request with suggested changes?

<comment><USER12> PR done.

I went with this design: [https://i.imgur.com/7z9wTe9.png](https://i.imgur.com/7z9wTe9.png)

</comment></comment></comment><comment><USER13> I happen to end up creating a lot of static web pages when building simple websites or documentation (for internal and external use) - is there a collection of lightweight CSS resources like this?

For example, some things I would want to be able to select/tweak:

* Colour scheme/theme

* Responsiveness to mobile devices (i.e. changing fonts/layout, etc)

* Navigation bar

* Transition effects

* Support for older browsers (but still look okay (yes this is still a requirement in 2019))

* Support for IE (which seems to be hilariously harder than it should be)

* Toggle/select use of fonts

If not then it might be useful to build out a tool to dynamically create such a thing.

<comment><USER14> That's a good idea. Sort of like the good old css zen garden, but with simple, not ugly, css resets.

Here's my attempt: [https://www.cssbed.com/](https://www.cssbed.com/)

Feel free to add options at [https://github.com/ubershmekel/cssbed](https://github.com/ubershmekel/cssbed)

<comment><USER3> Sweet. I really liked the idea of ccs zen garden. But the designs where mostly absolute positioned images and css hacks. _a lot_ have happened to css since ...

</comment></comment></comment><comment><USER15> If your aim is to help people snazz up quick HTML pages, it would be helpful to have as simple URL to include the CSS. Something like watercss.com/light.css. This way, we don't even have to visit your GitHub to get the CDN URL. It'd save some time and make water.css the go-to for quick styling.

<comment><USER16> you want him to be responsible for hosting parts of your site on his server?

how does it make any sense for him or for you?

<comment><USER17> It is in fact a common business model, known as a CDN (Content Delivery Network). A quick Google search will return many examples.

Most popular libraries (Bootstrap) or fonts are hosted on at least one CDN.

<comment><USER18> Business being the key term here - this kid is 13, and from what I can tell, doesn't make any money from this. How would it make sense for him to pay to have this available via CDN?

</comment></comment></comment></comment><comment> another-dave Looks really good! Definitely would use something like this for some quick pages alright.

Two minor pieces of feedback — when I click "Switch theme", it seems to take you to non-styled rather than the light theme, not sure if that's what was intended or not? Could be good to have buttons for both.

Also, you seem to be getting an SSL mixed content warning, purely because of the Kitten pic. Know that it's not a big deal for a demo page, but if you wanted to get rid of it, you could use something like LoremPixel.com — they support switching URLs to HTTPS and have a 'cat' category!

<comment><AUTHOR> A pull request fixed the mixed content thing - not sure what you mean about no light theme?

<comment> another-dave Cool! Previously when I hit "Switch theme" it was loading unstyled, but double-checking it now & it's working for me correctly — might have been some plugin on the browser I was looking at it with causing interference with loading the 2nd stylesheet.

(EDIT: Typo)

</comment></comment></comment><comment><USER19> He has a product hunt scheduled for tomorrow. Didn't know you could schedule product hunt posts.

[https://www.producthunt.com/posts/water- css](https://www.producthunt.com/posts/water-css)

</comment><comment><USER20> What's so bad about black-on-white text, sans-serif headers, serif texts and monotype blockquotes? Just because this theme set's specific colors and fonts/sizes, I'm not quite sure, how this automatically makes it any more beautiful than the standard (which generally is really responsive too)?

<comment><USER8> Beauty is indeed in the eye of the beholder, but although subjective, there seems to be a _popular_ consensus that the browser's defaults can be improved. And apparently it doesn't take much to get to another popular consensus of what is acceptable. That's where a project like this takes us.

</comment></comment><comment><USER21> I like this! More and more, I think about making my CSS sheets element only and moving more complex "component" styles into JavaScript. This makes me attempt to find semantic HTML representations of components before coming up with new styles and entering append-only CSS prison. So something like this would work great for me (even for more dynamic sites, really!).

<comment><USER22> Append-only CSS. That's a great definition!

</comment></comment><comment><USER23> Is it similar to milligram[0] ?

I'm genuinely asking, because my CSS "awareness" is so terrible, despite years of web development experience. I just can't figure CSS out.

[0] [https://milligram.io/](https://milligram.io/)

<comment><USER24> Water is similar, but simpler and lighter. Milligram defines styles for generic HTML elements like Water does, but Milligram also has features that make some of your HTML specific to Milligram (such as button styles and grid layout), and it comes with the Roboto font, which increases download size.

</comment></comment><comment><USER25> The need for something like this - basic styling because the default display is so bad for raw html - suggests that there's something missing from our browsers. Of course everyone has their own preferences, but being able to add <theme "foo"> at the top of an html page would be very helpful. In many instances the exact styling isn't important as long as there's _some_ styling. It would, among other things, minimize on bandwidth while providing a comfortable experience.

<comment><USER26> What is the difference between <theme "foo"> and <link rel="stylesheet" href="foo"> ?

<comment><USER25> The former would be provided by the browser, whereas the latter is a link to a stylesheet that you're providing.

</comment></comment></comment><comment><USER27> This reminds me of picnic.css [0], which uses the same technique of styling everything nicely by default, but adds some options for changing things when you want.

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

</comment><comment><USER28> This looks really nice, clean & functional. I'm integrating this into my personal website at this moment. Thanks!

</comment><comment><USER29> I've been wondering where this trend to use the system font came from. I understand that web applications want to use a system font for common operating systems so that they look a bit more native. But that doesn't necessarily make it a good choice for body text.

<comment><USER30> My main issue with web apps is that they ignore the choices I make for how applications look on my computer. We shouldn't generally be changing fonts, picking colors and styling form components in apps like Slack: rather we should use the default look and feel of the operating system the user is running and use semantic color and font names so our apps fit in to the user's computing environment.

</comment></comment><comment><USER31> Can you start another thread on how you got to this point in your life as a 13 yr old? I want my three kids (oldest 6) to be doing what you are doing in another seven or so years.

Kudos on a great project and thanks for sharing it with the world!

<comment><AUTHOR> I've been considering doing something like this on r/iama, but I'm worried it's too egotistical.

<comment><USER31> I love that you are considering how egotistical you are at 13. You seem like a really emotionally intelligent person which will serve you, by the way, so well in the software industry. Make sure to never neglect learning about who you are as a person emotionally; its an investment that will take you much further than just technical skills.

</comment></comment></comment><comment><USER32> Reminds me of [https://oxal.org/projects/sakura/](https://oxal.org/projects/sakura/) in a nice way.

</comment><comment><USER33> This looks really fun. Thanks for showing. Look forward to trying it.

</comment><comment><USER34> It seems to support check boxes but not radio buttons.

</comment><comment><USER35> Anyone have a screenshot or before/after?

</comment><comment><USER36> This is wonderful! Thank you.

</comment><comment><USER37> Mixed content warning due to the cat picture.

</comment><comment><USER38> I would like to see a version for those of us that structure our documents.

What is this structure you speak of?

Most people assume HTML has a 'head' and a 'body'. The head has script and tag things in it, the body is just free-form open-fire zone of content.

But there is more to it than this.

The body should have some structure to it. That means a 'header', a 'main' and a 'footer'. In the 'header' you are going to want a 'nav' and the same for the 'footer', you are going to want a 'nav'. Even if the links are to your social media sites there is still something to go in the respective areas.

Then when it comes to your 'main' content, if you believe in structure, you are wanting to have 'article' or 'section' with a possible 'aside' or two.

Then there are images. Images don't have to be in random 'div' elements. They should be in 'figure' or 'picture' elements.

Anyone who is not writing HTML this way, using the structural elements and structuring their document might as well just be writing in .txt format or posting jpgs of their pages to the internet. You have got to be organised. Ignorance of the HTML elements is not helpful, knowing them is. They shape how you think and how you organise your code.

A default stylesheet for people that write this way - structured - could have many useful touches. So CSS grid for the 'header'/'main'/'footer' could include the best way to ensure a sticky footer with the row definitions and align-self: end for the footer bit.

Images in picture/figure elements could be set to be done properly, if in a containing 'figure' then set to 100% width. If the main has a 'grid' setup then you could easily have well structured HTML show neatly with anything 'not structured' evident because it wouldn't be fitting in the boxes.

Document outline is important and a basic stylesheet needs to do badly at styling things that are not going to outline well. So the headings styles should only apply to headings that are in 'article', 'section' or 'aside' blocks.

There is also a small matter of pixels. When was the last time a pixel meant anything? 2007? Nowadays pixels are virtual. So it really has to be em/rems and viewer units all the way. The pixel is outmoded.

For your forms you want to think differently and more structured. So 'form' needs to be 'display: grid' and then your labels be column 1 with inputs on column 2. Then have a css variable in the responsive media query to set the inputs to column 1 if on mobile. Done this way you can get rid of the hacky margins and paddings on the buttons and just use 'grid gap'.

This means forms can then be a straight list of label/input pairs in well organised structured code that looks fantastic and is fully mobile out the box.

As it is the stylesheet is a good idea but it does not really bring any benefits to structured documents in the post-pixel world where CSS grid does all the heavy lifting of simple layout tasks.

<comment><USER39> What could have been good feedback is ruined by tone. This is someone who has in good faith decided to show the HN community. The fact that he's 13 doesn't even really enter into it.

Here is someone who has created something new and has come to share and the first thing you say is:

      > I would like to see a version for those of us that structure our documents.
      > What is this structure you speak of?

Let's try:

\---

I love what you've done. I know that this is still new but I would really love to see some additional support for more structured documents.

<Insert more details about what you mean about structure>

I will try, if time allows, to create a pull request for these features.

\---

<comment><USER38> You are right.

In fact tips like yours are what is most useful to learn for me from here.

However, in primary school I learned a little bit about content sectioning. Stories had to have a beginning, a middle and an end. Titles were important too.

These concepts of 'header', 'main' and 'footer' with 'sections' are not a million miles away from how writing was taught in the olden days to primary school kids.

Just because the grown ups can't be bothered to structure their HTML as per the spec with these logical groupings I don't see why 13 year olds should get a free pass. I don't want the web to be stuck in a sea of div tags styled with floats forever.

<comment><AUTHOR> Thanks for the feedback, although I would like to make the point: Water.css _does_ style structured websites and doesn't involve any floats or div tags anywhere. If not for semantic html Water.css wouldn't work at all because that's what enables the classless approach.

And I'm purposely not including support for navbars and such as this is meant more for article pages and tiny demos and the sorts. If you're interested in adding a footer, though, I'm accepting PRs :)

<comment><USER38> Sorry we got off on a bad meeting of minds!!!

However, I think you have the makings of something quite brilliant. Most of the web 'div soup industry' is stuck in the past, the tools are there and the world actually needs a really good HTML5 + CSS Grid starting kit for one off pages.

I think you can make some skeleton templates in HTML5 with what you are working with on the CSS. So no classes, a template with a header, main, aside and footer at the top level, then in the main the page title as h1, then an article with its own header in h2 with sections with their own h3 titles. Then in the aside a basic form. People can delete it but if they want a contact us then it is good to go. Then in the footer have a nav. Put social media links. Also an address tag in the footer for the copyright notice. Yep, address tag.

If you also add a figure and an image with a couple of srcsets in a section then it is all done for people.

Next, styling. So no ids or classes. Basically a reset.css that uses css variables with fallbacks. The variables default to mobile and the fallbacks are for desktop. Do it all in ems.

Also add in a details/summary. These are not being used enough and they come with default styling that few know how to do. The arrow and the blue focus box need addressing.

The form, that needs to be simple label/input pairs with the css grid with the css variables and fallbacks making it responsive.

The aside is also responsive. It falls below the main content in the document structure and on desktop it turns into a sidebar, left of the main content.

It might take a week or two to put that together but it will put you far ahead of everyone out there who has been floating divs into 'responsive designs' with 5000 class tags for the last five years. Forget frameworks, forget divs and spans. Invent some new rules for classes, so in the template you have one article with class 'blog entry' and another with something like 'recipe'. Put the CSS together for some styling so that the whole component just needs the one class on the parent and element selectors do the rest.

If you build this out then there won't be a finer educational material out there for people wanting to learn to code. All the lessons can be applied to any other 'big project', the sort that have 500 div per page in them, needlessly.

If you use a small handful of css variables for 'color', 'background-color', 'font' and main document font size, perhaps with another for main content width then you can also have a 'night mode' button on there to swap these variables around to demonstrate however many themes you want, all achievable with a few variables instead of some compiled CSS bloat.

As mentioned, sorry to get off on the wrong footing but you are the greatest hope for sensible CSS I have come across yet.

There are many, many people who are using website builder things such as Wix to build simple sites. You can build something easier than those things for people wanting just a simple web presence on a page.

Structure in a web page does matter but nobody has it now as the world wide web is a sea of divs and spans. Search engines don't have structure as a metric but sometimes we do things because we want accessible, maintainable, simple quality design and not just hacks to game search engines.

You have made a great start, I think that you are green enough to be able to create something that really does make the web dev world think again as well as bring something that scratches not just your itch for a simple page well themed but for a lot of people who need a really good starting point for their own 'simple' pages. Simple sounds stupid in some contexts, I assure you that 'simple' is a virtue, any fool can make a complicated bloat of a web page, simple and elegant needs thinking. You can do it!</comment></comment></comment></comment></comment>