Hacker News new | ask | show | jobs
by 3pt14159 4509 days ago
I believe it.

I've talked to a backend developer at Coinbase, he said their codebase is a mess and that he wouldn't hold any in their system. Also I submitted: https://news.ycombinator.com/item?id=7169114 a couple of days ago based on what I found on Reddit. And this is Coinbase, the good guy. MtGox has always been a clusterfuck.

This feels like the internet used to feel like. Back when you just used to assume that a credit card transaction wouldn't go through. Why? "Because internet". Bitcoin is so young and immature.

4 comments

I've talked to a backend developer at Coinbase, he said their codebase is a mess and that he wouldn't hold any.

This, and a few other things I've witnessed firsthand makes me wonder if Y-Combinator doesn't need better technical intelligence or some form of auditing. It could be done in a non-intrusive spirit of openness. Basically position it as a "show and tell" focused on technical process. Just have companies show what they're proud of, and if they so choose, show what they're ashamed of/what extent of technical debt they're in.

I think that YC embraces technical debt. Exponential market growth means you can hire developers to re-write the problems in a couple years.
Unless, of course, you are a company like Mt Gox and your technical debt is so huge that it sinks you.

This is not a dig at Coinbase. I'm just suggesting that endorsing technical debt in the finance sector may not be smart.

There are many types of technical debt. It's something that accumulates organically in any real world project, because the real world doesn't care if your code is a paragon of programming excellence or not. It's expected, and simply part of the process, to develop technical indebtedness. The important part is controlling that indebtedness so that it doesn't cause major disruptions -- this usually means periodically cleaning up old debts and ensuring you have a robust system of monitors and failsafes. In a niche like finance, you certainly have to be more aggressive to ensure that no serious breakages or irrevocable indebtedness make their way into critical transaction code.
It's something that accumulates organically in any real world project, because the real world doesn't care if your code is a paragon of programming excellence or not.

Which is short-sighted, really. Technical debt has somewhat the same properties as financial debt, which is why public companies have to disclose monetary debt and have plans for dealing with it. It's high time that the culture caught up to technical reality and started to treat technical debt in the same way. This is especially true for finance!

In a way you are basically saying the same thing, but the warning sign to note is your observation that "the real world doesn't care." It would be insane for the real world to not care about a company's financials, particularly its debt. It's just as insane with technical debt.

Yes, I agree to an extent. I guess the problem is that quantification of technical debt is not so straightforward as financial debt.

When I say the "real world doesn't care", I don't necessarily mean that as a bad thing. The realities of shipping a product urge companies to make compromises. Like financial debt, technical debt is a useful tool, as long as it's used responsibly and kept under control.

I think that YC embraces technical debt.

And there's nothing wrong with technical debt in and of itself. Just like financial debt it's a tool of leverage and time-shifting costs. However, just like financial debt, it can bite you, so it's generally a good policy for companies to be open about what debts they have and their plans for dealing with it.

Relevant to the discussion, a level of debt for one company may not be appropriate for another kind of company, and this is especially true of financial companies.

> This feels like the internet used to feel like. Back when you just used to assume that a credit card transaction wouldn't go through. Why? "Because internet". Bitcoin is so young and immature.

I feel like the "immaturity" argument is just an excuse. Bitcoin itself is young, but we know how to handle encryption materials safely, we know how to process online transactions, we know how to write exchanges, etc. Mt. Gox wasn't taking on any new problems here. Most of the new stuff that goes into Bitcoin is abstracted away by the Bitcoin protocol.

It'd be very nice for newer players with extensive experience in this area to step up. If not with a new service, then maybe fortifying an existing one (like Coinbase).

The difference is actually the VCs. They invest in people that have never built a stock exchange before.
>'ve talked to a backend developer at Coinbase, he said their codebase is a mess and that he wouldn't hold any in their system

I usually wouldn't jump in on hearsay or be negative in this way. But Coinbase apparently proudly uses MongoDB as their database. Which is just, like, bizarre.

But hey, I'm a rather satisfied customer. Although I'd be much more satisfied if they'd have let me buy earlier in 2013, instead of having an opaque systemwide cap system and not providing helpful responses.

Yeah, like I said, I haven't seen first hand, I'm just repeating what was told to me. And frustrated developers can sometimes call something "a mess" that is really just par for the course for financial apps.

But MongoDB? Man, we used that at 500px, and while it is fast for 99% of usage, I don't know if I'd trust it with financial data.

Up until a few days ago, I had been too lazy to go through the trouble required to ensure that I trusted my ability to administer and recover my own personal Bitcoin wallet, instead deferring the responsibility to the online service that I stored them with. Though I realize the flaws in this method, I just didn't feel up to it. With all of this news about MtGox, I've accelerated my transitioning process.
Yes, this lesson has been learned dozens of times in the Bitcoin community by now. Never store significant quantities in web wallets of any kind, even if it presents as an "account" at an exchange. Move all significant quantities of coins to a local wallet and make a million secure backups of that wallet. When you want to use these coins, send them from your local wallet.

There is no reason not to have a local wallet. There have been major coin thefts from online services, even very reputable services, sometimes sinking the entire thing. Cryptocoins are worth a lot of money and people will steal them from you if you leave them vulnerable. Cloud coin storage is always vulnerable.

The problem for me wasn't learning the lesson, it was having the proper motivation to get off my ass and do it. But I agree. If you cannot trust yourself, give yourself a reason to, and then do it.