The Lounge is rated Safe For Work. If you're about to post something inappropriate for a shared office environment, then don't post it. No ads, no abuse, and no programming questions. Trolling, (political, climate, religious or whatever) will result in your account being removed.
CouchDB is another alternative, but MongoDB is the one I hear mentioned most often.
Having said that, a lot of those mentions are on infosec news, when someone's left their MongoDB store up, unprotected, on Amazon S3 and the data in it has been compromised... That's not MongoDB's fault, of course
Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p
I may be thinking of another incident where researchers just tried the default MongoDB port on thousands of servers and found that for many of those servers the port was open and the database was exposed.
Because 1.x existed prior to generics we have issues of legacy object models not implementing IList<T> and instead simply exposing hard typed indexer properties.
Normally, you'd just get the generic parameters of the generic IEnumerable<T> interface, but because some object trees were created prior to 2.0 - like the CodeDOM they don't have them.
This makes determining the element type of a typed list extremely difficult. The problem is that your alternative is the indexer property which isn't a member of a hard interface, so you have to select the appropriate indexer property from the properties on that type. There might be this[string name] in there too, for example. There is no contract however, so there are no guarantees. This isn't especially robust.
Which means, the obvious solution is to first try to get it using the generic interfaces, and if they aren't available, then we fall back to the less robust method above.
This is not ideal, and it requires maybe a page of code to handle all the scenarios.
Microsoft didn't put generics into 1.x I think because of time constraints, and if so they should have waited, IMO.
1.x was just "beta" to play around with, it was never intended for production code, but *hands up* the company I worked for at the time did indeed use it in production. We used sockets a fair bit to communication with UNIX systems and also with banking applications, and .net had socket classes built in so we were keen to migrate to it ASAP.
At a previous employer I maintained a .net 1.1 winform app from 05-08. (Other people wrote the initial version in 04 before I started.) We couldn't upgrade to a newer version initially because the customer still had NT4 boxes at some sites; which couldn't run .net 2.0.
On the plus side the beige NT4 tower stuck in the back corner of my cube gathering dust was my justification for having N+1 monitors for years. (With the +1 spending 99% of its time connected to my main computer.)
Did you ever see history portrayed as an old man with a wise brow and pulseless heart, weighing all things in the balance of reason?
Is not rather the genius of history like an eternal, imploring maiden, full of fire, with a burning heart and flaming soul, humanly warm and humanly beautiful?
Training a telescope on one’s own belly button will only reveal lint. You like that? You go right on staring at it. I prefer looking at galaxies.
-- Sarah Hoyt
There's little to fix. The problem I think, is backward compatibility. I mean, I suppose they could rewrite the CodeDOM in a new System assembly but I think they'd be more likely to retire it, if anything.
It's quite powerful. It even allows you to parse a C# subset into the CodeDOM so you can construct CodeDOM graphs using C# code, which saves a lot of typing. It allows you to query a CodeDOM tree, and even can perform complex operations on CodeDOM trees like reflection and method selection.