250 karma · joined February 12, 2015
Computer Engineering Graduate from the University of Ottawa, Canada
Software Engineer at Google
Working on the OWL programming language: https://github.com/bsurmanski/wlc
twitter: bsurmanski
The downside is this guarantee has some trade-offs. Mainly transaction speed is super slow (10m to confirm a transaction went through) and transaction fees are very high (especially now with the "bubble", it's something above 10$/transaction). Furthermore, all transactions are public record, which isn't desirable if you're a fan of privacy. The value is very volotile right now, making it hard to really budget out your net worth.
IMO, if you can just trust a third party (eg, credit card processing), then you get much better guarantees. (Fast payment, relative privacy, low transaction fees), with the further benefit of chargebacks. If someone steals money from your Bitcoin wallet, you're screwed, with a credit card you phone them up and they undo it.
Actually, even with Bitcoin you need to trust a third party: the exchange. Many people hold their money in the exchange, and there have been multiple cases where they've lost a bunch of user's money. IMO a real bank or credit card processor is more trust worthy than a crypto exchange.
That's all to say that currently crypto makes no sense for real transactions. That's not to say the issues are unfixable, for example Monero provides privacy guarantees.
As well, other uses may be valid, the main case is "a hold of value", like gold. IMO, crypto has no intrinsic value (not even decorative like gold) and is very volotile, so it's up to you to decide whether it's going to last.
Lastly, there are novelty uses like ethereum's trusted computation platform. That's a complicated topic in itself but pretty much each of these uses has a counterpart with much better guarantees if you can use a trusted third party.
The internet was a paradigm shift for how we communicate. It seems like blockchains are just sort of an opportunity to do things a different way.
From my perspective the main advantage of the blockchain is zero-trust transactions. Everything that can be done on the blockchain can be done easier/better off the blockchain as long as you choose to trust someone.
And currently from my perspective, no one is seriously using a blockchain for anything but speculation.
In your opinion, what makes the blockchain comparable or more influential to the internet?
If the crypto can be broken for ~1000$, as mentioned, that seems like a serious problem...
Ex: "You got an A on that midterm? Dang Carl, you're Killing it!"
So obviously there's going to need to be a credit backed middle man to guarantee your transaction so the seller doesn't get screwed by a double spend.
Eth is slightly better, but it still takes something on the order of 10m to confirm a transaction, and it doesn't look like it can get anywhere near the speed needed for a coffee purchase.
The issue with removing net neutrality is that it enables censorship and removes 'the free market' of the internet. The internet provider doesn't like your political blog? Well now they can wall it off under a addon package just like cable TV. Facebook makes an exclusive deal with the internet provider? Now Twitter is locked behind an addon package or completely unavailable.
You might say, "well people will just use a different internet provider!". The problem with that is that many places in the USA only have one, maybe two providers to chose from; So it's not like a restaurant where they can just go somewhere else.
You might say, "well more internet providers will be created if no-one likes the current ones!". But its very expensive to create a network of fiber optic cables. Billions of dollars, maybe trillions. A start-up can't just 'interrupt' the market. And usually when a new internet provider is created, they have to lease the big-company lines just work. And you can bet if they make that deal with existing companies they'll have to accept big-company's traffic policies.
The only data loss to Google that I was able to find was [0], where a single datacenter was hit by lightning 4 times in short succession, and 0.000001% of disk space in said datacenter was lost. And only because the lost data consisted of recent writes that had yet to be backed up. And only because the lightning affected the AUX power systems in a way that they have since committed to fixing (or perhaps have fixed).
IMO, cloud storage is the most reliable way to store data, and Google the most reliable. I never know if I'm going to drop my laptop and lose all work. Or if the harddrive in my server is going to give up and burst into flames. But the great thing about cloud storage is that it abstracts away hardware components and failures so it's somebody else's problem. And they worry a lot more about data loss than I do. Cloud data storage is designed with the assumption that hardware is faulty. Spread redundant copies of data to geographically isolated datacenters, and you're much safer than some admin of averagejoe.com keeping his data on a single harddrive in his closet.
[0] - https://status.cloud.google.com/incident/compute/15056#57195...
check it out: https://github.com/bsurmanski/TorontoSFTax
It looks like between 60k-200k, taxes in Toronto are actually lower. Between 200k-700k, it is cheaper in SF. At 300k, Toronto tax is about 1.5% more, and at 400k, Toronto tax is about 2% more.
But being realistic, most people in tech would pay less tax in Toronto.
edit: This calculation also does not take into account any other taxes (such as sales tax, or property tax), and is not adjusted for cost of living. SF has an edge in sales tax (8.75% in SF vs 13% in Toronto), but Toronto has a huge edge in cost of living (according to [0], Toronto is 32% cheaper), and property tax (1.14% in SF vs 0.7% in Toronto).
[0] - https://www.expatistan.com/cost-of-living/comparison/san-fra...
[0] - http://www.investopedia.com/financial-edge/0411/do-canadians...
The Bay area is a nice place to work in your 20s, but it's not a good place to settle down. With housing prices, homeless population, just a general grime over most things.
Toronto's the type of city you can move to when you thinking of settling down and starting a family. Very clean and friendly. Cheap enough to afford. That and not every Canadian wants to get a visa and live 4000km from everyone they've ever known.
Why is this important? Well, lets imagine a dice game. If on a traditional server, the program can cheat and give an unnatural edge to the site-owner. With ethereum programs, you can look at the source and know that said dice program is 'fair'. At the same time, from the perspective of the programmer, the blockchain ensures the users can't cheat you, either.
Now this sounds cool, but I can say from first hand experience that this is actually kinda trash. Last I looked into this (around October), programs were limited to a very low number of clock cycles before the program cancelled out.
How long a program would be too long? Through experimentation I found that a program more than about 30-40 lines of their C-like language would regularly hit the limit. What happens when you hit the operations limit? the program rolls-back without any effect, eating your transaction fee. Now, you can pay for more operations, but there is a limit. Even with the max number of operations you can't do too much. You can store values on the block chain, but any write or update takes up an substantial amount of 'gas' (the unit of currency for computation and storage).
So to imagine the limits, their 'global computer' acts like a coin-op machine where each quarter gets you 40-50 bytes of storage OR maybe 500 clock cycles on a virtual CPU. But, if the program tries to use more than a quarter, everything is rolled-back and your quarter is gone. (There is (last I checked), no way to know if your program will go over. Just trial and error).
Not only that, but (last i checked), the programs were compiled to a bytecode and there was no dissembler. Meaning that if someone wants to verify a program, they need the exact source code and exact compiler the dev used, and must MD5 the results.
Beyond that, there isn't really any good testing tools. Last i checked, the only way to run a program is to deploy it. So, you have to setup your own private chain to test on and continuously deploy and wait and test. There was a way to sort-of put debug prints in your program, but remember how I mentioned that a program that fails rolls-back? Well, it won't output anything either. And there were operations (some undocumented) that would simply crash the program. Index-out-of-bound? Silently crash program. AND the act of debug-printing would take up valuable storage (pushing your program over the edge of the limit).
In summary, the 'global computer' is so limited to be practically useless and the development process is (currently) a fate worse than hell.
/rant
If that is the case, I can imagine that GBI would put a drag on workers abroad. Maybe people would even refuse to emigrate because they wouldn't be able to afford the few years without GBI before they are a citizen in their new country.
In my mind, the second one is where this language can really find it's niche.
Normally, Google redundantly distributes out data to at least 3 different geographically distinct locations. Check out the 'BigTable' white paper [0] for more info.
For 99% of cases (and pretty well all user cases), this would not cause data lose. The key here is that the data was generated on the servers and did not have a chance to duplicate before the event.
I didn't work on the level of IR, so I didn't come across any problems there, but I wouldn't be surprised if the IR syntax changed slightly across minor versions.
eg: instead of:
foreach actor(find collisions -> find response -> do movement)
do: foreach actor(find collisions) ->
foreach actor(find response) ->
foreach actor(do movement)
That way you may modify the primary data structure directly in the 'do movement' response without any conceptual 'data races'. It really just off loads the information lost from 'mutability' to the secondary data structures of collision lists and the like.If your actors has a single 'update' method, the first actor would check for collisions and move before any other actors had a chance to do anything. This gives certain actors preferential treatment in movement.
Of course, you could instead plan out the dependencies better; do all collision detection before all physics response. But this is just a different way to look at 'immutability'
Weirdness is 'different', and as such requires a certain level of cognitive load to process. Too much weirdness can be overwhelming bordering on abrasive.
Looking at it from another point of view, if you have an action movie where it is 2 hours of explosions, you will eventually get bored of all of the explosions. 'weirdness' works similarly. There needs to be some pacing to your weirdness.
http://www.reddit.com/r/askscience/comments/2y93cz/if_we_wer...
(if we were far enough from the earth, could we see the dinosaurs)
One comment claimed that the lens would be the limiting factor. If using traditional glass lens, they calculated that it would need a diameter of 4 light years to be able to see the dinosaurs. They furthermore claimed that a lens of this size would gravitationally collapse, and thus would not be feasible.
I don't believe gravitational lensing was mentioned as of my reading.
Can someone enlighten me? Whats going to be the killer app for smart watches?