Speaking as a programmer, the janitors I have been acquainted with have had, on average, higher integrity and a better work ethic than than the average programmer. Also, in my experience, programmers have typically been given greater access to company assets and exhibit a greater sense of entitlement.
(If you are a programmer and currently work with me, I'm not talking about you--I'm talking about the "dearly departed.")
To address the point of the article, I think location-based encryption is a clever idea, but it may need to work at the level of the hard drive. I have had the experience of walking into a server room to find a server torn apart and the hard drives missing. I haven't disassembled my laptop, but doubt it would be any harder to remove its hard drive.
Having two children, ages 1 and 4, I'm currently struggling with the career vs. family issue. My company is family-friendly, for which I am grateful, but the demands of fatherhood threaten to arrest my career. I was also married around 5 years before having children. During that time, I spent evenings and weekends "geeking out"--doing things that were both fun and career-enhancing. I always maintain that it's important to make your (technical) mistakes at home so you can do it right at work. Also, many a small project that I didn't have the time budget to do at work I could do at home and save a lot of time (and look good) at work.
Now, it is a constant struggle to keep up with the changes in technology. I used to look down my nose at older programmers who couldn't find jobs because they had just worked their 8 to 5 and hadn't kept their skills up-to-date. I would say it was their own fault for being so lazy. I don't walk so tall or talk so proud anymore. Where once I would jump in on the leading edge of a wave, now I let the field mature for a couple of generations, because I just don't have time to fight with beta-quality technology. Real life presents difficult choices. I'm with those that say sacrificing your children (or your marriage) for your career isn't worth it, but when a geek is "who you are," you may find spooning gruel down the throat of a squirming baby less rewarding than you first imagined.
Here's where I would summarize with some hard-earned wisdom if I had any. Instead, I'll just say, "Hang on and don't feel too sorry for yourself. You're not contending with anything millions of other parents haven't already faced."
When all you have is a hammer, you go looking for nails. It's a cinch the PHB will be no different and attempt to show off his or her newfound knowledge by regurgitating what he or she just learned--great for laughs!
"For a few years, languages were interesting to me. But now, I just want to do the job, not discover other ways to do the job. Let's move on, rather than repeating what we have done before. Let's improve what we have, rather than starting again."
You sound like a guy I work with. I sympathize with him, because he's getting close to retirement. Maybe you are too. I think it was the "Pragmatic Programmers" who said you should learn a new language every year. I find it helps to keep the brain plastic. It's all too easy to get into ruts, but soon the joy is gone too, and you might as well be flipping burgers.
Wow! I nominate you for the "Sweeping Statements Award." I especially like the way you say "The object models of Python, Perl, and Ruby."
So far, I haven't heard anyone nominate these languages for "large system development," but a lot of large systems are made out of small systems, and while it is tempting to create these large systems in a uniform language (*cough*)Java(*cough*), this can be a mistake. I read a magazine article recently about a shop where they were replacing shell scripts with Java for automating tasks--which turned out to be a big mistake, considering the overhead of the Java VM.
You're right about compilation to native code being of limited benefit to these languages. For the most part, it is a "benefit" they don't need. Take, for example, creating a complex web site in C or another statically-typed, and therefore easily-compilable, language. By the time you're on your third page, you'll realize you need some kind of templating system. Next, you'll discover you need to vary the appearance of pages based on aspects of your business logic, so you add conditions to your templating system. Next, you'll find management wants to be able to update the site quickly using cheap HTML monkeys and is reluctant to spend expensive programmer time recovering old ground, so you make the site entirely data-driven. So now you have a buggy, ad hoc, poorly-documented excuse for PHP! Sure, the code you wrote is compiled, but the system as a whole is slower, and it took a whole lot longer to write.
You said, "If the scripting languages ever evolve into something like Lisp or Smalltalk, their object models, syntax, and semantics will have to change dramatically and incompatibly."
Have you ever considered that maybe these languages ARE the evolution of Lisp and Smalltalk? With all due respect to Lisp and Smalltalk, their creators didn't have the benefit of Lisp and Smalltalk when creating their languages. Larry and GVR and Matz didn't create their languages in a vacuum. Even PL/1 must be of benefit to current language designers (here's what NOT to do!).
Perhaps it would be of benefit to aspiring language designers if you could elucidate exactly how "objects models, syntax and semantics" could be improved and what the benefits would be--keeping in mind the purpose(s) of these languages.
Granted, the best programming language doesn't always win out, but the purpose of evolution is to thrive, or at least survive. I am therefore equally suspicious of praise for highly-evolved-yet-dead languages and snubs of unevolved-yet-wildly-thriving languages.
I find Ruby as a language more satisfying than PHP, which is a mediocre language embedded in a great web scripting environment. They both take a high-level approach with convenient containers and a minimum of setup, but building complex data structures in PHP (as opposed to web pages) can be an exercise in frustration. I personally relish the OO flavor of Ruby over the C-like flavor of PHP.
My personal goal is to create a PHP-like system using Ruby as the language for the best of both worlds--unless someone beats me to it. mod_ruby and eruby are steps in the right direction, but they lack the transparent integration with niceties like automatic sessions, automatic form variables, transparent url-rewriting etc. that make working in PHP so efficient.
First, however, I need to flesh out the Interbase driver, which is currently fairly minimal.
I don't know what your problem is--it works great on my 1.4 Ghz Athlon with 512 MB RAM! I've been following Mozilla for a long time, and older "releases" made me despair, but now I have to credit the engineers that stuck with it in the face of so much criticism and saw what the project could be in time. I now resort to IE less and less and look forward to adopting Mozilla as my primary internet client when it hits 1.0 (I still use Netscape 4.7 for e-mail, because it's more stable than either OE or Moz). It's already mi primary internet client on Linux.
Personally, I'd find this pretty damned offensive if I were of Asian decent of any sort. Sorry, folks, this is embarrassing.
Why should someone of Asian descent be offended by a characterization of young males in Korea? After all, the article didn't paint all Asians with the same brush. Furthermore, while you or I, being proud of our diversity and rightously politically correct, might resent stereotypes of any type, Korea is proud of its homogeneity.
One might even say that games like this provide a relatively safe outlet for the same hormone-induced impulses which young males around the world experience, allowing for both an escape from and the preservation of the status quo. I can recall many a time in highschool when a good Robotron session kept me from bloodying my fists for no particuarly good reason.
Spend some time in a "PC Bang" in Korea and the article will seem perfectly reasonable.
Quake III on my GeForce 2 MX under Win2K would freeze after a few minutes until I turned my AGP setting in BIOS from 4x to 2x. The frame rate is still good and I haven't had any problems under Linux, except that it takes a few seconds to switch into graphics mode.
In my experience, configuring Interbase IS a trivial task. I'm not saying it designs your schema for you, but there's very little you have to do besides feeding it data.
Blame those who led the way for not using a "General" license. First, it would be a little confusing to use the Mozilla Public License (MPL) when the product has nothing to do with Mozilla. Already at least one clueless poster, who at least had heard that the IPL was a renamed MPL, has spouted off about how he hoped it wouldn't have the problems the Mozilla project has had, like the Mozilla project's problems were related to its license! If Netscape/AOL had used a more generic name, others would have less trouble adopting it wholesale. Credit RMS for not calling the GPL the "Free Software Foundation Public License (FSFPL)." It's hard to buy in to a name when it has someone else's organization as part of it. Second, the release to Open Source was supposed to be from a spun-off Interbase Corporation, therefore calling it the Borland/Inprise Public License would be inappropriate--not that Dale Fuller wasted any space in the press release even mentioning the new company (which is still waiting for lawyers to get around to finishing the deal).
The headline seemed to indicate that this release was "BugFree" and that "if it doesn't compile for you, you must be doing something wrong". Anyone with CS 101 experience knows that just because it compiles, doesn't mean that it's "BugFree".
If you can still remember your CS 101 class then this no doubt applies to you. Real Professionals don't write bugs--if you find one, it was caused by entropy or cosmic rays.
Those with Real World Experience also either develop a sense of humor or end up in an asylum!
Actually, Korea mainly uses their phonetic script, Hangul, which types just fine. The Japanese phonetic scripts, Hirigana and Katakana, are especially easy to type, as you can basically just type the romanized version and get the script. Unfortunately, the Japanese have a penchant for Kanji, the Chinese derived characters, which makes things much more laborious. Voice recognition for Chinese will need a lot more contextual analysis, because there are so many different characters that all have the same sound. Without the analysis, the user would have to choose which character they mean from a list, which is what is currently required anyway.
Microsoft has been uttering the word in every other sentence, but it usually means buying or stealing someone's ideas or technology, seizing the market by force, and taking credit for it.
There are orders of magnitude more innovative ideas at my company than there are developers to implement them, and most of them would just make our software more complex and unwieldy.
Probably the most difficult part of designing GOOD software is knowing what to leave out. Conservative judgement is called for in a tool that many people depend on--otherwise you end up with Windows! Sure, let's throw a graphics API into the kernel! Let's download COM objects into our browser that can do as they like! Let make every piece and every layer interconnect with every other piece and layer so the whole thing becomes a huge Gordian's knot that even the sword of the U.S. Government can't slice through!
A conservative approach means some worthy features will be left out, but it's a lot easier to add a good feature later on than to take out a bad one. One of the more innovative languages I know is Oberon, a language that can be clearly and unambiguously defined in fifty-odd pages, as compared to the hundreds of pages needed to define C++, which is still ambiguous and subject to the implementor's interpretation. Technologies like CORBA existed long before HTTP, but the web wasn't built on them. HTTP was innovative in its simplicity!
Whatever one's take on the platform, one of the big reasons for Java's popularity is that the language has been simplified considerably from C++ and the developers tried to use only tried and true features. Of course, now I hear they're reconsidering operator overloading--don't get me started...
I submit that the best way to encourage innovation is to resist the urge to fold every new feature into the core, instead adding only those features that are absolutely essential to allow multiple, competing innovations to be created on top of them.
The open source community, especially the Linux community, has been accused of "chasing tail lights." I think that this is not only valid, I think it's not the least bit shameful! After all, in a race, on must catch up before pulling ahead, and in some circumstances it is best to let others go first, especially where dead-ends and rickety bridges are concerned.
The strength of the open source community, as I see it, is that on the whole it seems to distinguish between innovation and feature-itis. Perhaps the most "innovative" thing one can do sometimes is make the damn thing work before adding more features! Now I would call that down-right revolutionary!
Regarding the bcc name clash: Most of the java compilers I see are called javac. There are other examples of name clashes out there that I'm too lazy to dig up. It's just an executable name, not a product name. If you develop regularly with both the Borland C Compiler and this 16-bit compiler, you might have to go out of your way. The rest of us can set a link to the one we use and forget about it.
Speaking as a programmer, the janitors I have been acquainted with have had, on average, higher integrity and a better work ethic than than the average programmer. Also, in my experience, programmers have typically been given greater access to company assets and exhibit a greater sense of entitlement.
(If you are a programmer and currently work with me, I'm not talking about you--I'm talking about the "dearly departed.")
To address the point of the article, I think location-based encryption is a clever idea, but it may need to work at the level of the hard drive. I have had the experience of walking into a server room to find a server torn apart and the hard drives missing. I haven't disassembled my laptop, but doubt it would be any harder to remove its hard drive.
Having two children, ages 1 and 4, I'm currently struggling with the career vs. family issue. My company is family-friendly, for which I am grateful, but the demands of fatherhood threaten to arrest my career. I was also married around 5 years before having children. During that time, I spent evenings and weekends "geeking out"--doing things that were both fun and career-enhancing. I always maintain that it's important to make your (technical) mistakes at home so you can do it right at work. Also, many a small project that I didn't have the time budget to do at work I could do at home and save a lot of time (and look good) at work.
Now, it is a constant struggle to keep up with the changes in technology. I used to look down my nose at older programmers who couldn't find jobs because they had just worked their 8 to 5 and hadn't kept their skills up-to-date. I would say it was their own fault for being so lazy. I don't walk so tall or talk so proud anymore. Where once I would jump in on the leading edge of a wave, now I let the field mature for a couple of generations, because I just don't have time to fight with beta-quality technology. Real life presents difficult choices. I'm with those that say sacrificing your children (or your marriage) for your career isn't worth it, but when a geek is "who you are," you may find spooning gruel down the throat of a squirming baby less rewarding than you first imagined.
Here's where I would summarize with some hard-earned wisdom if I had any. Instead, I'll just say, "Hang on and don't feel too sorry for yourself. You're not contending with anything millions of other parents haven't already faced."
When all you have is a hammer, you go looking for nails. It's a cinch the PHB will be no different and attempt to show off his or her newfound knowledge by regurgitating what he or she just learned--great for laughs!
"For a few years, languages were interesting to me. But now, I just want to do the job, not discover other ways to do the job. Let's move on, rather than repeating what we have done before. Let's improve what we have, rather than starting again."
You sound like a guy I work with. I sympathize with him, because he's getting close to retirement. Maybe you are too. I think it was the "Pragmatic Programmers" who said you should learn a new language every year. I find it helps to keep the brain plastic. It's all too easy to get into ruts, but soon the joy is gone too, and you might as well be flipping burgers.
Brent
Wow! I nominate you for the "Sweeping Statements Award." I especially like the way you say "The object models of Python, Perl, and Ruby."
So far, I haven't heard anyone nominate these languages for "large system development," but a lot of large systems are made out of small systems, and while it is tempting to create these large systems in a uniform language (*cough*)Java(*cough*), this can be a mistake. I read a magazine article recently about a shop where they were replacing shell scripts with Java for automating tasks--which turned out to be a big mistake, considering the overhead of the Java VM.
You're right about compilation to native code being of limited benefit to these languages. For the most part, it is a "benefit" they don't need. Take, for example, creating a complex web site in C or another statically-typed, and therefore easily-compilable, language. By the time you're on your third page, you'll realize you need some kind of templating system. Next, you'll discover you need to vary the appearance of pages based on aspects of your business logic, so you add conditions to your templating system. Next, you'll find management wants to be able to update the site quickly using cheap HTML monkeys and is reluctant to spend expensive programmer time recovering old ground, so you make the site entirely data-driven. So now you have a buggy, ad hoc, poorly-documented excuse for PHP! Sure, the code you wrote is compiled, but the system as a whole is slower, and it took a whole lot longer to write.
You said, "If the scripting languages ever evolve into something like Lisp or Smalltalk, their object models, syntax, and semantics will have to change dramatically and incompatibly."
Have you ever considered that maybe these languages ARE the evolution of Lisp and Smalltalk? With all due respect to Lisp and Smalltalk, their creators didn't have the benefit of Lisp and Smalltalk when creating their languages. Larry and GVR and Matz didn't create their languages in a vacuum. Even PL/1 must be of benefit to current language designers (here's what NOT to do!).
Perhaps it would be of benefit to aspiring language designers if you could elucidate exactly how "objects models, syntax and semantics" could be improved and what the benefits would be--keeping in mind the purpose(s) of these languages.
Granted, the best programming language doesn't always win out, but the purpose of evolution is to thrive, or at least survive. I am therefore equally suspicious of praise for highly-evolved-yet-dead languages and snubs of unevolved-yet-wildly-thriving languages.
Brent
I find Ruby as a language more satisfying than PHP, which is a mediocre language embedded in a great web scripting environment. They both take a high-level approach with convenient containers and a minimum of setup, but building complex data structures in PHP (as opposed to web pages) can be an exercise in frustration. I personally relish the OO flavor of Ruby over the C-like flavor of PHP.
My personal goal is to create a PHP-like system using Ruby as the language for the best of both worlds--unless someone beats me to it. mod_ruby and eruby are steps in the right direction, but they lack the transparent integration with niceties like automatic sessions, automatic form variables, transparent url-rewriting etc. that make working in PHP so efficient.
First, however, I need to flesh out the Interbase driver, which is currently fairly minimal.
Brent
I don't know what your problem is--it works great on my 1.4 Ghz Athlon with 512 MB RAM! I've been following Mozilla for a long time, and older "releases" made me despair, but now I have to credit the engineers that stuck with it in the face of so much criticism and saw what the project could be in time. I now resort to IE less and less and look forward to adopting Mozilla as my primary internet client when it hits 1.0 (I still use Netscape 4.7 for e-mail, because it's more stable than either OE or Moz). It's already mi primary internet client on Linux.
Personally, I'd find this pretty damned offensive if I were of Asian decent of any sort. Sorry, folks, this is embarrassing.
Why should someone of Asian descent be offended by a characterization of young males in Korea? After all, the article didn't paint all Asians with the same brush. Furthermore, while you or I, being proud of our diversity and rightously politically correct, might resent stereotypes of any type, Korea is proud of its homogeneity.
One might even say that games like this provide a relatively safe outlet for the same hormone-induced impulses which young males around the world experience, allowing for both an escape from and the preservation of the status quo. I can recall many a time in highschool when a good Robotron session kept me from bloodying my fists for no particuarly good reason.
Spend some time in a "PC Bang" in Korea and the article will seem perfectly reasonable.
In the future, digital music will be encoded with a volume cap, so you cannot share it with your neighbors or the car next to you at a traffic light.
Some tracks will only play on compliant headphones.
You heard it here first.
Quake III on my GeForce 2 MX under Win2K would freeze after a few minutes until I turned my AGP setting in BIOS from 4x to 2x. The frame rate is still good and I haven't had any problems under Linux, except that it takes a few seconds to switch into graphics mode.
Brent
I believe the EV68 is an Alpha, and Linux does run 64-bit on them. IIRC, Titannic was rendered on a farm of quad-processor Alphas.
Brent
In my experience, configuring Interbase IS a trivial task. I'm not saying it designs your schema for you, but there's very little you have to do besides feeding it data.
Blame those who led the way for not using a "General" license. First, it would be a little confusing to use the Mozilla Public License (MPL) when the product has nothing to do with Mozilla. Already at least one clueless poster, who at least had heard that the IPL was a renamed MPL, has spouted off about how he hoped it wouldn't have the problems the Mozilla project has had, like the Mozilla project's problems were related to its license! If Netscape/AOL had used a more generic name, others would have less trouble adopting it wholesale. Credit RMS for not calling the GPL the "Free Software Foundation Public License (FSFPL)." It's hard to buy in to a name when it has someone else's organization as part of it. Second, the release to Open Source was supposed to be from a spun-off Interbase Corporation, therefore calling it the Borland/Inprise Public License would be inappropriate--not that Dale Fuller wasted any space in the press release even mentioning the new company (which is still waiting for lawyers to get around to finishing the deal).
Brent
One small point: GPL'd software is copyrighted software too. Without the copyright, the license has no binding power.
Brent
If you can still remember your CS 101 class then this no doubt applies to you. Real Professionals don't write bugs--if you find one, it was caused by entropy or cosmic rays.
Those with Real World Experience also either develop a sense of humor or end up in an asylum!
BrentActually, Korea mainly uses their phonetic script, Hangul, which types just fine. The Japanese phonetic scripts, Hirigana and Katakana, are especially easy to type, as you can basically just type the romanized version and get the script. Unfortunately, the Japanese have a penchant for Kanji, the Chinese derived characters, which makes things much more laborious. Voice recognition for Chinese will need a lot more contextual analysis, because there are so many different characters that all have the same sound. Without the analysis, the user would have to choose which character they mean from a list, which is what is currently required anyway.
Microsoft has been uttering the word in every other sentence, but it usually means buying or stealing someone's ideas or technology, seizing the market by force, and taking credit for it.
There are orders of magnitude more innovative ideas at my company than there are developers to implement them, and most of them would just make our software more complex and unwieldy.
Probably the most difficult part of designing GOOD software is knowing what to leave out. Conservative judgement is called for in a tool that many people depend on--otherwise you end up with Windows! Sure, let's throw a graphics API into the kernel! Let's download COM objects into our browser that can do as they like! Let make every piece and every layer interconnect with every other piece and layer so the whole thing becomes a huge Gordian's knot that even the sword of the U.S. Government can't slice through!
A conservative approach means some worthy features will be left out, but it's a lot easier to add a good feature later on than to take out a bad one. One of the more innovative languages I know is Oberon, a language that can be clearly and unambiguously defined in fifty-odd pages, as compared to the hundreds of pages needed to define C++, which is still ambiguous and subject to the implementor's interpretation. Technologies like CORBA existed long before HTTP, but the web wasn't built on them. HTTP was innovative in its simplicity!
Whatever one's take on the platform, one of the big reasons for Java's popularity is that the language has been simplified considerably from C++ and the developers tried to use only tried and true features. Of course, now I hear they're reconsidering operator overloading--don't get me started...
I submit that the best way to encourage innovation is to resist the urge to fold every new feature into the core, instead adding only those features that are absolutely essential to allow multiple, competing innovations to be created on top of them.
The open source community, especially the Linux community, has been accused of "chasing tail lights." I think that this is not only valid, I think it's not the least bit shameful! After all, in a race, on must catch up before pulling ahead, and in some circumstances it is best to let others go first, especially where dead-ends and rickety bridges are concerned.
The strength of the open source community, as I see it, is that on the whole it seems to distinguish between innovation and feature-itis. Perhaps the most "innovative" thing one can do sometimes is make the damn thing work before adding more features! Now I would call that down-right revolutionary!
Brent Rowland
...you discover that you're still liable like a sole proprietorship until you hire your first employee. That's the magic number: 1 employee.
Suddenly it's a lot more expensive to incorporate for the purpose of evading liability.
RowlandRegarding the bcc name clash:
Most of the java compilers I see are called javac. There are other examples of name clashes out there that I'm too lazy to dig up. It's just an executable name, not a product name. If you develop regularly with both the Borland C Compiler and this 16-bit compiler, you might have to go out of your way. The rest of us can set a link to the one we use and forget about it.