Domain: 25hoursaday.com
Stories and comments across the archive that link to 25hoursaday.com.
Comments · 35
-
Re:employee improvement plan
2) Fire them. Hire somebody else that you hope will perform better.
This is what Amazon's stack ranking does.
Other companies that use HR policies like forced raking have similar creeping problems. Companies like Google and Yahoo use it even though it is a toxic idea from Microsoft. It's an HR policy so bad that Microsoft got rid of it after losing nearly a decade worth of productivity.
If you've never experienced it, the best description is somewhere between 'Hunger Games for IT' and 'Crony Capitalism applied to employee retention.' But it is a fabulous way to justify paying huge bonuses to the "top" 1% while firing people you don't like.
-
Re:Slashdot bias....
My intent wasn't to post something anti-Google, it's to show that people move all the time, and it's not particularly newsworthy. For example here's an article from a few years ago which showed some people moving from Google to Microsoft.
-
Re:Wait a minute:
The fact remains that Davlik does not run Java programs properly, it is intentionally incompatible.
Does it have to? Not at all. Dalvik is NOT Java. Not in the least, and Google has never claimed it is. Get the distinction?
The very reason why Java license only allows full implementations of the entire API, so this fragmentation would not happen.
So that means that if I do not want 'full implementation' of Java, I do not need to get a license...or do I? Please tell me. I agree with your assertion in the last sentence about fragmentation though.
Authors of C# never called it Java at all, though it borrows many bits and pieces from Java. Have a look for yourself.
Tell me: Should Oracle sue C# authors over these class names as well?
-
Re:ComSci is mostly about how to approach problems
My terminology is poor. Sorry. Try Object Oriented Database Management Systems OODBMS.
e.g.
http://www.25hoursaday.com/WhyArentYouUsingAnOODBMS.html
http://www.service-architecture.com/object-oriented-databases/
http://www.ozone-db.org/frames/home/what.htmlBasically you write a normal program and you say what data structures you wish to be persistent. (e.g. the object representing your addressbook in an email program for example). That's really all you have to do. The next time you run your program that data structure and it's children start off with the values that they had when your program last ran.
i.e. there is none of the garbage that you have to deal with when you try to convert some in-memory data structure to fit into tables.
Your in-memory structure simply persists.
There are "checkpoints" and issues with versions (i.e. how old data is converted when you update your classes) but it is all really the kind of stuff that you'd have to deal with in any other database.
IBM AS/400s have one of these and they have enduring popularity as midrange servers.
-
Re:Google doesn't need journaling?
From all the articles I've seen regarding the various Google product's modus operandi the "consumer grade" disks are used in only two cases, either...
1) To store the data closer to processing elements that needs it (BigTable? or MapReduce), in which case failure of a critical disk could be treaeted as a failed PE and the job re-queued on a different PE or set of PEs (i.e. non-latency sensitive work)
...or...2) In massive redundancy (GFS) for systems where "redoing" part of the job either isn't practical, relevant or applicable.
...you can make a reasonable bet that any "output" data sets such as BI/MIS reports or "end product" data sets are then shipped off and made available to whatever audience needs it via something a little more conventional like a SAN. Single, whole "input" data-sets are probably treated the same either kept on something boring and normal like a SAN or re-scanned/built/trawled if a subsection is lost from a set that is formed from a composite.Check out these...
http://www.25hoursaday.com/weblog/CommentView.aspx?guid=7D244266-E3AB-4636-985D-BEE5C0BFC485
http://labs.google.com/papers/bigtable.html -
Re:RIP
Donald Knuth (creative / scientific genius at least in my books) had some serious interest in HTML / CSS issues, and was quick to take W3C to task over messing with them.
http://www.25hoursaday.com/weblog/CommentView.aspx?guid=76608c5d-f71a-440e-be87-165fa8b6f2f0
-
Re:As to the last line of the post...
Yep, its the Raymond Chen camp v MSDN camp that's screwed things up. The Raymond camp lost out recently to the MSDN camp, and so everything is no a-changing in Microsoft. Perhaps its also something to do with Bill leaving, but MS care even less for their customers now, they're just a huge corporate out to screw as much money out of everyone as possible.
I find it easy to believe they've taken a fundamentally wrong approach. Hopefully it'll bite them and technology for the customer's benefit will get more prominence.
-
Re:interesting?
I do not speak for Google, but wanted to throw in a Googler's opinion. Here in Google Seattle (and Google Kirkland) we have tons of ex-Microsoft people. I was recently having a conversation with another Googler who has been here longer than me and we were musing about how neither of us knew of anyone who had gone the other way. Then this (non-)story breaks of one guy goes GOOG->MSFT, and my Googler friend sent me an email that said "well, now we know of someone who went in the opposite direction."
So whatever, one guy goes to Microsoft from Google Seattle when tons have gone the other way. But somehow this became a whole news cycle. One Microsofter called it "an exodus" (that's right, one guy plus anonymous unspecified other people is an "exodus"). I've tried to resist the urge to say anything, but come on. There is no exodus.
One thing to keep in mind is that Sergey Solyanik (the guy who started this whole news cycle) went back to Microsoft to be a Dev Manager. If what you want is to be a Dev Manager in the traditional sense (steering the course of a project top-down), I can see why you might leave Google -- management is totally different here. It's a very engineering-driven, bottom-up culture. Apparently that didn't work for Sergey. More power to him for recognizing that, and going to the place that works better for him.
But if you're an engineering-focused person like me, Google is a mind-blowingly awesome place to work.
To summarize: no, the tide is not turning on Google being an awesome place to work. Yes, Google is still awesome for people that fit its culture. No, there is not an "exodus." Yes, one guy left Google for Microsoft but many many people have gone the other direction. No, Google is not perfect. Yes, I do truly regret if a person has a bad experience interviewing here or if they get bad attitudes from anyone, but most of the people I know here are a pleasure to work with and very smart.
If I knew that my 21-year-old self was going to be reading this message, I would tell him: "yes, Google is exactly where you want to end up." I've worked at a couple of other places and had a good time, but Google is a perfect match for me.
(I'm not really interested in dignifying responses from bitter people who have a bone to pick with Google for whatever reason.)
-
Re:glassdoor.com
> (I didn't RTFA because of all the obnoxious ads).
Then why not check out the original post which is available at http://www.25hoursaday.com/weblog/2008/06/29/TheGOOGMSFTExodusWorkingAtGoogleVsWorkingAtMicrosoft.aspx
I'm not sure why
/. posted an advt ridden link, rather than posting the original link.. oh yeah, that would require folks to RTFA, and I'm not new here :-)1. Get permission to re-post an article with advts
2. post the advt ridden link on /.
3. ???
4. ProfitPlease do not mod me funny. I've just tried to consolidate the two responses that I'm most likely to get, into this post itself.
-
Re:Misreading
Oh, wow - this guy was my TA for CS2130 at Georgia Tech (his resume verifies that it's the same guy). He was the biggest ass-hat around, and single-handedly caused a lot of students to change majors that semester - they figured that if their future in the CS program was anything like dealing with that guy, it wasn't even worth it.
I didn't know he was the son of the Nigerian president, but I guess that helps explain it to an extent.
-
Re:Misreading
What makes it even funnier is that the son of the President of Nigeria, an overweight whiner named Dare Obasanjo, actualy works for Microsoft. Indeed, Billy boy consulted him before going to Nigeria to learn about the political climate there. (Nigeria is currently the most corrupt country in Africa).
Some background: Dare uses his father's political power as an excuse to act like an ass in the halls of the Borg - you may remember the amusing Flame War between him and Al Billings. (Al Billings is a whiner who can't get anything of value done (cf Netcaptor/Borgzilla/MSN Explorer), probably blames it on management, and unfortunately now does QA work at Firefox). Because he "isn't afraid to criticize" (ie shouts louder than everyone else) Dare Obasanjo has a reputation as being exactly the forward thinking kind of guy who might bring new revenue streams to Micro$oft, instead of what he actually is, a loudmouth frat boy type living off his father's name. -
Re:Misreading
What makes it even funnier is that the son of the President of Nigeria, an overweight whiner named Dare Obasanjo, actualy works for Microsoft. Indeed, Billy boy consulted him before going to Nigeria to learn about the political climate there. (Nigeria is currently the most corrupt country in Africa).
Some background: Dare uses his father's political power as an excuse to act like an ass in the halls of the Borg - you may remember the amusing Flame War between him and Al Billings. (Al Billings is a whiner who can't get anything of value done (cf Netcaptor/Borgzilla/MSN Explorer), probably blames it on management, and unfortunately now does QA work at Firefox). Because he "isn't afraid to criticize" (ie shouts louder than everyone else) Dare Obasanjo has a reputation as being exactly the forward thinking kind of guy who might bring new revenue streams to Micro$oft, instead of what he actually is, a loudmouth frat boy type living off his father's name. -
Re:Misreading
What makes it even funnier is that the son of the President of Nigeria, an overweight whiner named Dare Obasanjo, actualy works for Microsoft. Indeed, Billy boy consulted him before going to Nigeria to learn about the political climate there. (Nigeria is currently the most corrupt country in Africa).
Some background: Dare uses his father's political power as an excuse to act like an ass in the halls of the Borg - you may remember the amusing Flame War between him and Al Billings. (Al Billings is a whiner who can't get anything of value done (cf Netcaptor/Borgzilla/MSN Explorer), probably blames it on management, and unfortunately now does QA work at Firefox). Because he "isn't afraid to criticize" (ie shouts louder than everyone else) Dare Obasanjo has a reputation as being exactly the forward thinking kind of guy who might bring new revenue streams to Micro$oft, instead of what he actually is, a loudmouth frat boy type living off his father's name. -
Re:Whatever
"C# sucks, pure and simple. Java is a JOY compared to C#. And yeah, I program in C# at work 90% of the time. If Java would have made it here sooner they would have chosen that language for sure."
See how easy it is to spout off nonsense?
So, do you have anything concrete to say - something I could learn how right you are from? I'll give you some examples.
Here, I'll do some of your work for you. That's a comprehensive, balanced comparison of the language features.
Here and here are some measures by which you can measure the relative popularity of programming languages, the availability of jobs, etc.
Think about your career, man.
And, next time, at least link some MS marketing materials or something. -
Re:Welcome to the Real World
Microsoft developers state their opinions of MS products all the time. It's not always very flattering either. IMO Sony is being a prick about this.
-
Microsoft PM's details about all this...
Dare O, who is on a similar team within Microsoft, has blogged on some more details and, naturally, how much he likes 'Fremont' here... http://www.25hoursaday.com/weblog/PermaLink.aspx?
g uid=85351eb5-509b-4c27-ad0e-1195fa802ca7 -
Re:Search Technorati for '"river of news" email'
Another good read: "The Problem With RSS Readers Inspired By Outlook"
-
Hmmm
Microsoft Employees themselves are saying that open office formats (at least partially, or for old versions) are a good thing. Others are saying they want to quit soon. Note that this open revolt against their management is being spearheaded by the mysterious Mini-Microsoft.
Will these attitudes finally change MSFT from the bottom up, or just get these guys fired? I suspect the latter, but hey, we live in interesting times... -
A better way to include calendarsThere was a demonstration of extended RSS processing that the Microsoft IE team did regarding a calendar. Dare Obasanjo explains:
Now, being able to subscribe to an event calendar is very handy, but there is a much simpler way - using hCalendar and Brian Suda's x2v calendar parsing tool.
Dean then started to talk about the power of the enclosure element in RSS 2.0. What is great about it is that it enables one to syndicate all sorts of digital content. One can syndicate video, music, calendar events, contacts, photos and so on using RSS due to the flexibility of enclosures.
Amar then showed a demo using Outlook 2003 and an RSS feed of the Gnomedex schedule he had created. The RSS feed had an item for each event on the schedule and each item had an iCalendar file as an enclosure. Amar had written a 200 line C# program that subscribed to this feed then inserted the events into his Outlook calendar so he could overlay his personal schedule with the Gnomedex schedule. The point of this demo was to show that RSS isn't just for aggregators subscribing to blogs and news sites.
I adapted the conference calendar page, to add an "hevent" to each session ( with help from Ryan and his hCalendar creator).
Now you can subscribe to it directly using the x2v link. This is available today, not in a future release of IE, and you can easily add events to your blog or webpage this way for people to subscribe to. (from my blog) -
Re:AJAX memeFrom http://en.wikipedia.org/wiki/AJAX
There have been some critics of the term AJAX, claiming that the Adaptive Path consultancy who created it are using it as a marketing vehicle (and as a meme) for previously used techniques
It has been pointed out that the AJAX technologies did not have a common name before, and that some welcome a unifying term for the process. However it is also reported that the Google engineers who have created the most prominent applications using this technique consider their technologies as 'Javascript'
AJAX is not a new approach of building software. From a higher perspective the presentation layer is like a form and a programming layer behind handling the events, commonly known in programming terms as MVC. This kind of programming is very well known in older programming environments like Delphi, MFC, Visual Basic, Oracle ADF, and Windows Forms, just to name a few. Applications using this model of programming have been around for years: Microsoft Outlook Web Access using WebDAV and the Web based ERP system P2plus using web services directly from the browser. However, because there are no standards available for the communication model behind previous implementations, all use proprietary extensions.
A new aspect to AJAX is that there are now multiple browsers that can be used to realize this type of application, as opposed to earlier technologies which were frequently limited only to Microsoft's Internet Explorer.
-
Re:Convenient...Don't be so thick.
There are certain CS types who have a very abstract view of code and data. For them, data is data, however it's laid out, and therefore all formats are alike
Blah, blah, blah. Here is a run of text. An attribute of that run is that it is bold. This is basic stuff that was hashed out 20 years ago and hasn't changed a bit. There's nothing new to this data structure. The features of one format over another are in areas of size, writing speed, and random access.
Then there are those who've actually created sophisticated formats, and know that each format (even the XML ones) are born of thousands of tiny design decisions and tradeoffs until what you have is something that bestows a market benefit upon your product.
Once you decide to go compressed XML, you're locked into a linear format that decides many of those tradeoffs for you. If your argument was going to hold water, Microsoft wouldn't take that path. But they have, despite any issues with the XML format. I sincerely doubt you'll see any "Oh wow! That's brilliant!" type of things in their XML. Unless, that is, it can't be parsed with a normal parser. (Which would immediately show that Microsoft's format *isn't* an open standard.)
You asked for features: here are two. High end analytics (logical future path for Excel).
Which has zip to do with the file format. Although a *binary* format may prove to be more efficient for retrieving and saving data in such a program. (Much like existing Office Documents and PDF structures.)
Unstructured storage (logical extension for anything Office related, esp if WinFS finally ships).
Which can't be achieved with XML, an inherently structured data format.
Is this so farfetched? Are there existing products that use their proprietary format to an advantage?
The only thing far-fetched is your inability to understand that Microsoft is moving to an XML format, not another binary format.
I thought the whole point about this is that DOCX and friends are freely licensed? There's nothing now to stop someone from writing an OO plugin that reads and writes DOCX.
Try again. Need I remind you of the still unfinished WordML spec:Microsoft Corp. also uses XML in its most recent Microsoft Office formats. While it has opened these formats to some extent, Microsoft's XML formats are still proprietary and it has tried to patent some of its XML format technology. Microsoft also charges royalties for accessing its formats.
So far we have the word of a few bloggers that these will truely be royalty free. That doesn't necessarily mean that it can be used in *any* project. Remember, some things are "look but don't touch".
I can almost picture you there: the hobby coder for whom the world revolves around glacially moving mailing lists and IRC channels.
You, sir, are a very poor judge of character and experience. Let me put it this way: Once upon a time I thought Microsoft was the best company on the planet. I actually argued against my peers that Microsoft was not a bad company. Then I began to learn more about software engineering and the other OSes that Microsoft stamped out. Didn't take very long before I'd managed to trace most of the history of Microsoft's "innovation". In order:
- Microsoft BASIC was nothing more than a quick port of an existing BASIC language written by others.
- DOS was a cheap CP/M knockoff that Microsoft purchased.
- Windows was marketing hype designed to keep people from buying VisiOn.
- Word, Excel, and other office programs were purchased from other companies.
- COM was a Unix technology that Microsoft bought out and retasked for Windows.
- NT was the next generation VMS kernel (that Microso -
This totally fits with Google's recent hires...
Back in July Dare Obasanjo noted on one of his blog posts that Google was hiring a bunch of people from the IE browser team and couple of Java guys from Sun.
-
Re:Non-standard "feed://" URLs?
Actually, no. If you click a link to a feed (starting with http) Safari does the "right thing." That is, it displays it with its feed format. It actually makes all of those little orange RSS buttons useful. In addition, "feed" is not an invented URI scheme. See here.
-
Re:download.com?
.NET's C# is more or less a dead ringer for Java. If you know Java, you can pick up C# in a few hours
Maybe what it'll take for me is the actual IDE. At this time I only have a few C# and .NET books on loan and the SDK+compiler set I mentioned earlier. Having spent a few moments examining sample code, C# and VB# look a lot like Java, so I admit it was refreshing, and I am very tempted to drop C and Java altogether in favor of C#. The following articles made some good points:
A Comparison of Microsoft's C# Programming Language to Sun Microsystems' Java Programming Language By Dare Obasanjo
and
A Comparative Overview of C#
At the moment though I'm still struggling to find a good free alternative to VC++ 6.0 that meets my needs. I had hoped the .NET 1.1 SDK would contain all I would need to write Windows apps using C/C++, but I don't even know how to go about writing a regular C/C++ app using the tools. Where's the C++ compiler???
GCC and the others may not be an option for me. I want to write Windows and DOS/console apps in straight API. My SO does need to program and wants to be able to write DirectX/DirectShow apps, also using just the API. Everything I have read has indicated that in order to write DirectX/DirectShow apps, I will need to buy VC++, and it looks like I need to buy v6.0 and not this new .NET stuff being sold in stores. From what I've read, the other compiler suites don't come with the SDKs I will need. I know I can download the DirectX 9.0 and the DirectMedia 6.0 SDK, but I don't know how to link them into a new compiler, and supposedly, some of the language in the SDKs are poorly formatted with syntax errors that will kill other compilers.
Of course, if any of you guys out there know otherwise, I'd love to hear about. My dream is to be able to get the Borland TurboVision IDE from Turbo C++ DOS to run on top of GCC and compiling Windows and DirectShow apps. :) -
Much better review
A Comparative Overview of C# [genamics.com] is blatant astroturfing from C# book author. The genamics.com review is riddled with problems, the author has ignored constructive feedback on the article, has a poor appreciation of OO and is inconsistency in his comparison. He also has a history of Atroturfing the forums.java.sun.com in support of C#.
IMHO this is a much higher quality comparative review.
-
The Canonical C# for Java Developers ArticleThe article C# From a Java Developer's Perspective which appeared on Slashdot last year.
Mirrors: Translations: -
Wow! Slashdotted Already?
This article explores the ins and outs of XML namespaces and their ramifications on a number of XML technologies that support namespaces. What follows is a shortened version of my first Extreme XML column.
Overview of XML NamespacesAs XML usage on the Internet became more widespread, the benefits of being able to create markup vocabularies that could be combined and reused similarly to how software modules are combined and reused became increasingly important. If a well defined markup vocabulary for describing coin collections, program configuration files, or fast food restaurant menus already existed, then reusing it made more sense than designing one from scratch. Combining multiple existing vocabularies to create new vocabularies whose whole was greater than the sum of its parts also became a feature that users of XML began to require.
However, the likelihood of identical markup, specifically XML elements and attributes, from different vocabularies with different semantics ending up in the same document became a problem. The very extensibility of XML and the fact that its usage had already become widespread across the Internet precluded simply specifying reserved elements or attribute names as the solution to this problem.
The goal of the W3C XML namespaces recommendation was to create a mechanism in which elements and attributes within an XML document that were from different markup vocabularies could be unambiguously identified and combined without processing problems ensuing. The XML namespaces recommendation provided a method for partitioning various items within an XML document based on processing requirements without placing undue restrictions on how these items should be named. For instance, elements named <template>, <output>, and <stylesheet> can occur in an XSLT stylesheet without there being ambiguity as to whether they are transformation directives or potential output of the transformation.
An XML namespace is a collection of names, identified by a Uniform Resource Identifier (URI) reference, which are used in XML documents as element and attribute names.
Namespace DeclarationsA namespace declaration is typically used to map a namespace URI to a specific prefix. The scope of the prefix-namespace mapping is that of the element that the namespace declaration occurs on as well as all its children. An attribute declaration that begins with the prefix xmlns: is a namespace declaration. The value of such an attribute declaration should be a namespace URI which is the namespace name.
Here is an example of an XML document where the root element contains a namespace declaration that maps the prefix bk to the namespace name urn:xmlns:25hoursaday-com:bookstore and its child element contains an inventory element that contains a namespace declaration that maps the prefix inv to the namespace name urn:xmlns:25hoursaday-com:inventory-tracking.
<bk:bookstore xmlns:bk="urn:xmlns:25hoursaday-com:bookstore">
<bk:book>
<bk:title>Lord of the Rings</bk:title>
<bk:author>J.R.R. Tolkien</bk:author>
<inv:inventory status="in-stock" isbn="0345340426"
xmlns:inv="urn:xmlns:25hoursaday-com:inventory-tra cking" />
</bk:book>
</bk:bookstore>
In the above example, the scope of the namespace declaration for the urn:xmlns:25hoursaday-com:bookstore namespace name is the entire bk:bookstore element, while that of the urn:xmlns:25hoursaday-com:inventory-tracking is the inv:inventory element. Namespace aware processors can process items from both namespaces independently of each other, which leads to the ability to do multi-layered processing of XML documents. For instance, RDDL documents are valid XHTML documents that can be rendered by a Web browser but also contain information using elements from the http://www.rddl.org namespace that can be used to locate machine readable resources about the members of an XML namespace.
It should be noted that by definition the prefix xml is bound to the XML namespace name and this special namespace is automatically predeclared with document scope in every well-formed XML document.
Default NamespacesThe previous section on namespace declarations is not entirely complete because it leaves out default namespaces. A default namespace declaration is an attribute declaration that has the name xmlns and its value is the namespace URI that is the namespace name.
A default namespace declaration specifies that every unprefixed element name in its scope be from the declaring namespace. Below is the bookstore example utilizing a default namespace instead of a prefix-namespace mapping.
<bookstore xmlns="urn:xmlns:25hoursaday-com:bookstore">
<book>
<title>Lord of the Rings</bk:title>
<author>J.R.R. Tolkien</bk:author>
<inv:inventory status="in-stock" isbn="0345340426"
xmlns:inv="urn:xmlns:25hoursaday-com:inventory-tra cking" />
</book>
</bookstore>
All the elements in the above example except for the inv:inventory element belong to the urn:xmlns:25hoursaday-com:bookstore namespace. The primary purpose of default namespaces is to reduce the verbosity of XML documents that utilize namespaces. However, using default namespaces instead of utilizing explicitly mapped prefixes for element names can be confusing because it is not obvious that the elements in the document are namespace scoped.
Also, unlike regular namespace declarations, default namespace declarations can be undeclared by setting the value of the xmlns attribute to the empty string. Undeclaring default namespace declarations is a practice that should be avoided because it may lead to a document that has unprefixed names that belong to a namespace in one part of the document, but don't in another. For example, in the document below only the bookstore element is from the urn:xmlns:25hoursaday-com:bookstore while the other unprefixed elements have no namespace name.
<bookstore xmlns="urn:xmlns:25hoursaday-com:bookstore">
<book xmlns="">
<title>Lord of the Rings</bk:title>
<author>J.R.R. Tolkien</bk:author>
<inv:inventory status="in-stock" isbn="0345340426"
xmlns:inv="urn:xmlns:25hoursaday-com:inventory-tra cking" />
</book>
</bookstore>
This practice should be avoided because it leads to extremely confusing situations for readers of the XML document. For more information on undeclaring namespace declarations, see the section on Namespaces Future.
Qualified and Expanded NamesA qualified name, also known as a QName, is an XML name called the local name optionally preceded by another XML name called the prefix and a colon (':') character. The XML names used as the prefix and the local name must match the NCName production, which means that they must not contain a colon character. The prefix of a qualified name must have been mapped to a namespace URI through an in-scope namespace declaration mapping the prefix to the namespace URI. A qualified name can be used as either an attribute or element name.
Although QNames are important mnemonic guides to determining what namespace the elements and attributes within a document are derived from, they are rarely important to XML aware processors. For example, the following three XML documents would be treated identically by a range of XML technologies including, of course, XML schema validators.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:complexType id="123" name="fooType"/>
</xs:schema>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:complexType id="123" name="fooType"/>
</xsd:schema>
<schema xmlns="http://www.w3.org/2001/XMLSchema">
<complexType id="123" name="fooType"/>
</schema>
The W3C XML Path Language recommendation describes an expanded name as a pair consisting of a namespace name and a local name. A universal name is an alternate term coined by James Clark to describe the same concept. A universal name consists of a namespace name in curly braces and a local name. Namespaces tend to make more sense to people when viewed through the lens of universal names. Here are the three XML documents from the previous example with the QNames replaced by universal names. Note that the syntax below is not valid XML syntax.
<{http://www.w3.org/2001/XMLSchema}schema>&n bsp;
<{http://www.w3.org/2001/XMLSchema}complexType id="123" name="fooType"/>
</{http://www.w3.org/2001/XMLSchema}schema>
<{http://www.w3.org/2001/XMLSchema}schema>&n bsp;
<{http://www.w3.org/2001/XMLSchema}complexType id="123" name="fooType"/>
</{http://www.w3.org/2001/XMLSchema}schema>
<{http://www.w3.org/2001/XMLSchema}schema>&n bsp;
<{http://www.w3.org/2001/XMLSchema}complexType id="123" name="fooType"/>
</{http://www.w3.org/2001/XMLSchema}schema>
To many XML applications, the universal name of the elements and attributes in an XML document are what is important, and not the values of the prefixes used in specific QNames. The primary reason the Namespaces in XML recommendation does not take the expanded name approach to specifying namespaces is due to its verbosity. Instead, prefix mappings and default namespaces are provided to save us all from developing carpal tunnel syndrome from typing namespace URIs endlessly.
Namespaces and AttributesNamespace declarations do not apply to attributes unless the attribute's name is prefixed. In the XML document shown below the title attribute belongs to the bk:book element and has no namespace while the bk:title attribute has urn:xmlns:25hoursaday-com:bookstore as its namespace name. Note that even though both attributes have the same local name the document is well formed.
<bk:bookstore xmlns:bk="urn:xmlns:25hoursaday-com:bookstore">
<bk:book title="Lord of the Rings, Book 3" bk:title="Return of the King"/>
</bk:bookstore>
In the following example, the title attribute still has no namespace and belongs the book element even though there is a default namespace specified. In other words, attributes cannot inherit the default namespace.
<bookstore xmlns="urn:xmlns:25hoursaday-com:bookstore">
<book title="Lord of the Rings, Book 3" />
</bookstore>
Namespace URIsA namespace name is a Uniform Resource Identifier (URI) as specified in RFC 2396. A URI is either a Uniform Resource Locators (URLs) or a Uniform Resource Names (URNs). URLs are used to specify the location of resources on the Internet, while URNs are supposed to be persistent, location-independent identifiers for information resources. Namespace names are considered to be identical only if they are the same character for character (case-sensitive). The primary justification for using URIs as namespace names is that they already provide a mechanism for specifying globally unique identities.
The XML namespaces recommendation states that namespace names are only to act as unique identifiers and do not have to actually identify network retrievable resources. This has led to much confusion amongst authors and users of XML documents, especially since the usage of HTTP based URLs as namespace names has grown in popularity. Because many applications convert such URIs to hyperlinks, it is irritating to many users that these "links" do not lead to Web pages or other network retrievable resource. I remember one user who likened it to being given a fake phone number in a social situation.
One solution to avoid confusing users is to use a namespace-naming schema that does not imply network retrievability of the resource. I personally use the urn:xmlns: scheme for this purpose and create namespace names similar to urn:xmlns:25hoursaday-com when authoring XML documents for personal use. The problem with homegrown namespace URIs is that they may run counter to the intent of the Names in XML recommendation by not being globally unique. I get around the globally unique requirement by using my personal domain name http://www.25hoursaday.com as part of the namespace URI.
Another solution is to leave a network retrievable resource at the URI that is the namespace name, such as is done with the XSLT and RDDL namespaces. Typically, such URIs are actually HTTP URLs. A good way to name such URLs is by using the format favored by the W3C, which is as follows:
http://my.domain.example.org/product/[year/month][ / rea]
See the section on Namespaces and Versioning for more information on using similarly structured namespace names as a versioning mechanism.
DOM, XPath, and the XML Information Set on NamespacesThe W3C has defined a number of technologies that provide a data model for XML documents. These data models are generally in agreement, but sometimes differ in how they treat various edge cases due to historic reasons. Treatment of XML namespaces and namespace declarations is an example of an edge case that is treated differently in the three primary data models that exist as W3C recommendations. The three data models are the XPath data model, the Document Object Model (DOM), and the XML information set.
The XML information set (XML infoset) is an abstract description of the data in an XML document and can be considered to be the primary data model for an XML document. The XPath data model is a tree-based model that is traversed when querying an XML document and is similar to the XML information set. The DOM precedes both data models but is also similar to both data models in a number of ways. Both the DOM and the XPath data model can be considered to be interpretations of the XML infoset.
Namespaces in the Document Object Model (DOM)The XML namespace section of the DOM Level 3 specification considers namespace declarations to be regular attribute nodes that have http://www.w3.org/2000/xmlns/ as their namespace name and xmlns as their prefix or qualified name.
Elements and attributes in the DOM have a namespace name that cannot be altered after they have been created regardless of whether their location within the document changes or not.
Namespaces in the XPath Data ModelThe W3C XPath recommendation does not consider namespace declarations to be attribute nodes and does not provide access to them in that capacity. Instead, in XPath every element in an XML document has a number of namespace nodes that can be retrieved using the XPath namespace navigation axis.
Each element in the document has a unique set of namespace nodes for each namespace declaration in scope for that particular element. Namespace nodes are unique to each element in that namespace. Thus namespace nodes for two different elements that represent the same namespace declaration are not identical.
Namespaces in the XML Information SetThe XML infoset recommendation considers namespace declarations to be attribute information items.
In addition, similar to the XPath data model, each element information item in an XML document's information set has a namespace information item for each namespace that is in scope for the element.
XPath, XSLT and NamespacesThe W3C XML Path Language also known as XPath is used to address parts of an XML document and is used in a number of W3C XML technologies including XSLT, XPointer, XML Schema, and DOM Level 3. XPath uses a hierarchical addressing mechanism similar to that used in file systems and URLs to retrieve pieces of an XML document. XPath supports rudimentary manipulation of strings, numbers, and Booleans.
XPath and NamespacesThe XPath data model treats an XML document as a tree of nodes, such as element, attribute, and text nodes, where the name of each node is a combination of its local name and its namespace name (that is, its universal or expanded name).
For element and attribute nodes without namespaces, performing XPath queries is fairly straightforward. The following program, which can be used to query XML documents using the command line, shall be used to demonstrate the impact of namespaces on XPath queries.
using System.Xml.XPath;
using System.Xml;
using System;
using System.IO;
class XPathQuery{
public static string PrintError(Exception e, string errStr){
if(e == null)
return errStr;
else
return PrintError(e.InnerException, errStr + e.Message );
}
public static void Main(string[] args){
if((args.Length == 0) || (args.Length % 2)!= 0){
Console.WriteLine("Usage: xpathquery source query <zero or more
prefix and namespace pairs>");
return;
}
try{
//Load the file.
XmlDocument doc = new XmlDocument();
doc.Load(args[0]); //create prefix<->namespace mappings (if any)
XmlNamespaceManager nsMgr = new XmlNamespaceManager(doc.NameTable);
for(int i=2; i < args.Length; i+= 2)
nsMgr.AddNamespace(args[i], args[i + 1]); //Query the document
XmlNodeList nodes = doc.SelectNodes(args[1], nsMgr); //print output
foreach(XmlNode node in nodes)
Console.WriteLine(node.OuterXml + "\n\n");
}catch(XmlException xmle){
Console.WriteLine("ERROR: XML Parse error occured because " +
PrintError(xmle, null));
}catch(FileNotFoundException fnfe){
Console.WriteLine("ERROR: " + PrintError(fnfe, null));
}catch(XPathException xpath){
Console.WriteLine("ERROR: The following error occured while querying
the document: "
&n bsp; + PrintError(xpath, null));
}catch(Exception e){
Console.WriteLine("UNEXPECTED ERROR" + PrintError(e, null));
}
}
}
Given the following XML document that does not declare any namespaces, queries are fairly straightforward as seen in the examples following the code.
<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
<book genre="autobiography">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<book genre="novel">
<title>The Confidence Man</title>
<author>
<first-name>Herman</first-name>
<last-name>Melville</last-name>
</author>
<price>11.99</price>
</book>
</bookstore>
Example 1xpathquery.exe bookstore.xml
/bookstore/book/titleSelects all the title elements that are children of the book element whose parent is the bookstore element, which returns:
<title>The Autobiography of Benjamin Franklin</title>
<title>The Confidence Man</title>xpathquery.exe bookstore.xml
//@genreSelect all the genre attributes in the document and returns:
genre="autobiography"
genre="novel"xpathquery.exe bookstore.xml
//title[(../author/first-name = 'Herman')]Selects all the titles where the author's first name is "Herman" and returns:
<title>The Confidence Man</title>
However, once namespaces are added to the mix, things are no longer as simple. The file below is identical to the original file except for the addition of namespaces and one attribute to one of the book elements.
<bookstore xmlns="urn:xmlns:25hoursaday-com:bookstore">
<book genre="autobiography">
<title>The Autobiography of Benjamin Franklin</title>
<author>
<first-name>Benjamin</first-name>
<last-name>Franklin</last-name>
</author>
<price>8.99</price>
</book>
<bk:book genre="novel" bk:genre="fiction"
xmlns:bk="urn:xmlns:25hoursaday-com:bookstore">
<bk:title>The Confidence Man</bk:title>
<bk:author>
<bk:first-name>Herman</bk:first-name>
<bk:last-name>Melville</bk:last-name>
</bk:author>
<bk:price>11.99</bk:price>
</bk:book>
</bookstore>
Note that the default namespace is in scope for the whole XML document, while the namespace declaration that maps the prefix bk to the namespace name urn:xmlns:25hoursaday-com:bookstore is in scope for the second book element only. Example 2
xpathquery.exe bookstore.xml
/bookstore/book/title
Selects all the title elements that are children of the book element whose parent is the bookstore element, which returns NO RESULTS.
xpathquery.exe bookstore.xml
//@genreSelects all the genre attributes in the document and returns:
genre="autobiography"
genre="novel"
xpathquery.exe bookstore.xml
//title[(../author/first-name = 'Herman')]Selects all the titles where the author's first name is "Herman," which returns NO RESULTS.
The first query returns no results because unprefixed names in an XPath query apply to elements or attributes with no namespace. There are no bookstore, book, or title elements in the target document that have no namespace. The second query returns all attribute nodes that have no namespace. Although namespace declarations are in scope for both attribute nodes returned by the query, they have no namespace because namespace declarations do not apply to attributes with unprefixed names. The third query returns no results for the same reasons the first query returns no results.
The way to perform namespace-aware XPath queries is to provide a prefix to namespace mapping to the XPath engine, then use those prefixes in the query. The prefixes provided do not need to be the same as the namespace to prefix mappings in the target document, and they must be non-empty prefixes. Example 3
xpathquery.exe bookstore.xml
/b:bookstore/b:book/b:title b urn:xmlns:25hoursaday-com:bookstoreSelect all the title elements that are children of the book element whose parent is the bookstore element and returns the following:
<title xmlns="urn:xmlns:25hoursaday-com:bookstore">The Autobiography of Benjamin Franklin</title>
<bk:title xmlns:bk="urn:xmlns:25hoursaday-com:bookstore"> The Confidence Man</bk:title>xpathquery.exe bookstore.xml
//@b:genre b urn:xmlns:25hoursaday-com:bookstoreSelects all the genre attributes from the "urn:xmlns:25hoursaday-com:bookstore" namespace in the document that returns:
bk:genre="fiction"xpathquery.exe bookstore.xml
//bk:title[(../bk:author/bk:first-na me = 'Herman')] bk urn:xmlns:25hoursaday-com:bookstore
Selects all the titles where the author's first name is "Herman" and returns:
<bk:title xmlns:bk="urn:xmlns:25hoursaday-com:bookstore"> The Confidence Man</bk:title>
Note This last example is the same as the previous examples but rewritten to be namespace aware.
For more information on using XPath, read Aaron Skonnard's article Addressing Infosets with XPath and view the examples at the ZVON.org XPath tutorial.
XSLT and NamespacesThe W3C XSL transformations (XSLT) recommendation describes an XML-based language for transforming XML documents into other XML documents. XSLT transformations, also known as XML style sheets, utilize patterns (XPath) to match aspects of the target document. Upon matching nodes in the target document, templates that specify the output of a successful match can be instantiated and used to transform the document.
Support for namespaces is tightly integrated into XSLT, especially since XPath is used for matching nodes in the source document. Using namespaces in your XPath expressions inside XSLT is much easier than using the DOM.
The example that follows contains:
A program for use in executing transforms from the command line.
An XSLT stylesheet that prints all the title elements from the urn:xmlns:25hoursaday-com:bookstore namespace in the source XML document when run against the bookstore document from the urn:xmlns:25hoursaday-com:bookstore namespace.
The resulting output. Program Imports System.Xml.Xsl
-
We tried that, people bitched and it sucked
So, for example, 45% of the grade could be the final, 10% for participation/attendance, and 45% for a project written by the student alone in a restricted environment (e.g., a proctored computer lab). Problem solved.
I used to attend Georgia Tech and was a TA for what is widely considered the "weed-out" class in the Computer Science curriculum.
When I took the class as a sophomore we had to implement a reasonable facsimile of GNU make as well as a Lisp to C interpreter in a two week period for about 20% or 30% of our grade. I finished the make project but only did about 80% of the Lisp to C interpreter. However, the knowledge I gained in doing so has helped me all through my programming experience since then. Now I write parsers for fun
However, due to a massive amount of cheating that went largely unreported the powers that be decided to convert the class to the format that you suggested. Programming assignments were primarily optional homework assignments that contributed little to the overall grade.
What ended up happening is that students left the class with little over basic programming experience (a 2 hour coding quiz does not a l337 h4x0r make) and many people failed the class by simply not doing well on a single test. Considering that test taking is in many cases and excercise in rote memorization, I have significant problems with making it worth anything over 50% of a students grade.
Eventually, I believe someone realized that it was better to let many people cheat and turn out a few decent students than curb cheating via proctored exams but turn out primarily half-baked students even among does that didn't cheat.
PS: The class I am talking about isn't the one that has been getting in the news. GA Tech will probably never run CheatFinder on that class' students (or those in higher classes) because the cheating ratio may be even higher than what is being reported in the Freshman classes. -
We tried that, people bitched and it sucked
So, for example, 45% of the grade could be the final, 10% for participation/attendance, and 45% for a project written by the student alone in a restricted environment (e.g., a proctored computer lab). Problem solved.
I used to attend Georgia Tech and was a TA for what is widely considered the "weed-out" class in the Computer Science curriculum.
When I took the class as a sophomore we had to implement a reasonable facsimile of GNU make as well as a Lisp to C interpreter in a two week period for about 20% or 30% of our grade. I finished the make project but only did about 80% of the Lisp to C interpreter. However, the knowledge I gained in doing so has helped me all through my programming experience since then. Now I write parsers for fun
However, due to a massive amount of cheating that went largely unreported the powers that be decided to convert the class to the format that you suggested. Programming assignments were primarily optional homework assignments that contributed little to the overall grade.
What ended up happening is that students left the class with little over basic programming experience (a 2 hour coding quiz does not a l337 h4x0r make) and many people failed the class by simply not doing well on a single test. Considering that test taking is in many cases and excercise in rote memorization, I have significant problems with making it worth anything over 50% of a students grade.
Eventually, I believe someone realized that it was better to let many people cheat and turn out a few decent students than curb cheating via proctored exams but turn out primarily half-baked students even among does that didn't cheat.
PS: The class I am talking about isn't the one that has been getting in the news. GA Tech will probably never run CheatFinder on that class' students (or those in higher classes) because the cheating ratio may be even higher than what is being reported in the Freshman classes. -
AHA!!!
So you are the one responsible for this!!Hey guys! Lets
/. him!!For great justice!!
Err.. Now I need some sleep...
:-P -
I'm currently working on a paper about this...
Hi,
I wrote a paper on native XML databases and SQL databases that support XML that appeared on Slashdot a little while ago. While doing research for that paper I asked myself the same question, whether instead of coming up with hybrid methods to store relational and hierarchical data we should store XML in already existing hierarchical databases. Unfortunately things are not so clear cut.
First of all, a lot of data out there is relational and people aren't ready or willing to transition all that data to XML based storage so mixing of relational and XML data will probably be with us for a while. The biggest problem with object oriented databases is that they didn't understand this fundamental issue but it seems that with XMKL databases the vendors understand that hybrid data will be with us for quite a while which is why Tamino supports importing data from relational sources and even ships with a SQL engine.
Secondly, XML documents have a lot of metadata beyond the hierarchical parent-child relationships such as processing instructions, comments and entities which are require more intelligence in the support from the database than just storing parent-child relationships.
Finally all the major [commercial] relational database vendors have included some sort of native suppport for XML including XML types and there is a an ANSI standard in the works for combining XML and SQL. From what I've seen, none of the hierarchical databases plan to support XML as much as the relational databases have or plan to.
Now if you were simply asking whether a native XML database can be built on top of a hierarchical database then I believe the answer is yes. Then again native XML databases can and have been built on object oriented databases and relational databses so it makes sense that they can be implemented in a database system that is more suited to handling hierarchical data. -
Re:Does anyone read the articles?
Check out this resume, and notice who he currently works for... . Let's get him!
;) Just kidding, it's good to have you on board, and maybe if we're nice we can bring you over to the light side. In the mean time, I'd like to ask you a few questions about Bill Gates... I also liked your comment about the chipset. -
Slashdot To Refuse To Read All Submissions
Slashdot To Refuse To Read All Submissions [ SlashdotPosted by Macos on Tue November 21, 13:44
from the turn-on-red-alerts dept.
Carnage4Life writes: "This ZDNet article describes how Slashdot next generation scripts, condemned Slashcode, will begin a tradition started by CmdrTaco where stories that have not been written by anyone of /.'s friends are ignored. Currently Slashdot merely issues a warning when a fact based story is received, the Slashdot vision is to expand this to include all stories with a hint of truth in them.
On the surface, this may seem like a good idea until one realizes that this means that it is conceivable that all stories that expect to appear on Slashdot will have to be Roblimo certified or risk being ignored or even worse refused to publish. As the ZDNet article speculates, this will put even more power over Slashdot readers developers in the hands of Slashdot. "
This story has been turning up a bit over the last few days - while I'm not one to buy into conspiracy theories, this whole thing seems like a plan that originally had good intentions, but the potentials for foul play are pretty easy to think up, and I've been ignoring it. -
Re:What's the frequency?
You're probably an MSCE aren't you?
Java is an amazingly easy language and has great in support with the online API and the online tutorial that explain every aspect of the language. Last fall, I had no prior knowledge of Java and was an intermediate C++ programmer. With the above links as my primary guides I am now an excellent Java developer.
In fact, at the start of my spring break I wanted to create an online survey with the data stored in an Oracle database. With no prior knowledge of JDBC or servlets I created my survey within 3 days (most of which was spent configuring, java web servlet engines & battling the fact that Oracle doesn't support jdk 1.2).
My point is this, languages change and mature all the time. C today is not C of 20 years ago. C++ has changed enough in the last decade that a large number of developers in industry are mystified by several aspects of the language (STL? exception handling? namespaces?). Java is a mere 5 years old and to believe the language will not evolve further before stabilizing is wishful thinking. But at least in Java's case clicking a few webpages on Sun's webpage bring you up to speed rapidly.
PS: The MSCE crack is not a flame but a genuine question. I have noticed that MSCE's unlike computer science majors believe that once one learns something that's all they have to know. I guess it comes from getting certification after taking a few exams while CS majors usually use several languages in school and also since they spend 4 years in school usually see how languages change/mature before they get into the real world.
PPS: You actually have Swing as an item in your resume? Interesting.
-
Netscape 6 Screenshot
I suppose it depends entirely on what the individual considers to be important functionality. If you're talking of items normally found on the browser window which have been removed, well how many times did you click on that Shopping button?
Here's a screenshot(bitmap) of Netscape 6 for windows. You will notice that besides being jam packed with options everywhere for every bit of frivolousness AOL can throw at you several key browser features are gone or in hiding. E.g. the home button is reduced to a line of text in the midst of other lines of text, there's no print button, it jars with the rest of the OS by looking like a glorified Java app, and no visual indicator to show if a site is secure or not. These are things I spotted after using the browser for an hour or so. After a while it got so irritating I switched back to Netscape 4.72 & IE 5.5.
My point is and has been that the user interface is badly designed and instead of focusing on skins and themes and whatnot, the Netscape team is should be redesigning the user interface to make it as usable as possible. Change is good but if it comes at the price of sacrificing a usable piece of software then one must wonder if it is worth it.