"There are already plenty of torrent trackers and listing services out there that do exactly what you propose (and I have listed them before). "
Hmm. I didn't know about this (and I assume I'm not the only one) - could you put up a link to your prior listings? Most of the battle in this game is making people aware of what's out there in the first place.
OK, I have an idea. Let's stop with the stealing of music, and let them do whatever they want to stop us from copying it. There's a simple answer - don't buy it. Instead, create and listen to free content.
Let's get behind iRATE radio, and really get it into shape (http://irate.sf.net./ As a piece of software, from the user end I must confess its user interface leaves a lot to be desired. It's unpolished, unfinished, and has a variety of major missing pieces and flaws. BUT.
I use it quite a lot, because it has something that few other programs have. CONTENT. Legal, free content. Much of it I don't care for (the same could be said of normal radio, for that matter) but the more people involved, the more attention it gets, the better a) the software will get and b) the content will get. As more people prune out the truly bad and things get more interesting, it can (maybe even will) snowball.
I think iRate, or some fork thereof, needs some major improvements, granted. They need to:
a) Update their music selection algorithms, give users a choice of algorithms and a way to indicate genra preferences, and provide a default download pack of the highest rated music to start with (don't start new users with the worst or random, start them with the best! any marketer can tell you you've gotta hook them before you can reel them in.)
b) For goodness sake make the interface modern and more useful as a music player! Model it on iTunes, or whatever other good ones are out there(Rhythmbox isn't too bad) but get off the feature starved java interface.
c) Hook in bittorrent with some kind of legal download only constraints, and give content creators the opportunity to distribute their music using this system if they license it under creative commons terms.
d) Have an elected membership which reviews songs BEFORE they go on the bittorrent network, and have them either give it a yea or nay. Then have two options - the filtered bittorrent, with music that has at least undergone minimal quality control, and the unfiltered madness:-)
Let's show the commercial world that community spirit still exists, and can survive on its own. Open source did it for software, now let's do it for music. Sure it might be harder than for software, but who would have bet on open source 20 years ago? Let's give it an honest to goodness shot, and see if it can be made to work.
Common Lisp has been attracting a lot of attention lately, compared to previous activity. Several of the Common Lisp projects funded were for the purpose of improving things like foreign function interfaces, and thus speed Lisp's popularity and utility even further.
There are a lot of applications written in Lisp that are special enough and powerful enough to justify lots of attention. For example:
Maxima: http://maxima.sourceforge.net/ This is a computer algebra system, with the ability to do things like symbolic integration. Not your run of the mill program, and very difficult to do except in a language like lisp or a similar language
Axiom: http://www.axiom-developer.org/ A second computer algebra system, with a slightly different approach than Maxima. Also extremely powerful, and is pushing the envelope of robust, literate program design for computational mathematics.
None of these has a pretty interface, granted (at least not one written in lisp) but these are not your everyday programs. Lisp is a real language in real, non-trivial use.
There are a variety of other projects being undertaken, check out http://common-lisp.net/ for many of them. And if you want to code lisp remember to explore SLIME+Emacs.
Sure. But it's a problem - given a finite amount of time in school, people can learn only so many concepts. The foundations of non-trivial computer science are in some ways almost as hard to teach as the basics are to a beginner - formal methods being a good example.
I never said students couldn't impliment trivial stuff for assignments - my suggestion is once they're out in the real world, there are an EXTREMELY large number of trivial (or at least basic) yet hard to code things, and rather than having to do the grunt work it would be better to build on what has been done before. Imagine how things would be if every time you wanted to do a sort you had to code up quicksort, for example. Scale this up to more complex things, and you have similar situations.
I knew about some of those existing tools - the B-Method, Z and VDM at least. The others are new to me. Thanks for the links!
"There is no magic process you can follow that makes everything work, and there is no "final" programming model."
Magic, no. However, I do tend to think most programming errors are either a) poorly implimenting something that is understood or b) coding well on something that has not been properly designed. (Though of course those are not mutually exclusive - you can have poor implimentations of poorly designed things, too.) What formal methods do is a) make it harder to code badly, since what you do is ultimately subject to machine verification and b) force you to think more fully about WHAT you want your program to do. Of course for situations where a customer doesn't know what they want b) is less useful, but it still provides a framework for discussion of design changes. It's true to say that formal methods won't guarantee you always get something that works the way you want it to, but they CAN help guarantee you get something that works the way you designed it to.
Perhaps the proper way to look at it is that programming models should exist WITHIN formal methods. Organization of data and code can change, but a) those changes need to be well understood and b) need to be well described. I'm not aware of any method that would contradict either of those two requirements, and they are the essence of what formal methods give you.
I'll also concede the overhead of formal methods might not always be worthwhile (although I think that education and better tools would help a lot with that) but I think as a rule people tend to undervalue the worth of robust software. Even something as simple as an office suite - how much time has been lost due to bugs with importing figures between Word and Powerpoint?(yes I have seen this happen.) They are "non-critical" compared to something like medical software but how many hundreds of thousands of hours might be saved over the years if these setups worked robustly? Or the virus problem, to take another example? Soft, non-robust software gets attacked and crippled. Design flaws in the beginning caused huge amounts of trouble, and updates and patches have proven a less than general solution due to social limitations (yes social limitations count, and no berating the users won't solve the problem - we're designing these things for users. Without users there is no point at all, so designing around their limitations is part of the job.) Making things hard to break in the beginning would be much the better thing to do.
That's why I'm advocating a formal approach - done correctly, the idea would be that you COULD NOT SPECIFY a problem properly without giving the database the ability to determine whether it has been done or not. You still need intelligent people to specify the requirements, but the idea would be that once you DO fully specify them it would be immediately clear what exists, courtesy of the searchable central archive.
That's one of the problems that needs to be attacked - too many problems have been solved only in old code, or an obscure library, or only in one language. We need to make programming solutions both general and searchable, which requires a rigorous system.
Now I agree that it might sometimes be faster to just code the darn thing than learn to use such a system (probably quite often, really), BUT. Once learned, it would make all future tasks both easier and FAR more robust.
It's the same old problem - it takes effort to learn an app/language/system, and people will always take the shortest path, generally speaking. What I'm saying is that we should use organization, education in schools/college, and formal methods to make a system so powerful and robust it will be wasteful and expensive to use anything ELSE. Do it Right once and build off of it. Most of the work in an application design is designing the solution - most of the pieces, logically speaking, should already exist. So once you know WHAT you want (I know, that can change, but if you're going to do it you've got to have some idea) the actual DOING of it should reuse proven, solid parts. Creating that system will be really, really hard but would allow us to build much more powerful software - think about it as using steel beams and architects to create a skyscraper instead of knocking together a wood hut to keep the rain off. The skyscraper requires a heck of a lot more supporting industry and design, but look at what it achieves.
To my mind what we need is not more models, but some FINAL model - i.e. a way to impliment programming logic in such a way that it will never need to be implimented again.
Think about it - how much programming out there is a duplication of some other effort, at least in some of its logical components? I'd say what we need is two things:
a) A database of implimented programming logic - maybe not a database proper, but something that contains the ability to say "given this, do this" exists.
b) A programming method that involves designing an application such that you break each top level logical component/ability down until you a) know that you have to impliment it or b) it is found to have already been done. I'm guessing b will be the norm, and as more and more logical components are added to the database the point at which b) is found should get higher and higher in the design stage.
And the programming language bias should, at the database level, be a moot point. The database itself should define its algorithms and logic in such a way as to be workable in automatic proof assistants like acl2 and HOL4, and generate code in the required language as needed. Surely for a properly specified algorithm there must be some well defined way to generate it as code, provided the language specs are up to par. This is deterministic behavior, after all. Perhaps different algorithms for the same function can be added, and a choice made on a per language basis, but I'm dubious that this would be needed in an ideal world.
In a world with open source as a working reality, there should never be a need to impliment anything non-trivial. Design should be specifying only things that don't already exist. Object oriented programming is a nice step in that direction, but that doesn't let people know a) what's out there and b) what the quality of it is. I say let's bring formal methods to their full potential, and reduce the amount of work the programmer must do to the irreducable minimum. Programmer time is too valuable to waste on re-implimenting things. Standardize everything that can be done "right", and have the human being do ONLY the part he/she is good at - deciding what needs to be done from a USER standpoint - i.e. WHAT to do. How to do it should be, as much as possible, decided once and correctly, and then not again.
Correct me if I'm wrong, but couldn't the better machines from the old mainframe days virtualize themselves? IIRC someone ported Linux to one of the virtual machines and was able to run a crazy number of instances on one set of hardware.
I know this sounds (is?) crazy, but why not open up the architecture of the old mainframes, and base the next generation of PC hardware on those ideas? CPU and memory are cheap now, but those suckers were designed to be robust back when you couldn't solve all problems by making large clusters of faulty machines - they had to work, period. Surely modern PCs could match much of the power of an old mainframe machine, properly designed, and the whole modern desktop OS and apps could just be run on a virtual instance from a PC. This would allow, say, Windows and Linux to coexist, run at the same time, have no issues crop up that software like VMware has to work around, and allow for all sorts of interesting debugging possibilities (how about booting up another VM to debug a wiped out desktop OS, just by pressing a button on the keyboard?)
IIRC x86 has some real issues with virtualization, but if what I have heard is true and x86 is now mostly a layer put on top of more advanced cores in most CPUs perhaps the problem has already been (largely) addressed. Does this makes sense to anyone else - would it be good to have "desktop mainframes"?
I want my PC version of the space cadet keyboard, ding nabbit! Complete with absurdly overbuild mechanical durability and enough shift keys to fly an airplane with! It's not quite a mind meld with your computer but it's more or less the next best thing;-).
I lucked into an old IBM keyboard, and it will undoubtedly outlive the rest of my computer. Why the heck is there no market for durable goods any more? Or rather, why won't anyone MAKE durable goods? Has pride in workmanship given over entirely to next quarter profits? Gah.
It's all about the batteries
on
10 Technologies MIA
·
· Score: 2, Interesting
EV1 was never workable - the battery weight and expense, combined with limited range, made it Not Practical as a mass market car from day one.
Gotta love the bit about recalling and destroying the cars due to liability concerns. Thank you US legal system. We really ought to outlaw innovation, exploration, and all that stuff - it's too dangerous. Can let people run risks - heaven forbid.
Space is essentially the only frontier we have left, and I think humanity needs a frontier. The Earth is fully populated now, in the sense that only the very remotest regions remain unexplored and all regions are claimed.
Practical is good and all, but if we wait until we solve all our problems here on Earth first we'll be stuck on this dirtball until the sun hits Red Giant phase. Human nature being what it is.
I say Let's Get Out There! Now! It pushes limits, it's positive, and it pushes technology. Sounds good to me! May China can provoke another space race - I sure hope so. One-upmanship seems to be the only real way to get any serious funding:-(.
I know you aren't able to comment on any specific actions that are or might be taken, but as a general philosophy question at Microsoft - are patents seen as a defensive measure only, or are they seen as being useful offensively against competitors and open source developers?
Actually, that would have been useful for me to have had in the Maxima code base (1970s and 1980s lisp code)
I'm just beginning to get the hang of lisp, and I had a heck of a time figuring out exactly how the darn thing got started. Anything would have been nice - I didn't know at the beginning that user::run kicked things off, for example (seasoned lisp coders feel free to laugh yourselves out of your chairs). I finally got some idea of the flow of things and charted it: http://maxima.sourceforge.net/maximaflowtoplevel.p ng
Of course, all the cool and important stuff happens later on, but at least I know roughly how I get there now. Progress!
Essentially I wanted to know this because I was looking for ways to unravel how Maxima actually WORKS (comments were apparently considered a waste of space back in the day, or worse encouraged people to play with (and break) the code.) Now it's open source, and I would like to have the code in a readily understandable state (well, as much as possible - some math stuff is just hard to follow no matter how you comment it) but it's remarkably like redoing a decade old house that has fallen into disrepair. And with minimal to no comments, it's like working without blueprints - you have to poke and prod and hope things are relatively sturdy.
"Do we really think we'll be dragging windows around a 2D desktop in 30 years time?"
I hope so. 2 dimensions is as much information as can be processed in parallel by a human being - we deduce the third dimension. On an electronic screen, which is itself 2 dimensional, I see little purpose in trying to use a non-existant 3rd dimension for day to day activities. In some specialized instances it makes sense - 3d modeling, for example - but I for one do NOT want a 3d metaphore for my desktop. I'm willing to be proven wrong about this, as I do like things like transparency, but I'll have to see it and evaluate it first. As of right now I don't see anything that has anything beyond the initial "ooo-cool" phase. Real usability comes out in weeks and months of use, not 2 hours of cool effects. But then, I use and like fluxbox+gkrellm for my desktop, so perhaps my philosophy is a tad odd.
I'm glad BeOS still lives in some form - it deserved to survive. But it will be forever a niche OS.
a) Expensive. Sorry folks, but however nice BeOS was it wasn't enough of a leap ahead to make people want to pay for it instead of make do. DOS taught the world this decades ago - cheap wins in any mass market environment.
b) Driver support. Linux has enough trouble in this regard - how does BeOS (pardon me, Zeta) plan to do it? By becoming like Apple and selling box+hardware? If so they'd better get moving, because Apple has had tha market locked up for years now.
c) The "why should I bother?" effect. Switching OSes is a MAJOR task for all but a very small subset of us. Guess how many people are going to bother with this, without a compelling reason?
I think there is one, and only one, way to get people to switch operating systems on a massive scale - mathematically provable security and quality. A system that can be proven uncrashable and unhackable will change the world, since that is currently the great unmet need. People have good enough, in both commercial (Windows/Mac) and free (Linux/*BSD). It's going to take a leap to the next level, and that's so difficult I doubt we are even training computer scientists in the right tools to attempt it. We need the Final OS - the one where an upgrade means you swap in a new proof that impliments the previous behavior more efficiently, or provides more functionality while still proving out on security and previous functionality. Upgrade bugs need to become not just unheard of but mathematically impossible. Then people will pay attention.
For that matter, why aren't Netscape, Internet Explorer, and other browser liable? Never mine music - some of the foulest stuff imaginable gets distributed via browser.
Basically, it's yet another gray area. I guess the law is full of this kind of stuff though - that's what "judges" are for. And it is hard to argue against the notion that intent can give a different cast to identical actions.
I wish Debian would promote Apple's Common Documentation License - it feels the closest to a "GPL for documentation" of any of the ones I've read to date (IANAL.) Does anybody know why that one isn't more widespread?
What about Haiku?
on
Zeta Goes Gold
·
· Score: 3, Interesting
Personally, I'd rather wait for them to succeed, or if they don't learn from the ideas and move on. I don't see the point in another commercial BeOS effort when the first one, with an admittedly GOOD product, crashed and burned. OS lockin has gotten stronger, not weaker - WinXP is stable enough for quite a large number of people. (I.e. that's not their major complaint any more.) I know it's rife with virus and spyware issues, but those problems are as much a function of user habits as anything - as demonstrated by the success of a mechanism (email viri) which requires the active help of the user to run.
I would argue that, rather than fewer scientists, we need more support for the sciences. Return on new knowledge has always been fantastic. The great problems of our time (diseases, energy, environment, etc.) are not likely to be addressed by politicians or lawyers, nor even by businesses (who always think about short term profit over long term gain.) Properly supporting smart people doing good work is almost never a waste. If we've got more smart, well trained and motivated people out there, for goodness sake lets support them!
Knowledge for knowledge's sake has always been the best way to do research, but despite that it is not (and cannot) be a "guarantee" of returns. In today's climate, returns on investment are EVERYTHING. That's the wrong attitude IMHO, but seeing as I have no real financial power with which to back my ideas, my opinion means little to nothing.
I could note that the lack of federal funding for pure research isn't helping matters either, but that starts a political argument...
Microsoft profits off of vendor lockin. Barring legal decisions which they are actually made to obey, I can't envision them ever doing anything to change that situation.
No doubt it will be "open" to anybody willing to sign something saying they won't develop a competing product or tell anybody what they read, or something equally worthless. They may SAY they won't do that, but I'll have to actually see it happen to believe it and even then I'll be looking the gift horse carefully in the mouth. Any patents on it? Odd restrictions in the fine print? Other tricks I'm not enough of a lawyer to spot? Microsoft has to prove they can be trusted to do something like this, and prove it thoroughly - I for one don't trust them and will be extremely wary.
No. It COULD HAVE BEEN better than the results I saw delivered with Peoplesoft. Right now I'm quite sure it's not better in general.
The two projects I specified were not chosen at random, or are they buzzwords. The are specific tools which are designed to handle many of the things Peoplesoft was used to handle in my experience with the university. Web based frontends would require development, which I know less about, but I do know there are a wide variety of open tools used and usable for such purposes.
better != best, and technology is only part of the picture. And convincing anyone is a moot point - that's not my field. I just don't like seeing my money vanish into the Peoplesoft vacuum cleaner, with marginal results.
True. I guess I should have specified a contract, rather than a bounty. Of course, if you establish minimum necessary conditions for the awarding of the bounty you are reasonably safe, unless your deadline is such that you can afford no delay.
An open system, done correctly, could be used by universities everywhere and lower the overall cost of a university education. Wouldn't that be a worthwhile goal?
I've often wished universities would do stuff like this. They have large scale software needs, (usually) a significant budget, and a lot of complex and fairly unique product requirements. I would think funding open source tools would appeal to them both in an economic and academic way.
Anybody who watched a Peoplesoft deployment at a university (and there were many of them) had to be both amused and shocked. I know my school spent millions - first to y2k proof an old system, then when that didn't satisfy them to go ahead and "upgraded" to Peoplesoft anyway. The result, at least from the student and professor point of view, was a nightmare. Buggy, klunky, and unpolished by any definition. I kept wondering why five or six universities couldn't have pooled their resources behind the GNU enterprise people. GNU enterprise + postgresql/ingres/whatever + other open web technologies couldn't POSSIBLY have done worse, and for that amount of $$ probably would have done MUCH better.
Heck, our CS students probably could have done better than the interface we got stuck with. It's no wonder college costs keep going up if what I saw was typical of university spending decisions.
"There are already plenty of torrent trackers and listing services out there that do exactly what you propose (and I have listed them before). "
Hmm. I didn't know about this (and I assume I'm not the only one) - could you put up a link to your prior listings? Most of the battle in this game is making people aware of what's out there in the first place.
OK, I have an idea. Let's stop with the stealing of music, and let them do whatever they want to stop us from copying it. There's a simple answer - don't buy it. Instead, create and listen to free content.
:-)
Let's get behind iRATE radio, and really get it into shape (http://irate.sf.net./ As a piece of software, from the user end I must confess its user interface leaves a lot to be desired. It's unpolished, unfinished, and has a variety of major missing pieces and flaws. BUT.
I use it quite a lot, because it has something that few other programs have. CONTENT. Legal, free content. Much of it I don't care for (the same could be said of normal radio, for that matter) but the more people involved, the more attention it gets, the better a) the software will get and b) the content will get. As more people prune out the truly bad and things get more interesting, it can (maybe even will) snowball.
I think iRate, or some fork thereof, needs some major improvements, granted. They need to:
a) Update their music selection algorithms, give users a choice of algorithms and a way to indicate genra preferences, and provide a default download pack of the highest rated music to start with (don't start new users with the worst or random, start them with the best! any marketer can tell you you've gotta hook them before you can reel them in.)
b) For goodness sake make the interface modern and more useful as a music player! Model it on iTunes, or whatever other good ones are out there(Rhythmbox isn't too bad) but get off the feature starved java interface.
c) Hook in bittorrent with some kind of legal download only constraints, and give content creators the opportunity to distribute their music using this system if they license it under creative commons terms.
d) Have an elected membership which reviews songs BEFORE they go on the bittorrent network, and have them either give it a yea or nay. Then have two options - the filtered bittorrent, with music that has at least undergone minimal quality control, and the unfiltered madness
Let's show the commercial world that community spirit still exists, and can survive on its own. Open source did it for software, now let's do it for music. Sure it might be harder than for software, but who would have bet on open source 20 years ago? Let's give it an honest to goodness shot, and see if it can be made to work.
Common Lisp has been attracting a lot of attention lately, compared to previous activity. Several of the Common Lisp projects funded were for the purpose of improving things like foreign function interfaces, and thus speed Lisp's popularity and utility even further.
There are a lot of applications written in Lisp that are special enough and powerful enough to justify lots of attention. For example:
ACL2 : http://www.cs.utexas.edu/users/moore/acl2/
This is a high powered proof assistant and IIRC was used by AMD to verify some parts of their chip design.
Maxima: http://maxima.sourceforge.net/
This is a computer algebra system, with the ability to do things like symbolic integration. Not your run of the mill program, and very difficult to do except in a language like lisp or a similar language
Axiom: http://www.axiom-developer.org/
A second computer algebra system, with a slightly different approach than Maxima. Also extremely powerful, and is pushing the envelope of robust, literate program design for computational mathematics.
None of these has a pretty interface, granted (at least not one written in lisp) but these are not your everyday programs. Lisp is a real language in real, non-trivial use.
There are a variety of other projects being undertaken, check out http://common-lisp.net/ for many of them. And if you want to code lisp remember to explore SLIME+Emacs.
Sure. But it's a problem - given a finite amount of time in school, people can learn only so many concepts. The foundations of non-trivial computer science are in some ways almost as hard to teach as the basics are to a beginner - formal methods being a good example.
I never said students couldn't impliment trivial stuff for assignments - my suggestion is once they're out in the real world, there are an EXTREMELY large number of trivial (or at least basic) yet hard to code things, and rather than having to do the grunt work it would be better to build on what has been done before. Imagine how things would be if every time you wanted to do a sort you had to code up quicksort, for example. Scale this up to more complex things, and you have similar situations.
I knew about some of those existing tools - the B-Method, Z and VDM at least. The others are new to me. Thanks for the links!
"There is no magic process you can follow that makes everything work, and there is no "final" programming model."
Magic, no. However, I do tend to think most programming errors are either a) poorly implimenting something that is understood or b) coding well on something that has not been properly designed. (Though of course those are not mutually exclusive - you can have poor implimentations of poorly designed things, too.) What formal methods do is a) make it harder to code badly, since what you do is ultimately subject to machine verification and b) force you to think more fully about WHAT you want your program to do. Of course for situations where a customer doesn't know what they want b) is less useful, but it still provides a framework for discussion of design changes. It's true to say that formal methods won't guarantee you always get something that works the way you want it to, but they CAN help guarantee you get something that works the way you designed it to.
Perhaps the proper way to look at it is that programming models should exist WITHIN formal methods. Organization of data and code can change, but a) those changes need to be well understood and b) need to be well described. I'm not aware of any method that would contradict either of those two requirements, and they are the essence of what formal methods give you.
I'll also concede the overhead of formal methods might not always be worthwhile (although I think that education and better tools would help a lot with that) but I think as a rule people tend to undervalue the worth of robust software. Even something as simple as an office suite - how much time has been lost due to bugs with importing figures between Word and Powerpoint?(yes I have seen this happen.) They are "non-critical" compared to something like medical software but how many hundreds of thousands of hours might be saved over the years if these setups worked robustly? Or the virus problem, to take another example? Soft, non-robust software gets attacked and crippled. Design flaws in the beginning caused huge amounts of trouble, and updates and patches have proven a less than general solution due to social limitations (yes social limitations count, and no berating the users won't solve the problem - we're designing these things for users. Without users there is no point at all, so designing around their limitations is part of the job.) Making things hard to break in the beginning would be much the better thing to do.
That's why I'm advocating a formal approach - done correctly, the idea would be that you COULD NOT SPECIFY a problem properly without giving the database the ability to determine whether it has been done or not. You still need intelligent people to specify the requirements, but the idea would be that once you DO fully specify them it would be immediately clear what exists, courtesy of the searchable central archive.
That's one of the problems that needs to be attacked - too many problems have been solved only in old code, or an obscure library, or only in one language. We need to make programming solutions both general and searchable, which requires a rigorous system.
Now I agree that it might sometimes be faster to just code the darn thing than learn to use such a system (probably quite often, really), BUT. Once learned, it would make all future tasks both easier and FAR more robust.
It's the same old problem - it takes effort to learn an app/language/system, and people will always take the shortest path, generally speaking. What I'm saying is that we should use organization, education in schools/college, and formal methods to make a system so powerful and robust it will be wasteful and expensive to use anything ELSE. Do it Right once and build off of it. Most of the work in an application design is designing the solution - most of the pieces, logically speaking, should already exist. So once you know WHAT you want (I know, that can change, but if you're going to do it you've got to have some idea) the actual DOING of it should reuse proven, solid parts. Creating that system will be really, really hard but would allow us to build much more powerful software - think about it as using steel beams and architects to create a skyscraper instead of knocking together a wood hut to keep the rain off. The skyscraper requires a heck of a lot more supporting industry and design, but look at what it achieves.
To my mind what we need is not more models, but some FINAL model - i.e. a way to impliment programming logic in such a way that it will never need to be implimented again.
Think about it - how much programming out there is a duplication of some other effort, at least in some of its logical components? I'd say what we need is two things:
a) A database of implimented programming logic - maybe not a database proper, but something that contains the ability to say "given this, do this" exists.
b) A programming method that involves designing an application such that you break each top level logical component/ability down until you a) know that you have to impliment it or b) it is found to have already been done. I'm guessing b will be the norm, and as more and more logical components are added to the database the point at which b) is found should get higher and higher in the design stage.
And the programming language bias should, at the database level, be a moot point. The database itself should define its algorithms and logic in such a way as to be workable in automatic proof assistants like acl2 and HOL4, and generate code in the required language as needed. Surely for a properly specified algorithm there must be some well defined way to generate it as code, provided the language specs are up to par. This is deterministic behavior, after all. Perhaps different algorithms for the same function can be added, and a choice made on a per language basis, but I'm dubious that this would be needed in an ideal world.
In a world with open source as a working reality, there should never be a need to impliment anything non-trivial. Design should be specifying only things that don't already exist. Object oriented programming is a nice step in that direction, but that doesn't let people know a) what's out there and b) what the quality of it is. I say let's bring formal methods to their full potential, and reduce the amount of work the programmer must do to the irreducable minimum. Programmer time is too valuable to waste on re-implimenting things. Standardize everything that can be done "right", and have the human being do ONLY the part he/she is good at - deciding what needs to be done from a USER standpoint - i.e. WHAT to do. How to do it should be, as much as possible, decided once and correctly, and then not again.
Correct me if I'm wrong, but couldn't the better machines from the old mainframe days virtualize themselves? IIRC someone ported Linux to one of the virtual machines and was able to run a crazy number of instances on one set of hardware.
I know this sounds (is?) crazy, but why not open up the architecture of the old mainframes, and base the next generation of PC hardware on those ideas? CPU and memory are cheap now, but those suckers were designed to be robust back when you couldn't solve all problems by making large clusters of faulty machines - they had to work, period. Surely modern PCs could match much of the power of an old mainframe machine, properly designed, and the whole modern desktop OS and apps could just be run on a virtual instance from a PC. This would allow, say, Windows and Linux to coexist, run at the same time, have no issues crop up that software like VMware has to work around, and allow for all sorts of interesting debugging possibilities (how about booting up another VM to debug a wiped out desktop OS, just by pressing a button on the keyboard?)
IIRC x86 has some real issues with virtualization, but if what I have heard is true and x86 is now mostly a layer put on top of more advanced cores in most CPUs perhaps the problem has already been (largely) addressed. Does this makes sense to anyone else - would it be good to have "desktop mainframes"?
I want my PC version of the space cadet keyboard, ding nabbit! Complete with absurdly overbuild mechanical durability and enough shift keys to fly an airplane with! It's not quite a mind meld with your computer but it's more or less the next best thing ;-).
I lucked into an old IBM keyboard, and it will undoubtedly outlive the rest of my computer. Why the heck is there no market for durable goods any more? Or rather, why won't anyone MAKE durable goods? Has pride in workmanship given over entirely to next quarter profits? Gah.
EV1 was never workable - the battery weight and expense, combined with limited range, made it Not Practical as a mass market car from day one.
Gotta love the bit about recalling and destroying the cars due to liability concerns. Thank you US legal system. We really ought to outlaw innovation, exploration, and all that stuff - it's too dangerous. Can let people run risks - heaven forbid.
Space is essentially the only frontier we have left, and I think humanity needs a frontier. The Earth is fully populated now, in the sense that only the very remotest regions remain unexplored and all regions are claimed.
:-(.
Practical is good and all, but if we wait until we solve all our problems here on Earth first we'll be stuck on this dirtball until the sun hits Red Giant phase. Human nature being what it is.
I say Let's Get Out There! Now! It pushes limits, it's positive, and it pushes technology. Sounds good to me! May China can provoke another space race - I sure hope so. One-upmanship seems to be the only real way to get any serious funding
I have no idea if that was intentional, but either way it's sheer genius :-).
I know you aren't able to comment on any specific actions that are or might be taken, but as a general philosophy question at Microsoft - are patents seen as a defensive measure only, or are they seen as being useful offensively against competitors and open source developers?
# The main function starts here
p ng
Actually, that would have been useful for me to have had in the Maxima code base (1970s and 1980s lisp code)
I'm just beginning to get the hang of lisp, and I had a heck of a time figuring out exactly how the darn thing got started. Anything would have been nice - I didn't know at the beginning that user::run kicked things off, for example (seasoned lisp coders feel free to laugh yourselves out of your chairs). I finally got some idea of the flow of things and charted it:
http://maxima.sourceforge.net/maximaflowtoplevel.
Of course, all the cool and important stuff happens later on, but at least I know roughly how I get there now. Progress!
Essentially I wanted to know this because I was looking for ways to unravel how Maxima actually WORKS (comments were apparently considered a waste of space back in the day, or worse encouraged people to play with (and break) the code.) Now it's open source, and I would like to have the code in a readily understandable state (well, as much as possible - some math stuff is just hard to follow no matter how you comment it) but it's remarkably like redoing a decade old house that has fallen into disrepair. And with minimal to no comments, it's like working without blueprints - you have to poke and prod and hope things are relatively sturdy.
http://sealsystem.sourceforge.net/
"Do we really think we'll be dragging windows around a 2D desktop in 30 years time?"
I hope so. 2 dimensions is as much information as can be processed in parallel by a human being - we deduce the third dimension. On an electronic screen, which is itself 2 dimensional, I see little purpose in trying to use a non-existant 3rd dimension for day to day activities. In some specialized instances it makes sense - 3d modeling, for example - but I for one do NOT want a 3d metaphore for my desktop. I'm willing to be proven wrong about this, as I do like things like transparency, but I'll have to see it and evaluate it first. As of right now I don't see anything that has anything beyond the initial "ooo-cool" phase. Real usability comes out in weeks and months of use, not 2 hours of cool effects. But then, I use and like fluxbox+gkrellm for my desktop, so perhaps my philosophy is a tad odd.
I'm glad BeOS still lives in some form - it deserved to survive. But it will be forever a niche OS.
a) Expensive. Sorry folks, but however nice BeOS was it wasn't enough of a leap ahead to make people want to pay for it instead of make do. DOS taught the world this decades ago - cheap wins in any mass market environment.
b) Driver support. Linux has enough trouble in this regard - how does BeOS (pardon me, Zeta) plan to do it? By becoming like Apple and selling box+hardware? If so they'd better get moving, because Apple has had tha market locked up for years now.
c) The "why should I bother?" effect. Switching OSes is a MAJOR task for all but a very small subset of us. Guess how many people are going to bother with this, without a compelling reason?
I think there is one, and only one, way to get people to switch operating systems on a massive scale - mathematically provable security and quality. A system that can be proven uncrashable and unhackable will change the world, since that is currently the great unmet need. People have good enough, in both commercial (Windows/Mac) and free (Linux/*BSD). It's going to take a leap to the next level, and that's so difficult I doubt we are even training computer scientists in the right tools to attempt it. We need the Final OS - the one where an upgrade means you swap in a new proof that impliments the previous behavior more efficiently, or provides more functionality while still proving out on security and previous functionality. Upgrade bugs need to become not just unheard of but mathematically impossible. Then people will pay attention.
For that matter, why aren't Netscape, Internet Explorer, and other browser liable? Never mine music - some of the foulest stuff imaginable gets distributed via browser.
Basically, it's yet another gray area. I guess the law is full of this kind of stuff though - that's what "judges" are for. And it is hard to argue against the notion that intent can give a different cast to identical actions.
I wish Debian would promote Apple's Common Documentation License - it feels the closest to a "GPL for documentation" of any of the ones I've read to date (IANAL.) Does anybody know why that one isn't more widespread?
The old OpenBeOS project is now called Haiku: http://haiku-os.org/learn.php
Personally, I'd rather wait for them to succeed, or if they don't learn from the ideas and move on. I don't see the point in another commercial BeOS effort when the first one, with an admittedly GOOD product, crashed and burned. OS lockin has gotten stronger, not weaker - WinXP is stable enough for quite a large number of people. (I.e. that's not their major complaint any more.) I know it's rife with virus and spyware issues, but those problems are as much a function of user habits as anything - as demonstrated by the success of a mechanism (email viri) which requires the active help of the user to run.
I would argue that, rather than fewer scientists, we need more support for the sciences. Return on new knowledge has always been fantastic. The great problems of our time (diseases, energy, environment, etc.) are not likely to be addressed by politicians or lawyers, nor even by businesses (who always think about short term profit over long term gain.) Properly supporting smart people doing good work is almost never a waste. If we've got more smart, well trained and motivated people out there, for goodness sake lets support them!
Knowledge for knowledge's sake has always been the best way to do research, but despite that it is not (and cannot) be a "guarantee" of returns. In today's climate, returns on investment are EVERYTHING. That's the wrong attitude IMHO, but seeing as I have no real financial power with which to back my ideas, my opinion means little to nothing.
I could note that the lack of federal funding for pure research isn't helping matters either, but that starts a political argument...
Microsoft profits off of vendor lockin. Barring legal decisions which they are actually made to obey, I can't envision them ever doing anything to change that situation.
No doubt it will be "open" to anybody willing to sign something saying they won't develop a competing product or tell anybody what they read, or something equally worthless. They may SAY they won't do that, but I'll have to actually see it happen to believe it and even then I'll be looking the gift horse carefully in the mouth. Any patents on it? Odd restrictions in the fine print? Other tricks I'm not enough of a lawyer to spot? Microsoft has to prove they can be trusted to do something like this, and prove it thoroughly - I for one don't trust them and will be extremely wary.
No. It COULD HAVE BEEN better than the results I saw delivered with Peoplesoft. Right now I'm quite sure it's not better in general.
The two projects I specified were not chosen at random, or are they buzzwords. The are specific tools which are designed to handle many of the things Peoplesoft was used to handle in my experience with the university. Web based frontends would require development, which I know less about, but I do know there are a wide variety of open tools used and usable for such purposes.
better != best, and technology is only part of the picture. And convincing anyone is a moot point - that's not my field. I just don't like seeing my money vanish into the Peoplesoft vacuum cleaner, with marginal results.
True. I guess I should have specified a contract, rather than a bounty. Of course, if you establish minimum necessary conditions for the awarding of the bounty you are reasonably safe, unless your deadline is such that you can afford no delay.
An open system, done correctly, could be used by universities everywhere and lower the overall cost of a university education. Wouldn't that be a worthwhile goal?
I've often wished universities would do stuff like this. They have large scale software needs, (usually) a significant budget, and a lot of complex and fairly unique product requirements. I would think funding open source tools would appeal to them both in an economic and academic way.
Anybody who watched a Peoplesoft deployment at a university (and there were many of them) had to be both amused and shocked. I know my school spent millions - first to y2k proof an old system, then when that didn't satisfy them to go ahead and "upgraded" to Peoplesoft anyway. The result, at least from the student and professor point of view, was a nightmare. Buggy, klunky, and unpolished by any definition. I kept wondering why five or six universities couldn't have pooled their resources behind the GNU enterprise people. GNU enterprise + postgresql/ingres/whatever + other open web technologies couldn't POSSIBLY have done worse, and for that amount of $$ probably would have done MUCH better.
Heck, our CS students probably could have done better than the interface we got stuck with. It's no wonder college costs keep going up if what I saw was typical of university spending decisions.