Reconsidering Functional Programming - <AUTHOR> http://prog21.dadgum.com/207.html <comment><USER2> Along these lines, for me one of the things that makes Clojure stand out is the careful thought that went into state, time and identity in the design of the language. It removes mutability as a default without forcing you to be purely functional all the way down, and gives you tools to manage state changes in ways that are easier to reason about (though still not necessarily easy of course).

</comment><comment><USER3>
      > single-assignment "variables,"

It's a pet peeve of mine to see people disparage the phrase "immutable variable" as a contradiction. A given variable's value can _vary_ each time its function is called, or each time its program is run, without ever needing to be mutated. In fact, in practice _most_ variables don't end up requiring mutation, which was a surprise for me coming from traditional imperative languages (not to say that mutation isn't valuable, but it makes more sense for your language to make variables immutable by default rather than mutable by default).

      </rant>

<comment><USER4> This is why we call these things "values" not "variables"

<comment><USER5> Those are different concepts. Variables have names, values typically don't. 500 is a value; foo is a variable.

<comment><USER6> Values that have names are typically called objects (their identity isn't structural). Named values are necessary for having mutable fields (I.e. variables).

<comment><USER5> Hmm, that doesn't sound right to me, at least not if "name" means "identifier" in the conventional sense (like foo). For example, stack-based languages can do field mutation without names.

<comment><USER6> Depends if we are talking about local stack or global heap state. If you just want to modify a register, then a locally bound name/index/stack pointer is sufficient. If you want heap allocated aliased (shared) state, you need globally unique names or addresses. The challenge is always with global state, hardly ever with locally scoped state.

</comment></comment></comment></comment></comment></comment><comment><USER7> In my opinion the most important part of functional programming is the purity of functions. There is a great quote about this on one of the Clojure doc pages

"If a tree falls in the woods, does it make a sound? If a pure function mutates some local data in order to produce an immutable return value, is that ok?"

Function purity enforces that mutations are localized to small areas of the code, while maintaining composition.

<comment><USER8> For me, having first class functions with proper lexical scoping is enough to start feeling functional. That might sound like nothing but its surprising how few of the most popular languages get both of those right.

<comment><USER9> What is proper lexical scoping? Does JavaScript get it right?

<comment><USER10> No. Javascript gets it horribly wrong without "var", still terribly wrong with "var", and somewhat better with "let".

<comment><USER9> I don't understand what let has to do with functional programming though (enclosing a variable within if () {} instead of function block etc). Do you mind elaborating?

<comment><USER10> The question wasn't about functional programming per se, but about lexical scope.

"let" keyword in ES6 allows Javascript to have "lexical" style scoping (with some caveats due to JS legacy).

That said, several ways of scoping a variable can be had in functional programming. Have a look here for some more explanation with regards to Common Lisp:

[http://stackoverflow.com/questions/463463/dynamic-and- lexica...](http://stackoverflow.com/questions/463463/dynamic-and-lexical- variables-in-common-lisp)

</comment></comment></comment></comment></comment></comment><comment><USER11> I wonder if somebody have tried using a STM style approach to making games?

For a couple of LudumDares I did try (in java) and for the games I was able to do it worked fairly well. Basically the drawing thread is seeing a frozen readonly version of the world (and keeps 60 fps) while the update thread will try to run simlation over readwrite version of the world. When the update thread finishes it will "publish" the new state and start over. I have ever wondered how it will perform at scale, maybe it will start braking apart if it grows too much?

<comment><USER12> It breaks down when you approach the hardware limits, i.e. for rts games with thousands of units on the screen, particle effects and so on, or if you have complex cad models in automotive applications. Essentially you then need to minimize driver overhead and avoid data copying at all costs. In particular you need to do memory mapped IO (using glMapBufferRange) between the GPU and main memory as fast as possible. That is only possible if you do tripple buffering with a ring buffer, at any given time one part of the buffer will be in flight to the GPU, one will be processed by it and the third will be modified by the CPU. You "publish" with synchronization (glFenceSync() and glClientWaitSync()), see for example [http://gdcvault.com/play/1020791/](http://gdcvault.com/play/1020791/).

In particular you have to organize all your world data in flat mutable arrays because even on the CPU your data has to be presented in a way that avoids cache misses as much as possible, this philosophy goes by "data-oriented design", see for example [https://www.youtube.com/watch?v=rX0ItVEVjHc](https://www.youtube.com/watch?v=rX0ItVEVjHc).

<comment><USER13> This is all very low-level stuff, though. Functional systems are high level abstractions typically erected on top of a low-level, imperative foundation. Let's use the particle effects example: One can describe how a particle system should behave using pure functions and immutable data whilst letting the actual simulation and rendering be handled by a low-level system that does all the dirty stuff necessary for speed.

<comment><USER14> I agree that it's potentially possible to make a functional layer on top, but it still seems somewhat irreconcilable with the idea of STM.

</comment></comment></comment></comment><comment><USER15> > "At what point in the frame was this change made?" Some parts of the game > may have looked at the original version, while others looked at it after the > change. Now magnify the potential for crossed-wires by all of the > destructive rewriting going on during a typical frame, and it's a difficult > problem.

Not really, it's a pretty trivial problem and one of the least concerns of game programming these days.

<comment> loup-vaillant This is an _unsolved_ problem in a very high profile AAA _competitive_ game: Starcraft II.

In Starcraft II, when 2 Protoss players order one of their templars to move/cast a particular fatal spell to the other templar, then wait, you do not get the expected double kill. Instead, when they get in range of each other one templar casts the spell _first_ , kill the other, and survives.

Which templar lives and which dies depends on the order the units are processed in the frame —arguably an implementation detail. To the players, this is just plain unfair. Not a deal breaker for a hosts of reasons, but still no good.

<comment><USER15> This is a pretty standard multithreading problem that has nothing to do with mutability or immutability.

<comment><USER16> Mutability implies caring about order. I think that's why GP used this example.

<comment> loup-vaillant Indeed. This problem arises even in a single thread setting. Let's say 2 units aim at each other, and in frame N, they are at range of each other. Here's what should happen:

      - Unit1 kills unit2
      - Unit2 kills unit1

If you double buffer your actions properly, both unit will be dead at frame N+1. If however you modify your data in place, this may happen:

      1. Unit1 kills unit2 => delete unit 2
      2. Unit2 no longer exists.  Unit1 lives.

Or, this may happen:

      1. Unit2 kills unit1 => delete unit1
      2. Unit1 no longer exists.  Oops.

Oops.

What definitely does _not_ happen is the double kill. StarcraftII can live with that, but other games, like Frozen Synapse, would be broken.

<comment><USER16> What you call double buffer, other call transaction I believe, and it's a system design. You have clear steps where information is gathered and rules are applied.

In that case you take all the attacks, computes the damages, apply them and prune the dead.

</comment></comment></comment></comment></comment></comment><comment><USER17> This is how the time travel mechanics of Braid were implemented. Record the events, apply those events in a deterministic manner, and then reverse the events to go backwards in time.

More generally this is pretty much the event sourcing pattern: [http://martinfowler.com/eaaDev/EventSourcing.html](http://martinfowler.com/eaaDev/EventSourcing.html)

<comment><USER18> Not true, mostly. I recorded world state, not events. The one exception is world 5 where I record events so that your shadow-universe guy can do things.

Event recording has a fair bit of history in games, especially as a debugging technique, but I did not want to use it for rewind, considering it too fragile and annoying, and probably too expensive and complicated (you would have had to store world state anyway, to have something nearby to delta from so that you don't start from the beginning of time every frame, so now you have TWO systems: world state recording and event recording. Better to stick with one.)

<comment><USER19> Can you elaborate on the distinction between world state and events? As in, you don't capture user inputs but rather track all object positions and states at all times? seems very inefficient that way.

Also, big fan! Great work on the new language/compiler livecasts and can't wait for The Witness.

<comment><USER18> Exactly: I record the positions of all objects every frame (and other state variables), not the inputs that generated them.

It is more expensive in terms of the amount of memory required, but it is much less expensive in terms of the amount of CPU required, and CPU was ultimately the biggest problem, so it seems I made the right decisions. Even on a limited-memory console like the Xbox 360 you can rewind most levels for 30-45 minutes before running out of buffer. That is more than anyone ever wants to do as a practical gameplay interaction.

Working on The Witness... it will be done ... someday not too long from now.

<comment><USER20> Did you use deltas a la trie-based immutable data structures, or did you save the entire state every moment? Did you save frame by frame, or did you save ON the event, and then interpolate animations between the two states when reversing?

<comment><USER21> [http://gdcvault.com/play/1012210/The-Implementation-of- Rewin...](http://gdcvault.com/play/1012210/The-Implementation-of-Rewind-in)

</comment></comment></comment></comment></comment></comment><comment><USER22> The writer monad gives you purely functional "printing".

<comment><USER8> I don't think the article really is about printing. He just uses printing as an analogy to point out that you can calculate changes without altering the simulation data during the calculations.

And changing topic, I am not a huge fan of how the Writer forces your code into a monadic style. One of the things I enjoy the most when I program in Ocaml instead of Haskell is being able to put printfs or mutable buffers wherever I want.

<comment><USER23> Writer isn't really about printing. It's about emitting values, to be later collected. That could very easily be state changes.

<comment><USER8> I know. But even then, I kind of like being able to append values to a mutable buffer that is in scope without having to rewrite everything to use monads.

<comment><USER23> _" I know."_

Then I don't understand your earlier comment.

 _" But even then, I kind of like being able to append values to a mutable buffer that is in scope without having to rewrite everything to use monads."_

We can agree to disagree, there.

<comment><USER8> What I was trying to say is that I think there is some virtue in being able to add effects to your program without having to change the syntax you use. Its nice to only have to use List.map and not have two incompatible map and mapM functions.

This is not to say that I don't value extra static safety. I think there is definitely room for languages that track effects without the syntactic weight of monads and monad transformers.

<comment><USER23> Ah, that's the bit I understood, and about which I said we could agree to disagree. To me, that reads like "I want to add new side effects and not document them," but I think coding style comes into play in complicated ways and it's not something I am eager to dig into right here, right now.

What I did not understand was your response of "the article wasn't talking about _actually_ printing" to the suggestion of using Writer, despite your knowing that Writer is not about actually printing, Writer being in fact a good fit for what was described in the article, and the poster having quoted "printing" in the first place.

</comment></comment></comment></comment></comment></comment></comment><comment><USER24> I think there's a good insight here, related to Clojure's atoms and Facebook's Flux.

If you start by making everything in your program 100% immutable and timeless, how do you introduce any kind of time-dependence? A nice clean answer is that there is a global clock, and when it ticks, everything changes.

<comment><USER25> Time dependence is just like an async dependence (like waiting for a mouse click) in that, in a profound sense, a program doesn't "know when it will happen". The only time a program's state changes is with new information, and the clock is just another source of information. (There's no reason why you couldn't specify timeouts in "ticks" and give the user a button that represented a "tick" such that they could advance the program.)

<comment><USER26> Interestingly, I'm building an app in Flux/React that lets you do exactly that.

<comment><USER25> Cool. It's a style I've been working with, too. I'd be interested to check out your work.

</comment></comment></comment></comment><comment><USER27> That's an argument for single-assignment programming, of which functional programming is a subset. There's nothing wrong with named values; it's mutable variables that are the problem.

Both Go and Rust encourage single-assignment programming, with ":=", "let", and automatic type inference for assignments. C++ has had "auto" for years. The trend is towards single-assignment as a programming style. Declaring named values without initializing them is so last-cen.

Single-assignment programming is a bit more powerful than a pure functional style; you can use a value more than once. It's the difference between a tree and a directed acyclic graph. If you have code that does something imperative, talking to the world outside the program, trying to hammer that into a pure functional form is like pounding a screw.

It's also nice to have named variables when reading a program.

       f(g.h(f2(g2(x))))

provides little information about why someone was doing that. When those intermediate results have names, it's somewhat more clear.

<comment><USER28> I assume you've never read anything written by Tony Morris on this matter :) He argues that identifier names are one of the _least_ useful tools in understanding programs: [http://tonymorris.github.io/blog/posts/identifier- names/](http://tonymorris.github.io/blog/posts/identifier-names/) (his tone might be a bit grating, but he knows his subject).

In any case, I'm puzzled... why do you think writing in a pure FP language has anything to do with not naming your variables?

BTW, I'd say the opposite of your initial claim is true: single-assignment is the subset of FP, not viceversa. There's way more to FP than immutability, and in fact there are FP languages which allow (controlled) mutation.

<comment><USER29> Unfortunately "functional" is coming close to being the Next Big Idea, which means it stops meaning anything specific. If you look at unlambda[0] as the kind of Platonic ideal of functional languages you might see what GP is talking about.

It lacks any facility for bindings because any binding is a storage of state. Roughly, since you _can_ refer to every function and value literally, the idea behind unlambda is that you _should_.

(Note that by this way of looking at things, closures are not "functional" at all and are in fact embeddings of imperative mini-languages.) Historically, closures were more or less developed by accident as LISP codified its scoping rules; in that sense their presence isn't particularly indicative of "functional ness"; it's just that using them requires a GC and 40 years ago only functional languages had one.

[0] [http://www.madore.org/~david/programs/unlambda/](http://www.madore.org/~david/programs/unlambda/)

<comment><USER28> I agree there is no widely accepted and formal definition of "functional".

Thanks for the link! I didn't know about Unlambda.

A couple of remarks though: by the author's own admission, Unlambda is not a purely functional language, when using the accepted terminology. The author then goes on to introduce what he acknowledges to be _nonstandard_ terminology, so I'm not sure what this says about closures being functional or not under more mainstream definitions. Furthermore, Unlambda is a _purposefully obfuscated_ language! Not sure how it is relevant for the purpose of my post or the OP's :)

Thanks anyway for the link, it's interesting.

</comment></comment></comment></comment><comment><USER30> Immutability gives you elegant command-query separation, and it's sometimes useful (for example you can use the same function in physics, and in AI to predict where player will be in 5 frames). Of course you pay with performance.

I wonder if keeping a tree of game states in persistent variable (like Clojure datastructures) could help with that.

We could keep the current state as a root of game states tree, AI code will calculate possible future states a few steps ahead (these future states would mostly share memory with parent and sibling states, and if we predict n frames forward AI can start in each frame from states in step t+n-1 and calculate their immediate kids only). This is trivialy parallelizable BTW.

And in each frame game engine would move the tree root to one of the kids depending on player action, culling the previous root and the branches not taken from the tree.

</comment><comment><USER31> I took a stab at solving this problem with a programming language called Radian: [[http://www.radian-lang.org/](http://www.radian-lang.org/)]

It is based on the observation that SSA is functional programming, and there is a well-defined process for transforming imperative code into SSA, so why not reverse the process and develop a functional language with imperative- looking, Python-like syntax?

The goal was to automatically extract parallelism from for-loops, internally converting them into map-reduce processes which could be spread across multiple cores, and that worked out pretty well. In absence of a marketing effort, however, a userbase never developed, and I haven't done any work on the project in a couple of years.

</comment><comment><USER32> I think the simplest way to do stuff like this is to build up an iterated copy of the previous state and once done replace the old state with the new one. Iterating isn't modifying the current state, it's generating the next state from the current one.

</comment><comment><USER33> Interesting premise. However, isn't what the author described is similar to event-sourcing?

</comment><comment><USER34> I think this is roughly how demos (in Quake, et al) are recorded. I think most demos also include the state introduced by RNG if the game involves that. It's interesting to think about that idea with relation to functional programming.

</comment><comment><USER35> I am a great lover of functional programming, so much so as to seek out and find a summer job in Clojure this year, and to have written my own functional Lisp dialect.

Lately though, as I've been weighing engine options for a CRPG project, I have become increasingly skeptical of its applicability or utility to games.

The simple point of the matter is that games are humongous state machines, but even more importantly, humongous state machines that are _performance sensitive_.

The standard approach so far has been to simply deal with this either monadically or atomically, having some big state object that gets passed through each cycle, copied again and again with every frame. This is all well and good when the full extent of your game state is a handful of blocks and a paddle, but stop and think how many, say, console-style RPGs you've seen done in functional languages to completion.

In the Pokemon games, there is a move called Defense Curl, that increases the users defense. Simple enough. Then in the second gen games, it was very silently given another effect: there is a particular attack move whose damage is doubled if the user has previously used Defense Curl in that fight. In the third gen, this was done again for an additional move that, at the time and for three more iterations of the series, was only available to a _single character_.

That is an incredibly specific state detail. And that's just _one_. The entire game is filled with little quirks and mechanical details like that. There are over 600 moves in the game, many with other unique effects, not to mention the 700+ creatures, almost 200 abilities, plus an entire hidden second stat system with the IVs.

Try passing a state object containing all the flags you need to keep track of _that_ 30 or 60 frames a second.

Is it any wonder then that you see so little done with FP languages that isn't just clones of old arcade games? I know of _one_ company working on an A-level game in Haskell. Beyond that, I've seen a couple Quake 3 ports and a whoooole lot of unfinished projects.

I'm just not convinced it's up to the task yet, and the research and theoretical end still seems to focus on trivial toy examples instead of full- scale projects that are on a whole other order of magnitude from Pac-Man. I seriously start to wonder how much of the learning so far and the 'obvious' patterns and solutions that seem to already just be accepted dogma, really have anything to do with real-world games programming in the large.

Maybe Wayward Tide will finally release source and prove me horribly wrong here, or Elm will indeed prove as promising as it looks when extended beyond simple browser toy experiments, but in the meantime I'm veering hard back to commercial, traditional engines instead.

<comment><USER23> _" Try passing a state object containing all the flags you need to keep track of that 30 or 60 frames a second."_

You can structure your data such that you only need to rewrite a portion of it, based on what changed. I couldn't more highly recommend "Purely Functional Data Structures" by Chris Okasaki.

<comment><USER23> Following up on this...

With regards to the Pokemon example given, I can think of two good ways to encode it:

First, simply a bunch of single-bit flags, one per move per competitor. Each turn, for move tracking, we update at most one bit in one of these arrays by copying the array and updating a pointer. We can track 1000+ moves, and only need to copy 128 bytes. You can do thousands of comparable things and still be done in a single frame.

Second, a list of turn information. A move could ask arbitrary questions about the history of the current fight by walking the list. An append-only list trivially has an immutable sublist, and you only need to "pass" a single pointer. Walking the list should be trivially possible well inside a single frame, provided you don't have many thousands of turns in a single fight.

All that leaves aside the fact that you don't actually need to fit your world updates in a single frame render - you can interpolate/extrapolate. This is especially easy in a turn-based game like Pokemon, where it mostly consists of "smoothly progress through the same animation".

</comment></comment></comment><comment><USER36> Isn't the author basically saying, an iterative process (process as in procedure-semantics; like the word is used in SICP) is better than a recursive process?</comment>


Zed Shaw has Left Dropbox - <AUTHOR> http://sheddingbikes.com/posts/1278121913.html <comment><USER3> My dream of having Zed come to an interview where the interviewers all have their feet up on the conference table is this much closer to coming true!

<comment><USER4> Oh that'd be funny as shit. Actually, I've gotten used to it. Seems to be just a damn stupid signifier that you're a start up guy.

<comment><USER5> Congrats on creating a new cultural tradition.

</comment></comment></comment><comment><USER6> Want to do a startup? I'm available

</comment><comment><USER7> If you truly believe in Mongrel2, start your own company. Don't wait for the company that's going to _truly open source it_ , it won't be the way you want it if it's not your company.

<comment><USER8> How would you make a company around a webserver?

<comment><USER9> Phusion is doing pretty OK.

There are still some companies left idling along from a group 10 years ago that sold commercial event-driven webservers / reverse-proxies / caches / load-balancers that were much better than Apache, but are heaps of shit compared to the nginx ecosystem.

</comment></comment></comment><comment><USER10> Sure hope Zed finishes <http://learnpythonthehardway.com/> Such a great primer for pre-programmers.

<comment><USER11> Agree. Just starting to learn pre-programming - unlearning bad habits from school where every year we wrote the same bunch of programs, once in BASIC, Pascal, C etc. The only thing I had liked then was Logo. :)

</comment></comment><comment><USER12> Nice of him to make that clear, unnecessary as that was.

<comment><USER4> Actually, there was an entire thread just right now about it, and if you don't deal with the rumors right away they spread like herpes.

<comment><USER12> I read the thread. What I wrote was unclear though, sorry. What I meant was, it's stupid that you'd have to do that, because people shouldn't be starting rumor mills in the first place.

<comment><USER4> Well, it's stupid but I learned the hard way if you don't shut down people who slander in the tech world then the rumor mongers take it to mean you're weak and the slanderers are right. Sucks, but the alternative is to give folks with no integrity a way to tear you down.

In other words, there really is no higher ground in tech unless you're already rich.

<comment><USER13> We live in a world where PageRank is truth. Whatever shows up higher in Google is assumed to be true.

</comment></comment></comment></comment></comment><comment><USER14> They tried to give him a pager

</comment><comment><USER15> Dumb question time: what does it mean for Mongrel to not be _truly_ open source? And why is it not already?

<comment><USER4> Right now I'm the only guy working on it. I like starting my projects that way since I can lay down the playground for other people and avoid the bikeshedding. Once it gets stable I then write up documentation and start letting interested folks at the code to help me.

</comment></comment><comment><USER16> I think heroku would be a good fit for Zed. Or maybe Railsmachine (if they want to step up the competition)

<comment><USER17> Wow, I completely forgot railsmachine existed.

<comment><USER16> They're doing a great job with their clients... and have a very strong group of sysadmins so if they thought Zed was a good fit he'd surely be able to focus on writing code.

</comment></comment></comment><comment><USER18> And here I was wondering where he had all this time to be doing Mongrel2, play guitar, work at dropbox, blog about shedding bikes, etc.

</comment><comment><USER19> Zed, you totally have to write some great new rants now.

(Not related to Dropbox, not what I'm implying. Just that you should have more free time to write for a while, so we'd love to see the fruits of it.)

<comment><USER3> I wish I could exchange Zed-rants for Yegge-rants.

<comment><USER20> This sounds like the start of another Magic the Gathering type game, only with startups.

<comment><USER21> My "Fury of Naggum" beats your "Song of Stallman"!

(I can't for the heck of it remember who trolled comp.lang.c in the mid- nineties. Same guy, always went on about assembly etc.)

</comment></comment></comment></comment><comment><USER22> >If you got something interesting that doesn't involve me being a _system administrator_

Is it me, or is this a running meme/problem for him?

<comment><USER4> No it's not you, I do get asked to be a sysadmin quite often. I have _no_ idea why. It's not something I'm good at. I did for a short time in college to pay tuition a decade ago. I don't enjoy it. I never apply for it. For some bizarre reason, people ask if I want to be a sysadmin out of the blue. Drives me crazy.

<comment><USER23> It's not that bizarre, you write software mainly used by systems administrators. I used to work with one of the guys who wrote apache, and now work with a guy who wrote most of one of the popular NOSQL engines. And they both work as systems administrators. Not "useradd" systems administrators (although they are technically in that part of the org chart) but more like what Google calls "SREs." Rather than explaining what it is, this guy's google groups post does a better job:

[http://www.sage.org/lists/sage-members- archive/2005/msg02937...](http://www.sage.org/lists/sage-members- archive/2005/msg02937.html)

If they just want you to add user accounts, that's weird. But SRE style jobs are where a lot of guys who write famous open source systems software end up.

from the google groups post: _"Yes, sysadmin skills are essential here, however we also require a very strong skillset in development, automation, high-level systems architecture, networking, statistics and general problem- solving."_

sounds like a description of zed!

<comment><USER3> Google says something like that for every job. From what I know about SREs, the "programming" you do is basically shell scripts to automate sysadmin stuff. Programming, sure, but the most boring type possible.

<comment><USER24> Yeah, SREs don't do all that much hard-core programming, but they need a skill that's almost harder: the ability to quickly evaluate whether a change is likely to bring the system down or otherwise cause reliability problems. SREs get consulted very often by engineers for questions like "Do we have enough capacity to burn 15% more CPU for the next week?" or "Is this change likely to cause an unacceptable risk of serving bad pages to users?" They also do code & design reviews.

In that respect, the job description is pretty accurate. You _do_ need a strong skillset in development, automation, high-level systems architecture, networking, statistics, and problem-solving to perform well as an SRE. You need to be able to think on your feet and evaluate the suggestions that engineers are throwing at you before somebody does something stupid, as well as the ability to figure out how to avoid having problems recur.

<comment><USER25> "SREs don't do all that much hard-core programming"

On the contrary, some of the code I've seen written by SREs has been among the most delicate, finely tuned, and "hard core" (by my definition) I've seen.

<comment><USER26> That's because the odds that a sysadmin is an absolute nut for delicate, finely tuned, hard core code are orders of magnitude larger that the odds for a standard programmer.

It's not required, but that pedantic nature seems to help make a good sysadmin.

</comment></comment></comment></comment></comment></comment></comment><comment><USER27> Zed is hate to be system admin?

</comment><comment><USER28> I heard they tried to make him be a sysadmin.

</comment><comment><USER9> So that's why you never got banned from news.yc — you had immunity :)

</comment><comment><USER29> When are we getting a ZedCam?

I think the world deserves to know when Zed is taking a crap.

<comment><USER20> 1st 6 words: could be considered witty. Words 7 to 19: complete turnaround! Lesson: know when to stop.

</comment></comment><comment><USER30> And that's the problem with Rockstar Programmers. They know they are rockstars, they know that they can get funding for their own product at a moments notice, they know that they can always go on a speaking tour.

You need them, but they don't need you, and they know it. So they walk in and want to do what they want to do, they have no intention of doing the shitty stuff. But work in a company has a lot of shitty stuff to be done.

The problem with Zed is that though he is a good developer, he's also a good writer and probably a good talker. Those last two are important to him, and when people work at companies, they should not be having two big side projects (writing and talking). It distracts from the work.

All the rockstar programmers of the last few years all seemed to have entered CTO roles, have started their own companies, or are important people in very big companies. Very few are still just slugging away at code at small startups.

This story is basically why you should not hire rockstar programmers. Hire normal people who depend on you for their income.

<comment><USER4> First off, you don't know me, so don't presume to know how I am to work with, or what kind of employee I am. In fact, what you wrote here is borderline slander, as you're basically telling people to not hire me. You and everyone else needs to quit that shit because I don't do it to you, and it _does_ have a major impact on my life.

Second, who the hell are you to say I shouldn't have a life outside of your company? This is _not_ a damn salt mine, or a factory. Programmers are hired based on their _visible_ experience. The projects they do and the things they write are now a major deciding factor on whether they get jobs. To then tell someone that all of that stops because you're paying them a piddly little 100k/year compared to your massive ownership in the company is down right abusive.

Third, in the valley the trend of firing people at the drop of a hat because they aren't a "good fit" cuts both ways. If you show no loyalty to your employees then they owe you nothing. Expecting them to stick around and be loyal, but then fire their peers for having a bad day with no warning is completely unfair.

Basically, I think your entire comment smacks of business douchebag who has no concept of worker's rights, fairness, or even basic capitalism.

<comment><USER30> Let me put it this way: You're a talented singer, songwriter, guitarist, and producer. The company needs a person who plays bass. They could hire you as a bassist, but that's not where you belong. You're a rockstar. You belong in the front.

What I'm saying is not slander, it's the opposite. YOU are putting yourself in the wrong spot, because you should not be playing bass when you have all these other talents. You should form your own band and create your own vision.

Imagine you are casting a band and you put Carlos Santana as the guitarrist of Britney Spears. Sure, he's an excellent guitar player, but that's now where he belongs. He should not play guitar in Britneys band and dabble in experimental rock music, he should be focusing on his own thing.

That's what I mean - many companies simply need a cog. They need some small piece that will keep the machine turning smoothly. They need a pawn - <USER2> though you could stick a queen in there to do the job of the pawn, it's not where it belongs.

And when someone says the queen should not be used as a pawn, the queen should not be arguing that it should be a pawn.

<comment><USER31> I think I get what you're trying to say. But perhaps:

'sorry, that wasn't meant to be an insult - I just think you're better suited to running your own show'

would be a better way to put it.</comment></comment></comment></comment>


Is timeless UI design a thing? - <AUTHOR> https://www.imaginarycloud.com/blog/timeless-classic-ui-design/amp <comment><USER2> Here's the inspiration for that article: [http://www.aisleone.net/](http://www.aisleone.net/)

A very good and reknown site about the international style.

Apart from the Swiss stuff, or the beginnings at the Bauhaus most people know about, the Ulm school of design is interesting for the holistic approach to design.

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

My personal feeling is that we're already leaving the reincanation of the international style (when it comes to UI), and are moving "back" into Art Nouveau or Jugendstil, digital with a analog touch (this will be huge with AR I think, because it blends both worlds). AR is the medium where skeumorphism will reinvent itself I think, it's natural and at home in that environment.

<comment><USER3> > AR is the medium where skeumorphism will reinvent itself I think, it's > natural and at home in that environment.

Sure, but after that it will make way once again for more symbolic interfaces with higher information density and more convenient interaction, just like every other pendulum swing since the invention of the computer mouse. A new, unfamiliar medium needs to borrow from established interfaces until it develops its own conventions, and skeumorphism is probably the easiest approach for this phase.

<comment><USER4> > A new, unfamiliar medium needs to borrow from established interfaces until > it develops its own conventions, and skeumorphism is probably the easiest > approach for this phase.

That's a really interesting point, and makes for a good general explanation of design trends over time. Did you come up with it yourself?

<comment><USER5> That's the general concept of skeumorphism

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

</comment></comment></comment></comment><comment><USER6> When the Panama Canal was nearing completion, there was talk of adding decoration, and a group of artists and sculptors was sent to look at the locks. They came back with a report. The entire project had been designed to be purely functional with no attention to decoration. Adding any decoration would be superfluous and would make it look worse. So, no stone lions or fluted columns or brass eagles or obelisks. Just the huge masses of poured concrete and steel, and the whitewashed control buildings with tan tile roofs. They still look good after a century of operation.

<comment><USER7> I would have gone the other direction and tried to hide it like a power substation behind trees or something landscapish.

I was going to mention the water pumping station that looks like a house but the canal would need a really big house.

[https://sploid.gizmodo.com/this-normal-looking-house-is- fake...](https://sploid.gizmodo.com/this-normal-looking-house-is-fake-and- actually-hides-a-1505479080)

<comment><USER8> In Victorian England, utility buildings had rather elaborate designs. Abbey Mills Pumping Station is one of the most elaborate, but a lot of 19th and early 20th century utility buildings have a lot more style than those built today.

[https://lookup.london/inside-abbey-mills-pumping- station/](https://lookup.london/inside-abbey-mills-pumping-station/)

<comment><USER9> Pumping station in Buenos Aires is pretty too - [https://en.wikipedia.org/wiki/The_Water_Company_Palace](https://en.wikipedia.org/wiki/The_Water_Company_Palace)

</comment></comment></comment></comment><comment><USER10> It's probably been discussed to death, and I apologize if you are rolling your eyes at its mere mention: I really, really like the Solarized colour scheme.

It's now deeply ingrained into my "visual muscle memory" that a terminal without Solarized just looks wrong to me. Even text editors look strange and jarring without those familiar and soothing colours.

It's interesting that the colours in that Swiss Style Color Picker (linked from the article) seem to be taken from a similar visual family of colours (shades? hues? I am not literate in colour's language).

<comment><USER11> I used solarized exclusively for several years in text editors and the terminal. But after some years I couldn't stand looking at those blue-ish hues all day. Nowadays I use gruvbox [1] the text editor (but still stick to solarized in the terminal). Gruvbox really is a nice change with it's orange and brown, warm colors, I cannot recommend it enough.

[1] [https://github.com/morhetz/gruvbox](https://github.com/morhetz/gruvbox)

<comment><USER10> Hey that is really good. I am going to give that a try in Atom and VSCode.

Thank you! May your code be forever clean, and your backups forever valid :)

<comment><USER12> If you get it working in VSCode, do share the config template!

</comment></comment></comment></comment><comment><USER13> There is most certainly timeless user-interface design.

Look at a book from 500 years ago compared to a book today. While the underlying tech is completely changed, the fundamental principles of book-user interaction remain the same.

A lamp in the 1920's had a screw bulb and a switch.

The piano has kept 88 keys and 3 pedals for centuries.

The asdf keyboard layout will never change.

When it comes to website design, we see some standardization happening across the industry for what a website ought to be. I expect the homogenization will continue as websites get measured for business results and find local optima for solving the various problems.

<comment><USER14> You're just as likely to see a keyboard instrument with 25, 37, 49, 61, 73, or 76 keys as you are 88 these days. Pitch and mod wheels are also a staple of certain kinds of keyboard instruments.

Aftertouch adds pressure sensors. The most advanced form of the keyboard interface at the moment would probably be the ROLI seaboard [1].

I do expect that the 88 key piano will be a staple of music for a long, long time, but I'm not sure I would call it's interface timeless seeing as it's still being modified and adapted to this day.

[1] [https://www.sweetwater.com/store/detail/SeaboardG-61-- roli-s...](https://www.sweetwater.com/store/detail/SeaboardG-61--roli- seaboard-grand-stage)

<comment><USER15> And yet, some random composer or musician from 100's of years ago (Say, one F. Chopin or J.S. Bach) transported to today would have absolutely no problem recognizing and using the instrument.

<comment><USER14> That's also true. The interface is in fact much older than the piano, having first been used on harpsichords, clavichords, and (I think) pipe organs. If I'm not mistaken, the black+white keyboard we use today was invented around the 1400's. The piano itself dates back only to the 1700's.

I can see the argument for the keyboard being a timeless UI because it's lasted mostly unchanged for about 600 years now.

I can also see the argument that 600 years isn't _that_ long in the scheme of musical instruments. We've found ancient flutes from at least 30,000 years ago. The lyre, popular in ancient Greece, is not that different from a modern harp. Lutes are thought to have been present in Mesopotamia around 3000 BC.

Site note - I was surprised to learn that Bach lived before the piano became popular and apparently did not endorse the instrument until a few years before his death [1]. He would be familiar with the interface from earlier instruments, though.

[1] [https://en.wikipedia.org/wiki/Piano#Early_fortepiano](https://en.wikipedia.org/wiki/Piano#Early_fortepiano)

<comment><USER15> Bach composed for the Harpsichord as well as the pipe organ and was instrumental (pun intended) in bringing about the modern day piano.

</comment></comment></comment></comment></comment><comment><USER16> Just a rambling note: that kind of light switch used in the article header is the kind of timeless design I dislike. When the light bulb needs to be replaced I can't tell anymore which position is on or off and if I am getting a burn when screwing the replacement in. It's even worse when there are multiple switches for the same light bulb :D.

Funny thing is that the same experience is conveyed through skeuomorphic interfaces more often than not. /rambling_off

<comment><USER17> It is very common to have multiple switches controlling the same light (example: two switchs on both side of the bed controlling a single ceiling light).

The position of an electrical switch is not designed to signal the status of what it controls.

Source: I was an electrician apprentice in my teens.

Edit: wiki ([https://en.m.wikipedia.org/wiki/Multiway_switching](https://en.m.wikipedia.org/wiki/Multiway_switching))

<comment><USER18> > The position of an electrical switch is not designed to signal the status of > what it controls.

Wouldn't the right affordance (at least for multiway switches) be a button, then? Especially with an indicator LED in the that is lit by drawing from line voltage, thus showing whether the completed system is on or off.

<comment><USER19> With that setup you need a central control that the buttons toggle on or off. I imagine that would be more complex than just running a cable from one switch to the next. Not exactly the most user friendly solution, however possibly the cheapest.

<comment><USER18> Not really. I was imagining a toggle switch button—like the kind that goes in and out to express its state, where the "in" state is literally bridging contacts with the back of the button—but without the in/out state being exposed externally, since it's not accurate to the state of the system as a whole. Instead, it would be a spring-loaded toggle where the spring is less compressed when on and more compressed when off, to make the button face remain at the same push-depth either way, while still having an in-out switch behind it. Like the mechanical NumLock key on early keyboards.

So each switch-button _is_ still connected in series; all the LED indicator faces on the switches are powered by line voltage of the circuit; and so, when the circuit is completed, all the switches become lit; and when any switch is toggled, the circuit is broken, and so no LED is then receiving power.

</comment></comment></comment></comment></comment><comment><USER20> UI Design can be timeless in the sense that it becomes the adopted standard for specific usage by a given culture and that this culture by default uses the solution so much that everyone knows it's meaning.

It's however not because of some objective universal criteria but instead that no other solution has been needed which made it worth changing that standard.

Intuition is learned within the confines of the culture that understand the reference.

The desktop metaphor isn't timeless it's just one that society has invested enough time that it becomes shared understanding

In that sense, it's not different than a language where no specific word or sentence or meaning is objective in itself but rather points to something that "everyone" understands.

<comment><USER21> This gets at the crux of it, if you take "timeless" literally:

UI is culture. And what made culture is timeless? The undergraduate discussion group might hit on Shakespeare, the Pyramids, the King James Bible, or Portal II. In the end there's no common ground except that the value of culture itself is context-sensitive.

Anyway, it's all a red herring because "timeless" in this article is misused; the author just means "classic"

<comment><USER22> An ancient Sumerian ledger:

[https://cdn-images-1.medium.com/max/1250/0*7LNb7XKpR6vAdsBH....](https://cdn- images-1.medium.com/max/1250/0*7LNb7XKpR6vAdsBH.png)

A ledger from the 1700s:

[https://recordoffice.files.wordpress.com/2014/12/d2375m-277-...](https://recordoffice.files.wordpress.com/2014/12/d2375m-277-10_0002.jpg)

I think there are some UIs that almost perfectly fit the function; and they are the candidates for timelessness.

<comment><USER23> The ancient Sumerian one looks a bit like Excel.

I think there are some limitation as to how you can lay stuff out and what the human brain is happy with. It's not all culture.

Like with a lot of sites with flashy weird shit I use a reader view extension to make it look like books and pages have looked for centuries. Not so much because its the fashion but it's just clearer that way.

</comment></comment></comment></comment><comment><USER24> > Remember the round cornered buttons? Yeah, I remember too. The only way it's > okay for a designer to use them now is if it's #ironic. So keep it > functional, not decorative. The round corners were never suiting any > purpose.

But you have to choose _some_ shape for them to be; why is square the default/baseline, and round the modification (the one with 'something added')? You could equally well say to, "just use round corners, keep it functional, not decorative—we austere users of the internet don't require any flashy straight-edged ornamentation."

I'm sure someone can give me an argument about how the straight edges make it easier for the eyes to associate aligned items or something like that, but if you're just slightly rounding some rectangles, not using ovals or something, the difference will be negligible.

The problem isn't introducing aesthetic qualities for their own sake—it's only a problem when you _exchange_ something with a concrete purpose because you give higher value to the purely aesthetic thing.

(The quote uses the term 'decorate,' which ordinarily I think is a good choice, since in the case of decorations, you're _adding_ content, which can lead to useless clutter—but! my opening argument here is basically that choosing round over square is _not_ decorative in that sense.)

So, I'm left with the feeling that the quote really just comes down to justifying the newer bandwagon.

<comment><USER25> Because squares are much easier to draw than circles.

<comment><USER26> There's the old story about Steve Jobs and Bill Atkinson where jobs points out rounded corners everywhere: [http://www.folklore.org/StoryView.py?story=Round_Rects_Are_E...](http://www.folklore.org/StoryView.py?story=Round_Rects_Are_Everywhere.txt)

It do wonder how much CPU power, electricity and carbon emissions have gone into rounded corners over the years, only to have square rectangles came back into fashion.

</comment></comment></comment><comment><USER27> My contribution: the Lindy effect applies to design.

The longer something has been considered good design, the longer it is likely to remain good design.

If a design has been good for 100 years, it'll probably be good for another 100 years.

If a design has only been good for a year or two, you should expect that it'll have a much shorter lifespan.

<comment><USER28> Out of curiosity, what are some examples of "100 year" designs?

Bicycles come to mind.

<comment><USER29> Watches

</comment></comment></comment><comment> ainar-g Some examples of what I consider timeless (and good) UI on the internet:

* Hacker News (duh)

* c2 wiki

* Wikipedia (it changes, but thankfully not radically)

I would have added Reddit, but alas. Seeing how they plan to change to that... other thing makes me really sad.

Anything else?

<comment><USER30> Hacker News is a miserable experience on mobile. Even on desktop, the upvote/downvote buttons are needlessly small and give no confirmation; I often find myself clicking "unvote" because I wasn't sure if I upvoted or downvoted.

<comment><USER31> Don't forget how Code snippets require lots of horizontal scrolling on mobile. It's bad but understandable when it's actual code, but it's just aweful when someone is using code formatting to represent a quote.

<comment><USER32> > It's bad but understandable when it's actual code

My 80 column terminal does not need horizontal scrolling on wide code. Why does my browser need it?

</comment></comment></comment></comment><comment><USER33> Regardless of the TIMELESSNESS of UI design matters having THIRTY percent of TEXT emphasized is REALLY quite annoying.

<comment><USER34>
      Also, styling your own thoughts as quotes makes them more convincing and tweetable!

</comment></comment><comment><USER35> I find math-based designs to be really appealing for a timeless logo design

A good example of this is twitters design

[https://designshack.net/articles/graphics/twitters-new- logo-...](https://designshack.net/articles/graphics/twitters-new-logo-the- geometry-and-evolution-of-our-favorite-bird/)

</comment><comment><USER36> The answer given by the article:

> There's no such thing as timeless design, because it's too dependent on its > context, but one can shoot for longevity.

E.g. Obviously, there is no such thing perfectly timeless, as the only universal constant is that things change over time. But one can minimize dependence on current context, and attempt to tap into the slower changing, more fundamental aspects of today's world. In this respect, the artist shares some similarity with the scientist.

</comment><comment><USER37> To me timeless UI was achieved with Mac OS X Tiger (10.4) and has been eroded with time.

[https://upload.wikimedia.org/wikipedia/fi/7/75/Mac_OS_X_10.4...](https://upload.wikimedia.org/wikipedia/fi/7/75/Mac_OS_X_10.4_Tiger.png)

<comment><USER38> Brushed metal? No thanks.

</comment></comment><comment><USER39> This really needs to be a thing with OS ui.

Changing UI in gnome world, and linux world in general is a real problem. Why can't stuff just stay where I rememeber it is!

Mac OS does quite well in this area, at least compared to windows and linux. It still maintains familiar menus, while the look and feel still looks modern.

<comment> yjftsjthsd-h Although applications changing is still a problem, I quite strongly disagree that Linux desktops are always changing. Unlike NT and Darwin, Linux lets you run whatever desktop environment you want, including all the old ones. I have a co-worker who has been using some offshoot of twm (I forget which) for literally decades with almost no changes.

<comment><USER39> I agree, but the old DEs feel old to use, because well, they're old. Mac still feels modern.

</comment></comment></comment><comment><USER40> The web & almost any gui lacks one important characteristics for timelessness - simply: time.

What we consider timeless in other desogn disciplines are patterns that emerged throughout many centuries of cultural transformation.

Digital UI is not only much much younger, it also enables sheer endless variation of any functional pattern, arbitrary design.

I would argue much of the UX patterns we established so far, be it the button or a slideshow, windows & menus, all these UI conventions are barebone concepts that already are timeless - and when it comes to styling, looks, it's very well possible to design in a way that is already timeless, it's just paint. And some of today's design schools will become timeless in time

</comment><comment><USER41> Please if you ever succeed in any timeless design, please don't make it like the linked article.

It's horrible, it takes like 1/4th of the screen horizontally, with majority of the space taken by the blank spots.

I don't know why people nowadays make everything look awful so it looks "the same" on all devices.

Please don't do that. It makes it more difficult to estimate the length of the text, it's irritating since you need to scroll constantly and it looks bad.

<comment><USER42> The link posted above is an AMP link. Maybe try removing the AMP? It looks like it uses about 2/3 of the browser width that way, much better.

Also, about blank spots: do you mean in between the sections of text? Maybe is an issue with the [goddamn] lazy-load graphics?

<comment><USER41> I mean the page layout. A single very narrow column and a lots of unused space all around it. I have full sized screen, I shouldn't be constrained as if I was on mobile.

EDIT: you are right, it's the AMP version which makes it like that, without /amp it looks like normal web page.

</comment></comment></comment><comment><USER43> It comes down to designing according to a set of principles, rather than fads. Then, you use the best available tools to align as tightly to those principles as possible.

It doesn't have to be boring either. A principle of Wired in the early 90s was to be outrageous and loud. Clashing colors and unreadable type completely aligned with their principles - and it was great.

When new technology comes around, you evolve if it allows you to get closer to your principles.

Look at fashion – as full of fads as anything. Yet there are timeless items: well constructed denim; simple and unadorned. A basic, nicely cut tee-shirt. A simple black dress. Oxfords, Vans. Why are they timeless? Because they align with principles that are unchanging: Simple, honest, functional, versatile, easy to maintain.

And if your fashion principle is to stand out, then yea, each individual item of clothing will not be timeless. But the principle will be.

Same applies to design in any medium.

</comment><comment><USER44> So apply these designs to the principles from the brutalist post the other day and you have a site that looks good and is easy to use.

</comment><comment><USER45> > Remember the round cornered buttons? Yeah, I remember too. The only way it's > okay for a designer to use them now is if it's #ironic.

What am I missing here? The latest guidelines for Material Design and iOS have round corner buttons.

</comment><comment><USER46> This feels like a subset of The Design of Everyday Things with some specific additions for corporate logos, it's unclear to me if the author has read the book or is unfamiliar with it and unintentionally references the first chapter in the conclusion.

</comment><comment><USER47> Have not yet seen a full UI that have not undergone change. But, there are UI elements that have stand the test of time.

The best example I can think of is Letters and Numbers. We have been using them for a long time to communicate and interact with each other.

</comment><comment><USER48> I like rounded corners.

Arguably they serve a purpose; easier on the eyes when you have groups of elements.

</comment><comment><USER49> I am a programmer, and I think I'd like to pivot into design/graphic design/ux/etc. I just want to make pretty stuff. I want to make cool looking stuff. Is there any advice some of you can impart?

<comment><USER50> Don't forget colorblindness. That's an easy one to accidentally end up where they can't distinguish parts of the page from each other.

One of the other devs at work has regularly pointed out issues with our prior designers' work, when he couldn't tell what was what.

</comment></comment><comment><USER51> Is hipster UI design a thing?

<comment><USER52> Is it?

<comment><USER53> Ever used Snapchat?

<comment><USER52> Good point.

</comment></comment></comment></comment><comment><USER54> A clock face is a timeless UI

</comment><comment><USER55> No - every UI becomes stale after years of use. Just ask apple.

</comment><comment><USER56> > The only "intuitive" interface is the nipple. After that it's all learned.

<comment><USER57> This turns out to be wildly inaccurate: my mother's profession -- lactation consultant -- wouldn't exist if humans had an intuition about this.

(80% of her work is in getting positioning right; this is the sort of thing that new mothers used to learn by having lots of public and family examples to follow.)

<comment><USER58> That's about the interface not knowing how to, so to speak, "configure itself"˚; it's not about the user -- the baby -- failing to use the interface.

˚With apologies for the literal objectification.

<comment><USER59> Objectification aside, that seems wrong; while there is obviously instinctive behavior involved (on both sides), both sides also need learned behavior for it to work well; the instinctive component is enough to get to the point where learning has a high enough success rate in the wood that humanity didn't die out from all out idiotic starving to death, but it's not the whole story.</comment></comment></comment></comment>


Experimental Page Layout Inspired By Flipboard - <AUTHOR> http://tympanus.net/Development/FlipboardPageLayout/

<comment><USER2> There are some more interesting demos when you click on "Previous demo" repeatedly.

And if you like this one, don't miss the how-to: [http://tympanus.net/codrops/2012/05/07/experimental-page- lay...](http://tympanus.net/codrops/2012/05/07/experimental-page-layout- inspired-by-flipboard/)

<comment><USER3> codrops... This site is very legit. Thanks for sharing.

 _edit_

Funnily enough, a question about how "legit" this site actually is... Stumbled across one of their demos that was pretty sweet IMO, "Multi-level Photo Map" <http://tympanus.net/Development/MultiLevelPhotoMap/>

So I Googled "Multi-level Photo Map" and came across a handful of other demos set up the same way, with the same header navigation bars all:

\- <http://paulbilodeau.net/photomap.html>

\- [http://www.youthsphere.org/projects/MultiLevelPhotoMap/index...](http://www.youthsphere.org/projects/MultiLevelPhotoMap/index.html)

\- <http://snappermap.daysnapper.com/>

In fact, that last one daysnapper has pretty much all the exact same tutorials and demos set up as codrops.

What's going on here? Is this just some gray layer of blogs that are pooling open sourced UI elements and reposting them for link bait and page view inflation?

<comment><USER4> Thanks for the links. We will take a look. Be sure that we don't copy content of anybody, ever. These are obviously copies of our work which is not necessarily something against our license. Thanks a lot, Pedro

</comment></comment></comment><comment><USER5> Why is everyone trying to turn webpages into things other than webpages? What was wrong with text, links, and scrollbars?

<comment><USER6> That's a good question, I think the reason is that the platform built around viewing web pages is way too flexible and versatile to be dismissed as merely a structured text markup document viewer.

Basically document markup processors are text-driven programs and all programmers know it's just too easy to hook up extra functionality if the behaviour of your program is already defined by a textual input file. Thus <blink>, then JavaScript, and a bit later, WebGL.

The text, links, and scrollbars approach is excellent for presenting information (i.e. text documents with images). Happily, the current capabilities of the platform don't preclude this sort of presentation. Certainly some fraction of genuinely informational sites these days are more like programs than documents but I just think in addition to all old and new text+link documents there's a huge array of mostly non-informational entertainment sites that didn't exist in "web 1.0".

I could live with the old-style hypermedia web, too, but sometimes I just wonder if the printing presses ever thought "Damn, these machines were built to print _books_ and _distribute information_ and now these newcomer publishers are using them to print stupid TV magazines with little if any content."

</comment></comment><comment><USER7> Really cool.

+1 Full landscape, magazine feel is nice.

-1 However I think that the "flip" gesture on non-touch devices is wasted and impractical. Dragging or flipping with a mouse doesn't feel right. Could a flip button be kept for pc users?

</comment><comment><USER8> This may be great on a touch device, but usability suffers massively with a mouse or track pad. The effect looks nice enough, but I am rarely in favor of sacrificing usability for style.

<comment><USER9> When I imagined building a framework like this, it was for a touch desktop device (which seem to be on the horizon).

</comment></comment><comment><USER10> This isn't inspired by it. It is a copy of it.

<comment><USER11> It's great, isn't it?

<comment><USER10> It is a good clone but I was hoping for more :)

</comment></comment></comment><comment><USER12> Interesting layout. It's not a pleasant experience with a trackpad though.

<comment><USER3> Indeed. Would be great with L/R arrow keys.

</comment></comment><comment><USER13> This is one of the better page turning effects I've seen, but I'm not sold on any of them.

On iOS one soon learns that many of the gestures can be performed as tiny taps and flicks, rather than as more exaggerated gestures, a good example being scrolling with a flick, or sliding the on/off toggles with a simple tap. However, the page turning effect here is at its slowest when a simple flick is used to turn the page, and at its fastest when the finger is dragged all the way across the screen to turn a page - this is backwards, and causes me to get annoyed with the gesture very, very quickly. I would expect fatigue to become a problem for serious readers too.

</comment><comment><USER14> I like that a lot. One thing I would say -- on a browser, it's not immediately clear that you can click on an article to expand it. I don't have an iPad, I've never used Flipboard, so I didn't know what to expect. I figured it out pretty fast, but it might be nice to somehow highlight the article that you're about to open on mouse hover (faint blurred light-yellow border, perhaps). Granted, this probably works a lot better on an iPad. But even in a browser it actually looks pretty good.

</comment><comment><USER15> A minor niggle...

I naturally went to click the Flip button looking thing, and nothing happens. I only tried a swipe as it were after reading comments here. I would say, for a non touch screen user, its not intuitive. Works nice once I realised how to use it, but if I had just landed on a site with this setup, I might have clicked a few times, failed and moved on to another site.

Perhaps all thats needed is for |Flip to say Drag, with perhaps an arrow.

</comment><comment><USER16> Doesn't appear to work in Chromium under Xubuntu 12.04, despite the message about it working best in Webkit. Works fine in Firefox though.

</comment><comment><USER17> It may help to use some keyboard shortcuts. I found myself going for the arrow keys to turn pages and the escape button to close stories.

</comment><comment><USER18> Works great for me in Firefox Nightly. Couldn't notice any difference from Chrome, despite the message saying it works best in WebKit.

<comment><USER19> Also works just fine in the current Firefox stable release. The "works best in webkit" tagline makes them look cool, though :)

</comment></comment><comment><USER20> Cool! TurnJs gives more natural looking turn effect <http://www.turnjs.com/>

</comment><comment><USER21> Looks great and works great on the latest iPad. Nice work and I appreciate the attention to detail - shadows, transitions, etc (even if it's cribbed from another application).

To help with usability on a regular PC (as decultured mentioned) I'd recommend a zone for auto-flipping without the drag on a regular mouse-based browser.

</comment><comment><USER22> The page flip is perfect on iPhone but the article scroll felt awkward because the text does not have accelerative scrolling. In other words web you swipe down down quickly it doesn't keep sliding when you pull your finger off, it just stops.

</comment><comment><USER23> "Best viewed in a WebKit browser."

Ah yes, that brings back memories. IE 4.0 was it?

<comment><USER24> Since multiple competing browsers use webkit, no, this doesn't bring back memories of IE 4. Spyglass maybe.

</comment></comment><comment><USER25> Is it practical? Not really.

Do I like it? Hell yes. Thank you for showing me this.

<comment><USER26> yeah, exactly. as a dev i'm just solidly impressed with the experiment. it seems like a fun project someone decided to tackle and did so quite well. what i think most of us want now is for the author to take it to the next level and make it more appropriate for our non-touch devices, but that's not really his responsibility for an experiment.

</comment></comment><comment><USER27> How would one go about wrapping this up to make it an Android and iOS "App"? Would something like this offer a low barrier of entry for magazine sites looking to create companion apps for their content?

</comment><comment><AUTHOR> Try resizing the page.

<comment><USER28> Wow. I would love to read or see a more detailed demo of how that effect is done on the images. Wow, much cooler than I'd hoped for.

<comment><USER29> They're background images in divs measured in percentages.

</comment></comment></comment><comment><USER30> When I "swipe" or click, I don't get anything apart from selecting the text. Ubuntu Chrome 18. Also, wasn't this on HN a few days ago?

</comment><comment><USER31> Usability and accessibility sacrificed for the wow effect. This is typical for skeumorphic UIs.

</comment><comment><USER32> great work, it would be great if left/right and more keyboard shortcuts could be enbaled

</comment><comment><USER33> Why can't I read the text at the bottom? I can't seem to scroll down.

<comment><USER34> Make sure you have clicked on a story before you try to scroll, that got me for quite a while too. There was nothing to tell me to click on stories to read them. I only figured it out because I tried to click on an image and got a story instead...

</comment></comment><comment><USER35> Seems very natural to flip instead scroll to browse content.

<comment><USER36> I prefer paging content. Maybe you do too?

Try scrolling a web page with page/up/down. Or use the space bar (and shift + space.) Flipping is just paging with an animated transition (the transition I personally don't care for.)

</comment></comment><comment><USER37> Looks good. Kudos for trying something new.

</comment><comment><USER38> So is page turning cool again?

</comment><comment><USER39> Isn't this the exact same thing that a lot of people have said flash was ruining the internet with?

<comment><USER38> Flash was just a tool for the ideas not the cause of them. Technology changes but the drive for this sort of functionalty and interaction remains.

I just wonder what the Flash haters are going to do when they realise they now hate JavaScript.

</comment></comment><comment><USER40> Nice. Looks good.

</comment><comment><USER41> Thanks for sharing but it breaks commonly-held navigation conventions.

I know, I know.

</comment><comment><USER42> Implementing old inefficient technological metaphors using new technology is a MAJOR fail.

It's pretty, but utterly useless.</comment>


Online user experience should not be an afterthought... - <AUTHOR> http://cousinwil.posterous.com/user-experience-online-can-no-longer-be-an-af

<comment><USER2> This is something that all brick and mortar businesses need to read. Good stuff.

</comment><comment><USER3> word.</comment>


Windows 8, the post-PC world, and Linux: Microsoft will prevail - <AUTHOR> http://arstechnica.com/information-technology/2012/10/windows-8-the-post-pc-world-and-linux-microsoft-will-prevail/ <comment><USER2> Online: Windows 8 is different! Everyone panic.

(Anecdotal) Reality: Everyone that uses Windows 8 manages to get past the interface changes within the first day of use.</comment>


The first and last wearable you'll need - <AUTHOR> https://www.indiegogo.com/projects/hiris-the-first-wearable-computer-for-everyone#home

<comment><AUTHOR> The most advanced wearable in the world - use multiple applications and control with simple gestures..what do you guys think?</comment>


No pardon for Edward Snowden - <AUTHOR> https://www.washingtonpost.com/opinions/edward-snowden-doesnt-deserve-a-pardon/2016/09/17/ec04d448-7c2e-11e6-ac8e-cf8e0dd91dc7_story.html?utm_term=.67191bd0437c <comment><USER2> Extensive discussion of Greenwald's article critiquing the Post's editorial here:

[https://news.ycombinator.com/item?id=12525616](https://news.ycombinator.com/item?id=12525616)</comment>


Will the Manhattan Project Always Exist? - <AUTHOR> http://www.3quarksdaily.com/3quarksdaily/2009/09/will-the-manhattan-project-always-exist.html <comment><USER2> This is lots of fun to read, because it's good to keep a perspective on history.

That said, it's not at all clear that the next several thousand years will be analogous to the last several thousand. We have a rather different starting point. The key difference is mass production. A society without printing can come close to losing the works of Plato: every copy of Plato cost weeks, months, or years of a laborer's salary to make. [1] So, even at the height of Greek and Roman civilization, there were a limited number of copies of Plato's work. There were also a limited number of educated people who could read those works -- not because people were stupid, but because reading material was sufficiently expensive that it wasn't worthwhile for the majority of people to master its use.

Meanwhile, Plato himself was seen by perhaps only a few thousand people in his lifetime, at most. There were no planes or trains. There were no photographs or recordings. Hence, there weren't a lot of eyewitnesses to spread tales of Plato's genius. Inefficient as they were, the written books did most of that work.

Compare that to the atom bomb. I never got to see one in person, but I've seen them a hundred times in photographs and films. Literally half the people alive today have seen the atom bomb in one way or another. And the stories of those who encountered them directly can be heard by everyone, who then compose stories which _mention_ the bomb, which _themselves_ get mass-produced. There are probably more action figures of Godzilla in existence today than there ever were copies of Plato's works.

\---

[1] I was recently listening to Brad Delong's economic history course from Berkeley, and at one point he tried to explain the value of a book in medieval times. A book was worth the modern equivalent of tens of thousands of dollars -- that was what it cost to assemble the materials and then copy out the writing by hand. A scholar would count himself well-off if he owned two or three personal books.

<comment><USER3> _A book was worth the modern equivalent of tens of thousands of dollars -- that was what it cost to assemble the materials and then copy out the writing by hand. A scholar would count himself well-off if he owned two or three personal books._

Without detracting from your actual point, is that really tens of thousands of dollars' worth? Paper isn't all that hard to make, binding is just a matter of sewing, and copying a book out in longhand is, what, a few man-weeks' worth?

<comment><USER4> You forget that copying a book out in longhand required the services of someone who was literate, which at one point was a rare skill. A few man-weeks of highly educated skilled labor was and is worth tens of thousands of dollars.

<comment><USER2> One interesting implication of this logic is that an ancient society could lower the price of books by achieving a critical mass of literate people. Because a literate person can spawn other literate people, and these literate people can in turn be set to work copying books which the entire community can then read, loaning them back and forth hundreds or thousands of times...

This explains how the ancient scholars managed to get anything done in the first place. It's all about the density. This is why the Library of Alexandria had so much stronger a reputation than the Library of Congress does today: The Library of Congress is great, but since each of the works in it is a _printed_ work with potentially many other extant copies, it's not the same level of unique resource.

Obviously it didn't do you as much good to train a literate person if they then journeyed away to a distance where you could neither lend them your books nor borrow theirs. Not only would that person not contribute to your local library, but they would also be forced to spend a great deal of their precious education time copying out the two or three vital books that would sustain them in their isolation: The Bible, plus maybe one of the classical legal or medical treatises. You tended to end up with the same handful of books distributed over the landscape. Which suggests that the key problem which put the "dark" in the "dark ages" was not some kind of barbarian hatred of learning: It was the collapse of Roman civic society and the spreading of scholars thinly over the landscape. When the central authority with the power to collect taxes from an entire empire, drag those taxes to Rome, and use them to support a sizeable class of co-located educated people collapsed, so did the intellectual standard. Also explains why the centers of higher learning became associated with the Church: The Duke of Normandy could only tax Normandy, but the Church could collect tithes across political boundaries and pool them.

Application of this kind of logic to, say, Wikipedia or the open source movement is left as an exercise for the reader.

</comment></comment></comment></comment><comment><USER5> The article is mixed - some really interesting points, some off-the-mark points. But this is one I've thought a lot about:

> Even Plato barely survived history's guillotine—throughout medieval times, > Plato was unknown in the West, living on only in Muslim countries and in > footnotes to other Greek authors. Had the Muslims been worse stewards, or > been conquered by marauding Christians who needed kindling or toilet paper, > Socrates would have died in vain.

I wonder how many other exceptional Antiquity works we don't have? How many other masterpieces were made and destroyed due to the Dark Ages/Burning of Baghdad mix?

I've got this as one of the top 10 worst moments in human history, right up there with the Holocaust:

[http://en.wikipedia.org/wiki/Battle_of_Baghdad_(1258)#Destru...](http://en.wikipedia.org/wiki/Battle_of_Baghdad_\(1258\)#Destruction_of_Baghdad)

In addition to the lost of life, cruelties, and destruction, we lost a lot of works that would've tremendously benefited humanity:

<http://en.wikipedia.org/wiki/House_of_Wisdom>

So I wonder what else we don't have copies of? I'm marveled when I go through modern versions of some of the ancient works at how good they were. Antiquity Greece and Rome, and the Islamic Golden Age produced some really incredible science, philosophy, engineering, and literature. Sometimes I muse, wondering what other knowledge did they produce that we have no more records of?

<comment><USER2> _I wonder how many other exceptional Antiquity works we don't have?_

Well, as my music history lecturer pointed out, we've lost just about one hundred percent of ancient Greek and Roman music. There's not enough left to fill half an hour.

Given that the Greeks and Romans left behind a lot of fascinating _writing_ about music, and that the music was apparently a central part of ancient Greek drama, this is a really big loss.

<comment><USER6> Well Greek and Roman cultures exemplified plays and indeed still have some of the most revered plays to date, likely second only to Shakespeare. We also know that there was music played to accompany them, and I have little doubt that they would have understood the use of music to make the play.

Yet just like a silent film without a pianist, we'll never have a complete understanding of what was intended by the Greek and Roman play writes.

Anyone watched Psycho without music? It's crap.

</comment></comment></comment><comment><USER7> One doesn't have to be a strong Singulatarian to recognize that projecting 4000 years into the future is not the best idea. There is a non-trivial probability that sophonts of the future will perfectly well believe that Man had the atomic bomb in 1950, what with that being a standard part of the ambient personality/memory matrix available for free for all pet paleohumans, post-human-based personality megaliths, retro-humans, poingtarees, and all others of sophont class H1C except the tridilons.

I know this isn't really meant as a projection into the future, and I suppose I'm just riffing off that point to observe it really isn't the best jump off point for an essay, since it distracts you with a lot of other things like the temptation to observe how this is the worst time in the history of Man to try to predict the future.

</comment><comment><USER8> I think it is highly likely that the Catholic Church will have institutional memory of nuclear weapons in 3000 AD if for no other reason than "Our theologians spent a lot of time in the mid twentieth century writing on this subject. We're obsessive compulsive about recording things, had large amounts of resources to devote to it, and keep dead languages on life-support singlehandedly _for millennia_ just because we have interesting things written in them."

Incidentally, anyone interested in the intersection of science fiction, Catholicism, and the Church functioning as external storage for the memory of the human race should read a Canticle for Leibowitz.

<comment><USER9> _"..anyone interested in the intersection of science fiction, Catholicism, and the Church functioning as external storage for the memory of the human race.."_

Another recommendation: the Coalescent-Exultant-Transcendant trilogy by Stephen Baxter.

</comment></comment><comment><USER10> An intriguing line of thought. I think, however, the number of references to historical events is much greater now than in the past. There are 1.3M results for "nuclear bomb" on Google; 120M for "nuclear". More are being added daily. Ones that die off are being replaced.

<comment><USER11> But who is to say what those 1.3M results will mean for future readers? The article's point is that "future history" may choose to interpret the Manhattan Project as some kind of myth.

There's stuff in antiquity that is mentioned a lot, yet we're not sure if it had any historical basis: Atlantis, the Great Flood, King Arthur, Prester John, etc. We're not sure if Archimedes ever built his heat ray, or if the formula for Greek fire ever contained anything special. We only just recently discovered that the Persians inadvertently used _carbon nanorods_ to create Damascus steel, and we're still not totally sure how they did it.

(Also, there is a lot of garbage on the Internet. For some unknowable reason, "moon landing" gives 3.6M results on Google, while "moon landing hoax" gives 3.9M results...)

<comment><USER12> "(Also, there is a lot of garbage on the Internet. For some unknowable reason, "moon landing" gives 3.6M results on Google, while "moon landing hoax" gives 3.9M results...)"

I think that's because Google includes pages that have any of the keywords you supply, unless you tell it to do differently. Some examples:

<http://google.com/search?q=moon+landing+hoax> : about 3,190,000

<http://google.com/search?q=moon+landing> : about 3,030,000

<http://google.com/search?q=%2Bmoon+%2Blanding+%2Bhoax> : about 297,000

<http://google.com/search?q=%2Bmoon+%2Blanding> : about 3,010,000

So there aren't more pages about the moon landing hoax than there are about the moon landing, there are just more pages that say the words moon OR landing OR hoax.

Regardless of this example your point stands, there's a lot of garbage on the internet :)</comment></comment></comment>


Show HN: Bania.io – Calendar heatmap via email checkins - <AUTHOR> http://www.bania.io/

<comment><AUTHOR> I was inspired by another Show HN post a few days ago: [http://www.statlogger.com](http://www.statlogger.com). I created Bania.io so I could checkin after certain events I wanted to track. The heatmap is much like Github since I was addicted to not breaking the chain on it for a while.

</comment><comment><USER2> Try it out button is not working. Using firefox 31 on Win8.1</comment>


Amazon Prime To Cost $99 A Year - <AUTHOR> http://techcrunch.com/2014/03/13/amazon-prime-to-cost-99-a-year/ <comment><USER2> For a heavy amazon user such as myself, not much difference. Still very happy to continue using amazon. The math is simple. We probably have 5-10 shipments on average a month coming in. Most of it is for our kids (newborn/1 year) and includes subscriptions for milk, diapers etc. Just recently, my wife added another subscription for stuff like toilet paper, napkins. Without amazon prime, you might end up paying $3-5 on average. So that's almost $30-50 _per month_. So over a year, you might pay almost $500 in shipping if you use amazon like we do. So really a no-brainer. Not to mention the _super fast_ shipping (many times next day) and hassle free returns for the most part.

I hate driving to a store just to buy household items that require no brain or thought process. Actually wait, I lied. I have even bought my TV, computer desk on amazon recently. So our visit to the "stores" is now pretty much limited to grocery. If I could, would buy everything online. Thanks Amazon Prime, you have a long term member. Please continue to do the great things that you do. Really waiting for the amazon grocery delivery service /fanboy

EDIT: I got curious and checked my last 6 months order history [0]. We had 73 orders in just last 6 months. For entire 2013, we had 85 orders.

[0] [http://imgur.com/5IvQtQG](http://imgur.com/5IvQtQG)

<comment><USER3> I'm considering whether it's worth it. I thought that, for orders over $25, shipping was free anyway. With the amount of ordering you do, wouldn't there be little advantage to having Prime, especially if you tried to aggregate your items?

<comment><USER4> Just as a side note, the over $25 shipping is the slowest they can find. So if it is all books, it is media mail (which is _really_ slow), and otherwise it is whatever the slowest that UPS does (3-5 days), vs two day shipping on everything.

<comment><USER5> And if the slowest they can find is not slow enough, they will insert a delay.

It used to be that when you ordered something with free shipping, they shipped it fairly quickly, so how long it took you to get it mostly depended on the speed of the carrier. I would often get free shipped items in one or two days if they came from the Amazon warehouse in my city.

Then they changed that. If I ordered something with free shipping that was going to ship from the warehouse in my city, they would wait several days before shipping it, and then the carrier would deliver it in one or two days, just ensuring that the item would not arrive earlier than the advertised arrival window.

</comment></comment></comment></comment><comment><USER6> While I would always wish to pay less for something, this is fine with me. Prime is still such an amazing value for me, and Amazon has created so much good will with me by being so awesome for so long that my reaction to this was basically to shrug and say "what took so long?"

<comment><USER7> Agreed. And, they haven't raised the prices in years.

<comment><USER8> Yeah, I checked the BLS site about the inflation from 2005-2014 and they are just about on track to follow inflation. And if you consider they didn't adjust in that entire period then the slight amount over inflation is warranted (IMHO).

[http://data.bls.gov/cgi- bin/cpicalc.pl?cost1=80&year1=2005&y...](http://data.bls.gov/cgi- bin/cpicalc.pl?cost1=80&year1=2005&year2=2014)

</comment></comment></comment><comment><USER9> The value proposition for Amazon Prime has sunk quite a bit in the last year. More and more products have multiple listings: one that's not Prime eligible, and one that is Prime eligible but costs more. So, that two day free shipping isn't free. Plus, living in NYC, a large percentage of the two day free shipping items just get sent USPS anyway, so I'm not getting anything extra.

Amazon's Prime video service is similarly less of a value than it should be. Unlike competing services like Hulu and Netflix, you can't watch Amazon Prime videos on your Android phone or tablet (who cares, it's just the #1 mobile OS, right?). Amazon's logic is to force you to use their proprietary tablets that are based on Android but don't support Google's app store or Google's services, meaning that a whole array of Android apps aren't compatible, including big ones like Google Chrome and Firefox.

I'm ditching Amazon Prime at the end of my term in two months as a result.

<comment><USER10> I've watched prime videos on my asus tablet just by using a browser. Seems to work fine.

<comment><USER9> They work to varying degrees within the mobile browser. But the app, which does a better job of displaying and caching the video as you play resulting in a better image, is only available for iOS and Amazon's gimped Android tablets.

</comment></comment></comment><comment><USER11> While I don't mind the Prime price-hike, I've begun noticing that Amazon's prices are also increasing quite-dramatically. Cereal that used to cost $10 now costs over $18. Dog biscuits used to cost $11 are now over $22. Yet if you compare Amazon's prices to Walmart, you can get these items close to Amazon's old prices with $5 shipping (or free shipping over $50). I know there's been considerable discussion about Amazon being able to "flip the switch" on profitability, and maybe this is what we're seeing ... but even if many consumers are trained to just "go to Amazon" for their shopping needs, if prices rise by 100%, they're likely to seek discounts from competitors. I definitely have.

<comment><USER12> Same here, and without the carrot of "free shipping" it is much easier to just place an order elsewhere now.

</comment></comment><comment><USER13> I'm surprised they did not change the cost to $97 so that the cost would still be a prime number.

</comment><comment><USER14> Prime could cost $199 and I still wouldn't have to think before subscribing.

<comment><USER15> Pretty much same here and from what I hear, others feel the same.

</comment></comment><comment><USER16> In Italy Prime costs just 9,99€. That's just a little more than a single shipment. [http://www.amazon.it/gp/prime](http://www.amazon.it/gp/prime)

<comment><USER17> Wow, that's great. In France and Germany it's 49€

<comment><USER18> In Germany it used to be less and was only just increased - due to the addition of the media services (Prime Instant Video or whatever it is called).

I'd guess that Italy doesn't offer access to that so far, so the price difference isn't thaaaaat big.

</comment></comment></comment><comment><USER19> I can't understand the idea of paying for shipping (whether it's annual or per-shipment) when there's an option to get it for free. If I decided I couldn't wait a few extra days to get the things I order, I feel I'd be crossing a line of giving in too much to consumerism. Taking away impulse buying is one of the better things about shopping online.

And the streaming services combined don't match what I get with cable, so I found Prime hard to justify at the previous price point.

<comment><USER20> _If I decided I couldn 't wait a few extra days to get the things I order, I feel I'd be crossing a line of giving in too much to consumerism._

What about when, you know, you need something urgently? Last time I took a long trip I ordered a backup battery for my cellphone three days before I left. It was either use Amazon Prime or go to a store and pay twice as much.

<comment><USER8> This is one reason I love Prime. I frequently find myself ordering something I need for a trip at the last minute.

Another instance was when our son needed to move from the carrier to a real car seat. We ordered the new one late one night. The next day before noon it was on our doorstep. And that was the 2-day shipping option.

</comment></comment></comment><comment><USER21> The quality of this service is hit and miss. Sometimes they use a reliable carrier like UPS, other times they send things via USPS so they can be stolen. With this price increase, and their inability (I've asked multiple times) to determine what carrier they will ship with and ship with a reliable carrier, this has become a liability now that I wish I had not renewed. It's amazing to me that Amazon would ship anything of value with such an unreliable carrier as USPS.

<comment><USER8> I would dispute the unreliability of the USPS based on my own anecdotal evidence. (FedEx/UPS was always iffy based on the driver)

But, assuming USPS is totally unreliable and packages go missing a lot, have you ever had Amazon NOT either refund or replace the item?

I ask because I 'received' a package via UPS with a GoPro and when I got home it was not there. I reported to Amazon and they shipped one out overnight to replace the missing item. That's just one of multiple instances of Amazon having an amazing policy regarding shipping and returns.

<comment><USER21> No, Amazon has been great about refunding packages so far. Of course, the packages stolen or opened by USPS in the last couple of weeks don't cost a lot. I doubt they would be this gracious with say a Macbook or other high price item, regardless of what their policy might be. USPS steals and opens packages. Period. This has been the case for decades. They also do not respond to any complaints.

<comment><USER8> Do you have any facts to back up that allegation or is it just you opinion?

I've only lost a few package via USPS in my entire life and none of them recently.

I find myself far more likely to lose a package via UPS or FedEx.

<comment><USER21> My (and others') packages being stolen is not my opinion--it is a verifiable fact.

</comment></comment></comment></comment></comment><comment><USER22> The settings page to opt out of Amazon Prime is disabled.

</comment><comment><USER23> In the UK, Amazon have just raised the cost of Prime from £49 to £79, and bundled in their (failing?) LoveFilm movie streaming service to excuse it.

A lot of people I know (including me) are cancelling as a result - not due to the cost, but more the brazenness of it.

<comment><USER24> Probably not actually a lot of people. Most likely most people will continue their subscriptions. And if you haven't cancelled already, I'd be surprised if you actually did, even with what you said. It's just human nature. You'll put it off. You'll forget about your rage daycamping. And 6 months from now, when you accidentally look at your credit card statement, you'll say to yourself "I really should cancel Prime" and go back to playing Flappy Bird instead.

</comment></comment><comment><USER25> Most of the conversation here seems to be around shipping costs and speed. But there are a number of other perks to Prime. Here are the ones that I use:

* Streaming video: not all the stuff I want to watch is on Prime, but when it is, it saves me a few bucks

* Lending library: ditto, for books. If I care deeply about permanently owning a book, I'll buy the physical copy.

* Kindle First (get a free book every month one month before its release): the books are not exactly destined to be timeless classics, but free reading material is nice and it helps me discover new authors

Any other important Prime perks I'm missing? The shipping plus the above go a long way toward justifying the cost, to me at least.

</comment><comment><USER26> Still worth it to me. The quick free shipping is great and the streaming educational kid's tv is a godsend. Plus for a family there are considerably more packages coming down (tools, toys, etc.).

Seems like they crunched the numbers and realized that if $79 was worthwhile, $99 would be too. Those who wouldn't find $99 worthwhile probably wouldn't be using it anyway.

Still do think customers should be grandfathered when at all possible.

</comment><comment><USER27> My activity has dropped on amazon significantly in the last 1year. The prices on amazon.com have gone up, I always find something cheaper else where online including shipping. And now this, just cancelled my subscription.

</comment><comment><USER28> This makes Newegg even more attractive with their $50 a year premier plan. If you mostly buy computers or electronics (which I assume most of HN readers do).

<comment><USER29> Prime these days is less about fast shipping and more about the bundled streaming/media services.

<comment><USER30> Amazon's streaming video is useless to me. It doesn't work on any of my devices (android, linux, or chromecast), while Netflix does.

I made 2 online movie rentals within the past few weeks, and both times I checked amazon, but then remembered that it doesn't work on my devices, and ended up getting it from Google Play. They're missing out on purchases, and getting people used to using other services - not a great way to set yourself up for the future...

<comment><USER31> Yeah, I can't quite figure that out. Is their kindle business really so valuable that they are willing to cannibalize their media services?

Just doesn't seem to make sense to race for device adoption in a world where everybody else seems to be racing for broader platform adoption.

I guess I've never been all that impressed with their offering in this area though, especially video, so maybe they're simply recognizing that it isn't as valuable.</comment></comment></comment></comment>


Make your users happy, use the BackupManager - <AUTHOR> http://luciofm.wordpress.com/2011/08/05/make-your-users-happy-use-the-backupmanager/

<comment><USER2> Awesome.</comment>