Google Cloud Vision API enters Beta - <AUTHOR> http://googlecloudplatform.blogspot.com/2016/02/Google-Cloud-Vision-API-enters-beta-open-to-all-to-try.html <comment><USER2> Disclosure: I am an evangelist for the Watson Developer Cloud suite of services at IBM.

The new wave of vision services are amazing. There are a lot of players in this field, including IBM Watson, which has a suite of vision APIs available with similar features.

One key differentiator of the Watson offering is that we have a _trainable_ API called Visual Recognition [2]. The pre-trained APIs are excellent and have broad uses, but it's amazing to see the results from even basic training to identify image tags directly relevant to your use case. There is a demo [3] that allows you to try it out by creating a new classifier right in the web page.

You can find some demos at:

[http://vision.alchemy.ai/#demo](http://vision.alchemy.ai/#demo) \- example images that demonstrate facial detection and identification, label extraction, object identification, and so on.

Another demo at [http://visual-insights-demo.mybluemix.net/](http://visual- insights-demo.mybluemix.net/) uses the Visual Insights [1] API to identify a set of relevant tags.

[1]: [https://www.ibm.com/smarterplanet/us/en/ibmwatson/developerc...](https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/visual- insights.html)

[2]: [https://www.ibm.com/smarterplanet/us/en/ibmwatson/developerc...](https://www.ibm.com/smarterplanet/us/en/ibmwatson/developercloud/visual- recognition.html)

[3]: [https://visual-recognition-demo.mybluemix.net/](https://visual- recognition-demo.mybluemix.net/)

<comment><USER3> Do you have pricing information available anywhere? All I can see is [1] but that's not really interesting. Compare with [2] which makes it quite easy to guess how much I'd pay.

[1] [http://www.alchemyapi.com/products/contact- sales](http://www.alchemyapi.com/products/contact-sales)

[2] [https://cloud.google.com/vision/pricing](https://cloud.google.com/vision/pricing)

<comment><USER4> Hi Teh, I'm a IBM Watson Developer Evangelist. The pricing is available here when you click on Standard plan: [https://console.ng.bluemix.net/catalog/alchemy_api/](https://console.ng.bluemix.net/catalog/alchemy_api/)

<comment><USER5> You make it too inconvenient to get started as compared to the others, its about convenience and simplicity for on boarding people.

<comment><USER4> Hi Philip, can you drop me a mail at yrezgui [at] uk.ibm.com, I would be happy to have a chat with you :)

</comment></comment></comment></comment></comment><comment><USER6> I've been using this since the private beta to enrich my eCommerce crawlers with product identifiers not found on the content of an eCommerce product page, but found in the product image itself. Imagine a part number or UPC displayed on a product box, but nowhere in the HTML content of the product page. Using the Google CV OCR feature I can extract meaningful product data from an image to compliment my existing crawl data. It works great.

<comment><USER7> Out of curiosity, why are there _so many_ people crawling sites for prices like what you're talking about?

All of the freelance sites are... well, crawling with jobs involving web scrapers. What's the business here that I'm missing?

<comment><USER6> I'm not crawling for price. Knowing where our products are being sold online is important to understand the landscape for a large manufacture. Understanding opportunities to develop sales relationships we may or may not have directly, and knowing category expansion opportunity is also important.

</comment></comment></comment><comment><USER8> I feel like this is some really compelling tech. It would be so amazing to build stuff with this in mind. I wouldn't be comfortable doing it, though. This sort of API is available only until Google decide that they don't want it to be available. There's not really anything close to equivalent that you could drop in to replace it if it were being shut down, the price were being hiked, or you had some sort of other issue with it.

I'm not trying to pick on Google for shutting things down; I would feel similarly if this API were from Microsoft or Facebook. It's not the first time there's been an API that I think is really cool, but was very apprehensive about actually using for anything serious.

<comment><USER9> TensorFlow + TensorFlow Serving + Google ReCeption model plus optionally a SVN on ReCeption features for your custom detection. All that code and the pretrained model is Open Source. There's some engineering to glue it together and some extra work for the easier, non-image classification parts.

There is also [http://www.deepdetect.com](http://www.deepdetect.com)

<comment><USER10> can you provide some links ?

<comment><USER9> TensorFlow: [https://www.tensorflow.org/](https://www.tensorflow.org/)

TensorFlow Serving: [https://github.com/tensorflow/serving](https://github.com/tensorflow/serving)

ReCeption (actually they call in Inception v3. Not sure where I got the ReCeption name - though I'm sure I read it somewhere?): [https://www.tensorflow.org/versions/r0.7/tutorials/image_rec...](https://www.tensorflow.org/versions/r0.7/tutorials/image_recognition/index.html)

Using a SVN on neural network extracted features: [http://blog.christianperone.com/2015/08/convolutional- neural...](http://blog.christianperone.com/2015/08/convolutional-neural- networks-and-feature-extraction-with-python/)

If you want a quick and dirty version here's some Python to create a web service that calls a Caffe based Image recognizer: [https://gist.github.com/nlothian/c3519adb81b3452c1938](https://gist.github.com/nlothian/c3519adb81b3452c1938)

<comment><USER10> thanks!

</comment></comment></comment></comment></comment><comment><USER11> I was looking into label detection APIs (and Google's offerings as well) for a silly game/website I was thinking of writing, but $5 per 1000 images is way too steep, especially if each user is submitting 1-5 images per interaction with the website. The $2 per 1000 images price they mention on the blog post is only if you're doing 5+ million images a month.

I played with IBM Watson visual recognition API and it didn't look like it did what I needed it to (recognize a hand drawn image of a cat for example -- it just kept labeling it only as a 'cartoon').

Bummer. At least the first 1000 images are free so I can prototype it out of curiosity.

<comment><USER12> Agreed, this is an exciting api but the pricing puts it out of reach for a lot of applications

<comment><USER13> I'd like to preface this with the fact that I have next to zero experience about the topic of pricing/charging for such service's, so what I say might sound naïve, but…

Is it really _that_ expensive, though? I mean I can see it being expensive if you use it inside a product you offer for free, but if it's a commercial product, I imagine the pricing isn't that much especially if you consider that using your own infrastructure for this type of machine learning and image scanning would be much much more expensive.

<comment><USER12> Once the networks are trained it's probably very cheap to run the service.

But I guess that's my point, the pricing puts it out of reach of free or cheaper subscription products. Even the robot example they give in the video to achieve that functionality it would have to be taking a picture every couple of seconds or so and uploading them to the cloud - at that rate it would cost almost $5 for 15mins of use!

</comment></comment></comment></comment><comment><USER14> I couldn't find a specific legal SLA for this new service. Does anyone know if:

1) by using the service you grant Google use of the uploaded images. (e.g. they can use your image to increase their corpus, improve the service or use it for advertising, or use it to extract street numbers for their maps, or its always private and never stored)

2) What the resulting copyright is of the returned data. If you were to build a database based on the results, what license or copyright status this would be. Would all rights belong to me, or would Google claim rights over the results.

<comment><USER15> If there's no service specific T&Cs for this, it falls under their general cloud T&Cs: [https://cloud.google.com/terms/](https://cloud.google.com/terms/). s.5:

> 5.1 Intellectual Property Rights. Except as expressly set forth in this > Agreement, this Agreement does not grant either party any rights, implied or > otherwise, to the other's content or any of the other's intellectual > property. As between the parties, Customer owns all Intellectual Property > Rights in Customer Data and the Application or Project (if applicable), and > Google owns all Intellectual Property Rights in the Services and Software.

> 5.2 Use of Customer Data. Google will not access or use Customer Data, > except as necessary to provide the Services to Customer.

<comment><USER14> Thanks! I also note that the API pages each state "This is a Beta release of Google Cloud Vision. This API is not covered by any SLA"

<comment><USER16> SLA is not the same as T&C. No SLA means there is no uptime guarantee.

</comment></comment></comment></comment><comment><USER17> If the OCR is good then they're totally burying the lede, it's pricing is 100x cheaper than commercial OCR APIs.

It's potentially a game changer, plenty of industries have piles of scanned documents. Cheap OCR means this data suddenly becomes accessible even if the value per individual document is low (i.e. for input into machine learning).

<comment><USER18> Paper from a few years ago comparing Google's OCR system to commercially available benchmarks:

[http://www.educatingsilicon.com/wp- content/uploads/2013/10/p...](http://www.educatingsilicon.com/wp- content/uploads/2013/10/photoocr_iccv_paper.pdf)

A lot better for text in photographs. Comparison might be different on dense document text though.

</comment></comment><comment><USER8> I don't know for certain, but I suspect that Google utilized images from the web in training this system. Even if they didn't, suppose they had. I think this can raise an interesting question around copyright.

In training an AI system with hundreds/thousands of bits of data, no single piece of training data makes much of a difference. If one of my images on the web that I had captioned with the keyword 'dog' was used to train this system about what a dog looks like, is the model they end up with a derivative work of my captioned image? Yes, but my data would make up an infinitesimally small part of that model. Yet, in aggregate, the trained model might almost wholly rely on lots of copyrighted, rights-reserved images.

Would the resulting model be a copyright infringement? It would seem as though no rights owner would have a substantial enough claim. Yet, without all of the copyrighted works, perhaps the model would be ineffective.

<comment><USER19> By using this API, we're effectively training Google's system to be more and more accurate. Shouldn't Google pay us for using it? Just saying :-)

<comment><USER20> Not quite. The terms and conditions say that you own the IP and that it isn't used beyond providing the immediate service, meaning they aren't using it to train future models.

Besides, it's a call without any feedback, so it's not that valuable as far as training goes.

</comment></comment></comment><comment><USER21> I would definitely pay for a WordPress plugin that uses this as I manually tag photos on my site with a lot of standard things this could probably just knock out in a flash.

<comment><USER22> Hi, noticed your comment and just wanted to let you know that, during the alpha testing phase, I actually made this. It's somewhat rough and unreleased now, but I am wondering what you would expect from such a plugin. Could you answer some of these questions?

\- Would you primarily use the plugin to auto-tag uploads in the admin area? \- Would you have problems with getting your own Google API key (and thus billing via Google), or would you expect the plugin to take care of this as well? \- Any other expectations?

As said, what I have now is not really release-worthy, but I can get it to that point in a matter of days.

Thanks.

\- Aron

</comment></comment><comment><USER23> Just tried a couple of images with digits to test out the OCR w/ the TEXT_DETECTION setting, unfortunately it assumes what it reads is a defined language with words. I am looking into using this for digit-recognition and only digits, but that doesn't seem to be a use case (as it is now). Does anybody know of another service/API that can do reliable digits-only OCR on (not the finest clear quality) images?

<comment><USER24> Weird, their example at [https://github.com/GoogleCloudPlatform/cloud- vision/tree/mas...](https://github.com/GoogleCloudPlatform/cloud- vision/tree/master/python/text) shows digits. Your best bet is probably ABBYY if you want something else.

</comment></comment><comment><USER25> "joyLikelihood:VERY_LIKELY"

While this technology is fascinating, I can't help but feel a little unsettled reading that.

</comment><comment><USER26> Interesting that this is released in source closed, API-only form, rather than the open-code model taken by TensorFlow. I wonder how far you could approximate the model by training a learner on the API responses.

</comment><comment><USER27> Is the best way of sending an image still base64 encoding it in JSON?

<comment><USER28> If 'best' means most compatible with varying types of systems large and small, then yes.

</comment></comment><comment><USER29> Is there any website where can I just upload a pic and see how it works without trying to figure out how to access their API?

<comment><USER30> Try that app ..

[https://play.google.com/store/apps/details?id=com.affectiva....](https://play.google.com/store/apps/details?id=com.affectiva.affdexme&hl=en)

[https://itunes.apple.com/us/app/affdexme/id971529011?mt=8](https://itunes.apple.com/us/app/affdexme/id971529011?mt=8)

</comment></comment><comment><USER31> This is great news. I have been working on a Swift framework for using this API in OSX and iOS ([https://github.com/mgcm/CloudVisionKit](https://github.com/mgcm/CloudVisionKit)) and I was wondering when it (the API) would become available for public use.

<comment><USER32> With the Beta release, it is available for public use.

</comment></comment><comment><USER10> When I hit "go to api console" i get the following: [https://www.dropbox.com/s/xsysabgywa4t5mm/Screenshot%202016-...](https://www.dropbox.com/s/xsysabgywa4t5mm/Screenshot%202016-02-18%2017.09.14.png?dl=0)

</comment><comment><USER33> At Cortex ([http://www.meetcortex.com/](http://www.meetcortex.com/)) we are using this and technology like it to help brands be smarter about marketing content on social media. Really cool stuff.

</comment><comment><USER30> Affectiva offers SDKs for facial expression and emotion analysis from images that work in realtime and offline without having to send images to the cloud.

[http://developer.affectiva.com](http://developer.affectiva.com)

disclamer: I work for them.

</comment><comment><USER34> There is mention of GCV being able to calculate various image properties (dominant colour, being the example) yet there is no reference to what it actually returns in the API docs.

Can someone who has this active shed some light?

</comment><comment><USER35> Google is scary good at releasing scary technology in a friendly box.

</comment><comment><USER36> Anyone tried using the API to solve captchas?

<comment><USER12> "Google Cloud Captcha API"

</comment></comment><comment><USER37> Would it be possible to do product recognition such as brand and model from images without label?

</comment><comment><USER38> Does something like this exist for sound? Any open source projects worth looking at?

<comment><USER39> [http://clarify.io/](http://clarify.io/)

</comment></comment><comment><USER40> Can we find the dimensions of things in a photo using this api?

</comment><comment><USER10> Am I the only one that signed up but cant have access to it ?

</comment><comment><USER41> High price. May be suitable for MVP.

</comment><comment><USER42> [http://xkcd.com/1425/](http://xkcd.com/1425/)

Errata: I'll need a research team and a year and a half.</comment>


Setup Wordpress on DotCloud - <AUTHOR>

Since the old tutorial [1] has not yet been transitioned to the new docs [2], here is what i did:
1. Downloaded Woprdpress and unpacked it into wordpressdirectory.
2. Created dotcloud.yml in the local wordpress directory:

   www:
     type: php
   db:
     type: mysql
 3. Dublicated wp-config-sample.php into wp-config.php and edited it:

   /* ADD THE FOLLOWING LINE */
   $envjson = json_decode(file_get_contents("/home/dotcloud/environment.json"),true);

   /* The name of the database for WordPress */
   define('DB_NAME', 'wordpress');

   /* MySQL database username */
   define('DB_USER', 'myusername');

   /* MySQL database password */
   define('DB_PASSWORD', 'mypassword');

   /* MySQL hostname */
   define('DB_HOST', $envjson['DOTCLOUD_DB_MYSQL_HOST'].':'.$envjson['DOTCLOUD_DB_MYSQL_PORT']);
 4. Assuming i want to call my DotCloud instance wordpress,
   $ dotcloud create wordpress
5. $ cd mywordpressdirectory
6. $ dotcloud push wordpress
7. $ dotcloud info wordpress.db
8. $ dotcloud run wordpress.db -- mysql -u root -p(password from previous input result)
9.

   mysql> CREATE USER 'myusername' IDENTIFIED BY 'mypassword';
   mysql> CREATE DATABASE wordpress;
   mysql> GRANT ALL ON wordpress.* TO 'myusername'@'%';
   mysql> FLUSH PRIVILEGES;
 10. $ dotcloud restart wordpress.www
11. Open the URL of your instance in your browser and proceed like during a normal wordpress install.
Thanks!
[1]: http://olddocs.dotcloud.com/tutorials/wordpress/
[2]: http://docs.dotcloud.com/ <comment><USER2> You left out the part about pointing a real domain at it</comment>


In Search of an Understandable Consensus Algorithm (2014) [pdf] - <AUTHOR> https://raft.github.io/raft.pdf <comment><USER2> John Ousterhout [0], Raft's co-inventor, did a user study (to hammer home the point that _raft_ is easier to understand than _paxos_ ), and those presentations, presumably filmed to explain the two protocols to the users part of the study, are up on YouTube.

Paxos: [https://www.youtube- nocookie.com/embed/JEpsBg0AO6o](https://www.youtube- nocookie.com/embed/JEpsBg0AO6o)

Raft: [https://www.youtube- nocookie.com/embed/YbZ3zDzDnrw](https://www.youtube- nocookie.com/embed/YbZ3zDzDnrw)

Then there's this presentation-animation, too, which I find to be pretty nifty: [http://thesecretlivesofdata.com/raft/](http://thesecretlivesofdata.com/raft/)

[0] [https://web.stanford.edu/~ouster/cgi- bin/home.php](https://web.stanford.edu/~ouster/cgi-bin/home.php)

<comment><USER3> I really enjoyed the presentation.

And yeah wow, Raft is dead simple.

<comment><USER4> Yes, Ben Johnson's ([https://github.com/benbjohnson](https://github.com/benbjohnson)) presentation on Raft is great. He is also the creator of BoltDB ([https://github.com/boltdb/bolt](https://github.com/boltdb/bolt)) which is a core component of Hashiscorp's Raft implementation ([https://github.com/hashicorp/raft](https://github.com/hashicorp/raft)).

<comment><USER5> FWIW, etcd uses a forked version of boltdb with bug fixes and features: [https://github.com/etcd-io/bbolt](https://github.com/etcd-io/bbolt)

</comment></comment></comment></comment><comment><USER6> Raft has spawned a huge ecosystem of consensus libraries across various languages. This has 'democratized' the consensus algorithm and has made it easier to build distributed systems.

Is it perfect? No, as another comment here points out, Raft might not be as fast as some other more complicated Paxos variants but that's okay for most use cases and is much easier to reason about.

To give an example of how powerful this is, I started implementing high availability for an opensource instant search engine I've been working on ([https://github.com/typesense/typesense](https://github.com/typesense/typesense)) and was able to get a basic clustering solution working in just a few days.

Pre-raft this would have taken a few weeks or would have required an external coordinator like Zookeeper. This way, Raft has unlocked so many opportunities.

<comment><USER7> forgive the question, but why did you choose to implement a coordination solution yourself rather than use an off the shelf system like Zookeeper?

<comment><USER6> To reduce deployment complexity. One or the primary goals of Typesense is simplicity. While writing a raft implementation myself would have been tricky, integrating with a consensus library made sense.

</comment></comment></comment><comment><USER8> I'll have to admit that over time I've ended up with mixed feelings about this paper. This is mainly due to people reading this paper without knowing much about consensus and drawing conclusions like "Raft is better than Paxos" or "Raft is the best consensus algorithm" though. Some thoughts (please elaborate if you think I'm simplifying it too much or if you disagree with me!):

First of all remember that Paxos is _a family of protocols_ for solving consensus. When doing research it's useful to reduce a problem into smaller and smaller parts. The "standard" Paxos algorithm is a very simple consensus algorithm which can only decide a single value once. It's not practical at all, but provides a good framework for thinking about consensus.

When this article proposes "Raft vs Paxos" they are _actually_ comparing Raft against a standard way of configuring Paxos with a leader (MultiPaxos). Note that MultiPaxos allows a lot of nuances in the implementations while still being called "MultiPaxos". MultiPaxos is not a spec you implement; it's a set of ideas.

Raft on the other hand is a concrete protocol with well-defined, specified behavior. In fact, Raft is essentially an implementation of MultiPaxos[1]. This is a very good thing! Paxos provides a framework for thinking about consensus, while Raft puts some of these ideas into a concrete specification which is easy to implement. And it is a good point that we should make the knowledge in the field of consensus available for a wider audience. Yay, Raft is good!

And here comes the problem: A lot of people have read the Raft paper and made the conclusion that "Raft is the best way of solving consensus". Raft is (relatively) easy to implement and get started with and gives you a very simple model to program for (a log of commands), but it's far from a panacea.

The most important thing to know about Raft is that it's not performant (every command has to be sent to a single leader which becomes a bottleneck) nor scalable (every command needs to be processed by all nodes). Etcd supports "1000s of writes" and recommends up to "7 nodes".

This doesn't mean that Raft is _bad_ ; it's just a trade-off you need to be aware of. Simplicity vs performance. If you're integrating Raft into your stack and aim for scalability/performance you must always be very weary of when you use it. You should minimize writes at all costs. Unfortunately many developers gets the impression that you can just plug Raft into an existing system and suddenly have a performant and scalable distributed system.

A good example is CockrouchDB: They're using plain Raft for writes, but uses "leader leases" for scaling reads. Suddenly things become a lot more complicated (for instance see this issue about how leader leases are implemented in the Go library for Raft: [https://github.com/hashicorp/raft/issues/108](https://github.com/hashicorp/raft/issues/108)). I'm sorry, but you're going to have to get your hands dirty if you want something that's both fast and correct.

The end result is that you have two choices: (1) You can use a library which provides a simple model (a log of commands), but doesn't scale well or (2) you can use a more complicated consensus algorithm and then deal with all of the Hard Problems™ that comes with it. If you're going for the second option, you might as well take advantage of all of the research discovered in the last few years (see [https://vadosware.io/post/paxosmon-gotta-concensus-them- all/](https://vadosware.io/post/paxosmon-gotta-concensus-them-all/))

It should also be noted that even though the _consensus_ algorithm doesn't scale, it doesn't mean your system can't scale. Scalog ([https://www.usenix.org/system/files/nsdi20-paper- ding.pdf](https://www.usenix.org/system/files/nsdi20-paper-ding.pdf)) is an example of a system which uses a consensus algorithm in a constant way (i.e. regardless of load of the system). Once again: Focus on how you can _avoiding_ using a consensus algorithm due to the way _your_ system works.

TL;DR: Hard problems are still hard. Don't think that Raft is a magical piece of software which solves all of your problems.

[1]: There are some nuances between Raft and "standard" MultiPaxos as mentioned in [https://arxiv.org/abs/2004.05074](https://arxiv.org/abs/2004.05074). I would still consider Raft to be in the same class as MultiPaxos (compared to other solutions of consensus).

<comment><USER5> FWIW, CockroachDB uses and co-maintains etcd/raft not hashicorp/raft.

[https://github.com/etcd-io/etcd/tree/master/raft#raft- librar...](https://github.com/etcd-io/etcd/tree/master/raft#raft-library)

Users:

\- cockroachdb A Scalable, Survivable, Strongly-Consistent SQL Database

\- dgraph A Scalable, Distributed, Low Latency, High Throughput Graph Database

\- etcd A distributed reliable key-value store

\- tikv A Distributed transactional key value database powered by Rust and Raft

\- swarmkit A toolkit for orchestrating distributed systems at any scale.

[https://github.com/etcd-io/etcd/tree/master/raft#notable- use...](https://github.com/etcd-io/etcd/tree/master/raft#notable-users)

Go docs

[https://pkg.go.dev/go.etcd.io/etcd/raft?tab=doc](https://pkg.go.dev/go.etcd.io/etcd/raft?tab=doc)

<comment><USER8> Huh, I wasn't aware of that. Somehow I always thought that hashicorp/raft was used in etcd. Thanks for the correction!

</comment></comment></comment><comment><USER9> Bryan Ford's Threshold Logical Clocks[0] is a great read.

[0] [https://arxiv.org/pdf/1907.07010.pdf](https://arxiv.org/pdf/1907.07010.pdf)

</comment><comment><USER10> A pet peeve I have about this space is that "consensus" is not actually a practically interesting problem. The interesting problem for applications is "atomic broadcast" or "total order broadcast", which is theoretically equivalent to consensus but much closer to the needs of applications. The result has been that many important atomic broadcast algorithms have been ignored while Paxos and Raft steal the spotlight in "distsys" pop culture. Some of these algorithms need only f+1 nodes to tolerate f faults (rather than 2f+1 as with Paxos or Raft), at the cost of requiring an external reconfiguration service (almost certainly Paxos- or Raft-based). Two examples: chain replication (relatively well-known and widely deployed in at least one major cloud provider), and LCR, a provably write-throughput-optimal, fully symmetric ring-overlay protocol that achieves total ordering with no sequencer. The latter can serve linearizable reads from any replica, with none of the complex consistency concerns of read replicas in Paxos/Raft (or Zookeeper). Also, read throughput scales linearly with the size of the cluster (while write throughput stays roughly constant). Write latency and transient fault tolerance are strictly inferior to quorum-based protocols like Paxos/Raft, but this is less of a concern in LAN environments, where write throughput tends to matter more. Both chain replication and LCR support much higher write throughput than Paxos/Raft, and are thus more suitable for data plane applications in a LAN (specialized Paxos variants like SDPaxos are more appropriate for a WAN). If your system needs to be able to reconfigure itself, though, or you need to mask tail latency/transient faults, then Paxos/Raft are still the way to go.

<comment><USER8> You're bringing up good points. Chain replication seems neat and I haven't quite figured out why it's so rarely used. Maybe it's partly because it's not request/response-oriented (the tail is supposed reply directly to the client)?

I hadn't heard about LCR before so thanks for the pointer. It seems to be first described in "The complexity of reliable distributed storage"[2]. I found one reference to it in the Ring-Paxos paper[3] and they explain the disadvantages as follows:

> Of special interest is LCR, which arranges processes along a ring and uses > vector clocks for message ordering. This protocol has slightly better > throughput than Ring Paxos but exhibits a higher latency, which increases > linearly with the number of processes in the ring, and requires perfect > failure detection: erroneously suspecting a process to have crashed is not > tolerated. Perfect failure detection implies strong synchrony assumptions > about processing and message transmission times.

I'll definitely read the paper and try to understand how LCR works!

[1]: [https://dl.acm.org/doi/abs/10.1145/3269981](https://dl.acm.org/doi/abs/10.1145/3269981)

[2]: [https://infoscience.epfl.ch/record/114767](https://infoscience.epfl.ch/record/114767)

[3]: [https://ieeexplore.ieee.org/abstract/document/5544272](https://ieeexplore.ieee.org/abstract/document/5544272)

<comment><USER10> Ron Levy's thesis, as you mentioned, has a pretty complete description of LCR, as well as a related atomic register protocol (analog of ABD). The canonical reference for LCR, I think, is "Throughput Optimal Total Order Broadcast for Cluster Environments" ([http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.177...](http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.177.62&rep=rep1&type=pdf)). If nothing else, LCR contains probably the most elegant and surprising application of vector clocks I've seen (they are used to establish a total order on messages, rather than the usual partial order, with no sequencer required!).

Ring Paxos uses similar ideas (ring overlay for the acceptors), but requires IP-multicast (to minimize bandwidth for broadcasting values to the acceptors and learners), and hence isn't practical in most public cloud environments. (The variant of Ring Paxos that doesn't use IP-multicast doesn't seem to me to have any significant advantages over LCR, while being less symmetric and more complicated.) I do think that Ring Paxos is probably the best approach I've seen to improving the throughput of Paxos while preserving its latency advantages (but it still has issues with tail latency and transient faults because the acceptors communicate via a ring rather than quorums).

<comment><USER10> Oh, to address your question about chain replication, normally acks travel backward along the chain, from the tail to the head, so the head acks to the client when it's received an ack from its successor. So the usual client interface is still request/response, but of course the latency is considerably higher than a quorum-based protocol, since the messages have to travel the full length of the chain before being made durable on all nodes, and then acks have to travel all the way backward. There are various optimizations to try to reduce this latency, and also reduce the load on the tail in read-heavy workloads (probably the best-known is CRAQ: [https://pdos.csail.mit.edu/6.824/papers/craq.pdf](https://pdos.csail.mit.edu/6.824/papers/craq.pdf)).</comment></comment></comment></comment>


Glitch In iTunes Activation Servers - <AUTHOR> http://www.shoutpedia.com/glitch-in-itunes-activation-servers-thousands-with-bricked-ios-4.3.3-devices-8794/

<comment><USER2> I've re-installed various versions of the iOS software. You just go in to iTunes and shift-click the Restore or Check for Updates button and choose any version. I am not an iOS developer and have had no issues in going between 4.2 and 4.3 versions of the iOS software.

</comment><comment><USER3> My wife's iPad wasn't bricked, but it was certainly crippled by a similar bug two days ago (Friday).

When my wife attempted to sync her iPad prior to upgrading to 4.3.3, she was informed that the sync couldn't be completed. No error code or other reason was given. She could not therefore upgrade because the first step in the process is a sync. It got worse. After a few attempts, she powered off and restarted her iPad. Instead of the normal boot up, she got icons indicating she must connect the iPad to iTunes. When she did, she was advised that she was required to reset the device.

Now the real nightmare begins. After resetting the iPad, she had lost all but four of more than 100 mostly purchased applications. This should not be a problem, as the app store knows that an application has been purchased and will re-download it for free. But nobody told iTunes which applications to download. In the apps section, only 67 of her apps were recoverable. And those "updated" (meaning were restored) fine. Over the next day or so by browsing the extremely unhelpful app store, where applications are so excessively categorized it is virtually impossible to browse the huge catalog, and checking her email history she was able to make a list of (some of the dozens) of apps still missing. Then she had to go through the tedious process of using the App Store on her iPad to search for and reload each application separately, which took hours. At the end of this, she has no assurance there aren't still missing apps.

The original bug was bad, having to reset and lose all her on-device application data even worse, but the inability to smoothly restore previously purchased applications through iTunes and/or the App Store exposed a major design flaw that just fixing the bug won't address.

</comment><comment><USER4> I sense some exaggerations here. "Scores of users", "eleven pagelengths", but no link to the discussion. Maybe that's actually just a few dozen people there? Then, "bricked devices", only they are not "bricked" at all, they merely failed to update and you need to restore them.

So, basically, the article says: There are a few users who have problems updating their iDevices.

I wonder if this happens with every update or just with this one? Actually, I would _expect_ every software that is used by several milling people to fail for some eleven pagelengths worth of people.

</comment><comment><USER5> I've upgraded my iPhone to 4.3.3 yesterday night, at around 22:00 GMT+2 and didn't experience any problems.

</comment><comment><USER6> Can't you go into recovery mode and reinstall the previous version of iOS? Or is that just for jailbroken devices?

<comment><USER7> I've done it on my unjailbroken iPhone. iTunes has a built-in way of doing it.

</comment></comment><comment><USER8> My 3G is still on 4.2.X so this may only be for 3Gs and newer devices.

You may be able to un-brick it by downgrading if you are a developer, I know I've switched versions several times, including recovering from scary notices like the phone only wanting to say 'connect to itunes'.

</comment><comment><USER9> It broke mine... I used redsn0w to get it going again and then tried the iTunes update again. Seemed to work for me!

</comment><comment><USER10> From my understanding, iOS devices, much like Android devices, are nearly, if not completely, impossible to brick. Can't you just load the old version into the updater and restore a good version of iOS? Or does this _actually_ brick the device? (I have to ask, because it seems no one uses the word properly these days.)

<comment><USER11> Firmwares are signed and checked against Apple's server. They block all but the latest firmware.

<comment><USER12> This is false. I've reverted to older firmware before. There's even a dedicated button in iTunes for that.

<comment><USER13> You can only do it for images that the activation server is willing to keep singing for you. Sometimes they go back one or two versions (or a version is know to be jailbreakable, they won't allow it to sign).

The funny part is that the signature is always constant for your device for each version so if you proxy your signing request and cache it (like use Cydia's "on file" thing) you can install and active for older builds.

</comment></comment></comment></comment><comment><USER14> apple. just works.</comment>


Kim Dotcom reveals Me.ga with encryption directly in the browser - <AUTHOR> http://www.bbc.co.uk/news/technology-20165657 <comment><USER2> Oh noes, another flamewar on "wooo, let's do crypto in JS, what could possibly go wrong?" coming up. See also: Javascript Cryptography Considered Harmful - <http://www.matasano.com/articles/javascript-cryptography/></comment>


Blockchain, its new rival, and their future in the enterprise - <AUTHOR> http://gigaom.com/2015/12/21/blockchain-its-new-rival-and-their-future-in-the-enterprise/ <comment><USER2> > The digital signatures that certify each transaction and the distributed, > write-only online ledger that constitute the core of the blockchain tech > have the potential to offer even more security in these and other areas than > more traditional approaches used by businesses.

I'm pretty sure it's not write-only. Surely there is some way of reading it too.</comment>


Colorized man pages - <AUTHOR> http://boredzo.org/blog/archives/2016-08-15/colorized-man-pages-understood-and-customized <comment><USER3> As a tangent, I remain impressed by manpage's staying power. GNU tried to move ahead with Info, a tree-based doc format and viewer, but that never really seems to have taken off, possibly due to UI issues (I'm always confused about how to use it) It's a pity: have you tried searching for something in, say, Bash's manpage? It's just a flattened version of its doc, and you're completely flooded with search results.

I suppose manpages are another example of "worse is better". They are extremely simple to use, which is what you want when you're frustrated and looking for that *$#& option to 'find'. And yet, the troff/groff formatters used by manpages can be pretty sophisticated (Kernighan mentioned in an interview [1] he still used it to write books, eschewing to complexity of Latex) and can produce a variety of formats, such as HTML or PostScript. Why don't distributions make more use of this? I miss the days where you could "man foo" in KDE's quick launch bar and get a nicely HTML formatted version in Konqueror.

[1] [https://rkrishnan.org/posts/2016-03-07-how-is-gopl- typeset.h...](https://rkrishnan.org/posts/2016-03-07-how-is-gopl-typeset.html)

<comment><USER4> Info was a brilliant idea for its time, and it synergizes brilliantly with Emacs for those of us who use that editor.

For those who don't, it's a UX nightmare, because the standalone info viewer uses a specific, relatively ill-surfaced subset of Emacs conventions for its navigation commands. No one who doesn't use Emacs can be expected to know any of these. Even those of us who _do_ use Emacs often don't know any of these. It took me more than half a decade of daily Emacs use to discover them.

And even leaving that aside, Texinfo is fundamentally broken in a really disappointing way: the source includes almost no semantic information whatsoever - imagine HTML with no whitespace squashing and no tags except <br> and <a>. Worse, there is no consistency whatsoever among different authors on what structural conventions to use. It's therefore somewhere between very difficult and nigh impossible to implement anything like this rather nice colorization of manual pages. There are a couple of Emacs packages which try to do that, but while they do the best they can, that best isn't very good - and, of course, they're only useful if you use Emacs.

Honestly, it's a really frustrating situation. Texinfo manuals, especially those from the GNU project, tend to be much more detailed and complete on average than manual pages, which makes them an excellent reference for cases where the _aide-memoire_ style of a man page doesn't convey the context you need. But the info system is practically impossible to use unless you're very familiar with Emacs, and even when you are, it's still almost impossible to make info any more useful than plain text would be.

Given the age of Texinfo - older than three-fifths of the developers who answered Stack Overflow's 2016 survey! - it's not terribly surprising that it was born with flaws like these. But after thirty years, it is somewhat surprising that those flaws still exist.

<comment><USER5> _For those who don 't, it's a UX nightmare, because the standalone info viewer uses a specific, relatively ill-surfaced subset of Emacs conventions for its navigation commands. No one who doesn't use Emacs can be expected to know any of these. Even those of us who do use Emacs often don't know any of these. It took me more than half a decade of daily Emacs use to discover them._

I hope future generations of user interaction designers pay heed to this.

If you're going into the GNU info system to begin with, you're trying to get help, because you don't know something. Chances are, you may not know much about the system at all. So navigating your help system should be very, very easy.

Because I'm trying to figure out some other program, and I don't want to spend 15 minutes trying to learn the help system first.

A WordStar-like on-screen navigation help for GNU info would have helped me immensely through the years. Yes, it would have wasted valuable screen real estate, so the advanced users would eventually have created a command-line alias to disable it. Guys like me that used GNU info once a year (if that) would have had a much easier time.

<comment><USER6> Even better: say, you've opened _info_ for something and are lost in it, and try _info info_ , what you get is a list of all the available info pages, preceded by (on my machine):

 _This is the Info main menu (aka directory node). A few useful Info commands:

      'q' quits;
      '?' lists all Info commands;
      'h' starts the Info tutorial;
      'mTexinfo RET' visits the Texinfo manual, etc.

_

You'd think that's helpful, but...

hitting '?' brings a "Regexp search backward" prompt...

hitting 'h' brings... (oh irony) the info man page (but it's displayed by info, not man), and the man page has absolutely no information about how this thing works. Only command line arguments.

<comment><USER4> There appears to exist throughout the "standalone" Info viewer an assumption that you have Emacs globally installed. (I can't imagine why.) If you don't, you're stuck with whatever info documentation your distro packager and software developers provide, which usually is both not much and not good.

Anyway, here's throwanem's handy-dandy cheat sheet for Info navigation:

 _m_ \- Select a currently displayed menu item, with partial entry and tab completion

 _p_ , _n_ \- Move to the previous and next sibling nodes at this level of the tree

 _u_ \- Move to the parent of the currently displayed node

 _t_ \- Move to the top level of the currently displayed manual (and _u_ from here takes you back to the directory)

 _s_ \- Search incrementally forward, with wrapping, by substring or (Emacs) regexp

 _C-r_ \- Search incrementally backward, etc., etc.

 _l_ , _r_ \- Move back and forward, respectively, among the list of nodes you've visited this section

 _q_ \- Exit the Info viewer

As you see, in a lot of ways Info navigation conceptually corresponds with that in a web browser, especially if itimplements the semantic navigation UI that never really got the love it deserved. (I don't think any current browsers have had that in core for a long time, but there is a Firefox extension that provides them, in the rare case that you actually browse pages which include the metainformation that UI needs in order to work.) But, unlike a browser, Info's UI is so undiscoverable as to be actively hostile to the task-focused user. If you often find yourself struggling with it, perhaps the information here might help.

</comment></comment></comment></comment></comment><comment><USER7> It would be nice if we made better use of full-colour terminal support.

        man() {
        	env \
        		LESS_TERMCAP_mb=$(printf "\x1b[38;2;255;200;200m") \
        		LESS_TERMCAP_md=$(printf "\x1b[38;2;255;100;200m") \
        		LESS_TERMCAP_me=$(printf "\x1b[0m") \
        		LESS_TERMCAP_so=$(printf "\x1b[38;2;60;90;90;48;2;40;40;40m") \
        		LESS_TERMCAP_se=$(printf "\x1b[0m") \
        		LESS_TERMCAP_us=$(printf "\x1b[38;2;150;100;200m") \
        		LESS_TERMCAP_ue=$(printf "\x1b[0m") \
        		man "$@"
        }

And it would be really nice if I could read man pages in the terminal in a proportional font, but preserving alignment etc.

(See also, a script to display an image in the terminal: [https://git.gnome.org/browse/vte/tree/perf/img.sh?h=vte-0-36](https://git.gnome.org/browse/vte/tree/perf/img.sh?h=vte-0-36) )

<comment><USER8> > And it would be really nice if I could read man pages in the terminal in a > proportional font, but preserving alignment etc.

Since you want proportional fonts, you'd have to be willing to leave the terminal already. If so, I'm aware of three options:

1\. the classic, xman: fugly

2\. the builtin, "man -H": it works sometimes. On my own system, the it's so unreliable that I'd call it alpha-stage software

3\. and Konqueror. Works perfectly every time, but you'd have to install KDE components.

<comment><USER9> I don't understand 3.? Konqueror is the KDE3 web browser - how's that relevant here?

<comment><USER10> Konqueror is still included in current versions of KDE Applications (effectively 5.x, but the term "KDE 5" isn't really used).

Also, it's not so much a Konqueror thing as it is a feature of KDE's URL- handling subsystem. Any KDE application that interacts with URLs can retrieve HTML-formatted man pages. If you don't like Konqueror, you can always use Rekonq. Or you can open the source code in KWrite or Kate. Or you can browse man indices in Dolphin as if they were directories (though the actual pages will open in Konqueror).

KIO slaves are wonderful, wonderful things. It's the same technology that lets you use fish:// to access files and directories over SSH in every KDE program that deals with URLs (and since the file open/save dialogs are URL-based, this means it'll work with anything that uses those dialogs).

<comment><USER9> Thanks, yeah I used to use fish:/ and fonts:/ and a couple of other kio slaves, just not man, low discoverability I guess. I thought kio slaves had died with KDE5 [that's still the right name IMO despite the framework:applications split].

TIL.

<comment><USER10> Yeah, they neutered a lot of stuff with KF5 (the elimination of KLocale honestly makes me want to go back to Windows), but KIO is still around.

Unfortunately, it looks like fonts:/ was never ported to KF5, but fish:// and a bunch of others are still around.

</comment></comment></comment></comment></comment></comment><comment><USER11> Or you could just use most(1) as MANPAGER.

[http://www.jedsoft.org/most/](http://www.jedsoft.org/most/)

<comment><USER12> Just installed most, but it doesn't support scrolling via the j and k keys. I'd have to move all the way over to the arrow keys. This is not a replacement for less. Uninstalling.

<comment><USER11> Key bindings can be configured in ~/.mostrc, read most(1).

</comment></comment></comment><comment><USER13> If you're using oh-my-zsh, you can just enable the _colored-man-pages_ plugin

<comment><USER14> Although the author uses zsh, the function works other shells as well; at least on bash.

</comment></comment><comment><USER15> I found this script on reddit once. It does the same but sets random colors for man pages.

[https://gitlab.com/agilob/.files/blob/master/mancolor.sh](https://gitlab.com/agilob/.files/blob/master/mancolor.sh)

<comment><USER16> First I thought random colors might just be a "because I can" thing, but the script apparently keeps consistent colors for each man page. Now I wonder if it has a use case...

<comment><USER15> Most often it's really nice looking. [https://gitlab.com/agilob/.files/raw/4249f5d58aca984ef32af76...](https://gitlab.com/agilob/.files/raw/4249f5d58aca984ef32af761b6366d6383c15e2c/man_page.png)

</comment></comment></comment><comment><USER17> Bit of a "useless use of env" here. You don't need the env program for establishing environment variables for the execution of a command. That is a built-in shell feature:

        VAR1=val1 VAR2=val2 ... command

However, env here is serving the purpose of avoiding unwanted recursion, because "env man" runs the external man rather than the function. But we can get that with the "command" builtin, or by using "/usr/bin/man":

Thus:

      man() {
        LESS_TERMCAP_mb=$(printf "\e[1;31m") \
        LESS_TERMCAP_md=$(printf "\e[1;31m") \
        LESS_TERMCAP_me=$(printf "\e[0m") \
        LESS_TERMCAP_se=$(printf "\e[0m") \
        LESS_TERMCAP_so=$(printf "\e[1;44;33m") \
        LESS_TERMCAP_ue=$(printf "\e[0m") \
        LESS_TERMCAP_us=$(printf "\e[1;32m") \
        command man "$@"
      }

</comment><comment><USER18> For my Fish shell comrades, see [http://askubuntu.com/a/650192](http://askubuntu.com/a/650192).

</comment><comment><USER19> Really interesting thoughts coming from the groff mailing list:

"Because of poverty owing to neglect -- that is, necessity being the mother of invention -- the author of the article I linked to decided he'd like color in his man pages. Where did he turn? A style sheet in the groff framework, perhaps? Any kind of improvement to the semantic-display connection? No, he reached about as far down as possible, and tweaked the control sequences emitted to the emulator. Because he could. Because, in a way, he _had_ to, insofar as that strange bit of arcania gave him the most leverage.

"So, yes, he's still working with a text terminal, after a fashion. But the programmability of that text terminal is an accident of history, its feature set long since made obsolete -- not useless, but out-moded -- by graphical displays and GUIs. That he reached for that particular tool is a measure of how far we have come, and how far we have not."

[https://lists.gnu.org/archive/html/groff/2016-08/msg00034.ht...](https://lists.gnu.org/archive/html/groff/2016-08/msg00034.html)

Thread root: [https://lists.gnu.org/archive/html/groff/2016-08/msg00013.ht...](https://lists.gnu.org/archive/html/groff/2016-08/msg00013.html)

</comment><comment><USER20> For people on OS X I recommend checking out Bwana [https://www.bruji.com/bwana/](https://www.bruji.com/bwana/) ,it's not the same thing, it's man pages in your browser but in combination with Alfred (or similar) and/or a terminal plugin it's great. I find it much faster to skim man pages with bwana.

Main issue is of course that this shows man pages for OS X, which is usually similar but not identical to the ones on your favourite distro.

<comment><USER21> If you like bwana, you could try my updated copy: [https://bitbucket.org/tom_seddon/bwana](https://bitbucket.org/tom_seddon/bwana) (I've put a compiled version in the releases page - if it doesn't work, you can hopefully build it yourself)

Main improvement: man pages generated with this version include more links. Any time it spots a word that's bold, or underlined, or whatever it is - <USER2> don't remember what it was exactly - rather than just printing it that way it tries to turn it into a link to the man page by that name, if there is one.

<comment><USER22> I like that, thanks!

</comment></comment></comment><comment><USER23> A good example of how function definitions in shell can be used to overlay commands (applications).

The man() shell function in the example, although slick, is terribly inefficient because every time the man(1) command is called, the function will execute multiple printf(1) applications, over and over and over again. If you've ever ran application startup and shutdown at the assembler level in a debugger, it became obvious pretty quickly than running an application involved many, often recursive libc and system function calls, just to be able to set up the environment in order to start and exit the application.

Here, then, is the fix; this runs only once at shell startup, and stores the resulting escape codes in variables; put this in your ~/.profile (not .kshrc, nor .bashrc, nor .bash_profile, but ~/.profile!):

      LESS_TERMCAP_mb=`printf "\e[1;31m"`; export LESS_TERMCAP_mb
      LESS_TERMCAP_md=`printf "\e[1;31m"`; export LESS_TERMCAP_md
      LESS_TERMCAP_me=`printf "\e[0m"`; export LESS_TERMCAP_me
      LESS_TERMCAP_se=`printf "\e[0m"`; export LESS_TERMCAP_se
      LESS_TERMCAP_so=`printf "\e[1;44;33m"`; export LESS_TERMCAP_so
      LESS_TERMCAP_ue=`printf "\e[0m"`; export LESS_TERMCAP_ue
      LESS_TERMCAP_us=`printf "\e[1;32m"`; export LESS_TERMCAP_us

this code is portable and should work on every Bourne-family shell from the original '70's Bourne shell all the way to ksh93 and bash without modification; if it does not, it is a bug in the shell interpreter. Bug your operating system vendor to fix the interpreter program.

it should be noted that this assumes that the terminal (or the terminal emulator) one is using is actually capable of correctly interpreting the escape command sequences, and in addition correctly displaying them. Not all terminal emulators nor all physical terminals are capable of displaying all, some or any of these display modes. The above also assumes that the shell implements \e, which not all shells do (C-shells notably do not).

Finally, a quick crash course on manual pages, manual pages versus info, and _why_ manual pages are orders of magnitude better, and still a standard, because that is bound to come up sooner or later:

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

</comment><comment><USER24> Is there an advantage to overriding the man command over the approach of just directly exporting the env variables in bashrc? I currently do the latter and I don't override the man function. I suppose overriding the man function would allow for man-specific customizations, but perhaps there are other good reasons too?

<comment><USER25> You might not want to override termcap for less in other contexts. Or not in the same way.

</comment></comment><comment><USER26> Are man pages basically just a slab of informally structured prose, or do they stick to some sort of grammar? I.e. Can they be parsed? Can I query one for something like "the meaning of the command line short option -a", or am I stuck trying to use the pager's search functionality for "-a"?

<comment><USER27> Mandoc, the default manpage formatter in OpenBSD, Illumos, Minix, and some Linux distributions, does semantically parse manpages. The latest version even uses less's tags functionality to allow jumping to flag definitions. For example, if I "man ls", I can then type :tx to go to the definition of the -h flag, without hitting any false positives like a text search might.

[http://mdocml.bsd.lv/](http://mdocml.bsd.lv/)

</comment></comment><comment><USER28> Is the "env" really necessary?

I thought if you just prefixed the eventual 'man "$@"' with those environment variable settings that it would have the same result.

<comment><USER29> sure, except instead of running [/usr/bin/]man, it will run the man shell function.

</comment></comment><comment><USER17> That is awesome, ... and it cures the stupid underline disease!

What I'm talking about is that text which is marked up as a code (monospaced font) in the troff source being rendered annoying as bold and underlined! That creates ambiguities with actual underline characters and general readability nuisance.

With these settings, the underlining is gone.

</comment><comment><USER30> I use vim to get colorized pages and drill down to other referenced man pages. Search for MANPAGER in:

[http://www.pixelbeat.org/settings/.bashrc](http://www.pixelbeat.org/settings/.bashrc)

</comment><comment><USER10> Oh, this is wonderful. For the last few years, I've been going out of my way to add color to my terminal output, making use of things like COPE and zsh- syntax-highlighting. This will be a wonderful addition to that.

</comment><comment><USER31> There is also a vimscript to turn vimpager into a man pager, which supports basic colouring.

</comment><comment><USER32> Hmm, man is colored and has been for a few years or so on my box by default?

</comment><comment><USER33> doesn't work very accurate for me. tried with `man curl`

<comment><USER34> Compared to the original formatting, this colorization does the following:

\- normal text stays the same color,

\- bold text (bright white) becomes red,

\- underlined text becomes green,

\- inverted text becomes yellow-on-blue

However, if the original does not use bold or underlined text to emphasise parts of the text, this re-formatting has no effect. This is what happens in the curl documentation, where the command-line options are in regular text rather than bold text.

</comment></comment><comment><USER35> Beautiful. Thanks. :)

</comment><comment><USER36> Storming into the 1980s...</comment>


Facebook doing NPS? - <AUTHOR> http://www.facebook.com/survey/take.php?survey_id=128818393824868 No idea why they'd want to do this, but they appear to be measuring their net promoter score. http://en.wikipedia.org/wiki/Net_Promoter <comment><AUTHOR> Read about NPS here <http://en.wikipedia.org/wiki/Net_Promoter></comment>


What Happens When Media Get It Wrong? - <AUTHOR> http://www.centernetworks.com/bloggers-journalists-wrong

<comment><USER2> _What happens when medias get it wrong?_

The word "media" is already a plural. You mean "when the media gets it wrong".

<comment><AUTHOR> Thanks very much for the correction, unfortunately the submission title can't be edited (hopefully I'm not wrong again on this...)</comment></comment>


Do You Really Even Need VC? - <AUTHOR> https://learn.onevest.com/tutorial/4034974291756844467/do-you-really-even-need-vc

<comment><USER2> 20 years in startups. %50 of failures were due to bad decisions forced on the startup by the VC. Sometimes due to conflicts of interest: "we're giving you $X but you must spend $Y on portfolio company Z's product" (that doesn't do what you need.)

The other %50 were due to fights between the founders, and of those, I'd say about half of that was due to meddling of VCs.

Most of this was in the era before Angels when the path was FFF/Incubator -> Series A with VCs.

I've never experienced significant problems with an Angel, and have had a lot of positive experiences. OF all the VC partners I've met over the years, none that I knew well enough to have an opinion of, were people I consider trustworthy.</comment>


How I Created an iPad Archive of the Entire Run of Spy Magazine in Two Hours - <AUTHOR> http://andrewhearst.com/blog/2012/03/spy_magazine_ipad_archive

<comment><USER2> He must be old, like me.

I loved Spy Magazine it was one of very few things I read for pleasure in college. Even so, I think it was instrumental for me in forming a critical view of media the included cultural, economic and political perspectives.</comment>


Ember Is Hard, Part 1: Do Hard Things - <AUTHOR> https://medium.com/@koryteg/ember-is-hard-part-1-do-hard-things-42e6b290b95f

<comment><USER2> Pushing yourself to learn something that's hard to learn -- absolutely. Taking on challenges that nobody's ever attempted before -- absolutely.

Doing easy things the hard way? Not so much.</comment>


Ask HN: Should I launch anyway if unhappy about my product? - <AUTHOR>

I've been working on my startup full-time for 13 months now. (http://taketake.com)
I can't seem to nail that design - that feeling I'm looking for. We've changed the UI and the design roughly 5 times now. 6 months ago I stumbled on the Lean Startup philosophy; the launch early, scrappy and iterate doing customer development. I kept telling myself that I will launch in a few weeks so it was too late to "start from scratch" and apply the Lean Startup idea. But it's been 6 months now and I can't seem to get out of this stupid cycle of me being unhappy and wanting to have everything perfect before I launch.
Because of this, other startups like Blippy, Swipely (and gdgt to some extent) beat me to the push. My reaction when I saw this was to try harder and build features they don't have - so that when I launch our site we would one-up them.
Now I feel like I was wrong. I should have launched months ago and done more customer development to make sure I'm not building something people won't care about.
Somehow it is so difficult for me to release something that is not perfect. I can hear Gary V. telling me to "quit the bitch train" and launch already.
At this point I have three competitors; gdgt, Blippy and Swipely. They've got big launches with lots of PR attention and now getting traction while I'm losing my time pixel by pixel.
I guess I'm scared of failing and don't want to launch because of that - or I'm trying to pull a Steve Jobs with the resources of a non-VC backed startup.
Should I just take my time and release when I'm happy about my product and not care about my competitors getting traction - or should I hurry to get in the market to get my piece of the pie asap?
Your thoughts are appreciated :) <comment><USER3> Launch...but don't blow your wad on marketing until you think you're ready. If you're not confident in it, I'm not sure how you're going to sell it. A small launch within your network could get you the feedback you're looking for.

Don't beat yourself up about Blippy, gdgt, and Swipely. What did they do right? What did they do wrong? What can you learn from them (and on their dollar)? And -- are they REALLY your competitors?

Two last comments. If your design is on the level of your blog design, you'll be fine. It's really clean with clear and concise messaging. Also, have you considered the widening "products you love" into "things you love?" I'm being selfish, but I'd love to be able to follow new "products" from "things I love," like bands. Forget that last thought :)

<comment><AUTHOR> Yeah the idea of releasing the site but "not launching it" (thinking of marketing launch here) sounds like a good idea. Perhaps doing an invite only on Hacker News could get me the feedback needed to tune things up for the marketing launch thereafter.

I like the idea of "things I love" - see? That's why I need to get our site out there and get some feedback! Cheers!

</comment></comment><comment><USER4> LAUNCH IT NOW, MAN!

 _It will never be perfect. Ever._

You shouldn't be afraid of failing. This is not a one shot game. Your launch will show you some areas where you did things right and some where you screwed the pooch. It's about never ending improvement, not a shot in the dark that results in binary success or failure.

But one thing is certain - you need users to improve. You can't do that by yourself. So put away the IDE, and start pounding the pavement for users. There will be plenty of time later for improvements.

So yeah, you are right. You should have launched months ago. But who cares? Learn and move on.

You won't have any users right away anyhow, so relax and enjoy the process.

<comment><AUTHOR> You're right. This is not a one shot game. It is something that I will keep working on. Somehow after all this time has passed, it's embarrassing to launch a minimum viable product because people will say "Oh, that's it?". But that's just in my head and need to get over my fears. Cheers!

</comment></comment><comment><USER5> Launch it. The name of the game is GETTING USERS. The sooner you begin that process, the more you'll have in the long run. Even if you only have 5 dedicated, hardcore users, if the product works well for them they will evangelize and spread the word for you. Right now, you're killing that word- of-mouth opportunity by keeping your app private.

LAUNCH IT. When you do, you'll be surprised at how anti-climactic it is and wonder why you spent so much time worrying about it. The reason why you _can_ launch early is because you don't have the same PR blitzes the bigger guys do. Grow slowly, steadily, and introduce the features your users are asking for the most. If you have the staying power, you have a real shot overcoming the other guys, especially since they have to be the ones who make the first major mistakes (think Blippy's PR nightmare a few months back).

Good luck!

<comment><AUTHOR> Thanks for the feedback. One of the things that has been keeping me back from launching is this idea that I've got "only one shot at making the first impression".

I'm coming to realize that while the above statement is true, there are other things at play too. Cheers!

</comment></comment><comment><USER6> You'll be more unhappy that you wasted so much time than you are unhappy with the product. You'll feel really dumb if you waste all that time perfecting something no one cares about. Trust me, I know.

<comment><AUTHOR> I hear you, I'm at that point now where I'm embarrassed by all the time I've wasted. Thanks for the feedback, cheers!

</comment></comment><comment><USER7> Matt,

You need to launch - now. I was in a similar position a few years ago with one of my first startups. We spent months on development even though we had a usable product done very quickly. We analyzed our competitors, and constantly tried to one-up them while hiding in stealth mode. We were never completely happy with the product, as it seemed to always be missing some feature. Feature creep hit, and we spent another few months developing.

This proved to be a big mistake. The problem here is that we tried to predict how our users would use our product, wasting tons of time developing features we thought potential users would like (we didn't have any actual users at this point). This took our product in the wrong direction - when we launched it seemed users didn't use it the way we intended - most of the features were never used.

In hindsight, instead of spending time predicting and implementing features that would never be used, we should have just launched the product and evolved the way users ACTUALLY use it.

<comment><AUTHOR> Thanks for sharing this with me, it's very helpful. We have a lot of guessing going on, and you're right; we should wait to see how users will want to use the site and get feedback before building stuff people might not care about. Cheers!

</comment></comment><comment><USER8> Looking at your demo, you definitely have a launch-worthy v1. Do it now!

I think you're sufficiently differentiated from Blippy and Swipely, and even if you aren't - so what? How many people outside of HN and the Valley know of these two startups? There's a ton of users to acquire and engage and you are by no means behind in the game.

I really liked your gallery implementation - did you build it from scratch?

<comment><AUTHOR> That demo was shot like 12 months ago. I think we've changed the design/UI 3 times since then. It's silly, I know. I'm coming to realize that I'm sabotaging my own startup with my fears of launching.

The gallery implementation we built ourselves... That's something we sure spent a lot of time on. In hindsight, it could have been built after seeing how many people use that feature and if it is needed or not. Thanks for the feedback, cheers!

</comment></comment><comment><USER9> Launch: 1) You would get feedback from users. 2) You would get motivation from users to develop new features. 3) You would get the sense of accomplishment. 4) You would get running production web site experience.

If you get no feedback at all (which is a bad sign) -- it's still good for you -- move on to the next idea.

<comment><AUTHOR> Motivation sure is tougher to come by when my co-founder and I have been on this for 13 months full-time pulling 12+ hours a day on this. Even if I had only 5 users I think it would motivate me like nothing else. Thanks for the feedback, cheers!

</comment></comment><comment><USER10> I just took at look at your demo and I think it's a really cool idea, and you have a clean, attractive UI. It seems pretty different from Blippy or Swipely though actually - more focused on products rather than an individual's transactions.

Go for it and just launch! I would love to use it.

</comment><comment><USER11> I think the key is to either succeed or fail fast and cheap. In order to do that, you should launch early.

<comment><AUTHOR> I came across this idea of if you have to fail, fail fast and early. If our thing doesn't fly I will have learned this the hard way for sure. Thanks for the feedback, cheers!

</comment></comment><comment><USER12> What matters more than whether you are happy or not is whether your users are happy or not. One thing you could try is to launch to a select number of users (generally friends and family) and get their feedback before launching to the general public.

<comment><USER9> No need to intentionally restrict users. Simply promote your web site to your closest friends first and later focus on promoting it to broader audience.

</comment></comment><comment><USER13> I certainly hope the video demo posted 10 months ago is FAR from what you're doing now: <http://vimeo.com/6340992>

<comment><AUTHOR> It is! Is that good or bad? I don't know. I guess I need to launch it to find out. Thanks for the feedback, cheers!

</comment></comment><comment><USER14> I actually like the idea very much. You should launch already!

<comment><AUTHOR> Hey thanks! I think we will have something up for the Hacker News peeps to play around with and get that important feedback we crave. Thanks for the feedback, cheers!

</comment></comment><comment><USER15> Launch.

</comment><comment><USER16> Keep going! You can't sell something you don't believe in! But don't try to make the v2.0 version before launching. Make sure v1 is something your identified customers will want and shove it out the door.

<comment><AUTHOR> I think you're right about selling something you don't believe in and/or want to use. In retrospect, I don't think that's the case with our product - <USER2> rather me not being able to build it to my expectations. What I realize now is that it's something I can iterate on to get to market fit (and my expectations fit). Thanks for the feedback, cheers!</comment></comment>


How to price a product, sell it to customers, and build a sales team - <AUTHOR> https://stripe.com/atlas/guides/ama-steli-efti <comment><USER2> > ... You want paid pilots. When it comes to enterprise, you want to uncover > real buying intent as fast as possible. ... In the enterprise world, if > you're not putting a price tag on your product, it's not going to be valued.

I disagree with the idea that you should never offer free pilots to enterprise customers. Some pilots do not demonstrate buying intent: they are qualifiers.

Often times pilots are necessary to get enough information to justify the purchasing decision. Salespeople always claim a product will solve 100% of my needs. The reality is that it is actually somewhere between 20% and 80%. Where it is on the spectrum will determine whether I should be a customer. I need the pilot to know where that level is.

Just because you are not asking for money does not mean the pilot is "free". I have to justify the time I'm spending on this pilot, I have to set aside other priorities potentially disappointing stakeholders. I have to request resources and people. I carry the reputation risk since I am the one driving it internally.

If you are asking me to pay an even higher price than that, by forcing my reputation risk to also include a budgetary impact, or force me to slog through procurement, I am going to skip your company, even in favor of a higher ticket-price competitor. There should be greatly asymmetrical costs incurred by you compared to me to justify that.

<comment><USER3> I disagree. Quite often people drag their feet with actually trying the product during free pilot. If they have already paid for it there will be more urgency to integrate it.

Edit: if you dedicate resources to a pilot then it might as well be free but lots of companies don't automatically do that is my point

</comment></comment><comment><USER4> I love this article. Never give your service away for free. The user has no skin in the game so won't use it. You are not selling if you do all the talking. 90 percent of the conversation on your end should be questions. I am not a sales guy buy I've seen it done right and the wrong way. The wrong way is someone doing all the talking. The right way simply asks open ended questions and listens.

<comment><USER5> >Charge more

Agreed. There is this weird psychological trick where if you charge people more they start to value your service more or at least delude themselves into thinking so exactly because they are spending more money, it's a beautiful thing. If it fails, you can always reduce your price again!

>Never give your service away for free.*

* Except if your business model depends on capturing a large enough audience to feed them ads and generate revenue from that (Facebook, Google, Reddit).

<comment><USER6> You quote them as saying "charge more", but I don't see them say that. Did they edit their comment while/after you responded?

<comment><USER7> It is in the 'Do you have any advice for founders trying to price their product?' section as a hyperlink.

<comment><USER6> Ah, so that part of the comment is in reply to the original post. Confusing but I see.

</comment></comment></comment></comment></comment><comment><USER8> Any particular suggestions on how much exactly a typical software engineer would underestimate its enterprise product?</comment>


You don't find a technical co-founder, you earn one. - <AUTHOR> http://blog.sntmnt.com/post/34728389690/you-dont-find-a-technical-co-founder-you-earn-one

<comment><USER2> Very interesting post for any non-tech co-founder!</comment>


Web site launch toolkit - <AUTHOR> http://whattouse.com/toolkit/web-site-launch-toolkit

<comment><USER2> Personally I'd replace google alerts with <https://mention.net> Much more powerful IMHO. Disclaimer: I work for mention...

<comment><USER3> Ninja bug report.

I installed it but couldn't log in with my Google account. I clicked "Sign up with your Google account", completed the Google accounts popup, and then the Google accounts popup was happy and it went away, but then nothing happened in the Mention window..

<comment><USER2> Thanks for the report. It should display a modal window asking you to confirm your email address. Were you logged in to several google accounts at that time? Would you mind trying again and letting me know what the web inspector console outputs?

thanks!

<comment><USER3> Yeah I am logged into 3 google accounts. I tried again, and there is nothing in either the console or the network tab after I finish the google login window. It's like it just isn't communicating with the other window.

</comment></comment></comment></comment><comment><USER4> A favorite of mine (since I wrote it) is this package for quickly (very quickly) putting up landing pages on AppEngine:

<http://www.github.com/skorokithakis/landing-page>

Basically, add HTML, CSS, JS, and you have a fully-functional landing page with a signup form.

<comment><AUTHOR> Why haven't you added it as a tool?

<comment><USER4> Huh, I didn't notice you could add tools. Added!

</comment></comment></comment><comment><USER5> Missing from the list: Setup Twitter, Facebook etc for your website. What about developer checklist, what about how to set up Google Apps for business, emails, hosting account, domain setup correctly? SEO/SEM in little bit more detail.

<comment><AUTHOR> <3 this feedback! To address the social account brand registrations I added the KnowEm tool. I've also added Google Apps.

Are you referring to a specific developer checklist? Do you have one you'd recommend me to include? Can you please add it as a tool/send me the link?

I'll probably setup a separate SEO/SEM Toolkit altogether because there's a helluva lot to cover there. Perhaps I'll allow for the ability to include other toolkits as tools in toolkits?

Thanks for your input here!

</comment></comment><comment><USER6> Just curious, do you have any plans to monetize this site?

I thought I'd find referal codes for the links to the linked products, but it's not the case (not for the few I tried, at least).

<comment><AUTHOR> Currently I am not monetizing the site in any fashion. In the future I may.

</comment></comment><comment><USER7> It's a nice list, though I'd use blitz.io rather than loadimpact when it comes to load testing (mainly due to it's handy API)

</comment><comment><USER8> Collection of all the tools on single page for website analysis, No need to go anywhere else.

</comment><comment><USER9> I'm getting issues clicking through on links to screaming frog and click dog

<comment><AUTHOR> What kind of issues are you experiencing?

</comment></comment><comment><USER10> Is this your website? I'm getting this error - Fatal error: Call to undefined function node_access_needs_rebuild() in /home/wtuse/public_html/sites/all/modules/taxonomy_access/taxonomy_access.module on line 598

<comment><AUTHOR> Yes it is. Looks like a temporary cache issue. Cleared the cache and it's all back to normal. Thanks for pointing this out!

<comment><AUTHOR> Now it's back, it must be related to the 300+ simultaneous visitors on the site right now. I believe I know what the fix is, I just don't want to risk breaking the site right now in order to address it.

<comment><AUTHOR> OK...I risked it, it's fixed. Thanks again for pointing that out!

<comment><USER11> You should add something like LoadImpact.com to the list ;-)

<comment><AUTHOR> I literally just did that prior to reading this! Any other addition suggestions?</comment></comment></comment></comment></comment></comment>


Fired employee wipes out whole season of TV show  - <AUTHOR> http://www.msnbc.msn.com/id/42366946/ns/technology_and_science-tech_and_gadgets/?gt1=43001 <comment><USER2> The thing that really sucks for the TV show is that it wasn't even their own employee. It was an employee for their data hosting company. You know... the guys who you're _supposed_ to outsource to to make sure that this stuff doesn't happen.

<comment><USER3> _You know... the guys who you're supposed to outsource to to make sure that this stuff doesn't happen._

Actually, outsourcing is designed to be cheap, not to lower risk. Trusting the lowest bidder to an important task usually results in disappointment.

<comment><USER4> Actually, big corporations outsource to _transfer_ risk and not because it's cheap. To compliance/legal departments, paying exorbitant fees to qualified vendors _is_ saving money in their risk analyses.

<comment><USER2> Exactly. If you don't have expertise in house, then it can be cheaper to hire that task out to an outside company rather than hire someone to manage it in house. This sure sucks for the TV show, but at least they have someone else to hold accountable. If this had happened and they handled their own IT, there wouldn't be anyone but themselves to hold accountable. And you can bet that means a lawsuit with damages.

<comment><USER3> But of course, if the hosting company had any lawyers, their contract says they're not liable for this.

<comment><USER4> How so? _They were negligent_. Beyond that, you're also assuming the client didn't have lawyers--there's no way this contract gets signed off on without the vendor absorbing the risk.

If all the legal work was done properly, the vendor would end up in court with their insurer.

</comment></comment></comment></comment></comment></comment><comment><USER5> In other news, soon-to-be-fired producer learns the true meaning of 'backup'. Also, 'redundancy'.

<comment><USER6> Isn't the data hosting company job to do backups and redundancy? Unless they clearly state that they don't do that.

<comment><USER7> I'd say the opposite: Unless they clearly state they _do_ backups, they are not (legally) responsible for doing so.

<comment><USER8> That's what data hosting is. If they were doing webhosting, sure, but the article repeatedly states they were doing "data hosting".

Here's the company's web page detailing their data backup plan: <http://www.cyberlynk.net/services_corporate/dsp_backup.cfm>

<comment><USER7> What I'm saying is that whatever is in the contract is what matters. Data hosting, web hosting, data storage, whatever terms are used matter little.

EDIT: Case in point: We probably all agree that dropbox could be called "data storage", but they specifically say that backups and backup costs are to be done by the client (<http://www.dropbox.com/dmca#terms>), not by them.

</comment></comment></comment></comment></comment><comment><USER9> Surely the data company has redundancy or backups or data recovery software available? Surely they considered the risk of a staff member deleting copies / a hacker / a fire.

Surely the producers have at least working copies somewhere (I can't see people live-editing on a cloud server). Surely they considered the risk of the company going bust / data loss / their own staff deleting the copies.

Would assume this was an April Fools thing it's that bad (except for the fact it quite obviously isn't due to the quite obvious reputation damage that will effectively destroy this company).

</comment><comment><USER10> >" _According to a lawsuit that was filed last week in Hawaii District Court, a man named Michael Scott Jewson was terminated from CyberLynk. From his parents' residence, he allegedly accessed CyberLynk's data and intentionally wiped it out. Jewson is alleged to have been charged in February with a federal computer crime violation and admitted his guilt in a plea agreement.

The data breach allegedly knocked out 6,480 WER1 electronic files, or 300 gigabytes of data, comprising two years of work from hundreds of contributors globally, including animation artwork and live action video production._"

These sort of reports often over do it with the use of "allegedly" as an attempt to mitigate any libel claim.

"Jewson is alleged to have been charged"

Surely it's a matter of record whether he was charged. If the reporter can't even confirm this then they don't have a story.

"The data breach allegedly knocked out 6,480 WER1 electronic files"

Again they don't need that "allegedly", it's presumably a reported fact, the allegation they have to be wary off is the one that says the person responsible.

This really annoys me, allegedly.

<comment><USER11> Former TV news person here.

While I agree with you on your first point (that the reporter shouldn't have to use the word "allegedly" if he/she can confirm the man was charged), personally, I think using allegedly in the sentence about the files being knocked out is warranted. "The data breach" is referring to the data breach the man *allegedly carried out.

TV news reporters != attorneys. So when in doubt, attribution is your best friend.

<comment><USER10> The data breach he allegedly carried out is reported as a known quantity. The only allegation that needs mitigating is that it was this person that carried it out. If one is unsure of the details then it would be "reportedly" or an "unconfirmed source stated" or similar, no?

Thanks for your viewpoint though.

<comment><USER11> The problem is that the reporter doesn't know that the details of the breach mentioned in this article are facts. The figures, that there were 6,480 files totaling 300 GB of data likely came from the prosecution. So the reporter needs to get himself off the hook and either attribute it ("the prosecution says") or use words like "allegedly," "reportedly," etc.

</comment></comment></comment></comment><comment><USER12> I just don't understand how there could have only been a single copy of those videos.

<comment><USER13> Who says he only deleted a single file? It's not hard to delete stuff from online backup systems.

<comment><USER14> No, I think what trafficlight meant was: how can there be only a single copy of this material? What about the media they actually shot the episodes on? Surely there must be some kind of copy on the cutting room computers? It looks as if they're mainly out to collect damages from the company.

<comment><USER13> _The data breach allegedly knocked out 6,480 WER1 electronic files, or 300 gigabytes of data, comprising two years of work from hundreds of contributors globally, including animation artwork and live action video production._

Sounds like they hosted everything in the "cloud". Consider what happens when you edit a Google doc, there is no offline backup just whatever Google provides. So sure they are not at zero, but plenty of stuff can and was lost.

<comment><USER14> That's what they claim, sure. But does it really work like that? It seems to me that there would have to be local copies of those videos, if for no other reason than synching production quality videos to the cloud in realtime is probably unrealistic. Maybe some HNer working in the TV industry can elaborate?

<comment><USER12> From what little video editing I've been involved in, we had source material in 2 or 3 different places, plus multiple edits of said material, plus rough edited timelines, plus the final product.

And keeping everything in the cloud would be insane. In our shop every video editing workstation had it's own RAID array just for realtime editing. In a large shop you'd have a SAN of some kind.

</comment></comment></comment></comment></comment></comment><comment><USER15> (Warning anecdotal evidence) Having worked in China on a number of startups and worked alongside people who have had to fire employees, it's often common practice to just lock fired employees out of their systems. I've had this happen to people I know and had to do it once when letting a programmer go (which is nearly impossible to do after a probationary period due to the labor laws in the country, it's very very difficult to fire somebody, the company has to provide reason, pay social benefits, or face the employee in a court-- forget it if you're a foreign company).

I have heard stories of letting people go to find out that all of the work that employee did for the last month or two deleted, source missing, machines just wiped clean.

I read that title and kind of laughed because, well, it is a seemingly commonplace response in some parts of the world.

<comment><USER16> In my case I gave a months notice I was resigning and was locked out immediately. Imagine how much it sucks to come into work everyday with nothing to do except go to lunch. When I wasn't offering the other developers advice on the code I had worked on or APIs I was familiar with I was just shooting the breeze.

This was the hole in the policy. It was designed to keep disgruntled employees from damaging the system but the ones leaving on good terms were treated exactly the same.

<comment><USER17> This is more/less common in certain industries, and perhaps partially based on regulatory issues too, although I'm guessing there.

I have worked on financial software the majority of my career; at one point in a Wall St. investment banking firm. The very explicit protocol there was if you were going to leave the 2 week notice was customary, but you would probably be locked out of everything instantly, and would be around for hands- off consulting at the whim of your manager for the duration. It was all handled very professionally and friendly, at least for me, and they let me keep working for the 2 weeks since anything I touched had a _LOT_ of layers to go through before it ever saw production data.

<comment><USER18> Same industry for me, but in the trading area. It was standard for pretty much all firms that we were escorted off the premises immediately. I was touched that they let me stay for half-an-hour to say goodbye to people ;). Like you, it was done professionally and friendlily.

</comment></comment></comment></comment><comment><USER19> This is one thing which can happen when you put all your data into "the cloud" and hope for the best. One risk which any business has to take into account is the possibility of a rogue employee or ex-employee running amok. Putting all your eggs (or data) into one basket, especially when that basket is administrated by people who don't particularly care either way what happens to your business, may not be the wisest strategy.

</comment><comment><USER20> Kind of ironic that this would happen on World Backup Day, perhaps?

<http://worldbackupday.com/>

<comment><USER21> The real site is <http://worldbackupday.net>

</comment></comment><comment><USER22> I assume this is them: <http://www.cyberlynk.net/> with the late 90s "new" graphic against off-site data backup. I hope the show producers sue someone, either Cyberlynk if they claimed they did redundant backup or their IT guy/company for setting them up with such a bum deal.

</comment><comment><USER23> No backups? 300GB doesn't sound like much. I just processed and shuttled 2.3TB today (sneakernet backup).

<comment><USER24> I was just thinking the same thing.. 300gb, mostly of presumably high-res art and video.. and that's 2 years work? Sounds really small.

<comment><USER25> 2D Animation doesn't take up much space. Beyond a few painted high res background, most files are small and a lot of things are procedurally generated and take up almost no space at all. I worked on a 2D animated movie 10 years ago, and the data needed to render the final movie weighed in at less than 100 GB (and that was 2-3 years of work by 30-40 people). Also I understood from the story that they didn't loose everything, just enough to make it impossible to recreate the episodes without basically starting from scratch.

</comment></comment></comment><comment><USER26> Can you hire him to wipe Jersey Shore?

<comment><USER27> Don't watch the show then. Or do you object to other people watching content you don't personally approve of?

Because there are many terms for that particular personality type, none of them flattering.

<comment><USER17> LiteralNet is in full force today, I see.

</comment></comment></comment><comment><USER3> That employee may be going to jail, but it's not his fault that this happened. If your fired employees have access to your servers, you fucked up the firing horribly. Similarly, if one data center going offline can take out your entire season of work, perhaps you need to learn what redundancy is.

<comment><USER28> How is this not his fault?

<comment><USER3> What I'm saying is that relying on crazy people to not go crazy is not a good data loss prevention strategy.

(In the end, putting someone in a situation where they'll do something bad is worse than being the person that does something bad. A good example is the Colgan Air crash from a few years ago. Anybody knows that when your plane is stalling you're supposed to push the control column forward and apply full engine power. The plane does the pushing the control column forward part automatically! But for some reason, the trained airline captain did the exact opposite, stalling the plane and killing everyone on board. Why? Because he got paid so little that he couldn't afford a hotel room to sleep in before his work that day, and had to commute across the country and _then_ work a full shift. This is the airline's fault for impairing someone to the extent that he killed 50+ people by doing the exact opposite of what any trained pilot would do. $300 for a hotel room and everyone on that flight would still be alive today.

Similarly, when you fire someone that works with critical data, you need to make sure the guy's access is revoked. It's a precaution that needs to be taken, as this case shows. When necessary precautions are omitted, bad things happen. Planes crash, and important data goes away forever.)

<comment><USER29> I understand your point but the difference in the Colgan case is that the pilot made a tragic mistake, whereas the disgruntled employee _deliberately_ wiped the show. Yes, his employer is careless for not revoking his permissions, but the question remains - how is this not his fault?

<comment><USER30> It is. It's also the fault of everyone else involved who didn't back up.

</comment></comment></comment></comment></comment><comment><USER31> This is surprising, it would be like sitting my web apps code/ database on one live server without a local copy, and possibly multiple backups elsewhere. How can a TV production company justify this? I mean it would cost just about nothing relative to production costs to put 300gig on S3.

<comment><USER2> You're assuming that the production company can afford to have someone around who knows how to put data on S3. My guess is that they outsourced this to the company who had the fired employee. Still, they should still have some kind of original files on some other medium somewhere... but who knows, maybe their production workflow revolved around this data-host. In which case they are really borked.

<comment><USER32> We have tons of decades-old video alive and well today. They may not have expertise with S3 but if they don't have the expertise to ensure robust backups, they're doing it wrong.

<comment><USER31> Yeah they may not but you have the weight up the costs of getting a contractor in to setup an almost fail safe system against losing probably millions of dollars of production.

I would assume it's more about people assuming something like this would never happen as to not justify the outlay of protecting against it.

</comment></comment></comment></comment><comment><USER33> Interesting how this happens on the same day of World Backup day. ([http://blog.reddit.com/2011/03/better-have-backup-plan- world...](http://blog.reddit.com/2011/03/better-have-backup-plan-world- backup.html))

</comment><comment> Gorm-Casper Am I the only one who found the idea with tiny bubbles at the scrollbar more interesting than the story itself? Front-end developers' curse :P

</comment><comment><USER34> Man, that sucks. Hopefully it's a lesson to everyone that you don't leave the keys to the kingdom to one guy, _especially_ if they've just been fired.

</comment><comment><USER35> Shouldn't the company have off-site backups of the data its hosting, like, say, on tape or something?

</comment><comment><USER36> For once I agree with the editorializing of a headline on Hacker News.

</comment><comment><USER37> April 1st?

<comment><USER38> Must be. I thought the link would be about Charlie Sheen.

</comment></comment><comment><USER39> Is the guys name really Micheal Scott? April fools!

</comment><comment><USER40> april fools?

</comment><comment><USER41> Aprils fool?</comment>


Ask HN: Any plan to prevent connection to heartbleed vulnerable site by default? - <AUTHOR>

It would be nice if my web browser would prevent me from going on any site with a vulnerable version of OpenSSL, the same way a warning is displayed when a certificate is not valid as it would prevent people from thinking their connection is secured while it is absolutely not. Also, it would be nice to prevent connection to any site with a certificate that was not generated after the exploit was made public (maybe except if it is in some whitelist for websites that we are sure never used a bad version of OpenSSL). I guess it would be possible to do so using a browser extension (anyone working on that?) but it would be even nicer to have it built-in in every web browser to protect everyone even non tech people. So if anyone from the Chrome or Firefox team is reading this, it would be awesome to do that ! It would be a big step forward protecting us from incompetent sys admin. <comment><USER2> I've also suggested the same and posted a feature request to Chromium Bugs (do not do the same, I'm sure they receive more than once this feature request). I hope this gets implemented in all major browser.</comment>


Compositional Attention Networks for Machine Reasoning - <AUTHOR> https://arxiv.org/abs/1803.03067 <comment><AUTHOR> Source here: [https://github.com/stanfordnlp/mac- network](https://github.com/stanfordnlp/mac-network)</comment>