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."
For all Crap Slashdot Posts/Stories.
Oh yeah, Linux.
--
I stole this account from all of you. LOL!
This account has been seized by the GNAA. That is all.
'Nuff said.
Stop the world; I need to get off.
Windows. Nuff said. :D
The friendliest digital photography forums on the net!
I love WEP. I see nothing wrong with it at all. It's so secure...
I wish there was a way to install programs common accross all versions of linux.
/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!"
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
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.
This is stupid, but it bugs me that we're stuck with "Referer" in HTTP.
Cuteseal: Listen to me. This post is directed squarly at you.
You are not funny. You are encouraging the mindless, raving IDIOTS that inhabit slashhdot. The complete cocksuckers who make stupid jokes about 'M$' and get a +5 funny. The ones who compare modern versions of Linux to Windows 98 and bitch about instability. The idiots who reply to every technical story with either obvious, misleading or totally incorrect information and get +5 informative. The inbred fuckwits who criticize Microsofts Monopoly, and then rush to suck Apples dick over the iPod. The misshapen freaks who repeat the same rant about how copyright is evil every tenth story, and get +5 informative, as if its an astonishing now viewpoint.
You, cuteseal, are a member of this collective.
I WANT TO KILL YOU ALL! HUNT YOU FUCKERS DOWN AND KILL YOU BY FORCING LINUX CD'S DOWN YOUR THROAT!
You fuckers don't know the first thing about technology or marketing. You are scum. I bet you are either a child, or a man who is still mentally a child. I want to pick you up and shake the fuck out of you, whilst looking you in the eyes and screaming "YOU ARE NOT FUNNY, FUCKER!".
None of you fuckers are funny. You're all stupid drooling retards who think that because they can play with computers (big fucking deal, a mechanic is more skilled then the typical programmer), they are gods gift to the world. Newsflash, morons! Your jobs are gonigto India for a reason. You have no talent, only the ability to constantly while for no fucking reason over your oh-so-wonder Linux. At least the BSD users generally have brains. I've never met a skilled linux user who wasn't an egotistical asshole. "Oh look at me!!! I know how to use linux. Fear me!" And what about your shitty open source? You can't really making money by selling open source. You can only make money by 'supporting' it. CAN YOU SPELL 'CONFLICT OF INTEREST'? Open source companies have no interested in making Linux better, they want it to be hard to use! Becaue then people will pay for support!
To conclude: Cuteseal, I hate you. I hate all of you.
WHAT THE FUCK IS WRONG WITH YOU PEOPLE!?!
The bug being that it can be rendered useless with a couple k.
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.
I know, I know, 31.25kb is too slow, but damn I wish MIDI had timestamps, from the get-go .. be perfect, otherwise.
; -- the corruption of government starts with its secrets. a truly free people keep no secrets. --
Really, any of the traditional protocols that have little or no concept of security.
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?
As a web developer, I find it annoying to have to send XHTML content to MSIE with the incorrect Content-type "text/html" instead of the correct Content-type "application/xhtml+xml"
Even if Microsoft supports application/xhtml+xml in MSIE 7, developers will still need to support MSIE 6 (maybe 5) by sending it as text/html to those HTTP_USER_AGENTs.
--BladeMelbourne
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.
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
I wish the creators of DVD had required players to support converting from 24 frames per second non-interlaced to 60 fields per second interlaced on the fly, rather than the current standard of the movie being converted when the disk is mastered.
When I am watching a DVD on my computer, it is trivial for my monitor to switch to 72Hz refresh, and show each movie frame for 3 refreshes, rather than getting all the interlace artifacts. It would also have improved the compression of the DVD for a given quality.
www.eFax.com are spammers
Not sure if this is the type of "standard" that the question means but CSV files are anything but standard. A very bad format.
A lot of equipment uses RJ45 connectors to provide serial connections (e.g. terminal servers). But they all use different pin outs. Sometimes even different models for the same manufacturer need different adapters.
---- join dshield.org Distributed Intrusion Detec
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?
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.
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.
DNS's MX entry is excellent, I wish it existed for other services as well.
You can't do this in general because RS232 is not symetrical. All of those modem control pins - "ring indicator", for example - have one explicit direction.
Of course we don't often use those pins any more, and the ones we do use (two data and two handshaking signals) are symetrical, so for that subset the proposal [one pinout, all cables cross over] is sensible. I think that there may even be another unused standard along those lines (RS4xx?).
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.
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.
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
SMTP's lack of sender authentication is a modern-day fetish of the anti-spam crowd
Actually, it's a modern-day fetish of parts of the anti-spam crowd.
And what these fetishists fail to realize is that it won't do a thing to stop spam, as there's nothing it provides that isn't already being done without it.
Accountability? Responsible ISPs already take action against their customers that spam. Irresponsible ISPs don't; what will authentication provide? Blacklisting? We already have that, via DNSBLs - which works quite well.
It was a de facto standard to use two digits to encode the year, which caused a lot of fun a few years ago.
(How did this get modded up? slashdot utterly sucks now and is devoid of any content or insight. I laugh at the asshats that actually PAY for this tripe.)
First, nothing you bitch about has anything to do with a standard. You will probably rebut with "It is a lack of standard that is the bug," and I counter that with "There are standards for each distribution, the bug is the vendor does not follow them."
Second, you are wrong. To install a package on my distribution of choice, I download a package designed to install on my system, I click on the RPM, then click on install. Fin.
What windows asshats fail to realize is that the ability to install software from any two-bit company with a 14 year-old writing installshield scripts or having a website automatically install software IS NOT A FEATURE. It is a bug and one that ends up with every Windows machine either being riddled with dozens of useless programs, malware infections and armsraces, and having to reinstall every year to "fix" it, or having a system so locked down so as to be unusable and still needing to reinstall every year to "fix" it.
No unsigned byte primitive. Grrrrrrr!! Also, the way Java handles date / time. Starting with mostly-deprecated util Date object, then abstract Calendar object AND GregorianCalendar object. Unless of course you're accessing a database, and then you need the SQL Date object, not to be confused with the util Date object. And don't forget the TimeZone, SimpleTimeZone, DateFormat, and SimpleDateFormat objects.
[Insert pithy quote here]
The NAT problem got resolved by UDP encapsulation ("NAT-T" = NAT traversal, after years of being a draft finally published 5 days ago as RFC) got implemented by most vpn software during the past two years (= too late).
Hybrid auth means: peer A ("the server") authenticates itself to peer B ("the client") through asymmetric methods (like an RSA keypair and a X.509v3 cert). Peer B chooses a random symmetric session key and encrypts it for A, this sets up an encrypted tunnel. Inside this tunnel, B authenticates itself to A using simpler techniques like challenge-response or even clear passwords. Allmost all personalized TLS/SSL protected services (https, pop3s, imaps, ...) work this way: Servers has a cert, client has a password. Easy to admin, easy to deploy, easy to rollout.
But with IPsec/IKE/ISAKMP you have to choose between shared secrets (bah!) or rolling out keypairs to all peers. And like all other protocols requiring all peers to be part of a PKI (PGP, S/MIME, SSL+certs on both sides) this slowed down propagation strongly.
There is an IETF draft "A Hybrid Authentication Mode for IKE" which is adopted my more and more implementations right now (= far too late). Cisco is now pushing it because of the failure of their own "group password scheme" (of course they name it differently: "Mutual Group Authentication").
Man, why did they wait so long?
With the space available on a CD, they should have allowed space for Artist / Album / Songname / etc on the disk itself.
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.
The standard insists on requiring broken behavior from new implementations to preserve compatibility with old software. Not a good idea when precision timing is becoming increasingly important.
Mea navis aericumbens anguillis abundat
can we all copy and paste this? store it away. whenever we get the 12 year old "windose $uckors!" kid, paste it. repeatedly.
'Nuff said.
--
"Outlook not so good." That magic 8-ball knows everything! I'll ask about Exchange Server next.
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
The Socket class is astonishingly broken
.Net does.
.Net throws and exception if you try to Select() on a list of more than about 30 sockets.
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
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,
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.
An unambiguous description of the One True Way to properly render
"Provided by the management for your protection."
source
Data is sent in packets, rather than dumped in a stream manner. This allows the DCC SEND connection to survive where an FTP connection might fail. The size of the packets is up to the client, and may be set by the user. Smaller packets result in a higher probability of survival over bad links. The recipient should acknowledge each packet by transmitting the total number of bytes received as an unsigned, 4 byte integer in network byte order. The sender should not continue to transmit until the recipient has acknowledged all data already transmitted. Additionally, the sender should not close the connection until the last byte has been acknowledged by the recipient.
Most of the time, it is actually as simple as Windows, or simpler. It's when you have problems that you need to talk to a zealot/guru, who will help you out with your individual problem, as opposed to a howto, which deals with every possible issue.
/etc/modules.autoload.d/kernel-2.6"
Remember, too, that it's a good idea to have video drivers installed properly anyway, as most distros will encourage you to do, even when doing flat things like surfing Slashdot. Ever try Windows _before_ you download the nvidia drivers? My Linux will do higher resolutions a lot more readily with the generic VESA drivers than Windows will. And forget sound. Creative won't even give you a driver except on its original installation cd, whereas almost all soundblasters are supported out-of-the-box by Linux.
For example:
User: "How do I get Quake 3 to run in Linux?"
Guru: "Linux is a kernel. What distro are you using?"
User: (for the sake of argument) "Gentoo."
Guru: "emerge quake3"
User: "This looks like it will take awhile. Can I update my whole system, and then install quake3, without having to come back in between?"
Guru: "emerge sync && emerge -uD world && emerge quake3"
User: "It says I don't have my video drivers installed. How do I do that?"
Guru: "emerge nvidia-kernel nvidia-glx nvidia-settings && opengl-update && nvidia-settings && echo nvidia >>
User: "That's a long line to type, can I cut and paste from this chat?"
Guru: "Sure, hilight the line, then middle-click inside a commandline."
User: "Ok, now what?"
Guru: "You'll have to restart your X display. It'll probably work to do ctrl+alt+backspace."
Now, try Windows. Assuming you can even get a Windows guru to help you. Linux communities are quite open these days; try irc.freenode.net#gentoo
User: "How do I get Quake3 to run in Windows?"
Guru: "Put the CD in the drive."
User: "It says I don't have my video drivers installed. How do I do that?"
Guru: "Go to nvidia.com and look around. You'll find them, eventually."
User: "Ok, now what?"
Guru: "You'll probably have to reboot the computer."
User: "Whoops! It says it doesn't work with my version of Windows. How do I upgrade and then have it automatically install?"
Guru: "You can't. You'll have to send a check to Microsoft for at least four, more likely ten or twenty times the cost of Quake 3."
User: "Screw this! I want it for free!"
Guru: "Try Linux."
And let's remember -- if you got someone to install Linux for you, or you bought a computer with Linux pre-installed, it's a lot more fair of a comparison. There's still the fact of having to download and install it, as opposed to having it already on a CD, but "apt-get install" or "emerge" is still fine, especially because both have good graphical frontends. AFAIK, Windows doesn't have anything comparable to a package management system -- remember last time you installed some Windows thing that didn't come with an uninstaller?
But you are right. To break the popularity of Windows, Linux will have to be significantly better, because Microsoft has billions of dollars to spend.
Don't thank God, thank a doctor!
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
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
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
The HTTP protocol defines header comments, which are only valid on a few header fields. There are some increadible problems with them.
1. Comments are recursive.
2. Comments break the header continuation model used elsewhere for continued values.
This means that HTTP headers must make semantic decisions about the header type they are working with in order to properly perform their lexical parsing. It might not seem like much, but it's a sublte stone bitch.
-- Crutcher --
#include <disclaimer.h>
When you compare the standard W3C Dom to the one implimented by IE (and partially by Mozilla), you will find that the standard is sorely lacking.
Properties such as offset(Left|Top|Height|Width) to discover the rendered position of an element are non-existant. The ability to capture context menu events is non-existant. And don't even get me started on the event model.
People may hate how IE co-opted everything, but their DOM APIs are one thing MS got *right* - the IE DOM API is far more flexable and powerful than the W3C standard.
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.
int main()
/* fd is now locked, whoohoo!!! */
/* fd is now @^%$#ing unlocked!!!! For the love of God, why!?!?!? */
{
int fd, fd2;
struct flock fl;
fd = open(TEST_FILE, O_RDONLY);
if (fd < 0)
perror("open failed");
bzero(&fl, sizeof(fl));
fl.l_type = F_RDLCK;
fl.l_whence = SEEK_SET;
fl.l_len = 1;
if (fcntl(fd, F_SETLK, &fl) < 0)
perror("lock failed");
fd2 = open(TEST_FILE, O_WRONLY);
if (fd2 < 0)
perror("open failed");
return EXIT_FAILURE;
}
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.
One rather large ISO standard I worked with missed the mark so completely due to rediculous complexity due to political infighting among countries who don't share a common interest at all in what to accomplish left me bewildered as to why the standard is still under development.
The standard was supposed to be vendor independent, but even after ten+ years of development no one could come close to implementing its thousands of pages of atrocity. My lesson learned is that some problem domains are best served by proprietary software. I hate to say this on Slashdot, but it is true. Only a profit motive can lead people to tackle some of the problems out there.
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....
My goodness, what a mess! 'Nuff said.
Tiller's Rule: Never use a word in written form that you've only heard and never read. You will end up looking foolish.
Local time? Leap years? Leap seconds? Variable days in the month?
Our whole damn calendar and time system needs an overhaul.
Remember that Perl bit that returned the number of years since 1900? Back when everyone used Perl for Internet stuff, they could count on that being a two digit number. Seeing stuff on the net dated 1/12/105 - that slays me!
Everybody's a libertarian 'till their neighbour's becomes a crack house.
Linus in Flame Mode
I'm in a Unix state of mind.
1. slowing down to a crawl because all available ephemeral source ports are already in TIME_WAIT state (and thus not available for the new connection)
or
2. "reaping" such source ports that are in TIME_WAIT state prematurely, thereby violating the TIME_WAIT mandate of the TCP standard.
With faster and faster network cards (think 10 Gigabit) now readily available, this issue is getting worse and worse.
Most manufacturers choose to workaround number 2, by the way, undoubtedly in order not to jeopardize benchmarks.
Having 32 bit port numbers in TCP would alleviate this problem somewhat, at the expense of memory (all these 4-tuples in TIME_WAIT state obviously occupy memory). But this argument is moot, since port numbers are just 16 bits.
(Why would you want to continuously open short connections to the same host over and over again? Think two back-to-back application level firewalls. Think eCommerce credit card authorization. There are many situations where this may be necessary.)
Dedicated Linux servers (root access) $45 p.M.
Just curious what the Slashdot crowd thinks are the worst bugs ever to creep into a standard?
Having survived the great Revision '4.0' Browser wars, I have to say the worst 'bugs' ever were the proprietary extensions that crepts into Netscape and IE. It made it so difficult to design any sort of advanced page without all sorts of duplicate (albeight slightly different) code to satisfy both browsers.
No authentication or encryption in the 802.1Q standard. Ya'll can think Cisco for this fuckup. There were a number of pre-standard VLAN-like implementations back in the day. Most had authentication and encryption between 802.1Q switches and routers. Cisco's didn't however. It didn't have jack. However they put their pre-standard implementation on every single device they made and by default embraced a ground up approach to the use of VLANs, their VLANs. Unfortunately Cisco's implementation became so wide-spread that the IEEE 802.1Q working group ratifying any other VLAN implementation other than one compatible with Cisco's would lead to the creation of a standard that the majority of the market would ignore. The majority ran Cisco hardware and did anything Cisco told them. That's what I call a monopoly (or was a monopoly). Not all the competing standards died right away. Enterasys' (Cabletron's) pre-standard implementation called SecureFast thrived for years due to its widespread use within its userbase. It had so many features that netadms needed quite badly that they were willing to go with a homogenous Enterasys environment to get it. Cisco screwed the pooch and we netadms have been stuck paying the price since, what, December 2000 IIRC? Thanks Cisco.
There is no standard (as in, made by a standards group) way of installing software either on Linux or Windows. In the case of Windows, you have the de facto standard of InstallShield.
And on modern linux distros it can almost be as simple as on Windows, provided the software is shipped as an RPM. Open CD, doubleclick the package, enter root password, done.
If you are typing it from scratch, you'll want a quick way to check the syntax. AKA validation.
YAML parser will validate your YAML documents, much like an XML parser validate XML documents. And additionally you can quickly check the syntax with your _eyes_, since YAML uses indentation.
YAML also has builtin datatypes, so when you load it, you will automatically get a data structure of strings, numbers, symbols, etc. instead of just strings for all values. And thus you save time by not having to cast datatypes.
Basically, I've ditched XML and used YAML for all my config files and I've never been happier.
- Passwords in the clear!
- No standard file listing format, so you have to be a human or very clever code to extract the file names.
- Requests that get out of sync with replies.
- Using separate connections for cmds and data, and random ones at that.
- No directory transfer cmd.
Telnet:- The wonderfully flexible and broken option negotiations, which took several RFC's to describe the various race conditions therein, and the recommended kludges for avoiding or exiting same.
- The various bizarre modes to support totally obsolete comm protocols.
- The lack of recognition by the RFC's of ANSI or VT-100 formatting, both de-facto standards.
HTTP:I can't believe no one's mentioned this, even after the RS-232 thread above...
After 40 years of screwing around with RS-232 (different combinations of Male, Female, 9, 25, DTR, DSR), a committee has a chance to define a new computer-to-peripheral interface...
And they design one with two different connectors ( A and B), with male and female ends, and with a master-slave physical and logical architecture. And, the connectors do not work if you try to plug them in upside down.
So, I have to have (again!) an entire zoo of USB cables and adapters to connect things. I own: 0. Standard A-B cables
1. An A-A USB cable for connecting my Archos MP3 player
2. An A(Female) to A(Male) extension cable
3. An A to mini-B cable to connect my Camera
About the only thing I don't have is a B-B cable.
Would it have been so hard to create a hermaphroditic, small connector that autonegotiated master/slave at connection time? That connected no matter what orientation the connector was in (think headphone jack)?
And the worms ate into his brain.
Summary Here
Base 10 sucks as a standard for our numbering system.
Base 12 is far superior, being evenly divisible into thirds, quarters, and sixths.
Wi-fi traffic jam http://ask.slashdot.org/article.pl?sid=05/01/11/15 7239&tid=193&tid=222&tid=4
MPEG-2 and Dolby are both proprietary. VC-1 is nothing new when it comes to proprietary codecs becoming a standard.
P.S. MPEG-2 is used as the encoding format for the current DVD video.
Fly me to the moon Let me sing among those stars Let me see what spring is like On jupiter and mars
I know you're not supposed to post this, but a-fuckin-men. This voices the reason why I gave up linux and went back to windows.
And the mega-uber-bandaid MNG -- you don't want to get me started on what a mess that whole screwup was and is.
I've fallen off your lawn, and I can't get up.