Component cables can also carry digital signals. What made you think that doesn't happen? My HDTV only accepts digital signals on "component" cables. My HD tuner only has digital component outputs. Tends to work very nicely.
very nice looking systems - thanks for the link. I'm not sure I'm going to go MCE, as I'd have to go purchase a copy (or a whole system). I'm going to have to think long and hard about the case. Perhaps the first one is going to just be a plain jane box to see if it works.
I note that you state you use a plugin for movies/videos, which I'm guessing solves many of the complaints folks have about MCE itself. The whole "people generally prefer switching back to Windows" for other functions is depressing at best.
I never stated that a ground breaking game was a better game. I stated great games are are games that influenced entire genres. I then stated that Civ2 was a horrid game compared to Civ, and why. You responded that you could turn off the admitted time-wasting frivolty, which would reduce Civ2 to a slightly improved Civ wrt gameplay and with better graphics. So technically, yes, under that circumstance, Civ2 would be a better game than Civ, but is it a great game? I'd say it's the new and improved version of a great game.
Regarding Dune 2: I looked it up and don't know how I missed that one when it came out. Probably too engrossed in Civ! Since I don't have any experience with it, I can't comment further on it. However, WestWood Studio's later effort, C&C, was by far the best RTS I had played up to that time. (Starcraft appealed to me a little more at a much later time) I haven't loaded C&C since before 2000, so I cannot say how it plays today, except that I recall a single strategy would always let you win (read "boring") which actually detracted from C&C. Note that a great game needs to also be fun to play. If a large leap has been made since the original, then that game could also be considered a great game, to the point it might push out the original. Check the list for Doom, Half-Life, and CounterStrike. I could actually make the argument that Half-Life should knock Doom off the list as Doom apparently knocked off Castle Wolfenstein (the first in the genre). Take a look at which one's still being played - it's not Doom. And then what about Quake? It defined a whole genre before HL. In any case, the list was interesting to say the least.:)
Out of the list of my GGGP post I think I might play them all still, with the exception of Doom and Sim City. Would I load Civ today provided I could even find the game and an OS to load it on? (Not as big a leap as you might think, I have a working P166 w/ Win95 sitting on a shelf in my closet:). I don't know that there's anything left in that game to challenge me. I might load Civ 2 or 3, as I have both on the shelf, just to see what changed. Heck, with today's computers, it should at least be fun. As I just loaded a sacrificial OS, maybe I'll load these and see how they play today.
As a side note - I recently finished a couple of rounds on GalCiv II, a fine game by StarDock Systems (no DRM!!!). Played on Difficult, it actually requires you to pay attention. That's a huge improvement over most, but it's still easily beatable once you understand what strategy is being deployed against you. The God/Impossible level I didn't try, something about being hamstrung at 50-75% of your enemies resources and growth would seem to make it extremely difficult, especially if you were up against the insectoid multiply strategy - basically, they just grow large planets with tons of population, generating massive influence which causes a cascade effect as other planets fall under the effect of their influence. Somehow there should be a mitigating factor wrt quality of life before influence should cause defections. Just IMHO of course)
Furthermore, at least a few of those games have sequels or similar titles released later by the same developer which were just plain better.
I stated as much and that even some on the list were sequels. Whether a sequel is better than the original is irrelevant if it doesn't break new ground. That goes straight to the heart of why Civ 2 wasn't a great nor groundbreaking game. You make my point with:
The core game play on Civ1 and Civ2 is virtually identical, Civ2 just offers a bit more to its players.
Other than that, eye-candy isn't the most important thing in a game to some of us. That extra time the eye-candy took to display it's little flourish is time I was waiting to make the next move. I wasn't thinking about it, I was strumming the desk waiting for the next move. I was playing that on a 128MB PPro with an at the time high-end Matrox card. Hardly a "bad computer", as it exceeded every requirement listed:
Pentium 200 MHz
32 MB RAM
235 MB hard-disk space
Speaking of which, I recall playing Command & Conquer on that in a window with full sound running under OS/2. CC should be on any list such as the one we're talking about, as it was definitely a ground-breaker. (FYI: Civ 2 was played under Win95)
Turns took far too long even early in the game. Compared to Civ, things took forever. The "advisors" were annoying as hell and were turned off immediately. I'm trying to remember back to then, as I tried to play it a couple of times and just hated the interface and gameplay. Oh, and it wasn't any harder than Civ. AI was dumber than rocks, even on high difficulty (1 step under their most difficult).
In any case, it diverted me for a couple of days and since it was free, I can't complain too much.
I don't know whether I "defended" my position well enough to satisfy you, but for further information - I was involved in CivNet way back when, and also documented a considerable data to the CIV FAQ, which still hangs around odd corners of the web and provides amusement to my wife when she searches for my name on Google. Civ II actually has some of my work in it. You'd think I'd be kinder.
Then you should be like myself and many of my friends. We're all ex-Republicans. And we all reside in what used to be a deep red state. (I say used to be, because I only know 2 admitted current Republicans out of 30 or so colleagues. The rest go from currently independent to massively anti-republican. Note that neither means "democrat".
All I can say is this election is going to be interesting.
Actually, I'm not saying that you need to learn it how I did. Matter of fact, I'm positive that it would be a massive waste of time as there were several now dead languages in there, not to mention entire systems. But, there are certain things that should be taught, so entire classes of errors due to lack of understanding can be avoided. Check out my previous post for a sampling.
Well, I started long ago, migrated to C, then C++ before the horrors of STL;), and then on to Java. (I'm not that old though, just started young, something about game programming...)
The errors I see in Java are mind-boggling to say the least.
One of my favorites is the supposedly lazy initialization of a singleton (bah - stupid pattern that should be banned from use by anyone not at least at a true SR level) that does nothing more than create an instance of the class with the default constructor. And they used the non-working double-check lock pattern to "initialize" it. Just statically assign the instance. What's even better is when this instance has no data members and could just as easily have been a fully static class.
Then there's the most common mistake I see from a performance standpoint - the use of Vector local variables that are completely encapsulated within a method. Vectors are synchronized, meaning a nice cache flush before every operation. Since the variable is encapsulated within a method and never gets passed out, why on earth would you use a Vector? Even better is when multiple local Vectors are used to sort an array. (Don't ask, this was a former Sun employee, I leave you to guess why...;)
This example is indicative of a complete failure to understand higher level abstractions including memory models, performance impacts, and threading. It also underscores why understanding those lower level functions is important even for beginning programmers, even in Java.
Java is simple to learn and understand, just like C#. It's also simple to screw up with and forgiving enough to still work. A language does not prevent bad code written by the ignorant. I have personally seen an 18,000 line class with multiple "inner classes" with methods over 900 lines long that consisted of if-else blocks based on flags such as "isDone" and "is". The highest cyclomatic complexity in this code base was 218 after refactoring, followed by another class with 140. I'm glad I no longer have to look at that code.
To finish off, I just wish that when they taught a langauge, they also taught the importance of the underlying concepts, not just the syntax. Matter of fact, no class should be just about syntax and stringing together syntactically correct statements. These days, I notice many don't even know or understand some of the simple algorithms, and would be hard pressed to write a bubble-sort or a comb-sort, or to write or even properly explain a binary tree or a binary search, much less concepts such as skip-lists. If you don't understand what they are, how can you possibly make the decision when to use them properly?
First, great games are games that influenced entire genres. That said, out of their lists, I notice the following that meet those credentials:
Commander Keen
Day of the Tentacle
Lemmings
Civilization
Monkey Island
Doom
Sim City
Half Life
Counter Strike
Every single one of these games were top sellers in their day, most were critically acclaimed in one way or another, and each set a new standard when they came out. Many have also inspired sequels, in fact, several on the list are sequels/copies in and of themselves (Doom, Half Life, Counter Strike) but each set a new standard. (Speaking of, where's Castle Wolfenstein, the title that started id?)
You'll notice that racing/flight sims are not among them, because I'm not sure that there's ever been a ground breaking racing or flight sim. They're all incremental improvements from the early early vector drawn sims, which were not much more than 2D wireframes with color fills. (Note: I don't play them because I don't like them, so I'm obviously negatively biased)
And to say Civ II was better than Civ is ridiculous. Civ II was a horrid game. Civ III was considerably better, but each was a minor improvement over the previous version. Do note that Civ itself has most of the gameplay, Civ II was eye-candy with some bug fixes. The eye-candy was so resource instensive that for those of us that liked the gameplay of Civ, it completely ruined the game by making turns take far too long. A far better game than Civ II+/Alpha Centauri genre was Galactic Civilizations (first came out on OS/2, Windows was much later) which actually had real AI that at least followed the same rules players did. As a side note, GalCiv might be one of the first effectively multi-threaded games, IIRC.
In closing, I'll say that the most popular games, or the newest games, aren't necessarily or even commonly the best games. Look at the enduring solitaire, chess, and tetris for examples of games that are just fine as they were years ago.
Unfortunately, without understanding the basics, all your higher level abstractions get you is unmaintainable abstractions. Understanding the base concepts is necessary to know when to abstract at higher levels, because then you'll understand what that higher level abstraction does for you.
Does this mean you need to know about peeks and pokes? In today's world, I no longer think so (and there's that huge collective sigh of relief from students everywhere). But you should definitely understand how your language handles memory, even if you're coding in a language with GC capabilities. It keeps you from churning memory and slowing down your app to a crawl.
To save five minutes...in mph, is 201.3. Call me before you get on the road, will you? I'll stay home.
Unless you're on the Autobahn in a less populated area.:)
Seriously though, your argument is valid, except for the 2 hour trip. There it becomes an issue of the frequency of the slow-pokes and their speed vs the ability to pass safely - ie, oncoming traffic frequency. That becomes a quite complicated scenario. Becoming frustrated about it though, helps no one.
Ok, I read a couple of your other responses. Since you could use the platform threading libraries, this actually isn't that bad a problem. Their requirements didn't state much of anything, and no parsers just means working on the stream directly (still compiler included libs). You'd have come up with an extremely rudimentary server with a single socket servicing single requests with no safety net. That's about a 1-2 hour project with code comments. Then write what the short-comings are, and what's needed to expand on it.
That shows that A) you can deliver and B) you understand the bigger picture. It's a trade-off as to whether this approach is better than the descriptive answer that assumes what they want cannot be done. My impression from your description is that they were looking for something close to this approach, possibly flavored by my own perceptions of what I'd look for if I were to ask a candidate such a question.
well, that becomes a trivial answer then - it's not a 3-4 hour job. Actually, writing C/C++ code that access system resources becomes non-trivial as soon as the platform in undefined. That's why Java took off. No #defines.
Conceptually seems simple enough. Open a socket for listening, retrieve only strings, parse strings for GET/HEAD, return appropriate args. Since there were no requirements, and they refused to give you any after you asked, assume the simplest form and deliver that.
Now, it's been a while since I coded C/C++ apps, and I'm hazy on how hard it was to write socket code. I don't seem to recall it being super hard if you coded the naive case though.
don't count on too much price pressure. The memory latency benchmarks are going to hurt Intel, especially when AMD's next gen chips come out. Intel needs to fix its dependency on the FSB to really compete in the near future. There's a reason even Dell is going w/ Opteron for servers.
Just think, AMD's still competitive performance wise (ie, not a full generation behind like P4/P-M) compared to Core 2 on 90nm with a 3 year old design. Their next gen will include some nice features, including a 4MB L3 cache that runs at full CPU clock speeds with 4 cores and 65nm. Given the current comparisons and expected performance improvements, that may very well put the top of the field out of Intel's reach with even a 45nm process.
But we'll have to wait for benchmarks before going there. The AM2 multi-CPU system (4X4) is what I'm waiting to see, and hope that it comes with NUMA (though probably not, those motherboards are running in the $300 and up range).
Either way, things are going to be interesting for the next 8-12 months.
Why would we listen to the creator of a badly performing broken scripting language about a reliable performance oriented DB?
Not the whole world is interested in rendering HTML tables with blathering text.
Component cables can also carry digital signals. What made you think that doesn't happen? My HDTV only accepts digital signals on "component" cables. My HD tuner only has digital component outputs. Tends to work very nicely.
BTW, those cables cost me US $12 for 6ft.
very nice looking systems - thanks for the link. I'm not sure I'm going to go MCE, as I'd have to go purchase a copy (or a whole system). I'm going to have to think long and hard about the case. Perhaps the first one is going to just be a plain jane box to see if it works.
I note that you state you use a plugin for movies/videos, which I'm guessing solves many of the complaints folks have about MCE itself. The whole "people generally prefer switching back to Windows" for other functions is depressing at best.
I never stated that a ground breaking game was a better game. I stated great games are are games that influenced entire genres. I then stated that Civ2 was a horrid game compared to Civ, and why. You responded that you could turn off the admitted time-wasting frivolty, which would reduce Civ2 to a slightly improved Civ wrt gameplay and with better graphics. So technically, yes, under that circumstance, Civ2 would be a better game than Civ, but is it a great game? I'd say it's the new and improved version of a great game.
:)
Regarding Dune 2: I looked it up and don't know how I missed that one when it came out. Probably too engrossed in Civ! Since I don't have any experience with it, I can't comment further on it. However, WestWood Studio's later effort, C&C, was by far the best RTS I had played up to that time. (Starcraft appealed to me a little more at a much later time) I haven't loaded C&C since before 2000, so I cannot say how it plays today, except that I recall a single strategy would always let you win (read "boring") which actually detracted from C&C. Note that a great game needs to also be fun to play. If a large leap has been made since the original, then that game could also be considered a great game, to the point it might push out the original. Check the list for Doom, Half-Life, and CounterStrike. I could actually make the argument that Half-Life should knock Doom off the list as Doom apparently knocked off Castle Wolfenstein (the first in the genre). Take a look at which one's still being played - it's not Doom. And then what about Quake? It defined a whole genre before HL. In any case, the list was interesting to say the least.
Out of the list of my GGGP post I think I might play them all still, with the exception of Doom and Sim City. Would I load Civ today provided I could even find the game and an OS to load it on? (Not as big a leap as you might think, I have a working P166 w/ Win95 sitting on a shelf in my closet:). I don't know that there's anything left in that game to challenge me. I might load Civ 2 or 3, as I have both on the shelf, just to see what changed. Heck, with today's computers, it should at least be fun. As I just loaded a sacrificial OS, maybe I'll load these and see how they play today.
As a side note - I recently finished a couple of rounds on GalCiv II, a fine game by StarDock Systems (no DRM!!!). Played on Difficult, it actually requires you to pay attention. That's a huge improvement over most, but it's still easily beatable once you understand what strategy is being deployed against you. The God/Impossible level I didn't try, something about being hamstrung at 50-75% of your enemies resources and growth would seem to make it extremely difficult, especially if you were up against the insectoid multiply strategy - basically, they just grow large planets with tons of population, generating massive influence which causes a cascade effect as other planets fall under the effect of their influence. Somehow there should be a mitigating factor wrt quality of life before influence should cause defections. Just IMHO of course)
I stated as much and that even some on the list were sequels. Whether a sequel is better than the original is irrelevant if it doesn't break new ground. That goes straight to the heart of why Civ 2 wasn't a great nor groundbreaking game. You make my point with:
Other than that, eye-candy isn't the most important thing in a game to some of us. That extra time the eye-candy took to display it's little flourish is time I was waiting to make the next move. I wasn't thinking about it, I was strumming the desk waiting for the next move. I was playing that on a 128MB PPro with an at the time high-end Matrox card. Hardly a "bad computer", as it exceeded every requirement listed:
Speaking of which, I recall playing Command & Conquer on that in a window with full sound running under OS/2. CC should be on any list such as the one we're talking about, as it was definitely a ground-breaker. (FYI: Civ 2 was played under Win95)
a function with lots of if else based on a passed in parameter with recursive calls back into the function.
if you would - could you list out your components? Or link to a site that does.
I'm about to build one, and would really like the software/hardware lists. (I've already started on the hardware, but can always change if needed).
We'll see if November will bring that message or not. Is Deibold skewing results? WE'll find out for sure this election.
Turns took far too long even early in the game. Compared to Civ, things took forever. The "advisors" were annoying as hell and were turned off immediately. I'm trying to remember back to then, as I tried to play it a couple of times and just hated the interface and gameplay. Oh, and it wasn't any harder than Civ. AI was dumber than rocks, even on high difficulty (1 step under their most difficult).
In any case, it diverted me for a couple of days and since it was free, I can't complain too much.
I don't know whether I "defended" my position well enough to satisfy you, but for further information - I was involved in CivNet way back when, and also documented a considerable data to the CIV FAQ, which still hangs around odd corners of the web and provides amusement to my wife when she searches for my name on Google. Civ II actually has some of my work in it. You'd think I'd be kinder.
Then you should be like myself and many of my friends. We're all ex-Republicans. And we all reside in what used to be a deep red state. (I say used to be, because I only know 2 admitted current Republicans out of 30 or so colleagues. The rest go from currently independent to massively anti-republican. Note that neither means "democrat".
All I can say is this election is going to be interesting.
Actually, I'm not saying that you need to learn it how I did. Matter of fact, I'm positive that it would be a massive waste of time as there were several now dead languages in there, not to mention entire systems. But, there are certain things that should be taught, so entire classes of errors due to lack of understanding can be avoided. Check out my previous post for a sampling.
I'm all for keeping those folks in their own playpen!
You make a good point. You should at least know what your language(s) insulates you from.
That depends upon what you're coding in. For instance, that isn't an issue with Java, Smalltalk, or C# (unless you're coding in unsafe blocks).
Well, I started long ago, migrated to C, then C++ before the horrors of STL ;), and then on to Java. (I'm not that old though, just started young, something about game programming ...)
The errors I see in Java are mind-boggling to say the least.
One of my favorites is the supposedly lazy initialization of a singleton (bah - stupid pattern that should be banned from use by anyone not at least at a true SR level) that does nothing more than create an instance of the class with the default constructor. And they used the non-working double-check lock pattern to "initialize" it. Just statically assign the instance. What's even better is when this instance has no data members and could just as easily have been a fully static class.
Then there's the most common mistake I see from a performance standpoint - the use of Vector local variables that are completely encapsulated within a method. Vectors are synchronized, meaning a nice cache flush before every operation. Since the variable is encapsulated within a method and never gets passed out, why on earth would you use a Vector? Even better is when multiple local Vectors are used to sort an array. (Don't ask, this was a former Sun employee, I leave you to guess why...;)
This example is indicative of a complete failure to understand higher level abstractions including memory models, performance impacts, and threading. It also underscores why understanding those lower level functions is important even for beginning programmers, even in Java.
Java is simple to learn and understand, just like C#. It's also simple to screw up with and forgiving enough to still work. A language does not prevent bad code written by the ignorant. I have personally seen an 18,000 line class with multiple "inner classes" with methods over 900 lines long that consisted of if-else blocks based on flags such as "isDone" and "is". The highest cyclomatic complexity in this code base was 218 after refactoring, followed by another class with 140. I'm glad I no longer have to look at that code.
To finish off, I just wish that when they taught a langauge, they also taught the importance of the underlying concepts, not just the syntax. Matter of fact, no class should be just about syntax and stringing together syntactically correct statements. These days, I notice many don't even know or understand some of the simple algorithms, and would be hard pressed to write a bubble-sort or a comb-sort, or to write or even properly explain a binary tree or a binary search, much less concepts such as skip-lists. If you don't understand what they are, how can you possibly make the decision when to use them properly?
Every single one of these games were top sellers in their day, most were critically acclaimed in one way or another, and each set a new standard when they came out. Many have also inspired sequels, in fact, several on the list are sequels/copies in and of themselves (Doom, Half Life, Counter Strike) but each set a new standard. (Speaking of, where's Castle Wolfenstein, the title that started id?)
You'll notice that racing/flight sims are not among them, because I'm not sure that there's ever been a ground breaking racing or flight sim. They're all incremental improvements from the early early vector drawn sims, which were not much more than 2D wireframes with color fills. (Note: I don't play them because I don't like them, so I'm obviously negatively biased)
And to say Civ II was better than Civ is ridiculous. Civ II was a horrid game. Civ III was considerably better, but each was a minor improvement over the previous version. Do note that Civ itself has most of the gameplay, Civ II was eye-candy with some bug fixes. The eye-candy was so resource instensive that for those of us that liked the gameplay of Civ, it completely ruined the game by making turns take far too long. A far better game than Civ II+/Alpha Centauri genre was Galactic Civilizations (first came out on OS/2, Windows was much later) which actually had real AI that at least followed the same rules players did. As a side note, GalCiv might be one of the first effectively multi-threaded games, IIRC.
In closing, I'll say that the most popular games, or the newest games, aren't necessarily or even commonly the best games. Look at the enduring solitaire, chess, and tetris for examples of games that are just fine as they were years ago.
Unfortunately, without understanding the basics, all your higher level abstractions get you is unmaintainable abstractions. Understanding the base concepts is necessary to know when to abstract at higher levels, because then you'll understand what that higher level abstraction does for you.
Does this mean you need to know about peeks and pokes? In today's world, I no longer think so (and there's that huge collective sigh of relief from students everywhere). But you should definitely understand how your language handles memory, even if you're coding in a language with GC capabilities. It keeps you from churning memory and slowing down your app to a crawl.
Unless you're on the Autobahn in a less populated area.
Seriously though, your argument is valid, except for the 2 hour trip. There it becomes an issue of the frequency of the slow-pokes and their speed vs the ability to pass safely - ie, oncoming traffic frequency. That becomes a quite complicated scenario. Becoming frustrated about it though, helps no one.
Ok, I read a couple of your other responses. Since you could use the platform threading libraries, this actually isn't that bad a problem. Their requirements didn't state much of anything, and no parsers just means working on the stream directly (still compiler included libs). You'd have come up with an extremely rudimentary server with a single socket servicing single requests with no safety net. That's about a 1-2 hour project with code comments. Then write what the short-comings are, and what's needed to expand on it.
That shows that A) you can deliver and B) you understand the bigger picture. It's a trade-off as to whether this approach is better than the descriptive answer that assumes what they want cannot be done. My impression from your description is that they were looking for something close to this approach, possibly flavored by my own perceptions of what I'd look for if I were to ask a candidate such a question.
well, that becomes a trivial answer then - it's not a 3-4 hour job. Actually, writing C/C++ code that access system resources becomes non-trivial as soon as the platform in undefined. That's why Java took off. No #defines.
Conceptually seems simple enough. Open a socket for listening, retrieve only strings, parse strings for GET/HEAD, return appropriate args. Since there were no requirements, and they refused to give you any after you asked, assume the simplest form and deliver that.
Now, it's been a while since I coded C/C++ apps, and I'm hazy on how hard it was to write socket code. I don't seem to recall it being super hard if you coded the naive case though.
All the above comments neglect the major energy source in the galaxy:
gravity
(ocean tides are one that can be easily used to generate electricity, global tidal forces contribute heat to the earth itself)
It's not the time saved, but driving as I wish. You may actually use 0.2 more gallons @ 65 over 75 mph. Is it really worth going 65?
(you should check out gas mileage numbers sometimes. It turns out that 55 is actually one of the more wasteful speeds for some cars)
don't count on too much price pressure. The memory latency benchmarks are going to hurt Intel, especially when AMD's next gen chips come out. Intel needs to fix its dependency on the FSB to really compete in the near future. There's a reason even Dell is going w/ Opteron for servers.
Just think, AMD's still competitive performance wise (ie, not a full generation behind like P4/P-M) compared to Core 2 on 90nm with a 3 year old design. Their next gen will include some nice features, including a 4MB L3 cache that runs at full CPU clock speeds with 4 cores and 65nm. Given the current comparisons and expected performance improvements, that may very well put the top of the field out of Intel's reach with even a 45nm process.
But we'll have to wait for benchmarks before going there. The AM2 multi-CPU system (4X4) is what I'm waiting to see, and hope that it comes with NUMA (though probably not, those motherboards are running in the $300 and up range).
Either way, things are going to be interesting for the next 8-12 months.
take a look at the memory latency issues. That will dimm any hopes for high end rendering, I'd think.
Smalltalk/Seaside?