320 karma · joined August 4, 2008
I really like the idea of having an editor that I can play with on all of the things that I don't want to, or can't, setup an editor on (iPad, various laptops, etc). Is it possible to have a non-hosted version that I could put on my own servers as well, that I can then access from anywhere I wanted?
The aesthetic quality is superb by the way. Who does your UX?
Might happen, might not. Regardless, I get to drive a fun new toy -- I find the experience of driving a hybrid to be fun (the sound, instant torque, etc).
Google Analytics gives you the ability to slice and dice your visitors. Quantcast gives you demographics. And Chartbeat gives you real-time tracking with historical playback.
Between the three of them, you can discern almost any information you'd want to know about your visitors short of business logic tracking.
Also, notice that I didn't specify junior developers on the salary scale - they're all over the place in terms of salary.
Government contract work is always the exception in any industry. I think that's a given.
If you want to be a developer and you're goal is to give your three kids a good life, drive that BMW 5 series, and own a $500k house, then you should be a .NET developer. The math is simple and I have a mountain of data that supports the reality that .NET developers get paid significantly more (20-30%) on average than any of the hot whiz-bang alternatives (Ruby, PHP, Java, etc). The average mid-level .NET developer in a dev-friendly town (san fran, boston, new york, etc) is making $80-90k, Senior $90-110k, Architects $110-130k, Director/Managers $130-160k. Those are averages that don't include bonuses. There are of course exceptions (finance industry add 20% to the above figures, start-ups subtract 10%, etc).
Never underestimate the position that money holds in ones relationship with their chosen path in life.
I think the authors argument is valid and is the reason why most of the developers that leave the .NET world do, but my observations indicate that most .NET/MS developers are lifers.
On a side note, I actively practice development in.NET, PHP, Java, and a few other languages at my 9 to 5. I like to think that I'm fairly unbiased.
1. You can't currently limit CPU cycles in Javascript reliably
2. You can't automatedly prevent malicious Javascript code from being uploaded and distributed while still allowing people to use the Javascript keywords and constructs that are required for most useful algorithms
3. Any data that is in a format to be processed is not secure because one can view the code and the data, thereby deducing its purpose with minimal difficulty
I agree with most of the points you're making, but I also think that its important to remember that most people have no idea about what's even involved in the basics. Your points are advanced and are details that are VERY important, but are beyond the scope of a post. If the criteria for trying to put into words some of the concepts behind scalability were that you need to be writing a dissertation to do so, then we would live in a sadly uninformed world.
My intent wasn't to make it a thorough primer so much as to touch on some of the concepts involved in making scalability a reality in day-to-day development of web applications: scalable datastorage, scalable application layers, etc. I hope the readers see it for what it is and then go do further research of their own.
You elude to this in the last paragraph of your comment. Having a horrible experience horizontally scaling, for example, is ample reason enough to look into document databases. Largely because the current implementations of document databases allow for ease of partitioning in a way that the current implementations of RDBMS' don't.
The author doesn't imply that document datastores are free lunches. They're simply alternatives and he goes on to say that document datastores are better for some problem domains than others.
Also, you oversimplify the difficulties in implementing a highly-performant document datastore by implying that data should be normalized and that storing the data on disk is an optimization layer. This comment comes off as being written by someone who is ignorant of how document disk storage is implemented and why it is so fast. Doing what you suggest would very likely result in a datastore that was drastically slower than the currently implemented document datastores or even key/value datastores for that matter (MongoDB, CouchDB, Cassandra, etc).
Will we someday perhaps have the end-all-be-all of RDBMS's that merges the feature-set of current RDBMS's and the performance of document/key-value datastores? Maybe, but until then, they're alternatives to each other that generally succeed in providing solutions for the problems for which they were designed:
* RDBMS - consistency, transactions, predictable schema, etc. * Document/Key-Value - horizontal scalability, raw performance, flexible schema, etc.
Different solutions for different problem domains.
Simply GeoDjango you are not. Nice job.
It's probably worth mentioning that the reality is that not every developer is of equal ability, nor has the same level of potential ability.
I've met many developers that clearly don't have the same capacity for learning and applying languages to problems as well as others. Do what works for you based on your own perceived capabilities.
A lot of times you can get away with a decent smart phone interface and just put a few meta tags in the head tag for the iPhone so that it looks slick for the iPhone too.
Feature requests:
1.) When I add a task, sometimes I'd like to add a really detailed description (or any description for that matter) (i.e. a project spec) and I'd like the ability to do that. The ability to bold, italicize, change font size and format, etc, would be helpful in descriptions.
2.) Attachments. I want to be able to attach files to my tasks.
3.) Keep the above features out of the way. Most of the time I won't need them, but when I do, I really need them.
EDIT: 4.) Just realized that the projects aren't hierarchical. I expected them to be, and it doesn't allow me to be super organized for more complex projects/tasks. An example of this might be Work>Websites>ClientA and another might be Life>Exercise or Life>Clean-Up.
If I think of more, I'll let you know. Nice job so far.
My intent in using Memcache as the mechanism for this type of indexing was more an attempt to relate the subject with something that most developers are at least somewhat familiar with. I explicitly address the weaknesses of Memcache in the section titled "Weaknesses". I also recommend some work-arounds to lessen the effect of Memcache's limitations. In the "Wrap-Up" section, I even go so far as to say that Memcache is really only one example of a distributed hash-table and that there are alternatives. Rolling your own is another option, and both of solutions are probably better suited to the indexing problem than Memcache.
Again, I was afraid that the subject would be lost on most people if there wasn't at least some relation made between the concept and something that concretely exists. Try to look at it as an exercise in thinking "outside the box", using the best example I could think of.
Thanks for the comments, good and bad. These critiques really do help.