There is a better word for this: 'codegrinder'. This, to me, is a more apt description of the mindset you illustrate, since it implies a more mindless pursuit than that of a 'coder'.
As an older student, I learned alot - not only about the computer science art as taught by the school - but in my own independent scholarship. I was self motivated and deeply interested in the craft, unlike most of my younger school mates.
My young peers did indeed go back to the frat house and drink beer. I have a good job now - while I have to fix what they (or others like them) break on a daily basis. Of course, I have some good job security, as a result.
Do you see the expansion of groups like this more as a positive influence in the region, or a threat to Islamic fundamentalism?
I am assuming that people in closed societies would find the idea of open and frank communication with other cultures (implied by the use of an internet ready device) danagerous for their agenda. Is this the case, or are my assumptions faulty?
My code is self documenting - and it has always been my particular emphasis on personal software projects even before I had university training or on the job experience (even before there was self documenting capabilities other than comments). I have read enough code from other people in my organization and from vendors to see that this is a rarity.
I have been using POD with my perl applications, as well as Python's built-in documentation capabilities more recently. I am now in the stage of automating the generation of XML (docbook standard) from these sources. I don't write much C or Java now, but would probably use CWEB or some other filter application for that purpose if I did.
How many other developers have the foresight, or take the time to do this on a regular basis? I can only name one in my outfit, at the moment - me. Sadly, most developers, regardless of background (CS and IT both), continue to have the attitude, "if it is hard to program, it should be hard to understand". This stems from their misguided notion that job security arises from code obscurity.
Yes and no (I love these dichotomies). On the one hand they are different; on the other hand, in practice most jobs that are available for both are in the commercial sector - so they have to be some level of overlap. However, this plays into the hands of the CS major, moreso than the IT major:
I worked with one IT grad who was steeped in the use of COBOL - but had no theoretical understanding of how computers work. I was constantly having to correct his incorrect assumptions about how the systems we were using worked. He couldn't understand why it was interesting to know about microcode, different CPU architectures, or the significance of the fact that a computer can simulate just about anything on multiple levels (think of the Russian nesting dolls - each larger container having another, different smaller container within it in iterative fashion). Having a CS background makes me a better programmer and system integrator (because programming, more and more is about system integration and less about building stand alone systems).
Given that, I think it imperative that you persue a CS degree if you want to be the best you can be in the commercial sector - because those non-commercial 'pure computer science' jobs are few and far between, and being a CS major will set you apart from the masses of IT candidates (not to mention raising your own skills and knowledge to be a more well rounded developer).
As a computer science major, I had to take the following:
Calculus 1, 2, 3 Statistics 1, 2 Linear Algebra 1 and of course all the lower level math classes in addition (college algebra etc)
How much have I used in the course of my work? Very little - and practically nothing that I could pull off the top of my head. In 99.999% of the cases I ended up doing research to determine the best formula/algorithm for a sticky problem...conversely these instances occurred only about.001% of my programming lifetime (maybe 7 times in a 20 year period). Many times, given modern computer speeds, it is not necessary to cut the tollerances so close, and lesser (standard) algorithms suffice.
The level of usage is dependent on your programming tasks; if you develop realtime applications, including games, industrial control applications, or space shuttle reentry control programs, then you might need to be a math wiz. On the other hand, how many of those jobs are out there? Most people will not need such an indepth, tip of the tongue grasp of mathematics to perform admirably. This is why practitioners of computer science, while steeped in mathematics, may find themselves more capable if they have a keener grasp of linguistics (both human and machine varieties), logic, and the underlying capabilities and limitations of computer systems, instead.
The real key is to know where to find formulas and algorithms when you need them (there are various 'recipe' books available - including the seminal collection by Donald Knuth:
They key, in my mind, is to not empower these companies anymore.
To make this practical, artists, both recording and the movie making variety, need to take a stand for open media and distribution schemes. Ultimately, they need to go independent and put the art ahead of the money making.
Parallel to that, the consumers of said art need to boycott the large companies who want to promlugate these monopolistic practices via this technological lock-in.
If both of these things happen, the money will flow where it should have been going anyway - into the pocket of the artist, instead of the hands of the corporate owners.
If we don't do something - we will be losing more than most people realize.
1. Wife has main password to my machines, in the event I die unexpectedly - she can get to my memoirs and writings (most of the rest of the stuff is just information I collected doing research on various subjects). Conversely, I am the system admin on my home network, so I already have access to everyone's computer - so if one my family members dies (heaven forbid) I will be able to peruse their drives as needed.
2. In the event of a terminal illness over a longer time, I will burn a CD of the stuff I want them to have (will save them having to go through a bunch of extraneous files after my death).
"Although, most telecoms are very religious about not doing maint during the day..."
That doesn't prevent someone from doing an uninstall on a circuit, either too early (before you cut over to new circuits), or the wrong circuit. I have had both happen to me.
The most interesting thing about this rift between the open source community and the MPAA is that is serves to illustrate how, on the one hand, big business attempts to marginalize minorities that threaten their bottom lines by changing the rules of the game, and on the other hand, how the open source minority is smart enough to bypass their attempts.
I also find it interesting that digital media has changed the rules to such an extent, that the businesses dependent upon the profitability of artistic content have instead of changing their business processes, would rather spend millions of dollars attempting to put the genie back in the bottle. The backlash from the customers is apparent in slumping sales.
The strongest message that could be sent to these companies would be if the majority of 'customers' and artists would abandon contacts with those companies, altogether, that insist upon doing things 'business as usual' - instead of inventing new ways for everyone to profit from the new technology. If enough people were spending their entertainment dollars elsewhere, I can guarantee that it would marginalize all proponents of intrusive technology (they can't legislate where you get your entertainment - as long as the source is not pirated material). Furthermore, and more importantly, it would make most of those companies change their way of doing business for the betterment of everyone.
With the new digital technologies out there, a professional recording studio or a professional movie making outfit can be put together without a great expenditure - compared to the past. With equipment becoming cheaper every day, and internet access becoming nearly ubiquitous, it is only a matter of time before the decentralization of the entertainment industry is complete. The MPAA and like groups are only delaying the inevitable.
What would this buy the customers? The opportunity to choose media based on quality, rather than packaging. What would this buy artists? The opportunity to focus on the Art rather than the Business of their craft. The best Art would float to the top - not the highest paid artists, or the ones with the largest advertising budget.
We have the power to make this happen - by voting with our wallets. If a business's revenue stream dries up they only have two choices: change or go under. Sadly, most people don't see the dangers inherent in the limitations being imposed, and don't work together to make things better. It is also instructive that engineers would stick their nose into this for the community - they could simply sit back with all their engineer buddies and enjoy the content that thier ingenuity allows. However, they see the bigger issue, interoperability and the marginalization of certain technologies (such as linux) if these issues are not addressed - and the great loss this would cause for a very large minority (millions) of the population.
1. EMACS (Editor+ - to replace MS Word) 2. PFE32 (Editor - to replace notepad for 'one off' writing) 3. Python 4. Perl 5. FireFox (browser de jure) 6. WWIIonline (best battlefield simulation - bar none) 7. Battlefield Vietnam (best FPS bar none) 8. MS Train Simulator (okay - I like trains...so sue me) 9. Close Combat A Bridge Too Far (oldie, but goodie) 10. IL6 (flight sim - sometimes the urge to fly overcomes me...) + more games as the mood hits me...
1. Emacs 2. Python 3. Perl 4. TheGimp (Graphics) 5. FireFox (www Browsing) 6. OpenOffice (MS equivalent office tools - use mainly to read due to clueless individuals who send me.ppt,.doc,.xls etc. files - instead of XML, HTML, comma delimited, or other plain text formats) 7. Gnumeric etc...(more productivity tools as needed - I like some of the functionality found in gnumeric vs. OpenOffice spreadsheets)
Most of the things I use are already present in most Linux distributions - so I usually don't have to load them in manually, unless I need a specific update.
Most languages don't have referential transparency enforced explicitly. For example, by the definition of referential transparency:
a function is called referentially transparent if, given the same parameter(s), it always returns the same result - Wikipedia
most functional languages are not strictly referentially transparent, as the same parameters passed to a function can, indeed, return a different result. This is actually useful, as it allows programs to deal with random data - as in the case of user input, for example.
However, I have yet to see a practical language that does not support some form of referential transparency for mathematical functions, such as *, -, +,/, =....otherwise the very basis for logic: A=B, B=C, A=C falls apart, and chaos ensues:)
At the hardware level, if there are two physically different variables named 'A', there should be some means of differentiating them in the language. If not, we would lose track of one or the other (more commonly known as a 'memory leak'). So, even under such circumstances, it is facetious to say A=A is false, when in fact we are leaving off some bit of symbolism that is implied (perhaps invisibly) in the language by the ordering of the parameters or some other rule that serves to differentiate the variables as really different entities (i.e. 'A sub one', 'A sub 2' etc...).
Can someone name a language that does not have truely referentially transparent mathematical functions (in particular the equals function)? Again, 'A=A is false' implies that there is some missing information because the first A would have to have a physical memory location that is different than the second A, and logic would dictate that we would have to be able to differentiate the two in some manner to recall their contents for meaningful use.
Software can already be certified via various conformance standards for both the product and the process of making the product.
The current system allows your shell script to happily coexist in an unimpeded way in noncritical applications, as well as part of a standards based certification for those critical systems (aircraft, nuclear power plant etc...)
From a practical standpoint, manditory licensing would not be feasible to police - and would present an artificial barrier to entry that is not needed for 99% of the software applications (everyone is not running a nuclear power plant, or the space shuttle; most applications do not have 'significant' economic impacts if a failure occurs - particularly if disaster perparedness and recovery, and data backup and restoration processes are put into place to ameliorate any problems).
I also question the value of having all programmers be cookie cutouts of each other (which this licensing would imply), in a field where invention has historically made the most advances in the state of the art. Under your system, we would all be using flow charts and the waterfall lifecycle model for all projects - extreme (iterative) programming would not be 'approved' and thus would be marginalized (as just one example).
The real key for programmers is to become more valuable from a holistic approach. You need to de-commoditize yourself through differentiation. I do, however, see your licensing scheme - as a voluntary program to have value for additional differentiation for individual developers.
Agreed. The worse thing SCO could do now would be to cut and run. We need definitive case law that shows where open source stands for the future - and this is the perfect case to use for that purpose.
P.S. This is another reason why we have wind tunnels and test pilots still today. While computers have certainly allowed us to save time, money and lives in aircraft development, there is still nothing like putting the actual airframe to the test in flight.
A must equal A on a computer - since 'A' is really a name (in a programming language) for a physical storage address of an area of memory corresponding to the type assigned to the variable.
(this still applies to OO languages that may have several instances of 'A' in different objects - the key being that each 'A' is effectively a different variable: instance1(A), instance2(A) etc, since each instance of A would actually reside in different physical addresses in storage).
A computer, however, is not a piece of paper which is pretty much immutable once information is recorded on it (without alot of elbow grease, in the form of erasure - or bottles of white-out). Computer variables, and constants for that matter, have the potential to change over time due to things outside of the control of the machine: power could be interrupted or a power surge could alter the contents of our variable without us knowing it at some point. In most cases this will cause catastrophic corruption of the OS, and a reboot would be required that would clear the calculation anyway. On the other hand, it is possible that a minor glitch will pass through and taint our proof/application.
Because of this possibility, while proofs are useful from a theoretical standpoint to create the correct underpinning of our solutions, computer applications can not blindly depend on the 'correctness' of a given descreet algorithm alone.
In practice, particularly for applications that could potentially be life threatening, programs are designed to use redundant systems that can be cross checked against one another to rule out these kinds of errors. Additionally, heuristics (basically an unproven rule of thumb) and fuzzy logic are becoming more commonplace in solutions - which allows us to 'dial in' our boundaries - beyond which we will not go; so, if a theorum is proven correct for all numbers up to some incredible amount - but fails beyond that point, we could reasonably say that the theorum is true up to that boundary - and use it, even though proven incorrect beyond that point.
This gets to the essence of the issue: practical application, versus theoretical rigor. If we know the limits of 'incorrect' theorums we can still leverage their interesting properties for our use. To me this is more interesting, and gets to the crux of the matter: picking those boundaries efficiently enough for the task at hand is more useful than spending thousands of man-hours proving it for all cases.
While theoretical mathematicians are needed - I am not going to lose any sleep if I use a theory that can not be proven beyond some insanely large or small number that I will not approach in practice.
1st: find a good repartitioning program. Use it to repartition your hard drive.
2nd: reload the OS over a (set of) clean partition(s). This will probably reformat your new partitions - if not, you may need to run a format application first.
If the problem occurs often enough and you have enough machines to justify it, hard drive image 'ghosting' software may be advisable.
Keep any important data on a non-windows machine (linux will do fine) that is set up to serve the data securely (I use Plone - a content management system - CMS - based on Zope to allow my users to save and access their files - with access controls that allow users to designate private and public objects - including folders, files, html documents, images, etc). Keep this box behind a tight firewall that only allows internal traffic from the machines on your network to touch the box. Additionally, use a non-standard port for your web host.
Finally, if you are technically competent enough, develop new methods of validating conversations between your machines (encryption is a good option). Even more important than any of this, you must keep all of the software on this server patched up to the most up-to-date revisions as possible - 90% of your problems will be solved. However, the worse problem, and most uncontrollable aspect is your end users - like my wife - who demand complete control while abdicating their responsibility for that control when something goes wrong.
My clients can crash and burn, for all I care - it is less time consuming for me to reinstall a box, than to keep track of my user's (family's) poor choices when I am not around. My information server must be rock solid, as a result.
This approach has saved me many headaches...if a system gets to the point of being unusable, I merely wipe it, and slap on the OS...which has only happened twice on my network in the last two years (with 4 users). I usually take my time getting around to it - while lecturing them on what they should do in the future to avoid the problem...this usually hits home, after about a week without their internet 'fix'.
When a tracked vehicle goes over a pothole, you hardly feel it at all - okay so there are vibrations and noise - but the ride of a track across a pothole is alot smoother than the ride of an automobile across the same pothole - particularly larger potholes. That is the point I was getting at - plus the added benefit being able to roll over just about anything in your path.
I am glad I am on a salary, so I don't have to worry about this 'time shaving' fiasco.
Of course, I am expected to work at least 50 hours a week - and sometimes longer when the situation calls for it - without any additional pay.
I hate clock watching, so this works out okay for me. Plus, we have some flexibility, as well (for example, if I have to do something during a maintenance window - 11pm - I can leave work early to make up for it....its not all bad).
Many GUIs are today having languages embedded in them - such as the always popular Python - and you can always point back to VB as a Microsoft example of this idea (although poorly executed).
In the Unix world, probably the most famous embedded application is emacs - using lisp as the macro language in this case.
I think the right approach, from a niave user standpoint, is to embed languages into GUIs and provide hooks to extend the GUI via that language. This way, you can have your cake and eat it too; niave users get the simplicity of the gui, while also benefitting from the macros/scripts created by power users.
I wonder what shape my wheels have to be to ride smoothly over the screwed up roads that my town refuses to fix?
Actually, several non-wheel ideas come to mind:
Tracked vehicles - make your own potholes - with a smooth ride... Walking vehicles - who cares about potholes - or roads for that matter?... Flying vehicles - this is my personal favorite - where is that flying car they promissed us?...
The money is squirreled away for just such an opportunity...
Everyone knows the best Star Trek was the original. All the touchy-feely PC Star Trek shows that followed were a mere shadow of the original.
There is a better word for this: 'codegrinder'. This, to me, is a more apt description of the mindset you illustrate, since it implies a more mindless pursuit than that of a 'coder'.
It was pumped into me by the US Army...lol
As an older student, I learned alot - not only about the computer science art as taught by the school - but in my own independent scholarship. I was self motivated and deeply interested in the craft, unlike most of my younger school mates.
My young peers did indeed go back to the frat house and drink beer. I have a good job now - while I have to fix what they (or others like them) break on a daily basis. Of course, I have some good job security, as a result.
Do you see the expansion of groups like this more as a positive influence in the region, or a threat to Islamic fundamentalism?
I am assuming that people in closed societies would find the idea of open and frank communication with other cultures (implied by the use of an internet ready device) danagerous for their agenda. Is this the case, or are my assumptions faulty?
Agree wholeheartedly.
My code is self documenting - and it has always been my particular emphasis on personal software projects even before I had university training or on the job experience (even before there was self documenting capabilities other than comments). I have read enough code from other people in my organization and from vendors to see that this is a rarity.
I have been using POD with my perl applications, as well as Python's built-in documentation capabilities more recently. I am now in the stage of automating the generation of XML (docbook standard) from these sources. I don't write much C or Java now, but would probably use CWEB or some other filter application for that purpose if I did.
How many other developers have the foresight, or take the time to do this on a regular basis? I can only name one in my outfit, at the moment - me. Sadly, most developers, regardless of background (CS and IT both), continue to have the attitude, "if it is hard to program, it should be hard to understand". This stems from their misguided notion that job security arises from code obscurity.
Yes and no (I love these dichotomies). On the one hand they are different; on the other hand, in practice most jobs that are available for both are in the commercial sector - so they have to be some level of overlap. However, this plays into the hands of the CS major, moreso than the IT major:
I worked with one IT grad who was steeped in the use of COBOL - but had no theoretical understanding of how computers work. I was constantly having to correct his incorrect assumptions about how the systems we were using worked. He couldn't understand why it was interesting to know about microcode, different CPU architectures, or the significance of the fact that a computer can simulate just about anything on multiple levels (think of the Russian nesting dolls - each larger container having another, different smaller container within it in iterative fashion). Having a CS background makes me a better programmer and system integrator (because programming, more and more is about system integration and less about building stand alone systems).
Given that, I think it imperative that you persue a CS degree if you want to be the best you can be in the commercial sector - because those non-commercial 'pure computer science' jobs are few and far between, and being a CS major will set you apart from the masses of IT candidates (not to mention raising your own skills and knowledge to be a more well rounded developer).
Calculus 1, 2, 3
Statistics 1, 2
Linear Algebra 1
and of course all the lower level math classes in addition (college algebra etc)
How much have I used in the course of my work? Very little - and practically nothing that I could pull off the top of my head. In 99.999% of the cases I ended up doing research to determine the best formula/algorithm for a sticky problem...conversely these instances occurred only about
The level of usage is dependent on your programming tasks; if you develop realtime applications, including games, industrial control applications, or space shuttle reentry control programs, then you might need to be a math wiz. On the other hand, how many of those jobs are out there? Most people will not need such an indepth, tip of the tongue grasp of mathematics to perform admirably. This is why practitioners of computer science, while steeped in mathematics, may find themselves more capable if they have a keener grasp of linguistics (both human and machine varieties), logic, and the underlying capabilities and limitations of computer systems, instead.
The real key is to know where to find formulas and algorithms when you need them (there are various 'recipe' books available - including the seminal collection by Donald Knuth:
- The Art of Computer Programming
'Fundamental Algorithms' - which is well thumbed, on my bookshelf).They key, in my mind, is to not empower these companies anymore.
To make this practical, artists, both recording and the movie making variety, need to take a stand for open media and distribution schemes. Ultimately, they need to go independent and put the art ahead of the money making.
Parallel to that, the consumers of said art need to boycott the large companies who want to promlugate these monopolistic practices via this technological lock-in.
If both of these things happen, the money will flow where it should have been going anyway - into the pocket of the artist, instead of the hands of the corporate owners.
If we don't do something - we will be losing more than most people realize.
Chlorine Bleach every few months will solve any bacterial issues you may have with your shower curtain.
Its called 'cleaning the bathroom' - something everyone should do on a regular basis for several reasons:
1. I don't know about you, but I like using a clean bathroom.
2. It would do many people good to do some humble tasks on a regular basis.
1. Wife has main password to my machines, in the event I die unexpectedly - she can get to my memoirs and writings (most of the rest of the stuff is just information I collected doing research on various subjects). Conversely, I am the system admin on my home network, so I already have access to everyone's computer - so if one my family members dies (heaven forbid) I will be able to peruse their drives as needed.
2. In the event of a terminal illness over a longer time, I will burn a CD of the stuff I want them to have (will save them having to go through a bunch of extraneous files after my death).
"Although, most telecoms are very religious about not doing maint during the day..."
That doesn't prevent someone from doing an uninstall on a circuit, either too early (before you cut over to new circuits), or the wrong circuit. I have had both happen to me.
The most interesting thing about this rift between the open source community and the MPAA is that is serves to illustrate how, on the one hand, big business attempts to marginalize minorities that threaten their bottom lines by changing the rules of the game, and on the other hand, how the open source minority is smart enough to bypass their attempts.
I also find it interesting that digital media has changed the rules to such an extent, that the businesses dependent upon the profitability of artistic content have instead of changing their business processes, would rather spend millions of dollars attempting to put the genie back in the bottle. The backlash from the customers is apparent in slumping sales.
The strongest message that could be sent to these companies would be if the majority of 'customers' and artists would abandon contacts with those companies, altogether, that insist upon doing things 'business as usual' - instead of inventing new ways for everyone to profit from the new technology. If enough people were spending their entertainment dollars elsewhere, I can guarantee that it would marginalize all proponents of intrusive technology (they can't legislate where you get your entertainment - as long as the source is not pirated material). Furthermore, and more importantly, it would make most of those companies change their way of doing business for the betterment of everyone.
With the new digital technologies out there, a professional recording studio or a professional movie making outfit can be put together without a great expenditure - compared to the past. With equipment becoming cheaper every day, and internet access becoming nearly ubiquitous, it is only a matter of time before the decentralization of the entertainment industry is complete. The MPAA and like groups are only delaying the inevitable.
What would this buy the customers? The opportunity to choose media based on quality, rather than packaging. What would this buy artists? The opportunity to focus on the Art rather than the Business of their craft. The best Art would float to the top - not the highest paid artists, or the ones with the largest advertising budget.
We have the power to make this happen - by voting with our wallets. If a business's revenue stream dries up they only have two choices: change or go under. Sadly, most people don't see the dangers inherent in the limitations being imposed, and don't work together to make things better. It is also instructive that engineers would stick their nose into this for the community - they could simply sit back with all their engineer buddies and enjoy the content that thier ingenuity allows. However, they see the bigger issue, interoperability and the marginalization of certain technologies (such as linux) if these issues are not addressed - and the great loss this would cause for a very large minority (millions) of the population.
Windoze box (game/tinker box):
.ppt, .doc, .xls etc. files - instead of XML, HTML, comma delimited, or other plain text formats)
1. EMACS (Editor+ - to replace MS Word)
2. PFE32 (Editor - to replace notepad for 'one off' writing)
3. Python
4. Perl
5. FireFox (browser de jure)
6. WWIIonline (best battlefield simulation - bar none)
7. Battlefield Vietnam (best FPS bar none)
8. MS Train Simulator (okay - I like trains...so sue me)
9. Close Combat A Bridge Too Far (oldie, but goodie)
10. IL6 (flight sim - sometimes the urge to fly overcomes me...)
+ more games as the mood hits me...
Linux Server:
1. Emacs
2. Python
3. Perl
4. Zope +modules
5. MySQL
6. Apache
Linux Workstation:
1. Emacs
2. Python
3. Perl
4. TheGimp (Graphics)
5. FireFox (www Browsing)
6. OpenOffice (MS equivalent office tools - use mainly to read due to clueless individuals who send me
7. Gnumeric etc...(more productivity tools as needed - I like some of the functionality found in gnumeric vs. OpenOffice spreadsheets)
Most of the things I use are already present in most Linux distributions - so I usually don't have to load them in manually, unless I need a specific update.
Most languages don't have referential transparency enforced explicitly. For example, by the definition of referential transparency:
/, =....otherwise the very basis for logic: A=B, B=C, A=C falls apart, and chaos ensues :)
a function is called referentially transparent if, given the same parameter(s), it always returns the same result - Wikipedia
most functional languages are not strictly referentially transparent, as the same parameters passed to a function can, indeed, return a different result. This is actually useful, as it allows programs to deal with random data - as in the case of user input, for example.
However, I have yet to see a practical language that does not support some form of referential transparency for mathematical functions, such as *, -, +,
At the hardware level, if there are two physically different variables named 'A', there should be some means of differentiating them in the language. If not, we would lose track of one or the other (more commonly known as a 'memory leak'). So, even under such circumstances, it is facetious to say A=A is false, when in fact we are leaving off some bit of symbolism that is implied (perhaps invisibly) in the language by the ordering of the parameters or some other rule that serves to differentiate the variables as really different entities (i.e. 'A sub one', 'A sub 2' etc...).
Can someone name a language that does not have truely referentially transparent mathematical functions (in particular the equals function)? Again, 'A=A is false' implies that there is some missing information because the first A would have to have a physical memory location that is different than the second A, and logic would dictate that we would have to be able to differentiate the two in some manner to recall their contents for meaningful use.
I disagree with your hypothesis.
Software can already be certified via various conformance standards for both the product and the process of making the product.
The current system allows your shell script to happily coexist in an unimpeded way in noncritical applications, as well as part of a standards based certification for those critical systems (aircraft, nuclear power plant etc...)
From a practical standpoint, manditory licensing would not be feasible to police - and would present an artificial barrier to entry that is not needed for 99% of the software applications (everyone is not running a nuclear power plant, or the space shuttle; most applications do not have 'significant' economic impacts if a failure occurs - particularly if disaster perparedness and recovery, and data backup and restoration processes are put into place to ameliorate any problems).
I also question the value of having all programmers be cookie cutouts of each other (which this licensing would imply), in a field where invention has historically made the most advances in the state of the art. Under your system, we would all be using flow charts and the waterfall lifecycle model for all projects - extreme (iterative) programming would not be 'approved' and thus would be marginalized (as just one example).
The real key for programmers is to become more valuable from a holistic approach. You need to de-commoditize yourself through differentiation. I do, however, see your licensing scheme - as a voluntary program to have value for additional differentiation for individual developers.
Agreed. The worse thing SCO could do now would be to cut and run. We need definitive case law that shows where open source stands for the future - and this is the perfect case to use for that purpose.
P.S. This is another reason why we have wind tunnels and test pilots still today. While computers have certainly allowed us to save time, money and lives in aircraft development, there is still nothing like putting the actual airframe to the test in flight.
A must equal A on a computer - since 'A' is really a name (in a programming language) for a physical storage address of an area of memory corresponding to the type assigned to the variable.
(this still applies to OO languages that may have several instances of 'A' in different objects - the key being that each 'A' is effectively a different variable: instance1(A), instance2(A) etc, since each instance of A would actually reside in different physical addresses in storage).
A computer, however, is not a piece of paper which is pretty much immutable once information is recorded on it (without alot of elbow grease, in the form of erasure - or bottles of white-out). Computer variables, and constants for that matter, have the potential to change over time due to things outside of the control of the machine: power could be interrupted or a power surge could alter the contents of our variable without us knowing it at some point. In most cases this will cause catastrophic corruption of the OS, and a reboot would be required that would clear the calculation anyway. On the other hand, it is possible that a minor glitch will pass through and taint our proof/application.
Because of this possibility, while proofs are useful from a theoretical standpoint to create the correct underpinning of our solutions, computer applications can not blindly depend on the 'correctness' of a given descreet algorithm alone.
In practice, particularly for applications that could potentially be life threatening, programs are designed to use redundant systems that can be cross checked against one another to rule out these kinds of errors. Additionally, heuristics (basically an unproven rule of thumb) and fuzzy logic are becoming more commonplace in solutions - which allows us to 'dial in' our boundaries - beyond which we will not go; so, if a theorum is proven correct for all numbers up to some incredible amount - but fails beyond that point, we could reasonably say that the theorum is true up to that boundary - and use it, even though proven incorrect beyond that point.
This gets to the essence of the issue: practical application, versus theoretical rigor. If we know the limits of 'incorrect' theorums we can still leverage their interesting properties for our use. To me this is more interesting, and gets to the crux of the matter: picking those boundaries efficiently enough for the task at hand is more useful than spending thousands of man-hours proving it for all cases.
While theoretical mathematicians are needed - I am not going to lose any sleep if I use a theory that can not be proven beyond some insanely large or small number that I will not approach in practice.
Tools?
Here are the tools to use:
1st: find a good repartitioning program. Use it to repartition your hard drive.
2nd: reload the OS over a (set of) clean partition(s). This will probably reformat your new partitions - if not, you may need to run a format application first.
If the problem occurs often enough and you have enough machines to justify it, hard drive image 'ghosting' software may be advisable.
Keep any important data on a non-windows machine (linux will do fine) that is set up to serve the data securely (I use Plone - a content management system - CMS - based on Zope to allow my users to save and access their files - with access controls that allow users to designate private and public objects - including folders, files, html documents, images, etc). Keep this box behind a tight firewall that only allows internal traffic from the machines on your network to touch the box. Additionally, use a non-standard port for your web host.
Finally, if you are technically competent enough, develop new methods of validating conversations between your machines (encryption is a good option). Even more important than any of this, you must keep all of the software on this server patched up to the most up-to-date revisions as possible - 90% of your problems will be solved. However, the worse problem, and most uncontrollable aspect is your end users - like my wife - who demand complete control while abdicating their responsibility for that control when something goes wrong.
My clients can crash and burn, for all I care - it is less time consuming for me to reinstall a box, than to keep track of my user's (family's) poor choices when I am not around. My information server must be rock solid, as a result.
This approach has saved me many headaches...if a system gets to the point of being unusable, I merely wipe it, and slap on the OS...which has only happened twice on my network in the last two years (with 4 users). I usually take my time getting around to it - while lecturing them on what they should do in the future to avoid the problem...this usually hits home, after about a week without their internet 'fix'.
This sounds alot like using public key encryption to digitally sign a document...
Yep - I was a Cavalry Scout Sgt. in 1990...
When a tracked vehicle goes over a pothole, you hardly feel it at all - okay so there are vibrations and noise - but the ride of a track across a pothole is alot smoother than the ride of an automobile across the same pothole - particularly larger potholes. That is the point I was getting at - plus the added benefit being able to roll over just about anything in your path.
My 9600 baud modem is long dead - and good riddance, I say.
I have no desire to relive the BBS heyday when there are some many new projects that need attention...
I am glad I am on a salary, so I don't have to worry about this 'time shaving' fiasco.
Of course, I am expected to work at least 50 hours a week - and sometimes longer when the situation calls for it - without any additional pay.
I hate clock watching, so this works out okay for me. Plus, we have some flexibility, as well (for example, if I have to do something during a maintenance window - 11pm - I can leave work early to make up for it....its not all bad).
Good point.
Many GUIs are today having languages embedded in them - such as the always popular Python - and you can always point back to VB as a Microsoft example of this idea (although poorly executed).
In the Unix world, probably the most famous embedded application is emacs - using lisp as the macro language in this case.
I think the right approach, from a niave user standpoint, is to embed languages into GUIs and provide hooks to extend the GUI via that language. This way, you can have your cake and eat it too; niave users get the simplicity of the gui, while also benefitting from the macros/scripts created by power users.
I wonder what shape my wheels have to be to ride smoothly over the screwed up roads that my town refuses to fix?
Actually, several non-wheel ideas come to mind:
Tracked vehicles - make your own potholes - with a smooth ride...
Walking vehicles - who cares about potholes - or roads for that matter?...
Flying vehicles - this is my personal favorite - where is that flying car they promissed us?...