the 120 lines of code under review actually need a pay version of Tao. The free evaluation version does not work with the example code TFA shows. [Nice although that a linux version is available.]
So you have to dismiss two dialog boxes mentioning that we use pay features in that presentation. Big deal! The only downside of using the free version or modules you didn't pay for is that you will have a Taodyne logo showing up in the corner of the screen. No time bomb, no other limitation. Seriously.
but the concept is flawed in that it borders on the ridiculous. What is wrong with just reading the news in a list format? Do we need to see it rendered in 3D?
You can render it in 2D if you prefer. The point is that you can now have a Powerpoint-like presentation with, say, a twitter wall inside, or news related to what you are talking about.
RTFA. We did reinstall the display drivers, and they just don't work. Unless you think that having full screen rendering blinks unless the screen is upside down is not a bug in the driver. Seriously. And the problem only exists on this particular ATI driver, never had that with the original driver or with nVidia...
A representative of a manufacturer told me that their 3D glasses filter UV the same way and have the same effect on polarized light (e.g. minimizing reflections for driving), but are more lightweight and as a consequence more prone to scratching. So they don't pass EU tests for outdoor sunglasses on mechanical grounds, not anything related to vision. Also, unlike sunglasses, their objective is to let as much light through as possible. So they only filter UV but do not reduce light intensity nearly as much.
For the slashdotter with more experience: Can 3d Stereo be achieved with regular commodity LCD monitors?
Given their current prices, you should go for 3D-enabled LCD monitors, e.g. the HP 2311 gt. Look for reviews like this one. I personally strongly recommend passive displays (less expensive, and way more comfortable e.g. under fluorescent light).
And if you want to show stuff in 3D easily, why don't you give Tao Presentations a spin?
3D, colour, surround sound, CGI, all of it are just tools for the storytellers to use to tell their story. We don't even think about colour in film, but it was a huge technical milestone for a lot more than just 'improving a character or story'.
This is very true. 3D is a tool that has been abused initially (the "shrapnel flying towards you" another poster referred to). But 3D is also the normal way for us to see the world, so when done right, it enhances the suspension of disbelief. However, it matters that you do it right. Just like color could be distracting when you had over saturated hues or bizarre skin tones, 3D can break the immersion spell if not done right. On the other hand, if you do it right, it is transparent on the conscious level but ads realism and makes the story more believable.
It's not just for movies either. At Taodyne, we brought 3D to interactive presentations. We have a kind of 3D interactive multimedia LaTeX called Tao Presentations. In our experience, 3D presentations are something that people still remember one year after having seen them. Most people don't necessarily remember movies better when they are in 3D, but ask any kid in France about the 3D Haribo ad, and chances are they remember it. The same is true for presentations. Showing models or charts in 3D gives them more impact.
Another interesting effect of 3D for storytelling is that you can put more data on a screen without causing confusion. You can put things in front to draw attention, or in the background for things that are less important. You can create true 3D charts, where the depth ads another useful axis. And the Star Wars effect in real 3D is an interesting way to show data (it's a built-in demo of Tao Presentations).
In short, 3D can be a gimmick. Or it can be used well and make a difference. It's all a matter of how you use it.
Let's have 3D glasses that are as comfortable to wear as ordinary glasses. And let's have 3D glasses suitable for people who need glasses, such that those people don't have to wear two pair of glasses on top of each other in order to watch a 3D move.
You should look at 3D glasses made by vendors of regular solar glasses, e.g. Polaroid Eyewear. They are comfortable, not very expensive, work in the theater and double as sunglasses. We have a few at Taodyne, and the 3D separation quality on passive TVs is really good.
I wonder what the precise computational cost is of rendering complex 3D objects and scenes on this kind of technology.
I can't wait to have one of these babies to run Taodyne's 3D presentations software on it! One of the things which is tricky with current multiscopic displays is how to convert existing 2D movies. Ideally, you want to do that in real time, something that Tao Presentations can do for Alioscopy or Tridelity displays, but which is more computationally expensive for Philips/Dimenco displays.
The difference that I see existing between atheists and self-proclaimed "agnostics" (most of whom are actually deists trying to sound more intelligent) is that one understands logical processes and probability, and one does not..
You seem to imply that you, unlike agnostics, understand logical processes and probabilities. So please prove to me, using only logic, that you exist. Prove to me that I am not in the Matrix, with a heavy computer simulation feeding me with bogus sensory information, possibly twisting my own memories to prevent me from realizing that I've been typing this message for eons... (this expression, btw, is not to be understood as an acknowledgement of the existence of time:-)
The point I'm making here is that what you call logic ultimately fails to yield any proof if used in a vacuum. You need basic axioms, which we all take for granted although experience continuously demonstrates how wrong they are. A few examples:
#1 We are all similar. Without that axiom, how can I derive with "high probability" that your consciousness and existence are similar to mine? Problem with this axiom: we are actually very different, and I myself change over time. What part can I rely on as proof for existence?
#2 Our consciousness is proof of existence. "I think, therefore I am". Problem with this axiom: we sometimes lose consciousness, don't we still exist?
#3 Our memory can be trusted: Problem with this axiom: according to my wife or to iPhoto, my memory is all but trustworthy.
#4 My reasoning has something to do with logic. Problem with that axiom: ever been angry or in a panic?
I could go on. I need many more similar axioms for "pure logic" to lead to the conclusion, with "high probability", that you exist. Ultimately, we accept our respective existence out of a dizzying quantity of simplifying hypotheses. Ultimately, the conclusion is that "logic" leads me to nothing better than: "if you tell me that you exist, then it is probably true." Basically, existence or truth is hard to prove, it always depends on something else.
This begs the question: is there something that exists or is true without any reference to anything else whatsoever?
This is why I find the response in Exodus 3:14 so fascinating. "I am that I am", i.e. "I exist by myself, out of nothing". Like for any statement, you may believe this sentence is true or not. Just like I may believe you, or not, when you write "one understands logical processes and probability". In both cases, it's primarily a matter of choice, of trust, of faith. But whether you believe or not, I find it truly fascinating that such an old book gives us a definition of God as a being without a root cause.
You may have trouble putting on the same plane the existence of a God saying "I am that I am" reportedly thousands of years ago, and the existence of yourself saying "one understands logical processes" reportedly thousands of milliseconds ago. But in my opinion, they are both so similar that this is the only logical thing to do. And what this logic leads me to is that I ultimately have a choice to make, in both cases. Do I believe, or not? Believing you exist is an act of faith. I choose to believe.
Therefore, I find the position of agnostics all but stupid. In the case of God, they decide not to choose yet, they keep looking for more data. It seems very logical to me..
As an aside, I disagree with your characterization of the scientific method:
Courtesy of the scientific method and burden of proof, a positive claim is false until proven.
The scientific method includes axioms and definitions that are positive claims yet not proven. Examples: "a metre is the length of the path travelled by light in vacuum during a time interval of 1 299,792,458 of a second". Furthermore, the theorem of Gödel, for instance, proved that even for something as "simple" as natural numbers, there are statements that are true but cannot be p
Tao Presentations is a 3D presentation software that runs on Linux as well as on Windows and MacOSX. We had mixed experience with nVidia support. Sometimes, it just works. In other cases, major functionality is missing (e.g. a laptop where the HDMI port is simply not detected). That being said, except when we hit a major bug, OpenGL performance is overall rather close to what we get on the same machine on Windows, which indicates that nVidia takes Linux somewhat seriously. Actually, I don't think nVidia has any kind of anti-Linux strategy in place. It's rather that their portfolio is big and their overall strategy is sometimes confusing as a result. Consider stereoscopy for example, which matters a lot for Tao Presentations. Both nVidia and ATI have this puzzling idea that only "pro" customers can have stereoscopic support for OpenGL. This leads to situations where a machine with an nVidia chipset will connect to a 3D projector perfectly... as long as it runs MacOSX. The exact same hardware won't offer quad-buffer OpenGL support when running Windows or Linux. Why not? So it's not about Linux, it's about lining up so many little pieces that sometimes, one of them is missing and the whole thing collapses. Linux is probably at the bottom of the list of things to fix, so that's where you see more problems.
Having written VM software myself (HP Integrity VM), I find this fascinating. Congratulations for a very interesting approach.
That being said, I'm sort of curious how well that would work with any amount of I/O happening. If you have some DMA transfer in progress to one of the pages, you can't just snapshot the memory until the DMA completes, can you? Consider a disk transfer from a SAN. With high traffic, you may be talking about seconds, not milliseconds, no?
I made a very similar argument a couple of years ago. I'm positive hundred of other people have: "If you are one in a million, there's a thousand like you in China".
But here's the rub: while sticking to Earth is dangerous, we don't know yet that we have any physical mean to leave it. So it doesn't really matter if Hawkins is saying we should abandon Earth, if he doesn't provide a credible way to actually do it.
So I guess the question becomes: Who is actually working on faster-than-light travel, life extension or other aspects of the problem? And if we don't know how to leave, what do we do to survive either until we figure it out, or forever if it happens there's no way to leave?
Rob Pike criticism of Java and C++ is really advocacy for the new Google language, Go. Unfortunately, Go isn't a very good language, in my opinion. It makes things simpler by being less powerful. What we really need to replace C++ or Java is a language that can grow on demand. Otherwise, we'll keep hitting the limits of the language. And I can hit the limits of Go pretty quickly.
Also, it's time to go beyond imperative, text-oriented languages. Graphics, anyone? It's possible: Hello World in XL simply looks better!
The focus on flicker alone is a fallacy. In LCD projectors with a color wheel, the wheel ensures that red, green and blue are updated at least 25 times per second. But they are not updated at the same time. Many people can tell and don't like these projectors, because when their eyes move, the red, green and blue image dissociate.
Also, I don't know about others, but I can personally tell a 25Hz flicker on an old CRT. I assume many others can too. It's faint, and it doesn't prevent me from enjoying a movie, but I find higher refresh rates on modern TVs to be much less visually distracting.
It only takes a few killer apps that can't reach the iPhone due to Apple's control-freakness to tip the balance away to some other platform.
Steve Jobs should know, of all people. Apple was once so dominant in the field of personal computers it could laugh at IBM, much like the iPhone in smartphones today. Well, guess what? A few years down the road, IBM's presence in the Macintosh core market was no longer laughing matter.
Several years ago, I designed the software for a real-time automotive test system called HP ECUTEST (I think the official name was HP Design Span DS5470, but let's not waste time on HP's cold dead fish naming conventions). It simulated a car from an electric point of view. You connected an electronic control unit (ECU), and it had basically no way to tell it was not in a real car. Think of it as The Matrix for car electronics.
One of our first customers wanted us to test it with a reliable, proven, tested, tried and true ECU, something that was on the road in cars for several years already. So we did. And I noticed something odd. The ECU worked fine when we "drove" a car normally, but at idle, it would basically slow down, one RPM at a time, until it stopped. However, if I changed the value of the input corresponding to the accelerator pedal, it would reset the idle speed to the default, something like 800rpm.
Finally, after eliminating the possible bugs on our side, we tell the customer. Their first reaction was "no way". But after a week and a demo of the problem, they finally made a connection. They had this elusive bug of some car customers complaining that their car would sometimes stop when idle. It turns out that in a real car, chassis vibrations generally caused minute changes in the input value for the accelerator. So the ECU would correctly recompute its idle speed. However, if there was no change, like if the pedal was more rigid than usual, the bug would trigger.
The root cause was a routine that wanted to optimize idle speed to be as low as possible, but for some reason kept cached data if the accelerator had not changed, so it thought the engine was still running smoothly.
We found such bugs in practically all ECUs we tested for the first time. The most impressive one was in a V8 ECU that was basically a V8 until 1200rpm, then a V7, then a V6, and basically a V2 above 4000 rpm. The customer had hoped we'd find something, because they didn't get all the power they expected from the engine. Obviously. It was hard to find without our system, because the injectors that fired were differnt from cycle to cycle, so more simple instrumentation saw all cylinders running. The root cause here was that the software badly exceeded its real-time envelope... Ouch.
Unix pipe and filters can't be used to build a complex workflow. They are unidirectional streams of bytes. They are useful tools, but when was the last time you wrote a shell script that used only pipes?
The original article, laments about the way we program today, by assembling components. I'm only saying it's a good thing that we are finally there. And no, we weren't there in the 1970's as far as I remember, nor in the 1990's for that matter.
You are right that designing an API is hard. But I would add that it's not just a matter of API design, it's also a matter of use cases. That's why I still see value in someone writing the code she needs, and sharing it with me as open source. Because if the way she did it doesn't suit me, I can fix it. As a matter of fact, I did exactly that just last week with Cairo.
Back in the 1990's, all the rage was about "software components", what was back then a dream. Those who came up with COM and Corba and OpenDoc envisioned a world where software components would be as easy to put together as electronic components.
Well, that's the world we live in now. Just type "./configure; make" and use it. Why complain? It's a good thing. It makes us more productive. It allows our poor brains to keep up with Moore's law. See http://xlr.sourceforge.net/Concept%20Programming%20Presentation.pdf for more...
There's XL. OK, to be honest, it doesn't handle parallelism that well yet, but how this will be done is understood. And whether it's actively developed or not depends on your definition of "actively";-)
Pros:
- Designed for meta-programming
- Extensible (you can add your own notations with compiler plug-ins)
- No forced placement of { and } (largely because you don't need them)
- Probably the first language where you could redefine a Pascal-like WriteLn (way back in 2000 or so)
- The XL compiler is written in XL (the Go compiler isn't written in Go)
- Expression reduction, a generalized form of operator overloading, e.g. define expression A+B*C=0 when A, B and C are matrices
- True generic types, e.g. a way to use "array" as a type to denote code that doesn't care about element type or size
- Generic validation, i.e. detect in the specification whether it's OK to use a given generic type, e.g. maximum only works if you have an order relation.
- Generates C or Java (work currently in progress for generating machine code on the fly using LLVM)
- No parser-injected semi-colons. What were they thinking?
- OTOH, the new-line that separates statements is an infix operator (and so is the semi-colon). Now, that is cool.
- Very simple base syntax, implemented within less than 1000 lines of code
Cons:
- Not backed by Google or any large company
- Never went much beyond the "amusing exercise in compiler technology" stage, i.e. not used for any real stuff
Disclaimer: I invented and implemented that language, which means that you are probably biased:-)
the 120 lines of code under review actually need a pay version of Tao. The free evaluation version does not work with the example code TFA shows. [Nice although that a linux version is available.]
So you have to dismiss two dialog boxes mentioning that we use pay features in that presentation. Big deal! The only downside of using the free version or modules you didn't pay for is that you will have a Taodyne logo showing up in the corner of the screen. No time bomb, no other limitation. Seriously.
but the concept is flawed in that it borders on the ridiculous. What is wrong with just reading the news in a list format? Do we need to see it rendered in 3D?
You can render it in 2D if you prefer. The point is that you can now have a Powerpoint-like presentation with, say, a twitter wall inside, or news related to what you are talking about.
These guys cannot even figure out how to reinstall display drivers on a Win 7 box and they want to sell me a rendering package? Not gonna happen.
RTFA. We did reinstall the display drivers, and they just don't work. Unless you think that having full screen rendering blinks unless the screen is upside down is not a bug in the driver. Seriously. And the problem only exists on this particular ATI driver, never had that with the original driver or with nVidia...
A representative of a manufacturer told me that their 3D glasses filter UV the same way and have the same effect on polarized light (e.g. minimizing reflections for driving), but are more lightweight and as a consequence more prone to scratching. So they don't pass EU tests for outdoor sunglasses on mechanical grounds, not anything related to vision. Also, unlike sunglasses, their objective is to let as much light through as possible. So they only filter UV but do not reduce light intensity nearly as much.
Don't forget "2.0", ".com", "lickable" and "easy".
Given their current prices, you should go for 3D-enabled LCD monitors, e.g. the HP 2311 gt. Look for reviews like this one. I personally strongly recommend passive displays (less expensive, and way more comfortable e.g. under fluorescent light).
And if you want to show stuff in 3D easily, why don't you give Tao Presentations a spin?
This is very true. 3D is a tool that has been abused initially (the "shrapnel flying towards you" another poster referred to). But 3D is also the normal way for us to see the world, so when done right, it enhances the suspension of disbelief. However, it matters that you do it right. Just like color could be distracting when you had over saturated hues or bizarre skin tones, 3D can break the immersion spell if not done right. On the other hand, if you do it right, it is transparent on the conscious level but ads realism and makes the story more believable.
It's not just for movies either. At Taodyne, we brought 3D to interactive presentations. We have a kind of 3D interactive multimedia LaTeX called Tao Presentations. In our experience, 3D presentations are something that people still remember one year after having seen them. Most people don't necessarily remember movies better when they are in 3D, but ask any kid in France about the 3D Haribo ad, and chances are they remember it. The same is true for presentations. Showing models or charts in 3D gives them more impact.
Another interesting effect of 3D for storytelling is that you can put more data on a screen without causing confusion. You can put things in front to draw attention, or in the background for things that are less important. You can create true 3D charts, where the depth ads another useful axis. And the Star Wars effect in real 3D is an interesting way to show data (it's a built-in demo of Tao Presentations).
In short, 3D can be a gimmick. Or it can be used well and make a difference. It's all a matter of how you use it.
You should look at 3D glasses made by vendors of regular solar glasses, e.g. Polaroid Eyewear. They are comfortable, not very expensive, work in the theater and double as sunglasses. We have a few at Taodyne, and the 3D separation quality on passive TVs is really good.
I wonder what the precise computational cost is of rendering complex 3D objects and scenes on this kind of technology.
I can't wait to have one of these babies to run Taodyne's 3D presentations software on it! One of the things which is tricky with current multiscopic displays is how to convert existing 2D movies. Ideally, you want to do that in real time, something that Tao Presentations can do for Alioscopy or Tridelity displays, but which is more computationally expensive for Philips/Dimenco displays.
The difference that I see existing between atheists and self-proclaimed "agnostics" (most of whom are actually deists trying to sound more intelligent) is that one understands logical processes and probability, and one does not..
You seem to imply that you, unlike agnostics, understand logical processes and probabilities. So please prove to me, using only logic, that you exist. Prove to me that I am not in the Matrix, with a heavy computer simulation feeding me with bogus sensory information, possibly twisting my own memories to prevent me from realizing that I've been typing this message for eons... (this expression, btw, is not to be understood as an acknowledgement of the existence of time :-)
The point I'm making here is that what you call logic ultimately fails to yield any proof if used in a vacuum. You need basic axioms, which we all take for granted although experience continuously demonstrates how wrong they are. A few examples:
#1 We are all similar. Without that axiom, how can I derive with "high probability" that your consciousness and existence are similar to mine? Problem with this axiom: we are actually very different, and I myself change over time. What part can I rely on as proof for existence?
#2 Our consciousness is proof of existence. "I think, therefore I am". Problem with this axiom: we sometimes lose consciousness, don't we still exist?
#3 Our memory can be trusted: Problem with this axiom: according to my wife or to iPhoto, my memory is all but trustworthy.
#4 My reasoning has something to do with logic. Problem with that axiom: ever been angry or in a panic?
I could go on. I need many more similar axioms for "pure logic" to lead to the conclusion, with "high probability", that you exist. Ultimately, we accept our respective existence out of a dizzying quantity of simplifying hypotheses. Ultimately, the conclusion is that "logic" leads me to nothing better than: "if you tell me that you exist, then it is probably true." Basically, existence or truth is hard to prove, it always depends on something else.
This begs the question: is there something that exists or is true without any reference to anything else whatsoever?
This is why I find the response in Exodus 3:14 so fascinating. "I am that I am", i.e. "I exist by myself, out of nothing". Like for any statement, you may believe this sentence is true or not. Just like I may believe you, or not, when you write "one understands logical processes and probability". In both cases, it's primarily a matter of choice, of trust, of faith. But whether you believe or not, I find it truly fascinating that such an old book gives us a definition of God as a being without a root cause.
You may have trouble putting on the same plane the existence of a God saying "I am that I am" reportedly thousands of years ago, and the existence of yourself saying "one understands logical processes" reportedly thousands of milliseconds ago. But in my opinion, they are both so similar that this is the only logical thing to do. And what this logic leads me to is that I ultimately have a choice to make, in both cases. Do I believe, or not? Believing you exist is an act of faith. I choose to believe.
Therefore, I find the position of agnostics all but stupid. In the case of God, they decide not to choose yet, they keep looking for more data. It seems very logical to me..
As an aside, I disagree with your characterization of the scientific method:
Courtesy of the scientific method and burden of proof, a positive claim is false until proven.
The scientific method includes axioms and definitions that are positive claims yet not proven. Examples: "a metre is the length of the path travelled by light in vacuum during a time interval of 1 299,792,458 of a second". Furthermore, the theorem of Gödel, for instance, proved that even for something as "simple" as natural numbers, there are statements that are true but cannot be p
Tao Presentations is a 3D presentation software that runs on Linux as well as on Windows and MacOSX. We had mixed experience with nVidia support. Sometimes, it just works. In other cases, major functionality is missing (e.g. a laptop where the HDMI port is simply not detected). That being said, except when we hit a major bug, OpenGL performance is overall rather close to what we get on the same machine on Windows, which indicates that nVidia takes Linux somewhat seriously.
Actually, I don't think nVidia has any kind of anti-Linux strategy in place. It's rather that their portfolio is big and their overall strategy is sometimes confusing as a result. Consider stereoscopy for example, which matters a lot for Tao Presentations. Both nVidia and ATI have this puzzling idea that only "pro" customers can have stereoscopic support for OpenGL. This leads to situations where a machine with an nVidia chipset will connect to a 3D projector perfectly... as long as it runs MacOSX. The exact same hardware won't offer quad-buffer OpenGL support when running Windows or Linux. Why not?
So it's not about Linux, it's about lining up so many little pieces that sometimes, one of them is missing and the whole thing collapses. Linux is probably at the bottom of the list of things to fix, so that's where you see more problems.
I invite you to install Tao Presentations. Start with the free Discovery editions, http://www.taodyne.com/shop/fr/licences/20-tao-presentations-discovery.html. Once this is done, use the link tao://git.taodyne.com/examples/TEDx and load TEDx.ddd.
This is best viewed with a stereoscopic screen, but it works well on a regular 2D screen as well. This may give you ideas on how to tell your story.
Having written VM software myself (HP Integrity VM), I find this fascinating. Congratulations for a very interesting approach.
That being said, I'm sort of curious how well that would work with any amount of I/O happening. If you have some DMA transfer in progress to one of the pages, you can't just snapshot the memory until the DMA completes, can you? Consider a disk transfer from a SAN. With high traffic, you may be talking about seconds, not milliseconds, no?
I made a very similar argument a couple of years ago. I'm positive hundred of other people have: "If you are one in a million, there's a thousand like you in China".
But here's the rub: while sticking to Earth is dangerous, we don't know yet that we have any physical mean to leave it. So it doesn't really matter if Hawkins is saying we should abandon Earth, if he doesn't provide a credible way to actually do it.
So I guess the question becomes: Who is actually working on faster-than-light travel, life extension or other aspects of the problem? And if we don't know how to leave, what do we do to survive either until we figure it out, or forever if it happens there's no way to leave?
Rob Pike criticism of Java and C++ is really advocacy for the new Google language, Go. Unfortunately, Go isn't a very good language, in my opinion. It makes things simpler by being less powerful. What we really need to replace C++ or Java is a language that can grow on demand. Otherwise, we'll keep hitting the limits of the language. And I can hit the limits of Go pretty quickly.
Also, it's time to go beyond imperative, text-oriented languages. Graphics, anyone? It's possible: Hello World in XL simply looks better!
Some humans may be tetrachromates too, see http://en.wikipedia.org/wiki/Tetrachromacy#Possibility_of_human_tetrachromats.
The focus on flicker alone is a fallacy. In LCD projectors with a color wheel, the wheel ensures that red, green and blue are updated at least 25 times per second. But they are not updated at the same time. Many people can tell and don't like these projectors, because when their eyes move, the red, green and blue image dissociate.
Also, I don't know about others, but I can personally tell a 25Hz flicker on an old CRT. I assume many others can too. It's faint, and it doesn't prevent me from enjoying a movie, but I find higher refresh rates on modern TVs to be much less visually distracting.
It does not matter AT ALL, which “religion” it is.
What does matter is whether the founder of the religion said "love your enemies" or "kill your enemies"...
It only takes a few killer apps that can't reach the iPhone due to Apple's control-freakness to tip the balance away to some other platform.
Steve Jobs should know, of all people. Apple was once so dominant in the field of personal computers it could laugh at IBM, much like the iPhone in smartphones today. Well, guess what? A few years down the road, IBM's presence in the Macintosh core market was no longer laughing matter.
Expanded comment at http://grenouille-bouillie.blogspot.com/2010/04/steve-jobs-and-iphone-lockdown.html
Several years ago, I designed the software for a real-time automotive test system called HP ECUTEST (I think the official name was HP Design Span DS5470, but let's not waste time on HP's cold dead fish naming conventions). It simulated a car from an electric point of view. You connected an electronic control unit (ECU), and it had basically no way to tell it was not in a real car. Think of it as The Matrix for car electronics.
One of our first customers wanted us to test it with a reliable, proven, tested, tried and true ECU, something that was on the road in cars for several years already. So we did. And I noticed something odd. The ECU worked fine when we "drove" a car normally, but at idle, it would basically slow down, one RPM at a time, until it stopped. However, if I changed the value of the input corresponding to the accelerator pedal, it would reset the idle speed to the default, something like 800rpm.
Finally, after eliminating the possible bugs on our side, we tell the customer. Their first reaction was "no way". But after a week and a demo of the problem, they finally made a connection. They had this elusive bug of some car customers complaining that their car would sometimes stop when idle. It turns out that in a real car, chassis vibrations generally caused minute changes in the input value for the accelerator. So the ECU would correctly recompute its idle speed. However, if there was no change, like if the pedal was more rigid than usual, the bug would trigger.
The root cause was a routine that wanted to optimize idle speed to be as low as possible, but for some reason kept cached data if the accelerator had not changed, so it thought the engine was still running smoothly.
We found such bugs in practically all ECUs we tested for the first time. The most impressive one was in a V8 ECU that was basically a V8 until 1200rpm, then a V7, then a V6, and basically a V2 above 4000 rpm. The customer had hoped we'd find something, because they didn't get all the power they expected from the engine. Obviously. It was hard to find without our system, because the injectors that fired were differnt from cycle to cycle, so more simple instrumentation saw all cylinders running. The root cause here was that the software badly exceeded its real-time envelope... Ouch.
Unix pipe and filters can't be used to build a complex workflow. They are unidirectional streams of bytes. They are useful tools, but when was the last time you wrote a shell script that used only pipes?
The original article, laments about the way we program today, by assembling components. I'm only saying it's a good thing that we are finally there. And no, we weren't there in the 1970's as far as I remember, nor in the 1990's for that matter.
You are right that designing an API is hard. But I would add that it's not just a matter of API design, it's also a matter of use cases. That's why I still see value in someone writing the code she needs, and sharing it with me as open source. Because if the way she did it doesn't suit me, I can fix it. As a matter of fact, I did exactly that just last week with Cairo.
Back in the 1990's, all the rage was about "software components", what was back then a dream. Those who came up with COM and Corba and OpenDoc envisioned a world where software components would be as easy to put together as electronic components.
Well, that's the world we live in now. Just type "./configure; make" and use it. Why complain? It's a good thing. It makes us more productive. It allows our poor brains to keep up with Moore's law. See http://xlr.sourceforge.net/Concept%20Programming%20Presentation.pdf for more...
There's XL. OK, to be honest, it doesn't handle parallelism that well yet, but how this will be done is understood. And whether it's actively developed or not depends on your definition of "actively" ;-)
Pros:
- Designed for meta-programming
- Extensible (you can add your own notations with compiler plug-ins)
- No forced placement of { and } (largely because you don't need them)
- Probably the first language where you could redefine a Pascal-like WriteLn (way back in 2000 or so)
- The XL compiler is written in XL (the Go compiler isn't written in Go)
- Expression reduction, a generalized form of operator overloading, e.g. define expression A+B*C=0 when A, B and C are matrices
- True generic types, e.g. a way to use "array" as a type to denote code that doesn't care about element type or size
- Generic validation, i.e. detect in the specification whether it's OK to use a given generic type, e.g. maximum only works if you have an order relation.
- Generates C or Java (work currently in progress for generating machine code on the fly using LLVM)
- No parser-injected semi-colons. What were they thinking?
- OTOH, the new-line that separates statements is an infix operator (and so is the semi-colon). Now, that is cool.
- Very simple base syntax, implemented within less than 1000 lines of code
Cons:
- Not backed by Google or any large company
- Never went much beyond the "amusing exercise in compiler technology" stage, i.e. not used for any real stuff
Disclaimer: I invented and implemented that language, which means that you are probably biased :-)
I just upgraded to Linux version e9e961c9a818a2f24711af493b907a8e40a69efc, I was using 79fbe134832ebb70a49d8802cfeb2401dc35bb38 before.
We neeed a new modderation feature to ifx typos and speling misteks in the storys.