In one of Dana Scott's papers from the 1980s, he presents a programming language which is equipolent with Turing Machines but which consists entirely of the letter G. It's syntax was just the ability to apply expressions to other expressions, and it's operational semantics was some rewriting rules. It was very cute.
I second this. I waited until I was 50 to learn a language seriously. I started out with esperanto, which no practical value, but which is really really easy. Now at 55 I'm looking to learn Mandarin and Spanish. I'm sure I have no financial future for either of them, as I'm not likely to move to China, but I'm fascinated by the possibilities nonetheless.
The thing I learned from EO is that there are words which have multiple meanings in English which we don't naturally distinguish. For example, the word "for" can mean "designated for" or "because of". One says "This Bud's FOR you" and "Can't see the forest FOR the trees." These are different meanings. In EO they are different words. Trying to get them right at conversational speed is, for me, quite challenging.
I've used both ANTLR from PCCTS 1.3 and Bison pretty extensively. We have multiple bison and ANTLR grammars in our product. I like ANTLR generally better than bison. The extended BNF is really useful. And when you get used to writing top-down grammars, they are not so odd. In fact, with eBNF notation, alot of the peculiarity is taken away.
I also like Sorcerer. In PCCTS 1.3, Sorcerer is a kind of tree traversal grammar tool. You create ASTs, with ANTLR, and Sorcerer creates a program which will traverse them, and call action routines where you specify. It's really pretty neat.
I'm thinking about something else though. I'm thinking we should really think about programming with grammars more than we do. Say, for example, you have a user interface of some kind. It gets certain events, its state changes, and it reacts to the environment. A good fraction of the set of state changes can be captured with some kind of finite state machine. But a context free grammar is equivalent to a finite state machine with a pushdown list to hold context. So, it seems very likely to me that a good way to build user interfaces is to somehow compose grammars. The tokens are events, and the action routines are the non-FSM state changes.
So, why is this interesting in this discussion? Well, ANTLR from PCCTS 1.3 is a recursive descent parser, and YACC/Bison are bottom up parsers. This means that the pushdown list for ANTLR is the execution stack, and the pushdown list for YACC/Bison is in data space. It's hard to see how one would maintain multiple ANTLR-style automata concurrently, but that's what you want to do for this style of programming.
Generally YACC/Bison pushdown lists and other parsing data are kept in global variables, but there is a way to make Bison generate C++ useable grammars where the parsing data are saved in a heap allocated object. This means they have a fixed size, which may be a problem. But it would not take a lot of work to change the parsing algorithm for Bison to make the pushdown list a linked list, and that might make things easier.
So, in short, I think it's pretty interesting to look at parsing, even if you're not writing compilers.
I must agree with you. I was on the team that created the Ada 95 specification. My impression of Robert Dewar was that he was one of those people for whom winning arguments is better than being right.
As an example of the Ada 95 design process, early on in design we produced something called Mapping Documents. These mapped requirements to proposed language changes. One of them had to do with the area I had just written a Ph.D. thesis on - types and object orientation. I read the Mapping document, but found it was total gibberish. It was not just mathematical gibberish, but real gibberish. The attempted sentences often did not have verbs, though they extended for tens of words and several lines. I pointed this out to the language designer, who is not Robert Dewar, and suggested that a simplified, grammatical proposal might be better understood. He said, and I wish that I could quote this exactly, that people in the Ada community preferred formal language to simple, formal language, so he was trying to make things more appealing to them. I realized from this that (1) people he wanted to impress were impressed by mathematics, and (2) mathematics was complete gibberish to him. So, he decided that if he wrote gibberish, people he wanted to impress would find it indistinguishable from mathematics, and be impressed.
I would not myself recommend anyone wasting time on Ada.
I don't understand what your disagreement with the Newton librarians is. They told the FBI that they needed a warrant, and you say you would do the same thing. Noone has charged that the Newton librarians were trying to resist a legal authority. They only required that the law be followed. This is not something a conservative has much use for or interest in, I realize. Respect for the law is, apparently, a liberal notion.
FWIW, I would have probably been applauding for Ralph Nader as well, as he is the most honest and straightforward person in political life in the US today, possibly tied with Jim Hightower.
I spend a lot of my time in assembly code, looking at code generated by compilers, and debugging things. You can't, for example, debug things like static initializers in C++ very well without getting to the underlying machine model. Static constructors and destructors are not called using the usual call sequence, they are called by the run time system. If something goes wrong with the run time system, and you need to figure out what it is, you need to debug the instructions themselves.
Now, I will admit that in my current job I don't spend much time coding in assembly language. However, at my last job, writing video device drivers, there was a lot of hand optimized assembly language. Compilers are still not very good at optimizing Pentium pipelines. I expect that in 15 years compilers will be better at it, but there will be something then that compilers will do worse than people, and programmers will have to think for a living. Maybe it will be optimization of memory access paths in highly parallel multithreaded processors, though I expect that's less than 15 years out.
FWIW, both the 3Dfx and ATI OpenGL Windows drivers were in user space in Windows. The way it works there is that the driver asks the 2D display driver for a memory buffer, the driver fills the memory buffer in with commands, most of which have the form "draw a triangle", and then the driver submits the buffer of commands to the hardware through a kernel interface. This is the way the ATI Rage128 drivers worked, and the 3Dfx V3 and V5 drivers worked. In fact, for OpenGL, you could use the Visual C++ debugger to debug the driver. DirectX is under the Win32 mutex, so debugging it is a big PITA, and required SoftICE.
My guess would be that they are exactly the same now. The problem with Linux performance is not that the driver is in user space, but that the driver, Mesa, is not very efficient.
I use Speakeasy. They are a dream to work with. They are tremendously reliable, whenever they have any kind of a service interruption I get (bulk) email from the president of the company apologizing, and explaining in great detail exactly what happened, and what steps they are taking to keep it from happening. I have never had a significant service interruption. They also have the best technical support staff around. I have had only one occasion to ask them, but they were able to trace my line to the last router right from their desk. (The problem was my misconfiguration.) Finally, they give me 4 static IPs and let me host whatever I want except for the reverse DNS domains. They will let me specify what values the reverse DNS mappings should have, but they want to control them themselves.
All in all I am very happy with Speakeasy, and would recommend them to anybody.
Didn't Microsoft contribute multiple hundreds of thousands of dollars to Lauch Faircloth's last senatorial campaign? And wasn't he defeated pretty handily?
It doesn't necessarily follow that GWB will win, even if MS dumps big buckets of dollars into his campaign.
OTOH, I've been looking for a good reason to vote for Al Gore, and this seems to be it for me.
I used to believe that geeks were naturally arrogant, but I have changed my mind. I think that geeks value cleverness a great deal, and like to hang out with people who are clever. When they try to make friends, they try to impress people with their mastery of the skills they value. Unfortunately, most people don't want to be friends with people just because they are smarter. In particular, demonstrating that you are smarter than people is a bad strategy for making friends of any kind, romantic or otherwise.
Anyway, I now believe I understand this completely, and if you disagree with me, you clearly are wrong and should go hide in a hollow log and drink stump water.
If you pair programmers in the same cubicle, with only one computer between them, you don't have to worry that one or both of them are wasting their time reading and replying to Slashdot articles.
For some reason this book reminded me of Gerald Weinberg's ancient tomb. Esp the advocacy of very small teams. What's this? Is Gerald Weinberg dead? Or is he simply alive writing less ancient tomes?
The DDD application seems to crash pretty often, if you use the scroll bars for the data display window. When it crashes it does some sort of a keyboard and mouse grab, which makes it impossible to switch to another virtual console or kill the X server.
However, I have never tried the magic SysRq key. It might be possible to force the X server to die that way.
MIT is not a state institution. It is entirely a private organization, though they are non-profit. The state of Massachusetts is not going to see any direct value from anything that MIT produces.
Now, many MIT graduates stay in state, and make good wages. This helps the state's tax base, so MIT is a good deal for the state, but MIT is still private. MIT is a good deal more open than Harvard (known locally as WGU - the World's Greatest University) though they are becoming less open. For example, you can go into the MIT library and look at things, and people who are connected with other local universities can get permission to use the MIT library. Also, MIT graduates can use the MIT library. WGU allows scholars to use the Weidner library 7 days per lifetime. When I was working on my dissertation I tried to get access to the WGU library, but was unable to get permission from them. At MIT I just walked in and did what I needed to do. My friend the librarian at the Sloan School (== WGU Business School) tells me that MIT is thinking of closing its library to the non-MIT community.
I would believe this is the situation in game companies. I interviewed with a couple the last time I was looking for a job, and I was too expensive for all of them. I was not looking for a raise, and I am not statistically overpaid, if you look at the industry salary surveys, but game companies want people on the cheap.
However, the description of the working conditions - no specs, no documentation, no process, chaotic development - seems to describe all of the companies at which I have worked in the last 15 years.
I personally believe that it has to do with the mistaken belief that "First to market wins." This was true with Microsoft, but they had a monopoly, and they were not averse to acting in restraint of trade to maintain it. I don't think first to market with something that doesn't work always wins, though that is the way companies believe.
The only lesson I think we can learn from this is the lesson we can learn from looking at any commercial venture. Commerce is Fraud.
Actually one of my first interviews out of college in 1982 was at Fairchild (I think) in Santa Clara, CA. It was to work on a Pascal compiler, Pascal being only moribund, and not totally dead then. The guy I talked to was very proud of the fact that their compiler could eliminate a branch of an if statement when static analysis told them that the condition was true or false. He was using it the way we use ifdefs in C.
Also, when I was on the Ada 95 Mapping Team, then Ada 9X, we talked about adding something like #if to Ada, but the language reviewers always shot it down. They believed that using static constants and if statements is always better. I never figured out why.
This is an extremely rude remark, and in very poor taste. This is the kind of thing which gives/. readers a bad name in the Linux community. Your ill bred language and foolish, foolish threats do you no credit. You should be soundly ashamed of yourself.
I have always thought this was caused by history, as are all things I suppose. Computing was very expensive 20 years ago, and even 10 years ago it was not cheap. The computing community learned to optimize their scarce resources, and they carefully crafted memory and time efficient solutions to problems. This is why people in the 80s would never use something as inefficient as the C++ standard template libraries, for example.
To try to draw out the EE analogy, a CPU designer undoubtedly wastes many transistors in order to get some other sort of efficiency, say regularity, or to use something like a standard register definition. These other efficiencies might be manufacturing or design efficiencies which don't occur in the actual device, but which represent a cost savings overall. (I don't know if this is true, and I would be happy to be told I am wrong.)
Now that large scale computational resources are almost freely available, the environment has all changed. It's now possible and probably necessary to design large systems, each of whose components are perhaps not the most efficient possible, but which fit together nicely, and which work, whatever "work" means.
I think this comment is not completely correct. I work on free sw mostly because I get to do process and documentation. In fact, I think that free sw benefits even more from process than commercial sw. If you only have a few hours per week to work on a project, you can't waste time. Wasting 5 hours might be half a day on a commercial project, and an entire week on a free sw project.
I am currently having a small debate with my boss over whether to have any design documentation or peer review at all. It's small because she just tells me what she thinks, and won't listen to anything else. She even publically humiliated me last week because I wrote requirements and design documentation for a tool I wrote some months back. She is of the belief that getting a prototype working and shipped is more important than getting something which works. (Of course, we also had a big shouting match about how to round numbers up to the next highest multiple of eight. She got some expression from some Microsoft sample program which didn't work, but we had to do the calculation for all 8 possible remainders before she believed me.) Of course this all means I will be looking for a new job in the next few weeks.
So, I in my spare time I am working on a program to do the very prosaic job of backing up a file system to a CDROM burner, using mkisofs and cdrecord. Since it's my program I did it my way. I started with a requirements document, did a detailed design, and only then started coding. I started with RCS, but now I'm using CVS. It seems to have worked pretty well, but I've had to do some backtracking to fix some technical details. Some of the stuff I wanted to implement turns out to be too time consuming to do with the 5 hours/wk I have available. I believe the process helped me a great deal.
I also believe that requirements documentation is even more important than the design document. The design document tells you how to solve a problem, but the requirements documentation tells you what the problem is. Of course, both of them are in some sense conjectures until you get to the end of the project. You don't often know what the problem is until you have tried to state and then solve it a few times. But if you don't try to state the problem in natural language terms, you will never succeed in solving it. Just my 0.02 Euros.
(Anybody need a CS Ph.D. with 15 years of experience who both designs and codes? Boston area, or my DSL? No Win, W2K or NT please. Resume on request.)
The red flag for me in this article is "licensed and patented". What's their patent here? Have they patented something that will bite the Linux community later on? If they are just selling a product, it will succeed or fail as it will. If they have inappropriate patents, they can gum up everybody's works.
This is something I have never really understood. Can someone give me an example of how, with whatever license, someone can take a project, P, amend it to create a new, proprietary project, P+, and then restrict access to P as a result of having created P+? If P has either BSD or GPL licenses, isn't it going to be around forever? For that matter, if P has no license at all, but is just released into the public domain, how can it be restricted? I can certainly see how someone could restrict the new part, (P+ - P). However, that's the P+ creator's work, and she should get whatever credit and value she wants out of it.
Sorry, I'm a jerk. I replied to the wrong comment.
I hate to pile on, but this comment is in error.
In one of Dana Scott's papers from the 1980s, he presents a programming language which is equipolent with Turing Machines but which consists entirely of the letter G. It's syntax was just the ability to apply expressions to other expressions, and it's operational semantics was some rewriting rules. It was very cute.
I second this. I waited until I was 50 to learn a language seriously. I started out with esperanto, which no practical value, but which is really really easy. Now at 55 I'm looking to learn Mandarin and Spanish. I'm sure I have no financial future for either of them, as I'm not likely to move to China, but I'm fascinated by the possibilities nonetheless.
The thing I learned from EO is that there are words which have multiple meanings in English which we don't naturally distinguish. For example, the word "for" can mean "designated for" or "because of". One says "This Bud's FOR you" and "Can't see the forest FOR the trees." These are different meanings. In EO they are different words. Trying to get them right at conversational speed is, for me, quite challenging.
I've used both ANTLR from PCCTS 1.3 and Bison pretty extensively. We have multiple bison and ANTLR grammars in our product. I like ANTLR generally better than bison. The extended BNF is really useful. And when you get used to writing top-down grammars, they are not so odd. In fact, with eBNF notation, alot of the peculiarity is taken away.
I also like Sorcerer. In PCCTS 1.3, Sorcerer is a kind of tree traversal grammar tool. You create ASTs, with ANTLR, and Sorcerer creates a program which will traverse them, and call action routines where you specify. It's really pretty neat.
I'm thinking about something else though. I'm thinking we should really think about programming with grammars more than we do. Say, for example, you have a user interface of some kind. It gets certain events, its state changes, and it reacts to the environment. A good fraction of the set of state changes can be captured with some kind of finite state machine. But a context free grammar is equivalent to a finite state machine with a pushdown list to hold context. So, it seems very likely to me that a good way to build user interfaces is to somehow compose grammars. The tokens are events, and the action routines are the non-FSM state changes.
So, why is this interesting in this discussion? Well, ANTLR from PCCTS 1.3 is a recursive descent parser, and YACC/Bison are bottom up parsers. This means that the pushdown list for ANTLR is the execution stack, and the pushdown list for YACC/Bison is in data space. It's hard to see how one would maintain multiple ANTLR-style automata concurrently, but that's what you want to do for this style of programming.
Generally YACC/Bison pushdown lists and other parsing data are kept in global variables, but there is a way to make Bison generate C++ useable grammars where the parsing data are saved in a heap allocated object. This means they have a fixed size, which may be a problem. But it would not take a lot of work to change the parsing algorithm for Bison to make the pushdown list a linked list, and that might make things easier.
So, in short, I think it's pretty interesting to look at parsing, even if you're not writing compilers.
I must agree with you. I was on the team that created the Ada 95 specification. My impression of Robert Dewar was that he was one of those people for whom winning arguments is better than being right.
As an example of the Ada 95 design process, early on in design we produced something called Mapping Documents. These mapped requirements to proposed language changes. One of them had to do with the area I had just written a Ph.D. thesis on - types and object orientation. I read the Mapping document, but found it was total gibberish. It was not just mathematical gibberish, but real gibberish. The attempted sentences often did not have verbs, though they extended for tens of words and several lines. I pointed this out to the language designer, who is not Robert Dewar, and suggested that a simplified, grammatical proposal might be better understood. He said, and I wish that I could quote this exactly, that people in the Ada community preferred formal language to simple, formal language, so he was trying to make things more appealing to them. I realized from this that (1) people he wanted to impress were impressed by mathematics, and (2) mathematics was complete gibberish to him. So, he decided that if he wrote gibberish, people he wanted to impress would find it indistinguishable from mathematics, and be impressed.
I would not myself recommend anyone wasting time on Ada.
I don't understand what your disagreement with the Newton librarians is. They told the FBI that they needed a warrant, and you say you would do the same thing. Noone has charged that the Newton librarians were trying to resist a legal authority. They only required that the law be followed. This is not something a conservative has much use for or interest in, I realize. Respect for the law is, apparently, a liberal notion.
FWIW, I would have probably been applauding for Ralph Nader as well, as he is the most honest and straightforward person in political life in the US today, possibly tied with Jim Hightower.
I spend a lot of my time in assembly code, looking at code generated by compilers, and debugging things. You can't, for example, debug things like static initializers in C++ very well without getting to the underlying machine model. Static constructors and destructors are not called using the usual call sequence, they are called by the run time system. If something goes wrong with the run time system, and you need to figure out what it is, you need to debug the instructions themselves.
Now, I will admit that in my current job I don't spend much time coding in assembly language. However, at my last job, writing video device drivers, there was a lot of hand optimized assembly language. Compilers are still not very good at optimizing Pentium pipelines. I expect that in 15 years compilers will be better at it, but there will be something then that compilers will do worse than people, and programmers will have to think for a living. Maybe it will be optimization of memory access paths in highly parallel multithreaded processors, though I expect that's less than 15 years out.
FWIW, both the 3Dfx and ATI OpenGL Windows drivers were in user space in Windows. The way it works there is that the driver asks the 2D display driver for a memory buffer, the driver fills the memory buffer in with commands, most of which have the form "draw a triangle", and then the driver submits the buffer of commands to the hardware through a kernel interface. This is the way the ATI Rage128 drivers worked, and the 3Dfx V3 and V5 drivers worked. In fact, for OpenGL, you could use the Visual C++ debugger to debug the driver. DirectX is under the Win32 mutex, so debugging it is a big PITA, and required SoftICE.
My guess would be that they are exactly the same now. The problem with Linux performance is not that the driver is in user space, but that the driver, Mesa, is not very efficient.
I use Speakeasy. They are a dream to work with. They are tremendously reliable, whenever they have any kind of a service interruption I get (bulk) email from the president of the company apologizing, and explaining in great detail exactly what happened, and what steps they are taking to keep it from happening. I have never had a significant service interruption. They also have the best technical support staff around. I have had only one occasion to ask them, but they were able to trace my line to the last router right from their desk. (The problem was my misconfiguration.) Finally, they give me 4 static IPs and let me host whatever I want except for the reverse DNS domains. They will let me specify what values the reverse DNS mappings should have, but they want to control them themselves.
All in all I am very happy with Speakeasy, and would recommend them to anybody.
That's tellin' him. I think the word you want is "causally".
This is what happens when people write but don't read.
Way to go RL! It's good to see there is somebody in the media with a bit of backbone.
Didn't Microsoft contribute multiple hundreds of thousands of dollars to Lauch Faircloth's last senatorial campaign? And wasn't he defeated pretty handily?
It doesn't necessarily follow that GWB will win, even if MS dumps big buckets of dollars into his campaign.
OTOH, I've been looking for a good reason to vote for Al Gore, and this seems to be it for me.
I used to believe that geeks were naturally arrogant, but I have changed my mind. I think that geeks value cleverness a great deal, and like to hang out with people who are clever. When they try to make friends, they try to impress people with their mastery of the skills they value. Unfortunately, most people don't want to be friends with people just because they are smarter. In particular, demonstrating that you are smarter than people is a bad strategy for making friends of any kind, romantic or otherwise.
Anyway, I now believe I understand this completely, and if you disagree with me, you clearly are wrong and should go hide in a hollow log and drink stump water.
If you pair programmers in the same cubicle, with only one computer between them, you don't have to worry that one or both of them are wasting their time reading and replying to Slashdot articles.
For some reason this book reminded me of Gerald Weinberg's ancient tomb. Esp the advocacy of very small teams. What's this? Is Gerald Weinberg dead? Or is he simply alive writing less ancient tomes?
So, I wonder, if you started a coffee shop and called it Bartleby's, would you get sued by Starbuck's?
The DDD application seems to crash pretty often, if you use the scroll bars for the data display window. When it crashes it does some sort of a keyboard and mouse grab, which makes it impossible to switch to another virtual console or kill the X server.
However, I have never tried the magic SysRq key. It might be possible to force the X server to die that way.
MIT is not a state institution. It is entirely a private organization, though they are non-profit. The state of Massachusetts is not going to see any direct value from anything that MIT produces.
Now, many MIT graduates stay in state, and make good wages. This helps the state's tax base, so MIT is a good deal for the state, but MIT is still private. MIT is a good deal more open than Harvard (known locally as WGU - the World's Greatest University) though they are becoming less open. For example, you can go into the MIT library and look at things, and people who are connected with other local universities can get permission to use the MIT library. Also, MIT graduates can use the MIT library. WGU allows scholars to use the Weidner library 7 days per lifetime. When I was working on my dissertation I tried to get access to the WGU library, but was unable to get permission from them. At MIT I just walked in and did what I needed to do. My friend the librarian at the Sloan School (== WGU Business School) tells me that MIT is thinking of closing its library to the non-MIT community.
I would believe this is the situation in game companies. I interviewed with a couple the last time I was looking for a job, and I was too expensive for all of them. I was not looking for a raise, and I am not statistically overpaid, if you look at the industry salary surveys, but game companies want people on the cheap.
However, the description of the working conditions - no specs, no documentation, no process, chaotic development - seems to describe all of the companies at which I have worked in the last 15 years.
I personally believe that it has to do with the mistaken belief that "First to market wins." This was true with Microsoft, but they had a monopoly, and they were not averse to acting in restraint of trade to maintain it. I don't think first to market with something that doesn't work always wins, though that is the way companies believe.
The only lesson I think we can learn from this is the lesson we can learn from looking at any commercial venture. Commerce is Fraud.
Actually one of my first interviews out of college in 1982 was at Fairchild (I think) in Santa Clara, CA. It was to work on a Pascal compiler, Pascal being only moribund, and not totally dead then. The guy I talked to was very proud of the fact that their compiler could eliminate a branch of an if statement when static analysis told them that the condition was true or false. He was using it the way we use ifdefs in C.
Also, when I was on the Ada 95 Mapping Team, then Ada 9X, we talked about adding something like #if to Ada, but the language reviewers always shot it down. They believed that using static constants and if statements is always better. I never figured out why.
This is an extremely rude remark, and in very poor taste. This is the kind of thing which gives /. readers a bad name in the Linux community. Your ill bred language and foolish, foolish threats do you no credit. You should be soundly ashamed of yourself.
I have always thought this was caused by history, as are all things I suppose. Computing was very expensive 20 years ago, and even 10 years ago it was not cheap. The computing community learned to optimize their scarce resources, and they carefully crafted memory and time efficient solutions to problems. This is why people in the 80s would never use something as inefficient as the C++ standard template libraries, for example.
To try to draw out the EE analogy, a CPU designer undoubtedly wastes many transistors in order to get some other sort of efficiency, say regularity, or to use something like a standard register definition. These other efficiencies might be manufacturing or design efficiencies which don't occur in the actual device, but which represent a cost savings overall. (I don't know if this is true, and I would be happy to be told I am wrong.)
Now that large scale computational resources are almost freely available, the environment has all changed. It's now possible and probably necessary to design large systems, each of whose components are perhaps not the most efficient possible, but which fit together nicely, and which work, whatever "work" means.
I think this comment is not completely correct. I work on free sw mostly because I get to do process and documentation. In fact, I think that free sw benefits even more from process than commercial sw. If you only have a few hours per week to work on a project, you can't waste time. Wasting 5 hours might be half a day on a commercial project, and an entire week on a free sw project.
I am currently having a small debate with my boss over whether to have any design documentation or peer review at all. It's small because she just tells me what she thinks, and won't listen to anything else. She even publically humiliated me last week because I wrote requirements and design documentation for a tool I wrote some months back. She is of the belief that getting a prototype working and shipped is more important than getting something which works. (Of course, we also had a big shouting match about how to round numbers up to the next highest multiple of eight. She got some expression from some Microsoft sample program which didn't work, but we had to do the calculation for all 8 possible remainders before she believed me.) Of course this all means I will be looking for a new job in the next few weeks.
So, I in my spare time I am working on a program to do the very prosaic job of backing up a file system to a CDROM burner, using mkisofs and cdrecord. Since it's my program I did it my way. I started with a requirements document, did a detailed design, and only then started coding. I started with RCS, but now I'm using CVS. It seems to have worked pretty well, but I've had to do some backtracking to fix some technical details. Some of the stuff I wanted to implement turns out to be too time consuming to do with the 5 hours/wk I have available. I believe the process helped me a great deal.
I also believe that requirements documentation is even more important than the design document. The design document tells you how to solve a problem, but the requirements documentation tells you what the problem is. Of course, both of them are in some sense conjectures until you get to the end of the project. You don't often know what the problem is until you have tried to state and then solve it a few times. But if you don't try to state the problem in natural language terms, you will never succeed in solving it. Just my 0.02 Euros.
(Anybody need a CS Ph.D. with 15 years of experience who both designs and codes? Boston area, or my DSL? No Win, W2K or NT please. Resume on request.)
The red flag for me in this article is "licensed and patented". What's their patent here? Have they patented something that will bite the Linux community later on? If they are just selling a product, it will succeed or fail as it will. If they have inappropriate patents, they can gum up everybody's works.
This is something I have never really understood. Can someone give me an example of how, with whatever license, someone can take a project, P, amend it to create a new, proprietary project, P+, and then restrict access to P as a result of having created P+? If P has either BSD or GPL licenses, isn't it going to be around forever? For that matter, if P has no license at all, but is just released into the public domain, how can it be restricted? I can certainly see how someone could restrict the new part, (P+ - P). However, that's the P+ creator's work, and she should get whatever credit and value she wants out of it.
How am I confused?