Assuming the batteries are not just discarded when swapped, you'd end up charging them, right? If a stall can change 1 battery every 1.5 minutes, then it needs something like 60 batteries available, total.
Take one out, start it charging on a super charger. 60 minutes later it's ready to be used.
Once the cache of pre-charged batteries is empty, the latency is the charge time (~60 mins) and the throughput is the charge time multiplied by the number of chargers they have. So when they run out of pre-charged batteries, have 10 chargers at the station, and you're the 11th in line, you get to wait for 2 hours. "All you have to decide is fast or free, and how to cut in line" ;)
I am just theorizing here, but If i were designing this system it wouldn't work like that.
When a battery comes out of a car, it goes on a charger(underground, or wherever). Each charging station starts with 42 batteries(2 extra for good measure) and each spot that a battery sits in wait is a charging station of its own. At minute 0 a battery goes on the charger. After 40 battery changes, one every 90 seconds, an hour has gone by. At this moment the first battery we put on the charger is full, and we have 39 more charging batteries each finishing their charge at 90 seccond intervals in the same order they went in.
In this way, we never run out of batteries.
Of course first they have to change the system to leased batteries so they dont have to give do the whole 'come back for _your_ battery' thing.
The requirement to return and unswap your battery does put quite a crimp on the ability to make trips that aren't strictly plotted out, with no side trips. As this is being promoted for long trips such as vacations, the batteries might need to be shelved for weeks at a time before the user returns. Considering more than a trivial number of users and the storage area required would be vast.
You are correct that this only really would work with leased batteries, but this would require owning up to the actual wholesale manufacturing costs of the batteries, depreciated across the number of miles before the battery is no longer practically usable. Tesla stockholders tend to get upset and confrontational when these numbers are discussed, despite that they are easy to determine since the cost of the Panasonic NCR18650A cell, the number used per Tesla (6831), and the lifespan of the cell, are all known.
Yea, I though the same thing. But I also remember the gas rationing in the 70s where you were only allowed to buy gas on alternate days (based on the last digit of your license plate) which could be the reality again if we continue our current rate of consumption.
And I really don't get why people stand in line at a Costco for 20 minutes to save 15c gallon. $3 savings for 20 minutes "work"? Is their time really that cheap?
But in its email, the organization emphasized the need to "protect the rights of companies who financially support the U.S. Olympic Team," such as McDonald's and Coca-Cola."
1. Understanding JavaScript type coercion correctly, including (emphasizing!) all of the corner cases that actually matter, is not an hour's task.
2. The fact that pathological-condition-X of a language is in theory understandable with sufficient study is a total red herring in a broad discussion of that language.
Understanding all the corner cases of how C deals with integers is a huge undertaking, as the C Integer Quiz thread showed us. But in practice, it's not actually a problem since you just learn to avoid using features of the language that involve type coercion. Just simply don't mix types. only use === and !==, use a templating library instead of the + operator to construct strings. jslint can catch the rest. If you truly find the way javascript behaves surprising- in the sense that you are trying to do something reasonable, and it surprises you, I have to wonder what on earth you are trying to do that would invoke type coercion to begin with, and why you need to do it that way.
I think there is a bit of an issue with _the code you don't write_ , because you rely on third parties.
Today, I spent five minutes tracking down a
SyntaxError: Unexpected token u
It was honestly hard to read this as "don't give an un-itialized value to this function or it will end up being passed to JSON.parse that will happily treat undefined as a string".
I'd take a NullPointerException with a proper stacktrace everyday.
in chrome, error objects have stack traces attached. All you would have needed to do is wrap the problem code in a try/catch, catch the error, and print out the stack trace, assuming you can't figure out how to find the stack trace just using chrome's web debugger. https://code.google.com/p/v8/wiki/JavaScriptStackTraceApi
You are missing my point, the issue is not that the error does not have a stacktrace, it's that it looks like:
SyntaxError: Unexpected token u foo.js:123
h foo.js:456
g foo.js:789
f
The issues are
* no reference to JSON.parse which is where the error occurred
* the error is not "object has no attribute toString", which would have made it clear what it's happening, but something else derived from having silently coerced "undefined" to string, which obscures what is happening.
As I wrote, it was a five minutes thing, not hours, but it's five minutes I would not have spent if it had been:
TypeError: Cannot read property 'toString' of undefined: [native code]
JSON.parse [native code]
h foo.js:456
g foo.js:789
f
While I share your "just sit down and learn something instead of complaining" sentiment, in this case I think it's pretty difficult to memorize all the different ways that javascript does type coercion. Sure you get to know the most common pitfalls, but it just feels like even experienced JS programmers get bitten every now and then.
Really? Developers are not exactly the cheapest resource on the planet, and while they don't code every piece of software they package... they still package it, they still give it at least some form of testing (e.g. will it install if it's on this image)... it's not expensive in some cases but it's not free either.
Yes, really. They contribute a lot back, and are good (model!) open source citizens, but they still distribute a great deal of code they haven't written.
> but they still distribute a great deal of code they haven't written.
Don't we all? If you include my stack as part of my software, then really I only write like 1% ... I didn't write the OS, the SQL server, the http daemon, and the billion other things I'm dependent on. That's just how software works.
On the other hand, that same path has shown to be quite problematic, right? Lets say you have 10000 verticies, that's 10000 function calls to make. Sure, you could precompile a display list, or use some other work around, but we've finally come to the point where it is not fast enough anymore. Welcome to opengl 4, i'll miss the easy to understand glBegin blocks.
You're right that giving the OpenGL runtime information piecemeal (one vertex at a time, repeated every frame) is no longer acceptable for many apps in terms of performance, but I'd argue that that's not a strike against the abstraction layer per se. We've gone to a world where the code I posted was the only way to go, to a world where that works but is slow, and people who care about performance use display lists and vertex buffers and shading languages. However, most graphics code still feels like it's about graphics -- vertices, triangles, groups of triangles that share properties, lighting, shading -- and not about the registers you need to poke to set up the rasterizer on such-and-such chip, or how to optimally pipeline shaders to get the best hardware utilization.
The abstractions we have now are more complex than ever, but they are still, for the most part, in the problem domain -- it is possible to do weird things to your code for performance tuning, but it's just not possible to go as far with it as you can for a machine whose behavior is specified and guaranteed at a very low level.
It's not about distributions, it's about companies. Canonical is not a for-profit, publicly traded company so it doesn't really fit this comparison between sun, redhat and novel.
Not sure why you were downvoted, it's called "Canonical Ltd." and besides, you can't trade stock in a not-for-profit company; parent was way off the mark.
It looks like he had a CPU monitor on his panel, which also looked pegged. Could just be he needs to spend sometime optimizing cause the Kinect can certainly record faster than that.
Take one out, start it charging on a super charger. 60 minutes later it's ready to be used.