HN user

fergazen

8 karma

Note to Self. Do not use this account!!!

because HackerNews admin banned it for having the audacity to get into an argument with someone. Use VPN account they can't censor.

Posts0
Comments17
View on HN
No posts found.

These are not "Rules of Programming", but are excellent "Guidelines for Performance". Having 30yrs under my belt I have come to all the same conclusions as Rob Pike over my years, so these are very deserving of some serious contemplation for those with < 10yrs experience.

In my current job we have lots of large and often 'sparsely populated' objects which means basically you can never count on any of the properties you were hoping would be present will actually be present. This means the data objects are essentially useless (at least for knowing what data you have to work with as you are writing code), and violate Pike's rules mentioned about data object design being critically important. In the modern world the younger generation of developers thinks "functional programming is great, and OOP (inheritance, etc) is obsolete", and only after 20yrs of coding they look back and eventually realize OOP had it right all along.

In architectures with massive numbers of sparsely populated objects only the guy who originally wrote any given function will be able to understand it, and everyone else who tries to work in the code is pretty much screwed.

A very literal reading of the Merkle sentence on wikipedia could conclude that it's stating each block of a blockchain must contain a valid Merkle tree, and so technically that sentence on the Wiki is incorrect; because, aside from re-hashing the prior hash (along with each node data), the blockchain algorithm doesn't care what the 'data' payload is. I was giving the Wiki editor the benefit of the doubt, assuming he just worded that sentence incorrectly.

The only difference between an order-one (degree-one) merkle tree (wired like a 'linked list' graph) and a blockchain, is that merkle doesn't require new data to hash on each non-leaf node, but has data only on leaf nodes. In merkle, each level up the tree is rehashing ONLY the actual child hashes below it, so that all hashes are ultimately determined only by "hashes of hashes" (recursively) of LEAF nodes.

So this means from a coding standpoint every order-one merkel is a single line of code away from being a blockchain. That is: The line of code that adds the 'node data' byte array to the SHA256 Hash Digester input stream, before outputting the node's hash. However this may also be a case where the Merkle wiki is not fully complete and accurate, because I cannot fathom that Merkle never thought of a case where each node contains data of it's own to add into the hashing. I bet the original source material from Merkle does include node data as an option, and would make him technically the actual first inventor of blockchain.

I just wonder what goes on in your mind when you try to ponder the phrase "simplest possible blockchain"...because you don't think there's a specific single characteristic of a "blockchain", but there actually is.

Here's another for ya:

https://medium.com/@lhartikk/a-blockchain-in-200-lines-of-co...

Regarding Merkle: Even the Wikipedia page on "blockchain" explains the Merkle connection and it's precisely what I said, and the Merkle Wiki page says: "Hash trees are a generalization of hash lists and hash chains.", which was also my point.

The Wikipedia article on blockchain has this sentence: "From the technical point of view a blockchain is a hashchain inside another hashchain", and that sums it up. The actual blockchain algorithm itself is as simple as that. Period. Full stop.

Of course, most actual APPLICATIONS of blockchain also ADD ON a lot of other concepts, like distributed ledger, distributed consensus, etc. Trust me, i'm not the guy in this conversation confusing algorithms with applications.

Merkel WAS a genuine innovation, and it DOES collapse into plain blockchain if all 'nodes' on a given tree have one child, because in this case the directed graph (tree) is a linked list. If the key innovation in both structures were not the same then your snarkyness would have been appropriate.

I'm no lawyer, but they really need to outlaw patents on 'general purpose' technologies. Adam Carolla famously got sued for owning a podcast company, when someone claimed to have a patent on the entire concept of "downloadable audio". I think there should be a one year jail term for anyone who files a suit about something that ends up being determined "general purpose" technology. Would end the nonsense overnight.

Very interesting, thanks. I had never heard of Merkle Tree. Since a linked list is merely a special case of a 'tree structure' (i.e. one where there is always only one child), we can consider Merkle to be the true 'inventor' of blockchain. However, really the concept is so simple and obvious that I wouldn't be surprised if Babbage/Lovelace era folks had written papers on it.

I'm sure there's at least one arse who'll tell me the DIFFERENCE between a tree and a linked list. lol. Gotta love social media.

Back in 2008 I invented an algorithm for tree structures where the definition of the hash of any node, was "the hash of hashes of all its immediate children". I had invented a way to do 'tree node comparisons' where any time two tree nodes on a tree had the same 'hash' i knew the content (recursively deep into the tree) of those nodes was identical. I never went forward on that algorithm, because i knew it meant each time a tree node was modified, the hash of all it's parents (i.e. path to root), had to be recalculate. But I had explained it to several developers who were all amazed by it. It now realize I had invented blockchain. I am pretty sure i'm not the first one to realize hashing actual hashes (in a recursive or chained way) is a powerful concept. I may add this to my current project SubNode (sbnode.com), and I could pivot that app into a blockchain technology!

I would be afraid to have my garage able to be gotten into by anyone who happens to know where I live and has a screwdriver. But from a technical standpoint, I'm impressed with what you did, and as a mechanical engineer would love to have a 3D printer of my own! Nice work!

Yeah, when there is something interesting (like a wreck) on the side of the road don't take your foot off the gas and slow down slightly to look. If each person only slows down 1/100th of a MPH to look, then in a few minutes the traffic will be at a stand still, just because everyone went just slightly slower than the person in front of them to take a peek. No one seems to understand this or want to change it and as a result we have massive slow-downs in traffic just because of this stupidity. Just don't alter your speed. Sure, take a peek when you go by, but please don't take your foot off the gas you blithering idiots.

One other solution is that whoever it was in hollywood that first declared fanny packs to be 'uncool' needs to be 'drawn and quartered'. My little tiny remote is easy to access while i'm on my bike thanks to this amazing technology called a fanny pack.

Wikipedia was a technology that was at one point capable of becoming a competitor, but the found their niche and stayed there. I am working on an app (sbnode.com) that I hope WILL become a facebook + twitter killer some day. I want this software (not necessarily SubNode) to become "commodity software" just like Linux is as a OS. I would like to see a world where most instances of Linux are running SubNode and sharing the load of being the backbone of a new internet built directly on content repositories and JCR standards. It's a lofty goal, and my small part has been to at least create a working example of what such a system would be like.

I have a lot of capability now in SubNode, but it doesn't yet 'federate', beyond what the JCR can do insofar as storage distribution. However it does show what an internet 'could' be like if most everything was build out of 'SubNodes'... or at least in the area of Social Media, having this kind of open standard would revolutionize the internet, and make Facebook and Twitter look like Bell Telgraph: You know, the old, unneeded, proprietary, manipulative, 'sell your data to the highest bidder' type of social media that the world needs to get off of.

I've developed a sort of 'core technology' that can be used to build out what can hopefully become another option in the social media arena. It's open source. It's supports a fully threaded 'tree' of content, rather than just a linear stream like Facebook and Twitter. You create SubNodes, rather than 'tweets' for example. Technology stack is Java, TypeScript, Google Polymer, Jackrabbit JCR, MongoDb, SpringBoot.

Demonstration site is: http://sbnode.com