Slashdot Mirror


Worst Bug or Shortcomings in a Standard?

Alastair asks: "Just curious what the Slashdot crowd thinks are the worst bugs ever to creep into a standard? For mine, the various security vulnerabilities in WEP would make the grade. Also perhaps the lack of a protocol field in HDLC, and which most implementations added in a non-compatible way. I'm thinking here about bugs which result in partial or total irrelevance of the standard itself, as opposed to just a lack of interest in adopting it."

42 of 270 comments (clear)

  1. SMTP has no sender authentication. by OneDeeTenTee · · Score: 5, Interesting

    'Nuff said.

    --
    Stop the world; I need to get off.
    1. Re:SMTP has no sender authentication. by Homology · · Score: 3, Interesting
      'Nuff said.

      Not really. SMTP was designed a long time ago where there was little need for sender authentication. At that time the "Internet" (ARPAnet) was much smaller and friendlier than todays predatory Internet. Few at that time could imagine what Internat has become today. No need to blame those designers for lack of sender authentication.

      Now, the design of WEP is an entirely different matter. It was very well known that a design process of a new encryption protocoll should be public, but the designers decided to do this in secret. This was a bad decision going agains best practices.

    2. Re:SMTP has no sender authentication. by squiggleslash · · Score: 3, Interesting
      Why should it have had?

      SMTP is merely a transport system. Authentication, if wanted, was supposed to be part of the bodies of email messages according to whatever standard a user wanted.

      SMTP's lack of sender authentication is a modern-day fetish of the anti-spam crowd, and that anti-spam crowd only wants it because back when ISPs were deciding between giving users dedicated IP addresses or dynamically providing them, a debate that raged in the mid-nineties, they ended up going for the relatively anonymous dynamic IP addresses for the most part, which meant it became impossible to track email back to its original sender. Everything we've seen since with the explosion in spam and the more and more extreme methods of dealing with it really goes back to the fact that we no longer can associate an abusive user with an IP address.

      SMTP was designed at a time when the entire internet was peer to peer. In the process of turning it into a consumer product, many decisions have been made that while understandable (dynamic IP was seen as easier to maintain, roaming became seamless and efficient) nonetheless sat uneasily with how the Internet had been built thus far.

      --
      You are not alone. This is not normal. None of this is normal.
    3. Re:SMTP has no sender authentication. by squiggleslash · · Score: 3, Informative
      Who certifies that your authentication is authentic? ICANN, Verisign, Network Solutions, .. Microsoft?
      Depends. That's up to you. Back in the mid-nineties, there were various proposals and I think the major issue was the politics surrounding encryption (an indirect issue, but PGP was both an authentication system and encryption system) and the RSA patent more than disagreement on how it could work. PGP in particular used a pretty reasonable system that allowed you to create what boiled down to trusted networks. You'd certify your friends. Friends could certify each other. Get a key, see it's signed by people you know, and you can be pretty sure it's genuine.

      It was a nice system but network and real politics really ensured it didn't take off. You had patents. You had paranoid government agencies enforcing export controls on encryption protocols. You had commercial enterprises making email clients who didn't want to enter that particular can of worms if they could get away with it.

      The idea that the "anti-spam crowd" is a unified body is .. interesting. I'm sure that that being told that an idea was discussed years ago and rejected might be annoying, but have you really looked at the various trade-offs that were discussed then?
      I think you're trying to find things to take issue with. Nobody ever suggested the anti-spam crowd is unified. If I were to say that only Dogs are particularly interested in peeing on lamp-posts, would you claim that this is unfair because you know a lot of dogs that do not do that kind of thing?

      I also did explain the tradeoffs, in brief, in the whole accountable static IPs vs easy to administer and efficient with roaming dynamic IPs debate. (I could add paranoia over the supposed world wide shortage of IP addresses, but I don't think that was ever as big an issue as people maintained. If it had been, we'd be on IPv6 by now.)

      --
      You are not alone. This is not normal. None of this is normal.
  2. It's not a Bug it's a feature by shoma-san · · Score: 2, Funny

    I love WEP. I see nothing wrong with it at all. It's so secure...

  3. Linux Installation by Anonymous Coward · · Score: 5, Insightful

    I wish there was a way to install programs common accross all versions of linux.

    Linux zealots are now saying "oh installing is so easy, just do apt-get install package or emerge package": Yes, because typing in "apt-get" or "emerge" makes so much more sense to new users than double-clicking an icon that says "setup".

    Linux zealots are far too forgiving when judging the difficultly of Linux configuration issues and far too harsh when judging the difficulty of Windows configuration issues. Example comments:

    User: "How do I get Quake 3 to run in Linux?"
    Zealot: "Oh that's easy! If you have Redhat, you have to download quake_3_rh_8_i686_010203_glibc.bin, then do chmod +x on the file. Then you have to su to root, make sure you type export LD_ASSUME_KERNEL=2.2.5 but ONLY if you have that latest libc6 installed. If you don't, don't set that environment variable or the installer will dump core. Before you run the installer, make sure you have the GL drivers for X installed. Get them at [some obscure web address], chmod +x the binary, then run it, but make sure you have at least 10MB free in /tmp or the installer will dump core. After the installer is done, edit /etc/X11/XF86Config and add a section called "GL" and put "driver nv" in it. Make sure you have the latest version of X and Linux kernel 2.6 or else X will segfault when you start. OK, run the Quake 3 installer and make sure you set the proper group and setuid permissions on quake3.bin. If you want sound, look here [link to another obscure web site], which is a short HOWTO on how to get sound in Quake 3. That's all there is to it!"

    User: "How do I get Quake 3 to run in Windows?"
    Zealot: "Oh God, I had to install Quake 3 in Windoze for some lamer friend of mine! God, what a fucking mess! I put in the CD and it took about 3 minutes to copy everything, and then I had to reboot the fucking computer! Jesus Christ! What a retarded operating system!"

    So, I guess the point I'm trying to make is that what seems easy and natural to Linux geeks is definitely not what regular people consider easy and natural. Hence, the preference towards Windows.

    1. Re:Linux Installation by dpilot · · Score: 2, Interesting

      Just "emerge quake3"

      Actually, I *almost* agree with you. The real problem is that Windows Wizards work most of the time. But when they don't, they work against you - even worse than not being there. They get in your way and make it hard to do things manually.

      I began preparing to leave RedHat when RH8.1 never happened, and they went staight to RH9. After looking for a while, and evaluating various distributions on their maintainability, etc, I came to a different realization: For home use, this is supposed to be a hobby. What the heck am I doing looking at maintainability as a prime criteria, when I should be looking at fun and the learning experience?

      So I ended up going with Gentoo. But far from being merely 133t, I find it incredibly maintainable, and I have never had such an easy time installing more, and more varied, software on any system. That includes Linux and Windows. I'll agree that Gentoo is still too intense for a novice, but with a little experience it brings a LOT to the table.

      --
      The living have better things to do than to continue hating the dead.
    2. Re:Linux Installation by slittle · · Score: 2, Insightful
      And where does that setup icon come from? I don't see an icon on windows that can download almost any program, compile it, and install it automatically.
      Anywhere.

      Unlike Windows, it's rather rare to find a Linux software package that includes everything it needs to run. Generally, you're fucked for anything not under package management.

      Personally, I anything I compile manually I do statically, and shove under /opt. The Unix way (spraying shit all over the filesystem) is just too much fucking work. Good thing Debian has an awesome collection of software to start with, or I'd be fucked.

      You do realise that you're comparing the quake 3 install process to downloading video drivers and configuring X.org, right?
      Installing video drivers in Windows is the same. Insert CD, click OK, reboot. Ooh, and here's the cool bit: if it (Windows GUI system) can't figure out WTF you're running, it drops back to 640x480 VGA. It never fails to at least start. EVAR. Unlike X, if you so much as sneeze on the same continent it'll refuse to start.

      Just another reason why none of my Linux machines (3) even have X installed...
      --
      Opportunity knocks. Karma hunts you down.
    3. Re:Linux Installation by wayne606 · · Score: 3, Insightful

      Take your pick:
      Linux: everything is moderately hard
      Windows: 95% of the time it's easy, 5% it's impossible

  4. "Referer" by typhoonius · · Score: 5, Interesting

    This is stupid, but it bugs me that we're stuck with "Referer" in HTTP.

    1. Re:"Referer" by AndroidCat · · Score: 3, Funny

      *sigh*, another sad victim of Referer Madness.

      --
      One line blog. I hear that they're called Twitters now.
    2. Re:"Referer" by Haeleth · · Score: 2, Interesting

      When you're counting something, for example days, you need to put a suffix on the number like '1st, 2nd, 3rd'. Suffixes by itself wouldn't be so bad, but the way it's determined is quite wierd. . . . In Japanese, you write it without suffixes, and even without plural forms, making it much easier to code incremental counts.

      Sure, Japanese is so logical.

      Let's consider the days of the month. "One" is "ichi", and "day" is "hi", so we put them together and get "tsuitachi". Then for the second, "two" is "ni", so we put that together with "hi" and naturally that produces "futsuka". Observe the transparency and regularity. Could Spock himself have come up with a more logical system?

      And what about the teens themselves, anyway? Why don't you just write it as ten-one, ten-two, ten-three, like you do for twenties and beyond? That's how it's done for Japanese, and I find it much simpler.

      Er, what did you think "fourteen" was, other than "four-ten"?

      Sorry, but Japanese is no more logical than English. And numbers are one of the worst features of Japanese, not the best. (Did you forget about counters? You know, where you count books by the volume, pens by the book, and rabbits by the wing?)

  5. UTF-8 email headers by dimss · · Score: 2, Informative

    Standards are very unclear when you have to encode utf-8 'subject' header. Looks like there is no distinction between bytes and characters. I had to write automatic UTF-8 mailer last year. There were many, many issues with UTF-8 headers in different MUA. Especially with mix of english and non-neglish words in 'Subject'. Finally we decided to send two separate messages in two different 8-bit encodings.

  6. Java by mwvdlee · · Score: 3, Insightful

    Most people don't call it a "bug" but I do; the operator overloading of '+', '+=' and '=' in the Java specification's String class.

    Why is this a bug? Because the creators of the standard explicitely denounce operator overloading yet they do it anyway for this exception. Operator overloading is explicitely not possible in Java... except this one time.

    If it is so incredibly useful in this particular case that they would bend the specification for it, can't they understand that it would be useful for other classes (ie. Matrix classes or even the standard Number classes) too?

    --
    Slashdot social media options: AIM, ICQ, Yahoo, Jabber and Mobile Text. Why no MySpace?
  7. mirc by JohnFluxx · · Score: 2, Insightful

    Mirc file transfer sends data in packets, and waits for an ack for each packet.

    Over tcp.

    TCP of course already does this, and this just makes sending files very very slow. It should have just sent it as a single stream.

  8. DCE and DTE i RS232 by geirt · · Score: 5, Insightful

    It should have been female connectors with only one pinout (e.g DCE) on all equipment supporting RS232, and all RS232 cables should be crossed (null modems).

    Instead we have a complete mess with male and female connectors, straight and crossed cables. Is pin 2 receive or transmit? Dohhh.

    Why female connectors on boxes? Male connectors are more fragile. If the pins break, replace (or repair) the cable. The female connector on the box is OK.

    Luckily, RS232 are dying ;-)

    --

    RFC1925
    1. Re:DCE and DTE i RS232 by slittle · · Score: 2, Funny
      Luckily, RS232 are dying ;-)
      Nooo!!

      **hugs USR Couriers**

      Don't you listen to that Bad Man...
      --
      Opportunity knocks. Karma hunts you down.
    2. Re:DCE and DTE i RS232 by cow-orker · · Score: 3, Interesting

      Luckily, RS232 are dying ;-)

      Yeah, but Ethernet repeated the same mistake and is sure to stay for a while.

    3. Re:DCE and DTE i RS232 by ClosedSource · · Score: 2, Interesting

      The problem is that RS232 is (was) being used for things it was not designed for. It was never meant to be a general purpose serial communications standard.

  9. Re:MSIE & XHTML by Anonymous Coward · · Score: 2, Informative

    That's not a bug/shortcoming in a specification. That's a bug/shortcoming in an application.

    Funnily enough, I thought of sending XHTML as text/html when this story popped up. There is a problem with the specification.

    The latest RFC for text/html claims that the XHTML 1.0 specification defines a profile that is compatible with HTML, and that you are allowed to label this as text/html.

    The first shortcoming is that it doesn't bother mentioning this "profile" by name. Most people take it to mean Appendix C.

    Here's the kicker though: Appendix C XHTML is not compatible with HTML. No form of XHTML is. XHTML can be compatible with most HTML user-agents, but only because most HTML user-agents don't fully support HTML.

    You see, HTML allows an SGML short cut. Instead of writing, say, <h1>My Heading</h1>, you can write <h1/My Heading/, and it will mean the same thing. Or at least it should.

    Only a few user-agents implement this though. Emacs/W3. The W3C validator. A couple of search engines. The rest, including every browser you are likely to have heard of, uniformly ignore this part of the specification.

    Here lies the trouble. XHTML uses a slash inside a tag to mean something completely different - that it is an empty element. The HTML for a a meta element might be <meta name="author" content="foo">.

    Since HTML, based on SGML, expects a fairly smart parser that can figure out from context and the document type where an element ends, this can be an empty element without explicitly marking it as such or using an end tag.

    XHTML, on the other hand, had a design goal of allowing parsers to be a bit more stupid. One of the results of this was that you have to explicitly mark empty elements with a slash as the last character inside a tag. So the XHTML equivalent of the above HTML is <meta name="author" content="foo" />.

    Of course, because they used a slash, instead of practically any other character, this made XHTML fundamentally incompatible with HTML. Because if you read the XHTML version as if it were HTML, it means <meta name="author" content="foo">>. Note the trailing >.

    HTML user-agents that implement the shortcut will break when they encounter XHTML that is labelled as text/html. This could have been avoided by simply picking a different character to signify empty elements. Of course, because neither of the two biggest browsers ever bothered to implement this part of HTML (Mozilla still doesn't, for everybody who claims it is "standards compliant" [sic]), nobody much cares - niche browsers can go screw themselves, right?

    Somebody else mentioned the Referer misspelling, but another problem I dislike in HTTP is that language tags don't generalise. For instance, if your browser sends Accept-Language: en-US;q=1.0, de;q=0.5 to signify that the user prefers American English, but can make do with German, according to the specification, a server with English (note: English, not American English) and German resources is supposed to supply the German resource to the user.

    Of course, Internet Explorer and Safari come preconfigured with en-US without en as a fallback, which means that anybody who is content negiotiating can either follow the specification and be broken for these clients, or follow Internet Explorer and Safari, and be broken for any client that follows the specification.

    Another problem I dislike is that of underscores in CSS 2. CSS 2 doesn't allow unescaped underscores in selectors. CSS 2 does allow unescaped underscores in selectors.

    What's that? I've just contradicted myself? Not me - the CSS 2 specification. The W3C sneaked in a change to CSS under the guise of "errata". This results in people getting an error when they try and validate their CSS that contains un

  10. XML. For existing at all. by baadfood · · Score: 5, Interesting

    Sure a well defined markup language is nice but really, people seem to loose all rational sense when it comes to XML - It cannot be used in a project without the project becomming "XML"? Scripting languages have been capable of processing all manner of free form text files in the past but somehow XML is necessary for interoperation? Why do people somehow think that XML encapsulated data will be small and quick to parse and are then suprised when it isn't? Why are they so fucking proud when their server can generate some trivial number of XML packets per second? What nutjob actually thought XML is easy to read? And what is the difference between a node an an attribute? Really?

    1. Re:XML. For existing at all. by Anonymous Coward · · Score: 2, Informative

      Sure a well defined markup language is nice but really, people seem to loose all rational sense when it comes to XML

      So in other words, there isn't a problem with the standard at all?

      Scripting languages have been capable of processing all manner of free form text files in the past

      And you've got to write a new parser for every new format.

      somehow XML is necessary for interoperation?

      Necessary? No. The best option? Usually.

      Why do people somehow think that XML encapsulated data will be small and quick to parse

      I see people claiming that XML is easy to parse, on account of every major language having at least one XML parser already available for free.

      I do not see people claim that using XML results in small documents (except where the other format under consideration is unusually large). I do not see people claiming that XML results in quicker parsing (except in relation to SGML).

      I often see people claiming that XML doesn't perform very well directly after they use the wrong tool for the job (e.g. DOM vs SAX).

      Why are they so fucking proud when their server can generate some trivial number of XML packets per second?

      There's no such thing as an "XML packet".

      What nutjob actually thought XML is easy to read?

      XML, for documents and config files, is very easy to read. It's only when you use XML for things it is unsuited for that it becomes difficult to read.

      And what is the difference between a node an an attribute?

      Generally speaking, nodes contain content and attributes contain metadata. There are grey areas because what people consider to be "content" and "metadta" has grey areas.

    2. Re:XML. For existing at all. by Anonymous Coward · · Score: 2, Interesting

      Config file in XML:

      <?xml .... ?>
      <config>
      <connections>
      <connection>
      <type>mysql</type>
      <host>foo.bar.com</host>
      <username>bob</username>
      <password>2sekret4u</password>
      </connection>
      <connection>
      <type>mysql</type>
      <host>db.host.com</host>
      <username>jane</username>
      <password>flower</password>
      </connection>
      </connections>
      </config>

      Config file in (example) YAML:

      connections:
      - type: mysql
      host: foo.bar.com
      username: bob
      password: 2sekret4u
      - type: mysql
      host: db.host.com
      username: jane
      password: flower

      Which is easier to read? to type from scratch? to quickly edit (add another connection entry for instance)? And this is just a *simple* example. Ever work with an Ant build file? *shiver*

      XML is almost always the wrong solution. Not that it isn't useful for some things, but I'd rather never see XML again than have to deal with systems like the above.

    3. Re:XML. For existing at all. by Brandybuck · · Score: 2, Insightful

      Any simple and standard text-based markup language for data encoding with several free parsers available would probably have been just as overhyped as XML.

      Numerous other formats performing the same role as XML exist, but they never got the hype because they either weren't a standard, didn't have available parsers, weren't simple, etc., etc.

      What nutjob actually thought XML is easy to read?

      I think it's easy to read! It's a hell of a lot easier to read than RTF, Postscript. Or consider Sendmail configuration files. Ick! While not as readable as traditional dot.ini files, it's a heck of a lot more flexible.

      If you can read HTML you can read XML.

      And what is the difference between a node an an attribute?

      What's the difference between a person and a trait? It's the same difference. Traits describe people, and attributes describe nodes. Think of nodes as nouns and attributes as adjectives. If a node is the name of an image file, then the attributes could be the image format, size, description, etc.

      Of course, like natural language, distinctions can be difficult to make. Is an email address a node or an attribute? But don't sweat stuff like this, because no one cares.

      --
      Don't blame me, I didn't vote for either of them!
  11. Re:LOL AT TEH WINDOZE AHAEAHEA IS TEH FUNNAY by m50d · · Score: 2, Insightful

    I compare modern linux (slackware 10) to windows 98 because that's what I can get on my budget.

    --
    I am trolling
  12. Use of floating point for date/time by AndroidCat · · Score: 4, Interesting
    Microsoft, in their infinite wizzbang, uses a floating point representation for date/time in their OLE types, with the date (days from x) in the integer and time in the fraction. That's fine until you have to do math like timezone conversions. If you convert a local time to GMT then to someplace else and back, frequently your time is now off by 0.0000000001 seconds. That adds excitement to comparing two times, especially when only one has been converted to and from.

    It's not a huge problem to avoid, but unless you're draconian about using standard safe time math routines, it'll bite you .. eventually .. when you least expect it .. at a customer site running Martian Standard Time at local midnight. (Which will still be a bad hour for you to get a call no matter where it is.)

    And all because someone thought it would be pretty nifty to use floating point. Don't they teach the inherent dangers of round off or truncation errors in school these days? (And before someone automatically jumps on MS, with all the UNIX standards, what are you using? Is it safe?)

    --
    One line blog. I hear that they're called Twitters now.
  13. Submarine patents by SgtChaireBourne · · Score: 3, Insightful
    Submarine patents and other proprietary gimmicks, are bad.

    A current example would be packing VC-1 into both Blu-ray and HD DVD.

    Though software patents are currently only a problem in the U.S., I'd still say that they threat of stealth patents would be the worst bug. Proprietary material shouldn't get through the standards process.

    --
    Beta is broken and the link to classic doesn't work. Stop wasting our time or there won't be anybody left here.
  14. Re:TCP, SMTP, POP3, HTTP, ... by AndroidCat · · Score: 3, Funny

    My wall sockets have little security either. At most there's a fuse, breaker or penny for protection. No user authentication or load request handshaking and management. It's shocking.

    --
    One line blog. I hear that they're called Twitters now.
  15. C++ by Grab · · Score: 2, Interesting

    The overloading of the bit-shift operators > for streams in C++. Kludge city! And C++'s templates don't exactly come out smelling of roses either.

    Grab.

  16. IMAP by Anonymous Coward · · Score: 2, Interesting

    IMAP should be a powerful idea in principle but it looks like it has been implemented by people who haven't had much experience with programming concurrent systems. I've learn about this the hard way while writing an IMAP server.

    Using IMAP it should be possible for several clients to connect to the same account simultaneously. Changes made by one are reflected in the others as they happen, since the server sends updates describing these changes. Think model-view-controller. (Some clients ignore these updates, but that's another problem.) This is great in theory, but I'll mention two ways in which it's broken.

    First, each client connection can receive updates for only one mailbox at a time. There is no fundamental reason why this has to be, but that's how IMAP works. So you can't be notified when new messages arrive in mailboxes other than the one you're viewing. Clients have to poll to work around this.

    Second, messages have message numbers and these change when a mailbox is expunged. But there is a race condition: if one client expunges and another fetches, the second may get the message as numbered before or after the expunge. There is no way to work around this apart from disabling expunge.

    The conclusion that I came to in the end was that for something as complex as what IMAP is trying to be it would be much better to build a standard on top of an abstraction layer like CORBA. CORBA provides an efficient binary over-the-wire protocol, rather than the ASCII of IMAP, and has been developed by people who really understand the concurrency issues inherent in the problem.

  17. EIDE by Deliveranc3 · · Score: 2, Interesting

    Reversable cables? Come on that is so unnessecary! And making them wide and flat come on!

    Plus the whole master/slave system is kinda fun.

    Basically it's the only thing a novice couldn't figure out on their own when doing an install :(

  18. Dont' forget DVD CSS and Y2K by scruffy · · Score: 2, Insightful
    CSS was supposed to copy protect DVDs, but didn't, both because of poor encryption and because it doesn't prevent a bit-for-bit copy.

    It was a de facto standard to use two digits to encode the year, which caused a lot of fun a few years ago.

  19. Album/Track information on CDs by JoeD · · Score: 2, Insightful

    With the space available on a CD, they should have allowed space for Artist / Album / Songname / etc on the disk itself.

    1. Re:Album/Track information on CDs by belg4mit · · Score: 2, Informative

      They do, CD Text is almost never used though.

      --
      Were that I say, pancakes?
  20. Session Initiation Protocol by Bookwyrm · · Score: 2, Interesting

    Beyond basing a standard for managing stateful telecommunications sessions on a protocol for stateless bulk data transport, the most blatant silliness in the SIP standard was the original "Alert-Info" header. The Alert-Info header allowed the calling party to specify the ring tone/sound by listing a URL that the receiving device would automatically attempt to fetch and play without waiting on the recipient user to allow/disallow it.

    Others:
    List of Evil SIP ideas

    Oh, and never updating the SIP version string despite syntax changes in the standard is evil.

  21. Re:TCP, SMTP, POP3, HTTP, ... by magefile · · Score: 2, Funny

    Linking college computers to military base computers is *exactly* the situation in which I would think you'd want security ...

  22. NFS by tedgyz · · Score: 3, Interesting

    NFS is inherently flawed in it's transaction acknowledgement and retry behavior.

    Back before M$ had Linux to kick around, there was the UNIX-Haters Handbook. I worked at Apollo/HP with a UNIX-Hater zealot. He enlightened me on the serious flaws in NFS, which I had experienced first-hand on a few occasions.

    A quote from the book: (page 287)
    So even though NFS builds its reputation on being a "stateless" file system, it's all a big lie. The server is filled with state--a whole disk worth. Every single process on the client has state. It's only the NFS protocol that is stateless. And every single gross hack that's become part of the NFS "standard" is an attempt to cover up that lie, gloss it over, and try to make it seem that it isn't so bad.

    --
    "No matter where you go, there you are." -- Buckaroo Banzai
  23. Networking in .Net / Mono by szyzyg · · Score: 2, Informative

    The Socket class is astonishingly broken
    IPAddresses are frequently imported/exported at Longs - 8 bytes with a sign bit
    Port numbers are 4 byte signed integers.

    Sure, Java doesn't have a signed int or long but .Net does.

    Now they introduced a way to get the IP address as an array of bytes, so that you can support IPv6, problem is the constructor that takes a byte array will only accept a 16 byte address, not a 4 byte one for us IPv4 users. On top of this they've deprecated the only other method that can get you an ip address in binary format.

    So if you want to serialize an IP address you have to either get it as a Long and cast it to an unsigned int - this generates all sorts of compiler warnings, so forget about clean compiles. Or you can get the address as a byte array and then on reception you have to turn it into an unsigned long.

    Oh yeah, there's no documentation on what the environment does about the endianess of IP addresses converted into longs.

    Now... we''ve also got the alarmingly bad Select() method which requires you to build lists of the sockets you're interested in and then proceeds to prune these to only leave the ones where activity has happened. Problem is that you can't reuse these lists so you need to construct them every time so you end up spending more CPU on building lists than you do on simply scanning the list of open sockets. Not that it matters, .Net throws and exception if you try to Select() on a list of more than about 30 sockets.

    Another retarded design decision is the implementatino of non-blocking IO and EAGAIN, they decided that this should be implemented as an exception. And we all know how fast exceptions are.

    Grrrrrrrrr

    I could go on and on.

  24. deprecated by w3c by Ramses0 · · Score: 3, Insightful
    This is by far the most egregious intentional hobbling of a standard by retarded people (the W3C). Ever since they deprecated the elements (and to a lesser extent: ) in a Markup Language, I have lost faith in their ability to properly evolve a standard.

    See the HTML 4.0 recommendation. I literally hit something when I first read this back in '97 (yes, I sometimes read standards documents and RFC's for fun :^). It's also referenced in the original ('97) release.

    The DIR element was designed to be used for creating multicolumn directory lists. The MENU element was designed to be used for single column menu lists. Both elements have the same structure as UL, just different rendering. In practice, a user agent will render a DIR or MENU list exactly as a UL list.

    We strongly recommend using UL instead of these elements.


    Remember that HTML is a markup language, and see above where the W3C intentionally took away contextual information from the document.

    Keep in mind this was *after* the release of CSS1 (Cascading Style Sheets, level 1 W3C Recommendation 17 Dec 1996 vs. HTML 4.0 Specification W3C Recommendation 18-Dec-1997)

    99% of websites on the planet have something you could consider a "menu", or "tabs" of some kind. Wouldn't it be nice if we had a particular tag for that, like "<menu>"? (we do ... or we did).

    Nowadays, lots of people are linking to other people (a <dir>ectory) of people with blogrolls, wouldn't it be nice to wrap those in a <dir> list and style them separately, without using arbitrary <ul class="blah"> tags? Or perhaps a list of files available for download (<dir>), or a list of (perhaps) emails in a web mailing client.

    Not that there's anything preventing use of ad-hoc class tags to achieve the same effect, but there is semantic information (especially in <menu>) that can be put to good use when standardized like this. Everybody complains about screen-readers, wrap / auto-skip anything in a menu tag. Make a special button that pops up (or reads) anything in a <menu>. Grr. The web could have been just a tiny bit better without that move by the W3C.

    --Robert
  25. SQL by TheLink · · Score: 2, Interesting

    Plenty of stupid stuff in SQL.

    Why a different format for update and insert?

    update table set field1=value1,field2=value2 where rowid=x

    vs

    insert into table (field1,field2) values (value1,value2).

    --
    I don't know about "worst" but could the SQL standard be partly to blame for why porting data from one DB to another is hard in most cases...

    e.g. not covering stuff that most people find useful or even vital? And thus letting Oracle etc each define their own ways of doing things.

    --
  26. Why are Slashdot readers such XML bigots? by Creosote · · Score: 2, Insightful
    Slashdot moderation is usually fair except when the topic is XML, in which case outrageous, trollish, and uninformed comments that would be shot down in any other topic area are judged "interesting" or "informative".

    Yes, XML has been overhyped. Yes, it is used in many places where it's not appropriate. But it's completely unfair to tar an entire language and suite of associated technologies because of the way it's abused. Is Flash an inferior product because there are idiots who put loud, bloated Flash intros on their websites when a nice compact CSS-based splash page would do?

    A lot of people (notably on Slashdot) have the notion that when it comes to data XML is verbose and redundant with existing data formats and programming languages, and that when it comes to text XML is overkill because good ol' ASCII is all you need. Well, if the only things in the world that ever needed archiving, searching, and retrieval were highly structured data and Usenet news posts those would be defensible opinions. But those aren't the only things in the world. There is a huge, huge amount of content that consists of heterogenous mixtures of strictly typed data, free-form data, and text in various languages (including the languages of mathematics, of music, of graphics...). As of 2005, there's no better format with which to store it and process it than XML.

    Do a Google search on /'digital library' XML/ or try /XML site:loc.gov/ for example. And if you ever talk to anyone who's done serious programming for the kind of projects you'll find mentioned there, you'll discover they have skills that incommensurate with those of the people who put "XML" on their resume because they once used xsltproc to generate simple HTML output from a simple XSLT stylesheet. And believe it or not, some hiring officials are able to tell the difference. (Speaking as one who spent a good chunk of the last couple months looking at code samples submitted by applicants for one of those positions.)

    Sorry, but I've had it with knee-jerk XML bashing.

  27. SQL !!! by Anonymous Coward · · Score: 2, Interesting

    Many years ago Edgar Codd presented up a complete model for storing data: the relational model. It was complete and sound, which no other data model is. It is based on predicate logic (to give meaning to the data) and set theory. You can store any kind of data in a relational database.

    To implement the relational model you just have to implement a number of set operators and relational operators (project, join, etc), and you have to enforce arbitrary constraints on the data.

    Much like arithmetic (add, subtract, multiply), all you have to do is implement these concepts in a computer and you'd have a system that works very much like the model describes.

    Yet, somehow, the standard that emerged, SQL, seems to be from an alien planet, bearing only fleeting similarity to the relational model.

    Example: If you're working with *sets*, you should use set notation. Not "SELECT * FROM Customer", but just "Customer". Not "SELECT * FROM Customer JOIN CustomerDetails ON Customer.id = CustomerDetails.id" but "Customer JOIN CustomerDetails".

    Example: SQL doesn't enforce the idea that relations are sets. So it allows columns with the same name, it allows positional specification of columns (ORDER BY 2 is allowed, but not the same as ORDER BY 1+1 by the way), it allows *duplicate rows*!! Argh. The relational model requires all rows to have a candidate key.

    Example: SQL doesn't allow you to compare query results. You can't say "give me a list of customers who purchased every book by author X" without bending over backwards. In a relational expression, you can just say, roughly, "Customers WHERE (Customer JOIN Purchases) = (Books WHERE Author = 'Joe')".. notice that the first "=" is comparing two SETS.

    Example: SQL has NULLs. Anybody who has worked with an SQL database knows exactly what a pain NULLs are. Quick, why does COUNT(*) count NULLs but SUM(*) doesn't? I don't know either. Certainly has nothing to do with the relational model. And to add insult to injury, SQL makes NULLable columns the default.

    Example: SQL differentiates between views and tables. You can't usually update a view. However the relational model says, you should be able to interchange views and tables completely. This means the most powerful abstraction feature of the relational model is completely missing! It's like programming in a language without subroutines or functions. (Yes some DBs allow a limited subset of updateable views, and some allow you to specify your own SQL triggers to update them, but that's not exactly the same as having the DB *infer* the constraints and rules itself for any view).

    Example: SQL doesn't allow arbitrary relational expressions. In fact there is a special name for nested expressions in SQL: "subselects" or "subqueries". As if this is something special. How often to do you use parenthesis in your math statements "2 * (a+4)". If math was SQL, that would be "OPERATE ON (OPERATE ON a WITH 4 USING ADD) WITH 2 USING MULTIPLY" or some nonsense.

    Example: SQL makes it difficult to create new types. So objects have to be "decomposed" into columns, and we have to have junk like "ORM layers" whose purpose is to splatter and unsplatter objects over and over again, instead of just being able to say "Customers" and getting a list of objects directly.

    The list goes ON AND ON. When people talk about the limitations of the relational model, they are talking about the limitations of SQL!

    So, yeah, SQL is the big suck. I don't know why other parts of programming have so much innovation (how many programming languages are there? Programming paradigms?), but SQL is stuck in this bizarro backwards world.

    Please, if any open source programmers out there want to make something really useful, please create a truly relational database system! Just pick up any DB textbook and implement what you read, it's all there waiting for somebody to *do* it!!! I know it will happen someday....