HNHacker News
TopNewBestAskShowJobs

narush

1,464 karma · joined August 19, 2017

first . last @ metr website
submissionscomments
narush··on Proof-of-stake is inherently self-referential
This post raises two common criticisms against proof-of-stake: it's self-referential (and therefore cannot work), and it's subjective (and therefore cannot work). Each of them have a bit of truth to them, but (spoilers) I strongly disagree with the conclusions.

------------

The "proof-of-steak is self-referential (and therefore cannot work)" argument goes like this:

1. Proof-of-Stake chains claim to be secure because there is value at risk.

2. The value at risk are the coins _on chain_, which only have value because the chain is secure.

Therefore, as the "thing" giving the coins value is the coins having value themselves, this is self-referential, and so cannot work.

Two quick responses. First, PoW has the same dynamics, albeit a bit more obfuscated. 1. The PoW chain is secure because there are miners willing to mine on the chain.

2. The miners are willing to mine on the chain because they get paid in coins that have value.

3. The coins have value for a multitude of reasons (duh, speculation), but one seemingly necessary one is that the chain is secure enough to allow transfers (aka, the chain is secure).

So in PoW, we have the same self-referential dynamic.

Second, there's no reason why self-referential systems don't work in the first place. I'd argue that a much more informative way of thinking about PoS/PoW as mechanisms is in a recursive way: 1. Value at time T -> Security at time T 2. Security at time T -> Value at time T + 1 etc.

You can call anything that references itself a "perpetual motion machines." Merge sort references itself - that doesn't make it one.

I would argue the recursive bootstrapping described above is one of the most interesting mechanisms public blockchains have currently (rivaled only by the crazy composability of programs you see on smart contract chains like Ethereum).

---------

The "it's subjective (and therefore cannot work)" argument goes like this.

1. Stake is defined on the chain.

2. Stake determines which chain is the real chain.

3. Thus, if you have two chains that claim to each be the real chain, you cannot tell them apart.

I'll note: this is pretty much true. For most modern PoS protocols that exist today, some form of initial "checkpoint" is needed to sync the chain. You need a blockhash to start from.

However, after you sync your node for the first time using this has, this is no longer the case: as long as you sync your node to the chain more than once a month or so, you never need to do this again. Aka: you only need to get a hash of the chain upon initial sync.

Practically, IMO, this pretty much changes nothing. 99.99999999% of users don't read the source code of the nodes they run (in fact, most people don't run nodes :() - and since node releases are on the order of once a month [1], users can just get the block hashed packaged with the software anyways. In most realistic security models, not much is different.

---------

IMO, the biggest argument against PoS is it's complexity. Making a secure PoS protocol requires a lot more work than a basic PoW one. Managing this complexity appropriately is hard, and takes time + incremental steps if you want to do it well (and not fuck an existing network). That's mostly why Ethereum's PoS has been so delayed. But it's coming soon :). Shout out to the awesome people working on it!

Source: I spent 3 years working on a variant of Casper (Ethereum's PoS protocol) at the Ethereum Foundation.

narush··on Nicholas Taleb's Amazon Reviews
If it's your thing, I highly recommend NNT's YouTube channel [1]. He uploads short videos (that he apparently films with a potato), where he explains stat concepts "for beginners." Of course, he also spends lots of time _roasting_ random researchers/statistics users/noobz.

Actually though, I've actually a bunch of his videos super educational and well made - if you can get past the terrible camera / sound quality.

I watched his explanation of the central limit theorem [2] the other day and found it super helpful. I'm not great at math, but I took multiple stat classes at uni (including two where we went through proofs for the CLT at some level). But this single 10 minute video helped me "get it" more than any class. The big observation that I was missing is that the sample mean is pretty much the same as the sample sum, and the sample sum can sum to "things in the middle" in more ways that things not in the middle (e.g. if you have two dice, rolling a 7 is more likely than rolling a 12).

I'm sure I'm butchering it mostly, but that little bit of intuition was just *nice* - especially after 2 stat classes of rote proof following w/ little to no intuition building.

[1] https://www.youtube.com/channel/UC8uY6yLP9BS4BUc9BSc0Jww

[2] https://www.youtube.com/watch?v=bfM9efdStN8

narush··on Ethereum will use around 99.95% less energy post merge
Yep! It's a new chain as well - that will eventually consume the old Ethereum PoW chain :)
narush··on Ethereum will use around 99.95% less energy post merge
This is not the case. In Ethereum's PoS model, you put value at risk when you sign up to be a validator. You have to lock funds up to play a part in consensus.

This means that if you start acting maliciously, or even just not fulfilling your responsibilities (e.g. you let your computer go offline), then you are punished for it (depending on the severity of your offense, obviously).

Aka, you can't just wait for the money to roll in. You have to run a node, you have to verify blocks, and you have to make sure you're acting in the best interest of the network + keeping things running smoothly.

narush··on There’s no such thing as a tree, phylogenetically
The first line of this essay talks about fish not existing either. For anyone interested in this subject (albeit from a different angle) I highly recommend the book “Why Fish Don’t Exist” [1].

It’s only really a little bit about fish, the founding president of Stanford (who was an obsessive ichthyologist), and his eugenics agenda. It’s also part memoir. I found it very touching and quite good 4 the ole empathy.

[1] https://www.simonandschuster.com/books/Why-Fish-Dont-Exist/L...

narush··on Sugar-sweetened beverage intake and serum testosterone levels in adult males (2018)
No idea - good q!
narush··on Sugar-sweetened beverage intake and serum testosterone levels in adult males (2018)
Thanks for clarifying!
narush··on Sugar-sweetened beverage intake and serum testosterone levels in adult males (2018)
For anyone wondering, this is not an experiment, it's an epidemiological study. I've commented about it on HN before [1], but nutritional epidemiology is in its own league of shady science. If you didn't know, 80% of things you eat give you cancer [2].

That being said, sugar is bad. Main-lining sugar by drinking it in huge concentrations seems even worse! Edit: that being said, if you are doing nutritional epidemiology, or any data science for that matter, check out Mito [3]! It's what I do when I'm not shit-posting on sugar on HN :)

[1] https://news.ycombinator.com/item?id=26764060 [2] https://pubmed.ncbi.nlm.nih.gov/23193004/ [3] https://trymito.io/hn

narush··on What’s the origin of the phrase “big data doesn’t fit in excel”?
Explicit data size limits (something on the order of 1M rows at time of writing) are only one part of the problem in trying to use Excel with Big Data (TM). Generally, if you've got millions of rows, you're working with some sort of data export from another tool (e.g. different from some financial data you're using to model your companies finances).

And with millions of rows of data pouring out of some other tool, usually you're trying to define a repeatable process to clean/munge/transform that data into something more useful to you/your team/your management.

Within Excel, there are ways of accomplishing the "define repeatable task" goal - but my personal experience working with VBA (and talking to VBA users across the spectrum) is that it's a horrible language that is absolutely no fun at all to write. Good luck using a nice library to do anything with it, really.

I'm a co-founder of Mito [1], where we're taking a bit of a different angle. Rather than bringing big data into Excel, we're bringing an Excel ethos to where you might work with your big data otherwise. Mito is a spreadsheet interface that lives inside of a Jupyter notebook; you can write spreadsheet formulas, merge datasets, explore summary stats, all from within this spreadsheet. While you edit the spreadsheet, it generates valid Python code for you.

Our current users mostly fit the bill of "previous Excel junkies who started teaching themself Python but still have a lot to learn, so use Mito to augment/speed up their workflow."

Questions / comments / hard-hitting HN feedback greatly appreciated!

[1] https://trymito.io/launch

narush··on Against Alcohol
Those graphs are epidemiological studies. Saying “effect” implies that alcohol is a cause here, which is might be, but who knows!

Nutritional epidemiology is real questionable - it pretty much can tell you nonsense - like the fact that most items we cook with give us cancer [1]

[1] https://pubmed.ncbi.nlm.nih.gov/23193004/

narush··on Show HN: Mito – Write Python/Pandas faster by editing a spreadsheet, in Jupyter
Really interesting perspective - an totally agree, there is a huge diversity within python users along many dimensions!

If I can ask - why do you try and avoid point and click tools?

narush··on Show HN: Mito – Write Python/Pandas faster by editing a spreadsheet, in Jupyter
Hey HN - Super excited to hear any feedback y'all have on Mito or our docs. Happy to answer any questions here!
narush··on LibreOffice 7.1 Community Edition
Congrats on the release! LibreOffice was one of the first large applications I looked at, mostly due to my interest in spreadsheets generally. I generally have massive respect for anyone / anything that can parse a legacy Microsoft file format. [1]

My interest in spreadsheets lead to me making https://trymito.io. Check it. We’re a spreadsheet that sits inside a Jupyer notebook, allowing you to write spreadsheet formulas and generate equivalent Python code. Feedback greatly appreciated!

[1] https://www.joelonsoftware.com/2008/02/19/why-are-the-micros...

narush··on JupyterLab 3.0
I'm one of those extension developers that working on getting my extension working on JupyterLab 3.0 :-)

I've been developing Mito (https://trymito.io), a spreadsheet extension to JupyterLab that allows you to edit a spreadsheet in a notebook as if you're editing Excel. You edit the spreadsheet, and Python code gets generated that corresponds to your edits.

Feedback on the above greatly appreciated. And congrats on the release :)

narush··on Learn Quantum Computation
I was interesting in quantum computation / programming about a year ago, but failed to really get into it (I'm too dum, I think :)). Mostly, my interest was in understanding the mental model.

I learned Golang like 1.5 years ago, and it totally changed how I think about concurrency. I think about interacting processes way different now, as a result - and I was kinda hoping the same thing would happen with ~quantum~. Blarg.

narush··on Meet Mito: Edit a spreadsheet. Generate Python. All in Jupyter.
Heyo, I'm Nate! Long-time lurker :)

In quarantine, I've been doing lots of data analytics challenges. Since I'm new to data analytics in Python, I spend most of my time furiously browsing Stack Overflow to find the right functions :)

At school, I learned to do data analysis in a spreadsheet. Because they're so visual, data cleaning and manipulation is easy. I wanted this simplicity in my Python workflow.

So I built Mito! [1]

Mito is an editable spreadsheet in your Jupyter notebook. Pass in a Pandas data frame, make the edits you want, and Mito will automatically convert your edits into production-ready Python code.

You can clean, filter, find/replace, and use standard spreadsheet functions in Mito, giving you the visibility and ease of a spreadsheet with the power and repeatability of Python.

It's also a great way to get less-technical friends involved in your Jupyter projects - they can contribute their spreadsheet skills while learning Python!

I'd love to hear your thoughts about how this might be useful to you. I'll be in the comments with my co-creators aarondia and jjdr123. You can see it in action here! [1]

[1] https://trymito.io

narush··on Ask and Show HN: Ever coded for love? Willing to share?
I learned web dev + svg animation last year to write a bunch of dramatic essays processing my breakup - at the end of a 5 year relationship. I sent it to my ex, and it was cathartic for the both us.

I didn’t know the best way to deploy it, so ended up using Google Domains + a Google cloud Linux node server. It was terrible and went down all the time.

It should hypothetically be at https://breakup.live - but it’s currently down (and has been for god knows how long). Not sure what the metaphor means but I guess that’s what moving on is all about!

narush··on Show HN: Saga – Git-style version control for non-text files
Yeah, ideally it'd be a fully featured version control system for other sorts of files.

Aka: git diff, status, merge all would work for these other files!

narush··on Time, Randomness, and a $100k Prize to Forever Change Blockchain
The 1/3 bound is for general byzantine behavior. If you're willing to get more specific about the type of behavior you want to tolerate, the bounds are more flexible[1] (this link is from the HotStuff people, actually!). For example, a node could tolerate no more than "20% Byzantine faults and 30% alive-but-corrupt faults" In turn, this allows different clients to make different assumptions (one huge advantage PoW has over traditional BFT protocols).

Also, w.r.t. linear communication, CBC Casper[2] has the ability to come to consensus on a blockchain with, in the limit (and in the optimal case), a single message per block that is finalized. It uses essentially the same form of pipelining that HotStuff does, but to the extreme (at at the cost of a much longer time for blocks to be finalized). Full disclosure: I work on CBC Casper, so take what I'm saying with a grain of salt.

[1] https://dahliamalkhi.wordpress.com/2019/04/24/flexible-byzan...

[2] https://github.com/cbc-casper/cbc-casper-paper/blob/master/c...

narush··on Time, Randomness, and a $100k Prize to Forever Change Blockchain
Head's up -- your link is broken. I don't think markdown is supported :)
narush··on Time, Randomness, and a $100k Prize to Forever Change Blockchain
PoW is currently an oligarchy, for what it's worth. I was using the term monopolistic in a lose sense (i.e. tending towards large players controling the market [i.e. "centralizing"]).

In most PoS protocols, coins come from either PoW mining before a transition to PoS, or from an initial coin offering. Neither are great solutions IMO, but PoW doesn't really distribute coins very well either.

narush··on Time, Randomness, and a $100k Prize to Forever Change Blockchain
In current Proof-of-work (PoW) blockchains, the more mining hardware you have, the more coins you get, and the more mining hardware you can buy. In this sense, the same exact monopolistic structure you mention exists in both PoW and Proof-of-stake (PoS) blockchains.

However, (PoS) is a lot less monopolistic than PoW for other reasons:

1. Massively reduced economies of scale. Pretty much all POW mining happens in mining farms for a reason: it's a lot cheaper, per unit of revenue, to move all your mining to one big warehouse. This makes it pretty much impossible for a normal person to contribute to PoW in any meaningful way -- good luck running a competitive mining farm out of your house. In PoS, however, 10x more coins will get you exactly 10x more rewards, and costs don't fall at all, leading to less economies of scale, and so less pressure towards a monopoly.

2. Ability for the protocol to apply punishments as well as rewards. In PoW, because the miners aren't tied to any address, there is no real mechanism for punishing them. In PoS, because the "mining power" (aka coins) is in the protocol, bad behavior can be punished. This has two benefits from the perspective of monopolistic market structure. First, it makes it so 51% attacks are costly in protocol. If evidence is shown that you 51% attacked, your coins can be "slashed," or taken away. Notably, in PoW, a 51% attack is free to the attacker if successful. Second, collective punishments can be applied to miners (validators in PoS language). This makes it so miners can be punished if they censor other miners -- again leading to less centralization/monopoly pressure.

Please do disagree (or make me clarify) with anything that seems stupid/unclear/incorrect in the above. I'd love to engage more!

narush··on Ethereum Price Climbs to $360; Crypto Market Cap Pierces $160B
Ethereum's planned PoS is not delegated PoS. Instead, it is actually byzantine fault tolerant (and validators/stakers get punished for acting badly).

For example, if a current validator signs two blocks that conflict in any way (aka, creating two conflicting forks), they lose their deposit.

Also, many of the issues with PoS have effectively been addressed at this point (nothing at stake, stake grinding, etc). This comes with a compromise of weak subjectivity - namely, that when a user syncs a client for the first time, they have to start with a valid hash from w/in the past couple months that they trust.

After this initial starting point, as long as they sync their client every-so-often, no further trust is required.

narush··on Ethereum Proof of Stake FAQ
I would argue that Ethereum isn't building a monetary system - it's building a platform for decentralized applications.

If doing so decreases the native assets velocity (for the sake security, finality, ease of sharding, etc), so be it.

narush··on Ethereum Proof of Stake FAQ
In every interaction with a blockchain, users have the chance to lose all of their funds. User error in with regular transactions is a far more likely issue than anything else (though there is no denying the importance of the validator code being written).

Also, running two wallets would not cause one to lose money. Running two instances of the validator code might - but why anyone would do that is unclear.

← PreviousPage 6 of 6