RelaxNG is absolute crap, and it attempts to regress the world back to something similar to DTDs. In fact, an equivalent DTD would look very similar to the RelaxNG compact you posted. XML schema is not perfect (and sometimes a little rigid, compared to better (and fundamentally different) approaches such as RDF/OWL.
What you are doing, is constraining the structure of a document (whoopy dooh). What XML Schema is, is an object-oriented data language with classes, specialisation, polymorphism, etc. If you are an XML document writer, you might not see the benefit of this. If you are a designer or a developer (and have to, for example, transfer the state of an object between a Java object representation, and XML) you will understand. With XML Schema, an xml document becomes an instance of a class (an object).
XML Schema is conceptually at a whole level above RelaxNG and DTD, and RDF/OWL is - again - conceptually at a whole level above XML Schema. You clearly have no idea what you're talking about - please research your facts before asserting them.
First you tell me that you are in software engineering, then you tell me you *still* don't understand the single-responsibility principle? The insult was, ergo, not implied... Please look this up on google or wikipedia, or pick up a good design book, it really is quite important.
What I *do not* understand, is how the heck your posts score 5 every time, yet I get no points. My karma sucks as it is, and I was hoping this little thread would pick it up somewhat. Sheesh.
Umm... are you even in the field of software engineering at all?
Otherwise, I can see how my comment would not quite fit into perspective for you. Responsibility allocation is one of the most important tenets of object-oriented analysis and design, and (apparently) the Apple team wasn't too strong on that front.
Dude, this is slashdot... Yes, this *was* a worse idea than pricing the playstation at 600 bucks. (since I don't have any intention of buying one, but I am, however, an iTunes user)
That's the worst excuse for poor responsibility allocation I've ever heard! Nothing stops them from (transparently even) bundling a dedicated Synchronisation framework with iTunes. (Just like they transparently bundle Quicktime, which does the actual media decoding and playback for iTunes).
Sorry, but to build all sorts of non-music-related synchronisation stuff into a *music player application* is the worst idea ever.
My argument exactly! Good responsibility allocation is a lost art... I know iSync does what it does, but the point is, "iSync" should be responsible for "sync'ing", and if it's not up to the job, it should be improved or rewritten as such.
But to clobber absolutely all this responsibility into iTunes is ridiculous - I mean, it must be the only music player in the world to contain features to activate a mobile telephone for a particular telephone network! Or to set up which calendars photo albums should be synchronised with your iPod. What a mess!
(I am a happy iTunes user, but that's because there are no easily-set-up better options for me at this stage)
Am I the only Mac OS X user who has this little standard application (and framework) called iSync installed? Or is iSync actually the music management application, and iTunes is the synchronisation management application? Now I'm all confused!
Am I the only one who thinks it's really silly that the only channel through which to update your phone (or, put in another way, your slightly-locked-down, general purpose hand-held computer and communications device) is... is... your MUSIC PLAYER!?
I'm just yanking your chain, though I am a proud eclipse user.
However, if you want a pretty good idea of the features available in.NET, just look back a couple of years on the Java / JavaEE timeline, and add an 'n' in front of it.
nAnt, nUnit, nHibernate...
I, for one, welcome our self-dimming-goggle-wearing, border-crossing immigrants!
(I should imagine a person wearing self-dimming-goggles in, say, a U.S. airport, would get arrested as a matter of principle)
No, not at all. Maybe my original comment had insufficient information - I teach them the same theory (concurrency is concurrency, after all, and an earlier exercise in the curriculum is just that - the development of a generic resource pool (which could host threads, connections, whatever)), but in many respects you have to do a great deal more work using the traditional Java (and most other languages') threading model to accomplish the same thing. This is not because some "shitty implementation" hides details, but rather because of elegant design decisions, such as the separation of business logic from execution/concurrency logic (which I guess you like to be all intertwined in your code).
With Java 5, you can write your tasks (logic) first, and then decide, as an architectural decision, whether you'd like them executed sequentially, concurrently, with various types of thread pools, etc.
Also, the traditional limitations, such as always blocking when you want to acquire the lock for an object when it's not available, are significantly complex to work around, whereas the Java 5 concurrency utilities offer several different types of locks, and ways of acquiring them.
And don't get me started on Conditions - the traditional model of Object.wait() and Object.notify() is simultaneously too simplistic, and introduces far too great complexity when developing complex things (think the controller for an aircraft's controls that has to deal with inputs from two pilots and an autopilot, all of which affect shared resources). Again, Java 5 Conditions provide an elegant platform within which to solve such a problem.
Using something that "does the work for you" is not "shitty" - it prevents you from having to sit all day and debug multi-threaded code. In either case, you have to understand what you are doing, but let's face it, multi-threading is actually very simple on it's own - it's the implementation, and how you use it to accomplish difficult things, that are exceedingly hard. I'm glad you think you can write a better thread pool than the maintainers of the Java programming language. You should join up at http://dev.java.net/, they can use you! (it's open source now through GPL, remember?)
Since version 5, the Java platform introduced the Concurrency Utilities, a threading framework which significantly reduces the complexity, and increases the performance, of a large number of threading-related tasks. Things like creating controlled pools of threads that concurrently use data structures used to be very complex to implement, but now I teach my students this in a day.
This, coupled with Just-In-Time compilation (and the clever optimisation possibilities this provides), may see Java as the best platform to develop software with in a future filled with multi-core machines. We are a small, specialist software development/training/consulting house, and Java's performance has allowed us to do unbelievable things with it, yet never having to sacrifice sound design for the sake of "performance optimisation".
Java 6, which builds on this stuff, and includes full hardware-accelerated GUI, will (I believe) make very, very responsive and powerful GUI applications possible, without having to lock into some OS-specific framework (or X).
Watch that space.
This is so cool. So, according to wikipedia, this femto-pulso-pico-lasero-thing will turn ordinary metal bands into black metal bands??
http://en.wikipedia.org/wiki/Black_metal
A recipe for disaster indeed! Then look at us in South Africa, where we have 11 (eleven!!) official languages. Of these, only Afrikaans and English can actually be formally treated as written languages. These rest are typical tribal languages with no history of literacy, intermixed with mangled English and Afrikaans words etc.
But, with the post-apartheid government being almost completely composed of people whom can neither speak or write Afrikaans or English properly, they obviously thought it'd be a good idea to make eleven of them official. So, we are the only country in the world with a constitution written in so many official languages...
Not if this was in South Africa (or any African country, for that matter) and not if the airport enforces Affirmative action - which has brought the average worker skill down to shocking levels here in S.A.
Why? Because all our critical information is stored as XML in our CVS (soon to be SVN) repository. Not that it matters, because we belive all our employees should have access to everything (except salary information) but I very much doubt if this iPod hack, when plugged into my mac, will pull all our "critical" documents from our various Linux machines.
So, once again, it's only the poor suckers running Windows. Nothign to see here, move along...
I do agree with one poster, would be much more useful if it could "slurp" all music and multimedia files found on the network.
Mod parent up (Informative)! I am also a White South African male, and I experience the same problems every day. I am amazed the Europe and the U.S. is so oblivious to the racism and discrimination us white male South Africans face in the workplace.
I must, however, state that at least in the IT industry here in SA, it's not as bad as in most others. I consider myself highly skilled, we run a small training/consulting/development business (http://www.solms.co.za/ - yes, our website sucks) but I've found that, when there is a need for professional-level IT staff, there is such a shortage of skilled black workers that companies turn a "blind eye" to government regulations, and, for once, employ people based on their own merits.
However, for the most part, it's very difficult to get a job as a white afrikaner, if you're not in a very niche market.
Your assumptions, sir, are the only things wrong around with this thread... Did I mention XHTML 1.0 Strict? I use "XHTML" to refer to the standard as a whole, and specifically the componentisation vision. More specifically, XHTML 2.0.
XHTML 1.0 was never meant to be perfect, but a great start towards getting the web to support better standards. XHTML 2.0, however (which is starting to gain marginal support in some browsers as we speak) does indeed remove all formatting tags. HTML 4.01 and XHTML (2.0, which you incorrectly presumed I was reffering to version 1.0) are thus, decidedly, not the same, "thank you, drive through."
[quote]Excuse me? Does this stupid statement mean that you don't even know HTML 4.01 Strict is the same thing as XHTML 1.0 Strict but for the fact that one is a subset of SGML while the other is a subset of XML? Aka if one is bloated the other one is, too, and the other way round?[/quote]
Excuse ME? Does your stupid statement mean that you don't even know that there is no such thing as "HTML 4.01 Strict", and that XHTML Strict removes all visual formatting tags? XHTML only contains semantic / structural tags, and is not at all the same thing as HTML. And that is what I am getting at:
Just having information in XML is not enough, as XML is yet another mapping of some structure onto text. What is important, is the vocabulary - one wants to store information in a pure state, containing only the semantics - i.e. what it represents, not what it looks like.
Furthermore, you want to componentise your information (A depends on B, which depends on C and D) but another document (X) also depends on B, and the indirect dependencies need to be retained. Furthermore, as you improve B, all your material benefits.
And lastly, if we consider your XML/SGML statement, and remember that XML is also a subset of SGML (thereby making your statement irrelevant), we can rightly assume that you are a clueless MS Word user, with many levels of abstraction to traverse before you will probably even start to understand what I am getting at. Your helpful posts to other users regarding OpenOffice reflects this. Go play with your MS Paper Clip...
So, apart from mister office user here, does anybody else have experience in using componentised XML to store your documentation?
We have a saying here at our company (http://www.solms.co.za/ - "MS Word is the black hole of information". The same goes of OOo.
Once you take the time to type meticulously thought-out information into Word, it's no longer accessible to anything or anybody else out there, it's not re-usable, and you are tied to one rendering of said information.
Our approach is to store everything (and I mean *everything*, all documentation information) in a CVS repository of "knowledge components" using our own XML format (with a XML Schema, of course) that's a very strict subset of Docbook XML. Voila! Instant re-use of components (we also present courses, so if we have one set of knowledge on basic Java, that same bit is re-used in all courses, EJB, J2ME, etc). I can, for the life of me, not understand why anybody would want to put so much work into information to which a single rendering is so inextricably tied.
Granted, the XML tools are still pretty raw (and we had to write a lot of our own) but the beauty is, our "knowledge base" evolves like FOSS does, and in a way which a Word Doc can never dream to.
Who else is using XML to store "pure" information, rather than all this "word processor" stuff? And I am surprised that there isn't a stripped-down, standard XML format for this sort of thing out there. DocBook is waaayy too bloated, as HTML 4 is to XHTML strict. Speaking of which, XHTML 2, which may finally introduce containers (i.e. "sections") may be our saving grace.
Had you used Java, you would not even had to have changed the slashes in your includes.
Has anybody had a look at JSP2.0 and Servlets 2.4? Especially with the new (ok new new) XML syntax, and the expression language and Standard Tag Libraries, JSPs are far simpler yet more powerful than PHP pages. That is, of course, if you actually design your application, and don't place business logic in your pages. (A nasty habit that PHP coders seem to love doing).
Java Interfaces have perfectly good uses, and you, sir, may simply naver have encountered the need for them.
For example, we have a wide variety of class in a quite elaborate class library built up over years. We recently sought a better way to configure applications, and their sub-components: Simple, create a
Configurable
interface, with a
public void configure(Properties configuration)
method, and voila: The start of a really flexible configuration framework. All interested components simply implement this interface, and apps can manage the configuration of their child components.
I can think of a million reasons why Interfaces, as they are implemented now, are an excellent mechanism for clean decoupling of code.
RelaxNG is absolute crap, and it attempts to regress the world back to something similar to DTDs. In fact, an equivalent DTD would look very similar to the RelaxNG compact you posted. XML schema is not perfect (and sometimes a little rigid, compared to better (and fundamentally different) approaches such as RDF/OWL.
What you are doing, is constraining the structure of a document (whoopy dooh). What XML Schema is, is an object-oriented data language with classes, specialisation, polymorphism, etc. If you are an XML document writer, you might not see the benefit of this. If you are a designer or a developer (and have to, for example, transfer the state of an object between a Java object representation, and XML) you will understand. With XML Schema, an xml document becomes an instance of a class (an object).
XML Schema is conceptually at a whole level above RelaxNG and DTD, and RDF/OWL is - again - conceptually at a whole level above XML Schema.
You clearly have no idea what you're talking about - please research your facts before asserting them.
I never though "the single responsibility principle" to be an inane non-sequitur, but rather a standard aspect of Object-Oriented design.
You sir, may very well bid me goodbye, but I hereby proclaim the last word of this argument! Ha! Who's the troll now!
(oh wait, probably still me)
First you tell me that you are in software engineering, then you tell me you *still* don't understand the single-responsibility principle? The insult was, ergo, not implied... Please look this up on google or wikipedia, or pick up a good design book, it really is quite important.
What I *do not* understand, is how the heck your posts score 5 every time, yet I get no points. My karma sucks as it is, and I was hoping this little thread would pick it up somewhat. Sheesh.
Umm... are you even in the field of software engineering at all?
Otherwise, I can see how my comment would not quite fit into perspective for you. Responsibility allocation is one of the most important tenets of object-oriented analysis and design, and (apparently) the Apple team wasn't too strong on that front.
Dude, this is slashdot... Yes, this *was* a worse idea than pricing the playstation at 600 bucks. (since I don't have any intention of buying one, but I am, however, an iTunes user)
That's the worst excuse for poor responsibility allocation I've ever heard! Nothing stops them from (transparently even) bundling a dedicated
Synchronisation framework with iTunes. (Just like they transparently bundle Quicktime, which does the actual media decoding and playback for iTunes).
Sorry, but to build all sorts of non-music-related synchronisation stuff into a *music player application* is the worst idea ever.
My argument exactly! Good responsibility allocation is a lost art... I know iSync does what it does, but the point is, "iSync" should be responsible for "sync'ing", and if it's not up to the job, it should be improved or rewritten as such.
But to clobber absolutely all this responsibility into iTunes is ridiculous - I mean, it must be the only music player in the world to contain features to activate a mobile telephone for a particular telephone network! Or to set up which calendars photo albums should be synchronised with your iPod. What a mess!
(I am a happy iTunes user, but that's because there are no easily-set-up better options for me at this stage)
Am I the only Mac OS X user who has this little standard application (and framework) called iSync installed? Or is iSync actually the music management application, and iTunes is the synchronisation management application? Now I'm all confused!
Am I the only one who thinks it's really silly that the only channel through which to update your phone (or, put in another way, your slightly-locked-down, general purpose hand-held computer and communications device) is... is... your MUSIC PLAYER!?
(it is called itunes, no?)
I'm just yanking your chain, though I am a proud eclipse user. However, if you want a pretty good idea of the features available in .NET, just look back a couple of years on the Java / JavaEE timeline, and add an 'n' in front of it.
nAnt, nUnit, nHibernate...
I, for one, welcome our self-dimming-goggle-wearing, border-crossing immigrants! (I should imagine a person wearing self-dimming-goggles in, say, a U.S. airport, would get arrested as a matter of principle)
Umm, yeah... if you use Visual Studio, you need all the help you can get (even if it does involve inverting the colour scheme).
No, not at all. Maybe my original comment had insufficient information - I teach them the same theory (concurrency is concurrency, after all, and an earlier exercise in the curriculum is just that - the development of a generic resource pool (which could host threads, connections, whatever)), but in many respects you have to do a great deal more work using the traditional Java (and most other languages') threading model to accomplish the same thing. This is not because some "shitty implementation" hides details, but rather because of elegant design decisions, such as the separation of business logic from execution/concurrency logic (which I guess you like to be all intertwined in your code).
With Java 5, you can write your tasks (logic) first, and then decide, as an architectural decision, whether you'd like them executed sequentially, concurrently, with various types of thread pools, etc.
Also, the traditional limitations, such as always blocking when you want to acquire the lock for an object when it's not available, are significantly complex to work around, whereas the Java 5 concurrency utilities offer several different types of locks, and ways of acquiring them.
And don't get me started on Conditions - the traditional model of Object.wait() and Object.notify() is simultaneously too simplistic, and introduces far too great complexity when developing complex things (think the controller for an aircraft's controls that has to deal with inputs from two pilots and an autopilot, all of which affect shared resources). Again, Java 5 Conditions provide an elegant platform within which to solve such a problem.
Using something that "does the work for you" is not "shitty" - it prevents you from having to sit all day and debug multi-threaded code. In either case, you have to understand what you are doing, but let's face it, multi-threading is actually very simple on it's own - it's the implementation, and how you use it to accomplish difficult things, that are exceedingly hard. I'm glad you think you can write a better thread pool than the maintainers of the Java programming language. You should join up at http://dev.java.net/, they can use you! (it's open source now through GPL, remember?)
Since version 5, the Java platform introduced the Concurrency Utilities, a threading framework which significantly reduces the complexity, and increases the performance, of a large number of threading-related tasks. Things like creating controlled pools of threads that concurrently use data structures used to be very complex to implement, but now I teach my students this in a day. This, coupled with Just-In-Time compilation (and the clever optimisation possibilities this provides), may see Java as the best platform to develop software with in a future filled with multi-core machines. We are a small, specialist software development/training/consulting house, and Java's performance has allowed us to do unbelievable things with it, yet never having to sacrifice sound design for the sake of "performance optimisation". Java 6, which builds on this stuff, and includes full hardware-accelerated GUI, will (I believe) make very, very responsive and powerful GUI applications possible, without having to lock into some OS-specific framework (or X). Watch that space.
This is so cool. So, according to wikipedia, this femto-pulso-pico-lasero-thing will turn ordinary metal bands into black metal bands?? http://en.wikipedia.org/wiki/Black_metal
Is it just me, or are most (freely viewable) pictures on that boobiethon site ugly ?
A recipe for disaster indeed! Then look at us in South Africa, where we have 11 (eleven!!) official languages. Of these, only Afrikaans and English can actually be formally treated as written languages. These rest are typical tribal languages with no history of literacy, intermixed with mangled English and Afrikaans words etc. But, with the post-apartheid government being almost completely composed of people whom can neither speak or write Afrikaans or English properly, they obviously thought it'd be a good idea to make eleven of them official. So, we are the only country in the world with a constitution written in so many official languages...
Not if this was in South Africa (or any African country, for that matter) and not if the airport enforces Affirmative action - which has brought the average worker skill down to shocking levels here in S.A.
Why? Because all our critical information is stored as XML in our CVS (soon to be SVN) repository. Not that it matters, because we belive all our employees should have access to everything (except salary information) but I very much doubt if this iPod hack, when plugged into my mac, will pull all our "critical" documents from our various Linux machines. So, once again, it's only the poor suckers running Windows. Nothign to see here, move along... I do agree with one poster, would be much more useful if it could "slurp" all music and multimedia files found on the network.
Mod parent up (Informative)! I am also a White South African male, and I experience the same problems every day. I am amazed the Europe and the U.S. is so oblivious to the racism and discrimination us white male South Africans face in the workplace.
I must, however, state that at least in the IT industry here in SA, it's not as bad as in most others. I consider myself highly skilled, we run a small training/consulting/development business (http://www.solms.co.za/ - yes, our website sucks) but I've found that, when there is a need for professional-level IT staff, there is such a shortage of skilled black workers that companies turn a "blind eye" to government regulations, and, for once, employ people based on their own merits.
However, for the most part, it's very difficult to get a job as a white afrikaner, if you're not in a very niche market.
Your assumptions, sir, are the only things wrong around with this thread... Did I mention XHTML 1.0 Strict? I use "XHTML" to refer to the standard as a whole, and specifically the componentisation vision. More specifically, XHTML 2.0. XHTML 1.0 was never meant to be perfect, but a great start towards getting the web to support better standards. XHTML 2.0, however (which is starting to gain marginal support in some browsers as we speak) does indeed remove all formatting tags. HTML 4.01 and XHTML (2.0, which you incorrectly presumed I was reffering to version 1.0) are thus, decidedly, not the same, "thank you, drive through."
Excuse ME? Does your stupid statement mean that you don't even know that there is no such thing as "HTML 4.01 Strict", and that XHTML Strict removes all visual formatting tags? XHTML only contains semantic / structural tags, and is not at all the same thing as HTML. And that is what I am getting at:
Just having information in XML is not enough, as XML is yet another mapping of some structure onto text. What is important, is the vocabulary - one wants to store information in a pure state, containing only the semantics - i.e. what it represents, not what it looks like.
Furthermore, you want to componentise your information (A depends on B, which depends on C and D) but another document (X) also depends on B, and the indirect dependencies need to be retained. Furthermore, as you improve B, all your material benefits.
And lastly, if we consider your XML/SGML statement, and remember that XML is also a subset of SGML (thereby making your statement irrelevant), we can rightly assume that you are a clueless MS Word user, with many levels of abstraction to traverse before you will probably even start to understand what I am getting at. Your helpful posts to other users regarding OpenOffice reflects this. Go play with your MS Paper Clip...
So, apart from mister office user here, does anybody else have experience in using componentised XML to store your documentation?
We have a saying here at our company (http://www.solms.co.za/ - "MS Word is the black hole of information". The same goes of OOo.
Once you take the time to type meticulously thought-out information into Word, it's no longer accessible to anything or anybody else out there, it's not re-usable, and you are tied to one rendering of said information.
Our approach is to store everything (and I mean *everything*, all documentation information) in a CVS repository of "knowledge components" using our own XML format (with a XML Schema, of course) that's a very strict subset of Docbook XML. Voila! Instant re-use of components (we also present courses, so if we have one set of knowledge on basic Java, that same bit is re-used in all courses, EJB, J2ME, etc). I can, for the life of me, not understand why anybody would want to put so much work into information to which a single rendering is so inextricably tied.
Granted, the XML tools are still pretty raw (and we had to write a lot of our own) but the beauty is, our "knowledge base" evolves like FOSS does, and in a way which a Word Doc can never dream to.
Who else is using XML to store "pure" information, rather than all this "word processor" stuff? And I am surprised that there isn't a stripped-down, standard XML format for this sort of thing out there. DocBook is waaayy too bloated, as HTML 4 is to XHTML strict. Speaking of which, XHTML 2, which may finally introduce containers (i.e. "sections") may be our saving grace.
Damn, I had to try
Had you used Java, you would not even had to have changed the slashes in your includes. Has anybody had a look at JSP2.0 and Servlets 2.4? Especially with the new (ok new new) XML syntax, and the expression language and Standard Tag Libraries, JSPs are far simpler yet more powerful than PHP pages. That is, of course, if you actually design your application, and don't place business logic in your pages. (A nasty habit that PHP coders seem to love doing).