This sounds like a good intro book but nothing of use to a seasoned DBA.
While there's certainly overlap, there is a difference between a DBA (administering the actual database server) and an SQL programmer. This book looks like it's about SQL programming, not database administration.
That's what happens when the judicial system is an adversarial system...
IANAL but the difference between the defense and the prosecution is that the defense is obliged to defend their client regardless of whether or not they think (or even know) that their client is guilty. A prosecutor is not supposed to prosecute if they think or know the defendant to be innocent. My understanding is that a prosecutor could be punished by the bar for prosecuting a defendant they think or know is innocent. A defense attorney could be punished by the bar for not properly defending a client that they know is guilty. In other words, it's not simply one side fighting to convict and the other side fighting to acquit - their obligations are not symmetric. Someone correct me if I'm wrong on this.
I guess it depends on what we each meant by using the database as a "data bucket". I meant that there are features that are common enough to all modern RDBMSs such that the specific database can be abstracted away. I wasn't suggesting that I didn't want to use the relational features. You contrasted "data bucket" to "full-on application servers" - I'm simply saying I want my code in my application, not in my database. I use Zend_Db as my abstraction layer - all of the database it supports are relational, that is part of the least common denominator.
I prefer to keep my application logic out of the database as much as possible. I guess it's just a difference in approach.
ORM looks interesting, but I've stayed away from it so far. Doesn't seem to add a lot of value for the added complexity.
Also, if all you want is a data bucket, why use MySQL at all? Why not use BDB?
MySQL has worked very well for me and I don't have plans to use anything else. It's available on most hosting platforms and scales well (i.e. replication). It's just that I really try to live by the "program to an interface" design principle. Database abstraction keeps my options open in case I fall out of love with MySQL (see my username) or requirements change and a client wants to use a different database server. Well programming to an interface is important, it doesn't mean there aren't implementation details to be considered from time-to-time. Right now, MySQL meets my implementation needs the best.
Disclaimer: the following is based on very limited experience with MooTools.
Mootools refuses to namespace their library and redefines the 'Element'. This can (and will) lead to conflicts with other JavaScript libraries. jQuery is fully namespaced and provides a "noConflict" mode so that you can be sure it will play well with others. I would consider that "more modular".
Otherwise known as Yet Another Language that no one really needs/wants/or understands...
Are you saying that no one needs/wants/understands JavaScript or jQuery? If you want to use JavaScript for your web applications jQuery is an awesome way to do it. It's simple to understand and really helps you approach JavaScript in a whole new, non-invasive, way. The fact that it uses CSS selectors is great because it really encourages you to use a good design that separates structure, presentation, and behavior. This model provides many advantages including graceful degradation, accessibility, and cross-browser compatibility.
1) The ability to mathematically define valid data in the RDBMS so your code only has to worry about security implications of data validation
This is certainly a nice-to-have feature. Just because you're using a database abstraction layer doesn't mean you can't get data validation at the RDBMS level. This could be an example of "degrading gracefully" - the DDL for databases that support it include data validation, others don't. The application can run on either database because it's using a database abstraction layer. The trick here is that the application can't rely on the validation occurring at the database layer which could certainly be a limitation.
2) The ability to separate out the SQL from your code so it is not generally included inline in every one of your object classes.
This is exactly what a database abstraction layer should give you. You programmatically define your SQL and avoid literal SQL strings. Let the database abstraction layer handle quoting identifiers and values and building your parameterized SQL statements. You put all of this code in one place and make sure the rest of your application uses it and doesn't access the database directly.
Pretty much every bug in software can be reduced to a data state bug or a data flow bug.
Why on earth would that be? Modern DBMSs aren't just data buckets. They're full-on application servers that happen to have a really killer storage subsystem.
I'd rather have my application live in my application code, not in my database server, and treat the database as a "data bucket". Give me a good database abstraction layer that provides me with the least common denominator so that my application can run on any of the databases supported by the database abstraction layer. For me, the database choice is an implementation detail and I should be programming to a common database interface, not a specific database implementation.
That's not to say there's anything wrong with developing using database specific features if those features are compelling enough for you to choose to be locked in to that specific database. Perhaps a developer may choose to use features of specific databases if those features are available, degrading the application gracefully if the particular database in use doesn't support that feature.
Is rudeness a badge of honor on slashdot (queue the you must be new here jokes)?
If it has a browser on one end, a database on the other and a web server in the middle, it's an n-tier application. It doesn't even matter if the database is on the same physical server, it's still an n-tier application because the browser isn't directly connecting to the database.
You've zoomed the focus out a level - we were talking about the application architecture and database abstraction layers. Yes, of course the web itself is n-tier if you're dealing with anything other than a server with static content. That's not what we were talking about. I think pretty much everyone here has some idea how the web works, we were talking about the details of the application architecture.
FTA that I linked to:
Conceptually the three-tier architecture is linear. However, the MVC architecture is triangular: the View sends updates to the Controller, the Controller updates the Model, and the View gets updated directly from the Model.
MVC is technically not n-tier since there is no middleware tier that data must pass through. With MVC, the View can read data directly from the Model. Personally, I like working with MVC and don't find it lacking anything that a "true" n-tier architecture could provide. But, that's just me.
Really people should be using PDO, instead of mysql_ or pgsql_. Of course the real solution is to use a database abstraction layer, but I've never found a good way to create an n-tier web appliction in PHP.
How do you figure? Just because you experience websites visually doesn't mean it's an "inherently visual media". Websites use (X)HTML which is a markup language. Modern web design focuses on the separation of content structure (HTML) from presentation (CSS). This is a very important point since the underlying structure is simply marked up text - which can be processed into arbitrary mediums. Most people end up experiencing this visually, but good web designers know that the visual representation is only one "view" of the information.
Don't get me started on Flash, Java Applets, etc. which are visual media.
I'm no expert on copyright law. But, my understanding is that involves copying. Technically, if you create something that happens to be identical to the works of Shakespeare but was not a copy of his works you'd be able to copyright your creation. Of course, good luck proving that you'd never heard of Shakespeare before (unless you're a gorilla). Someone correct me if I'm wrong.
So I guess IKEA finally got into computer business:)
With the 4-6 week delivery time it certainly sounds like IKEA. Have you ever tried ordering something from their website? It's amazing how incompetent IKEA is at the entire process of fulfilling your order.
As he was the primary developer he had rights to license his code it in multiple ways as he saw fit.
Actually, the primary developer does not have that right.
A minor point - but yes, the primary developer (or any developer for that matter) does have the right to license his code in multiple ways which is exactly what the gp said. Practically speaking though, you're correct, it would be very difficult to do this because it would require both making sure that his code was not a derivative work of someone else's code and that his code was separated from other people's code.
Contracts with landlords are signed by you, and should be to mutual benefit of both parties, and they can be dissolved when they are no longer interesting. You can't dissolve a "contract" with your government, and this gives the government more chances to affect your life against your wishes.
Without legislation on contract law, regulatory agencies, and a judicial system how useful is that "contract" with your landlord?
He definitely does not deserve to be respected, after all the things he did and said.
I did not, do not, and will not ever respect him. What I said was "any human being's funeral and grave should be respected." There's a difference. I respect that he was human and there are people who may have respected him even if he did not give the same respect to other human beings during his life.
Disgree with his beliefs if you want, but he was still a person. He had a wife and kids...
I agree with you, but wasn't it Jerry Falwell that picketed Matthew Shepherd's funeral? I think I disagree with more than just Falwell's beliefs, but his actions. I can understand the desire to piss on Falwell's grave after some of things that he's done but any human being's funeral and grave should be respected.
Start by reading Producing Open Source Software. Setup Trac or use Google Code Project Hosting. Make sure it's something you're really interested in doing and committed to spending a lot of time on it. Other people probably won't volunteer their time if they don't see at least one other person strongly committed to the project.
A work for hire agreement cannot be implicit or be an oral contract. The law says it must be written down and clearly be work for hire. The only time this is not the case is when you're dealing with an employer/employee relationship. In that case work for hire is assumed. Also, in my understanding of the law, only specific types of work are eligible as work for hire arrangements (again, outside of employer/employee) and software development is a type of work that is not eligible to be work for hire. I would assume that copyright could be transferred after the fact, though. The book, Graphic Artists Guild Handbook of Pricing & Ethical Guidelines, has a lot of good information about this although there isn't a whole lot about software specifically in there.
You make some very good points and I can see why ISPs would want to advertise "unlimited" service. One problem is, how do you separate the leeches from the legitimate users? If I want to watch 2 x 500 MB TV shows every night from iTunes that's about 30 GB/month. How does the ISP tell me apart from someone abusing their service? Granted, that would be $120/month iTunes bill every month - but that leads me to my next point. I know of people who pay that much for cable TV every month. Many ISPs provide "triple-play" service (TV, phone, Internet). If ISPs starting seeing people get their TV shows through iTunes instead of paying for the ISPs TV service they may not be happy about that. Telling me that I'm "abusing" my Internet connection because I'm downloading 60 shows from iTunes every month would be one way to try to "lock-in" customers to the ISPs TV service. Of course, this leads us into a discussion of network neutrality...
Here are few options using my choice for a JavaScript library:
While there's certainly overlap, there is a difference between a DBA (administering the actual database server) and an SQL programmer. This book looks like it's about SQL programming, not database administration.
The Head First series is published by O'Reilly. I think it's a great series of books - even for advanced users.
IANAL but the difference between the defense and the prosecution is that the defense is obliged to defend their client regardless of whether or not they think (or even know) that their client is guilty. A prosecutor is not supposed to prosecute if they think or know the defendant to be innocent. My understanding is that a prosecutor could be punished by the bar for prosecuting a defendant they think or know is innocent. A defense attorney could be punished by the bar for not properly defending a client that they know is guilty. In other words, it's not simply one side fighting to convict and the other side fighting to acquit - their obligations are not symmetric. Someone correct me if I'm wrong on this.
My guess is that it's Xen. RHEL5 includes virtualization with Xen, so I'm pretty sure it's the same in 5.1.
I guess it depends on what we each meant by using the database as a "data bucket". I meant that there are features that are common enough to all modern RDBMSs such that the specific database can be abstracted away. I wasn't suggesting that I didn't want to use the relational features. You contrasted "data bucket" to "full-on application servers" - I'm simply saying I want my code in my application, not in my database. I use Zend_Db as my abstraction layer - all of the database it supports are relational, that is part of the least common denominator.
I prefer to keep my application logic out of the database as much as possible. I guess it's just a difference in approach.
ORM looks interesting, but I've stayed away from it so far. Doesn't seem to add a lot of value for the added complexity.
MySQL has worked very well for me and I don't have plans to use anything else. It's available on most hosting platforms and scales well (i.e. replication). It's just that I really try to live by the "program to an interface" design principle. Database abstraction keeps my options open in case I fall out of love with MySQL (see my username) or requirements change and a client wants to use a different database server. Well programming to an interface is important, it doesn't mean there aren't implementation details to be considered from time-to-time. Right now, MySQL meets my implementation needs the best.
Disclaimer: the following is based on very limited experience with MooTools.
Mootools refuses to namespace their library and redefines the 'Element'. This can (and will) lead to conflicts with other JavaScript libraries. jQuery is fully namespaced and provides a "noConflict" mode so that you can be sure it will play well with others. I would consider that "more modular".
Are you saying that no one needs/wants/understands JavaScript or jQuery? If you want to use JavaScript for your web applications jQuery is an awesome way to do it. It's simple to understand and really helps you approach JavaScript in a whole new, non-invasive, way. The fact that it uses CSS selectors is great because it really encourages you to use a good design that separates structure, presentation, and behavior. This model provides many advantages including graceful degradation, accessibility, and cross-browser compatibility.
This is certainly a nice-to-have feature. Just because you're using a database abstraction layer doesn't mean you can't get data validation at the RDBMS level. This could be an example of "degrading gracefully" - the DDL for databases that support it include data validation, others don't. The application can run on either database because it's using a database abstraction layer. The trick here is that the application can't rely on the validation occurring at the database layer which could certainly be a limitation.
This is exactly what a database abstraction layer should give you. You programmatically define your SQL and avoid literal SQL strings. Let the database abstraction layer handle quoting identifiers and values and building your parameterized SQL statements. You put all of this code in one place and make sure the rest of your application uses it and doesn't access the database directly.
All generalizations are bad ;-)
I'd rather have my application live in my application code, not in my database server, and treat the database as a "data bucket". Give me a good database abstraction layer that provides me with the least common denominator so that my application can run on any of the databases supported by the database abstraction layer. For me, the database choice is an implementation detail and I should be programming to a common database interface, not a specific database implementation.
That's not to say there's anything wrong with developing using database specific features if those features are compelling enough for you to choose to be locked in to that specific database. Perhaps a developer may choose to use features of specific databases if those features are available, degrading the application gracefully if the particular database in use doesn't support that feature.
Is rudeness a badge of honor on slashdot (queue the you must be new here jokes)?
You've zoomed the focus out a level - we were talking about the application architecture and database abstraction layers. Yes, of course the web itself is n-tier if you're dealing with anything other than a server with static content. That's not what we were talking about. I think pretty much everyone here has some idea how the web works, we were talking about the details of the application architecture.
FTA that I linked to:
MVC is technically not n-tier since there is no middleware tier that data must pass through. With MVC, the View can read data directly from the Model. Personally, I like working with MVC and don't find it lacking anything that a "true" n-tier architecture could provide. But, that's just me.
Well not strictly n-tier, you can get pretty darn close with Zend_Db (which contains adapters to PDO), Zend_View, and Zend_Controller.
How do you figure? Just because you experience websites visually doesn't mean it's an "inherently visual media". Websites use (X)HTML which is a markup language. Modern web design focuses on the separation of content structure (HTML) from presentation (CSS). This is a very important point since the underlying structure is simply marked up text - which can be processed into arbitrary mediums. Most people end up experiencing this visually, but good web designers know that the visual representation is only one "view" of the information.
Don't get me started on Flash, Java Applets, etc. which are visual media.
I'm no expert on copyright law. But, my understanding is that involves copying. Technically, if you create something that happens to be identical to the works of Shakespeare but was not a copy of his works you'd be able to copyright your creation. Of course, good luck proving that you'd never heard of Shakespeare before (unless you're a gorilla). Someone correct me if I'm wrong.
I doubt you'll ever get Steve Ballmer et al. to start using linux.
I live in Vermont, you insensitive clod!
With the 4-6 week delivery time it certainly sounds like IKEA. Have you ever tried ordering something from their website? It's amazing how incompetent IKEA is at the entire process of fulfilling your order.
A minor point - but yes, the primary developer (or any developer for that matter) does have the right to license his code in multiple ways which is exactly what the gp said. Practically speaking though, you're correct, it would be very difficult to do this because it would require both making sure that his code was not a derivative work of someone else's code and that his code was separated from other people's code.
Without legislation on contract law, regulatory agencies, and a judicial system how useful is that "contract" with your landlord?
I did not, do not, and will not ever respect him. What I said was "any human being's funeral and grave should be respected." There's a difference. I respect that he was human and there are people who may have respected him even if he did not give the same respect to other human beings during his life.
I agree with you, but wasn't it Jerry Falwell that picketed Matthew Shepherd's funeral? I think I disagree with more than just Falwell's beliefs, but his actions. I can understand the desire to piss on Falwell's grave after some of things that he's done but any human being's funeral and grave should be respected.
Start by reading Producing Open Source Software. Setup Trac or use Google Code Project Hosting. Make sure it's something you're really interested in doing and committed to spending a lot of time on it. Other people probably won't volunteer their time if they don't see at least one other person strongly committed to the project.
A work for hire agreement cannot be implicit or be an oral contract. The law says it must be written down and clearly be work for hire. The only time this is not the case is when you're dealing with an employer/employee relationship. In that case work for hire is assumed. Also, in my understanding of the law, only specific types of work are eligible as work for hire arrangements (again, outside of employer/employee) and software development is a type of work that is not eligible to be work for hire. I would assume that copyright could be transferred after the fact, though. The book, Graphic Artists Guild Handbook of Pricing & Ethical Guidelines, has a lot of good information about this although there isn't a whole lot about software specifically in there.
You make some very good points and I can see why ISPs would want to advertise "unlimited" service. One problem is, how do you separate the leeches from the legitimate users? If I want to watch 2 x 500 MB TV shows every night from iTunes that's about 30 GB/month. How does the ISP tell me apart from someone abusing their service? Granted, that would be $120/month iTunes bill every month - but that leads me to my next point. I know of people who pay that much for cable TV every month. Many ISPs provide "triple-play" service (TV, phone, Internet). If ISPs starting seeing people get their TV shows through iTunes instead of paying for the ISPs TV service they may not be happy about that. Telling me that I'm "abusing" my Internet connection because I'm downloading 60 shows from iTunes every month would be one way to try to "lock-in" customers to the ISPs TV service. Of course, this leads us into a discussion of network neutrality...