Benchmarking TensorFlow on Cloud CPUs: Cheaper Deep Learning Than Cloud GPUs - <AUTHOR> http://minimaxir.com/2017/07/cpu-or-gpu/ <comment><USER2> Disclosure: I work on Google Cloud (and launched Preemptible VMs).

Thanks for the write-up, Max! I want to clarify something though: how do you handle and account for preemption? As we document online we've oscillated between 5 and 15% preemption rates (on average, varying from zone to zone and day to day) but those are also going to be higher for the largest instances (like highcpu-64). But if you need training longer than our 24-hour limit, or you're getting preempted too much, that's a real drawback (Note: I'm all for using preemptible for development and/or all batch-ey things but only if you're ready for the trade-off).

While we don't support preemptible with GPUs yet, it's mostly because the team wanted to see some usage history. We didn't launch Preemptible until about 18 months after GCE itself went GA, and even then it involved a lot of handwringing over cannibalization and economics. We've looked at it on and off, but the first priority for the team is to get K80s to General Availability.

Again, Disclosure: I work on Google Cloud (and love when people love preemptible).

<comment><USER3> > how do you handle and account for preemption?

I do most of my experiments with Jupyter Notebooks and Keras on top of TensorFlow. Keras has a ModelCheckpoint callback ([https://keras.io/callbacks/#modelcheckpoint](https://keras.io/callbacks/#modelcheckpoint)) which saves a model to disk after each epoch and is super easy to implement (1 LOC), and a good idea even if I wasn't training on a preemptable instance. In the event of an unexpected preemption, I can just retransform the data (easy with a Jupyter-organized workflow), load the last-saved model (1 LOC) and resume training.

The drawback there is if the epochs are long, which could risk in losing more- than-wanted progress due to a preemption.

<comment><USER4> That's really odd that that Keras API's interval is measured in epochs (which is a different wallclock interval for every different model/dataset/hardware configuration). It's much more common to checkpoint based on a time interval.

<comment><USER5> Oh interesting, I've never seen checkpointing on a time interval. Most Torch examples just dump the model to disk after the epoch finishes.

One reason to use epoch checkpointing is because that ensures that all samples of the training data have been seen the same number of times. If your data is large and diverse, with heavy enough augmentation it might not matter very much

</comment></comment></comment></comment><comment><USER6> Shoutout for Hetzner's 99 euro/month server with a GTX 1080, much better than the pseudo-K80s that Google Cloud provides for $520/month. The Google K80s are half or quarter the speed of a real K80, part of the reason they show so badly in the comparison.

[https://www.hetzner.com/dedicated-rootserver/ex51-ssd- gpu?co...](https://www.hetzner.com/dedicated-rootserver/ex51-ssd- gpu?country=ot)

<comment><USER7> Wish HN had a 'save' feature so I can remember this comment when I need a GPU box.

<comment><USER8> click on the timestamp, click "favorite"

<comment><USER9> New one for me also. Thanks!

</comment></comment></comment></comment><comment><USER10> One of the interesting variables in calculating ML training costs is developer time. The cost of a Data Scientist (or similar role) on an hourly basis will far outweigh the most expensive compute resource by several orders of magnitude. When you factor in time, the GPU immediately becomes more attractive. Other industries with heavy/time consuming computational workloads like CGI rendering have understood this for decades. It's difficult to attach a dollar sign to the value of speeding something up because it's not only about simply saving time itself but also about the way we work: Waiting around for results limits our ability to work iteratively, scheduling jobs becomes a project of its own, the process becomes less predictable etc.

Disclaimer: Paperspace team.

<comment><USER11> For training, that's likely to be true. For large scale inference it's not possible to beat CPUs right now if cost is a factor. You might be able to beat them once you can buy TPU access in cloud, depending on how steep a premium Google attaches to it.

</comment></comment><comment><USER12> While the authors article is relevant if you are stuck on GCP, on AWS you will not have the same conclusion. This is because AWS has GPU spot instances (P2) which can be found for ~80% cheaper depending your region [1]. Hopefully one day soon GCP will support preemptible GPU instances.

[1] [https://aws.amazon.com/ec2/spot/pricing/](https://aws.amazon.com/ec2/spot/pricing/)

<comment><USER13> When I started it was even cheaper(~10% of reserved cost), but even now, it's pretty cheap.

</comment></comment><comment><USER14> I would love to see these results put up against Google's new TPUs[1]. While TPUs are still in Alpha, my guess is that customized hardware that understands TensorFlow's APIs would be a lot more cost effective.

[1] - [https://cloud.google.com/tpu/](https://cloud.google.com/tpu/)

</comment><comment><USER15> I've been amazed that more people don't make use of googles preemtibles. Not only are they great for background batch compute. You can also use them for cutting your stateless webserver compute costs down. I've seen some people use k8s with a cluster of preemtibles and non preemtibles.

<comment><USER16> something I've always been curious about (and if a Google Cloud Engineer could clear up - that would be great), is why we should not (as in, why does everyone not) use preemptible nodes (apart from maybe the 3 / 5 master nodes).

My question specifically being: if I configure a k8s cluster to have all my slaves as preemptible nodes...would GCP automatically add new nodes as my old nodes are deleted (from what I understand preemptible nodes are assigned to you for a max of 24 hrs)?

Considering the pricing of preemptible nodes + the discounts that GCP assigns to you for sustained use, it makes cloud insanely cheap for an early stage startup.

<comment><USER17> Google Cloud Developer Advocate here.

Go for it as long as you understand the downside. It's possible that all instances get preempted at once (especially at the 24hr mark), that there isn't capacity to spin up new preemptible nodes in the selected zone once the old instance is deleted, etc. New VMs also take time to boot and join the cluster.

If you are just doing dev/test stuff, I'd recommend using a namespace in your production cluster or spinning up and down test clusters on demand (which can be preemptible).

If you have long running tasks (like a database) or are serving production traffic, using 100% preemptible nodes is not a good idea.

Preemptible can be great for burst traffic and batch jobs, or you can do a mix of preemptible and standard to get the right mix of stability and cost.

<comment><USER18> If you don't mind me asking, what exactly is the role of a developer advocate?

<comment><USER19> [https://medium.com/google-cloud/a-day-in-the-life-of-a- devel...](https://medium.com/google-cloud/a-day-in-the-life-of-a-developer- advocate-for-google-cloud-platform-fe681c8645cf)

Not me or OP, but same team :)

<comment><USER18> Cheers!

</comment></comment></comment></comment></comment></comment><comment><USER20> For research and experimentation what you need is your own DL box. It will pay for itself in a few months. You will feel better having your own reliable hardware that you don't share or have to pay by the minute, and that will impact the kind of ideas you are going to try.

Then you scale up to the cloud to do hyperparameter search.

<comment><USER21> Do you have any advice on getting your own box set up in a data center - constantly traveling...

</comment></comment><comment><USER22> Excellent write-up, kudos on going through all of that Max. Too bad Google will deprecate the preemptable instances as a result :P.

 _There is a notable CPU-specific TensorFlow behavior; if you install from pip (as the official instructions and tutorials recommend) and begin training a model in TensorFlow, you'll see these warnings in the console:_

FWIW I get the console warnings with the Tensorflow-GPU installation from pip, and I verified that it was actually using the GPU.

</comment><comment><USER23> A question for those who've used TensorFlow on NVIDIA GPUs:

What range of GPU performance do you see? As in, if the card does 10 TFLOPS peak, does TensorFlow manage to reach that peak, or is it at 5% or 20% or some other percent of peak typically?

And are there expectations for Googles new generation TPU? What range of peak performance do people expect to get?

</comment><comment><USER24> Thank you for benchmarks! It will be interesting include in your research Inception-v4, Inception-ResNet. And try to compute with Nvidia 1080 / 1080TI cards.

Our benchmarks for processing 1000000 images ResNet-50:

\- 8x Tesla K80: 43m 3 sec.

\- 8x Nvidia 1080: 17m 32 sec ( 0.09 euro / minute ).

We can provide you resources for free for research.

Disclosure: I'm founder of LeaderGPU.

</comment><comment><USER25> Paperspace has dedicated GPU instances for $0.40/hr, I'll have to compare with Hetzner...

<comment><USER26> Been very impressed with their customer service and their bandwidth availability. I'm getting 500/500 on speed tests to the west coast servers of theirs. I don't use their GPU instances but I do use their high power CPU instances for video rendering and V3D work.

</comment></comment><comment><USER27> Neat article. I think it's worth pointing out that this guy is an active commenter in the Hackathon Hackers facebook group, if you want to see more of his content. He can be pretty pretentious sometimes, but good content nonetheless.

<comment><USER3> You don't need to make a throwaway to call me pretentious. :P

</comment></comment><comment><USER28> Fascinating. Wish he could have shown benchmarks on a larger image database (Imagenet or CFAIR-100), as mnist is extremely easy to train on. Great to know, especially the LSTM benchmarking.

</comment><comment><USER29> As far as the 64 vCPU finding, that's quite possibly because it's crossing NUMA modes. GCE's virtualization hides NUMA information unfortunately (at least as far as I've ever seen), so there's no way to handle this in software even.

Would be interesting to see these benchmarks on Haswell/Broadwell vs Skylake.

</comment><comment><USER30> Quick question to those with a deep understanding of these things... I have not been able to get GPU tensor flow (on AWS) to run faster for the networks I'm using.

This is with a small(ish) network of perhaps a few hundred nodes... should I see a speedup for this case, or are GPUs only relevant for large CNNs, etc.?

<comment> david-gpu Correct. GPUs are not efficient with very small networks.

<comment><USER30> Any useful rules of thumb on when to use GPU?

</comment></comment></comment><comment><USER31> > [slower on 32 and 64 core systems]

The library doesn't handle NUMA hardware?

</comment><comment><USER32> would be interesting to see benefit of MKL optimizations on the same examples

[https://software.intel.com/en-us/articles/tensorflow- optimiz...](https://software.intel.com/en-us/articles/tensorflow- optimizations-on-modern-intel-architecture)

</comment><comment><USER33> No spot instances?

<comment><USER3> I kept it the analysis to GCE only for simiplicity. (both because the costs of spot instances are highly variable, and costs are not prorated on Amazon meaning you have to pay for the full hour; an additional concern if you just want to run a small ad-hoc training)

<comment><USER34> If a spot instance terminates in the first hour you're not charged for it. You can grab spot blocks as well for specific duration workloads.

</comment></comment></comment><comment><USER11> FYI, y'all: cloud "cores" are actually hyperthreads. Cloud GPUs are single dies on multi-die card. If you use GPUs 24x7, just buy a few 1080 Ti cards and forego the cloud entirely. If you must use TF in cloud with CPU, compile it yourself with AVX2 and FMA support. Stock TF is compiled for the lowest common denominator.

<comment><USER35> This is very important if you're running any cpu intensive workload at scale. We had custom compiled x264 then custom compiled that into ffmpeg to get everything out of our CPUs for an encoding cluster. AMD cpus seem to really shine here.

You'd be surprised the difference it makes. It was one of the reasons I liked Gentoo, emerge would always build from source for your target CPU flags, instead of using the package managed "one size fits all" build. Those 5-10%s really compound when you add them up along all dependencies.

Kudos to tutorials and guides that instruct how to build from source.

The same is every bit as true today for your containers, assuming you have a homogeneous target to run them (yes I know, containers are supposed to be supremely portable, but private ones can be purpose built)

<comment><USER11> This is especially important if most of your workload is matrix multiplication. Those workloads heavily benefit from vectorization. It might also help to enable Intel MKL, because Eigen, which TF uses by default is not the fastest thing out there, just the most convenient to work with cross platform.

<comment><USER36> Would hyperthreading be helpful or harmful?

<comment><USER11> Hyper threading is not harmful per se. It lets your CPU make forward progress when it would otherwise be stalled waiting for something. My issue is that they call hyperthreads "vCPU" which makes it seem like you're getting a full core, while in reality you're getting 60% of a core at most.

<comment><USER37> Hyper threading often _is_ harmful when you use it, because while it does let your CPU make forward progress, it does that at the expense of e.g. cache that is evicted.

Obviously depends on your workload, but on my highly parallel "standard" workloads, my experience is that you can get at most 15% more with hyperthreading on (e.g. 4 cores/8 threads) compared to off (4 cores/4 threads), whereas on the cache intensive loads, I get 20-30% LESS with hyperthreading on.

<comment><USER11> I have never encountered such an abnormal workload. This is also less likely to happen in Broadwell Xeon and up, where last level cache can be partitioned. And this is also less likely to happen on Google Cloud in particular, because Google uses high end CPUs with tons of cache.

<comment><USER37> If both core threads are memory (and cache) intensive, then you get effectively half the cache size and half the memory bandwidth. Partitioning may make eviction less random, but the cache size is still halved, regardless of how much "tons of cache" you start with.

<comment><USER11> Increasing cache has the net effect of increasing hit ratio, sometimes substantially. With 20MB per die this may change the calculation of where things drop off. I have found that I can't reliably predict how a chip will perform, so I just wrote a bunch of benchmarks and it takes me about half an hour to see if the chip performs better or worse than I thought it would. Google's Broadwell VMs perform very well.</comment></comment></comment></comment></comment></comment></comment></comment></comment>


Automation Obsessed - <AUTHOR> http://mitchellh.com/automation-obsessed/

<comment><USER2> I have a very similar story. I had an internship in high school doing bio research at a university. They basically wanted me to spend my whole summer counting cells with a digital microscope. I got bored pretty quickly and decided to write a program to automate the process and count cells for me. It worked out and the lab loved it. I went on to do a bunch of science fairs, including ISEF (Intel). It was doing that which really got me interested in tech and comp sci.

</comment><comment><USER3> Thanks for Vagrant! wish I had that years ago.</comment>


0 to 60 in 30 days: My experience with the Dvorak Keyboard Layout - <AUTHOR> http://www.dylanbarth.com/posts/dvorak/ <comment><USER2> So, it's miserable, steals weeks of productivity, and the author has no evidence of anything but a detriment to his typing speed after hours and hours of practice? :)

<comment><USER3> Not the point of the post mate. Its an mid-way experience share, the author is just sharing his approach to learning a new keyboard layout. Also his feedback loop for learning something and constant maintenance of quantitative comparison is pretty great.</comment></comment>


Show (CLI) shows disk or network properties in an ASCII table - <AUTHOR> https://github.com/louwrentius/showtools

<comment><AUTHOR> I made this tool to get a quick overview of relevant parameters of multiple disk or network devices. It uses ethtool, hdparm, fdisk and smartctl under the hood.

I hope somebody likes it.</comment>


JavaScript Style - <AUTHOR> http://ozmm.org/posts/javascript_style.html <comment><USER2> I tend to prefer camelCasing even in Python, etc. It seems that underscored_names may be easier to read but camelCasedNames are easier to write. The crux is that, for me, it's harder to write underscored_names than it is to read camelCasedNames.

Can anyone point out advantages of underscored_names that I may be missing?

<comment><USER3> > underscored_names may be easier to read but camelCasedNames are easier to > write

Code gets read more than once. If it makes code easier to read, I'll do it, even if it takes me a tiny bit longer to write that extra character.

<comment><USER4> Agreed. As has been said many times, code is much easier to write than it is to read (or debug), so make that sacrifice now.

</comment></comment></comment><comment><USER5> Of course, for javascript style, crockford's articles are fairly good: <http://javascript.crockford.com/style1.html> and <http://javascript.crockford.com/style2.html>

</comment><comment><USER6> Posted on April 1st, but he is, in fact, serious.

</comment><comment><USER5> camelCase was invented by english speakers with absolutely no clue about case- less languages.

<comment><USER7> As programming languages tend to resemble English, it's pretty reasonable to use typography relevant to English. Accusations of Anglocentrism are not appropriate in that arena: programming languages are Anglocentrist.

</comment></comment><comment><USER8> I totally agree, however it's get a bit tricky on the boundaries between an underscore and camelCased language. For example sending json between the client and server.

Should the json keys be camelCased or underscore_cased? It's a bit ambigious.

<comment><USER9> Yes. I run a Python server, so there's conflict between "long_name" and "longName", and even "long-name" (which I think is semantically superior). I'm curious to hear how other people have approached encoding multi-word values in JSON and XML.

<comment><USER10> Right, and then HTML/CSS ids and classes further muddy the waters. It's usually worth keeping _at least_ your model attributes with the same name, from DB column through Web App to JS. So we do:

        doc.set({related_article : 'http://...'});

Even though you might have:

        doc.openRelatedArticle();

As a method on the JS model. Definitely less than ideal.

</comment></comment></comment><comment><USER11> I interpret part of this short article as if the author, with _"I'm not saying you must write JavaScript a certain way. Do what makes you the most comfortable, write code that is fun to write."_ implies that it's ok to write JS function names etc. in any way, which is very bad advice, because, some (or most?) JS engines have case sensitivity on function calls; Math.floor() will work, but math.floor() will throw a reference error and Math.Floor() will throw an undefined function error. Really: you _must_ write JavaScript a certain, very specific way, or it just won't work everywhere :)

<comment><USER12> That's not what that means. The author assumes that the reader understands that your code must be legal JavaScript. It's an article about coding style, not coding correctness.</comment></comment>


Ask HN: If you could intern at any company, where would it be? - <AUTHOR> <comment><USER2> Facebook, for the massive scale of their operations.</comment>


Uber Goes Unconventional: Using Driver Phones as a Backup Datacenter - <AUTHOR> http://highscalability.com/blog/2015/9/21/uber-goes-unconventional-using-driver-phones-as-a-backup-dat.html <comment><USER2> I'm not sure the EU privacy people are going to be all that enamoured with this once it comes to their attention. If Facebook, Google or Microsoft decided to start storing third-party user data on their user's devices, encrypted or not, I guarantee they'd take issue with it, so I can't see them making an exception for Uber. I know Uber likes to push the regulatory envelope but this won't end well.</comment>


First financial statement for Dell - <AUTHOR> https://twitter.com/MichaelDell/status/975186931138080768 <comment><USER2> The gross profit of about $200K would be about $500K in today's dollars. And that statement covers only three months.</comment>


U.S. Proposes New Minimum Sound Requirements for Electric Vehicles - <AUTHOR> http://www.nhtsa.gov/About+NHTSA/Press+Releases/DOT+Proposes+New+Minimum+Sound+Requirements+for+Hybrid+and+Electric+Vehicles

<comment><USER2> I hate this idea. Already enough noise pollution. How about human / obstacle detection, perhaps with automatic noise making if a collision may happen along with automatic slowing down, etc.. And in very high pedestrian traffic areas, slower driving speeds allowed.. etc.. People will learn new behaviour once their brain can't depend on the sound they make. This is one of those government things that shouldn't be legislated.

<comment><USER3> Just meet the requirements by playing the sound of clomping horse hooves.

<comment><USER4> This would be amazing.

</comment></comment></comment><comment><USER5> I grew up in a "small town", so I'm a bit paranoid, always looking around me when crossing streets, in parking lots, etc. I've found that people tend to walk around oblivious to the several ton devices propelled towards them. That's the world we live in. As we're a society that feels like we have to protect ourselves from ourselves (and litigation), I can't see a situation where we wouldn't have such warnings.</comment>


Trust: the inside story of the rise and fall of Ethereum - <AUTHOR> https://aeon.co/essays/trust-the-inside-story-of-the-rise-and-fall-of-ethereum <comment><USER2> The article is sensationalist, especially with regard to the "fall" part of the "rise and fall of Ethereum".

The reality is that Ethereum as a platform has gained strength, credibility and market traction over the last six months. There have been 3 hard forks and 1 soft fork, partly in response to the system being under almost continuous attack (mostly denial of service). The effective response by Vitalik and company has increased trust, not decreased it. As the saying goes: "What does not kill you, makes you stronger."

More and more developers building applications on top of this platform. The MelonPort token sale ICO (on the Ethereum platform) sold out in 2.5 minutes yesterday.

It's not just independent Ramen-fueled startups, but "enterprise Ethereum" has become a thing. JP Morgan, Santander, Microsoft, Redhat, Cisco, Accenture, etc -- for better or worse -- are joining the Ethereum bandwagon.

I think it is still way early to call a winner in the blockchain platform wars. There are dozens of well-funded competitors trying to gain dominance over established platforms like the Bitcoin technology stack and the Ethereum platform -- including IBM-led Hyperledger Fabric and the bluechip banking consortium led by R3CEV.

But if there is one dog at the top of the blockchain platform heap right now, it is Ethereum.

See:

[http://www.coindesk.com/jp-morgan-santander-said-join- enterp...](http://www.coindesk.com/jp-morgan-santander-said-join-enterprise- ethereum-blockchain-group/)

[https://media.consensys.net/the-birth-of-enterprise- ethereum...](https://media.consensys.net/the-birth-of-enterprise-ethereum- in-2017-ebe7f7abed92)

[https://www.reddit.com/r/ethereum/comments/5u6uhb/melonport_...](https://www.reddit.com/r/ethereum/comments/5u6uhb/melonport_ico_is_filled_in_25_minutes_many_thanks/)

<comment><USER3> Not sure why the url path includes 'rise and fall' in it, it doesn't look like it's the actual headline in the article, nor is 'rise and fall' mentioned anywhere in the article.

The main point of the article isn't that people are losing trust in Ethereum. It's that there's no platform that truly avoids the need to trust other human beings (as some apparently believe). That code is not absolute law because the community can choose to change it and affect pre-existing contracts. I don't think he bashes Ethereum at all, but is just making the case that, if you believe you can rely on a platform like this to avoid the need to trust in human decisions, you're fooling yourself.

<comment><USER4> > Not sure why the url path includes 'rise and fall' in it,

These days publications are continually A/B testing headlines.

<comment><USER3> Fair enough. Then I'd argue maybe one headline they're A/B testing is sensationalist, but the article itself isn't, nor does it feel like the article is at all making a point about the 'fall' of Ethereum.

</comment></comment></comment></comment><comment><USER5> The only reason there was a hard fork was because it was Buterin's company that got ripped off. If it had been anybody else, they would have lost the money.

As for "The DAO", the biggest question on their forum is "How do I get out?"[1] Apparently the DAO is dead, but they seem to have kept the money.

[1] [https://forum.daohub.org/](https://forum.daohub.org/)

<comment><USER6> First of all the DAO was a decentralized organisation, it didn't belong to Buterin, it isn't "Buterin's company"...

The hard fork had a lot more to do with the fact the overall community didn't thought the system would survive the eventual switch to proof of stake if 15% of all ether was in the hands of malicious actor. There was also the moral matter that something could indeed be done to actually return the stolen money to their original owners, there was consensus to do the fork and so the fork happened.

<comment><USER7> > the overall community didn't thought the system would survive the eventual > switch to proof of stake if 15% of all ether was in the hands of malicious > actor

The author of Casper, Vlad Zamfir, clearly stated on numerous occasions on Reddit that there was no risk to PoS b/c of the hack.

> There was also the moral matter that something could indeed be done to > actually return the stolen money to their original owners

That's a really nice way of phrasing "we have a moral right to help gamblers recoup their losses."

<comment><USER6> I have seen stated that even 7% could be an issue depending on the parameters used. Regardless, it was certainly a big concern at the time for most of the community.

That's a bit cynical to call the token holder gamblers, sure many of them "invested" thinking they would get some return back, but a lot of people were genuily curious in participating in this decentralized democracy experiment that never came to be. Regardless even if these people were 'gamblers' stealing is still stealing and returning stolen money is the right thing to do.

</comment></comment></comment></comment><comment><USER8> Has the primary language for writing Ethereum contracts been improved? Or is it still a poor language with respect to its type system and other features?

I wasn't that interested in it, but the idea of programmable contracts was intriguing. The main issue is that they should be declarative/logical in nature, as that's what most contracts are, instead the primary language was imperative and had a weak type system (inexpressive). Has this situation improved or are all contracts written in it still destined to have many bugs due to the poor language design?

EDIT: Had to look it up, forgot the name, it's Solidity.

<comment><USER9> Nope, they're still using Solidity.

[http://www.stephendiehl.com/posts/smart_contracts.html](http://www.stephendiehl.com/posts/smart_contracts.html) :

> "Solidity, while being an interesting proof of concept, is dangerously > under-contained and very difficult to analyze statically."

Solidity docs are here: [http://solidity.readthedocs.io/en/develop/solidity- in-depth....](http://solidity.readthedocs.io/en/develop/solidity-in- depth.html)

No referential transparency, no purity, no algebraic data types . . . it's scary stuff for writing contracts.

It sounds like the core team has realized what a hole they're in and are taking it seriously, which is great. But I think a lot of the Etherium-related businesses still have no idea what a sandy foundation they're building on. It's going to be ugly.

<comment><USER2> Solidity is the most widely adopted language, but there are other choices including Serpent (Python-like)and LLL (lisp-like).

A few developers I know use Serpent because it is simple and stable (meaning it has not been changed or updated for a while, unlike Solidity which they say is continually being tweaked in a manner that can be aggravating).

Interestingly, Vitalik's preferred language (say for prototyping Casper algorithms) is Python. He created Serpent and is now working on Viper, which sounds like a next-generation Serpent. Viper is being implemented in Python3.

You can see the work in progress at: [https://github.com/ethereum/viper](https://github.com/ethereum/viper)

<comment><USER9> Python is a nightmare for static analysis. Basing anything contract-related on it is the opposite of reassuring.

I think there are some really cool ideas in Etherium. Proof-of-stake is great. Provably terminating functions are great! These ideas deserve to be paired with a higher level language worthy of them.

</comment></comment></comment></comment><comment><USER10> Ethereum lost all my trust when they hardforked over a contract mistake. They are never getting that back. I'd recommend rebranding the project to focus on the community-driven aspect. They are no better than our current legal framework.

<comment><USER6> smart contacts are just code, they are not 'legal documents', not everyone (most?) subscribes to the whole 'code is law' meme.

</comment></comment><comment><USER11> In related news, a company built on top of ethereum performed a crowdsale earlier today that ended after 2.5 minutes when their 2 million dollar funding goal was successfully reached. (There is some initial disagreement about how to measure the time appropriately, it may have been several minutes longer)

[https://www.reddit.com/r/ethereum/comments/5u6uhb/melonport_...](https://www.reddit.com/r/ethereum/comments/5u6uhb/melonport_ico_is_filled_in_25_minutes_many_thanks/)

<comment><USER12> ... And it's quite probably illegal in the US, given SEC rules with respect to privately held companies with large number of owners.

Relatedly, from the Reddit thread:

> ICOs have nothing to do with ethereum. They can raise by any cryptocurrency > existing or that will exist in the future. So far, they've mostly been used > for scams, although I'm sure some legitimate projects will also be funded.

Is there a meaningful response to this? This is a serious question - how can I tell the difference between an ICO scam, and one that isn't? Are there any examples of sustainable businesses arising from ICOs, or are all of them pump- and-dump schemes?

If I get defrauded by a company putting out an ICO, will anyone go to jail?

</comment></comment><comment><USER13> This article veers between erroneous sensationalism and strategic deception.

I will attempt to debunk a few of the most important errors in this article.

In short, the author takes the position that the promise of blockchains is immutability; and that by hardforking, Ethereum proves that "immutability" requires trust:

> We aren't actually trusting the blockchain technology; we are trusting the > people that support the blockchain.

We should start by observing that un-mutated Ethereum - Ethereum Classic - still exists. You can mine its blockchain and run contracts on its virtual machine. So whatever point there was to be made about the untrustworthiness of "immutability" seems false, since the "immutable chain" is still there chugging along. The only problem is that nobody _actually_ wants immutability, once they really think through its permutations.

\---

I will posit that "immutability" is a red herring. While some people did promise immutability, this was a false promise made by _some_ people. _Other_ people have instead said for years that consensus blockchains like Bitcoin are not - and don't need to be - in fact shouldn't be - "immutable." I will further posit that this is in fact the majority view.

In fact there is a perfectly clear reason why a blockchain might "mutate" and fail to honor the contract as it is written in code: the contract sufficiently harms the economic majority of miners and holders.

And that is why such "mutability" is not bad, but in fact desirable. _Otherwise, all that is needed is the invention of some sort of poison contract, and then the network would be unable to administer its own antidote._

This is in fact what happened when someone mined some 90M Bitcoin in 2010 _while everyone else was running code that considered these to be valid coins._ Obviously, there was a fork, and the perpetrator's 90M Bitcoin were taken out of the ledger. And a good thing, too: if "the code was _really_ the law" then those would still be 90M valid Bitcoin and the whole project likely would have been dead some time ago as the malactor would own something like 90% of the money supply.

> The code was supposed to be the law. If you didn't see the weakness in the > software, that was your problem

Ironically, because this is in fact a true statement, the author's point is exactly wrong.

The code _is_ the law - not just The DAO's code, but also _Ethereum 's code_, on which The DAO depends. Ethereum code is not only also "law", but in this sense, it's the "highest law in the land" with respect to contracts executed on its virtual machine.

It should be patently obvious that Ethereum's code permits forks, "soft" and "hard." It should therefore be patently obvious that any promise of "unstoppable contracts" is simply _overpromise._ The Ethereum global VM came to consensus that The DAO was not just a failed contract (buggy Ethereum contracts happen all the time) but a failed contract so toxic as to be a threat to consensus.

So, by following one chain, a group of users may declare its will that The DAO contract be "held invalid." By following another chain, a different group may declare its will that the DAO contract be held "valid." Each group actually got its will.

\---

Consensus blockchains like Ethereum and Bitcoin are not "immutable" and never were, in the sense that all it takes is someone to mine a fork, and the chain "mutates." This is the "permissionless innovation" aspect of blockchains: _anyone can create a fork - though it takes a lot of hashpower to protect a fork from hashpower attack._

But on the other hand, consensus blockchains _are_ immutable in the sense that nobody can compel you to follow a "mutated" chain and you are always free to continue to mine on the original chain. Moreover you can hold coins on either - or both - chains. This is the non-compulsory nature of blockchains: _nobody is forced to hold coins on anyone 's fork - though it takes a lot of money to protect the value of a forked coin._

Since anyone can create a fork, but it takes a lot of hashpower and coin holdings to sustain a fork, the system on the whole is highly resistant to - but fortunately not completely immune from - hardforks.

Even "contentious" hardforks. Like the DAO rollback.

The beauty is that hardforks provide automatic market choice. One day there's only one Ethereum, and the DAO attacker who holds a not-insubstantial percentage of the entire money supply. Then there's a fork, and everyone who held Ethereum now holds coins on _two_ chains - Ethereum and Ethereum Classic, and can signal to the market by holding coins on one chain and selling them on the other - or hedge by holding coins on both chains.

Do we really want true "immutability?" In the case of Ethereum, the market of Ethereum users was offered a choice of either "mutated Ethereum" and "non- mutated Ethereum." Since the split, the market has fairly consistently valued "mutated Ethereum" over "non-mutated Ethereum" roughly 10:1 - and as the article points out, even "non mutated" Ethereum Classic found itself facing a hardfork. Uh oh.

Forks are good, because they allow markets to place bets on which outcomes they prefer. It's also good that it's really, really hard to create economically-viable fork.

Getting back to the first paragraph of the article:

> on that day, after much deliberation and hand-wringing, in the aftermath of > a multimillion-dollar swindle from his automated, algorithm-driven, > supposedly foolproof corporation, Vitalik Buterin, then 22 years old, > announced the 'hard fork' of the cryptocurrency Ethereum.

Vitalik is a respected developer. I think there's a valid argument to be made that certain high-profile devs carry more influence than is their due - but no developer controls any consensus blockchain - not Ethereum, not Bitcoin. Ethereum, like all consensus blockchains, is "controlled" by its ecosystem of miners and users.

"Devs propose, the market disposes." And we have seen - the market preferred the forked Ethereum.

> By making that announcement, Buterin shattered certain tightly held > assumptions about the future of trust and the nature of many vital > institutions that make modern life possible.

I hope by now we see that the only thing that Ethereum shattered is the overpromise and undesirability of "immutability."

\---

I hold in each hand a cryptocurrency.

In the left hand, I offer a truly immutable cryptocurrency. The economic fundamentals of this currency _cannot be changed by the will of man even if things start going wrong with the initial assumptions upon which the money was based._

In the right hand, I offer a _self-improving_ consensus blockchain-based cryptocurrency. This currency cannot be easily forked, but when it does, two things will be true: the market must value the change quite badly to stimulate a fork, and you will be permitted to hold coins _on either side of the fork as you see fit._

Take your pick.

[edits: a lot of stuff - I got onto a bit of a long topic and realized it needed some editing. It still does.]

<comment><USER14> > anyone can create a fork - though it takes hashpower to protect a fork from > hashpower attack.

Minor aside, unlike Bitcoin, Ethereum doesn't use hashpower (proof of work) as its voting currency, it uses proof of stake.

So in order to convince the network of a lie, you need to be willing to put up monetary bets against the truth, and then pay them.

This is very unlike Bitcoin, where you buy your mining rig, and then own it. If you pay to fork Ethereum, your real money is at stake.

And the financial incentive for people with even more money than you is to call your bluff and put up a bigger bet against your lie and get the cash _and_ get your lie taken off the books.

Although they have the price structure set up so that calling a bluff is much cheaper than lying. So really even someone with a tenth of your budget can afford to call your bluff.

<comment><USER15> That's a pretty good description of Ethereum's proof of stake but it won't be in production for a year or so; for now it's still on proof of work.

</comment></comment></comment><comment><USER16> I started to read about Ethereum and installed the Wallet but I dont understand why the blockchain size increases so big and how fast ?

It downloaded 500MB on my SSD and I stopped it, I've read that it has to download about 15GB. Thats too much for me. Do the other projects download such big blockchains also ? I mean 15GB for each project ?

<comment><USER17> Popular cryptocurrencies process many thousands of transactions per hour, and many wallets choose to retain a large fraction of that data. In which case a few years of operations easily yields dozens of GB of storage.

In theory though, through the magic of Merkle trees, a superlight client could get away with needing only a few KB of storage, accounting for the paths through the Merkle tree that witness its spendable outputs. A discussion about such a setup for Bitcoin can be found for instance at

[https://bitcointalk.org/index.php?topic=88208.msg1896213#msg...](https://bitcointalk.org/index.php?topic=88208.msg1896213#msg1896213)

I don't know of any crypto-currencies that have implemented these UTXO commitments that would allow for such wallets though...

</comment></comment><comment><USER18> for sure Etherum's hard fork was not and will not be the most important thing that happened in my or our lifetimes as said in the blog post

<comment><USER19> The article says "philosophically interesting" – unless I am missing something, that's a very different thing than what you're claiming the article says.

</comment></comment><comment><USER20> What does he even mean by "fall of Ethereum" [https://coinmarketcap.com/currencies/ethereum/](https://coinmarketcap.com/currencies/ethereum/)

</comment><comment><USER21> Yes of course. Ethereum is dead. Bitcoin is dead. China banned bitcoin.

Exactly once a week, a story like this pops up. Mostly written by someone who thinks that "blockchain is the new big-data of the cloud".

<comment><USER22> I didn't get that from the article at all. The point that blockchains haven't done away with trust is an important one. That the argument that a post-fork blockchain would be less trustworthy than it was before the fork gets made so often tells me this article offers useful information. (The issue with forks isn't whether or not they do occur, but rather whether or not they can occur. A fork that can occur is a fork that just hasn't occurred yet.)

</comment></comment><comment><USER23> Big part of releasing new technology is timing. And Ethereum came too soon. Ethreum is big, but people just don't know it and I'm very curious what "news" will send ether up.</comment>


Ask HN: How do I send an email to myself that I will receive in 10 years? - <AUTHOR>

I want to give myself a long term reminder. I think email is the best way to do it. Google Calendar is another way. But calendar seems less open. <comment><USER2> <http://futureme.org/>

Pretty cool site actually...

<comment><USER3> totally. such a simple idea...but I've done it a bunch of times, and it's pretty awesome to get an unexpected surprise from the past.

</comment></comment><comment><USER4> I use followup.cc.

But realistically, to assume _any_ website will be around in 10 years is probably a bit risky. I'd set up a reminder in a couple of years reminding you to reevaluate whatever service your using in regard to it's longevity (and set up another two-year reminder).

</comment><comment><USER5> if i had to guess what service will still be around in 10 years .. i would guess google calendar, create an event and reminder.

</comment><comment><USER6> Service-agnostic options are best.

Have a lobbyist slip a line item in a bill requiring the government to e-mail you your message or else give you a sizeable tax break. :P

</comment><comment><USER7> I use Boomerang for Gmail. You can the email, save it first. Then schedule to it to be delivered to your list of addresses at a specific time.

</comment><comment><USER8> hmm, you can create a reminder in google calendar..</comment>


MSFT engineer starts Juneteenth Conf: build community for Black people in tech - <AUTHOR> https://www.businessinsider.com/microsoft-engineer-michael-brown-organizes-juneteenthconf-black-tech-2020-6 <comment><AUTHOR> July 19-20

First panel starts Friday, June 19, 04:00pm - 05:00pm (UTC)

[about 2.5 hours from this comment's posting]

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

On HN:

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

> Michael Brown, senior software development engineer at Microsoft, organized > JuneteenthConf, a virtual tech conference to build community among Black > people in tech that will take place Friday and Saturday.

> During this conference, attendees can listen to talks from 31 Black > developers and designers and attend a town hall to discuss ongoing current > events.

Original title was too long. It was:

A Microsoft engineer is organizing a conference in honor of Juneteenth to build community among Black people in tech</comment>


Dark Mirror: Edward Snowden and the American Surveillance State - <AUTHOR> https://www.washingtonpost.com/outlook/reassessing-edward-snowden/2020/05/13/fc7a9054-8a23-11ea-9dfd-990f9dcc71fc_story.html <comment><USER2> [http://archive.today/Yt03v](http://archive.today/Yt03v)</comment>


How to avoid merge conflicts - <AUTHOR> https://dudzik.co/digress-into-development/how-to-avoid-merge-conflicts/ <comment><USER2> How does this help avoid merge conflicts in any way? Git is already smart enough to merge changes to _different_ parts of the same file. If you move different parts of a file to some other place, you're not changing anything interesting from the POV of git-merge.

The actual game changer is separating concerns properly. Small classes _tend_ to be more cleanly separated, but it's not a given. And when your concerns are properly separated, it doesn't matter much if the separated concerns happen to be in separate files or not.

</comment><comment><USER3> fossil helps alleviate these issues with it's autosync feature: [http://fossil-scm.org/index.html/doc/trunk/www/concepts.wiki](http://fossil- scm.org/index.html/doc/trunk/www/concepts.wiki)

</comment><comment><USER4> It's rather cute to so naively believe such practices can be maintained.

<comment><USER5> This comment breaks these two site guidelines:

 _When disagreeing, please reply to the argument instead of calling names. "That is idiotic; 1 + 1 is 2, not 3" can be shortened to "1 + 1 is 2, not 3."_

 _Please don 't post shallow dismissals, especially of other people's work. A good critical comment teaches us something._

Could you please read [https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html) and stick to those rules when posting here?

</comment></comment><comment><USER6> Most my merge conflicts happen to be xml based files e.g csproj</comment>


Patriot Act Renewed Without Any New Civil Liberties Protections - <AUTHOR> http://www.eff.org/deeplinks/2010/02/epic-fail-congress-usa-patriot-act-renewed-without

<comment><USER2> There's an unfortunate reality here which is that the Government can't really prevent terrorist attacks. Israel is much smaller and they've tried much harder and they can't prevent them so the U.S. stands very little chance.

So another attack will happen some day. It's a given (and both the Bush and Obama administrations have said as much)

That's where the Patriot Act comes in. Every politician believes it would be the death of their career if they change or reject the existing law only to have that inevitable terrorist attack take place right after. And given how irrationally people act after an attack the politicians are probably right.

So we're stuck with the Patriot Act until politicians become brave or the public stops acting irrationally after an attack. I won't be holding my breath.

<comment><USER3> More accurately, the government _can_ prevent terrorist attacks, but that will take sophisticated and unpopular foreign policy measures. The Patriot Act, security theater, war, and other such nonsense is easier to sell to voters and lobbies.

<comment><USER4> I think the implication above is that you can't prevent _every_ terrorist attack. I think that's a pretty defensible argument to make.

Geography alone makes it pretty obvious that you can't stop a determined group from carrying out an attack. So that leaves making nice with those groups so that they don't want to attack us.

Given the fact that there are radical groups at either end of just about any political or religious spectrum you can think of, the idea of appeasing all of them is nuts. The very actions necessary to appease one group could incite another to attack.

This is, of course, putting aside the idea that the motivation behind some violence isn't motivated by our actions at all, but rather by internal politics within extremist groups. There are a lot of folks out there who are awfully fond of power, and one of the easiest ways to garner power is to rally people against a common enemy (who cares if that "enemy" actually instigated anything... that's easy enough to spin)

So, all that to say... We're never going to prevent every terrorist attack, we can only work to minimize the collateral damage. In my opinion, the Patriot Act is just about the biggest example of collateral damage we've seen resulting from terrorist attacks, and I'm saddened to see that Congress chose to do nothing to limit that.

<comment><USER5> Use of violence to further political agenda is hardly a new phenomena. The straw man argument puts forward the "terrorist" as a new kind of threat to society which, alas, forces the good people hired by the internationals to represent the people to throw out the baby and bath water of "Inalienable" Rights, Due Process, Rule of Law, and civilized norms so that (apparently completely incompetent) security apparatus can prevent cave men with box cutters defeating the security envelope of the United States of America (aka the "empire" LOL).

"We the People of the United States, in Order to form a more perfect Union, establish Justice, insure domestic Tranquility, provide for the common defence, promote the general Welfare, and secure the Blessings of Liberty to ourselves and our Posterity, do ordain and establish this Constitution for the United States of America."

Dear framers, your posterity does NOT deserve the "Blessings of Liberty". Now, respectfully, why don't you roll over cause that is the only revolution that USA and your posterity can muster at this point.

</comment></comment></comment></comment><comment><USER6> After TARP passed in the midst of one of the largest protests of a congressional action that I've witnessed in my life is anyone surprised? The Congress care about increasing the power of the government and doing whatever it is they want to do when they're in power. They like the new powers when they are in power and criticize them when they are out of power. Though the Neocons just criticize how much they are used rather than their existence so I guess they're more consistent.

I wonder when the small government conservatives will leave the Republican party and when the anti-war, pro civil liberties liberals will leave the Democratic party?

I think Barack Obama did a masterful job of pacifying the anti-war left by annoying his intention to withdraw from Iraq after a certain period of time. I don't know that it will actually happen but it was a pretty smart move to get it off of people's minds for the most part.

We don't have a two party system but we have a bi-factional ruling coalition. I wonder how long it will be before more people realize this.

<comment><USER7> _After TARP passed in the midst of one of the largest protests of a congressional action that I've witnessed in my life_

I guess you weren't alive in 2003 for the Guiness world record largest protest in human history against the Iraq war, including 400,000 in New York, 200,000 in SF, etc

[http://en.wikipedia.org/wiki/February_15,_2003_anti- war_prot...](http://en.wikipedia.org/wiki/February_15,_2003_anti-war_protest)

EDIT: took out the London and Rome references

<comment><USER8> > including 2 million people in London, 3 million in Rome

Is that outside the US? I don't recognize these cities.

<comment><USER4> Maybe guelo meant London, Arkansas and Rome, New York.

</comment></comment></comment></comment><comment><USER9> It's not really surprising if you consider the options that were available:

1) Renew the current law. No real upside for any legislator, but no significant downside.

2) Reject the current law. Very little upside: the doves, paranoids, libertarians, and tea party activists who might actually care about this options are insignificant minorities within the electorate. Significant downside: it opens a legislator up to all sorts of "<insert incumbent name here> is making it easier for terrorists" attack ads regardless of the actual merits of the argument.

3) Amend the current law. An effort which would have needed to start a while ago. With enough bi-partisan support this could have limited the downside risk and enabled supporters to make the sort of "we are being smart about protecting ourselves form terrorists while protecting liberties" arguments that would have electoral upside, but given the current legislative climate it would have been a hard task to get the early defectors form the status quo which would have provided a bit of momentum.

<comment><USER10> _"2) Reject the current law. Very little upside: the doves, paranoids, libertarians, and tea party activists who might actually care about this options are insignificant minorities within the electorate. Significant downside: it opens a legislator up to all sorts of " <insert incumbent name here> is making it easier for terrorists" attack ads regardless of the actual merits of the argument."_

If you haven't noticed, the Republicans and their mainsteram media lapdogs are going to attack the Democrats as being "weak on national security" and "weak on terrorism" no matter what they do.

If they want not to be attacked at all, they should just stay completely out of politics.

Of course, they should pick their battles, and fight the ones that are really important. It's obvious from their inaction on and even outright support of the PATRIOT Act, that civil liberties just aren't that important to them, no matter what their rhetoric might be.

The same has been true regarding their "opposition" to torture, to the Iraq war, to Bush's Supreme Court nominees, their support of the "public option" for health care, etc. The Democrats have shown very little spine on these matters, when it comes time to walk their talk. And the public is noticing. That's why Congress has such a low approval rating, and why the shine is wearing-off Obama.

Their spinelessness and willingness to be the Bush-lite party could cost them dearly in the mid-terms and 2012. They're just lucky the Republican party is tearing itself apart with their "tea party" splintering and fighting over who are the "real conservatives".

<comment><USER9> _If you haven't noticed, the Republicans and their mainsteram media lapdogs are going to attack the Democrats as being "weak on national security" and "weak on terrorism" no matter what they do._

Of course they were going to get attacked on that point. What matters is if there is a public perception about a candidate or party that the attacks can use as leverage to rise above the level of standard electioneering and actually influence a voter.

 _The Democrats have shown very little spine on these matters, when it comes time to walk their talk. And the public is noticing. That's why Congress has such a low approval rating, and why the shine is wearing-off Obama._

You have obviously confused these people with some idealized version of the world that you imagine might have existed -- they were elected and get to do what they want to or are able to do, not what you want them to do. They are all doing pretty much what they campaigned on and what would be expected of them given the circumstances.

<comment><USER10> _"They are all doing pretty much what they campaigned on and what would be expected of them given the circumstances."_

You must be joking. Did Obama withdraw all combat troops from Iraq? Did he close Guantanamo? Where are all those "green jobs" he promised? Funding nuclear power plants doesn't exactly qualify. What exactly has he done that was promised during the campaign? From what I can see he's backpedaled or even completely flip-flopped on what he promised.

But it's not just about Obama. The Democrats have been heaping on the rhetoric to seem like an opposition party during the whole Bush term, but when it came time to actually vote against his policies they virtually always caved (with social-security being the only notable exception) and voted along with Bush and the Republicans, whether it was on the funding of the Iraq war, or on the PATRIOT Act, on torture, on habeas corpus, on wiretapping, etc.

It's not some "fantasy" that they were against these things. They were, _in word_. But when it came time to act on their rhetoric they caved.

Now that the Democrats are in power, they have more of a chance to effect change than ever. But what are they choosing to do with that chance? They're choosing to support and extend Bush's policies (by keeping the Iraq war going, by expanding the war in Afghanistan, by fighting to keep innocent people in jail without trial, by continuing to send prisoners to be tortured in other countries, etc..).

This outrageous behavior is not making them any fans, except among the neocons, who have heaped much praise upon Obama's cabinet nominees, and must be very pleased with what they've accomplished.

</comment></comment></comment></comment><comment><USER10> You know, the Democrats didn't have to renew the PATRIOT Act _at all_.

If they were serious about protecting civil liberties that's just what they'd do. And the Republicans couldn't have stopped them.

<comment><USER11> I don't know why anyone pretends that these people actually care anymore. They're there to get money and power, and to make sure they can get it again when they go up for re-election. They want to be everything to everyone, which leads to big problems because you can't do one thing without pissing off someone, so then they do the other thing too, but in amounts just enough that neither side will freak out too much, and just so that the Reps can claim to support whatever suits their campaign.

Take the health care bill, for instance. It doesn't do anything helpful, just forces everyone to pay for a private insurance policy. Republicans can say they protected business, Democrats can say they reformed health care and everyone now has access, businesspeople stay happy and their money keeps pouring in, normal people are hoodwinked into believing their side did whatever it was they wanted, and this cycle perpetuates.

</comment></comment><comment><USER12> Maybe I'm a defeatist but Patriot Act or no Patriot Act I believe they're just going to do this stuff anyway. These intelligence organizations aren't really held accountable often to the public for their actions. Just look at all the shady stuff they've done over the decades -- and that's just the stuff we know about. Who knows what really goes on inside the NSA or CIA? If they're out to get you I really doubt laws are going to save you. We know for an absolute fact this stuff was happening before the Patriot Act was law. Who went to jail? Was the President who permitted it held accountable? Nope. Were a significant number of the Representatives and Senators who voted for the Patriot Act expelled from office by voters? Nope. Maybe America is getting what it deserves. It looks like civil liberty violations are going to have to get _much_ worse before Americans turn off their TVs and put down their Big Macs and actually care about the issue. The solution won't be so simple as repealing the Patriot Act either.

</comment><comment><USER13> The Patriot problem isn't going anytime soon. The levels of surveillance enabled by modern technology were going to get used, somehow, by governments.

Counterterrorism is just the manifesting justification of this inevitability.

The debate on privacy -- or more accurately, the debate on the inflection point between real safety vs real privacy -- will be long and hard. It's a complex question that hasn't had an answer settled by any means.

My guess is that it's going to take a lot of work by folks like Wikileaks and the courts to make understood how the power is really being used. Only after a few cycles of (massive-problem -> privacy regulation) are we going to see some rational work in this area.

Sadly this is probably the only way it can happen; there just isn't any real data on what levels of privacy are appropriate with a civilization built on current levels of cyber-interconnection.

</comment><comment><USER14> yet to be signed, just passed by the house

</comment><comment><USER15> I'm shocked, shocked!

<comment><USER16> Your winnings, sir.

<comment><USER17> N.B. The parent comment is a seemingly obscure movie reference,* but is surprisingly Google-able.

*The movie itself is not obscure at all.

<comment><USER16> Monsieur Raganwald, what kind of a hacker is Captain Foxy? Raganwald: Oh, he's just like any other hacker, only more so.

</comment></comment></comment></comment><comment><USER18> Where can I find a list of the people who voted against the renewal? It's turning out to be harder to find than I had thought.

<comment><USER18> It took me a while, but for anyone else who is interested this explains a bit why it's hard to find the voting record <http://bit.ly/92Qfz4> and this is the roll call for the vote which also shows the break down for each party <http://bit.ly/cVkRiC>

</comment></comment><comment><USER19> Maybe next year

</comment><comment><USER20> It might be a failure of courage by our representatives; or maybe there are too many irons in the fire to get this done right. Not necessary to conjure up conspiracies, plenty of ordinary human reasons for this to take too long.</comment>


Yahoo to require Yahoo ID; no more Facebook or Google logins - <AUTHOR> http://news.cnet.com/8301-1023_3-57619917-93/yahoo-to-require-yahoo-id-no-more-facebook-or-google-logins/ <comment><USER2> I'd like to see some stats on Facebook login vs. Google login usage. I suspect Facebook login is used more often than Google, and now Yahoo! is trying to be another also-ran in this field.

The thing is, people want the simplicity of sign-in, and I don't know that Yahoo! services are compelling enough at this point. Their are too many other competitors, all likely using Facebook or Google, and Facebook pretty much has the social aspect of these services locked up. How many of us have as many social connections on Google+ as we have on FB?</comment>


Mongolian Deadbeef--node.js driver for MongoDB - <AUTHOR> https://github.com/marcello3d/node-mongolian

<comment><USER2> What's the advantage of this over the node-native-mongodb driver?

<comment><AUTHOR> as of right now, nothing because this is super raw and hasn't been fully tested. I think since this has built in Node.js from the ground up and since it is designed to be front&back end integrated with the shell it will free up lines of code and be more flexible--also issues of translation will be streamlined.</comment></comment>


Software Industry Jobs in Oakland, California - <AUTHOR> http://soggy.jobs/computer/united-states/california/alameda/oakland/ <comment><AUTHOR> With all the bravado of P.T. Barnum, I am building The Global Computer Employer Index.

It's organized geographically, with direct links to each company's own careers or jobs portal.

It's not just for engineers but for project, product and personnel managers, tech support, quality assurance and technical sales and marketing.</comment>


After "a year and a half of study, discussion, and hard work" BU unveils new logo - <AUTHOR> http://www.bu.edu/today/campus-life/2008/01/25/updated-logo-aims-modernize-unify-bu <comment><USER2> Didn't see any mention of the "Law of Optical Volumes"

<http://blog.wired.com/underwire/2007/04/the_math_behind.html>

</comment><comment><USER3> Looks like an improvement. I wonder how much money they paid for what are essentially tiny tweaks?

<comment><USER4> They paid for hand-holding and a patina of authority. All in the name of centralizing control....

They could have created a Darwin cull facility for the evolutionary developments they observed. That would have provided a path for growth.

They could have identified the users that wanted things to not change (alumni with open wallets for halcyon images), and mass-customized the logo presentation.

Recording and using preferences? Acknowledging and using diversity? Un- Possible!!!

Maybe they should update the school slogan while they're at:

"BU. Where you can make your voice heard.º"

º offer only valid for strategy-level administration officers.

</comment></comment><comment><USER5> Sigh. I am a graphic artist by trade and I'd feel a bit bad if I got payed to do that logo.</comment>


Overstock CEO stalks critics on Facebook - <AUTHOR> http://garyweiss.blogspot.com/2009/12/how-patrick-byrne-stalked-critics-and.html

<comment><USER2> Can someone explain exactly what's going on here between these guys? It all seems like a bunch of schizophrenic rambling.

I have no opinion on Overstock as an investment or business, but their market cap is around $300mm; I don't see how hedge funds could make enough shorting it for it to be worth committing fraud.

<comment><USER3> Patrick Byrne, the CEO of Overstock, has been on a crusade against naked short sellers, blaming a group of hedge funds for driving down his company's stock. He's been all but called a nutjob in the financial press, which has led him to criticize certain journalists as being in bed with the short-sellers.

The most recent episode concerned Deep Capture, a blog that supports Byrne. They were able to obtain the Facebook friends lists for the hedge fund managers and journalists targeted by Byrne and were able to show a large number of cross-links between the journalists and fund managers, and in some cases their families. Deep Capture was careful to avoid making specific charges, but the basic argument is that it establishes the possibility of collusion between the fund managers and an unprofessionally close personal relationship with the journalists.

</comment></comment><comment><USER4> If the market tanks again, we can rise against the shortsellers for destroying the economy. As for now, this is paranoia and is ignorant of how markets operate.

Further info: <http://bit.ly/8M0Sj7> \-- From The Big Picture (Ritholtz)

</comment><comment><USER5> You know there's another side to this story.

The same shorts that have attacked Overstock's CEO similarly attacked the CEO of Fairfax Financial:

"According to court documents, the hedge fund companies allegedly retained an obscure operative named Spyro Contogouris to drive down Fairfax's share price, a task he went about with alacrity. In 2005, he's said to have approached the company's former CFO, claiming (falsely)that he'd been deputized by the FBI to obtain evidence of financial improprieties. He is thought to be the author of a widely circulated 30-page letter that, among other things, compared Watsa to the convicted fraudster Martin Frankel. (It was even sent to the priest of Watsa's church, St. Paul's Anglican on Bloor.) In 2006, several false rumours began circulating: one claimed that the RCMP were pursuing Watsa; another said that they were about to raid Fairfax's office; yet another claimed he'd placed his assets in his wife's name and fled the country. By then, the company's stock had tumbled from highs in the $400 range to less than $100 a share."

full article: [http://www.grahamanddoddsville.net/wordpress/Files/Gurus/Pre...](http://www.grahamanddoddsville.net/wordpress/Files/Gurus/Prem%20Watsa/Prem%20Watsa%20-%20The%202%20Billion%20Dollar%20Man%20-%20Toronto%20Live%20-%2004-2009.pdf)

<comment><USER6> Forgive me if I'm skeptical of someone whose account was created 17 minutes ago and has only made 1 comment.

<comment><USER5> Right, I created the account because it's not exactly popular to defend someone like Patrick Byrne (which proves my point since I was down-voted, even though I provided evidence of the kind of tactics that are used by certain short sellers... go figure)

I'm just saying that short sellers use tactics that are just as bad as what Byrne used here (I don't condone making a fake facebook profile, pretexting, etc).

But the fact is that in the Fairfax case, they engaged in a pretty complicated campaign aimed at driving down the stock. One of the method was to feed stories to journalists who specialize in "financial fraud".

Overstock already received $5M of settlement from Rocker Partners: "Overstock.com (OSTK) this afternoon said that Rocker Partners, an investment firm now known as Cooper River Partners, will pay the company $5 million to settle long-standing litigation alleging that Rocker and others engaged in "libel, intentional interference with prospective economic advantage and violations of California's unfair business practices act."

<comment><USER7> > "I created the account because it's not exactly popular to..."

by becoming anonymous you show that this isn't important. if something is important to you then all the more reason to stand behind it as yourself. your real-life karma is taking hits when you hide behind anonymity. man up.</comment></comment></comment></comment>


Steve Jobs licensed Amazon's one-click patent for $1M in one phone call - <AUTHOR> https://qz.com/1392502/steve-jobs-licensed-amazons-one-click-patent-for-1-million-in-one-phone-call/ <comment><USER2> In that same Wired story that is the source for the blurb at the heart of this one is the most Steve Jobs tale ever told.

Scott Forstall tells that Steve always insisted on paying for lunch for both of them every time they ate in the company cafeteria together.

Scott felt bad about making Steve wait for him at the checkout if he ordered something customized that took longer to prepare.

However, Steve insisted because he was paying by swiping his employee badge which automatically debited against your next pay period.

Since Steve was paid in stock, with only a one dollar a year salary there was nothing for the company accounting system to debit against, so although he was "the man" at Apple he took a perverse pleasure in simultaneously sticking it to the man.

<comment><USER3> This is the same guy who would trade in his leased Mercedes in less than 6 months so that he could have a barcode for a license plate.

Culturally, he was a hacker--looking for the gaps in institutional systems and getting a perverse pleasure in exploiting them.

<comment><USER4> Billionaire sticks it to the Man by carefully following his rules and getting brand new Mercedes every six months.

<comment><USER5> Yeah I feel like this is more "sticking it to the average person who could never afford this" than "the man"

Steve Jobs' personality had a large role in pushing his success, but it's also the type of personality of someone who just wants to be different because they think being different is superior (and yes: sometimes it is, sometimes it isn't). If he were a kid in the 90s he'd be ~~ tYpInG aLl hIs ImS lIkE tHiS ~~

<comment><USER6> Like this? NeXTstep NextStep NEXTstep...

</comment></comment></comment></comment></comment><comment><USER7> Speaking of licensing and Jobs's quick decision-making, the following is what you don't usually hear from Jobs's inner circle: ([https://jonathanischwartz.wordpress.com/2010/03/09/good- arti...](https://jonathanischwartz.wordpress.com/2010/03/09/good-artists-copy- great-artists-steal/))

"I feel for Google – Steve Jobs threatened to sue me, too.

In 2003, after I unveiled a prototype Linux desktop called Project Looking Glass*, Steve called my office to let me know the graphical effects were 'stepping all over Apple's IP'. (IP = Intellectual Property = patents, trademarks and copyrights.) If we moved forward to commercialize it, 'I'll just sue you.'

My response was simple. 'Steve, I was just watching your last presentation, and Keynote looks identical to Concurrence – do you own that IP?' Concurrence was a presentation product built by Lighthouse Design, a company I'd help to found and which Sun acquired in 1996. Lighthouse built applications for NeXTSTEP, the Unix based operating system whose core would become the foundation for all Mac products after Apple acquired NeXT in 1996. Steve had used Concurrence for years, and as Apple built their own presentation tool, it was obvious where they'd found inspiration. 'And last I checked, MacOS is now built on Unix. I think Sun has a few OS patents, too.' Steve was silent.

And that was the last I heard on the topic..."

so this is one example in which Jobs's poor decision making didn't pan out as he had hoped.

<comment><USER8> Is the * after Looking Glass part of the name, or did you mean to put a footnote on it and forget?

<comment><USER7> My bad; that's not my footnote. Please see the original post:

      * To see a Looking Glass demo, click here – it starts at the ~2:00 minute mark.

<comment><USER9> I remember the project Looking Glass.

It was one "few days work" demo somebody threw around when they first were able to manipulate windows in 3D in a compositor with Java, but it got traction in parts of the OSS blogosphere/forums as some revolutionary new desktop experience (even though there were already several similar commercial offerings, and itself was little more than some little-thought 3D manipulations and in no way an actual full SUN project).

It was touted as "SUN innovation" example, and predictably, it got nowhere.

Here it is in all its glory. Even then it was a derivative, no-sense concept: [https://www.youtube.com/watch?v=u1JwfgBv5bg](https://www.youtube.com/watch?v=u1JwfgBv5bg)

I've seen the same story play out several times.

E.g. there was a node.js based editor that was the talk of HN for a while. Got nowhere, was just a simple editing window + crude syntax highlighting, and it was obvious from the start that it wont go anywhere with its direction and chops, but not if you heard the gasps just because somebody powered an editor with Node:

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

Or the Lighttable editor -- itself being abandoned for the next shiny endeavor, which again makes sense as it was just some inline REPL touches on top of a crude editor. At least that explored the design space a little, but the promises where touting it as the next thing that will revolutionize programming...

<comment><USER10> The Lighttable Saga is def a sad one and occasionally kind of irritates me.

I have no idea of what "really happened", but my layman's interpretation of how that went down is...

\- Make a great thing w potential.

\- Kickstarter it.

\- Rush to meet the KS deadline.

\- Get frustrated. Abandon it.

\- Take VC money to take "the next step" (Eve)

\- Spend VC millions over X years, release some ideas in WIP repos, nothing holistic or truly practical.

\- Fold.

\- Then go to work for a proprietary Database Tools Vendor who will implicitly inherit any learning made during the previous projects.

Sadness and "loss" everywhere. If I was a VC in that early deal, I'd be pissed when Looker "finally releases" Eve as some middle-ware BI system.

</comment></comment></comment></comment></comment><comment><USER11> It worked out well for both of them. I recall, at the time, when Apple did the deal for $1mm, that it provided a lot of validity to Amazon that their patent was for real, and any vendor that was directly competitive with Amazon would likely think, at least a little bit longer, before directly ignoring Amazon's patent on "one-click" purchasing.

<comment><USER12> This article does not in any way provide us with enough information to conclude whether it was a good licensing deal for either party. It just tells a romanticized Steve Jobs business story.

We don't know if this license helped Apple sell so many products that it paid back the investment.

For Amazon it obviously worked out on two fronts, since they also got paid 1M. Unless you mean that this has to be weighed against lost Apple product sales on Amazon? Were Apple products even for sale on Amazon at the time?

<comment><USER13> Us old timers remember what was happening at the time. It turns out it was an incredible deal for both sides.

The 1-click patent didn't have a great deal of credibility at the time. Many people in the tech industry were railing against Amazon and 1-click. It seemed like such a stupid patent and I think a lot of people didn't expect it to hold up.

Apple launched the iTunes store with $0.99 mp3's during the same period and the whole thing hinged on 1-click shopping. You could click a button to preview and there was one right next to it that would buy the song. No confirmation screens or checkout process. Downloaded and added to your library. It was so easy and people were spending a fortune on there because there was nothing else like it. Keep in mind this is one the heels of the decline of Napster and other mainstream P2P apps. People were being ratted out by their ISPs, sued and settling for $3000 for downloading some crummy song. Here you could do it legally and inexpensively and with a great UX because of 1-click. And for the first time you could buy a single song instead of an entire album. Prior to that, we had "singles" that contained a radio song from the album and a couple b-sides for like $5-8.

Apple had to launch iTunes with 1-click for it to be successful. The $1M license fee cost far less than the inevitable lawsuit would have. They made a fortune with iTunes and used it to enter new product categories. You could argue that that was one of the pivotal moments that transformed the company into what it is today. That licensing fee was highway robbery.

You also have Amazon who, at the time, had an outstanding selection, the best prices, fast handling times, reliable shipping and the most friction free buying process anywhere. Many retail sites didn't even have user accounts back then. You would enter your info with each order. The ones that did have accounts still made you click through several screens to place an order.

Amazon's end of the deal is they got paid $1M to not have to sue anyone (and possible lose) and have their ridiculous patent become credible overnight. The result was they maintained their superior online shopping experience by preventing others from mimicking it and leveraged it to become the beast they are today.

<comment><USER14> Was just thinking, if the click takes you to a page with a countdown timer and a big cancel button, and the page then makes the purchase at the end of the countdown, with the timer length being part of the user account settings, as long as the timer is not zero, that is not presumably a one click purchase, under the terms of the one click patent, as it is not a single action by the customer that purchases the product.

Also, it would be nice anyway to have an adjustable brief cooling off timer on an order, so is a nice implementation idea regardless of the one click patent.

<comment><USER13> I have no idea. In any case, Jobs never would have allowed it. The iTunes Store has the optimal purchasing process that happened to be covered by Amazon's patent. They took the cheap way out. That same UX morphed into the AppStore after the iPhone. Then it made its way into the Apple TV.

Everyone has it now. I wonder if they got as good a deal as Apple did. We all expected someone big to fight that patent. Apple basically said "f- this" and took the easy way out even if it meant everyone else would get screwed. One of the few times Apple had first mover advantage.

<comment><USER14> Jobs wouldn't have allowed it because it is something that would at first glance reduce purchases, as it allows people to back out immediately if they click buy.

As far as design patterns for purchasing go, I would say it is probably more optimal than a simple one-click, if optimising for both the buyer and seller's interests. One-click is more optimal if you are only optimising for the seller.

</comment></comment></comment></comment></comment></comment><comment><USER15> One phone call? If he licenced the patent in one _click_ , now that would have been impressive!

</comment><comment><USER16> one-click patent is one of the most stupid patents

<comment><USER17> From the end of the article:

 _As for the one-click payment system that helped build both their online stores, the US patent to that expired in September 2017._

I could understand allowing a months-long patent of this kind, but 18 years seems about an order of magnitude too long.

<comment><USER18> It take 5-7 years just to get a patent at the moment, the patent system is so backed up. (personal experience, I have 2 and have 4 more in the process)...

</comment></comment></comment><comment><USER7> Did the one-click feature have that much impact on Apple's e-commerce? I thought it was their retail stores that really made difference in how the company sold and communicated with their customers.

<comment><USER19> The App Store uses a form of one-click for buying apps, that has helped Apple immensely.

</comment></comment><comment><USER20> >So he called up Amazon and said, "Hey, this is Steve Jobs," ...

And "Amazon" replied:

"Hello, Steve, my name is Adrian, I will be happy to help you."

Seriously, it is not like he cold called "Amazon", he already knew whom to contact exactly, had already met the relevant executive (or the CEO) personally many times, etc., etc. , and the actual deal was probably closed after several weeks of meetings, a formal legal review and what not.

<comment><USER21> Actually Jobs may very well have called Bezos in the moment. I wouldn't be surprised if it was a verbal/handshake deal up front between Steve and Jeff with any meetings/legal review involving the relevant staff to formalize and finalize coming after they had already reached an agreement in principle. That's often how deals get done at the executive level esp. if the parties know each other.

<comment><USER20> >Actually Jobs may very well have called Bezos in the moment.

Sure, though the article literally says that Jobs "called up Amazon", not Bezos.

Besides the (hopefully) quick laugh, what I was trying to say was that the private/direct phone number of Jeff Bezos is unlikely to have been on a public directory and that the (untold) before is that the two already knew each other personally and had most probably already done business together, the telephone call is only a tiny part of how the deal matured.

There are a lot of these articles that somehow push the concept that some people (geniuses/leaders/etc.) made quick decisions/deals/whatever game changing innovations on the spur of the moment and were successful at that only because of serendipity or intuition.

While this may happen, I doubt that - even if the initial sparkle came "by chance" and "suddenly" \- the merit of the success of this or that deal is to be attributed to that moment alone (as opposed to the before and the after).

More like T. Edison:

Genius is one percent inspiration, ninety-nine percent perspiration.

<comment><USER22> > Sure, though the article literally says that Jobs "called up Amazon", not > Bezos.

Just metonymy --- when we use an inanimate thing to stand in place of a person (like "North Korea agreed to a cease-fire", which is metonymy because the abstract concept of a country doesn't "agree to" anything).

> what I was trying to say was that the private/direct phone number of Jeff > Bezos is unlikely to have been on a public directory

Doesn't need to be public. These high-level people (CEOs, famous musicians, etc.) have easy ways to contact one another. They might have only met once and exchanged numbers "just in case", or maybe the story was a shorthand way of saying "Steve had his secretary call Bezos's secretary right then" (which is entirely possible to do spur-of-the-moment if Apple had ever had contact with Amazon at all). I think the spirit of the story --- that the call took a very short time, maybe a couple minutes --- is totally reasonable.

Tim Cook told a story once that he was unsure what to do at some point with regard to shareholders or something, so he called up Warren Buffett. Apparently they had exchanged numbers once in the past when they had been at some event together or something like that. It was a spur-of-the-moment call without any phone tag, at least as Cook tells the story.

<comment><USER20> >Just metonymy ---

I know, but you cannot use it "asymmetrically" in a case such as this.

Apple may metonymically call Amazon, but if the call (and the deal) is initiated by Steve Jobs, the call (and deal) is received by Jeff Bezos or by one of his top executives.

BTW there is an evident need for symmetry also for the "merit" of the fast decision/acceptance by the receiving party, you cannot incense the one making the fast, direct and serendipitous proposal and then hide the one (person) on the other side that so quickly accepted it (for 1M $) under the metonymy.

>Tim Cook told a story once that he was unsure what to do at some point with regard to shareholders or something, so he called up Warren Buffett.

Yep, he didn't call up Berkshire Hathaway.

<comment><USER22> > but you cannot use it "asimmetrically" in a case such as this.

You absolutely can.

Setting: a restaurant. Steve is another employee.

"Hey, did Steve take the bill to the ham sandwich?"

This is 100% acceptable. Just because _you_ don't use it doesn't mean it's unacceptable. For more on metonymy and examples of it, check out the book "Metaphors We Live By". There are a few chapters devoted to real-world uses of metonymy, and this is absolutely common among native English speakers.

Also, do you have something against using the letter y for the "kit" vowel? I've never seen spellings like "simmetry" or "metonimy" before in any dialect. (Honest question.)

> Yep, he didn't call up Berkshire Hathaway.

Is it so unbelievable that wealthy people might have met once and exchange phone numbers? What use would Berkshire Hathaway be for him? He wanted advice from Buffett directly, not some other person, nor the company as an entity.

Also, your argument doesn't make any sense anymore. Why is it that you feel Tim Cook has to call Berkshire Hathaway (company) and not Warren Buffet (person), but you think that Steve Jobs called Jeff Bezos (person) and not Amazon (company)?

<comment><USER20> >Also, do you have something against using the letter y for the "kit" vowel? I've never seen spellings like "simmetry" or "metonimy" before in any dialect. (Honest question.)

Only typos, sorry, corrected.

>Is it so unbelievable that wealthy people might have met once and exchange phone numbers? What use would Berkshire Hathaway be for him? He wanted advice from Buffett directly, not some other person, nor the company as an entity.

Not at all unbelievable, actually very probable, I was only pointing out how you didn't use the metonymy in your Tim Cook example.

<comment><USER22> > Only typos, sorry, corrected.

Oh, my mistake! I thought maybe it was like how British people spell things differently from Americans, and maybe this was another thing along those lines. Apologies.

> I was only pointing out how you didn't use the metonymy in your Tim Cook > example.

Oh I totally misread that. Apologies again.

Metonymy is not compulsory in any case, but it does serves a specific purpose when it's used. Metonymy is used to draw attention to a person's (or maybe group of people's) identity through an inanimate object. You might talk about the "first violin" in an orchestral setting, but "Jane" (the violinist) when talking about her dreams and aspirations in school. It's just used depending on context and desired mental imagery.

In the Steve Jobs case, it was Amazon that held the one-click purchase patent, so it makes sense that he would call Amazon. Additionally, it may not even have been Bezos he needed to talk to. Maybe it was some other executive or something. The fact that it might have been Bezos is not the important thing, so metonymy is used to say "Steve wanted to acquire this specific thing from Another Company".

In contrast, Tim Cook called Warren Buffett specifically because of his skills as an individual. Calling Berkshire Hathaway wouldn't have made sense because the company doesn't have that knowledge. If Cook had wanted to hire consultation, then he might have called Berkshire Hathaway, but as it was he was talking to a specific individual for personal financial advice.

<comment><USER20> Well, you were close enough, in Italian (my mother language) metonymy is "metonimia" and symmetry is "simmetria", it is not uncommon when I write in English that I wrongly use the italian spelling for words that are very similar.

Anyway, back to the Steve Jobs case, remember that he wanted not only to talk to the entity that held the patent, he also wanted to make a 1 million $ proposal for acquiring the license _and_ wanted an immediate reply, so he needed to talk to someone with enough power to accept the proposal _and_ to accept it _immediately_ , so that would be very specifically be either Jeff Bezos or a top Amazon executive with those powers (and the guts to close such a deal directly on the phone without telling the boss), there is no contrast with Tim Cook wanting to talk specifically with Warren Buffet.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER23> Makes me think...which of his decisions DIDN'T play out quite this way?

</comment><comment><USER24> Is this sort of thing still possible in a public companies with Sabarnes Oxley?

<comment><USER25> Isn't this basically how Zuckerberg bought Instagram? He decided to, called up with a BIG offer, and got it done at lightning speed?

<comment><USER26> Yeah the story went that he met with the folks at Instagram and there was a discussion that if Instagram joined Facebook it would be worth X% of Facebook... so they used that number.</comment></comment></comment>


SHOW HN: Power of Test-Driven Network Automation - <AUTHOR> https://keepingitclassless.net/2016/03/test-driven-network-automation/ <comment><USER2> It looks like this is a blog post by Matt Oswalt. The spirit of "Show HN" is that the links will be something people can play with or try out and that the submission is from the creator of that something.</comment>


How to create a calculator application with Ionic framework - <AUTHOR> http://tutorials.pluralsight.com/review/how-to-create-a-calculator-application-with-ionic-framework-by-using-ionic-creator-for-ui/article.md <comment><USER2> Adding Scientific and Graph tabs!

</comment><comment><USER3> Loving it.</comment>


Robert Smalls - <AUTHOR> https://en.wikipedia.org/wiki/Robert_Smalls <comment><AUTHOR> Some highlights:

• Robert Smalls (April 5, 1839 – February 23, 1915) was an enslaved African American who escaped to freedom and became a ship's pilot, sea captain, and politician.

• He freed himself, his crew and their families from slavery during the American Civil War by commandeering a Confederate transport ship, CSS Planter, in Charleston harbor, on May 13, 1862, and sailing it from Confederate- controlled waters to the U.S. blockade.

• Smalls guided the ship past five Confederate harbor forts without incident, as he gave the correct signals at checkpoints. The Planter had been commanded by a Captain Relay, and Smalls copied Relay's manners and straw hat on deck to fool Confederate onlookers from shore and the forts. The Planter sailed past Fort Sumter at about 4:30 a.m. The alarm was only raised by the time they were out of gun range.

• In addition to her own light guns, Planter carried the four loose artillery pieces from Coles Island and the 200 pounds of ammunition. Most valuable, however, were the captain's code book containing the Confederate signals, and a map of the mines and torpedoes that had been laid in Charleston's harbor. Smalls' own extensive knowledge of the Charleston region's waterways and military configurations proved highly valuable.

• Immediately following the war, Smalls returned to his native Beaufort, where he purchased his former master's house at 511 Prince St, which Union tax authorities had seized in 1863 for refusal to pay taxes.

• After the American Civil War, he returned home and became a politician, winning election as a Republican to the South Carolina State legislature and the United States House of Representatives during the Reconstruction era. Smalls authored state legislation providing for South Carolina to have the first free and compulsory public school system in the United States.</comment>


Digging into last year's 381,576,305 check-ins [infographic] - <AUTHOR> http://blog.foursquare.com/2011/01/24/2010infographic/

<comment><USER2> Does anyone know how foursquares make money?</comment>


Squarepusher x Z-Machines – The making of stupendous music machines - <AUTHOR> http://www.creativeapplications.net/maxmsp/squarepusher-x-z-machines-the-making-of-stupendous-music-machines/ <comment><USER2> I wrote a lot of code to Squarepusher back in the day</comment>


What Every C Programmer Should Know About Undefined Behavior Part 1 (2011) - <AUTHOR> http://blog.llvm.org/2011/05/what-every-c-programmer-should-know.html#

<comment><USER2> The light side of undefined behavior is not optimizations but extensions. Undefined behavior is necessary so that a language can have certain kinds of conforming extensions. The language standard cannot define every possible program, because programs can do platform-specific things. For instance, a program might need to map some hardware to memory and access registers.

"Undefined behavior" in the ISO C sense only means that the ISO C standard doesn't provide requirements about how an implementation should react to a given situation. The implementation can still provide its own requirements, documented and all. ISO C undefined behavior can still be "GNU C defined" or "glibc defined".

Using some unknown conversion specifier in printf is undefined behavior according to ISO C, but the one being used could be documented by the given C library as an extension.

Using undefined behavior to make assumptions like that X < X + 1 is always true (and can be optimized away) is not a good example of undefined behavior being useful or beneficial. If the programmer wrote that, it was probably with the expectation that X + 1 _could be_ less than X due to particular overflow semantics. Or maybe even X was once unsigned and someone changed it without considering that expression. This deserves a warning diagnostic like "warning: expression always true whenever its behavior is defined". And then, who cares how it is optimized; let the programmer fix it so the diagnostic goes away.

<comment><USER3> I thought this was the purpose of implementation-defined behavior rather than undefined behavior.

<comment><USER4> I had the same thought. The difference may be that the standard says implementations _must_ define "implementation defined" behavior. On reflection, it would seem uncharacteristic for the standard to insist that undefined behavior _never_ be defined by the implementation.

<comment><USER5> Undefined means: the implementation can choose to define it, or can choose to leave it undefined. The standard prefers implementation defined when it's cheap, but some times it's not.

</comment></comment></comment></comment><comment><USER6> I've long believed that all compliant compilers should implement all undefined behaviour as an attempt to format the hard drive. It makes bugs much easier to detect in testing. Bugs that ship will mask themselves from customers, and many critical security bugs will be self-limiting and reduce the amount of data exposed.

<comment><USER7> That's not really how undefined behavior works though. In general, undefined behavior is used to optimize code by assuming it never happens and thus ignore that case. "implementing" undefined behavior to format the hard drive would mean that compilers would have to implement checks for every possible type of undefined behavior whenever you do something that has a undefined case (Ex. Every time you dereference a pointer). The slow-down would be fairly noticeable.

<comment><USER8> I think it was a joke, so not something that should be taken literally.

</comment></comment></comment><comment><USER9> It would have never occurred to me that:

       for (i = 0; i <= N; ++i) { ... }

Has a potential bug in it depending on compiler optimizations (where N=INT_MAX, and the results of ++i may or may not be defined - with the compiler using the "UNDEFINED" behavior to ensure that the above loop runs N+1 times.)

<comment><USER2> If N is INT_MAX, and the loop does not have a break statement in in anywhere, then the ++i will evaluate on the last iteration and overflow past INT_MAX. That is undefined; there is no may or may not about it.

Behavior which depends on compiler optimizations isn't a potential bug, it's almost always a bug. (The one exception might be programs whose specification is that they explore behaviors that depend on optimization!)

The compiler can help here by diagnosing the suspicious comparison i <= N, if N is a constant known to be INT_MAX.

        warning: comparison always true

The programmer can shut up the diagnostic by removing the expression, if it really is the intent that the loop guard is always true:

       for (i = 0; ; i++) {
         /* conditional break;  somewhere in the loop
            prevents i++ overflow. */
       }</comment></comment>


The unintended consequences of Teacher Merit Pay - <AUTHOR> http://www.economist.com/blogs/freeexchange/2009/12/pitting_teachers_against_each

<comment><USER2> What needs to be added to these studies is a study of giving students the power to shop for teachers that fit them (the students) best, by funding schools with funding plans that follow students and let students enroll where their adult guardians think best. The example of the Netherlands (all school funding by capitation payments to schools, with students free to enroll in a new school each year) is instructive in this regard.

<http://www.fcpp.org/pdf/FB16%20Dutch%20School%20Model.pdf></comment>