A case for writing unit tests for your blog posts - <AUTHOR> http://tosbourn.com/2013/12/other/case-writing-unit-tests-blog-posts/ <comment><USER2> If you want a handy outline for a persuasive blog post (or any other communications medium), try the "Decker Grid".

 __*

1\. Opening: SHARP (a "hook" to catch reader's attention), your point of view, general action step (what you're asking them to do), and what the benefit will be.

2\. Main body (1): Key point, sub-point 1, sub-point 2, sub-point 3

3\. Main body (2): repeat

4\. Main body (3) repeat

5\. Closing: restate your point of view, suggest a more specific action step, restate the benefit, and end with another SHARP (memorable hook).

 __*

SendGrid's Elmer Thomas published a comprehensive write-up of the Decker communications training, including the grid, here: [http://sendgrid.com/blog/principles-of-a-killer-hackathon- de...](http://sendgrid.com/blog/principles-of-a-killer-hackathon-demo/)

<comment><USER3> Everything old is new again. The 'Five Paragraph Essay' is not a 'Decker Grid', nor is it new. [http://en.wikipedia.org/wiki/Five_paragraph_essay](http://en.wikipedia.org/wiki/Five_paragraph_essay)

<comment><USER2> I considered linking to that same page, but it seemed overkill.

</comment></comment></comment><comment><USER4> I've had this experience. I've written a long, rambling post that I like, but failed to include the final paragraph that makes explicit the point I originally wanted to make. Or I've found myself with paragraphs that just don't quite go together.

</comment><comment><USER5> I used to be a big advocate for unit testing, but lately, I think they are often a waste of time. They are great if you already know what you want to make and want to make sure you get-it-right-the-first-time. But if you're exploratory programming, designing as you go (which is one of the advertised uses of TDD), then you're likely to end up with 4 times as much test code as real code that all has to change drastically once you realize your initial assumptions were wrong. At that point, it's often easier to just scrap it all and start over than it is to figure out if the failed tests are because of bugs in the code or mismatches between the newer code and older tests.

<comment><USER6> I agree that TDD isn't great if you're just exploring a problem domain. For that, I use spike solutions (throw-away standalone programs).

But I've also noticed that a lot of people seem to use a very verbose, mock- centric approach to TDD. That approach isn't amenable to refactoring because anything more substantial than "rename" or "extract method" changes details that the tests depends on. If you're finding it difficult to change your code once it has tests, it might have something to do with the way you're writing your tests.

<comment><USER5> Yeah, the key is interface testing. I have a MUD that I'm writing right now with which I fell into an overly verbose TDD trap recently.

Originally, I had a script that ran an AI character through a number of actions executed via the same series of commands that a user would use, then checked the results also through the same series of commands that a user would use, and that worked great. But then I started down this road of thinking, "I never even had my own code! Look at me, granny coding, not unit testing like I should." And started down this boondoggle path of writing a few kilolines of test code.

Long story short, most of what I ended up writing was completely useless. The most important feature of testing is _coverage_ , to have a way to hit every corner of the code to validate that it's all still "not failing", NOT to verify that the design is behaving lock-step as planned. Which is very important in this case because the game is being written in JavaScript, thus there is no static compile-time checking.

</comment></comment></comment><comment><USER7> Interesting.. .I had never considered the parallels between (technical) writing and coding, but this is often what happens when I write. And I guess this could be extended to include outlining vs. specs or pseudocode. . .for those who write code and/or prose in a more structured process.

And I guess some steps could/would apply to some "non-technical" writing, as well. And it's what good (in my opinion) good English teachers do, too. Thinking back to one of my favorite high school teachers (who happened to teach English) and my (college) freshman English composition instructor.

</comment><comment><USER8> This is a good idea -- I can certainly say that I've written stuff that would be improved by refactoring. Can I encourage people to write actual unit tests for any code presented, too? I usually take my code snippets from a small standalone project, with unit tests and a build script (Maven, as I usually work in Java), placed in a git repository that I link to.

</comment><comment><USER9> Isn't this just a checklist? Something like (for a tutorial type post):

1\. Are the steps outlined clear enough?

2\. Are appropriate screenshots included?

3\. Are error messages explained?

etc etc?

</comment><comment><USER10> I don't know that blog posts necessarily are (or should be) structured enough to lend themselves to 'unit testing' in any way which makes that term relevant. What OP is describing seems to be basically previewing the post first before publishing it?

</comment><comment><USER11> Any chance I can make a push for blog posts to all be literate programming? :)

<comment><USER12> You could almost turn it into rapGenius styled annotation of your own post - comments and pseudo code read as a part of the post, inextricably linked, but separate.

<comment><USER11> This is the first I've heard of rapGenius. Evidently I was under a rock.

That is impressive, but I don't care for how "click heavy" it is. More simply put, one of the things I like most about literate programming is how it rearranges the code to be more narrative based for the reader, less structure based for the computer. Sometime these align, but often I've found that my biggest mistakes are when I make structure compromises to try and preserve some sort of narrative coherence. Something I don't necessarily have to do for literate programming.

</comment></comment></comment><comment><USER13> What is described sounds closer to a spec than unit tests, correct? This is probably a great idea for a lot of prose in general, not just blog posts.</comment>


Information design: a restaurant menu that makes people choose healthier options - <AUTHOR> http://www.latimes.com/health/boostershots/la-sci-exercise-calories-20130423,0,6671036.story

<comment><USER2> Since they can increase the sales of certain items versus others by showing these exercise stats, it would be an interesting experiment to toy with the pricing to find the sweet spot where people will pay the most amount of money for those healthier items before they switch back to eating the higher caloric items.</comment>


Reddit Gearing Up to Ban or Quarantine the Alt Right Subreddit - <AUTHOR> http://heatst.com/tech/reddit-ban-quarantine-alt-right-subreddit/ <comment><USER2> Who cares? Reddit is a private company, they can set their own standards for moderation. For several years now I've seen this non-stop obsession with lambasting reddit as a shit-hole and a left-wing echo-chamber and a shit company run by amateurs and SJWs.

Who cares? The overwhelming majority of redditors subsist on photos of animals and drawings of video game characters. Just leave if reddit isn't friendly to your particular proclivities. If you hate fat people, liberals, feminists and BLM activists there are many places on the internet where you can find common cause.

<comment><USER3> >Who cares? Reddit is a private company, they can set their own standards for moderation.

Except it's not that simple. There's a substantial amount of judicial precedent that you can't refuse service to customers just because you disagree with their ideology or background, otherwise it would be okay to refuse service to supporters of gay marriage for example.

It's appalling that you would even suggest that.

<comment><USER4> There is literally no "judicial precedent" for a website owner being disallowed from moderating user-submitted content. What are you talking about?

<comment><USER5> There actually are lots of safe harbor protections for common carriers. Lack of editorial oversight is why sites like YouTube can qualify for these protections, but sites like Gawker wouldn't be able to. (Even though they ultimately got shut down for ignoring a court order or whatever.)

<comment><USER6> YouTube still takes down videos, comments, channels, etc., and restricts others by age/country/etc.

<comment><USER7> Sure, but that's _within_ safe harbor rules. If they went and moderated content and comments in a non-reactive way, say by banning commenters whose opinions they found incorrect, that would be legal but could jeopardize their safe harbor status.

<comment><USER8> YouTube completely censors material, here's a list of the actions they've undertaken: [https://en.wikipedia.org/wiki/Censorship_of_YouTube](https://en.wikipedia.org/wiki/Censorship_of_YouTube)

And as it states there, they also have censorship based on their terms of service, where they prohibit the posting of videos which violate copyrights or depict pornography, illegal acts, gratuitous violence, or hate speech.

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> If Reddit can not handle free speech, Voat will.

Once Voat is overrun by the enemies of free expression, someone else will take the helm and continue. Such is the nature of a free Internet.

<comment><USER10> Ironic that you've made this comment on HackerNews, a site, it can be argued, whose appeal comes from its pretty substantial moderation. I can't tell you how many links I've seen flagged and banished from HN that I thought were important, but... once I cooled down my outrage, I realized the conversations occurring on them were pretty toxic. I come to HN because of the focus and constructive dialogue. I stay away from Reddit (and long ago abandoned /.) because of the toxicity.

Yes. The alt-right and the_donald reddit community members can move to a less- popular platform, but that doesn't necessarily mean that platform has just become more popular. It means the loudest, most-obnoxious people have just lost their Reddit audience. When 1% of commenters are making 90% of the posts, that's no longer a dialogue and that drives away readers. Encouraging polite dialogue and policing abusive behaviors are smart business moves for Reddit and Twitter.

<comment><USER11> I frequent hackernews and /r/askhistorians because of strong moderation. I support free speech. Communities being moderated are different than platforms being exclusive to certain communities. (I consider hackernews to be a community not a platform due to its strict focus.)

I can choose which communities to ignore, lurk in and participate with. I dont support extinguishing communities I choose to ignore.

You get what you get when you choose to congregate at the firehose nozzles of twitter and /r/all

<comment><USER9> I think this is the most important comment in the whole thread.

</comment></comment></comment></comment><comment><USER12> Since when has a company enforcing their TOS been discussion worthy? Their content policy clearly outlines what is considered "Unwelcome Content" and it seems like the majority of the alt-right thread would be classified as "Violent Content" under Reddit's terms.

I think a much more amusing enforcement of such policy would be for Twitter to ban Donald Trump, thereby also banning the @POTUS account for the term of his Presidency for "Abusive Behaviour" on Twitter such as openly harassing the cast of Hamilton.

[https://reddit.zendesk.com/hc/en- us/articles/205701105](https://reddit.zendesk.com/hc/en-us/articles/205701105) [https://www.reddit.com/help/contentpolicy#section_unwelcome_...](https://www.reddit.com/help/contentpolicy#section_unwelcome_content) [https://support.twitter.com/articles/18311](https://support.twitter.com/articles/18311)

</comment><comment><USER13> > The Alt Right is a racial movement and has always been a racial movement. > Race is at the very core of the alt right and there is absolutely no way to > be alt right without discussing racial realism, especially from a white > perspective

Just because you rebrand racism as "racial realism" doesn't mean you aren't racist and Reddit has no appetite for hosting racist speech. Go start your own Reddit if you don't like it. That's the wonderful thing about the web, its easy to make your own discussion forums.

I'm sure Voat will love these guys, meanwhile I don't have to deal with "racial realism" brigades and trolls on the subs I read. Seems like a win-win for all involved.

<comment><USER14> >Just because you rebrand racism as "racial realism" doesn't mean you aren't racist and Reddit has no appetite for hosting racist speech.

Why not? People have been rebranding racism for years.

</comment></comment><comment><USER15> throw r/the_donald in there with them

<comment><USER16> Yes! Lets silence the opinions of everyone we disagree with! Lets take away their places to talk so they have to skulk in the shadows! Lets pretend there's no merit to listening to the thoughts of millions of people!

Why stop with removing their access to Reddit? Why not make it downright illegal to talk about it? Why don't we make it illegal to think about it, too?

I'm exceptionally left-leaning and I don't agree with removing these people from Reddit, it's censorship of views we don't like, plain and simple. Are we really so childish that we believe that if we stop these people talking about it then the problem will go away? They'll just move elsewhere and common discourse will be more difficult, people will be more entombed in their own biased beliefs.

<comment><USER17> See, the problem with all of this is that they get the 'left-wing' people to fight for them. These people have not lost anything but an outlet to abuse people, and spread their sexist, racist philosophies (If you disagree with this, try reading through Breitbart without being disgusted at the contents).

Do not worry. These people still have their freedom of speech, they are free to spray paint swastikas in bathrooms and put threatening letters through the doors of American citizens, but they will no longer be able to preach their philosophies on Reddit.

<comment><USER16> But why should we not fight for them? I am just as angry about the thought of us being censored as I am of the thought of them being censored.

It doesn't matter whether what they say disgusts me or not, I don't have the right to not be offended. People often use Reddit to find news, I believe that Reddit should have a duty to provide that service in an unbiased way without inflicting their own views on the people who use their service. All they should care about it is "is this illegal?"

Yes, I understand that they're a company and not a government agency, it's of course just my opinion that they have such a duty.

<comment><USER17> > All they should care about it is "is this illegal?"

In many countries, the UK included, many of the posts on the fascist subreddits _are_ illegal.

> But why should we not fight for them?

Because the value of life should be held to higher value than the 'destruction of free speech' (Except Reddit isn't doing anything to their free speech, they're denying them a platform. Which is objectively different). These people quite literally stand for genocide.

> I don't have the right to not be offended

Yes, yes you do. That's part of free speech, isn't it?

<comment><USER16> I live in the UK and wholly agree, the Public Order Act 1986 makes it very clear where it stands on hate speech, and yet I disagree with it, the same as I feel about the Snoopers Charter and other such laws. Freedom of speech should be granted regardless of who is offended by your speech, you should have the right to say exactly what you want, I have the right to think you're a dick head for saying it, but you should still be able to say it.

I'm not condoning threatening behaviour or violence, I'm just saying that I believe that if someone wants to call be a ginger bellend, they should have the right to do that.

Freedom of speech should be defined as such: Free speech and the right to freedom of expression applies to ideas of all kinds including those that may be deeply offensive.

The trick behind it is that your speech here may be offensive to the far- right, does that mean that you would be okay if they passed a law saying it was illegal?

<comment><USER17> > The trick behind it is that your speech here may be offensive to the far- > right, does that mean that you would be okay if they passed a law saying it > was illegal?

The fundamental difference is that I am not calling for the extermination or genocide of a group of people.

Speech like that isn't simply 'offensive', in the same way that one person wanting to kill someone else isn't a simple 'disagreement'.

Death threats are illegal in the UK, for the simple reason that it causes severe trauma to receive a large amount of them. Calling for the death of a group of people is just as bad. I honestly suspect you would live differently knowing that a large vocal group wants to exterminate people with a trait you carry.

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Left needed a new boogyman because the old ones were getting stale. "alt right" is a perfect candidate.

If you believe people who agree with some of the alt-rightist views must be held accountable for the standard racists who use that worldview as cover, then logically you must also make it incumbent upon people of muslim faith to tug a forelock to "us enlightened folk" in shared outrage and be accountable for the extremists who act in their name, and for random jewish people to be accountable for settlements, for catholics to feel they owe you something for their Irish "freedom fighters," etc.

</comment><comment><USER19> The question is: Does "stopping" the speech encourage or mitigate IRL behavior / action?

In addition, forcing ideas underground will likely strengthen the will and beliefs of the hardcore believers. That is, when you marginalize those who profess to be marginalized, you run the risk of enabling them.

Sucks being Reddit but it might actually be all for the better, as ugly as it is.

</comment><comment><USER20> Someone should explain the author the difference between racism and a stereotype (linked meme picture).

<comment><USER21> Just read the comments of the OP in the linked meme thread. I don't want to repeat it here, but there is one that is as racist as they get ([https://www.reddit.com/r/altright/comments/5d8qm6/time_to_st...](https://www.reddit.com/r/altright/comments/5d8qm6/time_to_stop_giving_away_our_hammers/da3wgte/)).

I would also consider the image racist in any case, it's just not the most racist thing in that thread.

</comment></comment><comment><USER22> This thread is going to follow the predictable bizarre reasoning about how all 60,000,000+ Americans who voted Trump are racists because 0.01% of them are in the KKK.

Can we PLEASE keep this shit off Hacker News?

</comment><comment><USER23> Yawn. No big surprise here, and it won't be a surprise when when the_donald is banned. Reddit users tend to be young and young people tend to lean left. It is by definition and echo chamber due to how quickly unpopular opinions are vaporized by downvoting.

What would be more interesting is to see what subreddits are tolerated that promote excessively immoral or illegal behavior.</comment>


Lost Civilization May Have Existed Beneath the Persian Gulf - <AUTHOR> http://www.livescience.com/history/lost-civilization-possibly-existed-beneath-persian-gulf-101209.html

<comment><USER2> _"If it looks like a duck, and quacks like a duck, we have at least to consider the possibility that we have a small aquatic bird of the family Anatidae on our hands."_

Nice. This quote I'm going to try to work into conversation this week.</comment>


Ask HN: Why is the community so negative towards blockchain technology? - <AUTHOR> I'm hoping to have a technical discussion, emotions aside. <comment><USER3> Well since you asked.

Blockchain is the world's worst database, created entirely to maintain the reputations of venture capital firms who injected hundreds of millions of dollars into a technology whose core defining insight was "You can improve on a Ponzi scam by making it self-organizing and distributed; that gets vastly more distribution, reduces the single point of failure, and makes it censorship-resistant."

That's more robust than I usually phrase things on HN, but you did ask. In slightly more detail:

Databases are wonderful things. We have a number which are actually employed in production, at a variety of institutions. They run the world. Meaningful applications run on top of Postgres, MySQL, Oracle, etc etc.

No meaningful applications run on top of "blockchain", because it is a marketing term. You cannot install blockchain just like you cannot install database. (Database sounds much cooler without the definitive article, too.) If you pick a particular instantiation of a blockchain-style database, it is a horrible, horrible database.

Can I pick on Bitcoin? Let me pick on Bitcoin. Bitcoin is claimed to be a global financial network and ready for production right now. Bitcoin cannot sustain 5 transactions per second, worldwide.

You might be sensibly interested in Bitcoin governance if, for some reason, you wanted to use Bitcoin. Bitcoin is a software artifact; it matters to users who makes changes to it and by what process. (Bitcoin is a software artifact, not a protocol, even though the Bitcoin community will tell you differently. There is a single C++ codebase which matters. It is essentially impossible to interoperate with Bitcoin without bugs-and-all replicating that codebase.) Bitcoin governance is captured by approximately ~5 people. This is a robust claim and requires extraordinary evidence.

Ordinary evidence would be pointing you, in a handwavy fashion, about the depth of acrimony with regards to raising the block size, which would let Bitcoin scale to the commanding heights of 10 or, nay, 100 transactions per second worldwide.

Extraordinary evidence might be pointing you to the time where the entire Bitcoin network was de-facto shut down based on the consensus of N people in an IRC channel. c.f. [https://news.ycombinator.com/item?id=9320989](https://news.ycombinator.com/item?id=9320989) This was back in 2013. Long story short: a software update went awry so they rolled back global state by a few hours by getting the right two people to agree to it on a Skype call.

But let's get back to discussing that sole technical artifact. Bitcoin has a higher cost-to-value ratio than almost any technology conceivable; the cost to date is the market capitalization of Bitcoin. Because Bitcoin enters through a seigniorage mechanism, every Bitcoin existing was minted as compensation for "security the integrity of the blockchain" (by doing computationally expensive makework).

This cost is high. Today, routine maintenance of the Bitcoin network will cost the network approximately $1.5 million. That's on the order of $3 per write on a maximum committed capacity basis. It will cost another $1.5 million tomorrow, exchange rate depending.

(Bitcoin has successfully shifted much of the cost of operating its database to speculators rather than people who actually use Bitcoin for transaction processing. That game of musical chairs has gone on for a while.)

Bitcoin has some properties which one does not associate with many databases. One is that write acknowledgments average 5 minutes. Another is that they can stop, non-deterministically, for more than an hour at a time, worldwide, for all users simultaneously. This behavior is by design.

I can go on, and probably will some other day. This is a bit of a hobby for me.

<comment><USER4> Bitcoin allows you to buy all sorts of exotic drugs from strangers, safely and securely from your couch.

<comment><USER5> Plus operating ransomware.

The problem with Bitcoin is the costs associated with using it. Due to its decentralised nature it will always be more costly than centralised solutions. Therefore, Bitcoin simply cannot compete unless illegal activities are involved. The economics simply do not work out.

<comment><USER4> >Due to its decentralised nature it will always be more costly than centralised solutions.

That's a really sweeping claim and I'd argue that it's too soon to really claim one way or another.

The security of bitcoin is inherited from it's decentralization. The massive proof of work operations in Bitcoin (and the resulting costs) are part of bitcoin's security.

Centralized solutions will always be vulnerable as long as security bugs exist (have you ever heard of a completely secure database?) And fraud will always be part of the equation.

So what's better? Currently no one knows. But interestingly enough the direction of bitcoin right now is to build centralized networks on top of a decentralized network.

<comment><USER6> This follows from basic computer science. (Something I increasingly find Bitcoin advocates handwaving away.) If decentralisation were more efficient than centralisation, systems aiming for efficiency would naturally centralise; this is not what we observe.

The decentralisation is _stupendously_ inefficient, Proof of Work is 47kg of carbon _per transaction_ literally wasted, and it all centralises anyway - <USER2> code is controlled by just a few people, the mining is controlled by four miners (and there is no guarantee they are owned separately), most of the mining is in one country and 75% is about to be in one building.

Bitcoin decentralises things that don't need to be decentralised, wastefully, then naturally recentralises anyway.

<comment><USER4> >If decentralisation were more efficient than centralisation, systems aiming for efficiency would naturally centralise; this is not what we observe.

I'm going to assume you mixed up your words there. I'd argue that we see lots of decentralization on the web. I don't see why it has to be one or the other, they seem to work fine in a hybrid state.

>the code is controlled by just a few people, the mining is controlled by four miners

Code is available on github and you can fork it. Mining centralization was the result of competition and some ambitious Chinese living next to dams. There is nothing preventing this from changing in the future.

>Bitcoin decentralises things that don't need to be decentralised, wastefully, then naturally recentralises anyway.

I'd say that money should definitely be decentralized.

<comment><USER7> > I'd argue that we see lots of decentralization on the web.

Youtube, Paypal, Facebook, Steam, Reddit, Medium, Github, hell even hackernews - I think the big success story of the internet in the past decade has been the centralization. Decentralization is usually popular because of illegal intents (like bittorrent). I agree with you though, they could exist in a hybrid state and there will always be markets for decentralized systems. But a global economic system run that way is on a totally different scale and stake.

> I'd say that money should definitely be decentralized.

Depending on how it's done, it very well should, but a lot of things come into question like governance and consumer protection, and actually moving the world forward and helping those who aren't computer savvy. Unless you're a libertarian, the economy is really a means to an end and not and end in itself, and another big success story over the past decades has been the huge global economy that has been created and enabled everyone from the poor to the old to people who aren't as savvy to work and live relatively safe lives. You can't just dump the bitcoin software on everyone and say, "here it is! your life savings, your paycheck, your everything, just make sure you don't fry the hard drive that it's stored on and make backups!"

Decentralization is for the most part, an enthusiast endeavour. The centralization aspect is powerful because it offloads all the technical details so that 5 hours per day of brainpower on the whole globe isn't wasted on just trying to do something as simple as recovering 5 bucks in an emergency. And this applies to almost any decentralized service and applies even more strongly to things that are of survival importance like money. I'm not disregarding the idea or making a prediction, it's just there's a lot here to think about I think

<comment><USER4> >Decentralization is usually popular because of illegal intents (like bittorrent).

I guess we view de/centralization in a different way. All the sites you listed are centralized under a brand/code but decentralized on cloud servers. Inspecting a page and viewing sources you can see how many places a site loads from (hackernews is pretty centralized)

>Decentralization is for the most part, an enthusiast endeavour.

I'd agree that Bitcoin is an enthusiast endeavour currently. There are several elephants in the room though, the federal reserve, unaccountable corruption, currency manipulation, SuperPACS, offshore tax havens. I'm not naive enough to claim that Bitcoin could solve these problems or even any of them, but it could be used as a tool if utilized properly.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> As someone in finance, where blockchain gets brought up alot, this one is easy.

Blockchain is the proverbial solution looking for a problem. As has been pointed out ad nauseam, the blockchain is often just a euphemism for database.

And that's where the backlash comes from, someone says Blockchain for settlement, or blockchain for recording startup up option tracking, or blockchain for tracking, well anything physical or digital.

The problem with these solutions is that almost always, there exists a database doing exactly what the person is proposing we use blockchain for, there aren't any trust issues with the counter parties so distributed consensus doesn't buy you much, often it makes things worse due to its immutability.

Couple that with the fact that many people like the current system, or make money based on the current system and therefor can't see anything broken about it.

Also, the current technology has inertia behind it, the new technology can't be just a bit better, it needs to be much better to displace the incumbent tech, and blockchain just isn't that much better yet for most of the soutions its proposed for.

TL/DR Blockchain is the new NoSql. Awesome, useful in very strict cases, but its currently supremely hyped up and over sold.

<comment><AUTHOR> I completely agree, it sounds like the forever present problem of wrong tool for the right job.

However it offers the potential to approach problems in a fundamentally different manner. I find myself incredibly curious and fascinated with how it works - then immediately rejected once I see discussions on HN about the blockchain.

According to your bio you've been programming for many years - is an apprehension towards something new a common pattern you've observed?

<comment><USER9> To many people on HN, blockchain isn't new; many of us have gone through the incredibly curious and fascinated stage around 2011-2013 and are now in the cynical and grumpy stage. If you're curious about this stuff keep learning but HN and Reddit probably just aren't good places to do so.

</comment></comment></comment><comment><USER10> To quote Matt Levine:

"If you announce that you are updating the database software used by a consortium of banks to track derivatives trades, the New York Times will not write an article about it. If you say that you are blockchaining the blockchain software used by a blockchain of blockchains to blockchain blockchain blockchains, the New York Times will blockchain a blockchain about it"

The whole article is fairly insightful, as his often are:

[https://www.bloomberg.com/view/articles/2017-01-10/bank- bloc...](https://www.bloomberg.com/view/articles/2017-01-10/bank-blockchains- and-an-alibaba-box)

The article on the front page about Accenture today is a great example. People are using it as a buzzword. Blockchain isn't snake oil, but it's sure being peddled by a lot of snake oil salesmen.

<comment> m-i-l And to quote Tracy Alloway, also Bloomberg: "you can replace the term 'distributed ledgers' with 'shared Excel sheets' in about 90 percent of talk about blockchain and finance"[0]

[0] [http://www.tracy-alloway.com/?p=577](http://www.tracy-alloway.com/?p=577)

</comment></comment><comment><USER11> It isn't negative towards the technology. Blockchains solve one problem: distributed consensus among mutually distrustful peers. If there's any existing trust structure, then a blockchain isn't what you need.

In situations where you already have trust but want immutability and cryptographic assurances, you may want to look into Merkle DAGs or other authenticated data structures, which are not blockchains at all. [https://cs.umd.edu/~mwh/papers/gpads.pdf](https://cs.umd.edu/~mwh/papers/gpads.pdf)

<comment><USER12> Exactly. The most valuable part of the blockchain technologies for most big news announcements tend to be the Merkle DAG piece not the distributed consensus.

Frankly the distributed consensus part of blockchains has always seemed more than a tad bit wasteful of energy and computation.

</comment></comment><comment><USER13> Regarding bitcoin, the main problem is that a lot of people have large amounts of bitcoin horded from early days and they tend to be biased and start spamming forums about how great it is as it will make them very rich if the adoption increases. This is despite there being very major flaws with the system.

As someone that has actually tried to sell things with bitcoin, there are major flaws with it, and they will never be fixed because these problems are inherent to blockchains. And people trying to get rich quick keep spamming forums and HN with blockchain technology X Y Z without acknowledging these problems.

1\. It is really annoying to buy. You need to go out of your way to link your bank account and passport/driver's license at any major exchange, and this takes days or even weeks. You cannot buy it instantly with a credit card or paypal unless you find a shady seller with bad rates. No one wants to sell bitcoin for something that could be chargebacked.

2\. No chargebacks. Good for sellers but not for buyers. People might be able to live with this if it weren't for the other 2 major problems.

3\. Payment takes forever. Waiting for the recommended amount of confirms will take at least an hour?

These problems are deal-breaking and can never be fixed when using blockchain technology.

<comment><USER14> The term confirmation is a bad one. It gives people the impression that they have to wait 10 might.s to an hour to know if they have their money. The moment you see a transaction in you wallet, you have it, you just have to wait 10 mins to an hour to spend it. So to compare this to legacy systems which take 3-5 days and claim its too slow seems unfair.

<comment><USER15> > you have it, you just have to wait 10 mins to an hour to spend it

And then after 10 mins to an hour you find you can't spend it because it's been marked invalid, and the guy you sold your iPhone to is long gone.

</comment></comment></comment><comment><USER16> I think the negativity is more focused on the _" blockchain will revolutionize x industry"_ hype than on the _blockchain technology_ itself. I've noticed a similar (and justified) degree of skepticism and fatigue here in regard to all of the AI hype in mainstream media, but nobody is discounting the technical advances made in the field; just the kind of unbridled, naive optimism that played a part in the _" AI Winter"_ of the 80s and could lead to a similar disillusionment with the blockchain.

</comment><comment><USER17> Bitcoin's primary innovation isn't the blockchain per se, but the combination of the blockchain and proof-of-work timestamping to solve the double-spending problem without requiring a central authority.

A "private" blockchain largely defeats the point, as you don't need trustless distributed concensus when you implictly trust yourself or a central authority. We just call these versioned databases.

</comment><comment><USER18> It's just backlash against the hype. It's sort of hard to have a technical discussion since people aren't usually negative towards it for technical reasons.

Blockchain is a relatively new technology with plenty of promises paired with low understanding.

</comment><comment><USER19> I'm not negative to blockchains like I'm not negative to linked lists.

I am however sceptical when large amounts of people suddenly decides that they need to swap technology NOW.

Example: javascript. A language that IMO is worse than even php in a number of ways but still manages to attract developer mindshare.

(Yes, I have some experience in classic Javascript / ECMAScript )

</comment><comment><USER20> Blockchain evangelists promise the world and deliver nothing except hype and political grandstanding in return.

When we discuss the cryptocurrency concept, specifically bitcoin, I think reasonable people can agree that blockchain technology has yielded something unique, interesting and worthy of technical merit, despite it not living up to the insane prognostications of bitcoin fanatics . On the whole, I think it's fair to call bitcoin a success because it continues to exist and has been self sustaining more or less within the parameters of the original design for quite a few years. Although it is small, there is some real commerce that occurs in the bitcoin world, and even among some of the alt-coins that followed it. A self-sustaining mini-economy based on computer code is fascinating, and without all the breathless evangelists talking about how bitcoin will end all wars and liberate the masses from the tyranny of taxation and government, I think we'd see a lot more meaningful technical discussion of bitcoin and the other potential uses for blockchain technology.

But that is not the world we live in. We live in a world where every conceivable problem is met with an overwrought and unworkable blockchain solution. We live in a world where startups can drain 100 million dollars on a clearly stupid idea because "blockchains are the future", we live in a world where bitcoin evangelists refuse to face the reality that the incumbent financial system is not at all threatened by bitcoin and concepts like "smart contracts" and that people with common sense aren't ignorant or misunderstanding blockchains just because they're trying to tell you that throwing millions of dollars into a "decentralized autonomous organization" (a misnomer which exemplifies blockchain insanity) is a dangerous and terrible idea.

Blockchain enthusiasts need to put up or shut up. Storing land deeds and stocks on the blockchain is unworkable. Using the blockchain to power smart- locks and self-driving cars and autonomous drones and autonmous AI VCs is unworkable and unnecessary. Bitcoin, bitcoin copycats, and RNG roulette are the only examples of blockchains working mostly as intended and providing at least a marginal utility (in that cryptocurrency can be converted into spendable money). All the rest of it is demonstrably pointless (see literally every project created with etherum besides decentralized gambling software).

This is leaving aside all the political nonsense and all the bitcoin hesits, thefts, scams, and buzzword swindling. The bottom line is that people are tired of hearing about the amazing capabilities of blockchains when nobody can seem to actually demonstrate their utility (besides bitcoin) in practice.

</comment><comment><USER21> It may not be a direct answer to your question, but this article has a cynical (yet technically detailed) perspective on "blockchain" that might give some insight: [https://tonyarcieri.com/on-the-dangers-of-a-blockchain- monoc...](https://tonyarcieri.com/on-the-dangers-of-a-blockchain-monoculture)

</comment><comment><USER22> As I see it, Blockchain technology is based on some premises that are not easily achievable. This are the two I find most relevant:

1\. A large user base (computational power) is needed to successfully run a blockchain backed product. If the network is small, a malicious attacker with enough resources could manipulate past transactions or prevent new ones (51% attack).

2\. Blockchain was designed to be a trustless (no central authority) distributed ledger. In the case of Bitcoin, it prevents double spending of a virtual currency that only exists in the Internet. When applied to "real world" assets, sooner or later you will find a step in the process that involves trusting something or someone.

So far I haven't been able to identify a use case for anything but a digital asset with great traction.

<comment><USER9> Bankchains solve #1 by not using mining; they use something like BFT (which is basically Paxos for liars) so that only 51% of the companies in the consortium need to be honest at any one time.

<comment><USER22> I guess that invalidates by definition #2.

<comment><USER9> Ah, I forgot to mention that. Bitcoin is totally trustless, while bankchains require the participants to trust each other's identities but not their behavior. Whether this trust model is applicable in any real-world situation is debatable.

And yes, if you're using blockchain to track something like gold in a vault you might as well just have a database that is run by the same entity that runs the vault.

</comment></comment></comment></comment><comment><USER23> Blockchain technology? Maybe there's something in the future but right now Bitcoin is mostly used as an illegal vehicle to get money out of China. Some 90% of bitcoin trades originate in China. A lot of people who are peddling Bitcoin are holding on to it and try to convince others to use it so their holdings grow. The whole thing became a scam. The other "alt coins" are even worse, Monero is pushed by drug dealers etc.

</comment><comment><USER24> Reading through the responses from here has made me question my investment in Bitcoin, ShadowCash and Lisk.</comment>


Sad state of South Korean internet - <AUTHOR> http://www.osnews.com/story/23481/Sad_State_of_South_Korean_Internet

<comment><USER2> Linkbait title. Should read, "Sad state of ActiveX requirements on the websites of major banks and government institutions in South Korea", which hasn't really changed in a while.

<comment><USER3> This just changed, with one excuse being that the old system doesn't really work in the mobile space. See e.g.: [http://www.electronista.com/articles/10/07/01/korea.no.longe...](http://www.electronista.com/articles/10/07/01/korea.no.longer.requires.activex.for.online.sales/)</comment></comment>


Coding is not 'fun' – it's technically and ethically complex - <AUTHOR> https://thenextweb.com/growth-quarters/2020/05/15/coding-is-not-fun-its-technically-and-ethically-complex-syndication/ <comment><USER3> This is a perfect example of people saying something that's just blatantly wrong in order to get a piece published and the accompanying brownie points.

Vannini talks about flow as thought it's some woo-woo that he's never experienced (probably hasn't, given the companies that he's worked at all seem to be larger).

>Insisting on the glamour and fun of coding is the wrong way to acquaint kids with computer science. It insults their intelligence and plants the pernicious notion in their heads that you don't need discipline in order to progress.

This is true. But it is also true of football, and nobody says football isn't fun. Football players will do crazy things like squat sets of 20 and drink a gallon of milk a day to bulk up, but nobody says football isn't fun. Nobody says jiu jitsu isn't fun even though it's absolutely brutal in a lot of ways. And so why do we say those things are fun? Because they are sporting and build a sense of accomplishment, and provide the things that humans need to feel like they're growing: building skill and testing it against ever-increasing challenges for rewarding outcomes. Programming offers that too, even if people like Vannini fail to see it. There's a reason people have coding challenges and hackathons, and all other sort of competition and comradery surrounding it, because it is often sporting, and fun to do new things with programs, and to stretch what you can do with a computer.

<comment><USER4> So very true. And I am so tired of this BS about "flow". Every programmer wants to tell you they can "hyperfocus" like it's something unique. We really need to stop pushing this hocus pocus. Being a programmer does not make you superhuman, it makes you a programmer.

</comment></comment><comment><USER5> If you want to take away the glamour of programming, telling people it's technically and ethically complex is exactly the wrong way of doing it. Fun does not mean easy. For some people, fun is only possible if it's technically complex, which can help people overlook ethical complexities. As shocking an idea it may be in our very cynical world, there are people out there that do the jobs they do because they enjoy it, and programmers are likely overrepresented in that group.

And ethically complex? Oh boy is that fun. Nothing we like more than morally grey grey hat hackers and people just barely toeing the line of what's right, of antiheroes that think the ends justify the means. And if what they're doing is technically complex, then oh yeah that's awesome. Misunderstood geniuses! Something everyone sees themselves as. The title here really just plays up the glamour and glitz that the article says we should be avoiding

<comment><USER6> Programming can be often fun, but if we want to be taken as seriously as other professionals: (doctors, lawyers) we need to stress that programming takes a lot of brains and hard work.

</comment></comment><comment><USER7> Oof. Gate keeping. 'Be serious or you'll fail!' 'The powers that be are just manipulating people!'

If being in a hyperfocused flow state isn't fun, Idk what is.

<comment><USER8> Oh hell yeah! When I'm in the zone, suddenly it's 6 AM again and my sideproject has a working prototype, even though it feels like just about 30 minutes passed.

<comment><USER6> Give it a few years

As you age, other life aspects come into play - life partners, kids, taking care of your health, your parents' health, etc...

</comment></comment></comment><comment><USER9> The problematic thing about code is that it spans the _entire_ spectrum between "five-minute fun project that will never affect anyone but me" and "world-shifting force". I don't think anything else humans do can claim such a wide range of scale. And so the trouble is that - in terms of best-practices, ethical considerations, regulation - ideas and constraints that are appropriate at one end of the spectrum are _completely inappropriate_ at the other end. And at the same time, it's hard to draw a particular line in the sand to separate the two. It really is a continuum.

This is why, even though some parts of our world would greatly benefit from certifying programmers the way we certify engineers, it's a really hard thing to do. Nobody builds suspension bridges at home in a weekend. People don't really even start small _businesses_ building suspension bridges. It's really hard to firmly distinguish the code that can accidentally ruin hundreds of lives from the code that's completely harmless and, indeed, "fun". Sometimes the latter even turns into the former over time.

Thinking about this more: I wonder if we could regulate code based on number of users. That seems like a good proxy for its impact on the world. Not sure how easy it would be to measure reliably (in a way that couldn't be fudged).

</comment><comment> vincent-manis Calling software development "coding" is like calling surgery "cutting".

<comment><USER10> Yes, "Coding is fun".

"Software Engineering" is technically and ethically complex.

<comment><USER8> I'd say I enjoy the mental design of a piece of software much more than the writing down phase. But if I slip into "the zone", then I also enjoy the coding phase a lot.

</comment></comment></comment><comment><USER11> It seems that you haven't had the excitement of figuring out the solution to a complicated problem after hours of work and no help from StackOverflow). For me coding is 'fun' exactly because is technically complex (haven't come across ethic issues on my coding career yet).

</comment><comment><USER12> "Fun" is not the right word; more like "intrinsically rewarding". It's like asking ye olde blacksmith if he had "fun" forging a high-quality broadsword.

</comment><comment><USER13> Coding is a broad spectrum. I think of the bootcamp crowd as the blue collar version of coders. They're learning a trade to make a living. I doubt many of them end up in roles with much technical complexity the first few years.

</comment><comment><USER14> Although I disagree with the title of this essay, I think it's very well written and makes many excellent points...

Coding could be either fun or work, it could be heaven or it could be hell (note that this is true about just about anything in life) -- what makes it one or the other is a complex set of conditions and circumstances... I have experienced it firsthand being both, just at different times, in different circumstances, under different conditions...

Reminds me of some song lyrics:

"There she stood in the doorway,

I heard the mission bell,

And I was thinkin' to myself,

 _' This could be heaven or this could be hell...'_"

-Eagles, "Hotel California"

</comment><comment><USER15> I'm not sure Formula 1 race car drivers consider racing competitions "fun" because it's physically and mentally exhausting and stressful when you don't win, which is a lot. However, going for a leisurely drive is fun. Rearchitecting a large program is not fun, but hooking up actions to html buttons with JavaScript can be fun. Introducing large numbers of people to this is a way to find the ones with apptitude who get hooked and want to go deeper.

</comment><comment><USER16> I've always thought the view that "coding is easy" is a bit insulting to those who worked hard to learn to do it well. Sure, there are certain concepts in coding that are easy. But isn't that the case with everything? It depends on what you're building and if the person has a general interest. The idea that was pushed by Facebook and others that its as simple as memorizing multiplication tables I always found deceptive and ridiculous.

<comment><USER17> As an analogy, getting into medicine isn't easy, but exercising to improve your health is. (I know this doesn't hold true for everyone. For instance I have some complicating health issues, although hopefully you see my point.)

I think the equivalent here is something like:

        stuff = requests.get("example.com").json()
        print(stuff["thing"]["I"]["want"])

It's technically coding, is pretty easy, and potentially beneficial to your life.

Same with Excel macros or whatever.

Maybe that person will have a fire lit in them and pursue a software engineering career. Maybe it'll just be a script on their desktop that cleans up screenshots.

I don't find that implication insulting even though I've spent (now) the majority of my life honing "coding" as a skill.

It's a mountain to climb, but the first few miles have some pretty nice vistas.

<comment><USER16> I guess my view is it's sort of like learning one note on guitar and saying guitar is so easy because you learned it in a day. Would you introduce yourself as a guitar player after doing that?

If I memorize one word in a foreign language, am I bilingual?

Here's some rocket science too: t - <USER2>

I like words to hold clear meanings. If everything is easy because there's one easy thing about it, the word has no meaning. If a coder is anyone who can do Hello World, it's pointless even calling yourself one. It means nothing.

</comment></comment></comment><comment><USER18> My first thought was "Right lets keep this pretentious utter prat far away from coding or management of coding."

The "ethical arguements" are frankly complete twaddle and long discredited luddite fallacies. Do you think your laundry should be performed by servants in pointless labor that could easily be subsitited with a washing machine using less water, time, and fossil fuels than transporting the workers? Even if you could afford it would be gratituous waste in the name of a dumb goal of shrinking the labor pool.

Involving more people doesn't in itself make a process any more or less ethical than stoning a person to death by a village is more ethical than a single executioner. It is the end goals and the means taken towards them that matter along with the efficiency.

The technical complexities are what make it fun akin to a puzzle. That is just a human thing about overcoming achieveable obstacles. Lifting a trivial weight isn't fun nor is straining to lift something beyond your capabilities completely but between the two? Yeah that activity is enjoyable. In all sorts of domains.

</comment><comment><USER19> Yeah and it annoys me that software is churned out at break-neck speed, leaving the window open for vulnerabilities due to lack of testing or a complete lack of defense-in-depth or formal verification[0]

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

</comment><comment><USER20> Why not both? Why can't something technically and ethically complex be fun?

</comment><comment><USER21> I don't like the comparison of software engineering to brain surgery and structural engineering. The biggest difference between the professions is how bad the average screw up is: most mistakes in software are completely harmless and can be tracked down and fixed in under an hour with little to no consequences. There are obviously exceptions, especially with business or security critical code, but for the most part mistakes are easy to deal with. With surgery or structural engineering, however, once you make a mistake there may be no good way to fix it, possibly resulting in hundreds, thousands, or millions of dollars in losses and/or death. Very few software bugs have the same implications, and this is why there is more general levity.

<comment><USER8> Within my first half year of working in a startup, I got to touch invoicing code and thought I had written tests for every occasion and had removed all bugs.

A month after the code went through reviews and more testing, and was put into production.

Another month later, more than half a million dollars is missing.

After figuring out what went wrong, the issue was quickly fixed and corrected invoices were sent out.

My point is: While it's not like brain surgery, in that every mistake is deadly, some mistakes can have devastating consequences.

<comment><USER21> This is one of the obvious exceptions that I mentioned. Anything to do with money counts as business critical and _should_ be treated like brain surgery.

</comment></comment></comment><comment><USER22> Couldn't you apply this same argument to almost anything, though? It seems if you take things seriously enough, fun as a concept ceases to exist.

</comment><comment><USER23> The author is correct, when interpreted as speaking about work. A great deal more of code that is written should be done in a less fun way, or not at all, for all our safety.

But programming microcontrollers for side projects is pure, rocket-fuelled fun.</comment>