Hacker News new | ask | show | jobs
by yulaow 1947 days ago
Short answer: it is Hell.

Long answers:

- "linking libraries" between FE and blockchains are constantly broken, have _a_lot_ of undefined behaviours, and their error codes are few and totally opaque to what's really happening. Bonus part: they also change fast, a lot, and mostly with breaking changes. See web3.js and ether.js issues if you wanna cry

- you mostly will have to use third party services like infura or web browser plugins like metamask to get a working user experience but it will be an extremely poor user experience. We currently use metamask and we had a lot of problems with it, and also it randomly fails making ofc the whole app unresponsive if you don't code defensively of this behaviour. Did I also said they frequently update it deprecating methods and behaviours they suggested just some releases ago? Yeah, enjoy.

- solidity is the standard language to write contracts and it is literally the worst language I ever used, with a lot of undefined behaviours I encounter daily. I cannot count the times I had to spend a dozen of hours to find information in obscure blogposts or issues about "hey don't use this language construct with this evm version while passing this type of parameter or the compiler will put a sort-of-nop instead of what you really want". You better create an internal wiki or you'll lose track of what you have to know to avoid to shoot yourself in the foot constantly.

- The tools around solidity (Eg the whole Truffle suite) are full of major and minor bugs, will fail on you without explicitly telling why and the documentation is basically not existent. The remix ide is barely passable but you have to use a bunch of disconnected plugins to get something useful. The plugins for common ides (webstorm) or text editor (vscode) are useless at the moment of writing.

I'll be honest, I am still working on these dapps just because I believe in the team I am in. If it was for the current state of the technology and the relative constant feeling of burnout I am accumulating, I would have RUN away months ago and moved to a corp job in a super ""boring"" stack (currently thinking about going the .netcore route).

3 comments

You know what? That makes me think. So I applied for YC with a non-blockchain startup. In the application form, they asked whether I had another idea. So I answered a development tool for smart contracts / blockchain applications. A Jetbrain IDE but for smart contracts.

I already develop Mamba (https://mamba.black). It's like Truffle but for Python instead of JavaScript.

We'll see how it goes.

Amazing, continue! There is a huge demand for it I'm sure. I know I do.
Thanks for your feedback! I guess the grass always seem greener on the other side. I'm the type of guy who don't enjoy spending time around tooling build configs- I think I'll wait until better tools come around. I believe they will, and when the average developer can develop smart contracts easily, it will be a lot of fun then.
Have you done any coding in Haskell? Any thoughts on Cardano's decision to go with Haskell?: https://forum.cardano.org/t/why-cardano-chose-haskell-and-wh...