Aside from that detail, this is a cool post. I like seeing the power of ReQL.
566 karma · joined January 25, 2008
Aside from that detail, this is a cool post. I like seeing the power of ReQL.
What am I missing? :-)
It looks like your product targeted consumers, but professionals seem like they'd be a better market. And it should have been priced way, way higher; the more it cost, the more secure it looks. I'd have a hard time trusting my money-making business assets to a $9/month service.
Of course, I'm not a professional photographer nor do I have your experience in trying to build this business, so who knows what my opinion is worth. :-)
A battery pack swap will cost between $60 and $80,
about the same as filling up a 15-gallon gas tank,
Musk said. Drivers who choose to swap must reclaim
their original battery on their return trip or pay
the difference in cost for the new pack.
So, I think they're not quite tackling the battery quality problem like you're suggesting. I think your idea makes a lot more sense than coming back to reclaim your battery later, though. I find that very odd.I'm a desktop Linux user (Mint), and I find it to be quite developer-friendly, and it has a nice UI, and Debian has the best package management. So, personally, I'm not sold yet. :-)
I guess at some point one needs some discipline... but that's not very fun.
Expression trees were introduced at the same time as LINQ, to support LINQ.
I just wanted to pipe in and say that's excellent reasoning for this design, especially since the ability to create indexes on arbitrary ReQL expressions would make an intelligent query planner into a lot of work. I'm looking forward to giving these a try.
The enterprise integration patterns links are interesting to me; thanks for point those out. I can definitely see how they could use a connection to reality. I can look at a random one and see what it is, but understanding why you'd use it is a mile above my head.
That aside, I thought this was a wonderful article with non-intuitive findings. Very interesting, CirtusDB [edit: er, CitusDB]. :-)
Most APIs don't want to provide data analysis capabilities. They want to provide data. Data analysis is a really hard problem space. For the FBI example, the FBI doesn't want to build an analytics tool for you to use; that's not their core business, and it's not something that helps them achieve their goals.
Data analysis versus data are two different problems with different classes of solutions; for example, a valid approach to delivering data might be an API to retrieve compressed, batch (nightly) downloads of events or deltas. That's not the only solution, of course, but I just mean to create an example that's a different point-of-view.
If you intend to provide data analysis from your API, I would say that is the "intent" of your API and you should design it as such, with the appropriate flexibility and user-defined behaviour that is required to answer arbitrary queries from users. This is a hard API to design, build, and scale.
When designing a data analysis API, you should address scenarios like a user making a valid API request that can't be delivered in real-time; is it your intention to make your API accessible in real-time, in which case you have to either crash horribly or tell this request to piss off? Or is it your intent to provide the analysis no matter what, in which case perhaps it would be valid to queue such queries, process them in batches with limited concurrency, and deliver the results when completed.
Regarding the unmet needs of users, you should always provide a feedback mechanism for your API. This is something that varies a lot depending upon your customer; a lot of developers work in "enterprise" software, where the feedback channel is usually pretty apparent. Public APIs with an undefined audience will have a harder time getting that feedback, but usually you can bet that the importance of an issue is proportional to the number of times you hear about it.
Intent-driven design reduces the fragility of your API, gives you a wider variety of changes that you can make to your API that are backwards compatible.
If it's done perfectly, and your software solves the same business problem tomorrow as it does today, then you will never need to increment your API version number. The reality is that it will never be designed perfectly, and requirements are never that stable, so having a versioned API is a practical and prudent choice.
When I read your comment, I'm left with the distinct impression that we agree on 90% of what you're saying.
Of course you're going to document your API and define the format of what comes back from your requests. An API is a contract. Yeah, you isolate complexity in your API. You design an API, which is a difficult job, rather than just saying to your user, "here's a mapping to my database, do whatever you want with it."
This article does not say that APIs "should be vague about what they provide." It says the opposite, they should be very specific about what they provide.
You design an API by providing specific tools for your users. You give them hammers, not chunks of metal that they can mould however they want. You don't throw "features" into your API, you provide capabilities that your users need.
Mathieu
I never advocated breaking compatibility by adding, removing, or renaming fields in this article. Would you please let me know what gave you that impression so that I can clarify it?
I also did not state that having a versioned API is a bad thing. GitHub's API was a great example because it's both well-designed and versioned. Good design is going to make your API less fragile and far less prone to version changes, but I'm strongly in favour of versioning your API.
Mathieu
You have to run a bit of cutting-edge software, but there's lots of good documentation on the Ubuntu wiki about how to support this laptop. The discrete video chipset does work, and it does work well. I enjoy playing games like X-Plane 10 and Kerbal Space Program on it, as well as having access to a growing selection of additional Linux games via Steam.
I replaced a MacBook Air with this machine, and I am very happy with the selection. It is the best laptop I've ever owned.
EDIT: One additional required upgrade: a combo Gigabit Ethernet and USB 3.0 hub (http://ca.startech.com/Networking-IO/Adapter-Cards/USB-3-to-...). The included 100 Mbit USB Ethernet adapter did not satisfy me. :-)
For example, order-by w/ limit/offset? If you do that at the application layer, you've increased the I/O usage on the database server, and clearly this advice doesn't make sense.
On the other hand, group-by (assuming no HAVING)? If you do that at the application layer, you've reduced the load on the database server, increased the load on the network, and you've probably made a justifiable performance vs. scalability trade-off. If you measure it and back it up with data.
I think the advice here in the article is too broad, but I can see a kernel of wisdom in it that is non-intuitive.
Settings > Show Advanced > Privacy > Content settings... > Block third-party cookies and site data.
It's not exactly obvious, of course. :-)
Impossible? No, not really.
Worthwhile? My opinion is no. I haven't seen the practical benefits of the content-negotiation approach over the URL approach, but I have seen the practical difficulties, so I'm convinced.