Records Come to Java - <AUTHOR> https://blogs.oracle.com/javamagazine/records-come-to-java <comment><USER2> Java finally gets what's been available in Scala (case classes), C# (structs or maybe properties), Kotlin (data classes) and others for a very long time .. so long we already have tools like Immutables and Lombok to get past this really dumb limitation in Java.

I was really surprised to learn that the Java compiler/VM, when it sees the patterns "somevar" and functions "getSomeVar" and "setSomeVar" doing purely getter/setter stuff, removes the actual function calls and silently changes them in the background to field lookups for speed.

If you attach a debugger or memory profiler, is changes them back to functions and slows them down. I'm not sure if this is still true; saw an example of this at a meetup back in the Java 8 days.

<comment><USER3> > Java finally gets what's been available in ... and others for a very long > time

You seem to think that the goal is to get as many features as possible, as quickly as possible. Maybe some languages have that goal, but Java's design philosophy -- from its inception [1] -- has been to be a conservative language that only adopts features that have become familiar to programmers _and_ stood the test of time in providing a good cost/benefit. Java hasn't always done this, but that's the aspiration. Worked out pretty well, I think.

Given Java's design philosophy, the far more interesting question is which features of those more adventurous languages Java does _not_ intend to adopt.

> Java compiler/VM, when it sees the patterns "somevar" and functions > "getSomeVar" and "setSomeVar" doing purely getter/setter stuff, removes the > actual function calls and silently changes them in the background to field > lookups for speed. If you attach a debugger or memory profiler, is changes > them back to functions and slows them down.

It's true, and the optimizing JIT compiler does much more than just that. It performs deep speculative optimizations, like inlining virtual calls and removing untaken branches, reverting them (using a process called deoptimization) either for debugging or when it detects its assumptions are false. What you're referring to is just an instance of inlining.

[1]: [https://www.win.tue.nl/~evink/education/avp/pdf/feel-of- java...](https://www.win.tue.nl/~evink/education/avp/pdf/feel-of-java.pdf)

<comment><USER4>
       Worked out pretty well, I think.

Au contraire mon ami!

ML was better than most of its successors, including Java, which held programming back. Milner's ML avoided some of Java's glaring mistakes (e.g. exception specifications, lack of generics, non-uniform treatment of types, lack of higher-order functions, lack of pattern matching) from the start. Xavier Leroy showed how efficiently to compile ML in the 1990s.

The main thing ML lacked (w.r.t sequential computing), was a good integration with OO and HKTs. That was solved by Scala.

<comment><USER3> I meant that it's worked out pretty well for Java. ML -- one of my favorite languages, alongside Java and a couple of others -- has also managed to avoid being used by anyone, really. But look at Java now: it has generics and higher-order functions, and it's getting a uniform treatment of types (Project Valhalla), and pattern matching [1]. And so while ML introduced those features in a research context, Java is the language that has made and will make the world actually use them. Being ahead of your time is often just as much of a mistake as being behind (as far as product design goes).

As to the question of "holding programming back," it is yet to be seen how much of an impact these features have in practice. Same goes for what ML "lacked." I personally like some features more and some less, as do you, but I don't think anyone knows which programming language features really push programming forward.

[1]: [https://cr.openjdk.java.net/~briangoetz/amber/pattern- match....](https://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html)

<comment><USER5> "Holding programming back" means that it would have advanced in the absence of Java. What language would have advanced it? Cladote seems to assume that ML would have, which would have been actually used if Java hadn't taken over the world. That seems unsupported by evidence. Overly optimistic, as well.

And if Cladote's answer, ML, would _not_ have taken over, then did Java hold back anything? No. Was it better than, say, C++? For many uses, yes.

"We would have ruled the world if it wasn't for you meddling kids!" is wishful thinking. If ML was so good, _it should have won anyway_. Instead, "has managed to avoid being used by anyone" is a pretty fair assessment.

<comment><USER4> If we collapse the two concepts of

\- best possible X

\- most popular X

are we loosing possibly interesting perspectives on X?

<comment><USER3> I don't think AnimalMuppet is confusing most popular with best. But as you don't have the data required to conclude which language is better by any meaningful metric, anyway, then your claim is just wishful thinking. If ML had won and Java lost, one could have just as easily said that ML was holding programming back from some imagined benefit Java would have brought. I think that it is you who are confusing "an interesting perspective" with a value judgment. Yes, ML had pattern matching before Java, while Java had pervasive dynamic linking and dynamic code loading. Those are simple facts and perhaps "an interesting perspective," but how do you decide which is better?

<comment><USER4> Nobody has credible data enabling reproducible comparison of programming languages. The big lacuna of PL research ...

If popularity mattered ... PHP, JavaScript etc.

I find the evolution of all successful programming languages eventually to evolve into an ML-like core fascinating.

<comment><USER3> > Nobody has credible data enabling reproducible comparison of programming > languages.

Right, so as "better" and "best" are unknown, we should stop using those terms. I like Java and I like ML, but I don't know that one of them is better than the other, and if so which.

> I find the evolution of all successful programming languages eventually to > evolve into an ML-like core fascinating.

Some of the successful _typed_ languages, sure: Java, C++, C#, but the three heavily influence one another, and at least Java's and C#'s designers were aware of ML. So I don't think that, to the extent this is true, it's some "natural" draw, but rather a direct or indirect influence. On the other hand, you have Go, which is also quite successful (admittedly in a lower tier of success), and it doesn't seem to be converging on something ML-like, though (although it is influenced by another Milner idea), and neither is C.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER6> That looks like a good addition because anything that makes code more concise and easier to read is a win.

Off topic, but I have been feeling nostalgic for Java, even though I now almost exclusively use Lisp languages and I am happy with that. In early Java years, Sun's main Java web site had a link to my site and I wrote a number of Java books. I was the number one search result for "Java consultant" for about a decade; Java was good for my career.

<comment><USER7> Forcing usage of constructors is hardly more readable IMO.

Which bug is easier to spot?

        cat = new Cat(1, 2, 4);
        cat = Cat.builder().eyes(1).legs(2).heads(4).build();

Additionally, from the examples in that post, records aren't valid JavaBeans either, so they can't be used with the myriad of existing tools/libraries that expect beans.

From my first impression, it looks like records don't really address many of the reasons we use Lombok and its ilk, so many of us will just ignore this feature. Or do like I've done in the past couple of years, and just ignore Java altogether.

<comment><USER8> If you're using a decent IDE, that bug is just as easy to spot when using a constructor. My IDE adds the var names in front of the values, so when I create a new Cat(1,2,4) it actually looks like this:

            new Cat(eyes:1, heads:2, legs:4);

<comment><USER7> If using an IDE is necessary to make the code readable, then Java should ship with an IDE. Or just add it to the language.

I find myself often reading code outside of an IDE, such as in GitHub or other hosted repos. Why should it be less readable in those cases? Because it's marginally easier to write?

I also write a lot of Go code, and appreciate how "go vet" disallows unkeyed struct literals, forcing you to write the field names when creating structs. It is not an IDE feature, and I can freely browse GitHub or grep around in the command line and the code is just as readable as in an IDE. It also means Go works in a lot of editors and IDEs more easily, because those editors/IDEs don't need to implement a bunch of extra features to make the code actually readable.

<comment><USER9> Verbosity is a huge problem in a language. Verbosity that makes unfamiliar code easier for you to read can actually hurt the readability to a more familiar reader trying to figure out where the bug is. I don't need that thisIsTheBloodyFooArgument: all over the place if I already know it is the bloody foo argument. Eventually, the code becomes so repetitively noisy that I have to rewrite it stripped down into a text file just to get a gist of the real things I need to understand (like when comments get in the way and don't help.

But really, this is a problem we don't need to have...tooling could make it so we have the verbose repetitive version that make unfamiliar readers happy and the more concise to the point version that makes familiar readers happy. But for some reason, our profession is infatuated with text files that make this best of both worlds impossible.

<comment><USER7> > But for some reason, our profession is infatuated with text files that make > this best of both worlds impossible.

Because people already have existing tools, lots of them. Text files are an easy way to support all of them. What kind of tooling do you propose that would immediately integrate with IntelliJ, Eclipse, NetBeans, emacs, vim, VSCode, Atom, Sublime, GitHub browsing, grep, etc.?

<comment><USER9> Yes, but then you have people like the comment I was replying to who say that those tools must be inflexibly fixed when the language ships...and so those languages that expect less from tooling (like Go) are somehow better than those (like Java) that expect more. That the text should speak for itself well enough without tooling.

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> This is akin to case classes of Scala such a welcoming change to the Java world.

Apart from being a functional language one of main draws to Scala is the ease with which one can get rid of the boilerplate code. So kudos to the Java team!

<comment><USER11> But case classes are also algebraic data types so Java is not yet as great.

</comment></comment><comment><USER12> I'm curious if this will make AutoValue obsolete: [https://github.com/google/auto/blob/master/value/userguide/i...](https://github.com/google/auto/blob/master/value/userguide/index.md)

<comment><USER13> It should.

</comment></comment><comment><USER14> I am continually surprised that Java hasn't adopted C#'s property syntax. Having to write backing fields and your own getters and setters takes me back.

<comment><USER15> As someone who codes C# every day, I hate properties with a passion. Its my least favourite feature of c#

<comment><USER14> Why?

</comment></comment></comment><comment><USER16> Python recently added the same thing in 3.7. They call them data classes.

[https://docs.python.org/3/library/dataclasses.html](https://docs.python.org/3/library/dataclasses.html)

<comment><USER17> Python has had namedtuples for a long time, which is similar idea implemented less cleanly (in fact the implementation is horrible hack because of some rare corner cases) and without dependence on Py3 annotation syntax

<comment><USER18> > less cleanly

Python has a number of these warts. Same with classes and type annotations.

</comment></comment></comment><comment><USER18> I'm pretty excited for this. I've seen Java developers jump through hoops so they wouldn't have to implement a new class when a Python developer would use a NamedTuple and not think twice.

And yes, there are codegen options (Autovalue, Lombok, etc.), but the build process is a little clunkier, and IDE support isn't great.

</comment><comment><USER19> I guess I was hoping the same end result would have been reached by different means.

I would like to see:

new non canonical java.lang.BaseObject, which implements nothing.

new interfaces for .toString(), .equals( that ), and .hashCode().

Canonical java.lang.Object implement these new interfaces.

Any code wanting struct, data, record style objects would subclass BaseObject.

The JVM would auto generate missing .toString(), .equals( that ), and .hashCode() as needed. Like when you add a data class to a HashMap.

New syntax for properties, to eliminate need for setter/getter boilerplate.

New syntactic sugar for the static initializer constructor trick, to eliminate constructor boilerplate. Basically make new MyDataObject() {{ a = 1; b = "abc" }} look prettier.

\--

Best as I can tell, only the last two would require language changes.

</comment><comment><USER20> The best thing about this is VM support for records. This means that all the other JVM languages that implement similar features can potentially leverage the underlying support for records to make better implementations themselves.

I for example, don't immediately see any reason kotlin can't use this to make a more efficient implementation of data classes.

<comment><USER21> What VM support? Records are a Java compiler feature. It just auto-generates all the boilerplate at compile time, there doesn't seem to be any bytecode or VM support for this feature?

It seems functionally identical at the VM/bytecode level to what Kotlin's data classes already do.

<comment><USER20> My mistake, I thought this was more akin to value types proposed in this JEP

[https://openjdk.java.net/jeps/169](https://openjdk.java.net/jeps/169)

This is disappointing.

<comment><USER3> Records are meant to play nicely with inline types, i.e. when inline types land, you'll be able to declare inline records.

</comment></comment></comment></comment><comment><USER22> I feel like Java is making great strides lately, but that we're also getting slightly lesser versions of capabilities available in other languages.

Records, for example, are directly inspired by Kotlin's data classes, and function almost identically... except that Kotlin allows you to have mutable or immutable fields in a data class, and automatically provides a `copy` method (similar to Lombok's `wither`) that allows you to use a builder pattern.

This difference can be very important. For example, I don't see how a Record class could be used with most JPA-style ORMs, which immediately rules out Records for many of the most common use cases.

<comment><USER3> Records are actually inspired by product types, and will be central to the pattern-matching feature that has started making its way into the language (and, combined with the upcoming sealed types, would form Java's ADTs). Allowing mutation doesn't make much sense, then.

<comment><USER23> >Allowing mutation doesn't make much sense, then.

Why?

<comment><USER3> Because that's not what records are about. See [https://openjdk.java.net/jeps/359](https://openjdk.java.net/jeps/359), [https://cr.openjdk.java.net/~briangoetz/amber/datum.html](https://cr.openjdk.java.net/~briangoetz/amber/datum.html) and [https://cr.openjdk.java.net/~briangoetz/amber/pattern- match....](https://cr.openjdk.java.net/~briangoetz/amber/pattern-match.html)

For one, mutation doesn't play well with pattern matching.

<comment><USER23> Explain why mutation doesn't play well with pattern matching.

<comment><USER3> A pattern requires matching against a piece of data possibly composed of several related components that are assumed to be coherent with one another, not some mutable object. How would you match Point(3, y) against a mutable object, if by the time you grab the y, the x component may no longer be 3 (recall that Java is a multithreaded language, and x could be volatile)? By analogy, think of how matching a regex pattern would work against a mutable array of characters as opposed to an immutable string.

<comment><USER23> Different components being in sync is a property of objects in general. E.g. Java's ConcurrentHashMap is mutable but its fields are in sync.

For pattern matching to see an in-sync view of the object, the object must provide such a view. If the object allows concurrent modification (most don't) then it must provide a custom view. Otherwise a generated default view should be sufficient.

If you look at [1] you can see that Goetz does propose a function that provides such a view for classes and not just records (c-f extractor.)

[1] [https://cr.openjdk.java.net/~briangoetz/amber/pattern- semant...](https://cr.openjdk.java.net/~briangoetz/amber/pattern- semantics.html)

<comment><USER3> But that's exactly what I meant by mutation does not play well with pattern matching: you need to work, sometimes work hard (in fact you need to somehow hide the mutability) to make it work. I'm not sure what you meant exactly by the _fields_ of ConcurrentHashMap being "in sync" (the contents of the hash map certainly aren't and it does not provide a snapshot view), but their coherence requires hard work. Unless you don't know how the particular synchronization mechanism, if any, works, you cannot provide a view suitable for pattern matching, so it cannot, in general, be automatically generated for mutable objects, at least not in a way that works as well as you'd want it to. For example, a naive extractor to a Pair class with two volatile field could return two values that have never been the values of object's fields at any point in time (i.e. you'd pattern-match `case Pair(x, y)` and get, say, x=2 and y=3 despite the pair never having been (2,3)). That "works" in the sense that you have some result, but it's probably not what you want.

<comment><USER23> ConcurrentHashMap contains multiple volatile fields. These are kept in sync (i.e. their invariants are preserved) by the ConcurrentHashMap implementation. Concurrent programming being hard is a property of concurrent programming. It being hard does not require pattern matching.

Most mutable objects are easy because they don't support concurrent modifications. Therefore pattern matching would not make them harder to implement. Pattern matching such an object while it is being concurrently modified is simply a programmer error just like any other use of the object.

Not allowing pattern matching of mutable objects would be similar to not allowing equals and hashCode methods on such objects and for similar reasons.

<comment><USER3> I'm not talking about _not allowing_. I merely explained, because you asked, why pattern matching does not play well with mutation, and it doesn't. equals and hashCode also don't play well with mutation, and indeed they are not automatically generated for mutable objects, but they are for records. As the author of a class you can provide a reasonable implementation of them, as well as of a deconstructor for pattern-matching, but that requires knowing more about the particulars of the class.

There are other reasons for not allowing mutable records, but most -- including pattern matching -- can be summarized as "that's not what records are about, which is being 'dumb' data aggregates". You can read a more detailed discussion of the subject here: [https://cr.openjdk.java.net/~briangoetz/amber/datum.html](https://cr.openjdk.java.net/~briangoetz/amber/datum.html)

<comment><USER23> >I merely explained, because you asked, why pattern matching does not play well with mutation, and it doesn't.

What you explained so far is that it doesn't play well with concurrent modification. And then I said that the "not playing well" comes from the concurrent part, not from the modification part.

I'm less interested in the philosophy of records and more in the use cases they support.

<comment><USER3> > What you explained so far is that it doesn't play well with concurrent > modification

Fair enough.

> I'm less interested in the philosophy of records and more in the use cases > they support.

The use cases and motivation, as well as why mutation is wrong for records, are explained in the links I provided. Here they are again:

* [https://openjdk.java.net/jeps/359](https://openjdk.java.net/jeps/359)

* [https://cr.openjdk.java.net/~briangoetz/amber/datum.html](https://cr.openjdk.java.net/~briangoetz/amber/datum.html)

<comment><USER24> Mutation without concurrency is still a problem for pattern matching. To return to your earlier example, suppose you've matched Point(3, y) and you're now in some code that assumes that the x-value of the Point is 3. Now, you call some method that has some reference to the point you're working on, and it mutates the x-value to 4. The assumption in that code after the match is now broken.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> The article doesn't really touch on how this plays with generics, if at all. Anyone know if we can do:

        public record MktOrder(T currency, int amount)<T> { }

or

        public record MktOrder<T>(T currency, int amount) { }

Would be a bummer if it breaks the idiomatic (and canonical) way of working with generics. In any case, it's a much needed and welcome feature.

<comment><USER24> Yes, records work with generics pretty much the same way they work with classes. You can do

        public record MktOrder<T>(T currency, int amount) { }
        var m1 = new MktOrder<USD>(usd, amount);

</comment></comment><comment><USER26> Can anyone explain to me what the benefit of this is over Lombok annotations? I like the Lombok builder syntax which this seems to lack.

<comment><USER27> Besides just the convenience of it not being a dependency, this will allow other language-level features like pattern matching and object deconstruction in the future. Basically anything that requires the language to have a tuple/named tuple type.

<comment><USER26> > tuple/named tuple type

As someone not familiar with using those, can you ELI5 what those are and what their benefits are?

<comment><USER27> A tuple is the generic term for a pair, triple, etc. It's a collection of data of heterogeneous types, unlike an array which is homogeneous. When the members are unnamed, the data is indexed by its position like an array.

E.g. a method could return an unnamed tuple ("foo", 7) which might have type (String, int).

In some languages like ML, having tuples is such a fundamental part of the language that things like functions always act on a single argument which is actually just a tuple. So max(5, 5) is a function that takes a tuple of two ints as its parameter.

When you have tuples as a first-class concept, you can start to do some interesting shortcuts like:

        (b, a) = (a, b); // swap two variables with no intermediate

or

        String (first, last) = name;

This is called deconstruction, where you extract a tuple into variables representing its members. This is common in a ton of languages (Typescript, C#, ML, Scala, Python, etc). It also forms a cornerstone of pattern matching expressions in some languages (Scala, Haskell) where you can create a condition and simultaneously assign the data you care about to variables that can then be used in that branch. Scala pseudocode:

       sum(list: ConsList<int>) {
         return list match {
             Empty(): 0;
             Node(first, rest): first + sum(rest);
         }
       }

</comment></comment></comment></comment><comment><USER28> Interesting.. why just stop at constructor, can't we introduce fluent/builder pattern as well?

<comment><USER29> I suppose there's nothing stopping you from writing your own builder to complement the record class, though of course part of the point here is to avoid additional boilerplate.

</comment></comment><comment><USER30> Yes, it's absolutely not innovation - but this is actually really cool in the context of Java, which was never an innovator.

</comment><comment><USER31> A missed opportunity?

If the struct graph is all records or primitives, the compiler should include a toJson(), fromJson() in the sealed class.

It could be done with classes too, but if it was records/prims only, then it could be done without using reflection.

</comment><comment><USER32> So basically Lombok's @Data annotation with extra steps.

<comment><USER33> Why more steps? You even have fewer keystrokes in case of record.

I'm looking forward to ditching lombok finally.

</comment></comment><comment><USER34> So Beans are back?

<comment> rooam-dev Where they gone?

</comment></comment><comment><USER35> we are on java 14 already wtf?? I really don't like the new frantic release cycle. Cassandra is still stuck on Java 8...

<comment><USER36> Everybody is still stuck on Java 8.

<comment><USER37> I know of a project with substantial GC problems that's stuck on Java 7.

I just roll my eyes at this point when I hear about it.

</comment></comment></comment><comment><USER38> From the first example:

        private final double price;
        private final LocalDateTime sentAt;

Can't help but notice that they won't be able to trade at exact decimal amounts whose fractions aren't sums of powers of 1/2.

Also wouldn't Instant be better for a timestamp?

<comment><USER39> Production code likely should use neither double for currency nor LocalDateTime for a point in time.

But for the purpose of the article, which is about Records being a new type of Java class, this is kind of irrelevant.

<comment><USER38> I think it's kind of a problem if examples of how to write Java are full of bad practices.

<comment><USER40> For what it's worth, I work at a place that would write a similar domain object, and we would use both of those and not feel bad about it.

The FUD on money as a double is way overblown in my opinion - it only becomes a bad idea once you have to do precise math with the it (which is admittedly a lot of the time when you're dealing with money, but surprisingly rarely in some domains).

</comment></comment></comment></comment><comment><USER41> So Java is basically getting structs. Seems awesome.

</comment><comment><USER42> There's a lot to like about this, but I laughed at trying to cast nominal typing as a design choice in typing per se rather than e.g. a tool to make the VM's loader simpler. It gives away the lie just two paragraphs after explaining it:

> This choice was partially driven by a key design idea in Java's type system > known as nominal typing, which is the idea that... each type has a name that > should be meaningful to humans... the compiler still produced two different > anonymous classes, $0 and $1...

Names extremely meaningful to humans!</comment>


Hacking the Samsung NX300, part 2: Get Root - <AUTHOR> http://op-co.de/blog/posts/rooting_the_nx300/

<comment><USER2> haha. "i-really-know-what-i-am-doing-and-accept-full-responsibility-for-it" what a flag!</comment>


IBM Launches New Mainframe with Focus on Security and Hybrid Cloud - <AUTHOR> http://techcrunch.com/2016/02/15/ibm-launches-new-mainframe-with-focus-on-security-and-hybrid-cloud/ <comment><USER2> What shocks me is that they still lack highly assured endpoints despite IBM's prior work in that area through Karger. The chips were already fabbed. They could cram a bunch in there alongside computd and I/O processors. Run legacy with ttusted code in secure envirinment.

Instead, more features still with same breakable model.

</comment><comment><USER3> I don't quite understand what they're used for. Who buys these things and what are they doing with them that can't be done with other cheaper alternatives now? The article says they're over $100k.

<comment><USER4> A decent background: [http://www.fool.com/investing/general/2015/01/24/heres- why-i...](http://www.fool.com/investing/general/2015/01/24/heres-why-ibm-is- still-building-mainframes.aspx)

Basically, highly transactional workloads that have severe performance _and_ reliability requirements. If you're serving a web app, maybe you can spin up a bunch of instances on AWS because while performance and security are important, they're not _that_ important. And by "not _that_ important", I mean not important enough to spend hundreds of thousands of dollars on. To a large consumer bank, it is that important. You also may be able to get away with having an eventual consistency model because it's okay if two different users see two different views of your app. But that's not okay for a bank processing credit card transactions, so they are forced to deal with highly transactional workloads which are _now_ consistent.

I had the same questions as you did, but after talking to some of the z systems folks, I think it may be the case that mainframes, or things that look like mainframes, will always be around. Consider that basically the entire consumer banking and insurance industries still use mainframes. It's possible to consider that an artifact of legacy, but it's also possible evidence that their use-case doesn't fit well with the alternatives (clusters of smaller systems).

Disclaimer: I work for IBM Research, but not in this area.

<comment><USER5> _> Consider that basically the entire consumer banking and insurance industries still use mainframes. It's possible to consider that an artifact of legacy_

Legacy is certainly a large chunk of it. The vast majority of Fortune 500 companies have been using IBM mainframes since the 1960s or 1970s, and some were IBM "shops" before computers were invented.

The cost of moving software and data from a proprietary IBM stack would be enormous, even if you could guarantee that it would work. However, the failure rate and cost overruns that appear to be endemic to very large systems development (including IBMs) make moving a risky proposition.

The average CEO is focused on quarterly numbers and is unlikely to stay around for very long. If IBM mainframes were in place decades before the CEO arrived, and will likely be around for at least a decade to come, why take the risk?

</comment></comment></comment><comment><USER6> That mainframe picture is so _boring_.

Back in the good old days, here's what an IBM mainframe front panel looked like! [https://upload.wikimedia.org/wikipedia/commons/9/9e/360-91-p...](https://upload.wikimedia.org/wikipedia/commons/9/9e/360-91-panel.jpg)

It was really fun to watch the lights blink, even if you didn't know what their significance was.</comment>


Ask HN: Why should one upgrade or not upgrade to Windows 10? - <AUTHOR> The time is running out for the free upgrade. What are the reasons one should do the upgrade and what are the reasons one should skip the upgrade?
In my specific case I run Windows 8 very rarely in VirtualBox, so I wonder about the license implications for that.
I do understand that there are lots of articles of different degrees of credibility all around the web, I would just like to see the collective wisdom of HN readers to produce somewhat balanced arguments for both sides to help doing the decision. <comment><USER2> If you are worried about telemetry, like some people are, the only version that allows completely disabling it is Windows 10 Enterprise.

Having said that, the main reason for at least initiating the update is to mark your existing key as "Windows 10 eligible". After the upgrade is complete, you can easily roll back to the previous OS version (from within Windows, trivial and no side effects) and you can continue working on Windows 8.1 while now having a valid Windows 10 key for the future.

You can also perform the above procedure using a VM snapshot, upgrading, and then simply using your snapshot instead.

If you are a developer using Windows as your main OS, a very strong reason to upgrade and not roll back is the upcoming Anniversary Update. This will bring the "Windows Subsystem for Linux" which means you can natively run the entire Ubuntu userspace, like bash, tmux etc. That is pretty exiting!

IMO if you rarely use the VM in question, your top priority should be future- proofing your Windows 8 key.

<comment><AUTHOR> Thanks. It is literally months since I last launched the VM, so I am not that worried about telemetry. I guess I am balancing between wasting some time now to make the upgrade vs. being pissed at myself in a few years time when I suddenly need to do something on windows 10 and need to purchase the license.

</comment></comment><comment><USER3> I primarily run Ubuntu on two different machines. Both have Windows installations as well. I upgraded both and the two other PC's around the house to Windows 10.

All the telemetry can be turned off. Except for one of my machines all of it is (but for the peer to peer upgrade delivery). The other machine I turned most of it off but I used a Microsoft associated email account and the PIN sign in rather than local sign in because I wanted to have a better experience.

Windows 8 defaulted to collecting data via the login. Ubuntu defaults to collecting data and sending it to Amazon and which ever search engine is currently paying for product placement. Apple and Google collect data by default with their operating systems. Use apt on Debian, or NPM, or Github or Facebook or Linkedin, everyone is collecting data.

The reason to upgrade to Windows 10 is that it's a better Windows. Now that it has multiple workspaces I might even switch back because the interface is gorgeous. On the scale of companies I trust with my data, Microsoft is higher than those which have a first order business plan based on monetizing it. Mostly, I'm a Microsoft customer not a Microsoft product and that creates a slightly better alignment with whatever interests I might have in regard to confidentiality.

Good luck.

</comment><comment><USER4> Well for me, my Macbook Air will not boot Windows 10. The nVidia graphics card panics because of something to do with VGA-emulation under EFI booting.

In theory there is a magic incantation of hex in an EFI startup script that will turn back on the necessary emulation, I dunno.... As soon as Windows installed the nVidia driver, the next boot would never succeed.

Plenty of CPU/GPU power to run it, but I just couldn't get it to work. I had to go back to 7 (please don't mention 8).

</comment><comment><USER5> I think it's worth updating to Windows 10, because it's the first version of Windows that was built in a more open-to-feedback way. Microsoft started listening to its customers during beta so there are a lot of small nuisances fixed and useful features added. Trivial things like proper full screen for the terminal.

</comment><comment><USER6> You're going to _have_ to upgrade eventually. You either do it for free now, or you pay later.

<comment><USER7> I would disagree. Depending on what you use your computer for you may find an alternative operating system that suits your needs. If you have Windows dependant software or workflows then you will eventually find that support for your preferred version of Windows is withdrawn. Microsoft will offer extended support for a minimum of 5 years from the date of a product's general availability. [https://support.microsoft.com/en-us/help/13853/windows- lifec...](https://support.microsoft.com/en-us/help/13853/windows-lifecycle- fact-sheet)

</comment></comment><comment><USER8> I upgraded to Windows 10 twice, both times I had wifi issues. So I downgraded it.

</comment><comment><USER9> Telemetry.

<comment><USER10> If someone worries about telemetry why use windows at all?

<comment><USER3> If someone is really worried about telemetry, that person should probably avoid connecting to the internet because the internet operates with reasonable efficiency by collecting data. My browser sends way more telemetry than Windows ever will.

</comment></comment></comment><comment><USER11> I do not like Windows 10 interface.

<comment><USER12> agreed. the inconsistency between old and new UI is distracting</comment></comment>


First 100 Customers - <AUTHOR> https://baremetrics.io/blog/first-100-customers

<comment><USER2> old but gold :)

"Given most startups fail, conventional wisdom sounds like a pretty bad path to follow."

"Look at any B2B product that's been built... ever. It's almost always been birthed out of the need to get rid of a painful process."

" how can you know if your product solves a major pain?

The most efficient way I've found is talking to real, live humans. Not blogging. Not tweeting. Not shooting a mass email out to a list asking what problem they want solved.

Have a real conversation, on the phone, to other people in the industry you're in and figuring out what they hate about running their business."

"Money is the only validation at this stage."</comment>


TrueCrypt is safer than previously reported - <AUTHOR> http://arstechnica.com/security/2015/11/truecrypt-is-safer-than-previously-reported-detailed-analysis-concludes/?utm_content=buffer17549&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer <comment><USER2> Eh, it has a few too many flaws still for my liking. And it's only a matter of time before it stops working on newer versions of mainstream operating systems.</comment>


Intel Announces 9th Gen Core CPUs - <AUTHOR> https://www.anandtech.com/show/13401/intel-9th-gen-cpus-9900k-9700k-9600k <comment><USER2> Once again it's amazing what Intel finds in the couch cushions when pushed by AMD. i7 consumer chips went from 4-core to 8-core since Ryzen launched. Where was this innovation before? Oh yeah, why would they bother. Ryzen is the best thing to happen to CPU architecture in years, even if you don't buy one.

<comment><USER3> Yeah, I wouldn't buy a Ryzen, but I'm glad competition is forcing Intel to put the work in again. They sat on their laurels for a really long time.

<comment><USER4> Dunno... this looks like the bare minimum Intel thought they could get away with. Sure, they added a couple cores but you give up HT on many models, no Spectre/Meltdown architectural fixes (ok, might still be early to expect that), iGPU stagnant, cutting back on cache size, every variant still significantly more expensive than Ryzen counterpart. Be curious to see how the overall performance comes out. It doesn't look so much like they're trying to compete as they are trying to not compete with their server processors. I'll probably be going Ryzen when I'm next in the market.

<comment><USER5> Yeah, this looks very underwhelming. I also think you're letting them off too easy with "too early to expect a Spectre/Meltdown fix".

This is a critical security bug that was discovered __over a year ago __. Intel just ignoring the problem and casually releasing yet another (underwhelming) upgrade that doesn 't address it all...

The fact anyone accepts that just goes to show how low our expectations have dipped when it comes to Intel.

<comment><USER4> Not letting them off, just trying to set realistic expectations. I'm not in chip design, but everything I've seen on the subject suggests that 2-3 years from design to fabrication is the general (minimum) ETA on architectural fixes. The testing needs to be extensive or they risk releasing a worse problem to the world.

<comment><USER5> They were aware of these bugs for (at least) 16 months. They could delay releasing new chips until they addressed the problem, even if it took them another year. They did not. Instead, they released a chip with a widely known critical vulnerability. That's on them.

<comment><USER6> Metldown is already fixed by software. So their hardware fixes will just improve performance in some workloads and those workloads are typical for servers, I know that on my PC meltdown fixes did not affect performance in any noticeable way.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7>
      Core Generation | Microarchitecture | Process Node | Release Year
     </comment><comment></comment><comment>-----|</comment><comment></comment><comment></comment><comment>-|</comment><comment></comment><comment>--|</comment><comment></comment><comment>--
      2nd             | Sandy Bridge      | 32nm         | 2011
      3rd             | Ivy  Bridge       | 22nm         | 2012
      4th             | Haswell           | 22nm         | 2013
      5th             | Broadwell         | 14nm         | 2014
      6th             | Skylake           | 14nm         | 2015
      7th             | Kaby Lake         | 14nm+        | 2016
      8th             | Kaby Lake-R       | 14nm+        | 2017
                      | Coffee Lake-S     | 14nm++       | 2017-2018
                      | Kaby Lake-G       | 14nm+        | 2018
                      | Coffee Lake-U/H   | 14nm++       | 2018
                      | Whiskey Lake-U    | 14nm++       | 2018
                      | Amber Lake-Y      | 14nm+        | 2018
                      | Cannon Lake-U     | 10nm         | 2017*
      9th             | C. Lake Refre     | 14nm%        | 2018

* Single CPU For Revenue

% Intel '14nm Class'

<comment><USER8> Why did they introduce so confusingly many microarchitecture names for 8th gen...

<comment><USER9> Because 10nm is horribly delayed. Skylake was going to be replaced by Cannon Lake, but instead they introduced bunch of Skylake's flavours (and one horrible chip based on Cannon Lake which was just a marketing stunt).

<comment><USER10> Are you referring to the 8086k?

<comment><USER11> Na, the i3 8121U [1] is actually a 10nm part but it is worse than Intel's 14nm parts.

[1] - [https://en.wikichip.org/wiki/intel/core_i3/i3-8121u](https://en.wikichip.org/wiki/intel/core_i3/i3-8121u)

</comment></comment></comment></comment></comment><comment><USER12> One important niche where Intel is ripe to lose their lead is deep learning workstations. The issue at hand: they don't put high enough PCIe lane counts on all but the highest end desktop processors. It's unclear if these processors will address that (I can't find lane counts on a quick google search).

Let's say you want to run 4 GPUs off your CPU for a powerful workstation or small server (e.g. for a research group). There's debate over whether you need to run cards in x8 or x16 mode for most deep learning applications, so let's say 8x as a conservative choice. That means you need 32 lanes (or 16 for just two cards). But your drive and other peripherals might take some lanes too. So 40 looks like a safer number. Easy enough to find that on a motherboard...

Most of the mid-high range Intel desktop CPUs only have _16_ lanes total. Base model Threadripper (1900x) which is price-competitive with those has 64. You can go to Xeon but that (AFAIK) can be problematic in several ways for midrange or mixed use workstations (no integrated graphics, less mobo selection for the needed features).

I think this is pretty important. If enough researchers go to Ryzen then math libraries will get written there and the lead that libs like MKL provide could be nullified[0]. This will filter into the server market, where CPU is used even in deep learning production deployments (e.g. for inference servers). And having lower end processors is important because there are lots of independent researchers doing important work in the field who don't have huge budgets, as well as academics who can't get budget and might be spending out of pocket on their workstation.

[0] I'll admit I don't know enough about the math hardware in Ryzen vs Intel to say if this is possible.

<comment><USER13> Threadripper CPUs might be price competitive with LGA1151 CPUs, but X399 motherboards _start_ at more than the lower-end CPUs; combined you really should be comparing to Intel's HEDT X299 platform, which starts at about the same overall price for motherboard+CPU. And Intel's HEDT chips all have 44 lanes this year thanks to Threadripper.

More importantly for deep learning (this price difference is lost in the cost of GPUs), AFAIK all X399 motherboards for Threadripper are set up as 16x/8x/16x/8x, whereas there are X299 motherboards with PCIe switches that give you 16x/16x/16x/16x with neighboring GPUs sharing bandwidth. For deep learning, each individual GPU having 16 lanes of bandwidth is more important than having to share with another GPU.

<comment><USER12> I think you're right about this for many people but not all.

Intel stepping up the lane counts in HEDT is definitely a good reactionary move but won't affect the budget-constrained scenarios I discussed until a few years from now because you can just buy a couple generations back. I might be wrong but I believe many X299 chips before gen 9 had 16-24 lanes?

I also don't think your point about price difference insignificance is universally applicable because buying extra GPUs over time is quite common and having an extensible box with 1-2 GPUs at the start is potentially a good move. As for the PCIe switches on the X399 chipset IMO this depends on the assertion that 16x is X% better than 8x. This depends on use case and analysis of the penalty you get at 8x vary but many people would take a 10-15% penalty down the road @ 4 cards (really 5-7.5% because it only affects 2/4 cards) to save money now.

I built a box with Intel because I had the capital, and most people at an industry job probably should, but if you read forum and mailing list threads many people are faced with this economic decision and are going TR - I see quite a few academics doing this. Math libraries are a good thesis topic :)

</comment></comment></comment><comment><USER14> Its funny how about 4 years ago when I was building my last gaming rig people were saying don't bother with AMD unless you're getting a GPU.

Oh how the tables have turned.

Speaking of which, time for a new gaming rig...

<comment><USER15> A 4 year old gaming CPU should still be plenty today. It's great that we're getting more cores, but they aren't much faster than the old ones, and many games haven't figured out how to use more than about 4.

GPUs? I have a few hundred old unplayed games on Steam that I'm working through. See you next gen!

<comment><USER16> I would hope games know how to use more than 4 cores seeing as the current crop of consoles all have 8-core APUs, even if one or two of those cores are reserved for the OS/network stack.

<comment><USER17> XB1 and PS4 have been out with their 8-core APUs for 5 years now, hasn't changed the importance of single-threaded performance. Amdahl's law still applies.

</comment></comment></comment></comment><comment><USER18> I work a lot with lower-mid end office desktops, I3 sort of level. Last year I bought my daughter a Ryzen 3 mobo and processor for £140, and I was blown away by how much better it was than the work machines. I didn't do any benchmarking, but in terms of feel, it felt so much faster. Btw £140 is bargain basement price for a cpu and mobo in the UK, yet this was a regular price for a relatively new set up.

I am not really being offered Ryzens at work though. I get sent lots of Dell and HP offers and they are all Intel atm. I wonder if this is about to change?

<comment><USER19> Did you add an SSD?

<comment><USER18> Nope, like for like 5400 HDD

</comment></comment></comment><comment><USER20> All I really want to know is, are they still backdoored? Can we get them without Intel ME/AMT?

<comment><USER21> Of course they are. The advantage is that you get a full MINIX install on newer MEs!

</comment></comment><comment><USER7> 2nd Sandy Bridge 32nm 2011

3rd Ivy Bridge 22nm 2012

4th Haswell 22nm 2013

5th Broadwell 14nm 2014

6th Skylake 14nm 2015

7th Kaby Lake 14nm+ 2016

8th Kaby Lake-R 14nm+ 2017

Coffee Lake-S 14nm++ 2017-2018

Kaby Lake-G 14nm+ 2018

Coffee Lake-U/H 14nm++ 2018

Whiskey Lake-U 14nm++ 2018

Amber Lake-Y 14nm+ 2018

Cannon Lake-U 10nm 2017*

9th C. Lake Refre 14nm __2018

* Single CPU For Revenue

 __Intel '14nm Class'

</comment><comment><USER3> Hardware mitigations for Meltdown and Spectre are the real heroes here, and the main reason I've been holding off on building a new machine. Once I can find the ninth gen stuff without being bled dry on cost, I'll be building with these.

<comment><USER22> From the article:

"What makes this a little different are the eight-core products. In order to make these, Intel had to create new die masks for the manufacturing line, as their previous masks only went up to six cores (and before that, four cores). This would, theoretically, give Intel a chance to implement some of the hardware mitigations for Spectre/Meltdown. As of the time of writing, we have not been given any indication that this is the case, perhaps due to the core design being essentially a variant of Skylake in a new processor. We will have to wait until a new microarchitecture comes to the forefront to see any changes."

<comment><USER3> I must've read a different article than the one linked here, which said these _were_ the first generation with those mitigations. :/

<comment><USER23> That would be great if true, do you have a link?

<comment><USER24> That's what ars claims. [https://arstechnica.com/gadgets/2018/10/intels-new- performan...](https://arstechnica.com/gadgets/2018/10/intels-new-performance- desktop-lineup-an-overclockable-xeon-9th-gen-core/)

<comment><USER25> That's interesting. Would love to hear something definitive, as I've been holding off on all new computer purchases until something changes, or until you can get a powerful AMD chip in a high quality laptop like the Dell XPS line.

</comment></comment></comment></comment></comment></comment><comment><USER26> We have Ryzen now..

<comment><USER27> Yup. Oh wow, Intel you have an 8 core 16 thread chip for $488. Which probably has the same security flaws as their current chips, so say goodbye to the hyperthreading, since that should be disabled. Or I can get the Ryzen 7 2700X for $320. Gee, which one should I choose?

<comment><USER28> Please note that hyperthreading may not have the same benefits in AMD and Intel.

From [https://www.cs.cmu.edu/~pavlo/papers/p2209-kersten.pdf](https://www.cs.cmu.edu/~pavlo/papers/p2209-kersten.pdf)

"The only significant difference between the two platforms is that, although both platforms offer 2-way Simultaneous Multi-Threading (SMT), Intel's hyper- threading implementation seems to be much better. On the Skylake, we see a performance boost from hyper- threading for all queries. On the AMD system, the benefit of SMT is either very small, and for some queries the use of hyper-threads results in a performance degradation."

<comment><USER29> Most synthetic benchmarks have proven amd's SMT scales far better than hyperthreading. It might be the paper's domain that's more suited for HT. Moreover, they appear to be using AVX instructions, which are arguably faster, but don't provide an accurate picture on hyperthreading performance

</comment></comment></comment></comment><comment><USER30> Reading about a new Intel ME (11) makes me slightly anxious and worried. Reading about Intel ME and a integrated Wifi MAC & integrated SDXC makes me very anxious and worried, as I am right now. In the past janking a Intel nic out of a machine and replacing it by a different one knocked out some Intel ME "features"; it's something that can hardly be done with that integrated Wifi MAC i'm afraid.

</comment><comment><USER31> It'll be interesting how far away from the offical $488 price the 9900K will end up. Due to the limited supply, the prices for the existing high-end Intel processors are not competitive anymore right now. The 8700K costs around 490€ right now here, that's something like a 150€ premium compared to previous prices.

I would suspect that the 9900K will also end up being priced way above the official price.

</comment><comment><USER32> I can't believe they're dropping hyperthreading on the i5/i7 models. Depending on what kind of inter-generational process improvements we see and how those translate to performance boosts, it seems possible that the 8700k could have higher multicore performance than the 9700k, especially given that maxing out 8+0 physical cores will stress the turbo thermals more than 6+6.

But for single core perf/gaming... these things are going to be unmatched. Stock turbo frequency of 4.9 ghz? You could OC to over 5ghz with _ease_.

I think I'm beginning to understand Intel's market positioning with these. They know that for most consumers, even including gamers, single core perf dominates everything. So if they can drop some multicore perf by killing hyperthreading, and trade that for a higher turbo, that's a huge win for their bread and butter. And they'll sell you the i9 or Xeon if you need the higher core counts, though maybe they recognize that the HEDT segment is already being dominated by AMD so its back to the labs to R&D a strategy for that.

</comment><comment><USER33> The new i7 without HT and a lower base clock, shouldn't the i7-8700k overall be faster than?

<comment><USER34> Base clock is meaningless now. HT performance depends on the application (sometimes HT cores mean only a few percents of improvement or performance decrease - it depends on what the "main" core does, as they share resources). The new 9700K is not something I would upgrade to (from 8700K), but it's surely the way to go if you upgrade from an older system and you stick with Intel.

<comment><USER28> No it's not. We see linear improvement of c# compilation speed with clock speed.

</comment></comment></comment><comment><USER35> big deal. if you're chasing new cpus for more ghz you're a dog chasing your tail..

It would be nice to see some low voltage cpus that aren't just reserved for OEMs only.. unfortunately this is one area AMD hasn't pressured intel (amds offerings all > 100W)

<comment><USER36> Ryzen CPUs are 65W and 95W; Threadrippers are over 100W.

</comment></comment><comment><USER37> That is the ugliest CPU box on the market

<comment><USER38> Have you seen AMD's wankery? This is all due to the awful taste of the "Gamer" crowd. Gaming performance, "VR Ready" on every product, big retail experience, etc. - The whole RGB enchilada.

The marketing team does whatever the customers demand and value.

<comment><USER39> As a gamer, this is pretty rude.

I go to an event called PDXLAN twice a year. It was previously a 550-person event, until this next one and future ones where we've expanded into a new venue and will have 800 gamers present with the possible option of further expanding to 3,200 in the future. It's one of the largest bring-your-own- computer events in the USA, sponsored by nVidia, AMD, Intel, and several other companies that produce hardware for gamers.

We RGB our cases and equipment because it's fun to personalize your stuff. There are over 500 people there, and seeing so many unique setups is entertaining. We've had someone make their computer look like a boombox [0], a centipede [1], or Rey's Speeder from Star Wars [2], complete with custom painted mouse and keyboard.

You might think it's all silly and stupid, but we get a lot of entertainment out of it.

[0] [https://www.facebook.com/photo.php?fbid=1330926013706204&set...](https://www.facebook.com/photo.php?fbid=1330926013706204&set=g.2204769514&type=1&theater&ifg=1)

[1] [https://www.facebook.com/photo.php?fbid=10209758136100415&se...](https://www.facebook.com/photo.php?fbid=10209758136100415&set=g.2204769514&type=1&theater&ifg=1)

[2] [http://www.pdxlan.net/forums/viewtopic.php?p=216438&sid=28fa...](http://www.pdxlan.net/forums/viewtopic.php?p=216438&sid=28faa4fe6e8c1124c564601bcbe9e755)

<comment><USER40> If thats your thing, thats fine, but so often it means that the 'gamery' aesthetic is the only option if you want high end hardware.

Im a professional software engineer, that likes to game, but doesn't wish to outwardly identify with it, I like interior design, and I like nice clean hardware that fits in with my flat.

This excludes me from having the top end Acer Predator Monitor, because its made to look like a throbbing red quantum spaceship component, which it isnt, its just a damn display, and it would look ridiculous.

If you want a laptop with decent GPU hardware, most of the options have all these edges, and lights, dressed up to look like some kind of weapon or something. If I need to bring my laptop to a meeting, I can't have that and and be taken seriously.

It just feels childish, and its hard to believe that the number of people like me isn't enough for the manufacturers to support that.

<comment><USER38> We are trying to build a startup around this - contact us at email@example.com if you are interested.

</comment></comment></comment></comment></comment><comment><USER41> Are these all the version of the i9? Do they have a version with more L3 cache?

<comment><USER42> The rest of the i9 are in the HEDT platform, and yes, the have more L3: [https://www.anandtech.com/show/13402/intel-basin-falls- refre...](https://www.anandtech.com/show/13402/intel-basin-falls-refresh- core-i9-9980xe)

<comment><USER41> Very nice. Pricey, but nice. Thankyou!

</comment></comment></comment><comment><USER43> I was half hoping that Intel would differentiate themselves from AMD by increasing frequency instead of playing the number-of-cores game against AMD.. Or is further push in frequency meaningless?

<comment><USER17> Stock clocks are up and the solder is reportedly allowing a slight increase in peak OC.

Frequency is mostly determined by process node and can't be increased without a die shrink. In fact, early 10nm nodes will actually be slower than what Intel can do on their highly-refined 14nm node. Jokes aside, 14+++ is actually amazingly fast.

</comment></comment><comment><USER44> I wonder if the Mac Mini will get an upgrade.

<comment><USER45> This was my first thought as well, since Apple is coming out with (supposedly) "pro-focused" new Minis very shortly.

</comment></comment><comment><USER46> Why do they call all their first table columns AnandTech. That's annoying.

</comment><comment><USER47> I'm confused, I just got a Dell with an i9-7940x, it has 14 cores, for 28 CPUs. Why is this processor not mentioned?

<comment><USER48> The Intel product lines going iX-YZ00(x) where X=Product Line, Y= Generation, Z = Spec, and (x) is present for chips that can be overclocked. So yours is a top product line 7th gen unlocked chip.

<comment><USER49> Thank you for the explanation! I completely lost track of Intel processor branding after the "Core"/"Core 2"/"Core 2 Duo" era, and these model names have been a complete mystery.

</comment></comment></comment><comment><USER29> I bought an intel chip a few months ago because ryzen 7nm isn't out yet and I use a high frequency display. At this point, it's blatantly obvious intel is playing catchup, with worse SMT,worse node size,and less flexible architecture

<comment><USER50> Node sizes are not directly comparable and haven't been for years. It's all marketing BS. Please stop perpetuating this myth. Intel's 14nm process is still better than everyone else's and will be until at least the release of TSMC 7nm.

<comment><USER51> TMSC's 7nm is in volume manufacturing. It's used for the A12 SOC in the latest iPhones.

</comment></comment></comment><comment><USER52> Jet another 14nm CPU... so don't expect any noticeable performance boost. Even low-voltage iPhone XS CPU has the same single core performance as top-notch Intel processors for workstations... Apple is already using 7nm, but Intel needs at least 1-2 years more to make their 10nm manufacturing process working. This is what happend when a tech company only cares about high margin and nothing else.

<comment><USER53> > Even low-voltage iPhone XS CPU has the same single core performance as top- > notch Intel processors for workstations...

yeah right, if that was the case I'd rig up a compile farm with iphones

<comment><USER52> I have a proof for you. Please check the single core performance here:

iPhone XS: 4794 scores [https://browser.geekbench.com/ios_devices/56](https://browser.geekbench.com/ios_devices/56)

The newest Xeon E-2176M: 4900 scores [https://browser.geekbench.com/processors/2500](https://browser.geekbench.com/processors/2500)

the difference is only 2%...

<comment><USER54> That's a low power laptop cpu, not a workstation cpu.

<comment><USER52> Actually, this CPU is in 15 fastest single core CPUs ever, including all desktop processors: [https://www.cpubenchmark.net/singleThread.html](https://www.cpubenchmark.net/singleThread.html)</comment></comment></comment></comment></comment>


The longest list of CSS frameworks you probably ever seen - <AUTHOR> http://www.libhound.com/web-development/user-interfaces/longest-list-of-css-frameworks

<comment><USER2> Call me old fashion, but whatever happened to grok, learn, read, write, and eventually knowing how to do what you want? I'm not trying to say that CSS frameworks have no potential or aren't interesting, in fact I'm not going to say anything at all; instead, I'm speculating that probably 2/3 of the people downloading and using them are doing it wrong since they see these _frameworks_ as an answer to not knowing _how to do_ what they want.

<comment><USER3> I"ve studied CSS for years and find CSS frameworks useful, particularly in that I don't need to recall all the cross-browser quirks. Currently, I use Blueprint with Compass driving the generation. This gives me a lot of flexibility and more readable code than if I were wrangling directly with CSS for all of it.

<comment><USER4> Yeah for cross-browser handling it's very nice but like any abstraction it's nice to know how it works for those times you have to get down and fix some leaking problem.

</comment></comment></comment><comment><USER4> This probably comes up a bit but what is the advantage of a CSS framework that provides a heavily pixel focused grid system for quick prototyping over say tables? I prefer CSS by far to tables (so much that I don't use tables for layout anymore) but it seems like these grids are just CSS tables, and with the overhead etc. if you are designing in a table mentality you may as well use tables.

</comment><comment><USER5> CSS frameworks like this can be useful and harmful at the same time, depending on what your goals are. If you need to prototype something fast they can be invaluable. But they can also become a straight jacket and require littering your layout with what are in effect, as nopassrecover mentioned, almost table cells (especially with 960.gs). All these non-semantic divs with proprietary id's break down the concept of separating content from layout. So when you want to move away from the CSS framework in the future (to say, accommodate some specialized ad unit or something) you have to go through the pain of re- writing your layouts. You have to judge how extensible the layout needs to be in the future when deciding to use these or not.

</comment><comment><USER6> I like using Blueprint CSS because it helps me design my sites in a true grid layout. Right now I am all about grids and really think they are a pleasing layout.

My experience with CSS is very high and I have cut my teeth writing barebones layouts innumerable times. So, I don't feel like I am cheating or using the framework to do something for me I don't know how to do on my own. It is a tool that accomplishes my goal a lot faster.

Plus, as content needs evolve on a site, I have the framework that makes it easier to add content divs that play nice with my existing markup. For example if I want to create a nice (1/3) (1/3) (1/3) set of columns below my main content div...the framework has solid classes to do that without me fighting browser issues.</comment>


Google's self-driving car vs. Tesla Autopilot - <AUTHOR> http://electrek.co/2016/04/11/google-self-driving-car-tesla-autopilot/ <comment><USER2> "Miles driven" is a completely useless statistic for a self-driving car. The majority of distance driving is straight forward, even in a city. Decision points, such as stoplights, may not account for much distance, but are far more relevant. This article is primarily a breakdown of a completely irrelevant number.

People paying attention to "1.5 million miles" or "47 million miles" are falling to marketing ploys based on showing people big numbers. Chris Urmson at Google is largely an outright liar on his car's safety, Tesla at least seems to admit it's not capable of replacing a human.

</comment><comment><AUTHOR> I find it to be an interesting strategy by Tesla to get some real world data upon which to build truly autonomous models. Other rumored self-driving competitors (Uber, Apple, etc) are at a disadvantage in that they will be hard pressed to gather real data.</comment>


Google, democracy and the truth about internet search - <AUTHOR> https://www.theguardian.com/technology/2016/dec/04/google-democracy-truth-internet-search-facebook <comment><USER2> We place our trust in algorithms -- creating a high tech game of cat and mouse.</comment>


RIAA Insists That, Really, The Music Industry Is Collapsing - <AUTHOR> http://www.techdirt.com/articles/20120217/15023417795/riaa-insists-that-really-music-industry-is-collapsing-reality-shows-its-just-riaa-thats-collapsing.shtml

<comment><USER3> You know what, I'm totally new to this party in that this is my first ever written comment on the situation. But I have to admit, I'm starting to get pretty pissed.

The thing that really gets me, and the thing that has recently dawned on me is that file sharing isn't the only thing that is eating away at "sales" - <USER2> realized just yesterday I have never paid for a CD, or bought a DVD. In my younger years I "acquired" content in the common, frowned upon, ways but in the last 4+ years I can say the same for my content purchasing habits - I just don't do it.

You know why?

Netflix. Spotify. Love-film. Youtube. iPlayer. 4od.

I just don't have to buy content any more because I can pay ALL of these guys and get pretty much all the content I can watch. I genuinely haven't opened a torrent app or downloaded from a file locker for longer than I can remember and I am what you'd imagine is that kind of guy.

Just today I got a phonecall from LoveFilm telling me about their new "stream only" packages, and that they're now owned by Amazon so their streaming tech is much better than it used to be.

Not only that, but I'm sure maybe even yesterday I read an article about Katy Perry's (Mmm) millions (if not tens of) plays on Spotify earning her next to nothing.

Now look, I know a lotta guys do fileshare but file-sharing is not the only reason the industry(s) are on their arse, it infuriates me that this whole charade is still going, I know I don't need to tell you guys how ridiculous this is.

This isn't even to mention everything else that us guys read daily about what the industry should be doing differently, or how to improve this and that. This is a set of commercial deals they have in place that give me an extra option in addition to "download illegally", or "buy download/CD".

So I'm of the opinion that if you took file-sharing out of the equation, they still have nobody but themselves to blame.

</comment><comment><USER4> To the RIAA, the Music Industry really is collapsing. They are used to the Music Industry being one entity that they have control over. But the music industry is just changing, and now many indie artists and producers are able to release music to a huge audience without using the distribution channels that the RIAA sought to protect. So, the Music Industry as it was known 10+ years ago is collapsing. However, in it's place is a new music industry with a vastly different business model. And the RIAA will either realize the world has changed and try to grab some market share before it's all gone, or they will cease to exist.

<comment><USER5> It's interesting how these dyed-in-the-wool capitalists are getting so butthurt over getting their asses kicked by more able competitors.

<comment><USER6> Monopolists (oligopoly I guess, technically), particularly those who've been in a monopoly position for a long time are only the dried up husks of capitalists.

It comes as no surprise that competition is a completely foreign concept to them, IMHO.

</comment></comment></comment><comment><USER7> When The Oatmeal starts telling you what's wrong with your industry, it's time to shift gears:

<http://theoatmeal.com/comics/game_of_thrones>

<comment><USER8> Once I saw that, I knew pirating was going to go mainstream. It has to. People like movies too much, pirating is so easy, and everything else is hard and is a shitty service.

<comment><USER9> More on shitty services...

I have an hbo account through verizon fios, and typically watch shows through hbo go. Its hbo's streaming answer to being able to view the content you already pay for. The service is terrible, it constantly stops buffering and looses its place in the show / movie and you have to restart the player constantly. This can't be due to my connection because speed tests report everything as fine and dandy.

</comment></comment></comment><comment><USER10> If lots of people are more than happy to do something for free, then just how important is it for those people to get paid to do that activity.

This isn't metal mining or oil drilling, making music is something humans do because they enjoy it. I would assume that 99% of music makers/creators/producers not only make no money from it, but pay money to do it. Thus, we could argue that when that 1% ceases to make money from the activity society, as a whole, is better off because that capital is now re- allocated somewhere else -- be it another leisure activity, healthcare, food, investment, etc.

</comment><comment><USER11> "With the first link, the chain is forged. The first speech censored, the first thought forbidden, the first freedom denied, chains us all irrevocably."

Music industry should die for what it's trying to do with our liberties.

</comment><comment><USER12> "Don't worry about sales. Make your money by touring."

If I were a musician, I'd be the studio based type. (Mike Oldfield, et al.) Re-taking and re-mixing until the recording is just right.

For someone like that hypothetical me, going on tour would be to expect people to pay to watch a substandard live performance or to watch me mime to a recording. I'd find both rather dishonest.

Its a good job I'm a software engineer. My customers expect me to test my work before delivery.

<comment><USER13> Couldn't hypothetical you just do a really polished tour? I mean, take electronic music for instance. Their performances are them moving sliders around and stuff, on things they've already spent a LOT of time creating and mixing.

</comment></comment><comment><USER14> This is a standard case of technology cutting out the middleman.

</comment><comment><USER15> I don't think anyone here knows how the music industry works.

<comment><USER16> Would you care to enlighten us then?</comment></comment>


Ask HN: Buzzword for *.d directories? - <AUTHOR>

Does anybody know buzzword for configuration directories AKA .d-directories, which is suitable for googling? <comment><USER2> May I suggest the #linux channel on irc.freenode.net for questions like this?

<comment><USER3> or superuser.com ...

<comment><AUTHOR> I am leader of national Linux user group (<http://linux.org.ua/>) . What I should say on #linux channel or at superuser.com?

Currently, .d directories are referred as "configuration directory" in manuals, in opposite to "configuration file" (.conf). See man modprobe.d for example.

But I need a word to popularize this style of configuration. ".d directory" is bad name for googling.

Maybe Dot-D-Dir (DDD) or Dot-D-Configuration-Dir (DDCD)? But these abbreviations are already taken. :-(

</comment></comment></comment><comment><USER4> rarps</comment>


In Africa, Birds and Humans Form a Unique Honey Hunting Party - <AUTHOR> http://www.nytimes.com/2016/07/23/science/birds-bees-honeyguides-africa.html?rref=collection%2Fsectioncollection%2Fscience&action=click&contentCollection=science&region=rank&module=package&version=highlights&contentPlacement=1&pgtype=sectionfront&_r=0 <comment><USER2> I'd heard about this one before, but it's great to see some research done on it.

If you think about it, humans communicating with birds is not all that astounding - interspecies communication abounds in nature. Nonetheless, it does make for a fascinating case study. What I found most amazing was that the Yao have developed a sort of "bird call" specifically for this use, and that the birds actually understand the exact meaning of this call! Perhaps birds aren't as stupid as we often think after all...</comment>


API Documentation: Where to Begin - <AUTHOR> https://www.braintreepayments.com/blog/api-where-to-begin

<comment><USER2> I work at Twilio. Thanks for the kind words in the article.

It's important to actually watch people use your documentation, to see how effective it is. The OP linked to our HowTo section as a good example of focusing on use cases. In user tests the HowTo sections are one of the least effective sections of our documentation. Most of the howtos are only available in PHP or C#, and the way they are written now makes it difficult to translate that code into the language the user would rather use. They also put more focus on working code samples than on explaining the concepts - people really struggle with understanding what happens when they get a call or a text at their Twilio number. We're working on revamping our documentation to help make this stuff more clear.

So I'd be wary - the concept of code samples is good, but the devil is clearly in the details.

<comment><USER3> I am actually usability testing our tutorials now, asking them to read and think aloud. It has been really helpful to see people charge off down the wrong alley if the wording is just slightly off. I've re-written the tutorials 4 times already as a result. Also because we are supporting all 7 programming languages, watching a .NET developer vs. a Ruby developer has brought up some fascinating differences of interpretation.

</comment></comment><comment><USER4> I have been trying to help with API Documentation as well (mostly because of my frustration as a user). My main focus currently though has been in helping you use the API of code as opposed to REST API's (because most people have languages wrappers).

Check it out: <http://docmaps.io/>

</comment><comment><USER5> Thanks for mentioning the Klout API docs (<http://developer.klout.com>). They're a work in progress, but we lean heavily on Mashery's I/O Docs solution for self-documenting response and request formats. I continue to work on expanding out more detailed docs, but I generally feel strongly that API docs should be entertaining and tell a story. This aligns fairly well with how Dwolla (<http://developers.dwolla.com/>) aimed their portal at both business and developers.

As an aside, we use Swagger internally to manage and self-document here, and then I/O Docs on the third-party developer side. It's a nice separation of concerns.

</comment><comment><USER6> I really like using iodocs by Mashery, it's pretty simple (put all of your API calls into a single JSON file) and it allows you to quickly do example calls with different query parameters that your users can test out right on the documentation. Klout uses it now too, I believe.

<http://dev.mashery.com/iodocs>

It's also open source, which makes developer me happy. The only thing I wish they would update is allowing JSON to be sent in the request body, which there seems to be an open pull request for on GitHub:

<https://github.com/mashery/iodocs/>

<comment><USER7> I built Happy Docs a while back for documenting APIs. It's still a work in progress. It mostly gets used for internal projects, so there isn't a good public example yet that showcases all of the features, but it includes a query tool (a bit of a work in progress), several authroing/editing tools, collaboration, and a few different export formats.

<http://happydocs.net>

</comment></comment><comment><USER8> 3scale (<http://www.3scale.net>) uses Swagger to do this out of the box on all of it's API portals. Swagger (see <http://swagger.wordnik.com>) gives you live docs but also tools to mark up the code to rip out the specs when you update code.

</comment><comment><USER9> This is a very helpful guide.

I'd like to add a where __not __to begin: putting a big _Woah, Nerds Only!_ warning at the top of your API docs (I'm looking at you, Mailchimp[0]).

[0]<http://apidocs.mailchimp.com/>

</comment><comment><USER10> Mashape auto-generates a nice documentation and 6 client libraries in PHP, Ruby, Python, Erlang, Java and Obj-C without writing a single line of code.

Example: <http://mashape.com/lambda/face>

</comment><comment><USER11> Our team has had a fair bit of success with a ruby library that generates API docs from our acceptance tests: <https://github.com/zipmark/rspec_api_documentation></comment>


Apple CEO paid less than Nokia CEO - <AUTHOR> http://www.thefullsignal.com/news/1839371/apple_ceo_paid_less_than_nokia_ceo.html

<comment><USER2> im pretty sure Cook got like a $400m grant to vest over 10y when he got started. Anyways, I do hope for Elop he's getting paid in cache and not stock.</comment>


Ask HN: Review My Minimal Viable Product. - <AUTHOR> http://pluspanda.com

<comment><USER2> I like it. The web is full of people who aren't really programmers who are using it to make money. That's how I got into programming a decade ago.

They'll learn to make a rating system if they really feel the need (making a reasonable one is not rocket science) but offer them a slick one that's easy to integrate on the webpage where they're selling their e-books or vinyls or whatever and I imagine they'd pay for the usage.

</comment><comment><USER3> There are a few problems that I see here, but two of the big ones:

1\. As a visitor to a random website, I'm skeptical of reviews I see on that site. If your brand gets big enough that people see "Comments powered by PlusPanda" and think "Oh, ok...I can trust this", then _maybe_ , but that seems like a pretty lofty goal to have to reach before your business model really clicks.

2\. The bigger problem is self-selection bias. If I run a great business, of course I'd love more people talking me up on my site. If I run a crappy business, I'll have no reviews or reviews that I can filter, shape, and control. 3rd party review sites remove the power to have and control reviews from the business owner, and that's kind of the whole point.

EDIT: I just read this and I realized that I sound really negative. Let me point out that I only bothered to go through the site, think the issue out, and write a comment because I think what you're doing is genuinely interesting and has a lot of potential. I just wanted to point out some issues I'm sure you've thought through, and I'd like to know what your view is.

<comment><AUTHOR> Hi Ryan, yes yes I do appreciate you taking the time to highlight some concerns.

1) Yes, ideally our brand would be "trusted". But as of now I don't think it necessarily requires our brand to be _well-known_. I'd like to think that a "These reviews managed and verified by <link>PlusPanda</link>" would be sufficient enough as a research tool for concerned customers to be able to click on and read a short description of our program policy.

2) I agree in that a service like this entails that the customer actually commit and put in effort, in order for it to actually do its job. It's not something you necessarily set and forget. So if your business is poor, this isn't any type of remedy in and of itself. I am taking your point to be that _relative to feedback_ , pluspanda suffers from self-selection bias. But actually the whole secret-sauce of customer reviews is actually mainly for marketing purposes, which are two fold:

1\. Customers always believe 3rd party opinions _over_ 1st party opinions. So even if they are less likely to believe in the full-validity of reviews on your site, they'd still likely believe them _more_ than they would any first- party marketing copy on the site. And as stated by others, at worst, your reviews wouldn't be so much as "reviews" but "testimonials" (i.e. they are all praise) which tons of sites successfully employ.

2\. Customer Relationship Management via email marketing. Simply put, everyone that bothers enough to leave a review, has a stake in your business, and you should be communicating with them, thanking them, giving them loyalty rewards, rectifying poor experiences, and encouraging repeat-business, and word-of- mouth etc. So customer reviews is really just a way to manage an effective email marketing campaign. It's a "platform".

This is the angle from which I am basing my value proposition. Any thoughts are appreciated. Thanks again for your time.

<comment><USER4> I think the "self-selection" comment was referring to the businesses, not the customers. An analogy is those "customer forums" that many companies setup, thinking, "Customers can support themselves!" but then realize that it's more about "Customers can learn how crap our company is!" and they take it down. So, crappy businesses won't want your service.

But even a well-run business will be cautious about letting some random internet stranger post comments to their homepage. You need to make sure that comments aren't from competitors, people don't post multiple times and most importantly: That the company can respond to criticisms.

</comment></comment></comment><comment><USER5> On the add review widget, maybe the default rating should be 5, or at least not 1. Maybe use one of those star widgets instead of the combo box? I think business using this would prefer a higher default rating, rather than have their products get lots of 1s by mistake.

It's also not clear in the demo why users have to have to give a name and email to submit a review - do you need that extra friction?

<comment><AUTHOR> Thanks for your feedback. Good suggestion. After reading some more, I think the best thing would be to have the default be null, and then cause an error if its unchanged. That way the user is forced to consciously select a rating. Thanks for pointing that out!

As for the email, aside from anon reviews being implicitly less valuable, the secret-sauce of gathering customer reviews is so you can engage with customers loyal/concerned enough to leave reviews!

<comment><USER4> I've used the rollover star system before (similar to how iTunes does it.) It's easier, sexier and more intuitive.

But yes, definitely default to "no stars" and require that a rating of 1 to 5 is given.

</comment></comment></comment><comment><USER6> The summary "Now you can manage reviews on your website just like <http://yelp.com> but completely branded by you, all with just two lines of code." is confusing. It hints at why someone would want this, but it's not clear how it works (e.g. whether its a service or a library). Also, "two lines of code" may be easy, but it probably won't sound that way to many people. The rest of the front page explains the benefits of your service, but never clearly explains what it does and how it works.

</comment><comment><USER7> Your demo should look like a real site, using PlusPanda for a real purpose.

<comment><AUTHOR> Thanks Shawn, I'll definitely put that on my priority list. I wanted to get the mvp out to my HN buddies as a pre-cursor to enlisting some feedback out in the wild. As soon as possible, I'll be trying to get some real-life use cases going on, and I'll be able to show "real" demos =). Thanks again.

<comment><USER8> You could always just create a very simple fake site. Set up a site at pandaplus.com/pandabooks or pandabooks.pandaplus.com and make a fake site for a used bookstore. Banner, navigation (that doesn't work), and your review plugin.

</comment></comment></comment><comment><USER9> Very nice.

3 issues:

1) What are the 2 lines of code?

2) I took about 5 seconds to find the "Add review" form, as it was hidden behind some button.

3) I your site design, but not the title font size (too big, or too many points) and the pitch text. It's good for consumers, but I find it a bit dumbed down.

Your target customers appear to be sophisticated website owners (after all, your first paragraph reads "Now you can manage reviews on your website just like <http://yelp.com> but completely branded by you, all with just two lines of code", and you use words like "utilize").

Instead of "big headers and lots of text, for consumers", you might try something like:

Customer Reviews Work.

Amazon.com, Apple, Borders books, Best Buy, Walmart and other big-box retailers use customer reviews on their websites, because it works. With Plus Panda, you can do the same, with just 2 lines of code, and for a very low cost.

Don't take our word for it. Read our reviews and then Get Started Now!

With just 2 lines of code, you can:

* Build trust and credibility with new customers.

* Encourage customers to give you feedback.

* Respond quickly and openly to customer complaints.

* Promote new products (WTF, is that a COMING SOON feature??)

* Help customers spread the word through Twitter, Facebook and Myspace (coming soon??).

A world class customer review system (like Amazon's system, yelp or Panda Plus) could take months to build if you started from scratch. But all this, and more (including a 90 day guarantee, and a data export API) is available from just (What does it cost??? Don't you know yet? OK cool.). How cool is that?

Anyway, it's a nice site and a cool product idea.

<comment><AUTHOR> Thanks for taking the time to revise my marketing copy! It is definitely something to consider. I feel that I will need to a/b test a more basic explanatory version with are more content-rich to-the-point advanced version that you've whipped up.

As for the "comming soon" features, haha, yes, I got ahead of myself there, its not available in the mvp but at its core much of the "benefits" of the review system would be through the ability to email and communicate with the reviewers. So things like promoting new products, and enabling word-of-mouth would be mostly through email marketing campaigns. Things like twitter/facebook integration would start out as a simple fb connect feature or submission via a dedicated twitter handle.

As for pricing, as much as possible of course, but I'd like to believe around ~$20/month =P

Thanks again, And I will seriously probably be a/b testing your concise marketing copy!

p.s. The 2 lines of code is just a div wrapper with a unique id, and a script tag that loads all the assets. It appends a link tag to the main css, fetches the html as a js object, and then injects the raw review data via jsonp.

<comment><USER10> You might include a link to a popup of the two lines as well. "...all with just <link>two lines of code.</link>"

</comment></comment></comment><comment><AUTHOR> Thanks in advance for the feedback my dear HN crew.

Customer reviews are in a sense the framework for online word-of-mouth, and word-of-mouth marketing is ...Gold. Pluspanda.com is the MVP toward this end.

The marketing site and the product functionality is clearly still pretty raw, so ideal feedback would be on concept implementation execution, possible avenues, and feature must-haves etc.

Also any designers that can style the widget , please email me!!

Thanks!

</comment><comment><USER11> I think your real goal is not immediately obvious. At first it looks like you're just providing a way for businesses to get feedback, but I see that is not it at all. It is, however, a great pitch.

I would put a little more on the home page about the trust aspect (which to me seems to be the real goal).

I think you are almost certainly going to be dealing with the issue of owners wanting to delete reviews for a very long time, but I think your position, once properly understood, makes sense. When I first read it, however, I was taken aback, so I think some warning (in the form of a few comments about the trust aspect) on the front page would help prepare users for this.

Really, I think you have an awesome product and idea here. This is the kind of the thing that once it was established, customers would start to expect and even judge sites based on whether or not they had it (think Carfax).

<comment><AUTHOR> Daniel, thanks for taking the time to leave feedback. I am all for becoming as necessary as a Carfax =]. Also I will take you up on that idea of dedicating some copy to highlight what trust means and how its managed from and to owner and customer. Thanks again.

</comment></comment><comment><USER12> Will these have your branding on them? Because if they don't, then how will people confirm the credibility of the reviews? Kind of defeats the purpose of open honest reviews and not letting owners delete reviews if users don't know that.

With yelp, people know that these are reviews on a third-party site.

Also, I'd like to add that since users are embedding these reviews on their own sites', visitors will not know if owners tamper with the reviews with additional javascript. Having reviews on a third party site has its advantages.

<comment><AUTHOR> Thanks Chris for your feedback. Yes I plan to have a small logo for that exact reason, which would be linkable not to my home page, but to a clear outline of the program policy and assurance of at least "intended" credibility.

Matt addressed some of the concerns about why _relying_ on yelp is probably getting to be a bad idea. I do not intend to outright accuse yelp of anything since I don't have empirical evidence, but whether or not its true at least brings up the potential drawbacks in letting another company manage your reputation.

Matt also brought up that its a tougher sell to have users give you feedback on a third-party site which IMO is especially true of yelp. Yelp is actually a reviewing "community" so you have to set up and account and jump through the usual hoops. Not all businesses cater to web-savvy "i-want-to-be-a-prolific- reviewer-online-" types of people. There are plenty of traditional businesses who's customers rarely go online, but if asked to submit a review through an email, would probably be ok do doing it. Hard to see an older 50-80 year old demographic signup for a "yelp" account, yes?

</comment></comment><comment><USER13> The digg link doesn't have a hover effect, also consider using sprites with a background-position for those social media links on the homepage because then you won't get the wait while the hover image loads.

The write a review form should probably always be visible as that is the core feature of the product, also the solid colours are a little loud.

</comment><comment><USER14> Hi, Didnt read previous comments so someone may have said this or addressed it already.

Design looks a little bit to bland for me. Almost like a off the shelf wordpress theme.

Focus on your strong points:

Easy Setup List major benefits ( Increase sales, search traffic, etc. ) Easy Administration Analytics

Cool idea though.

</comment><comment><USER10> I like this. I would use visual stars as well, which will bring reviews to life better than numbers only. Also, I think the PlusPanda branding could work well, and although the current logo is okay, I might shoot for something cuter/happier. Pandas give the perfect opportunity for that.

</comment><comment><USER15> Take a look at your tab order, it goes from the review field to the name field, skipping the email field. Also, it isn't very clear to me how it will look at my own website. Do I embed the big box? what about customizing to fit my layout? etc.

<comment><AUTHOR> Thanks for taking the time to reply. The tab order is semantically incorrect because I floated the two fields in opposite directions! Thanks for the catch, I'll update it.

The css is sent separately so it is fully configurable and can be "professionally" skinned, but there will also be some basic themes to select from and alter basic color schemes. As of now this is the MVP so theming is not addressed!

 _Do I embed the big box?_

If I understand that correctly, no, the code you would embed is just a div wrapper and then a script tag. The script tag loads everything via javascript, and then builds it on the page within the wrapper. If javascript is disabled, a link is displayed to your "standalone" version which actually works completely without any javascript =)

Hope this answers your questions and actually if you have any requests regarding being able to customize it to fit your website, I'd love to hear them from a users perspective. Please email me! Thanks again.

</comment></comment><comment><USER16> Looks nice, and a good idea. I'd consider using this if I had a need for it (and I may in the future).

I did notice that tabbing order goes review body->name->email->submit, which doesn't match their visual layout.

<comment><AUTHOR> Thanks for your comment. Ah yes I checked and its because I floated the fields in the opposite directions! I'll fix that. Thanks.

</comment></comment><comment><USER17> There's a typo in the front page : "A Powerful, Easy Customer Communicaton System."</comment>


Ask HN: Do quotes form Napolean Dynamite still work? - <AUTHOR> <comment><USER2> (Time Machine Scene)

Napoleon: "It's a piece of crap! It doesn't work!" Uncle Rico: "I could of told ya that"

Time travel still doesn't work. Still relevant.

</comment><comment><USER3> "Well, things are getting pretty serious right now. I mean, we chat online for, like, two hours every day so I guess you could say things are gettin' pretty serious."

-I say that this is still relevant!

</comment><comment><AUTHOR> Good to know. One day I looked for the bust must plus flyer so I could leave some copies at the office printer, but I couldn't find it.

</comment><comment><USER4> Eat your lunch, Tina!

<comment><USER5> Dang kaysudilla!</comment></comment>


Show HN: Beautiful Todo CLI Manager - <AUTHOR> https://github.com/darrikonn/td-cli <comment><USER2> Looking at the screencap - why is 'td' so laggy?

There's a perceptible delay of what looks like at least a second when replying to almost all commands.</comment>