I offer SSDs as an option on my new builds, and even after explaining the speed benefits don't have any takers, why? Because folks want bigger more than they want faster, that's why.
I do the same, and 90% of the time, they want SSD. You're not explaining it right.
Some people sell it as an "either" option: You can either have the speed or the capacity, choose one.
The solution is to simply sell both. An SSD for boot, apps, and speed sensitive data (think Outlook PSTs), and a huge spinning disk for everything else.
This reminds me of when GUI's were new in the mid 80's, all the elitist jerks who fancied themselves to be high-caliber nerds loudly proclaiming that it was all a gay bullshit fad, etc., ad nauseum.
Lemme ask you guys, any chance we'll get a humble redaction if it turns out you are completely and utterly wrong about this?
I still think most GUIs are fundamentally wrongly engineered. Not only is there no text interface to them, there's often no interface to the event stream at all. It all has to be done with compiled OO languages, hugely platform-specific binary interfaces, and callbacks, which compared to the scripting power of a good CLI - or even to the original Smalltalk/Dynabook vision - is just... wrong is the only word for it. The whole messy overcomplicated paradigm 'works', but only in very limited cases and in spite of itself.
I mean, to make our fancy classful binary OO GUIs work across the net, what did we have to invent? A text-based, page-based protocol called HTTP. There's something wrong with this picture. Wasn't OO itself supposed to solve distribution scalability problems? In our universe, it didn't. We had to go back to ASCII text streams for that.
There must be lessons to be learned from the whole GUI -> Web experience, but I don't see many people teaching about them, or even acknowledging that they exist.
In comparison to the *nix model, where a software program 'A' generates human readable ASCII text representations of binary objects, which are then piped, character-by-character, to another program 'B', which has to parse the display representation, convert it back to a binary object. Of course, none of these display representations follow any meaningful standard like XML, none can be parsed without in-depth knowledge of all of the various possible outputs (none of which are documented), and there's not even any real consistency between any of the tools or APIs. Not to mention that much of the text manipulation in Linux tools is in ASCII, not Unicode, so the whole thing comes crashing down the instant you step outside the Anglophile world.
This is why the atrocity called 'Perl' was invented, because *nix scripting is actually largely centred around text manipulation, searching, and parsing, not actually, you know.. doing things.
In comparison, Windows exposes stable binary interfaces with auto-discovery metadata that can be directly called by either scripts or native code, and all that is involved is a "drag&drop" operation.
Nobody who's actually used an SSD talks about how hard drives will remain relevant. Nobody.
It's not even about the streaming speeds. Going from 60 IOPS (typical SATA disk) to 6000 IOPS(*) is a night & day difference. There's just no comparison. Meanwhile, the latest SATA 6 Gbps drives can reputedly do 60,000 IOPS!
To put that in perspective, 60K IOPS is the same as a 350x 15K RPM drives in a SAN storage array. That's the kind of thing that banks buy for $millions, but it's still not as good as the SSD, because a SAN can only do those IOPS if it's receiving many independent requests on many "threads". The latency of any single request is still a couple of milliseconds. Meanwhile, SSDs can not only pull insane aggregate IOPS, but they can do it for a single thread, because the latencies are way lower.
There's "enterprise" SSDs out already that can do over 200K IOPS over PCI-e. Sooner or later, that's going to trickle down to the consumer market.
Hard drives are the new tape.
*) that's what I get from the somewhat outdated SSD in my laptop.
Uhm, I would like to point out that Big Bang theory works to within measurable experimental error (hence this XKCD comic).
Big Bang theory does not cover inflation, matter vs anti-matter, large-scale matter distribution, or whether or not the laws of physics are constant over all space and time. When you say that you sound like one of those Intelligent Design tards who claim that evolution is flawed because it doesn't explain the evolution of galaxies and stars.
Big Bang theory does cover the very initial conditions of the Universe, and with it we can predict what the cosmic microwave background should be to an astonishing degree of accuracy.
If you are interested in what modern physics thinks of the beginning of the Universe, I would recommend starting with the "The Greatest Story Ever Told" posts on Starts With A Bang
In other words, it predicts some statistical measurements with an extremely narrowly defined scope to high precision.
As a scientific theory, that's not very strong. We know that something is happening, but we don't know why.
Evolution, in comparison, explains the 'why' completely.
I'm not saying the Big Bang theory is wrong, it's just that it's not very explanatory, predictive (in breadth, not numeric precision), or backed by as much evidence as Evolution is.
How did this get modded up? I know that it... sounds like it makes sense, but it's the exact opposite of what actually goes on.
They're proving both quotes that 'real men build hardware" and that "real software lovers build hardware" from IBM and Apple.
Both IBM and Apple design Software and Hardware to complement each other. Compare an iSeries or iPad to the typical Oracle setup where they are at the mercy of Intel, AMD, Microsoft, IBM, etc to get their Database to work. Defining a basic Schema is full of so many tips and tricks compared to any other database
WTF? It's hard to define an Oracle schema because of a client's choice of instruction level compatible CPUs? Are you kidding me? I've never heard of anyone actually altering their database schema design to target it for either "Intel" or "AMD". That's insane.
. Sure, it's nice to choose the "optimum" setting for every single block of data... but wouldn't it be BETTER to simply format the hard drive the way you want it in the first place and to build the most critical functions directly into firmware?
First of all, it's quite possible to "format the disk" natively with Oracle's database files, bypassing the OS filesystem. Even Microsoft SQL Server can do that, it's just not advertised as a big feature. Yes, there are performance gains (I've heard up to 20% in some corner cases), but it's almost never worth it, because the downsides are enormous. Managing a LUN is much harder than managing a file. Either way, this can be done now. There's no reason for some sort of magic hardware support.
Second, somehow 'burning' Oracle in the firmware is neither going to make it faster, nor improve anything else. It'll just make it harder to patch and manage, and it'll mean that a future service pack may not fit into the limited flash space. I can't imagine too many deployments where the speed of the program storage is the limit. Even if it is, it's not like you can't boot-from-SAN or just buy an SSD for any old server now!
IBM stuff can do really neat things like split database writes in the disk controller and keep track of multiple copies at once on redundant systems.
You just can't do that level of stuff with the tools Oracle or Microsoft has now.
Yes, you can. The differences between the major vendors at the "low level" have been tiny for years and years now. The real differences are at the high-level, pure-software layer. Features like RAC differentiate DB2, Oracle, and SQL Server from each other, not the RAID controllers.
Microsoft's sole existence is based on separation of hardware and software... so everybody squabbles between Intel/AMD, ATI/Nvidia, Oracle/MySQL, etc... and Microsoft gets rich playing "middleman" being the only party the others can legally talk to.
Are you kidding me? Since when is Intel some poor pauper holding out a begging bowl to Microsoft? Last time I looked, both Intel and Oracle had market capitalisations over USD 100 billion, and were 'legally allowed' to talk to each other.
There is already a company that makes a Sparc based blade for IBM BladeCenter chassis, drop it in an IBM Blade and share your SAN and have backplane-level network between the other hardware and OSes....this is what Oracle is after. Rather than keep playing games with other vendors, simply sell "Oracle" like IBM sells System i (iSeries). You would by an Oracle blade and simply connect that to your network. There's no point in loading multiple apps on hardware...
it's so cheap now versu
On the other hand, much about evolution is, I think, less certain than most people make it
Unfortunately, you are entirely wrong on this point. Evolution is much, much more robust than most people think. It has literally mountains of evidence backing it from dozens of fields. There's is absolutely no possible way in which it could be entirely wrong, unless you are willing to go into solipsistic notions like "reality is just a big collective dream".
On the other hand, the Big Bang theory has only a small handful of evidence backing it. It is a very simple theory that makes few predictions, and offers few explanations or an underlying cause for any of it.
For example, there's still no clear picture of:
- why the universe is even expanding in the first place. - what the "inflation" period at the very beginning was caused by or exactly how it occurred - we still don't know why there's much more matter than anti-matter - we still don't know precisely why matter is distributed the way it is at large scales - we're still not entirely certain if the laws of physics were precisely consistent across all time (including the first few femtoseconds) - I'm yet to see convincing evidence either way of whether the universe is going to keep expanding forever, come to a big crunch, or what...
If the Big Bang theory was as good as you make it out to be, all of those questions would be answered conclusively and rigorously. Right now, our understanding of the universe is not much better than epycicles. We can make good numeric or statistical predictions about a few things, but we have no idea why our models work, and everything breaks down at the extremes.
And you know who buys the top of the line super expensive cards? Pretty much no one. Everyone else either buys a mid-range card or last years top of the line. Both of those will last you a few years and the all around computer cost is less than a console.
Don't believe me that consoles are more expensive? I'm a PC gamer (who occasionally plays console games) and a friend of mine is a console gamer (who occasionally plays PC games). He tries to use your argument about "it's expensive with upgrading your computer", yet he ignores the fact that 1) console games virtually never go down in price, where PC games drop in price very quickly after the first few months and 2) Consoles nickel and dime you to death. We actually sat down and did the math one time and for his Wii, 360, PS3 and enough controllers for 4 players on each, it came out to over $2,500 for just the console hardware. You can easily buy two very good gaming systems for less money over the course of the lifespan of a console generation.
So no, people don't turn to consoles because they're cheaper, people turn to consoles because they can't do basic math.
Actually, people do buy the super expensive cards, and it's often not a bad deal.
I got myself an NVIDIA GTX8800 when it just came out. It ran super hot, cost me quite a bit, but it was the fastest single-card/single-chip 3D accelerator on the market for something like a year, and even when faster cards came out, the difference was something like 10% for a long time.
In the end however, it was cheaper for me to buy a very good card once and keep it for a couple of years, than to repeatedly buy older model cards at a lower price to be able to play the latest games.
I could play Crysis just fine at 1920x1200 when it was first available, which was pretty much only possible on that card or an SLI system, unless you enjoyed playing the "Crysis slideshow". If I had an older model card, I'd have been forced to upgrade.
Pundits have been tolling the death knell of rotating storage for... decades?
But somehow, the rotating storage business manages to innovate its way back to relevance -- Winchester technology, thin film heads, headerless architectures, increased spindle speeds, bigger caches, perpendicular recording, 4k sectors, continuing advances in encoding and ECC, continuing advances in media -- the advances keep coming.
And whatever happened to bubble memory, anyway? Wasn't that supposed to save the day and obsolete rotating storage once and for all? Isn't that what Intel promised us?
But despite all of those improvement, over decades, the minimum and average access speeds of drives hasn't improved significantly. A random read still takes milliseconds, which is a simply enormous time for a modern computer to wait. This in turn reduces the throughput in comparison to the streaming speed, making even the 'fastest' hard drives quite slow in practice for most workloads. I've seen benchmarks for 'enterprise' drives doing only a few hundred KB/sec for random reads. This is 2010! Computers can process data just a *tad* faster than that!
In comparison, most SSDs have random read times under a millisecond already, and some PCI-E versions are in the dozens of microseconds range. The random read throughput can be as high as 50% of the streaming throughput, and some drives are closer to 90%.
That's a night & day difference. It's like going from VHS to DVD.
And it's still not fast enough. A modern CPU can process IO data at rates of up to gigabytes per second, easily*. Physical drives have fallen woefully behind, and even SSDs aren't quite there yet unless you RAID a bunch of them.
*) For example, a SUN Thumper, which is just two average quad-core AMD Opterons, can send 1GB/sec (not gigabit, gigabyte) of iSCSI traffic down the wire. That includes reading from disk, decoding the ZFS structures, verifying the hashes, processing the iSCSI commands, and talking to the network card at 10Gbps. In comparison, the best consumer SSDs are still around the 250MB/sec mark.
What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in.NET 4, and it's just... sad.
I love when Some Guy on SlashDot mocks those silly (Ph.D, very very highly paid, very experienced) idiot developers at Microsoft. I'm sure you're a paragon of the software world, dude.
Paragon.
Oh, I'm not, other people are. Like the guys who work for SUN, who integrated the best available multi-threading library for Java into the standard libraries. This was like... many years ago.
Keeping in mind that C# and Java are virtually identical, why the hell wouldn't Microsoft implement a library that is "as good, or better"? Why would they implement some toy library that can't handle even trivial scenarios, let alone scale to hundreds of cores or handle huge enterprise apps?
The only reason I can think of that they wouldn't do things well is that they... can't.
Why for example does Windows Explorer decide to freeze ALL network connections when a single URN isn't quickly resolved? Why is it that when my USB drive wakes up, all explorer windows freeze? If you are trying to tell me there's no way using the current abstractions to implement this I say you're mad. For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is. You're left piecing together what has and hasn't been moved. File requests make up a good deal of what we're waiting for. It's not the bus or the drives that are usually the limitation. It's the shitty coding. I can live with a hit at startup. I can live with delays if I have to eat into swap. But I'm sick and tired of basic functionality being missing or broken.
That's because most Windows applications are written in C/C++, and it would be a royal pain to make them asynchronous.
People confuse "multi-threaded" and "asynchronous". They mean almost the same thing, but there's a substantial difference in development styles. Multi-threaded (or "multi-core") is usually when an algorithm is split to run parallel across 'n' threads, asynchronous is when a program does something in the background without blocking. The former is actually quite easy in C/C++, the latter is very hard, because tracking memory ownership across a bunch of threads is a huge pain. It would help a lot if the core Windows user-space apps were re-written in a managed language like C# so that they could use asynchronous code heavily without the developers twisting their brains into knots.
What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in.NET 4, and it's just... sad.
Like all IT administrators who've actually worked with server hardware, I have a heightened sense of smell, but only specifically for the smell of burning plastic. It's not a mere warning, it's an instant alarm that'll have every IT person in the room sniffing the power supplies.
We IT people, we're like bloodhounds or something. I can smell burned plastic from across the street. I've been set off by welders at a car mechanic a block away. I've been set off by an invisibly tiny bit of cheese someone dropped into a toaster oven once... three floors down from the server room. Had me in a right panic.
IT is all fun and games until the servers literally melt into slag. There's no repair CD for that -- and we all know that the backup tapes, while wonderful for backing up, aren't so good at the actual restoring bit. That's why they're called backup tapes, not restore tapes, see?
The only feature it's been playing "catchup" at is the display system. For pretty much everything else, OS X only hit parity with Windows *2000* at about 10.4/10.5.
[citation needed]
A bash command line (and Unixlike filesystem structure), a web browser that's actually standards-compliant (and was the first to pass Acid2), Exposé, a journaled filesystem, built-in support for reading and saving PDFs, built-in support for playing DVDs, and lower system requirements are all things OS X has had since before 10.4, and Windows 7 still doesn't have.
Windows didn't get the ability to rearrange taskbar icons until Windows 7 (8 years after OS X). Windows didn't get built-in indexed search until Windows Vista (4 years after OS X). Windows didn't get IPv6 support until Windows Vista (4 years after OS X). Windows ran everything as root by default until Windows Vista (6 years after OS X). Windows didn't get icons larger than 48x48 until Windows Vista (6 years after OS X).
Examples of features introduced since 10.4 that Windows still doesn't have include multiple desktops, and a bootloader that supports operating systems from more than one vendor.
Mac OS X also has the ability to edit.doc files, which Windows 7 can no longer do with the software that comes with the OS.
And then there's all the little things, like Grapher.
I'll admit the earlier versions of Mac OS X were somewhat flawed, but "worse than Windows 2000" is a pretty serious accusation, and one that requires evidence.
You have a point, sort-of, but about half of what you're saying is wrong or a huge exaggeration:
- NTFS is effectively journaled, but they don't call it that. It even has a built-in snapshot capability, which goes all the way back to Windows XP! There wasn't ever much of a GUI for it, but even XP could snap your disk on a schedule and expose it as a read-only mount point. Server editions can even do SAN-integrated transportable snapshots since Server 2003. - Windows has built-in support for reading and saving XPS documents, which is the MS equivalent of Adobe/Apple's PDF. - Windows 7 can play DVDs - "lowered system requirements" is relative. Windows 7 has lower requirements than Vista, and performs comparably to the now quite old Windows XP on the same hardware. - Windows XP had optional IPv6 support, not that it matters, because there still aren't any significant IPv6 services for PCs to connect to! - Windows doesn't "run everything as root". That's the default "home user" setting, but it most certainly can run in "restricted user" mode, and virtually all corporate PC deployments run this way.
Then one could turn around and talk about all of the things Windows has had for years that OS X still doesn't have, like:
- Active Directory - Group Policy - Desktop fleet management (SCCM, etc...) - Drivers for you know.. things that aren't Apple branded. - Binary compatibility with apps back to the stone ages.
I really don't get. HTML5 support, CSS3 and better Javascript performance and most of the posts on here are still complaining.
Because it doesn't support any of those standards, and if the MS developers are saying they aren't "focusing on ACID3", then clearly they won't support it..
The ACID tests test support for standards, and only browsers that are very standards compliant pass it.
Microsoft has systematically lied to developers with every IE release.
"No really, this time, we're going to support HTML x and CSS y! We promise!"
But they never actually do that. They support some arbitrary subset of those standards, and even the subset that they support is full of glaring bugs. This time, they're not even lying about it. By admitting that they aren't focusing on the ACID tests, they're basically admitting that they aren't focusing on real standards compliance. Instead, they're going for "checkbox compliance" - they're going to support just enough of the standards so that their marketing drones can put it on the box as a "feature", but not to the degree that it could actually pass a compliance test.
Maybe we could create a VM based language designed for networked applications, with a full blown security model down to the bytecode and performance as good as a static language.... And to make people comfortable we could name it something that sounds like JavaScript... I dunno... like Java.. Java... I can't think of one:)
Oh, and then Microsoft can adopt it just enough to completely derail it and prevent it from becoming useful in the browser market... And Sun can let the UI and media implementations lag permanently 5 years behind because it doesn't help them sell more server hardware... And the whole thing can just fester until Google comes along and teams of the smartest people in the world waste years of their lives building a layer of sanity over the JavaScript mess that is acceptable enough to write apps for...
Java had almost everything right, but failed utterly on two important fronts:
- slow initial load time of the interpreter. - GUI designers for layout and graphical elements
The first problem still hasn't be solved, and it's been more than a decade. When the Java plugin starts, everything grinds to a halt. What's even worse is that I have a fast dual-core CPU and a high-end SSD, and it still takes forever for that thing to load. Meanwhile,.NET apps and Flash both start instantly.
The second problem is only now being solved, slowly, and usually by third-parties. Microsoft did the "right thing" with their new WPF/Silverlight format XAML. It cleanly separates applications into a "declerative UI design language", and a "procedural scripting language". The point of this is that it's virtually impossible to make a good drag & drop GUI designer for a procedural language, but quite easy for a declarative one. Java never had a UI layout language, it just used more Java code.
Note that HTML provides both of these things: fast load times, and separated design and script languages: HTML/CSS and JavaScript, respectively.
And yes, I know that these issues are being kinda-sorta fixed in Java these days, and there's competing technologies like.NET that never had the problems in the first place, but it's too late for Java, and most of the alternatives aren't cross-platform. The Web 2.0 system won, because it was fast, had good GUI tools, and was cross-platform from day one.
To follow up on my own post, they have a draft upgrade guide up it looks like (they recommend that it not be used yet though): http://www.openbsd.org/faq/upgrade47.html
Looks like they include a utility to make life easier when upgrading... looks similar to what Gentoo Linux does when config files are upgraded... new configs are diff'd, and can be interactively merged, etc: "OpenBSD now includes the sysmerge(8) utility, which helps administrators update configuration files after upgrading their system. Sysmerge(8) compares the current files on your system with the files that would have been installed with a new install, and gives you the option of keeping the old file, installing the new file, or assisting you in the manual merging of the old and new files, using sdiff. For past upgrades, we've presented a list of files that are usually copied over "as-is", and a list of files which should be changed, and a patch file that applies those changes to what might be in those files on your system. You may opt to use sysmerge to make the changes, or you may wish to use the patch file first, and then follow up with a sysmerge session to clean up any loose ends."
So it looks like they're at least making an effort to make it less painful
Are you kidding me? The upgrade process is for the administrator to manually merge the configuration files!?!?
And this is the improved version? Wow. Just... wow.
I can't believe people here whine about how the Windows 'registry' is somehow the root of all evil, even though the vast majority of Windows apps (and Windows itself) handle version upgrades automatically.
Thank you for your reply. I do question the quality of the data at nationmaster. For example, this chart suggests that the US has no military spending at all.
Don't you know what inflation is? Any time you hear "doubled over the last decade", it's JUST INFLATION.
Look at the same graph, but as a % of GDP. There's a little bump, but it's not some massive trend upwards. Considering the US is fighting two wars, and has actually increased it's Afghanistan troop numbers recently, that's actually quite a small increase.
A year ago I was watching one of Discovery programs I think and they had a couple of guys who supposedly implemented a piece of software, that would allow an airplane to fly and land safely if for some reason, while in the air, the tale would brake off or rudder would just stop working. They relied on a fly by wire airplane of-course and controlled the yaw with all other surfaces by applying very slight changes to the motion. They were saying a human could do this if extremely lucky, but software was able to do it almost always.
Just something to think about.
I've heard about this. What's even more impressive is that it's possible to control jumbo jets (or any multi-engine plane) by complex time-varying throttle manipulation, even if all of the control surfaces are dead. The issues is that the 'turbo lag' makes this extremely challenging for humans.The pilots have to anticipate actions seconds in advance, instead of reacting to feedback. I hear it's like driving really drunk.
Computers on the other hand can use a theoretical model of the plane's behaviour to compute the ideal time to alter the throttle.
If it is matter of core-war, IBM's latest Power7 also has 8 cores. It is actually based on 45nm technology compared to Intel's latest 32nm. What makes Power7 exciting is that it has on-die 32MB L3 cache. They achieved this by introducing eDRAM (embedded DRAM) in the technology. Both Nehalem-EX and Power7 are targeting low-end server market, so it should be interesting battle.
The difference is maybe that you actually have to know why and how those theorems work. Because else you could not use them. Not knowing why a certain mathematical rule is applicable means that you cannot apply it, not knowing whether its use would be "legal" from within the mathematical ruleset.
This is not the case with library functions. All you have to know is what you want to accomplish, you drop that info into the help file, it spits out a function (most of the time not really the best one, but one that will more or less do the trick) and it will also tell you what you have to drop into that function to make the magic happen.
Now, math has been a while ago for me, but I cannot remember it being THAT easy.
Except that there's a little issue with that nice theoretical model: leaky abstractions.
If you blindly use functions (actually methods) without an understanding of what they do internally, you will get burned.
This is why crap code deadlocks. This is why crap code leaks memory. This is why crap code can't run on anything except a specific version of Windows with a specific version of IE.
"I think a better analogy would be to say that today's programmers are more like a Cargo Cult."
Responses to the recent MS-random-browser thread ("the faulty shuffle is close enough", "this guy's being pedantic", "knowing algorithms is a bad use of company time") are pretty good evidence of that.
The sad thing is that I recognise those exact same responses from when I submit critical security vulnerability reports to various development groups and companies.
Machines today are fast. Much, much faster than what we need for programs to run.
Until you get slashdotted. Having a sharp increase in number of runs per second can show just how fast your program isn't. And look at all the fail-whales soon after Twitter caught on.
Memory amounts today mean that it is pointless to ponder whether you really need double linked lists or whether you get by with single linked ones. Or that you use variables smaller than DWords to store integers.
Until you try to shave pennies from a mass-manufactured part.
+1 for parent.
Actually, what bugs me is not the throughput, but the latency. As the GP said, hardware is faster, and you can always throw more hardware at almost any problem, but the performance for most systems only improves for aggregate metrics like "requests per second". The speed of an individual request is often still quite slow.
I'm thinking of those beastly J2EE apps that require 3 tiers of hardware, dozens of servers, and yet still takes 5 seconds to respond to a mouse click!
Meanwhile, in the exact same Java language, using the exact same backend database system, on the same hardware platform, it's easy to write an app that responds in a few tens of milliseconds. All it takes is a bit of in-depth knowledge that seems to be lacking these days.
I have to agree with parent. I've written an implementation of every method I use from libraries such as STL or Java at least once in my life, sometimes in such painful languages as assembly. I did it just for the sheer joy of it (yes, I love programming that much) and as a learning experience. In all those years, I learned a very important lesson, don't reinvent the wheel. I have yet to receive a set of requirements from a client that say "give me the least efficient/over engineered way to do X" that would compel me to ever again need to re-write a quick sort algorithm, container implementation, or string parser.
I've come with a rule of thumb I tell younger programmers:
Do it yourself, then throw it away and use the standard library instead.
The idea is that if you haven't implemented an algorithm or something yourself at least once, you don't really understand it. Once you've gained that understanding however, you're better off using the polished and bug-fixed version everyone else is using.
Wear Leveling, RAID Can Wipe Out SSD Advantage for enterprise.
While it may not be efficient to slap together a platter of 16 SSDs, it is worthwhile to upgrade personal computers to use an SSD.
If there's a benefit, why wouldn't you upgrade your enterprise servers too?
We just built a "lab server" running ESXi 4, and instead of a SAN, we used 2x SSDs in a (stripe) RAID. The controller was some low-end LSI chip based one.
That thing was blazing fast -- faster than any SAN I have ever seen, and we were hitting it hard. Think six users simultaneously building VMs, installing operating systems, running backups AND restores, and even running database defrags.
It's possible that we weren't quite getting 'peak' performance from the SSDs, but nobody cared because were were still getting ridiculously good performance for 1/10th the cost of even a very low-end SAN.
Why wouldn't "enterprise" users want that kind of price/performance improvement?
"Purple and orange" is a professional color scheme?
I don't even know what color tie goes with a blue shirt, but even I know that's awful.
Actually, the purple-orange-green-grey color combination is pretty popular, especially in Asia, where's it's a traditional combination that I personally think looks rather nice. The issue is that it only looks good if the tones are properly matched, which isn't easy to achieve on the typical uncalibrated LCD with a narrow color gamut.
I do the same, and 90% of the time, they want SSD. You're not explaining it right.
Some people sell it as an "either" option: You can either have the speed or the capacity, choose one.
The solution is to simply sell both. An SSD for boot, apps, and speed sensitive data (think Outlook PSTs), and a huge spinning disk for everything else.
This reminds me of when GUI's were new in the mid 80's, all the elitist jerks who fancied themselves to be high-caliber nerds loudly proclaiming that it was all a gay bullshit fad, etc., ad nauseum.
Lemme ask you guys, any chance we'll get a humble redaction if it turns out you are completely and utterly wrong about this?
I still think most GUIs are fundamentally wrongly engineered. Not only is there no text interface to them, there's often no interface to the event stream at all. It all has to be done with compiled OO languages, hugely platform-specific binary interfaces, and callbacks, which compared to the scripting power of a good CLI - or even to the original Smalltalk/Dynabook vision - is just... wrong is the only word for it. The whole messy overcomplicated paradigm 'works', but only in very limited cases and in spite of itself.
I mean, to make our fancy classful binary OO GUIs work across the net, what did we have to invent? A text-based, page-based protocol called HTTP. There's something wrong with this picture. Wasn't OO itself supposed to solve distribution scalability problems? In our universe, it didn't. We had to go back to ASCII text streams for that.
There must be lessons to be learned from the whole GUI -> Web experience, but I don't see many people teaching about them, or even acknowledging that they exist.
In comparison to the *nix model, where a software program 'A' generates human readable ASCII text representations of binary objects, which are then piped, character-by-character, to another program 'B', which has to parse the display representation, convert it back to a binary object. Of course, none of these display representations follow any meaningful standard like XML, none can be parsed without in-depth knowledge of all of the various possible outputs (none of which are documented), and there's not even any real consistency between any of the tools or APIs. Not to mention that much of the text manipulation in Linux tools is in ASCII, not Unicode, so the whole thing comes crashing down the instant you step outside the Anglophile world.
This is why the atrocity called 'Perl' was invented, because *nix scripting is actually largely centred around text manipulation, searching, and parsing, not actually, you know.. doing things.
In comparison, Windows exposes stable binary interfaces with auto-discovery metadata that can be directly called by either scripts or native code, and all that is involved is a "drag&drop" operation.
Oh.. the horror!
Seconded.
Nobody who's actually used an SSD talks about how hard drives will remain relevant. Nobody.
It's not even about the streaming speeds. Going from 60 IOPS (typical SATA disk) to 6000 IOPS(*) is a night & day difference. There's just no comparison. Meanwhile, the latest SATA 6 Gbps drives can reputedly do 60,000 IOPS!
To put that in perspective, 60K IOPS is the same as a 350x 15K RPM drives in a SAN storage array. That's the kind of thing that banks buy for $millions, but it's still not as good as the SSD, because a SAN can only do those IOPS if it's receiving many independent requests on many "threads". The latency of any single request is still a couple of milliseconds. Meanwhile, SSDs can not only pull insane aggregate IOPS, but they can do it for a single thread, because the latencies are way lower.
There's "enterprise" SSDs out already that can do over 200K IOPS over PCI-e. Sooner or later, that's going to trickle down to the consumer market.
Hard drives are the new tape.
*) that's what I get from the somewhat outdated SSD in my laptop.
Uhm, I would like to point out that Big Bang theory works to within measurable experimental error (hence this XKCD comic).
Big Bang theory does not cover inflation, matter vs anti-matter, large-scale matter distribution, or whether or not the laws of physics are constant over all space and time. When you say that you sound like one of those Intelligent Design tards who claim that evolution is flawed because it doesn't explain the evolution of galaxies and stars.
Big Bang theory does cover the very initial conditions of the Universe, and with it we can predict what the cosmic microwave background should be to an astonishing degree of accuracy.
If you are interested in what modern physics thinks of the beginning of the Universe, I would recommend starting with the "The Greatest Story Ever Told" posts on Starts With A Bang
In other words, it predicts some statistical measurements with an extremely narrowly defined scope to high precision.
As a scientific theory, that's not very strong. We know that something is happening, but we don't know why.
Evolution, in comparison, explains the 'why' completely.
I'm not saying the Big Bang theory is wrong, it's just that it's not very explanatory, predictive (in breadth, not numeric precision), or backed by as much evidence as Evolution is.
How did this get modded up? I know that it... sounds like it makes sense, but it's the exact opposite of what actually goes on.
They're proving both quotes that 'real men build hardware" and that "real software lovers build hardware" from IBM and Apple.
Both IBM and Apple design Software and Hardware to complement each other. Compare an iSeries or iPad to the typical Oracle setup where they are at the mercy of Intel, AMD, Microsoft, IBM, etc to get their Database to work. Defining a basic Schema is full of so many tips and tricks compared to any other database
WTF? It's hard to define an Oracle schema because of a client's choice of instruction level compatible CPUs? Are you kidding me? I've never heard of anyone actually altering their database schema design to target it for either "Intel" or "AMD". That's insane.
. Sure, it's nice to choose the "optimum" setting for every single block of data... but wouldn't it be BETTER to simply format the hard drive the way you want it in the first place and to build the most critical functions directly into firmware?
First of all, it's quite possible to "format the disk" natively with Oracle's database files, bypassing the OS filesystem. Even Microsoft SQL Server can do that, it's just not advertised as a big feature. Yes, there are performance gains (I've heard up to 20% in some corner cases), but it's almost never worth it, because the downsides are enormous. Managing a LUN is much harder than managing a file. Either way, this can be done now. There's no reason for some sort of magic hardware support.
Second, somehow 'burning' Oracle in the firmware is neither going to make it faster, nor improve anything else. It'll just make it harder to patch and manage, and it'll mean that a future service pack may not fit into the limited flash space. I can't imagine too many deployments where the speed of the program storage is the limit. Even if it is, it's not like you can't boot-from-SAN or just buy an SSD for any old server now!
IBM stuff can do really neat things like split database writes in the disk controller and keep track of multiple copies at once on redundant systems.
Err.. you mean scatter-gather IO and synchronous mirroring? Ooo... fancy stuff, I bet nobody's ever managed to do that in software!
You just can't do that level of stuff with the tools Oracle or Microsoft has now.
Yes, you can. The differences between the major vendors at the "low level" have been tiny for years and years now. The real differences are at the high-level, pure-software layer. Features like RAC differentiate DB2, Oracle, and SQL Server from each other, not the RAID controllers.
Microsoft's sole existence is based on separation of hardware and software... so everybody squabbles between Intel/AMD, ATI/Nvidia, Oracle/MySQL, etc... and Microsoft gets rich playing "middleman" being the only party the others can legally talk to.
Are you kidding me? Since when is Intel some poor pauper holding out a begging bowl to Microsoft? Last time I looked, both Intel and Oracle had market capitalisations over USD 100 billion, and were 'legally allowed' to talk to each other.
There is already a company that makes a Sparc based blade for IBM BladeCenter chassis, drop it in an IBM Blade and share your SAN and have backplane-level network between the other hardware and OSes....this is what Oracle is after. Rather than keep playing games with other vendors, simply sell "Oracle" like IBM sells System i (iSeries). You would by an Oracle blade and simply connect that to your network. There's no point in loading multiple apps on hardware...
it's so cheap now versu
On the other hand, much about evolution is, I think, less certain than most people make it
Unfortunately, you are entirely wrong on this point. Evolution is much, much more robust than most people think. It has literally mountains of evidence backing it from dozens of fields. There's is absolutely no possible way in which it could be entirely wrong, unless you are willing to go into solipsistic notions like "reality is just a big collective dream".
On the other hand, the Big Bang theory has only a small handful of evidence backing it. It is a very simple theory that makes few predictions, and offers few explanations or an underlying cause for any of it.
For example, there's still no clear picture of:
- why the universe is even expanding in the first place.
- what the "inflation" period at the very beginning was caused by or exactly how it occurred
- we still don't know why there's much more matter than anti-matter
- we still don't know precisely why matter is distributed the way it is at large scales
- we're still not entirely certain if the laws of physics were precisely consistent across all time (including the first few femtoseconds)
- I'm yet to see convincing evidence either way of whether the universe is going to keep expanding forever, come to a big crunch, or what...
If the Big Bang theory was as good as you make it out to be, all of those questions would be answered conclusively and rigorously. Right now, our understanding of the universe is not much better than epycicles. We can make good numeric or statistical predictions about a few things, but we have no idea why our models work, and everything breaks down at the extremes.
is hot.
Just a note to our cousins across the pond, British police officers *do not* look like that :(
Aussie officers do though. For some reason, the law enforcement career path seems to attract a particular brand of perky blonde over here.
And you know who buys the top of the line super expensive cards? Pretty much no one. Everyone else either buys a mid-range card or last years top of the line. Both of those will last you a few years and the all around computer cost is less than a console.
Don't believe me that consoles are more expensive? I'm a PC gamer (who occasionally plays console games) and a friend of mine is a console gamer (who occasionally plays PC games). He tries to use your argument about "it's expensive with upgrading your computer", yet he ignores the fact that 1) console games virtually never go down in price, where PC games drop in price very quickly after the first few months and 2) Consoles nickel and dime you to death. We actually sat down and did the math one time and for his Wii, 360, PS3 and enough controllers for 4 players on each, it came out to over $2,500 for just the console hardware. You can easily buy two very good gaming systems for less money over the course of the lifespan of a console generation.
So no, people don't turn to consoles because they're cheaper, people turn to consoles because they can't do basic math.
Actually, people do buy the super expensive cards, and it's often not a bad deal.
I got myself an NVIDIA GTX8800 when it just came out. It ran super hot, cost me quite a bit, but it was the fastest single-card/single-chip 3D accelerator on the market for something like a year, and even when faster cards came out, the difference was something like 10% for a long time.
In the end however, it was cheaper for me to buy a very good card once and keep it for a couple of years, than to repeatedly buy older model cards at a lower price to be able to play the latest games.
I could play Crysis just fine at 1920x1200 when it was first available, which was pretty much only possible on that card or an SLI system, unless you enjoyed playing the "Crysis slideshow". If I had an older model card, I'd have been forced to upgrade.
Pundits have been tolling the death knell of rotating storage for ... decades?
But somehow, the rotating storage business manages to innovate its way back to relevance -- Winchester technology, thin film heads, headerless architectures, increased spindle speeds, bigger caches, perpendicular recording, 4k sectors, continuing advances in encoding and ECC, continuing advances in media -- the advances keep coming.
And whatever happened to bubble memory, anyway? Wasn't that supposed to save the day and obsolete rotating storage once and for all? Isn't that what Intel promised us?
But despite all of those improvement, over decades, the minimum and average access speeds of drives hasn't improved significantly. A random read still takes milliseconds, which is a simply enormous time for a modern computer to wait. This in turn reduces the throughput in comparison to the streaming speed, making even the 'fastest' hard drives quite slow in practice for most workloads. I've seen benchmarks for 'enterprise' drives doing only a few hundred KB/sec for random reads. This is 2010! Computers can process data just a *tad* faster than that!
In comparison, most SSDs have random read times under a millisecond already, and some PCI-E versions are in the dozens of microseconds range. The random read throughput can be as high as 50% of the streaming throughput, and some drives are closer to 90%.
That's a night & day difference. It's like going from VHS to DVD.
And it's still not fast enough. A modern CPU can process IO data at rates of up to gigabytes per second, easily*. Physical drives have fallen woefully behind, and even SSDs aren't quite there yet unless you RAID a bunch of them.
*) For example, a SUN Thumper, which is just two average quad-core AMD Opterons, can send 1GB/sec (not gigabit, gigabyte) of iSCSI traffic down the wire. That includes reading from disk, decoding the ZFS structures, verifying the hashes, processing the iSCSI commands, and talking to the network card at 10Gbps. In comparison, the best consumer SSDs are still around the 250MB/sec mark.
What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in .NET 4, and it's just... sad.
I love when Some Guy on SlashDot mocks those silly (Ph.D, very very highly paid, very experienced) idiot developers at Microsoft. I'm sure you're a paragon of the software world, dude.
Paragon.
Oh, I'm not, other people are. Like the guys who work for SUN, who integrated the best available multi-threading library for Java into the standard libraries. This was like... many years ago.
Keeping in mind that C# and Java are virtually identical, why the hell wouldn't Microsoft implement a library that is "as good, or better"? Why would they implement some toy library that can't handle even trivial scenarios, let alone scale to hundreds of cores or handle huge enterprise apps?
The only reason I can think of that they wouldn't do things well is that they... can't.
...the implementation sucks.
Why for example does Windows Explorer decide to freeze ALL network connections when a single URN isn't quickly resolved? Why is it that when my USB drive wakes up, all explorer windows freeze? If you are trying to tell me there's no way using the current abstractions to implement this I say you're mad. For that matter when a copy or move fails in Explorer, why can't I simply resume it once I've fixed whatever the problem is. You're left piecing together what has and hasn't been moved. File requests make up a good deal of what we're waiting for. It's not the bus or the drives that are usually the limitation. It's the shitty coding. I can live with a hit at startup. I can live with delays if I have to eat into swap. But I'm sick and tired of basic functionality being missing or broken.
That's because most Windows applications are written in C/C++, and it would be a royal pain to make them asynchronous.
People confuse "multi-threaded" and "asynchronous". They mean almost the same thing, but there's a substantial difference in development styles. Multi-threaded (or "multi-core") is usually when an algorithm is split to run parallel across 'n' threads, asynchronous is when a program does something in the background without blocking. The former is actually quite easy in C/C++, the latter is very hard, because tracking memory ownership across a bunch of threads is a huge pain. It would help a lot if the core Windows user-space apps were re-written in a managed language like C# so that they could use asynchronous code heavily without the developers twisting their brains into knots.
What doesn't help matters is that Microsoft's multi-threading APIs and libraries have been terrible since forever, and their new push towards multi-threaded programming has been to polish the turd a little. They just don't seem to have smart guys working for them any more who can design something as complex as a general purpose multi-threading library (akin to OSX's "Grand Central Dispatch"). I've seen Microsoft's weak attempt at it in .NET 4, and it's just... sad.
"Can be an early warning?"
"CAN be?"
Like all IT administrators who've actually worked with server hardware, I have a heightened sense of smell, but only specifically for the smell of burning plastic. It's not a mere warning, it's an instant alarm that'll have every IT person in the room sniffing the power supplies.
We IT people, we're like bloodhounds or something. I can smell burned plastic from across the street. I've been set off by welders at a car mechanic a block away. I've been set off by an invisibly tiny bit of cheese someone dropped into a toaster oven once... three floors down from the server room. Had me in a right panic.
IT is all fun and games until the servers literally melt into slag. There's no repair CD for that -- and we all know that the backup tapes, while wonderful for backing up, aren't so good at the actual restoring bit. That's why they're called backup tapes, not restore tapes, see?
The only feature it's been playing "catchup" at is the display system. For pretty much everything else, OS X only hit parity with Windows *2000* at about 10.4/10.5.
[citation needed]
A bash command line (and Unixlike filesystem structure), a web browser that's actually standards-compliant (and was the first to pass Acid2), Exposé, a journaled filesystem, built-in support for reading and saving PDFs, built-in support for playing DVDs, and lower system requirements are all things OS X has had since before 10.4, and Windows 7 still doesn't have.
Windows didn't get the ability to rearrange taskbar icons until Windows 7 (8 years after OS X). Windows didn't get built-in indexed search until Windows Vista (4 years after OS X). Windows didn't get IPv6 support until Windows Vista (4 years after OS X). Windows ran everything as root by default until Windows Vista (6 years after OS X). Windows didn't get icons larger than 48x48 until Windows Vista (6 years after OS X).
Examples of features introduced since 10.4 that Windows still doesn't have include multiple desktops, and a bootloader that supports operating systems from more than one vendor.
Mac OS X also has the ability to edit .doc files, which Windows 7 can no longer do with the software that comes with the OS.
And then there's all the little things, like Grapher.
I'll admit the earlier versions of Mac OS X were somewhat flawed, but "worse than Windows 2000" is a pretty serious accusation, and one that requires evidence.
You have a point, sort-of, but about half of what you're saying is wrong or a huge exaggeration:
- NTFS is effectively journaled, but they don't call it that. It even has a built-in snapshot capability, which goes all the way back to Windows XP! There wasn't ever much of a GUI for it, but even XP could snap your disk on a schedule and expose it as a read-only mount point. Server editions can even do SAN-integrated transportable snapshots since Server 2003.
- Windows has built-in support for reading and saving XPS documents, which is the MS equivalent of Adobe/Apple's PDF.
- Windows 7 can play DVDs
- "lowered system requirements" is relative. Windows 7 has lower requirements than Vista, and performs comparably to the now quite old Windows XP on the same hardware.
- Windows XP had optional IPv6 support, not that it matters, because there still aren't any significant IPv6 services for PCs to connect to!
- Windows doesn't "run everything as root". That's the default "home user" setting, but it most certainly can run in "restricted user" mode, and virtually all corporate PC deployments run this way.
Then one could turn around and talk about all of the things Windows has had for years that OS X still doesn't have, like:
- Active Directory
- Group Policy
- Desktop fleet management (SCCM, etc...)
- Drivers for you know.. things that aren't Apple branded.
- Binary compatibility with apps back to the stone ages.
I really don't get. HTML5 support, CSS3 and better Javascript performance and most of the posts on here are still complaining.
Because it doesn't support any of those standards, and if the MS developers are saying they aren't "focusing on ACID3", then clearly they won't support it..
The ACID tests test support for standards, and only browsers that are very standards compliant pass it.
Microsoft has systematically lied to developers with every IE release.
"No really, this time, we're going to support HTML x and CSS y! We promise!"
But they never actually do that. They support some arbitrary subset of those standards, and even the subset that they support is full of glaring bugs. This time, they're not even lying about it. By admitting that they aren't focusing on the ACID tests, they're basically admitting that they aren't focusing on real standards compliance. Instead, they're going for "checkbox compliance" - they're going to support just enough of the standards so that their marketing drones can put it on the box as a "feature", but not to the degree that it could actually pass a compliance test.
Maybe we could create a VM based language designed for networked applications, with a full blown security model down to the bytecode and performance as good as a static language.... And to make people comfortable we could name it something that sounds like JavaScript... I dunno... like Java.. Java... I can't think of one :)
Oh, and then Microsoft can adopt it just enough to completely derail it and prevent it from becoming useful in the browser market... And Sun can let the UI and media implementations lag permanently 5 years behind because it doesn't help them sell more server hardware... And the whole thing can just fester until Google comes along and teams of the smartest people in the world waste years of their lives building a layer of sanity over the JavaScript mess that is acceptable enough to write apps for...
Java had almost everything right, but failed utterly on two important fronts:
- slow initial load time of the interpreter.
- GUI designers for layout and graphical elements
The first problem still hasn't be solved, and it's been more than a decade. When the Java plugin starts, everything grinds to a halt. What's even worse is that I have a fast dual-core CPU and a high-end SSD, and it still takes forever for that thing to load. Meanwhile, .NET apps and Flash both start instantly.
The second problem is only now being solved, slowly, and usually by third-parties. Microsoft did the "right thing" with their new WPF/Silverlight format XAML. It cleanly separates applications into a "declerative UI design language", and a "procedural scripting language". The point of this is that it's virtually impossible to make a good drag & drop GUI designer for a procedural language, but quite easy for a declarative one. Java never had a UI layout language, it just used more Java code.
Note that HTML provides both of these things: fast load times, and separated design and script languages: HTML/CSS and JavaScript, respectively.
And yes, I know that these issues are being kinda-sorta fixed in Java these days, and there's competing technologies like .NET that never had the problems in the first place, but it's too late for Java, and most of the alternatives aren't cross-platform. The Web 2.0 system won, because it was fast, had good GUI tools, and was cross-platform from day one.
To follow up on my own post, they have a draft upgrade guide up it looks like (they recommend that it not be used yet though):
http://www.openbsd.org/faq/upgrade47.html
Looks like they include a utility to make life easier when upgrading... looks similar to what Gentoo Linux does when config files are upgraded... new configs are diff'd, and can be interactively merged, etc:
"OpenBSD now includes the sysmerge(8) utility, which helps administrators update configuration files after upgrading their system. Sysmerge(8) compares the current files on your system with the files that would have been installed with a new install, and gives you the option of keeping the old file, installing the new file, or assisting you in the manual merging of the old and new files, using sdiff. For past upgrades, we've presented a list of files that are usually copied over "as-is", and a list of files which should be changed, and a patch file that applies those changes to what might be in those files on your system. You may opt to use sysmerge to make the changes, or you may wish to use the patch file first, and then follow up with a sysmerge session to clean up any loose ends."
So it looks like they're at least making an effort to make it less painful
Are you kidding me? The upgrade process is for the administrator to manually merge the configuration files!?!?
And this is the improved version? Wow. Just... wow.
I can't believe people here whine about how the Windows 'registry' is somehow the root of all evil, even though the vast majority of Windows apps (and Windows itself) handle version upgrades automatically.
It's like I've time travelled back to the 70s.
Thank you for your reply. I do question the quality of the data at nationmaster. For example, this chart suggests that the US has no military spending at all.
http://www.nationmaster.com/graph/mil_exp_dol_fig-military-expenditures-dollar-figure
I am not sure looking at Military spending as a % of GDP is better, but it may be.
Annual US military expenditures have MORE THAN DOUBLED in the last 10 years.
http://www.usgovernmentspending.com/defense_chart_30.html
By any measure, that should be significant.
Don't you know what inflation is? Any time you hear "doubled over the last decade", it's JUST INFLATION.
Look at the same graph, but as a % of GDP. There's a little bump, but it's not some massive trend upwards. Considering the US is fighting two wars, and has actually increased it's Afghanistan troop numbers recently, that's actually quite a small increase.
A year ago I was watching one of Discovery programs I think and they had a couple of guys who supposedly implemented a piece of software, that would allow an airplane to fly and land safely if for some reason, while in the air, the tale would brake off or rudder would just stop working. They relied on a fly by wire airplane of-course and controlled the yaw with all other surfaces by applying very slight changes to the motion. They were saying a human could do this if extremely lucky, but software was able to do it almost always.
Just something to think about.
I've heard about this. What's even more impressive is that it's possible to control jumbo jets (or any multi-engine plane) by complex time-varying throttle manipulation, even if all of the control surfaces are dead. The issues is that the 'turbo lag' makes this extremely challenging for humans.The pilots have to anticipate actions seconds in advance, instead of reacting to feedback. I hear it's like driving really drunk.
Computers on the other hand can use a theoretical model of the plane's behaviour to compute the ideal time to alter the throttle.
If it is matter of core-war, IBM's latest Power7 also has 8 cores. It is actually based on 45nm technology compared to Intel's latest 32nm. What makes Power7 exciting is that it has on-die 32MB L3 cache. They achieved this by introducing eDRAM (embedded DRAM) in the technology. Both Nehalem-EX and Power7 are targeting low-end server market, so it should be interesting battle.
http://arstechnica.com/hardware/news/2009/09/ibms-8-core-power7-twice-the-muscle-half-the-transistors.ars
Since when is the "low-end server market" made up of 8-core 8-socket machines? Are you from the... future?
The difference is maybe that you actually have to know why and how those theorems work. Because else you could not use them. Not knowing why a certain mathematical rule is applicable means that you cannot apply it, not knowing whether its use would be "legal" from within the mathematical ruleset.
This is not the case with library functions. All you have to know is what you want to accomplish, you drop that info into the help file, it spits out a function (most of the time not really the best one, but one that will more or less do the trick) and it will also tell you what you have to drop into that function to make the magic happen.
Now, math has been a while ago for me, but I cannot remember it being THAT easy.
Except that there's a little issue with that nice theoretical model: leaky abstractions.
If you blindly use functions (actually methods) without an understanding of what they do internally, you will get burned.
This is why crap code deadlocks. This is why crap code leaks memory. This is why crap code can't run on anything except a specific version of Windows with a specific version of IE.
"I think a better analogy would be to say that today's programmers are more like a Cargo Cult."
Responses to the recent MS-random-browser thread ("the faulty shuffle is close enough", "this guy's being pedantic", "knowing algorithms is a bad use of company time") are pretty good evidence of that.
http://developers.slashdot.org/article.pl?sid=10/02/28/1837223
The sad thing is that I recognise those exact same responses from when I submit critical security vulnerability reports to various development groups and companies.
Machines today are fast. Much, much faster than what we need for programs to run.
Until you get slashdotted. Having a sharp increase in number of runs per second can show just how fast your program isn't. And look at all the fail-whales soon after Twitter caught on.
Memory amounts today mean that it is pointless to ponder whether you really need double linked lists or whether you get by with single linked ones. Or that you use variables smaller than DWords to store integers.
Until you try to shave pennies from a mass-manufactured part.
+1 for parent.
Actually, what bugs me is not the throughput, but the latency. As the GP said, hardware is faster, and you can always throw more hardware at almost any problem, but the performance for most systems only improves for aggregate metrics like "requests per second". The speed of an individual request is often still quite slow.
I'm thinking of those beastly J2EE apps that require 3 tiers of hardware, dozens of servers, and yet still takes 5 seconds to respond to a mouse click!
Meanwhile, in the exact same Java language, using the exact same backend database system, on the same hardware platform, it's easy to write an app that responds in a few tens of milliseconds. All it takes is a bit of in-depth knowledge that seems to be lacking these days.
I have to agree with parent. I've written an implementation of every method I use from libraries such as STL or Java at least once in my life, sometimes in such painful languages as assembly. I did it just for the sheer joy of it (yes, I love programming that much) and as a learning experience. In all those years, I learned a very important lesson, don't reinvent the wheel. I have yet to receive a set of requirements from a client that say "give me the least efficient/over engineered way to do X" that would compel me to ever again need to re-write a quick sort algorithm, container implementation, or string parser.
I've come with a rule of thumb I tell younger programmers:
Do it yourself, then throw it away and use the standard library instead.
The idea is that if you haven't implemented an algorithm or something yourself at least once, you don't really understand it. Once you've gained that understanding however, you're better off using the polished and bug-fixed version everyone else is using.
Wear Leveling, RAID Can Wipe Out SSD Advantage for enterprise.
While it may not be efficient to slap together a platter of 16 SSDs, it is worthwhile to upgrade personal computers to use an SSD.
If there's a benefit, why wouldn't you upgrade your enterprise servers too?
We just built a "lab server" running ESXi 4, and instead of a SAN, we used 2x SSDs in a (stripe) RAID. The controller was some low-end LSI chip based one.
That thing was blazing fast -- faster than any SAN I have ever seen, and we were hitting it hard. Think six users simultaneously building VMs, installing operating systems, running backups AND restores, and even running database defrags.
It's possible that we weren't quite getting 'peak' performance from the SSDs, but nobody cared because were were still getting ridiculously good performance for 1/10th the cost of even a very low-end SAN.
Why wouldn't "enterprise" users want that kind of price/performance improvement?
"Purple and orange" is a professional color scheme?
I don't even know what color tie goes with a blue shirt, but even I know that's awful.
Actually, the purple-orange-green-grey color combination is pretty popular, especially in Asia, where's it's a traditional combination that I personally think looks rather nice. The issue is that it only looks good if the tones are properly matched, which isn't easy to achieve on the typical uncalibrated LCD with a narrow color gamut.