Building for the Blockchain - <AUTHOR> http://blog.ycombinator.com/building-for-the-blockchain/ <comment><USER6> A blockchain ensures that some sequence of agreements was made in a way that everyone can trust. If everyone keeps their secret keys secure and solely in their possession, then no activity can be forged on the network by any significant likelihood.

Anywhere this concept has value, a blockchain has value. That's all there is to it. The rest is fairy dust and noise.

I don't really follow a lot of the discussion in this article. As I see it, most of the buzz around blockchains is just wild speculation and fantasy. For example, why would be want a "fat" protocol? In any other context in technology, "fat" _anything_ is considered bad. Technologies are supposed to be "thin", simple, efficient, and composable. So why would the opposite be praised in this case? Furthermore, the characterization of existing foundational internet protocols as "thin" and blockchain protocols as "fat" seems like an inversion of truths. By my understanding, it would take as long or much longer to become well versed in all the nitty-gritty details of TCP/IP, DNS, etc. than it would to gain a solid understanding of Ethereum. Also, where is the need for software ecosystem micro-economies?

None of this makes any logical sense to me. It seems people have gotten it in their heads that the simple technological innovations of hash trees and distributed consensus protocols are going to somehow make them rich. And they're finding weird ways of justifying this.

<comment><USER7> It seems like in most cases, the tokens are being used as a way for the developers to get funding to implement their project without the bureaucracy and costs of doing a real IPO.

That would be fine on its own, but they're almost all pretending this is not the reason for it, and that the token is necessary. This is an obvious lie in nearly every case when you dig into the details. Nearly every dapp that has its own token can be cloned to use Ether without any detriment to the product.

<comment><USER8> Absolutely right, the tokens are just a stepping stone to getting the [distributed] app off the ground. It's a great model! If you believe in the utility of something you can fund it very early on and reap great rewards, or at least root great endeavors on.

<comment><USER9> How so? Can't you just do the same thing staking Ether instead of yet another ERC20 token?

<comment><USER10> Yes agreed, in several cases this summer I thought I was doing well with ICOs until I did the math and realized I would have done at least as well by just holding the ETH.

<comment><USER11> And this here is why we're in a bubble.

<comment><USER10> I don't really follow your logic, considering I was referring to over 6 months ago.

But I do agree we're in a bubble.

</comment></comment></comment></comment></comment></comment></comment><comment><USER12> _Monegro believes that this paradigm shift affects the way that developers should think about their applications: "The combination of shared open data with an incentive system that prevents "winner-take-all" markets changes the game at the application layer and creates an entire new category of companies with fundamentally different business models at the protocol layer."_

Ok, thin protocols + fat apps --> fat protocols + thin apps. Neat theory. But this is putting the cart before the horse. Please can someone ELI5 to me:

* What problem does the fat-protocol, thin-app paradigm solve?

* Why would anyone be interested in developing a thin app for my fat protocol any more than anyone is interested today in developing a thin protocol that I can put my fat app on top of?

* Why is thin-protocol, fat-app considered to be in need of fixing in the first place? I consider the fact that apps capture more value than protocols to be a direct consequence of the free market. Apps capture business value because they solve actual user problems. Protocols define ways to build apps. But frankly I don't see a great demand for new protocols, and I consider that reason enough for the fact that protocols can't capture much value. To say that that would change with the blockchain is IMO equivalent to saying the market has it all wrong. What am I not seeing?

<comment><USER13> You're seeing everything just fine.

Imagine you've spent your whole life investing millions of dollars in entrepreneurs. Building models and testing hypotheses with no real agency: you can't control what the CEO does or the product the engineering team builds or the way they market the product. Your job is to provide returns for your LPs. That's it.

Now imagine, instead of spending thousands of hours interacting with and managing people, their problems, watching painfully as they try to figure out the market they specialize in, I tell you that you can invest in something else. That thing, we'll call it a token. This token does work. It can be used to compute something. Or helps make something easier. I'm not clear on the specifics, but I can tell you one thing: if you buy it, and if you tell other people about it, merely the act of owning it increases its value.

I have just given you something you don't get a lot of in your career, true, direct self agency. You are unequivocally sure that you are creating value because it's you who is selling the value! You bought, the price rose, you know if other people get excited the price will rise again. It's exciting, you don't have to deal with people mucking about directly, and you're doing your job: generating returns.

The house of cards here is the assumption that these tokens can be used for something, _anything_ beyond a store of value. Because if that's true, it's not really speculation. You're an early adopter of a paradigm-changing protocol.

The default assumption here is that engineers are like ants: we build for the sake of building. Give us a canvas and we will build dApps (or what-have-you) just for the sake of building them.

The truth is, engineers are not ants. We build things to make our lives easier or more fulfilling. I started programming, for example, to build video games. Many people build things to automate their homes. When you build for an employer, the end goal is always to do something for the customer.

The draw of Ethereum, seems to me, to be that _eventually_ somebody will have to build something insanely valuable, _right_? Statistically, it's gotta happen. I think that's a ridiculous premise: if centralized tools are always faster with more mature ecosystems, engineers will always go there to solve their daily problems. The question to me really seems to be, "do we need truly immutable ledgers and transaction histories? Do we need 100.0% reliability in transaction history at the cost of orders of magnitude more energy expenditure, or is 99.9999999% okay?" As a cute anecdote, Life has been remarkably successful with a 10^-7 error rate in DNA polymerase. I have a feeling most industries will be fine without, and it's actually probably cheaper to have a reasonable facsimile (or statistically insignificant approximation) of immutability (human intervention and accountants included) than a guarantee. Especially if, in order to be guaranteed, it needs to be public.

So, what you're seeing is speculation that engineers could build something one day using an application development paradigm that's not actually clearly or obviously more powerful. It's worse speculation than betting on startups with teams of people who reliably execute, masked by the illusion of self agency as an owner and promoter of a token.

tl;dr: Somebody remind me of this post in a decade and we'll see where it all ends up. The technology will grow and evolve. I'm not sold on any of this, and investors who aren't building anything but themselves are holding tokens telling people to go experiment and build things isn't an attractive signal. (It seems like VC flipped on its head and the incentives are poor for engineers - so, for now, let these investors play hot potato with each other for a while. I've seen a few of Vitalik's tweets and it seems even he's concerned about these incentives.)

<comment><USER14> I don't disagree with anything you said.

But, separately, if you asked me if I wanted to use something to store/transmit value that was only reliable 99.9999999% of the time, I would immediately say no. At Visa scale, that means 15 transactions a day are incorrect - not delayed, just straight up incorrect. Maybe that already happens and we just don't hear about it because they can fix it without any one noticing or it's just small enough to not be noticed. But it is still unnerving.

<comment><USER15> 15 transactions a day? I'm guessing that number is in the thousands, easily.

Manual input at restaurants alone should hit that threshold. As you correctly pointed out, reversing the transaction is very low friction, which is something I've not yet seen presented in any blockchain based solution.

<comment><USER16> Visa claims to handle 150 million transactions a day [0].

(150 * 10^6) * (1 - .999999999) =~ 0.15

[0] - [https://usa.visa.com/run-your-business/small-business- tools/...](https://usa.visa.com/run-your-business/small-business- tools/retail.html)

</comment></comment></comment></comment></comment><comment><USER17> > For one, Ethereum is unable to access real time data from outside the > blockchain. Developers need to rely on trusted third party data providers, > called oracles, to provide smart contracts with outside information like > weather, random numbers, or currency values.

I feel like this is more of a feature than a bug. If you're weaving applications into the blockchain, would it really be wise to have that chain communicate with abstract data off of the chain itself? Seems an unnecessary burden for the chain to bare!

Great article. I've recently gotten into Ethereum Dev and Solidity. It's really fun, fun stuff. This isn't directly addressed in the Ethereum portion of the article, but it's good to keep in mind that these things are all works in progress. Limitations today are non-such tomorrow; we don't quite know where the train is headed.

You, Developer, can help it get to wherever you feel it needs to go. Remember that before deciding not to contribute. :)

<comment><USER18> What I don't understand is how Ethereum can describe their dapps as "trustless" when all the trust is still centralized in an oracle. This can even happen accidentally, such as with the Mayweather/McGregor smart contract breakage. [0]

But now imagine if BoxRec had intentionally reported false results from their website in order to make a lot of money on the bet. People would lose their money, and there would be no recourse.

[0] [https://www.reddit.com/r/ethtrader/comments/6w5wcn/important...](https://www.reddit.com/r/ethtrader/comments/6w5wcn/important_update_mayweathermcgregor_smart_contract/)

<comment><USER19> You can solve this by using multiple oracles and a stake-based consensus algorithm to de-incentivize malicious reporting.

<comment><USER18> I am unable to find anything about using multiple oracles in Ethereum. Do you have any information about this?

<comment><USER20> Chainlink is a project to enable a network of decentralised oracles.

<comment><USER21> Here's some good background on ChainLink:

[https://medium.com/@signal_capital/https-medium-com- signal-c...](https://medium.com/@signal_capital/https-medium-com-signal- capital-our-investment-in-chainlink-15ab90ee9c02)

<comment><USER18> Reading up on ChainLink:

> Several data providers respond to this service agreement with a bid in the > form of a data reply — when enough data providers have responded, the > majority response is taken (or average depending on the request), outliers > are removed, and data is fed into the contract.

What's to stop me from setting up 10,000 different data providers that initially provide good data to get a good reputation score, but then slowly corrupt them over time? It doesn't matter how many data providers you average if I can set up millions of them in seconds. I don't see any way to solve Sybil attacks here.

<comment><USER21> There's a penalty payment that each node puts up into escrow for each assignment of data, and if the data is not accurate in relation to all the other providers of that same data, the node will lose the payment.

There will also likely be a small amount fo LINK required to start a node with enough reputation to gain assignments which would also increase the cost of a Sybil attack.

<comment><USER22> Mmm, what would stop me from just grabbing the data the other oracles made available, and pretending I did the actual calculation/check/api- call/whatever?

<comment><USER23> Check the paragraph about Freeloading in their whitepaper

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER24> It's all the same thing every year on HN. People trying to find all sorts of excuses for Bitcoin existence - blockchains, smart contracts, ICOs - as long as they don't have to accept that Bitcoin's main purpose is and always was to have an alternative to the financial system, crippling regulations, government control and taxes. In other words, everything people hate about libertarians, they try to ignore in Bitcoin. Because they can't just ignore Bitcoin - it's not going away for some reason.

And it's not going away because there's a demand for Bitcoin. Why? Not because blockchain is some sort of an innovation. It's because people want a currency not controlled by any state institution. It's because people want freedom. Deny that all you want, it's not going away.

<comment><USER25> >Bitcoin's main purpose is and always was to have an alternative to the financial system, crippling regulations, government control and taxes.

Does bitcoin really do any of those things? Right now, btc core is not an alternative to cash- a problem that maybe will be fixed in time, but currently only seems to be getting worse. If bitcoin really did take off as a global currency, the IRS would audit unreported bitcoin transactions- and it'd have your financial records because the corporations and individuals you interact act with would cooperate, and it'd only need a few to start to deanonymize you. It seems like the blockchain would almost make the tax job easier, because all transactions are public unless people move from bitcoin to a zerocoin model. Even then, the IRS would pursue those who didn't report and have transaction information from vendors to work to identify fraud.

So, bitcoin doesn't seem like an alternative to taxes. Also have no idea what it has to do with most government regulation. And, is it really an alternative to the financial system? Yes, people can use bitcoin instead of a checkings or savings account- but still need to use traditional services to invest in the market, and the financial system will continue humming along making more money from money and making gobs of money profiting off everyone else's market inefficiency whether it's working in usd or btc.

So, what are we left with? It seems like core btc is only an alternative to a speculative investment in something that the federal reserve cannot print. And believe it or not, the vast majority of this country either doesn't care about quantitative easing, or believes in basic macroeconomics. Core right now seems to just be a LARP fantasy for libertarians convinced that "this time we can finally get rid of the evil Fed and their evil money printing". It'll never happen, and if it does offfer any kind of freedom, it's the freedom to go back to pre-fiat boom and bust cycles of economic hell detached from modern macroeconomic theory.

<comment><USER26> >>It'll never happen, and if it does offfer any kind of freedom, it's the freedom to go back to pre-fiat boom and bust cycles of economic hell detached from modern macroeconomic theory.

Before the central banking era, the US banking system was made more fragile than it would have been under a free market by 1. Civil War era banking regulations that required banks to hold US bonds as reserves and 2. laws against interstate branching.

The former resulted in an unstable centralized money supply that fluctuated with the volume of outstanding US bonds and the latter prevented more diversified banks from emerging that could better weather localised shocks. Canada had neither of these mandates and consequently had a far more stable banking system.

There were proposals before the Fed was created to make the US financial sector more like Canada's, but the banking cartelists won the argument, and the Federal Reserve mandates were passed to cartelize the banking sector under a centralized hierarchy.

Also keep in mind that macroeconomic theory is just theory. It cannot be scientifically proven correct due to the complexity of the factors involved. Also keep in mind that there is an enormous financial incentive to popularize the idea that centralized control over the money supply is economically beneficial, and Economics is not immune to undue influence. Consider that the Fed alone employs thousands of economists, and consider the institutional biases the Fed and its shareholders likely have.

Even with all these forces at play, there's no macroeconomic consensus around your belief that free market banking is less effective than central banking.

A couple of good talks by George Selgin on pre-Fed era and the 100 year performance record of the Fed:

[https://youtu.be/Z0J_Ai2sSmY](https://youtu.be/Z0J_Ai2sSmY)

[https://youtu.be/P0E7I4URW5o](https://youtu.be/P0E7I4URW5o)

</comment></comment></comment><comment><USER27> Yet so far I still see almost _nothing_ on the block chain (beyond its core currency use case) that is useful outside the domain of block chain stuff.

The only exception is things like Sia, and that's not cost or convenience competitive with Amazon S3 or Backblaze.

 _Where is the value here?_ When I visited this I was expecting to see at least something about building something useful for... something... Building _what_ for the blockchain?

Oh kitties. Yeah.

I am absolutely aware of the fact that early stage tech often looks like a toy, but here's the thing. PCs were a toy but it didn't take long at all (VisiCalc, etc.) before they had actual uses. BBSes were a toy but they were immediately useful to their users for trading data and messaging.

We are now about eight years into block chain and beyond its one core use cases there is almost nothing. Whatever value has been delivered seems extremely minor compared to the vast sums of money being spent, making this perhaps the worst ROI I've ever seen.

Can someone provide a counter example? What are people doing in the real world with this stuff?

<comment><USER28> > _Whatever value has been delivered seems extremely minor compared to the > vast sums of money being spent, making this perhaps the worst ROI I 've ever > seen._

What's even worse, from my POV, is the _humongous_ amount of electricity that is used to support the blockchain. And to what end?

Personally, I won't start believing in the blockchain until a non-wasteful alternative to the present PoW scheme gets developed _and actually deployed_. Right now, this looks to me like the most direct way of turning human vices into cooking us live on this planet that humanity has ever invented.

<comment><USER29> The 'end' is the security of the bitcoin blockchain. Defence forces consume a massive amount of energy and human resources. They are still funded because countries don't all trust each other and they want security. An alternative to Proof of Work such as Proof of Stake would be like a country having a nuclear arsenal, allowing it to cut back on military spending. The problem seems to be that the incentives are on the miners to switch to another proof system, and the existing miners wouldn't want to do that because it's their edge in the market (low electricity costs).

<comment><USER28> You're talking about the means of blockchain to self-preservation; I'm saying that we don't need blockchain, that it eats _way_ too much for the fun it provides, so we should just kill it off and call it a day.

> _The 'end' is the security of the bitcoin blockchain. Defence forces consume > a massive amount of energy and human resources. They are still funded > because countries don't all trust each other and they want security._

Yes. Wasteful as evil as the concept of a military is, countries need military forces to maintain peace, by keeping each other in check. It's an unfortunate direct consequence of the way humans organize themselves into societies.

But blockchain is _not_ a direct consequence of a fundamental issue in human organization process (if anything, it's just a direct consequence of human greed meeting 2010s tech). It's the least efficient way of doing anything, because it completely eschews the need to _trust_ other actors. Yes, I believe trustless systems are mostly a _bad_ thing, because trust is literally _the_ efficiency hack that allows us to coordinate at scale.

There are probably some theoretical problems where a trustless solution is perfect. But as it is today, the blockchain is trying to turn everything in the society into a Cold War-like military spending problem to avoid having to trust one another, even though trust-based systems _work just fine_.

</comment></comment></comment></comment><comment><USER30> People are trying to solve a lot of interesting problems with blockchain, but I fear it's become the ultimate shoehorn solution for the modern era. See also: [https://tonyarcieri.com/on-the-dangers-of-a-blockchain- monoc...](https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoculture)

I've had meetings with prospective clients that opened with, "We have $problem, can we use blockchain to solve it?" where anything that doesn't qualify as a blockchain is cast to the wayside because it doesn't scratch that buzzword itch.

(Amusingly, I've witnessed one pitch where the person called it "bitchain" and it sounded like "ba-ching!" and I was waiting for the follow-up to what I thought was onomatopoeia for a cash register sound. I've since learned to not abbreviate cryptography as "crypto" lest I attract sketchy prospects.)

A lot of the problems that you might want to solve with a blockchain probably doesn't need a blockchain. A distributed, append-only cryptographic ledger will suffice. To wit: [https://paragonie.com/blog/2017/07/chronicle-will-make- you-q...](https://paragonie.com/blog/2017/07/chronicle-will-make-you-question- need-for-blockchain-technology)

<comment><USER31> > A distributed, append-only cryptographic ledger

Pardon my ignorance, but isn't that what a blockchain is?

<comment><USER32> I agree that blockchain is overhyped right now, but I don't understand the common sentiment on HN that "you don't need a blockchain, just an append-only decentralized database with Merkel root logs", as if that's something easy to build. What is this hypothetical non-blockchain, where are you going to get it, and why not just use a blockchain if that's what you need?

<comment><USER33> Let's look at another project that needed a such a ledger: the certificate transparency project.

One implementation of it, google's, uses leveldb:

[https://github.com/google/certificate- transparency](https://github.com/google/certificate-transparency)

Another one out there uses postgres. It turns out that you can use traditional databases in many cases where you think you need a blockchain, and you'll be able to waste vastly less energy on proof-of-work and vastly less time dealing with the terrible mess that is "blockchain".

The reason not to use "blockchain" is that it has 200 definitions, all of them full of people trying to get rich, not getting things done.

Databases have long-since solved the problem of storing and distributing data.

Distributed stores like etcd, zookeeper, and so on have long since solved the problem of duplicating data.

Very few people need byzentine fault tolerance (due to having a large number of untrusted actors with write access), which is the only time the additional complexity blockchain includes is actually useful

<comment><USER34> This. At my company, we want a way to show investors our actual revenue numbers in an auditable manner, trustless. This is because we are extrajurisdictional and have high opsec concerns and cannot simply hire an accounting firm to give us an OK.

Hence we shall issue signed receipts to all clients and providers then setup a system to pay out a large bounty if someone can produce a signed receipt not in our weekly-published-log. We'll automate the bounty, but perhaps a third party will also offer a validator. We will not even need Postgres for it, just nginx and a filesystem.

But that is not interesting enough by itself, and mentioning digital signatures just confuses people more. So we call it a Single-Issuer- Blockchain: Now people instantly get the idea.

</comment></comment></comment></comment></comment><comment><USER35> In general, it's a red flag to see people promoting some technology or idea without concrete, end to end examples, and circular logic. It's okay for the authors to make speculations, but I am disappointed at their excessive handwaiving in answering just two simple questions.

a) Do "dapps" really to use their own tokens instead of USD or even ETH to function? b) How are closed ecosystems that utilize "utility tokens" benefitting customers? How are closed ecosystems better than open systems, open protocols?

<comment><USER36> a) they could use ETH, but if you launch your own token you get two advantages:

\- funding (ICO) \- an economic incentive for attracting early users (give tokens for using your app in the promise that they will be worth more in the future)

b) if a user earns tokens that value over time, that's a huge win: imagine if all the time you spend on apps today, generating valuable data to a few companies, would generate in turn some of these tokens back to you?

Besides, what do you mean by "closed" exactly? The data being on the public blockchain should actually encourage integration by default. For example, several new dapps are being built on top of IPFS for data, using uPort for identity, Aragon for governance, etc.

<comment><USER35> a) Or... wait for it... they could ask for payment in crypto, fiat, whatever, rather than printing their own chuck-e-cheese tokens. Yes, we get it, ICO allows the DAPP to fund itself, and it's a great value prop for the founders, because they can raise capital on the strength of a 15 page paper, as opposed to having real users.

b) "closed" means literally useless outside. Can you use your Cobinhood tokens at any other exchange? No, it's because Cobinhood tokens are only good for consuming the features of Cobinhood.

<comment><USER36> a) what about the economic incentives for early users? That is a pretty huge deal too, even if ICO funding wasn't possible.

b) it's not literally useless outside, you just have to exchange it for other coins to use it outside. Isn't that how cash in most countries work too? Besides, remember there's far less friction in exchanging app-specific tokens by another coin than there is in exchanging cash today.

Even if app-specific tokens do not become standard in the future, it's an interesting idea worth exploring. But the whole point is how different kinds of business models can be created due to the decentralized nature of blockchain, this is just one of them.

<comment><USER35> Regarding your b):

Yeah, you can trade your Cobinhood tokens for Binance coins, but this is an artifact of the fact that each built a closed ecosystem. If both platforms used the same currency (ETH, USD, whatever), then there'd be no need or the inconvenience to trade tokens around.

Also, note, not all dapp tokens have liquid secondary markets, so I'd argue that it's almost an exception that your dapp tokens can be monetized externally

</comment></comment></comment></comment></comment><comment><USER37> Naval does a much better job of explaining what the tech is about : [https://startupboy.com/2014/04/01/the-fifth- protocol/](https://startupboy.com/2014/04/01/the-fifth-protocol/)

However, OP nor Naval, really understand the protocol, or wouldn't be supporting non-blockchain things like ethereum (there is nothing that you can do with ethereum but not with git).

>One of these developers, Vitalik Buterin, was frustrated by Bitcoin's immobilism

I am amazed at how HN is selling a promo story invented for media by ethereum as a company. Digging IRC logs would reveal how Vitalik convoluted each aspect of the tech(and was often wrong)to the point that the devs stopped caring and let him be. Even technically, I have answered this on HN and other places numerous times - tell me one thing you can build with ethereum but not with bitcoin? (On the opposite, ethereum can't do money - mutable chain).

<comment><USER38> Reading old logs may also reveal something about the project Vitalik had before getting involved with Ethereum: Selling access to his quantum computer ... for mining Bitcoins.

Strange how the PR puff pieces around Ethereum never seem to mention this project. Amazing also how the quantum computer seems to disappear as the pre- mined coins were sold off.

<comment><USER39> It was even weirder than that. He believed he could gain an edge on bitcoin mining by simulating a quantum computer with a conventional computer.

[https://davidgerard.co.uk/blockchain/buterins-quantum- quest/](https://davidgerard.co.uk/blockchain/buterins-quantum-quest/)

<comment><USER38> That is a charitable interpretation. Had he truly believed in the concept himself, why did he feel the need to hunt down millions of old dollars from "investors"?

</comment></comment></comment></comment><comment><USER40> Lots of smart people in this space disagree with "fat protocols."

I'll immodestly list my own first: [https://www.evanvanness.com/post/166666272011/theres-no- such...](https://www.evanvanness.com/post/166666272011/theres-no-such-thing- as-fat-protocols)

See also CoinFund's Jake Brukhman: [https://blog.coinfund.io/fat-protocols- are-not-an-investment...](https://blog.coinfund.io/fat-protocols-are-not-an- investment-thesis-17c8837c2734)

And Zeppelin's Teemu Paivinen: [https://blog.zeppelin.solutions/thin- protocols-cc872258379f](https://blog.zeppelin.solutions/thin-protocols- cc872258379f)

I hear that even Joel doesn't agree with how his piece has been interpreted.

</comment><comment><USER41> Ethereum isn't useful for smart contracts; they are too expensive to call methods on chain and EVM is too inflexible and bug prone.

The only use for ethereum is shittokens, and you could practically coingen these for free, and trade forever. No load on the shared commons, isolate activity to the specific coin. The only advantage is the ECR20 standard that aids exchange integration.

SV is all a blaze about Ethereum, but I tell you, this too shall pass.

Long on other smart contract platforms, but not ETH.

<comment><USER42> What other smart contract platforms are worth following?

<comment><USER43> Cardano.

</comment></comment></comment><comment><USER44> FYI: To learn about blockchains - why not build your own blockchains from scratch (zero)? At the Awesome Blockchains [1] page I collect starter blockchains (in JavaScript, Python, Ruby, etc.) and articles plus fun blockchains (such as CryptoKitties and CryptoCopycats) [2]. [1]: [https://github.com/openblockchains/awesome- blockchains](https://github.com/openblockchains/awesome-blockchains) [2]: [https://github.com/openblockchains/awesome- cryptokitties](https://github.com/openblockchains/awesome-cryptokitties)

</comment><comment><USER45> > Alternatively, the distribution of value in the blockchain paradigm can be > described with fat protocols and a thin application layer. This paradigm > shift is possible due to the innovation of cryptographic tokens.

As a long-time decentralization activist, this sentiment makes me want to tear my eyeballs out. Why are cryptographic tokens necessary to implement fat protocols? Why does "standardizing communication across applications" now _also_ have to mean "implementing a global, secure financial market" in the process?!? This is maddening to me and nobody has explained to me why blockchains are a requirement to do this.

<comment><USER26> It explains in the two subsequent paragraphs:

>>"Historically the only way to make money from a protocol was to create software that implemented it and then try to sell this software (or more recently to host it)… With [cryptographic] tokens, however, the creators of a protocol can 'monetize' it directly and will in fact benefit more as others build businesses on top of that protocol."

>>Previously, the creators of open communication protocols for the Internet, largely DARPA researchers and non-profit contributors, could not align financial incentives with protocol development. In contrast, protocol creators today can issue "tokens", like Bitcoin and Ethereum, that represent the value of their decentralized protocols.

The key is that it can "align financial incentives with protocol development".

</comment></comment><comment><USER46> The negativity in this thread reminds me of the internet in the early nineties.

If someone had said that one day there will be a company that does billions by allowing people to fundamentally share their cat pictures and send each other happy birthday messages people would have laughed their asses off.

The blockchain can be seen as a giant immutable feed. Make of that what you will.

<comment><USER47> It reminds me more of the P2P mania of the early 2000s - P2P was going to decentralize and revolutionize absolutely everything, and well, it didn't. It stayed in its narrow lane, providing benefits where it made sense.

<comment><USER46> Narrow lane? I think that's a matter of definition.

</comment></comment></comment><comment><USER48> Every time I see a Ycombinator article on Blockchain, I can't stop but feel a bitterness from the years of nasty comments I got here when advocating for Bitcoin, Ethereum and Blockchain technology here.

</comment><comment><USER49> Anyone thinking of building anything on Ethereum should probably read and comprehend this recent blog post from the folks at BitGo: [https://medium.com/@lopp/the-challenges-of-building- ethereum...](https://medium.com/@lopp/the-challenges-of-building-ethereum- infrastructure-87e443e47a4b) There are many nasty subtleties and hidden traps they learned the hard way that aren't obvious.

</comment><comment><USER50> Hey,I would probably say the white paper for BitCoin is a good place to understand what a blockchain does, I find the yellow paper for Ethereum more useful for development. You probably want to run a private nodes for ethereum, & a dev node for bitcoin, cheaper & no issues of space to experiment on both. Genesis file for bitcoin is quite interesting for a soft fork. I've tried to used both React & Meteor as webframeworks for a possible dapp..had more luck with Meteor-:) Tried to connect heroku to a private chain as well..Got distracted but it seemed feasible -:) Lots & lots of solidity code on github by Ethereum developers & & even an open source framework to do static code analysis for security -:) Lots of stuff on developers on bitcoin.org. Ethereum has diff versions, so you want to look at the documentation for the latest version byzatine, i think & it was also quite interesting thar they have multiple clients in diff langs, i just started with one & got used to that -;) Information from previous versions is also useful. Lots of altcoins are also opensource so Good Luck building -:)

</comment><comment><USER51> It is misleading to describe etheteum as Turing-complete. If it were, an infinite while loop would soon crash the network. (As mentioned in the article, the processing of Ethereum contracts is powered/funded by a finite valuable currency called gas)

A novelty of the unfolding blockchain revolution is the realisation that there is a world of interesting non-turing-complete things to be built. We all assumed that anything non-turing-complete a waste of time. Surprise!

What you want to say here is that ethereum takes a large step towards creating a flexible development platform.

EVM function like an instruction-set for this distributed computer. This may be close to the way forward. But solidity is not. A quick port of JavaScript, it is still in the old software mindset.

Ethereum has problems ahead of it. Just as C has an endless capacity to create memory leak bugs, Solidity offers opportunity for contracts that will drain people's accounts. Each time it happens, it will be reputational damage for the community.

If you wanted to learn Ethereum, it might make more sense to start with raw EVM than Solidity. Play at writing a macro assembler. Once you were tooled up, you might try your hand at becoming the Brendan Eich of the blockchain. Until you do, we are stuck with Brendan Eich.

If we do not find such an expression, general-purpose, public-access blockchain will gain permanent mistrust, and fail.

Message-driven concurrency is here to stay though. I am building a concurrency language centred around message-driven consensus-engines. (github.com/solent- eng/solent) It is designed to be host-distributed, but operated by a single party and not multi-party.

</comment><comment><USER52> Articles like these should come with a disclosure: "the authors own bitcoin and augur" or something to that effect.

</comment><comment><USER53> You can write Solidity in the browser now using their Remix IDE:

[https://remix.ethereum.org/#optimize=false&version=soljson-v...](https://remix.ethereum.org/#optimize=false&version=soljson-v0.4.19+commit.c4cbbb05.js)

</comment><comment><USER54> Here's my two cents. Is it a fad and a bubble? Most likely.

But do not discount value that the token creates as a network effect. Think of the currency as an investment vehicle to reward people who jump on to the network first. Consider Facebook, the first hundred customers are billions of times more valuable then the last hundred.

Once this fad dies, people should start joining the networks they plan to use, and early adopters will be rewarded for helping creating the network.

On top of that, it decentralizes the control of the network but temporarily provides capital for it's creators. It does not ensure that their system will belong to them in purpituity. Which is a good thing!

</comment><comment><USER55> So far the main benefit is democratizing investment, as has been stated here before. I love that I can get in on early stage projects without being a well- connected angel investor. Coins are like new, sexier penny stocks.

<comment><USER56> The only reason this wasn't possible in the past was because too many people got ripped off.

<comment><USER55> Undoubtedly that will happen again, but maybe this time third party validation systems will improve?

</comment></comment></comment><comment><USER57> So this is exactly how I got started on a silly Ethereum side project over the holiday. Truffle, solidity docs, and reading the crypto kiddies code is all you need. I'm mostly interested in how Ethereum and other blockchain technologies work - there's no denying that building a dapp is just a fundamentally different experience from building a web app today and that in itself is exciting.

I'm mostly _not_ interested in anything financial. Decentralization, immutability, and a built-in way to pay for usage are the main features of Ethereum (possibly combined with IPFS) that get me going.

</comment><comment><USER46> ICO's are the equivalent of getting funding.

I think that the first successful blockchain based company won't be doing an ICO but just launch it's token/coin because it has utility in itself.

</comment><comment><USER58> Blockchains, in part, provide the following value proposition:

Provable [X] without a central authority.

[X] can be the following:

Ex.

Currency - <USER2>

Computation - <USER3>

Anonymous currency - <USER4>

Storage - <USER5>

etc.

Most of us would agree that central authority is too strong in many aspects of the economy and technology. The key question is for what values of [X] does the value proposition make sense? The core technology is less than 10 years old, anyone being too confidant in where this road goes should put it in a larger timeline. Besides not losing your money, as hackers we can only explore what may be possible.

<comment><USER59> _Provable [X] without a central authority._

Under a limited set of conditions, with some cost [Y] to keep the system running. The bitcoin network is extremely expensive, for example.

 _The key question is for what values of [X] does the value proposition make sense?_

The key question is for what values of [X] - [Y] does the value proposition make sense. And, what contextual conditions must be maintained to preserve the decentralization advantages of [X]? In other words, the transactions could be decentralized and anonymous but if you have to sign up for a centralized exchange to participate, those benefits might be moot for you.

</comment></comment><comment><USER60> If you're interested in the intersection of blockchain and AI/ML check out the decentralized AI summit coming up on Feb 1st. [https://decentralized- ai.com/](https://decentralized-ai.com/) there are going to be a ton of good speakers and people into crypto/blockchain + IoT, Robotics, Autonomous Vehicles, etc -- it's like the world's faire of the future.

</comment><comment><USER61> Lisk is a JavaScript based platform that allows developers to deploy and develop their own custom blockchain, and decentralized applications.

It uses sidechains in the near future to fix the problems ethereum has at the moment

[https://github.com/LiskHQ/lisk](https://github.com/LiskHQ/lisk)

</comment><comment><USER62> I've wondered about the fat protocol concept. At the root of it, the token that allows the developers to monetize their fat protocol has to make sense as an investment. In other words, what are the investors getting when they buy this token? why should they expect a return? this, I don't understand very well.

</comment><comment><USER63> People are so upset about blockchain being useless.

Meanwhile I use it regularly to do business transactions from the command line and shell scripts, which appeals to me greatly as a hacker who does business.

Open source finance! It's the future, guys.

Sorry about the speculative bubble. It's not really my fault though. Traders and investors are a bit crazy.

<comment><USER64> You don't need a blockchain to "do business transactions from the command line and shell scripts" so I don't find your personal counterexample particularly compelling

<comment><USER63> Which alternative are you referring to?

<comment><USER64> Any of the available stock, forex, merchant, payment APIs anywhere. You have zillions of options (stripe, etrade, paypal, a bunch of banks have APIs, soon you'll have a Venmo API, other payment applications are coming up). The notion of a scriptable transaction has literally nothing to do with a blockchain.

<comment><USER63> Those aren't as convenient for me as blockchain, and of course they all involve centralized counterparties with proprietary APIs. As far as I know there is no bank in my country with a usable API. Blockchain is just a nice and easy open source solution that works great worldwide.

</comment></comment></comment></comment></comment><comment><USER65> Contrarian approach to this article : is there a way to short Bitcoin, and other "cryptocurrencies" ?

<comment><USER66> yes, just borrow Bitcoin and sell it for fiat and when the repayment is due just buy Bitcoin again, you are basically "short selling" it.

</comment></comment><comment><USER67> Where I can see blockchain being more 'actually' useful is in simple things, like verifying the integrity of the app (or anything really), ala checksum hashes.

It makes a lot of sense for us to store them on the blockchain rather than hosting it on a webpage.

<comment><USER68> You need blockchain only when you want to prevent double spending of _something_. A linked list where only one node can have a valid pointer to the previous node.

For checksum hashes, unless double spending is a problem, IPFS will suffoce.

<comment><USER69> You don't need a blockchain to prevent double spending. You only need a blockchain if you want the double spending prevention to happen between trustless distributed peers.

<comment><USER35> You are right, and I think this aptly captures just how misunderstood Blockchain is even on this forum.

<comment><USER68> I used "only when". It's a necessary, but not sufficient, condition.

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

</comment></comment></comment></comment></comment><comment><USER70> Inevitably because of the ICO component, there will be a lot of applications that tries to use block chain to search for a problem to solve more inefficiently than not using block chain. With the main idea so they can get the ICO to work for them.

</comment><comment><USER71> I stopped after reading this:

> "Historically the only way to make money from a protocol was to create > software that implemented it and then try to sell this software (or more > recently to host it)… With [cryptographic] tokens, however, the creators of > a protocol can 'monetize' it directly and will in fact benefit more as > others build businesses on top of that protocol."

And what was wrong with developers finding a market, developing a software and then monetizing it? I have tons of ideas each day, some of them blockchain related too but it seems unethical to use other people's money to test my hypothesis.

<comment><USER72> We were talking specifically about protocols like TCP, IP, DNS or even P2P. It was nearly impossible to monetize protocol level work before cryptocurrencies

</comment></comment><comment><USER73> What about the problem of competitors copying your contract? Since all blockchain code is open. Isn't that a real problem developing Dapps?

</comment><comment><USER74> 'Albert Wagner' should be 'Albert Wenger'

</comment><comment><USER75> Bitcoin whitepaper url is broken.

</comment><comment><USER76> Thanks for the article and the shoutout to blockgeeks!!

<comment><AUTHOR> thanks for the resource!

</comment></comment><comment><USER77> Ethereum isn't decentralised to a large degree (see the DOA). Given such a thing, one may as well use a standard web stack.

Also, that makes any guides written for devs on the subject of negative utility. It wastes their time; since the premise, that the new paradigm derives its value from censorship resistance, is breached.

It takes some serious non-thinking to support Ethereum. The price is high, the value is low.</comment>


The Fat Doctor Problem - <AUTHOR> http://justinmares.com/the-fat-doctor-problem/

<comment><USER2> A person who failed usually knows much more about how not to fail than a person who succeeded.

So I largely disagree with the opinion of the author.

<comment><AUTHOR> I disagree. I think this post says it better than I can - [http://signalvnoise.com/posts/1643-failure-is-overrated-a- re...](http://signalvnoise.com/posts/1643-failure-is-overrated-a-redux)

Someone who's failed has now learned 1 way not to fail. Someone who's been successful multiple times has learned the principles and what to do to win, which is much more important.

</comment></comment><comment><USER3> I agree with sssilver in his disagreement, but there's a nuanced logical flaw here that's not even being addressed.

sssilver brings up that someone who has experienced failure in x isn't _necessarily_ a poor source of advice in x. Similarly, just because someone was successful in x doesn't mean that they have _any_ clue what they did right.

A more defensible bit of advice would be to evaluate someone's credibility before taking their advice, but I can't think of a more obvious truism.</comment>


Rich Command Shells - <AUTHOR> http://waywardmonkeys.org/2014/10/10/rich-command-shells/ <comment><USER2> Text is the universal interface. You can do things with it. You can strip it, cut it, transform it, send it to other places. Humans can read it, programs can read it, your printer can output it. It can be sent to web APIs, it can be stored anywhere. It's compressible, can be colored and can be copy-pasted and is infinitely extendable. Thousands of protocols run over it.

The command line works with text. The command line remains the best interface I've ever used. It's user friendly, composable and available everywhere. It's easy to automate and easy to extend.

I wish the "command line with pictures" idea would just go away already. It adds nothing for the general public. I can already view pictures on remote machines with X forwarding.

Command line with pictures never made it, because there are ten competing standards. With text, everybody just agreed on ASCII and now Unicode/UTF8. Text has hundreds of ugly clutches on top of it (Extended ASCII, ANSI, Escape codes, etc, etc). It still works. It's still simple. It has its problems, but nowhere near as many problems as GUIs.

Those who don't understand Unix are doomed to reimplement it... poorly.

<comment><USER3> Text isn't the universal interface in Unix, byte streams are. You can quite happily send non-textual control characters and such around in Unix, or pipe data containing NULLs from one process to another. 'Text' is a very seductive abstraction, but it's one of the most brutal to work with once you start interacting with the real world and have to give up on ascii and deal with encodings and unicode and so on.

Putting commands and data inline is a recipe for disaster and a million command injection exploits. The Unix philosophy has broken the minds of generations of programmers. It leads them to doing things like concatenating strings to build SQL queries or doing IPC with ad-hoc regex-parsed protocols or using a couple of magical characters to indicate that the contents of a variable should be parsed and executed instead of just stored. Take a read of some of the earlier threads on HN about _Shellshock_ , and you will find numerous people blaming Apache for not "escaping" the data it was putting in a shell variable. As if it even could.

Even Unix nerds have at least partially internalised the dangerousness of the paradigm -- "don't parse the output of ls" and so on. The fact that the Unix paradigm (passing everything as strings with magical characters and escape sequences) is broken for the most fundamental computing tasks like working with file names ought to be a damning inditement of the paradigm. Sadly people merely parrot the rote learned lesson "don't parse ls because file names can't be trusted", without thinking about all the other untrusted data they expose to unix shells all the time.

Just this week Yahoo got exploited. At first people thought it was _Shellshock_ , but no, it was just a routine command injection vulnerability in their log processing shell scripts. A problem blighting just about every non-trivial shell script ever written.

The usual reply is "don't use shells with untrusted data". But auditing where any particular bit of data came from can be just about impossible once it has been across several systems through programmes written in a variety of languages, stored on a file system, read back and so on. The only sane solution is to never use shell scripts.

Like the C memory and integer model makes writing secure C code borderline impossible, the Unix "single pipe of bytes that defaults to being commands" paradigm makes writing secure shell scripts borderline impossible.

Unix needs to be taken out back and shot.

<comment><USER4> "Like the C memory and integer model makes writing secure C code borderline impossible, the Unix "single pipe of bytes that defaults to being commands" paradigm makes writing secure shell scripts borderline impossible. Unix needs to be taken out back and shot."

What alternative do you advocate/propose ?

Genuinely curious ...

<comment><USER3> For the interactive general purpose data munging and quick execution of simple commands that the shell is best at, I really don't know what a better system would look like. It seems like a really hard problem. Anything purely text based ends up being fairly cumbersome to use for simple commands if it has to use real data structures (consider having to type _([ "a", "b"])_ instead of _a b_ to pass arguments with json style syntax or whatever). At least that was my experience of trying to write a very simple shell. There are a hell of a lot of people a hell of a lot smarter than me though.

It seems to me that a lot of shell scripts could be ported to other languages. Does DHCP on Linux need to use a shell script instead of python or something like that? The benefits of the shell grammar and semantics which are designed to make interactive use easy seem more like hindrances in a lot of those kinds of use cases. I assume it's largely done to make it easier for sysadmins to customise things. If I was a sysadmin I'd much rather learn python (and feel like I actually understood it) than the crazy byzantine grammar of bash. Maybe that's why I'm not a sysadmin.

This paper by Rob Pike might also be of interest: [http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf](http://doc.cat-v.org/bell_labs/structural_regexps/se.pdf)

>The current UNIX® text processing tools are weakened by the built-in concept of a line.

<comment><USER5> The reason the shell is used everywhere is because it's guaranteed to be installed (although DHCP used Bash explicitly), is much faster to start and run a simple script than Python, and its syntax is the command line that everybody should be familiar with.

</comment></comment></comment></comment></comment><comment><USER6> I miss TermKit[1]. Its a real shame that the developer abandoned it after it got a lot of hype. There's a huge opportunity for someone to come along and make either a new terminal encoding which allows rich, interactive output or extend VT somehow to which allows the same. If you could extend the terminal protocol, you might even be able to get it to work over SSH.

HTML+JS seem like the obvious way to do it - even though the web is an awful platform, its standard, cross-platform and fully featured. Its the perfect worse-is-better solution for this.

I think the hardest part would be figuring out how to reconcile browser-like UI events and file streams. Maybe you'd need to make a standardized event serialization format so your process could receive serialized events via stdin or something like that. I think it'll be a really hard sell if we have to abandon our unix pipes entirely.

[1] [https://github.com/unconed/TermKit](https://github.com/unconed/TermKit)

Previous hackernews discussion around termkit: [https://news.ycombinator.com/item?id=2559734](https://news.ycombinator.com/item?id=2559734)

<comment><USER7> > HTML+JS seem like the obvious way to do it > I think the hardest part would > be figuring out how to reconcile browser-like UI events and file streams.

How about Chrome Apps? They've got a mix of file I/O capability and HTML/JS.

</comment></comment><comment><USER8> If I might plug a rich command shell I'm developing: [http://pigshell.com](http://pigshell.com) (Source at [https://github.com/pigshell/pigshell](https://github.com/pigshell/pigshell))

It provides

\- A shell for the web. Runs in the browser, pure client-side.

\- File-like abstraction for URLs and other entities exposed by web APIs

\- Unix-like style of composing commands using pipes.

\- Visualization using HTML

For instance, cp -r /gdrive/<username> /home will backup the contents of your Google Drive to your desktop (see [http://pigshell.com/v/0.6.2/doc/gdrive.html](http://pigshell.com/v/0.6.2/doc/gdrive.html) for details). Replace /home with /dropbox/<username>, and the same command will back up GDrive to Dropbox. And so on.

While it is already useful, there is still some work, especially around hardening the file abstraction/APIs (and reams of documentation) before before it can be horizontally expanded to support a bunch more APIs and cloud stores. I am actively working on these and expect they'll take ~2 months.

<comment><USER9> Interesting. Why do you think that files are good abstraction for a web shell?

<comment><USER8> It's the old "if you have a hammer, everything looks like a nail". Since I'm a filesystem engineer, everything looks like a file :)

Seriously though: the file is a powerful and familiar abstraction. The primary motivation for pigshell was to provide a common minimum abstraction across different web APIs which would enable basic data movement and backup.

That said, pigshell commands actually pass objects across the pipeline; files are a kind of object. For instance,

      cat http://pigshell.com/sample/life-expectancy.html | table2js -e "tr" foo country data | head | printf

extracts data from an html table, converts them to plain Javascript objects and prints their json representation.

</comment></comment></comment><comment><AUTHOR> I will probably write a "More Rich Command Shells" to cover things I missed here that are important in some way (like Apple's MPW).

The next thing I want to write though is about building something that has a command shell UI today and thinking about how to do so in a flexible way that works with multiple output devices.

<comment><USER10> Thanks for that article.

I'm often thinking about how to present/"unify" these:

      - command (statements validated by some token),
      - repl (expression, less side-effect driven than the previous one),
      - unary/immediate mode (each input event is interpretable right away, direct mapping between input and action),
      - n-ary/non-immediate mode (some parsing occurs, gathering a few tokens into a higher level construct)
      - non keyboard based UI/UX (some sofware like Maya have proper separation, most mouse events have direct translation into object methods)

</comment></comment><comment><USER11> Given all of that, and also Oberon -- '80s too, and even the Engelbart's Demo -- '68!, I totally every day wonder and can't understand why in 2010's _all_ of the "modern" OSes still provide the developer just with text-only consoles??... okay, maybe for end-users there _was_ a jump (in interfaces and features), and maybe it was significant indeed (movies editing, 3d modelling/sculpting, possibility of instant communication with significant fraction of all the people in the world, to bring up some). But it still feels like even for them, some things were there, and now are not (sorry for vagueness, but I don't have much time now to think about examples, unfortunately. When I'm gonna finally start this blog thing, one day...).

Any theories, anyone? I'm really curious. Still believe this can be improved, and work on some ideas in my free time, but I often wonder why I have to, and I can't already use those beautiful ancient features?

<comment><USER12> That's a very interesting question.

I'd guess that the technical decisions that differentiated early unix from the lisp machines etc. were based on hardware and cost limitations.(the development of unix is something I'd be interested in reading more about) Then as unix took off, these technologies became entrenched, with a kind of apologetics developing amongst users who liked those systems, or never used anything else.

There's an interview with Bill Joy where he said that Vi's famous modal interface was merely a result of his poor quality terminal and network connection, and now it's used by millions of programmers. I'm not saying that these users are wrong about the benefits of modal editing or the unix text interface etc, but that these are _discovered_ benefits that are then used to retroactively construct a containing narrative of justification that often walls people off from alternatives.

I'd also hazard a guess that many of these technologies were simply inaccessible and/or unknown to the mass of post-pc-revolution developers who create the bulk of our present systems. The number of devs who had access to Lisp machines was small compared to the number who came in with Unix with its success in the workstation market, and tiny compared to the number of devs who came in through home computers/PCs.

I myself grew up with 80s home computers, moving to the PC and Linux in the late 90's. Lisp machines, Oberon etc. were unknown to me until a few years ago, and information about them is still hard to come by. Nearly all the lisp machine sites are web 1.0 with broken links etc. Very few of them try to market the benefits of these systems to people in the wider community.

After I got interested in lisp and lisp machines (thanks pg!) I spent a weekend getting that notorious leaked Symbolics Genera distribution working on Linux, inside virtual box on my mac. After a few hours in the Listener, with its rich output and superior incremental help system I wanted to show it to everybody I knew. It was one of the most incredible things I had ever seen on a computer. For the next few weeks at work I was occupied with the constant thought, "This is not as good as Genera". It's had a huge impact on how I think about software, even my indie game development.

<comment><USER13> > the development of unix is something I'd be interested in reading more about

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

[http://cm.bell-labs.com/cm/cs/who/dmr/cacm.html](http://cm.bell- labs.com/cm/cs/who/dmr/cacm.html)

[http://www3.alcatel- lucent.com/bstj/vol57-1978/articles/bstj...](http://www3.alcatel- lucent.com/bstj/vol57-1978/articles/bstj57-6-1905.pdf)

[http://cm.bell-labs.com/cm/cs/who/dmr/chist.html](http://cm.bell- labs.com/cm/cs/who/dmr/chist.html)

[http://www.unix.org/what_is_unix/history_timeline.html](http://www.unix.org/what_is_unix/history_timeline.html)

[http://www.faqs.org/docs/artu/historychapter.html](http://www.faqs.org/docs/artu/historychapter.html)

</comment></comment></comment><comment><USER14> Strange he didn't mention Xiki: [http://xsh.org/](http://xsh.org/) [http://xiki.org/](http://xiki.org/)

</comment><comment><USER15> If you found this interesting, you may also like GCLI (as featured in the Firefox dev tools command line - or you can play with it here: [http://mozilla.github.io/gcli/](http://mozilla.github.io/gcli/) ).

<comment><AUTHOR> GCLI is interesting, but I didn't mention it because I feel like it focuses more on the issue of command parsing / completion.

That said, that's a great topic to cover! I think GCLI does a pretty good job of command completion. The Lisp Machine did as well. I have friends who love some of the router CLIs, but not sure which one(s).

<comment><USER16> Cisco's IOS is an example.

</comment></comment></comment><comment><USER16> If you come to Freiheit.com next week (16. Oct 2014) to the Clojure User Group Meeting in Hamburg/Germany, I'll demo the Dynamic Windows user interface of a real Symbolics Lisp Machine. Including its command shell called 'Dynamic Lisp Listener'.

[http://www.meetup.com/ClojureUserGroupHH/events/207314372/](http://www.meetup.com/ClojureUserGroupHH/events/207314372/)

<comment><USER17> Cool! Do you know if the demo will be recorded?

<comment><USER16> It won't.

<comment><USER10> Oh the sadness. Please harass someone with a capable smartphone to attempt at least :)

</comment></comment></comment></comment><comment><USER18> Slightly off-topic, but the recent surge in responsive UI had me thinking thus: If we are now driven to merge UI logic across different graphical devices, can we think of apps that span both textual and graphical devices?

After all, the core functionality of the application remains the same. To use a simple example: when you search for a product online, get a search result list and then select one from the list, couldnt this flow be modeled just the same in both gui and text interfaces?

I'm thinking back to the turbo-pascal style applications of the past that produced full-blown IDEs in text, or the wordstars/wordperfects of yore: the UI model that sits behind those apps cannot be much different in principle from the modern day equivalents.

Even farther back, there was a time (and probably still is for college assignments) when cli applications had a prompt-read user input-respond cycle, replete with text-based choices to select from and so forth.

What if we were to merge the two worlds instead of trying to get one to confirm to the other?

</comment><comment><USER19> And this is why UNIX shells feel so primitive.

</comment><comment><USER20> What about the Aurora/Eve thing? [https://www.youtube.com/watch?v=L6iUm_Cqx2s](https://www.youtube.com/watch?v=L6iUm_Cqx2s)

It is a shell, isn't it?

</comment><comment> josh-wrale How about a declarative and idempotent shell? Well, more declarative and idempotent than bash + the GNU core utils.

<comment><USER21> How would this be useful?

<comment> josh-wrale This comment thread discusses the methodology. [https://news.ycombinator.com/item?id=7378764#up_7380392](https://news.ycombinator.com/item?id=7378764#up_7380392)

</comment></comment></comment><comment><USER22> CLOS and CLIM always sounded to me like the names of programs you'd expect to see competing at disc wars, or racing in a lightcycle grid.</comment>


Censorship - Won't someone think of the adults? - <AUTHOR> http://gonedigital.net/2010/12/20/censorship-%E2%80%93-won%E2%80%99t-someone-think-of-the-adults/

<comment><USER2> Censorship of the internet, any at all, is a problem. As soon as we are filtering in any way shape or form, it will not stop.

The Internet is what it is, open/free/uncensored, and it is no-ones responsibility to censor what is said or shown. If someone would like to "protect" themselves from freedom of speech and freedom of press then it is their own responsibility and no one elses.

<comment><USER3> Kiddie porn is OK?

<comment><USER4> No, of course not. However, it isn't an excuse for censorship. It is an excuse for going after the people producing it, and monitoring those who consume it (in the USA, the FBI is the largest distributor of child porn, with the goal of arresting people who look at it, for instance). Also, there's a pretty huge difference between censoring all the pornography on the internet (which would inevitably include lots of non-pornographic content) and occasionally asking hosting companies to remove illegal content from their networks as part of legal action against the offending individuals.

Also, as an aside, I find it interesting that child porn tends to crop up in every single discussion of censoring the internet. It's something that pretty much everyone agrees is wrong, true, but it's not an argument for generalized censorship, any more than the existence of child abuse is an argument for putting sensors on every child in the world to see if they're being abused.

<comment><USER5> > (in the USA, the FBI is the largest distributor of child porn, with the goal > of arresting people who look at it, for instance)

[citation needed]

Really, I'm curious where you got this fact.

<comment><USER4> I recall reading it in an article about child porn a while back, and so don't have a citation off-hand. A bit of googling hasn't turned up that exact fact from any reputable source, although I have seen some other people mentioning it, along with quotes supporting the assertion (which I haven't been able to find the source of, strangely).

As early as 2007, the FBI did post links which claimed to be child porn as part of sting operations[1], and I remember reading about that in the past, so the fact might have gotten confused over time; it's also possible that I saw it in an article which I simply haven't been able to find. However, I'll retract that statement until I'm able to find a citation.

[1] <http://news.cnet.com/8301-13578_3-9899151-38.html>

</comment></comment></comment></comment></comment><comment><USER6> I've always wondered how we have created the system within which we find ourselves. It is possible for someone to write this well about an argument and obviously be in the right. But somehow, their argument will either be completely ignored or rebutted with a comment that doesn't properly argue the article. The injust law will then be passed regardless.

I'm talking in generalizations and not about this issue specifically. However it is a recurring theme that some invasive law will be proposed, and reasonable people reasonably argue why it shouldn't pass, and it passes anyway. How have we allowed this to happen?

<comment><USER7> Well, in a democracy the largest mob will win the vote, and not the one with the best arguments. And this largest mob is influenced by the mass media very strongly, so the 'vote' of the majority is really that of a powerful minority that controls the mass media. (which obviously presses for stronger control to be even more powerful) This is an issue with democracies everywhere in the world. I'm not sure how this 'recurring theme' can be broken, if at all.

</comment></comment><comment><USER8> Except it's not 'The Government' proposing to 'pressure' ISPs, it's one lone back-bench MP.

<comment><USER9> For such a far-reaching scheme I was curious why it wasn't getting more coverage... Who is the well-informed and clear-minded (ahem) politician in question?

<comment><AUTHOR> According to <http://www.bbc.co.uk/news/technology-12041063> it was raised by Culture Minister Ed Vaizey in an interview with the Sunday Times, but they then link to <http://www.bbc.co.uk/news/uk-politics-11822874> where they say that Conservative MP Claire Perry called for an opt-in system.

I would link to the Sunday Times article, but it's behind the Times paywall, so we're unable to find out what our elected representatives have been saying.

<comment><USER10> The Government's problem with an opt-in system is that once you agree it should be an opt-in system, who says it has to be a _Government_ opt-in system? Why not a private service? How will they ratchet from an opt-in to an opt-out to a mandatory system if they aren't even the ones running the opt-in system?

<comment><USER11> That's easy - you just have a quiet word with the owners of the company. Just like the US did with the cell phone companies to get warrantless wiretaps on 1000s of phones.

Then of course since the system is private there is no question of any political motivation and the list of banned sites is also secret as it's "commercially sensitive"

</comment></comment></comment></comment></comment><comment><USER12> What about the good old "The internet sees censorship as damage and routes around it" rule?

Why can't we just continue routing around censorship like we have for the past 20 years?

<comment><USER13> Maybe, but that can become a tough game. For example, look at the recent takedowns of 70+ .com domain names. The US Government made a decision for _the whole world_ what content is okay. Yes, we can keep routing around the damage. But as governments become gutsier about how they take content down, they may successfully censor content for 99% of the Internet users.

The rest of us - the nerds - will always be able to overcome any censorship that is imposed. But the masses may not follow our tricks; maybe it's too much trouble for them or they just don't care enough. Either way, it's bad news.

<comment><USER12> When you think about it like that, hippies had the same problem in regards to certain wars once upon a time.

Women also used to have this sort of problem 60-ish years ago.

The point is, governments' minds can be changed.</comment></comment></comment>


Free DNA decoding for your medications - <AUTHOR> https://sites.google.com/view/phenocopy/welcome <comment><USER2> Um, this page asks you to go to surveymonkey.com and upload your confidential genetic / medical information. It claims to be associated with a 'phenocopy . com' site which is an expired domain.

<comment><AUTHOR> Surveymonkey a secure method to accept our privacy policy. DNA txt fle is uploaded to drop box securely. No personal health information is requested, and we don't accept any personal health information. phenocopy.com is the name of the webpage. located on sites.google.com/view/phenocopy.</comment></comment>


Los Angeles Just Proposed the Worst Use of License Plate Reader Data in History - <AUTHOR> https://medium.com/@nselby/los-angeles-just-proposed-the-worst-use-of-license-plate-reader-data-in-history-702c35733b50#.xbl1lre3e <comment><USER2> That's why such technology should not be deployed in the first place. The possibilities for abuse are endless and the upsides limited.

<comment><USER3> And pretty much everyone in power knew that. This is just the first of many encroaching actions, lets see if they just call this "metadata" and attempt to keep it legal.

I am not anti-government, but you are completely right, you cannot ever give the state these types of tools or they will use them en-masse against their citizens.

Never underestimate the churlishness of a politician looking for a scapegoat, they know that a large portion of the population will just roll over as it only targets "bad people".

<comment><USER4> You don't have to call it "metadata." It's publicly observable information.

<comment><USER5> Stipulated, counselor. However, this is analgous to the traffic light camera situation. In the traffic light camera situation, we have 100% enforcement of some law or traffic rule that previously, we had less than 1% enforcement. Yet the fine for running a red light remains the same.

The fine was previously rather punative, because we, as a society, had to compensate for the small number of enforcers we could afford. That is, any given red-light-runner would stand a very small chance of paying the fine, so we, as a society, judged that an extremely punative fine was the best way of enforcing - you won't get caught very often, but if you do get caught, yipes! that's a big ticket. It's quite within the realm of the law to set and enforce punative fines for running a red light, but as we've seen, the whole of morality in not contained within the law. Red light cameras are almost universally loathed and given a chance, electorates will vote them out.

Similarly, license plates were nominally public, but only because they couldn't be monitored nearly 100% of the time automically. In the aggregate, monitoring license plates becomes quite a bit more theatening to liberty than the very occasional check by the small number of enforcers.

As Stalin once said, "Quantity has a quality all its own". You'd be wise to remember that.

<comment><USER6> Traffic light cameras are used to enforce a law - it's illegal to run a red light. Merely driving through an area known for prostitution does not violate any laws. (Unless these areas are totally deserted, people live and work there, and may drive through to reach adjacent areas.) If the government thinks prostitution is a problem, it could enforce prostitution laws without harassing innocent citizens.</comment></comment></comment></comment></comment>


Bashers and Swoopers – How the tools we use for writing are letting us down - <AUTHOR> https://medium.com/@oliebol/bashers-swoopers-257e9f27fb33 <comment><USER2> To sum up this "article":

Some fluffy paragraphs about linear writing.

Fewer fluffy paragraphs about non-linear writing.

Leading question: __Can you relate to this? __

Convenient link to the author 's product, which is, you guessed it, a non- linear writing application.

This is just an advertisement.

</comment><comment><USER3> A good "outliner" can take you very far. You can start with a good, logical outline for what you want to write, then just fill in what you need.

There are also tools like [https://gingkoapp.com](https://gingkoapp.com) which helps with structured writing and allow to move or "reattach" entire subtrees of a document.

My personal favourite is to use lots of separate text files (.md or .tex) and a top level "main file" which includes the desired sections. I find a single level of includes works best since you can see exactly what is going on in the main file, whereas if you include files that include other files, things get complicated real quick!

Pro tip for working with multiple .tex files: if you start each of the included .tex files with

        %!TEX root = mainfile.tex

the multi-file authoring experience becomes much better ;)

<comment><USER4> An outline forces a high level sequential structure. You just moved the problem one level up.

</comment></comment><comment><USER5> This seems like a forced false dichotomy (perhaps for rhetorical purposes, but then it isn't as important as it claims to be).

What I mean is that I somewhat doubt most people fall into either of these two camps. I would bet most work linearly, keeping in mind vague parts and ideas for elsewhere - maybe keeping notes in AN extra document, but also not limiting themselves to working strictly forwards.

Until there is a medium of non-linear consumption, I am skeptical of the need for serious tooling around non-linear documents besides what we already have (mind maps, graphs, etc - all things with products for them but ultimately the biggest thing keeping this from translating well to the computer is the mouse and keyboard, not the software)

</comment><comment><USER6> I'm a bit confused by this - I cannot even imagine how you would think in a way that is not linear when thinking about a story. Sure you might be thinking of various aspects that you want to include and you don't know where in the overarching story they will fit in, but still these aspects can be expressed in an order that is either linear or able to be broken down into smaller chunks that are also linear. Seems this article is talking about something different than this again..

Could someone enlighten me?

<comment><USER4> Let's start with an episodic structure. You can think of a few cool episodes or themes right? Then you expand on the episodes or themes while thinking on an overarching story. Afterwards you could fix continuity mistakes, fill in the blanks, expand or condense it.

This is bottom up design instead of top down. An episode is good if it can stand on its own, but there is no need to work on them in any particular order.

Think about it like a process of discovery. You can get an idea for a different part of the whole while working on something completely unrelated. Current note taking tools do not help with this - dumb post it notes are better.

</comment></comment><comment><USER7> Aw yeah, this is the stuff I'm working on.

Did you know writing is literally stone age technology? True story.

The serialized list of symbols we use to exchange thoughts doesn't have enough features for the modern world. It takes too much effort to serialize (write) and deserialize (read) information. The knowledge should be separated from the way it happens to be displayed to each individual person.

</comment><comment><USER4> The example shown in the photo with the writer of a detective model is a crude version of mind map. There are a few tools to handle those well, but none integrated with a good word processor.</comment>


Robust-first programming in ULAM (2015) [video] - <AUTHOR> https://youtube.com/watch?v=I4flQ8XdvJM <comment><USER2> Sorry, having a hard time making sense out of this. If you understand what this guy is talking about can you provide a coherent summary of the video please?

<comment><USER3> This is my best guess interpretation. I might have misunderstood some parts, so I would love it if someone else could correct me.

Imagine a distributed system where nodes in the computation compute some result by communicating intermediate results between each other, and can withstand some number of nodes failing. This is possible because, with careful design of the algorithm and edges between nodes, each node has enough self- sufficiency to detect when its neighbors are misbehaving.

Dave Ackley starts off with the following observations:

1\. It becomes harder to maintain the deterministic properties we love as we scale the complexity of the nodes.

2\. A node's random access to memory/state becomes less reliable the more state there is because the complexity of the node must also scale.

3\. 1 and 2 make it harder for complex nodes to guarantee correct results.

So, he proposes the following: what if we scale nodes way down to the point where their messages are very small (on the order of bits). This moves the problems that might otherwise be observed within the nodes to the network structure between nodes. At first, this might not seem like this offers much; however, this allows us to reason about resiliency at a much finer granularity. Ulam is a programming language for such a system, running on a machine model that resembles a cellular automata where the cells are slightly more intelligent. He illustrates this via a line that reconstructs itself as he manually disrupts them, but a more familiar and practical (though much more complex) hypothetical use case might be a network of many adder-circuits that can dynamically tolerate some number of random bit flips.

If one were to program for such a system, you could think of a program as a living organism that repaired itself statement-by-statement even on faulty hardware.

Edit: There is a more in-depth article available at [https://www.mitpressjournals.org/doi/pdf/10.1162/ARTL_a_0021...](https://www.mitpressjournals.org/doi/pdf/10.1162/ARTL_a_00212) I haven't read it yet, but I will.

<comment><USER2> Thanks, this is much easier to understand. Much appreciated!</comment></comment></comment>


Show HN: MagicEye.js – Generate Magic Eye in Your Browser - <AUTHOR> http://peeinears.github.io/MagicEye.js/ <comment><USER2> I hate these things. Ever since I was a child I've never been able to see them, no matter how far away, how much I squint, nothing, nada.

As a child I became convinced that everyone was taking the piss out of me. Aged nearly forty, I stand by that!

I still can't see the damn things ;-)

<comment><USER3> So I learnt how to do it as a kid.

Basically, what I do is, imagine you are looking through the image and past it, like if you were looking through a tiled window and wanted to focus on the on something outside small. Then after refocusing your eyes (you can't blink or else it'll reset your eyes) keep doing it, it can take you ages, what you'll see are the tiles.

Also what helped me, is focusing on a single point and moving back and forth.

Good luck!

<comment><USER2> To be honest, I actually think it is something (medical) to do with my eyesight. I have poor eyesight in one eye, and a bit better on the other. I also have astigmatism in both eyes.

</comment></comment></comment><comment><USER4> It would have been better if the demo image was not a random generated shape thing. I spent a few minutes trying to figure out what the hell I was looking at in there.

Is it a wave? A recursive wave? wtf, X

<comment><USER5> That's my opinion too. I love 3D. I've made _lots_ of 3D images, classic LR pairs, and SIS, but I'm not enamored of RSIS. One thing about the random stereograms commonly produced, including the demos here, is that having too many horizontal repeats makes the image harder to fuse at usual viewing range.

I'd suggest limiting vertical panels to 7 or so, which would make it easier to see in 3D on a small screen. That goes for any SIS, whether random or bitmap slice "surface". To my sensibilities, the random dot type, as opposed to a normal bitmap image slice used as the vertical panel, is much less visually interesting and gives the viewing eyes much less to grab onto.

IMO a carefully chosen bitmap thematically or visually coordinated with an elegant carefully drawn depth map creates a work of art that can be appreciated for its interesting shape and color even by viewers who can't grok the 3D effect.

Besides, looking at something beautiful can motivate people to keep trying to see the 3D part come into focus, and eventually some do succeed. When that happens it really is like "magic".

</comment></comment><comment><USER6> To this day the thing I think about when someone mentions a stereogram is this version of tetris.

[http://3dimka.deviantart.com/art/3D-Stereogram- Tetris-367952...](http://3dimka.deviantart.com/art/3D-Stereogram- Tetris-36795242)

</comment><comment><USER7> When Lord? When the hell do I get to see the goddamn sailboat?

<comment><USER8> Relax your eyes!

I've never been able to see one of these things on a screen until now. Now that I have, I really want too see an animated one.

The coolest thing so far is that you can click "redraw" and you'll cut to the next one and your eyes will already be focused for it.

<comment><AUTHOR> Look, it's a schooner! ;)

There's pretty recent music video that's all autostereogram: [https://www.youtube.com/watch?v=2AKtp3XHn38](https://www.youtube.com/watch?v=2AKtp3XHn38) The dots at the beginning are helpful.

I don't think MagicEye.js is fast enough to do a bunch of frames on the fly for some real-time animation, unfort. But if you already have the frames rendered you could stitch them together into a gif.

<comment><USER9> I did an animated 3d plasma for js1k some time ago. It's not fast but it's animated: [http://js1k.com/2013-spring/demo/1412](http://js1k.com/2013-spring/demo/1412)

h key toggles the height map.

It uses a simplified version of the MagicEye.js algorithm which generates horizontally repeating patterns for hard height changes in the source image. That's why I went with a plasma in the end.

Source is available here: [https://github.com/philippstucki/sird- plasma/blob/master/3dp...](https://github.com/philippstucki/sird- plasma/blob/master/3dplasma.js)

<comment><USER10> Really cool! I've wanted to see a dynamic animated MagicEye in action ever since I saw an Oculus Rift demo video with side by side left/right views and was able to get a 3D effect in the middle by focusing on it like a magic eye. It was hard to do because of the distance and looked pretty ugly because the separate L/R views were still visible. I tried to make my own but quickly gave up. If snappier animation is possible, there's definitely some fun to be had in game form. Recreations of the old vector based arcade games would be really fun. I wounder if there would be any effect, bad or good, on your eyes staring at one for too long.

</comment></comment></comment></comment></comment><comment><USER11> You haven't really seen magic eye unless you've played quake with the magic eye mod. I had headaches for days!

<comment><USER12> This... sounds amazing

</comment></comment><comment><USER13> If you don't quite have the knack for relaxing your eyes to see these, here's "one weird trick".

Position yourself with something behind you (such as a window) that you can see reflected on the screen. Focus on the reflection so you are looking "through" the screen. Now re-focus on the screen, but not immediately! Hold your focus and let it "slip" as slowly as possible. At some point your eyes will converge at the right depth and you'll catch a glimpse of the shapes behind the screen. When you see the pattern starting to come into focus, lock your eyes onto it. The first few times you'll probably catch a glimpse but fail to lock on. Repeat until you get the hang of it.

<comment><USER14> Nope. Doesn't work. Everyone's advice fails to work for me. I tend to think this is just a mass conspiracy or giant elaborate joke. I'm going to use this JS script to generate tests to see if I can get people who can do this to tell what the number is behind this "magic eye". Call everyone on their bullshit.

<comment><USER15> Here's how I (accidentally) learned to do it: hold up a forefinger from each hand, pointed at each other, with a very small gap in between. Now look at something in the distance through the gap: you should see a magic "hot dog finger" floating in the air between them.

Once you can see this, alternate between looking at your fingers and looking at the distance. Once you've got the mechanic down, you can start intentionally unfocusing without anything in the distance to look at, which is what it takes to see a magic eye.

<comment><USER14> Nope. Doesn't work.

<comment><USER15> Out of curiosity: did the finger hot dog trick not work, or did it not translate to the magic eye?

</comment></comment></comment></comment></comment><comment><USER16> I wonder if we could use Magic eye as a replacement for captcha.

<comment><USER14> they don't work on a significant portion of the population.

edit: like myself.

<comment><USER16> I would really like to participate in "What are you working on this week" thread such as in Lobste.rs but I couldn't since they require invites only, which I don't know anyone who has accounts already. The purpose of their invites-only was to avoid spam. If that's what they really want, then Magic Eye will make spammers bleed their eye, and the potential users who really want to join will have to take time learning Magic Eye, which I think pays the trade off.

<comment><USER17> Yes, let's cut off all user with visibility problems from our websites!

</comment></comment></comment></comment><comment> mark-r I think it works better if the 3D object isn't allowed too near to the edge of the image. I had trouble keeping it in focus as my eyes went to the right side.

</comment><comment><USER18> It's actually quite hard to see the 3D images. I remember giving my mom a book full of this 3D stereoscopic images as a present some years ago. She still hasn't been able to see any of the 3D images, even after hours of viewing.

</comment><comment><USER19> Some explanation of what this is supposed to be would be helpful I think. Just looks like a strange grainy image to me.

</comment><comment><USER20> Would be nice to make animations with this. And with textures that aren't dots.

</comment><comment><USER21> Nicely done. I just wonder where to embed these...

</comment><comment><USER22> What a fantastic idea! Just drew my name, love it.

<comment><USER23> Wait, did it get your name right? It's kinda buggy for me, it draws every letter twice for me (twice in 3D, of course it has to draw it twice in 2D).

<comment><USER23> Nevermind, I managed to squint enough to get the letters to combine into a perfect image. It should not be possible to get more than 1 correct 3D image, the period of the background should be increased.

</comment></comment></comment><comment><USER24> Wow, this is awesome! Have an upvote.</comment>