I'd say there is a third kind of programmer, and that is the one who is flexible enough to learn new languages (and problem domains), but applies himself well enough to become expert or close to it at each thing he does. I spent a year coding a VM in microcode, over seven years working in Smalltalk, a year in LISP, a few years in C++, a few years in Java. I have breadth not because I jump around, but because I've been around a while. It's called experience. Once you have a good solid foundation in a few different kinds of languages, picking up a new one is easy because there aren't that many new concepts. Compared to learning a language, it's probably harder to pick up a new problem domain: GUI, embedded, database, real-time, language implementation, networking, security, etc. And let me tell you, having broad experience is quite valuable. I can walk into a new job and pick up a new domain in short order because I have so many things to correlate it to. I may not be an expert right away, but it doesn't take me years to get there.
In interviewing candidates, I've been shocked at how clueless most are. I am looking for web developers who can do everthing from HTML/CSS to JSP to servlets to database stuff, and who know about scaling, robustness and high-availability. And I get a lot of candidates who look good on paper and have been doing that kind of work for years. But then they can't answer basic questions like what is the difference between a linked list and an array, or why you would put something in an element instead of an attribute in your XML schema design. These kind of one-trick-pony developers maybe be fine for very focused kinds of work, but I'd never hire one except for a very junior position; the minute the parameters of the job changed, they'd be either be useless or need training.
Alan Kay may come off as a jackass in your reading of the interview, but he's nothing like that in person. He's one of those people who is so smart it's hard to follow him sometimes, but he never really talks down to people. I think his enthusiasm and passion about these subjects is admirable.
I would agree with Alan's comment about a modern CS degree being a Java vocational program. I've been trying to hire software developers lately, and every resume I see has nothing but Java and web apps on it, and no breadth of experience. In my career I've programmed in assembly, microcode, Pascal, Smalltalk, C, C++, LISP, HyperTalk, PostScript, Java, PERL, PHP and a bunch of languages most people reading this wouldn't recognize (anyone know Mesa?). I've worked on GUI apps, productivity tools, virtual machines, object persistence, web apps, app frameworks, development tools, etc. etc. I'm not trying to be a braggart here - I'm just saying that from my perspective someone who has spent their whole carreer writing web/database apps in Java is barely competent as a software developer. I'd consider them more of a software technician, which isn't necessarily a bad thing, but it's quite different from having the kind of skills and experience that make one a master in the field. And from Alan Kay's perspective, the view must be much more disappointing.
HyperTalk had about a kajillion users. It certainly deserves a place in this geneology. I'm not sure exactly where to put it, but it's certainly related to Smalltalk as a close cousin if not a descendant. For completeness, AppleScript should be listed as a descendant of HyperTalk.
I don't know why the PDF lists C++ as an ancestor of Dylan. I was somewhat involved in the development of Dylan, and Scheme, CLOS and Smalltalk were the main parents.
Squeak is the current leader of the Smalltalk bloodline. www.squeak.org
The bottom line is that the prohibition against exclusive homosexuality is not a recent, Christian phenomenon. It has been present in virtually all cultures, at all times, in all places.
Yes, and slavery was prevalent in many cultures throughout history, but we have progressed to the point where we recognize its immoral nature. Likewise, modern cultures are moving to recognize that discrimination is immoral, including discrimination against homosexuality.
I agree the term "homophobia" is a misnomer, but we don't have a common term for irrational aversions rather than fears. And people who use that term do consider such an aversion irrational. I'm not sure what you disagree with, because you have absolutely no business agreeing or disagreeing with the private relationship of two people that has no direct effect on you. Your citations of studies that show people can change orientation don't prove anything about the morality of homosexuality.
By the way, I think it's perfectly fine and normal for straight people to be disgusted by the idea of gay sex - lots of gay people are disgusted by the idea of straight sex too. But when you take that distaste for something that is entirely someone else's business and use it as an excuse to disapprove of their lifestyle, then I think you're overstepping the bounds of morality.
Sorry, but that rendering of the Heart of Gold looks wrong. It's supposed to be shaped like a running shoe. Hmm, perhaps it is supposed to be a running shoe shaped for the foot of a superintelligent shade of the color blue.
To cop another comment, Know What You Are Talking About. Squeak and ParkPlace Smalltalk are both based on the same foundation, but have diverged significantly. You could not run a PP ST image on the Squeak VM, and vice-versa, even correcting for format differences. That said, they are pretty darn close, and both fully implement the language syntax and semantics as defined in the Blue Book (*not* Purple). I'd bet you could do a file-out of a class in PP and read it into Squeak and it would work fine.
While walking, or for that matter cycling, I prefer to be tuned-into my surroundings.
You can play the music at a low enough volume that you can still be aware of what's going on around you. I like to wear earphones while walking around San Francisco because it lets me easily ignore panhandlers and other assorted freaks by pretending I can't hear them when they ask for money. iPod + shades = my own world with no intrusions. This greatly simplifies my commute, as everyone who would otherwise bother me leaves me alone. I've heard this referred to online as coccooning.
Maybe the submitter could use a variation of this to solve his problem.:-)
The submitter, mAsterdam, has misspelled the name of the chart's author. It's Lentczner, not Lentcner. That's T as in "Tsar", C as in "Czar", Z as in "Zorro". (Yes, this is a very inside joke.)
How about using Karma to provide feedback on examiners? Too bad Slashdot didn't patent the Karma system, or they could make a bundle by licensing it to the USPTO.
In the US, lawyers are expected to perform a certain amount of pro bono work each year. It's part of their ethical code, to provide access to the justice system to everyone, not just those who can afford it. Doctors are also ethically bound to help those in need - for instance hospitals have to accept trauma patients even if they can't pay. (I may be explaining the details wrong here, but the point is still valid.) Even among professions that have no ethical code requiring pro bono or gratis work, people still go out and volunteer their time and abilities to help those who need it.
I see nothing unusual at all about programmers performing work for free to the benefit of society. But the nature of programming is different from professions where the output is a service or product for an individual. Software can be copied freely, so programmers have the opportunity to help not just one person at a time, but the whole of society at once.
Doing volunteer or pro bono work exclusively won't pay the bills, but it is part of being a professional and a responsible member of society. While I wouldn't bet on being able to support myself doing only OSS, there is certainly a time and place for it in every programmer's career.
No one charges for air conditioning or heat, even though there are days when people would gladly pay for it. As other have said, the cost of limiting and charging for WiFi access is often much greater than what you get from the charges.
Because I'm a software geek, not a hardware geek. Sure, I'll spend a weekend building a PHP/MySQL app to organize my DVD collection, but the most I'll do with hardware is install a new hard drive or memory. I don't get off on "some assembly required" gear, and you can bet my nieces don't either. Now, $250 for 20GB is a pretty good price, but how well does it work? I love how well my iPod works, and it's nice to have all my phone numbers etc with me wherever I go too. Add to that the add-ons like the hookup for dumping photos from a digicam. So yeah it might cost more, but you get a lot more too. There's always a market for quality and features, and even some of us on slashdot shop that way sometimes.
This would be really great. I'd love to be able to give something like this to my teenage nieces. Sure they could use a full-size iPod, but $400 is a lot for a teen to carry around and probably lose or break. $100 would be cheap enough that pain of loss wouldn't be too awful.
Then I could just give them iTMS gift certificates for all future gifts. I'd be the best uncle ever!
The movie I thought was the best of the year was the one I least expected to like. Kill Bill (Vol 1) was just astounding. The sense of style, the attention to detail, the outright chutzpah, the buckets of blood... Usually I hate bloodfests, but this movie was just so well executed that I got over the blood and just loved it to pieces. I guess his goal was to make a live-action anime, and as far as I'm concerned it was perfection, even down to all the names being like stupid translations from Japanese.
And you have to give QT props for dressing Uma up like Bruce for half the movie!
I swear I saw something like this almost 20 years ago. I was watching some show on late night TV in Washington state, and the really cool thing on it was an aircraft with a stubby-bladed rotor that could be fixed as a wing for jet-propelled flight. I haven't heard anything like that since. I guess it took them a long time to work out the bugs.
Re:Still Not Real Clear on Design Patterns...
on
J2EE Design Patterns
·
· Score: 1
The 80s use of the term encapsulator was an object that not only wrapped another, but mimiced it's interface. So externally you couldn't tell you were using an encapsulated object. It was a way of adding functionality by composition rather than inheritance. The trivial example is an encapsulator that logs all messages, which is perhaps useful for debugging.
What you are talking about is more like a Facade pattern.
Re:Still Not Real Clear on Design Patterns...
on
J2EE Design Patterns
·
· Score: 2, Informative
The term pattern may not be the best choice of a word to describe the concept, but it comes close. Just like you can have a pattern for a garment and then use that pattern to make a shirt from any type of fabric, design patterns supply standard solutions that can be used to solve common problems, but in an easily customizable way.
When the Gang-Of-Four book Design Patterns first appeared, there was a lot of talk about it at OOPSLA that year. I'd been a lucky witness to the birth of the concept a year or two previously. There was a lot of talk among Smalltalkers at Apple and everyone was reading Christopher Alexander's book A Pattern Language. By the time the Gang published the book, the meme had mutated and most people didn't get the underlying concept.
The OOP software community was struggling for a metaphor for understanding patterns. Many people latched onto the idea of the chip catalog. Like you can grab a catalog for SSI and LSI chips and find the OR gates or shifters you need, wire them together and voila you have a circuit board. Programmers want that kind of reuse, and are tired of having to reinvent the wheel every time they want to go for a ride.
But patterns can't be reused in the same way that chips can. I think API calls are a more equivalent concept to chips in a catalog. Patterns are more like things like "power suppy" or "transmitter" or "step motor". They exist in the design space above the chip or API call. They show how to use the more granular pieces to assemble higher-level solutions.
Working in Smalltalk, some of us noticed there were ways we would use classes, objects, inheritance, and references that we would repeat over and over. We began to make up names for them so they were easier to talk about. I remember encapsulator was one of the early names that was used a lot (it's an object that intercepts all references and messages to another object).
Design patterns provide a vocabulary for talking about, and more importantly thinking about, the ways that we've learned to solve common problems. This shouldn't be surprising, since the origin of the term was something called a pattern language, and languages have vocabulary. If you don't have a word for something, it's hard to reason about it. Try thinking about an arrangement of buildings if you have no concept of "community" or "town". Patterns supply the concepts for reasoning about design problems.
I had a friend at Apple who did the same thing using HyperCard. He indexed his whole house when he moved. The great thing about HyperCard (or any other DB-like system) as opposed to a text file is that you can have a record/card for each item, and one for each storage location. Moving an item to a new location is fast. Plus you can put keywords and stuff on an item to help you do searching for it.
The 15" PBs have shown to be pretty finicky about memory. Lots of reports of them refusing to boot when using 3rd party memory which isn't up to Apple's tolerances. But Crucial supplies exactly the same memory units that Apple uses, so there should be no worries there.
You have a bizarre notion of what overhead is. Overhead is a fixed cost of expenses incurred by the entire company, though it is often expressed as being amortized over the number of unit sales. In other words, the company is paying those bean counters and support people whether or not I buy from them, and there is little additional cost to handle my sale (except perhaps for support). If a company has an automated sales system in-house, the incremental overhead on each sale is negligible. So my $50 is close to $50 of incremental profit. I'd be willing to accept that my hobbyist purchase didn't include tech support or any other of the goodies. I just want the software.
As for conditions on the software, think of it this way. There are already tons of people who use the software without paying for it because it is too expensive, including companies that make money on it. This is a way to let those of us who would like to pay for it have an affordable option. If I started making money, I'd certainly upgrade to a professional version, because then I'd have a revenue stream to fund it.
Software vendors can treat their customers as potential criminals, or they can treat us as supporters. I'm happy to pay what software is worth to me, but I'm not going to fork out close to a thousand dollars for a hobby. If I were going to do that I'd spend it on a hardware upgrade or scuba gear or a new bike, not on software that will cost me another $500 to upgrade in a year.
How about we end DST, and we all just get up an hour earlier?
I'd say there is a third kind of programmer, and that is the one who is flexible enough to learn new languages (and problem domains), but applies himself well enough to become expert or close to it at each thing he does. I spent a year coding a VM in microcode, over seven years working in Smalltalk, a year in LISP, a few years in C++, a few years in Java. I have breadth not because I jump around, but because I've been around a while. It's called experience. Once you have a good solid foundation in a few different kinds of languages, picking up a new one is easy because there aren't that many new concepts. Compared to learning a language, it's probably harder to pick up a new problem domain: GUI, embedded, database, real-time, language implementation, networking, security, etc. And let me tell you, having broad experience is quite valuable. I can walk into a new job and pick up a new domain in short order because I have so many things to correlate it to. I may not be an expert right away, but it doesn't take me years to get there.
In interviewing candidates, I've been shocked at how clueless most are. I am looking for web developers who can do everthing from HTML/CSS to JSP to servlets to database stuff, and who know about scaling, robustness and high-availability. And I get a lot of candidates who look good on paper and have been doing that kind of work for years. But then they can't answer basic questions like what is the difference between a linked list and an array, or why you would put something in an element instead of an attribute in your XML schema design. These kind of one-trick-pony developers maybe be fine for very focused kinds of work, but I'd never hire one except for a very junior position; the minute the parameters of the job changed, they'd be either be useless or need training.
Alan Kay may come off as a jackass in your reading of the interview, but he's nothing like that in person. He's one of those people who is so smart it's hard to follow him sometimes, but he never really talks down to people. I think his enthusiasm and passion about these subjects is admirable.
I would agree with Alan's comment about a modern CS degree being a Java vocational program. I've been trying to hire software developers lately, and every resume I see has nothing but Java and web apps on it, and no breadth of experience. In my career I've programmed in assembly, microcode, Pascal, Smalltalk, C, C++, LISP, HyperTalk, PostScript, Java, PERL, PHP and a bunch of languages most people reading this wouldn't recognize (anyone know Mesa?). I've worked on GUI apps, productivity tools, virtual machines, object persistence, web apps, app frameworks, development tools, etc. etc. I'm not trying to be a braggart here - I'm just saying that from my perspective someone who has spent their whole carreer writing web/database apps in Java is barely competent as a software developer. I'd consider them more of a software technician, which isn't necessarily a bad thing, but it's quite different from having the kind of skills and experience that make one a master in the field. And from Alan Kay's perspective, the view must be much more disappointing.
Objective-C is already on the chart with Smalltalk and C as its parents, exactly where it should be.
HyperTalk had about a kajillion users. It certainly deserves a place in this geneology. I'm not sure exactly where to put it, but it's certainly related to Smalltalk as a close cousin if not a descendant. For completeness, AppleScript should be listed as a descendant of HyperTalk.
I don't know why the PDF lists C++ as an ancestor of Dylan. I was somewhat involved in the development of Dylan, and Scheme, CLOS and Smalltalk were the main parents.
Squeak is the current leader of the Smalltalk bloodline. www.squeak.org
Oh come on. Is there anyone who isn't grossed out at the thought of their own parents getting it on?
The bottom line is that the prohibition against exclusive homosexuality is not a recent, Christian phenomenon. It has been present in virtually all cultures, at all times, in all places.
Yes, and slavery was prevalent in many cultures throughout history, but we have progressed to the point where we recognize its immoral nature. Likewise, modern cultures are moving to recognize that discrimination is immoral, including discrimination against homosexuality.
I agree the term "homophobia" is a misnomer, but we don't have a common term for irrational aversions rather than fears. And people who use that term do consider such an aversion irrational. I'm not sure what you disagree with, because you have absolutely no business agreeing or disagreeing with the private relationship of two people that has no direct effect on you. Your citations of studies that show people can change orientation don't prove anything about the morality of homosexuality.
By the way, I think it's perfectly fine and normal for straight people to be disgusted by the idea of gay sex - lots of gay people are disgusted by the idea of straight sex too. But when you take that distaste for something that is entirely someone else's business and use it as an excuse to disapprove of their lifestyle, then I think you're overstepping the bounds of morality.
Sorry, but that rendering of the Heart of Gold looks wrong. It's supposed to be shaped like a running shoe. Hmm, perhaps it is supposed to be a running shoe shaped for the foot of a superintelligent shade of the color blue.
To cop another comment, Know What You Are Talking About. Squeak and ParkPlace Smalltalk are both based on the same foundation, but have diverged significantly. You could not run a PP ST image on the Squeak VM, and vice-versa, even correcting for format differences. That said, they are pretty darn close, and both fully implement the language syntax and semantics as defined in the Blue Book (*not* Purple). I'd bet you could do a file-out of a class in PP and read it into Squeak and it would work fine.
While walking, or for that matter cycling, I prefer to be tuned-into my surroundings.
:-)
You can play the music at a low enough volume that you can still be aware of what's going on around you. I like to wear earphones while walking around San Francisco because it lets me easily ignore panhandlers and other assorted freaks by pretending I can't hear them when they ask for money. iPod + shades = my own world with no intrusions. This greatly simplifies my commute, as everyone who would otherwise bother me leaves me alone. I've heard this referred to online as coccooning.
Maybe the submitter could use a variation of this to solve his problem.
The submitter, mAsterdam, has misspelled the name of the chart's author. It's Lentczner, not Lentcner. That's T as in "Tsar", C as in "Czar", Z as in "Zorro". (Yes, this is a very inside joke.)
How about using Karma to provide feedback on examiners? Too bad Slashdot didn't patent the Karma system, or they could make a bundle by licensing it to the USPTO.
In the US, lawyers are expected to perform a certain amount of pro bono work each year. It's part of their ethical code, to provide access to the justice system to everyone, not just those who can afford it. Doctors are also ethically bound to help those in need - for instance hospitals have to accept trauma patients even if they can't pay. (I may be explaining the details wrong here, but the point is still valid.) Even among professions that have no ethical code requiring pro bono or gratis work, people still go out and volunteer their time and abilities to help those who need it.
I see nothing unusual at all about programmers performing work for free to the benefit of society. But the nature of programming is different from professions where the output is a service or product for an individual. Software can be copied freely, so programmers have the opportunity to help not just one person at a time, but the whole of society at once.
Doing volunteer or pro bono work exclusively won't pay the bills, but it is part of being a professional and a responsible member of society. While I wouldn't bet on being able to support myself doing only OSS, there is certainly a time and place for it in every programmer's career.
Now maybe they'll give Spike his own show. He da man!
No one charges for air conditioning or heat, even though there are days when people would gladly pay for it. As other have said, the cost of limiting and charging for WiFi access is often much greater than what you get from the charges.
Because I'm a software geek, not a hardware geek. Sure, I'll spend a weekend building a PHP/MySQL app to organize my DVD collection, but the most I'll do with hardware is install a new hard drive or memory. I don't get off on "some assembly required" gear, and you can bet my nieces don't either. Now, $250 for 20GB is a pretty good price, but how well does it work? I love how well my iPod works, and it's nice to have all my phone numbers etc with me wherever I go too. Add to that the add-ons like the hookup for dumping photos from a digicam. So yeah it might cost more, but you get a lot more too. There's always a market for quality and features, and even some of us on slashdot shop that way sometimes.
Because $200 is a lot for 1.5GB, and I'd like something that works with the downloads from iTMS.
This would be really great. I'd love to be able to give something like this to my teenage nieces. Sure they could use a full-size iPod, but $400 is a lot for a teen to carry around and probably lose or break. $100 would be cheap enough that pain of loss wouldn't be too awful.
Then I could just give them iTMS gift certificates for all future gifts. I'd be the best uncle ever!
The movie I thought was the best of the year was the one I least expected to like. Kill Bill (Vol 1) was just astounding. The sense of style, the attention to detail, the outright chutzpah, the buckets of blood... Usually I hate bloodfests, but this movie was just so well executed that I got over the blood and just loved it to pieces. I guess his goal was to make a live-action anime, and as far as I'm concerned it was perfection, even down to all the names being like stupid translations from Japanese.
And you have to give QT props for dressing Uma up like Bruce for half the movie!
I swear I saw something like this almost 20 years ago. I was watching some show on late night TV in Washington state, and the really cool thing on it was an aircraft with a stubby-bladed rotor that could be fixed as a wing for jet-propelled flight. I haven't heard anything like that since. I guess it took them a long time to work out the bugs.
The 80s use of the term encapsulator was an object that not only wrapped another, but mimiced it's interface. So externally you couldn't tell you were using an encapsulated object. It was a way of adding functionality by composition rather than inheritance. The trivial example is an encapsulator that logs all messages, which is perhaps useful for debugging. What you are talking about is more like a Facade pattern.
The term pattern may not be the best choice of a word to describe the concept, but it comes close. Just like you can have a pattern for a garment and then use that pattern to make a shirt from any type of fabric, design patterns supply standard solutions that can be used to solve common problems, but in an easily customizable way.
When the Gang-Of-Four book Design Patterns first appeared, there was a lot of talk about it at OOPSLA that year. I'd been a lucky witness to the birth of the concept a year or two previously. There was a lot of talk among Smalltalkers at Apple and everyone was reading Christopher Alexander's book A Pattern Language. By the time the Gang published the book, the meme had mutated and most people didn't get the underlying concept.
The OOP software community was struggling for a metaphor for understanding patterns. Many people latched onto the idea of the chip catalog. Like you can grab a catalog for SSI and LSI chips and find the OR gates or shifters you need, wire them together and voila you have a circuit board. Programmers want that kind of reuse, and are tired of having to reinvent the wheel every time they want to go for a ride.
But patterns can't be reused in the same way that chips can. I think API calls are a more equivalent concept to chips in a catalog. Patterns are more like things like "power suppy" or "transmitter" or "step motor". They exist in the design space above the chip or API call. They show how to use the more granular pieces to assemble higher-level solutions.
Working in Smalltalk, some of us noticed there were ways we would use classes, objects, inheritance, and references that we would repeat over and over. We began to make up names for them so they were easier to talk about. I remember encapsulator was one of the early names that was used a lot (it's an object that intercepts all references and messages to another object).
Design patterns provide a vocabulary for talking about, and more importantly thinking about, the ways that we've learned to solve common problems. This shouldn't be surprising, since the origin of the term was something called a pattern language, and languages have vocabulary. If you don't have a word for something, it's hard to reason about it. Try thinking about an arrangement of buildings if you have no concept of "community" or "town". Patterns supply the concepts for reasoning about design problems.
I had a friend at Apple who did the same thing using HyperCard. He indexed his whole house when he moved. The great thing about HyperCard (or any other DB-like system) as opposed to a text file is that you can have a record/card for each item, and one for each storage location. Moving an item to a new location is fast. Plus you can put keywords and stuff on an item to help you do searching for it.
Now THAT is anal!
The 15" PBs have shown to be pretty finicky about memory. Lots of reports of them refusing to boot when using 3rd party memory which isn't up to Apple's tolerances. But Crucial supplies exactly the same memory units that Apple uses, so there should be no worries there.
You have a bizarre notion of what overhead is. Overhead is a fixed cost of expenses incurred by the entire company, though it is often expressed as being amortized over the number of unit sales. In other words, the company is paying those bean counters and support people whether or not I buy from them, and there is little additional cost to handle my sale (except perhaps for support). If a company has an automated sales system in-house, the incremental overhead on each sale is negligible. So my $50 is close to $50 of incremental profit. I'd be willing to accept that my hobbyist purchase didn't include tech support or any other of the goodies. I just want the software.
As for conditions on the software, think of it this way. There are already tons of people who use the software without paying for it because it is too expensive, including companies that make money on it. This is a way to let those of us who would like to pay for it have an affordable option. If I started making money, I'd certainly upgrade to a professional version, because then I'd have a revenue stream to fund it.
Software vendors can treat their customers as potential criminals, or they can treat us as supporters. I'm happy to pay what software is worth to me, but I'm not going to fork out close to a thousand dollars for a hobby. If I were going to do that I'd spend it on a hardware upgrade or scuba gear or a new bike, not on software that will cost me another $500 to upgrade in a year.