...was that it was a fantastic game before keyboards became commodity junk. On the old true-blue IBM PC or XT, you got a keyboard sturdy enough to dent a car if you swung it hard enough. Now they disintegrate from the wind resistance.
My point being, in those days each key on the keyboard could be pressed independently and the computer could discern EXACTLY which keys were down or let up. Spacewar for PC (and myriad multiplayer games that came later, using a single keyboard) demanded good quality keyboards. My buddies used to sit in the computer lab and play it for hours, until they 'upgraded' machines. They had 'new style' 101 keyboards (88 was enough for me then), and a new strategy came about: hold down as many keys as you could so your opponent couldn't thrust or shoot; when they get frustrated because they're falling toward the sun, spin around and shoot as fast as possible.
Most Spacewar games became shoving matches after that.
...ISP's (typically) use cable and phone lines. Sue the physical providers for making bandwidth available to the ISP in the form of copper lines to the house. Sue the people who developed TCP/IP and make it possible for computers to transmit information against the laws of the land. Sue the people who haven't sued all these people before, because their inaction caused such economic losses.
Really. It's a big world out there, and occasionally people have to own up to their own actions.
At my last job, we had a COW (Cluster of Workstations) running all sorts of operating systems. Except Windows. Why? Because they won't run in a production environment for more than a few days without freezing or crashing, and the system administrators refused to babysit them.
With Windows 2000, I've had my home machine run for upwards of 28 days without a reboot, but only if all the video drivers are stable and the machine is not doing too much at any given point (say, burning cds while watching movies and keeping my net connection above 200k/s). But so help you if a driver freezes. There's no way to reset them. Your hardware will play into your decision as much as the operating system, I believe, due to stable driver support.
In terms of performance, Windows kernels have pretty good latency compared to 2.2.x linux kernels, so running a full screen dos app might give very good performance, but there's a lot of overhead munching into your RAM, which is likely to be an expensive premium on older hardware.
Lastly, with Windows, I've never heard of doing channel bonding for ethernet (3 100TX cards ~= 1 gigabit), nor diskless booting that I know of. These can be really necessary for large clusters to keep maintenance down and performance up without buying higher end equipment.
...a 'popular' Microsoft product that hasn't had virus capability? Word, Excel, Outlook, Outlook Express, countless Windows 3.1 thru 2000, hell, XP is a honey pot OS just by connecting it to a network. My point being, why is this news? Anything you run with M$ in the About box will at some point destroy one or more aspects of your computer, be it the hard drive, cpu, network connection, etc. Today it's the IM. Tomorrow it'll be the icon editor...
...yeah, my employer installed rectal scanners a while back. They seem to work fine, but there's always one or two real assholes who spend a lot of time using them.
Information does not want to be free. It wants to be sold. It's just easier to copy.:-)
My beef isn't that there are different types of data, but rather that my personal information is not for sale at all. But for some reason, businesses not only use and copy it freely, but sell it without giving me a cut of the profits. It's my information. No different than artists feel when someone copies their mp3's.
Perhaps it's time I copyright my private data and charge companies to fill out their customer registration cards?
At least in the USA, corporations are legal citizens, and can make contracts with others. Maybe it's time I have people sign a contract in order to obtain information about me. If enough people make this difficult or impossible to manage effectively, they'll just stop.
In an ideal mail system, it would work much like the current IM clients do. All email is digitally signed by the sender, and encoded using your public key. Each client has a filter list of signatures they will accept mail from ("friends"), a set of keywords they are interested in ("acceptable spam"), and a set of keywords they will never accept ("objectionable content"). Any message not signed and not encoded using a registered public key (you might have several) will be rejected.
The reason for multiple public keys is you might post to a newsgroup saying you have some stuff for sale. You post a public key with it, specifically to receive things about that message. After a week, or when you've sold your goods, you unregister that key with your mail reader and you never see anything about it again. Spammers would otherwise troll for public keys and your email address. You'd probably give family and friends your 'trusted' public key. If it ever leaks out, you change your key and mail it to your friends, then disconnect your old one.
I suppose this can all be implemented on top of SMTP, but giving servers the ability to reject mail and kill spam would be a big reduction in wasted bandwidth.
I started running Freenet about two weeks ago. Here's my impressions:
Relatively easy to install (just run the.exe)
Requires you to download a newer JVM. Not a big deal.
Hard as hell to get connected to another client, because there's no central server. Once you get a single good peer, though, it starts learning new connections and it improves dramatically. The first several days is really frustrating. This is why most people dump Freenet immediately, as first impressions are everything.
It's not turnkey. You must search and find peers to put in your hosts file. It doesn't work 'out of the box'.
There's no way to search for files. It means you must already know the exact address of what you're trying to download. Writing a search engine is supposedly possible, though non-trivial.
Download speeds are poor, due to encryption and other factors relating to anonymity, I believe.
Frequently, files will download partially or with zero length, but have their correct name, implying it is complete. (Morpheus/KaZaA use temp names until a file completes, which is nice.)
Freenet runs a small web server for configuration and retrieval. The web interface is 'programmer friendly', but not user friendly.
Files must be 'inserted' into the network. This is a pain if you're trying to share 40gb of mp3 files, or change what is shared daily.
Files are not guaranteed to exist in the network once 'inserted'. Only files which are requested stay alive, from what I've read.
But, all these issues don't prevent me from running Freenet. I find it comforting to support anonymity on the internet, like in the old days. It's really not up to scratch for P2P file sharing, though. Never will be.
Frost, on the other hand, seems like a really slick attempt at totally anonymous newsgroups built on top of Freenet. I've run it a few times and like it. It's slow as molasses, but that's not Frost's fault (see above).
If you're looking to do the same thing, cheaply and with a little DIY hardware tech time, simply buy a big ATX case with room for a couple of extra power supplies, install a 386 or 286 mobo (all ISA slots!!!), and buy a number of these computers and plug them in. They don't draw power from the motherboard, so you don't even bother connecting the 286 to power. Instead, tie each power supply to one or two of these cards directly (requires a little soldering), and there you go. A cluster in a box.
If I had the money, I'd be doing this myself. Instead, I've got a rack full of 4U AT cases with dual PPro 200mhz machines instead. The one advantage to having full sized motherboards (with PCI slots) is that I'm installing triple-channel-bonded ethernet so I get gigabit ethernet bandwith, without paying gigabit prices.
I have installed SmoothWall four times, for friends, on machines running the gambit from P100/12mb ram to P166/96mb ram, and using ethernet cards for DSL/Cable, it's a dream. That is, as long as the distro has drivers for your card (damn Tulips).
Then, for my parents who live in rural east Texas with a dialup connection, I had to figure out how to get an internal modem working in Linux. After reading the entire internet:-) and buying no fewer than four modems, I found one that should work. After another day or so of frustration, I contacted the helpful people at SmoothWall.org and I actually chatted with Mr. Morrell directly on their irc server. In five minutes, he'd set me straight and it was up and running. It was a CEBCAK (Computer Error Between Chair And Keyboard), naturally.
For all the people bellyaching about how one guy represents the GPL developers, or doesn't use shadow passwords... whatever. At the end of the day, all that matters is getting the job done. And I recommend it to anyone who has a spare PC lying about, too.
For every data set that is compressible 100:1 (which I will grant them.. even a fool can do that), there are 99 which grow larger or the compression fails entirely.
So, they have figured out a way to compress difficult-to-compress data rather well, but cannot compress easy stuff that LZW works on? Rather dubious, but I'll eat my words with a smile if they can put all the Star Trek episodes on a floppy disk.
I kept reading, waiting for anything insightful in the five pages worth of descriptive melodrama, and came up empty.
As a programmer in the game industry, I've had many friends work at Ion Austin over the years and all of them think very, very highly of Warren Spector. I'm really glad they have proven to be capable under his leadership.
What I really disliked about Ion Dallas and John Romero's public image was the inherent cheapness. I liken it to a trailer trash lottery winner, embarassing everyone else in the industry with his grand standing. Sadly, Mr. Romero may be a fantastic designer, but all Ion Storm proved was his inability to run a company. There are some people who can do both, and he's not one of them.
While there's a lot of discussions about the usefulness or uselessness of a degree, I will give you a free piece of advice that comes from a similar situation.
I have a very good track record and have made all my milestones in my previous companies, been compensated well and generally made a bunch of friends wherever I went because I'm pretty easy to work with. (It gets easier with age, not experience.:-)
In January of this year, I left a company after two years of hard work, to see a bright horizon with recruiters and companies clamoring to hire me. I have no degree. They didn't care. Everyone asked about it, of course, but only one or two said it was an issue, and those were willing to overlook it on the basis of my record.
I took a job and did good things for them for 8 months. At this business, the recession really hit and funding came up short, so when they went through the tightening of the belts for the fourth time, I finally was laid off.
I wasn't worried at first, but after a couple of weeks, I realized that the recession was harder and colder than I thought. Few phone calls. No interviews. Nobody was hiring out-of-towners. Nobody would talk to me unless I had a degree, regardless of experience, because there are people out of work with both.
My free piece of advice: A degree is like a life buoy--it's rare that you have to fall back on it, but the security of having it is invaluable. When IT/CS are in short supply, a degree can mean very little. In times like these, it can mean everything.
It always seems to me that large rewrites (though I've never done one as large as the one discussed) tend to make bad code bases worse for a while. If there is any effort made to maintain functionality in a changing codebase, a piecemeal rewrite is more of a headache than a help. So, if you're planning on a big rewrite, please give your developers the full thumbs up to break everything and expect them to put it back together later--and expect to see nothing tangible in the short term. Or call it off.
That being said, my last company sat around and bickered about code style for nearly 4 months and produced no code that wasn't rewritten later. If you are going to concern yourself about style, settle that well in advance and make sure it's logical and consistent.
It's also been my experience that conformant code style is highly overrated. Once the Best Practices document extends beyond language constructs and caveats, into brace styles, spacing, tab size (yes, there was a 3 space tab stop standard at my last job--wretch), and even the naming of locals, parameters, members, constants, enumerations, etc... it got to be a thick ass bible of stuff that only a few people would digest or attempt to adhere to. The point I'm trying to make is, choose your battles. The hope is your developers will make sane choices independently, and use standards to help integrate different peoples' work together. Anything beyond that and it's pissing in the wind.
It's a little too simplistic to say sharing senses is the ultimate in communication. There are many many things that cannot be sensed but can be felt or thought. Sharing ideas directly is the grand achievement, because in order for an idea to be transmitted, it must have first been possible to form a concrete representation of it. This stratification of ideas is the holy grail of communication, because no loss of information can occur.
As for better jpegs and web phones... whatever. I won't be buying one. Why integrate poorly what can be done better separate? I'd rather have a great camera and a great phone than a mediocre camera/phone.
Linux looks like it needs more support than windows, in reality it does not, but it's "different" and that scares companies that are used to their current cash cow.
You make some good points about the retail end of things, but I have to disagree here. Linux does require more support than Windows. Why? Because Linux has more options and choices, and for every option and choice, you have a support requirement. That's why Windows has minimal support available--because as an operating system, you can't do squat with it that they didn't intend for you to do.
Most companies spend more every year supporting their software products to consumers than anything else. Microsoft went the route of minimizing this and charging through the ass for trouble calls. Most other large software vendors have followed suit.
What's the big deal? Direct connections did this on BBS's a long time ago. Simply, streaming all the data without flow control (Xmodem and early YModem required ACK/NAK), and let the client request the packets that it is missing leisurely. ZModem was the first to allow out of order delivery, from what I recall, and it revolutionized transfers with maximized bandwidth consumption.
The only thing this particular implementation allows is connecting at an arbitrary time and listening to a continuous loop of packets until you get them all. ZModem could easily be modified to do exactly this, except with checksum data per packet rather than XORing chunks of packets or using symbolic representations. I'm not read up on FEC, but if you're transmitting already compressed data (near the bit distribution of entropy), no alternate representation is advantageous than sending the raw data.
I guess you don't have any dipstick friends who think online greeting cards are cool? Those are spam list generators that you have no control over. If you post on a Usenet board and don't mask your return email and spam-proof any email address in your post, you're asking for it.
I do a fair bit of buy/sell/trading of computer hardware online, and I've noticed even with spam-proofed everything, I've seen an increase from 10/day to about 30/day in a few months. Once you're on a list, it's guaranteed to be merged with larger lists and resold. Just one spammer typing in addresses manually can demolish your email account. They never do this, though... they're spammers because they're lazy.
But, I combat it very effectively. I set up two mail rules.
Anything with known phrases that are spam, known subjects that are spam, etc, get moved to a JunkMail folder and marked as read.
Anything else which does not contain keywords I find interesting, and does not come from people in my address book, get moved to the same folder and marked as read.
This way, I've rejected about 95% of the spam I get, and only occasionally find new keywords to reject or passthrough. True, I do "pay" to download and store the spam locally, but I'm on broadband and delete the JunkMail every day anyway. At some point, when I'm pretty confident that I get all the mail I care to read, I'll change the rule actions to delete immediately.
The important thing to remember is once you've gotten on a list, you'll never get off. And at that point, it's not a matter of bellyaching about it, but being pro-active, because spammers are putting (some) effort into mail bombing you.
It's about as likely to get a significant enough settlement to cover lawyer fees and a bit more for spam, as it is to sue indigents for damages when they spit polish your windshield.
Spammers are by nature in the lowest percentile, or they wouldn't be spamming. Perhaps it would be lucrative for some ambulance chasers to 'buy' the rights to prosecute--the way they buy patent rights for prosecution purposes today--then at least someone could make a buck off it on average.
I have a large drive array on my server at home, with about 250 movies and many gigs of my cd collection, etc. After locating a low end PC (PII-350) and finding a TNT with video out, I decided it was time to see how streaming movies and songs would work.
The answer? Like a champ.
It sits beneath my VCR and DVD player for the time being, until I can afford a DVD (or burner) drive and a Radeon All-In-Wonder card. I figure, once those are in place, I'll probably need to upgrade the CPU for capture, but then I'll have a smooth VCR/DVD/Jukebox, without ever having to get off the couch. Oh yeah, wireless (radio) keyboard and mouse.
I wish I knew more about filesystem programming, because I've long wished to write a simple file system that uses a structure which is independent of the presentation of files.
It would be simply wonderful to create a file system view, per user, which exists not only to restrict what they can see (almost like being chroot'd with lots of mounts in that directory), but also to make certain things more accessible or differently organized based on properties you feel are important. Doing so currently requires a shitload of symbolic links and manual maintenance when adding or removing files. Instead, you should be able to mount a file set under a name and put a query in that file set, so that it appears to be a directory with files that match some given attributes. Then you build a hierarchy of those, since that's a natural way to think about things.
The lack of categorization, or meta data, for files has been a thorn in users' collective side for decades, and with the death of Mac metadata in OS X, there's no real proponents out there for improvement.
Uhm.. Have you ever really used a database, or are you karma surfing?
The alternative to relational databases is not "DBM", it is object oriented, tree structured, logical, and other kinds of database models. Those are just as well defined as relational databases.
I can't defend the original poster's assertion that DBM is the only alternative. I do argue that object oriented models are different in nature, since they allow functional bindings to data. The original question regarded hierarchical structure, but said nothing of bound functionality. Your example of object-oriented databases being alternatives may be true, but they are not equivalent.
As for the rest of your examples which are relationally different, they are subsets of RDB. Anyone could implement an hierarchical database interface using a RDB back end fairly easily, with no more than a constant performance penalty. However, it is impossible to do the reverse. Please, educate me if you think otherwise.
Your arguments have the ring of an emotional belief that implicit tree structures have some direct benefit that relational ones do not. They don't. Relational systems can explicitly describe a tree structure, which among other things makes it possible to extract small portions and move parts of them around (network, disk, memory) without changing their relationship or representation. A tree structure cannot without creating a relational database equivalent (through use of pointers or indices into a table, etc). This should be more than adequate to prove there is value in relational systems where trees are insufficient and inefficient for equal operations. Contrariwise, you cannot produce an operation for which trees are inherently faster. More natural to think about as a human, perhaps, but not mathematically advantageous in any way.
Are you kidding? It is a major pain trying to express hierarchical data in a relational database model:
Sorry, that's simply wrong.
The operations required to modify a data structure are related to the data structure, not its representation. That's why they have classes on teaching data structures as concepts, and not on implementing them. The same amount of data must be present in some form, even if you as a user are not aware of it. The relationship property of two nodes in a tree IS data. But in a tree, you often don't have direct access to it.
the relations that describe hierarchical data and the operations that you might want to execute often require complex, multiple, inefficient queries and updates, and the relational model provides few tools to ensure that the corresponding relations remain consistent.
The complexity for any representation is of the same Big-O order, regardless of the database type. I don't see where you can do more work in less statements with a non-RDB system which would be less complex or less inefficient, without throwing out some functionality. Also, relational databases usually support constraints to maintain valid relationships, as well. Please feel free to chime in here with some actual examples anytime, though.
[...]they generally include numerous facilities for object-oriented and hierarchical databases, under a "relational veneer".
Humans think hierarchically. Computers don't. It's natural to have explorer apps to help visualize data, but data does not want to be hierarchically organized.
For the record, object-oriented is not meaningful to associate with hierarchical order in exclusion of relational order. It is a common folly to think an object must be hierarchical in nature to be an object.
...was that it was a fantastic game before keyboards became commodity junk. On the old true-blue IBM PC or XT, you got a keyboard sturdy enough to dent a car if you swung it hard enough. Now they disintegrate from the wind resistance.
My point being, in those days each key on the keyboard could be pressed independently and the computer could discern EXACTLY which keys were down or let up. Spacewar for PC (and myriad multiplayer games that came later, using a single keyboard) demanded good quality keyboards. My buddies used to sit in the computer lab and play it for hours, until they 'upgraded' machines. They had 'new style' 101 keyboards (88 was enough for me then), and a new strategy came about: hold down as many keys as you could so your opponent couldn't thrust or shoot; when they get frustrated because they're falling toward the sun, spin around and shoot as fast as possible.
Most Spacewar games became shoving matches after that.
...ISP's (typically) use cable and phone lines. Sue the physical providers for making bandwidth available to the ISP in the form of copper lines to the house. Sue the people who developed TCP/IP and make it possible for computers to transmit information against the laws of the land. Sue the people who haven't sued all these people before, because their inaction caused such economic losses.
Really. It's a big world out there, and occasionally people have to own up to their own actions.
At my last job, we had a COW (Cluster of Workstations) running all sorts of operating systems. Except Windows. Why? Because they won't run in a production environment for more than a few days without freezing or crashing, and the system administrators refused to babysit them. With Windows 2000, I've had my home machine run for upwards of 28 days without a reboot, but only if all the video drivers are stable and the machine is not doing too much at any given point (say, burning cds while watching movies and keeping my net connection above 200k/s). But so help you if a driver freezes. There's no way to reset them. Your hardware will play into your decision as much as the operating system, I believe, due to stable driver support.
In terms of performance, Windows kernels have pretty good latency compared to 2.2.x linux kernels, so running a full screen dos app might give very good performance, but there's a lot of overhead munching into your RAM, which is likely to be an expensive premium on older hardware.
Lastly, with Windows, I've never heard of doing channel bonding for ethernet (3 100TX cards ~= 1 gigabit), nor diskless booting that I know of. These can be really necessary for large clusters to keep maintenance down and performance up without buying higher end equipment.
...a 'popular' Microsoft product that hasn't had virus capability? Word, Excel, Outlook, Outlook Express, countless Windows 3.1 thru 2000, hell, XP is a honey pot OS just by connecting it to a network. My point being, why is this news? Anything you run with M$ in the About box will at some point destroy one or more aspects of your computer, be it the hard drive, cpu, network connection, etc. Today it's the IM. Tomorrow it'll be the icon editor...
...yeah, my employer installed rectal scanners a while back. They seem to work fine, but there's always one or two real assholes who spend a lot of time using them.
Information does not want to be free. It wants to be sold. It's just easier to copy. :-)
My beef isn't that there are different types of data, but rather that my personal information is not for sale at all. But for some reason, businesses not only use and copy it freely, but sell it without giving me a cut of the profits. It's my information. No different than artists feel when someone copies their mp3's.
Perhaps it's time I copyright my private data and charge companies to fill out their customer registration cards?
At least in the USA, corporations are legal citizens, and can make contracts with others. Maybe it's time I have people sign a contract in order to obtain information about me. If enough people make this difficult or impossible to manage effectively, they'll just stop.
Isn't it about time good ol' SMTP is put to rest?
In an ideal mail system, it would work much like the current IM clients do. All email is digitally signed by the sender, and encoded using your public key. Each client has a filter list of signatures they will accept mail from ("friends"), a set of keywords they are interested in ("acceptable spam"), and a set of keywords they will never accept ("objectionable content"). Any message not signed and not encoded using a registered public key (you might have several) will be rejected.
The reason for multiple public keys is you might post to a newsgroup saying you have some stuff for sale. You post a public key with it, specifically to receive things about that message. After a week, or when you've sold your goods, you unregister that key with your mail reader and you never see anything about it again. Spammers would otherwise troll for public keys and your email address. You'd probably give family and friends your 'trusted' public key. If it ever leaks out, you change your key and mail it to your friends, then disconnect your old one.
I suppose this can all be implemented on top of SMTP, but giving servers the ability to reject mail and kill spam would be a big reduction in wasted bandwidth.
But, all these issues don't prevent me from running Freenet. I find it comforting to support anonymity on the internet, like in the old days. It's really not up to scratch for P2P file sharing, though. Never will be.
Frost, on the other hand, seems like a really slick attempt at totally anonymous newsgroups built on top of Freenet. I've run it a few times and like it. It's slow as molasses, but that's not Frost's fault (see above).
If you're looking to do the same thing, cheaply and with a little DIY hardware tech time, simply buy a big ATX case with room for a couple of extra power supplies, install a 386 or 286 mobo (all ISA slots!!!), and buy a number of these computers and plug them in. They don't draw power from the motherboard, so you don't even bother connecting the 286 to power. Instead, tie each power supply to one or two of these cards directly (requires a little soldering), and there you go. A cluster in a box.
If I had the money, I'd be doing this myself. Instead, I've got a rack full of 4U AT cases with dual PPro 200mhz machines instead. The one advantage to having full sized motherboards (with PCI slots) is that I'm installing triple-channel-bonded ethernet so I get gigabit ethernet bandwith, without paying gigabit prices.
...I didn't claim to retain any of it... :-)
I have installed SmoothWall four times, for friends, on machines running the gambit from P100/12mb ram to P166/96mb ram, and using ethernet cards for DSL/Cable, it's a dream. That is, as long as the distro has drivers for your card (damn Tulips).
:-) and buying no fewer than four modems, I found one that should work. After another day or so of frustration, I contacted the helpful people at SmoothWall.org and I actually chatted with Mr. Morrell directly on their irc server. In five minutes, he'd set me straight and it was up and running. It was a CEBCAK (Computer Error Between Chair And Keyboard), naturally.
Then, for my parents who live in rural east Texas with a dialup connection, I had to figure out how to get an internal modem working in Linux. After reading the entire internet
For all the people bellyaching about how one guy represents the GPL developers, or doesn't use shadow passwords... whatever. At the end of the day, all that matters is getting the job done. And I recommend it to anyone who has a spare PC lying about, too.
For every data set that is compressible 100:1 (which I will grant them.. even a fool can do that), there are 99 which grow larger or the compression fails entirely.
So, they have figured out a way to compress difficult-to-compress data rather well, but cannot compress easy stuff that LZW works on? Rather dubious, but I'll eat my words with a smile if they can put all the Star Trek episodes on a floppy disk.
I kept reading, waiting for anything insightful in the five pages worth of descriptive melodrama, and came up empty.
As a programmer in the game industry, I've had many friends work at Ion Austin over the years and all of them think very, very highly of Warren Spector. I'm really glad they have proven to be capable under his leadership.
What I really disliked about Ion Dallas and John Romero's public image was the inherent cheapness. I liken it to a trailer trash lottery winner, embarassing everyone else in the industry with his grand standing. Sadly, Mr. Romero may be a fantastic designer, but all Ion Storm proved was his inability to run a company. There are some people who can do both, and he's not one of them.
While there's a lot of discussions about the usefulness or uselessness of a degree, I will give you a free piece of advice that comes from a similar situation.
:-)
I have a very good track record and have made all my milestones in my previous companies, been compensated well and generally made a bunch of friends wherever I went because I'm pretty easy to work with. (It gets easier with age, not experience.
In January of this year, I left a company after two years of hard work, to see a bright horizon with recruiters and companies clamoring to hire me. I have no degree. They didn't care. Everyone asked about it, of course, but only one or two said it was an issue, and those were willing to overlook it on the basis of my record.
I took a job and did good things for them for 8 months. At this business, the recession really hit and funding came up short, so when they went through the tightening of the belts for the fourth time, I finally was laid off.
I wasn't worried at first, but after a couple of weeks, I realized that the recession was harder and colder than I thought. Few phone calls. No interviews. Nobody was hiring out-of-towners. Nobody would talk to me unless I had a degree, regardless of experience, because there are people out of work with both.
My free piece of advice: A degree is like a life buoy--it's rare that you have to fall back on it, but the security of having it is invaluable. When IT/CS are in short supply, a degree can mean very little. In times like these, it can mean everything.
It always seems to me that large rewrites (though I've never done one as large as the one discussed) tend to make bad code bases worse for a while. If there is any effort made to maintain functionality in a changing codebase, a piecemeal rewrite is more of a headache than a help. So, if you're planning on a big rewrite, please give your developers the full thumbs up to break everything and expect them to put it back together later--and expect to see nothing tangible in the short term. Or call it off.
That being said, my last company sat around and bickered about code style for nearly 4 months and produced no code that wasn't rewritten later. If you are going to concern yourself about style, settle that well in advance and make sure it's logical and consistent.
It's also been my experience that conformant code style is highly overrated. Once the Best Practices document extends beyond language constructs and caveats, into brace styles, spacing, tab size (yes, there was a 3 space tab stop standard at my last job--wretch), and even the naming of locals, parameters, members, constants, enumerations, etc... it got to be a thick ass bible of stuff that only a few people would digest or attempt to adhere to. The point I'm trying to make is, choose your battles. The hope is your developers will make sane choices independently, and use standards to help integrate different peoples' work together. Anything beyond that and it's pissing in the wind.
My $2e-2 or less.
It's a little too simplistic to say sharing senses is the ultimate in communication. There are many many things that cannot be sensed but can be felt or thought. Sharing ideas directly is the grand achievement, because in order for an idea to be transmitted, it must have first been possible to form a concrete representation of it. This stratification of ideas is the holy grail of communication, because no loss of information can occur.
As for better jpegs and web phones... whatever. I won't be buying one. Why integrate poorly what can be done better separate? I'd rather have a great camera and a great phone than a mediocre camera/phone.
Linux looks like it needs more support than windows, in reality it does not, but it's "different" and that scares companies that are used to their current cash cow.
You make some good points about the retail end of things, but I have to disagree here. Linux does require more support than Windows. Why? Because Linux has more options and choices, and for every option and choice, you have a support requirement. That's why Windows has minimal support available--because as an operating system, you can't do squat with it that they didn't intend for you to do.
Most companies spend more every year supporting their software products to consumers than anything else. Microsoft went the route of minimizing this and charging through the ass for trouble calls. Most other large software vendors have followed suit.
What's the big deal? Direct connections did this on BBS's a long time ago. Simply, streaming all the data without flow control (Xmodem and early YModem required ACK/NAK), and let the client request the packets that it is missing leisurely. ZModem was the first to allow out of order delivery, from what I recall, and it revolutionized transfers with maximized bandwidth consumption.
The only thing this particular implementation allows is connecting at an arbitrary time and listening to a continuous loop of packets until you get them all. ZModem could easily be modified to do exactly this, except with checksum data per packet rather than XORing chunks of packets or using symbolic representations. I'm not read up on FEC, but if you're transmitting already compressed data (near the bit distribution of entropy), no alternate representation is advantageous than sending the raw data.
I do a fair bit of buy/sell/trading of computer hardware online, and I've noticed even with spam-proofed everything, I've seen an increase from 10/day to about 30/day in a few months. Once you're on a list, it's guaranteed to be merged with larger lists and resold. Just one spammer typing in addresses manually can demolish your email account. They never do this, though... they're spammers because they're lazy.
But, I combat it very effectively. I set up two mail rules.
- Anything with known phrases that are spam, known subjects that are spam, etc, get moved to a JunkMail folder and marked as read.
- Anything else which does not contain keywords I find interesting, and does not come from people in my address book, get moved to the same folder and marked as read.
This way, I've rejected about 95% of the spam I get, and only occasionally find new keywords to reject or passthrough. True, I do "pay" to download and store the spam locally, but I'm on broadband and delete the JunkMail every day anyway. At some point, when I'm pretty confident that I get all the mail I care to read, I'll change the rule actions to delete immediately.The important thing to remember is once you've gotten on a list, you'll never get off. And at that point, it's not a matter of bellyaching about it, but being pro-active, because spammers are putting (some) effort into mail bombing you.
It's about as likely to get a significant enough settlement to cover lawyer fees and a bit more for spam, as it is to sue indigents for damages when they spit polish your windshield.
Spammers are by nature in the lowest percentile, or they wouldn't be spamming. Perhaps it would be lucrative for some ambulance chasers to 'buy' the rights to prosecute--the way they buy patent rights for prosecution purposes today--then at least someone could make a buck off it on average.
I have a large drive array on my server at home, with about 250 movies and many gigs of my cd collection, etc. After locating a low end PC (PII-350) and finding a TNT with video out, I decided it was time to see how streaming movies and songs would work.
The answer? Like a champ.
It sits beneath my VCR and DVD player for the time being, until I can afford a DVD (or burner) drive and a Radeon All-In-Wonder card. I figure, once those are in place, I'll probably need to upgrade the CPU for capture, but then I'll have a smooth VCR/DVD/Jukebox, without ever having to get off the couch. Oh yeah, wireless (radio) keyboard and mouse.
Modulus is the % operator. Stick to EE/CE. They need you more than we do. ;-)
I wish I knew more about filesystem programming, because I've long wished to write a simple file system that uses a structure which is independent of the presentation of files.
It would be simply wonderful to create a file system view, per user, which exists not only to restrict what they can see (almost like being chroot'd with lots of mounts in that directory), but also to make certain things more accessible or differently organized based on properties you feel are important. Doing so currently requires a shitload of symbolic links and manual maintenance when adding or removing files. Instead, you should be able to mount a file set under a name and put a query in that file set, so that it appears to be a directory with files that match some given attributes. Then you build a hierarchy of those, since that's a natural way to think about things.
The lack of categorization, or meta data, for files has been a thorn in users' collective side for decades, and with the death of Mac metadata in OS X, there's no real proponents out there for improvement.
Oh well... In my dreams...
Uhm.. Have you ever really used a database, or are you karma surfing?
The alternative to relational databases is not "DBM", it is object oriented, tree structured, logical, and other kinds of database models. Those are just as well defined as relational databases.
I can't defend the original poster's assertion that DBM is the only alternative. I do argue that object oriented models are different in nature, since they allow functional bindings to data. The original question regarded hierarchical structure, but said nothing of bound functionality. Your example of object-oriented databases being alternatives may be true, but they are not equivalent.
As for the rest of your examples which are relationally different, they are subsets of RDB. Anyone could implement an hierarchical database interface using a RDB back end fairly easily, with no more than a constant performance penalty. However, it is impossible to do the reverse. Please, educate me if you think otherwise.
Your arguments have the ring of an emotional belief that implicit tree structures have some direct benefit that relational ones do not. They don't. Relational systems can explicitly describe a tree structure, which among other things makes it possible to extract small portions and move parts of them around (network, disk, memory) without changing their relationship or representation. A tree structure cannot without creating a relational database equivalent (through use of pointers or indices into a table, etc). This should be more than adequate to prove there is value in relational systems where trees are insufficient and inefficient for equal operations. Contrariwise, you cannot produce an operation for which trees are inherently faster. More natural to think about as a human, perhaps, but not mathematically advantageous in any way.
Are you kidding? It is a major pain trying to express hierarchical data in a relational database model:
Sorry, that's simply wrong. The operations required to modify a data structure are related to the data structure, not its representation. That's why they have classes on teaching data structures as concepts, and not on implementing them. The same amount of data must be present in some form, even if you as a user are not aware of it. The relationship property of two nodes in a tree IS data. But in a tree, you often don't have direct access to it.
the relations that describe hierarchical data and the operations that you might want to execute often require complex, multiple, inefficient queries and updates, and the relational model provides few tools to ensure that the corresponding relations remain consistent.
The complexity for any representation is of the same Big-O order, regardless of the database type. I don't see where you can do more work in less statements with a non-RDB system which would be less complex or less inefficient, without throwing out some functionality. Also, relational databases usually support constraints to maintain valid relationships, as well. Please feel free to chime in here with some actual examples anytime, though.
[...]they generally include numerous facilities for object-oriented and hierarchical databases, under a "relational veneer".
Humans think hierarchically. Computers don't. It's natural to have explorer apps to help visualize data, but data does not want to be hierarchically organized.
For the record, object-oriented is not meaningful to associate with hierarchical order in exclusion of relational order. It is a common folly to think an object must be hierarchical in nature to be an object.
Sounds like it'd be nice to have suspension in ram, but getting rid of memory resident nasties could be a lot harder.
:-)
Today (with Windows) most people are safe because they have to reboot every other day.