Eventually, on its own, computing may move out of the "nerd" area of interest and into the mainstream. It's already starting with smartphones, music players, and ever more intricate gaming consoles. Once that happens, computing will be cool, and some other area of interest will become nerdy. Or, computing will stay "nerdy", and maybe something else will become cool, like tabletop gaming or massive LEGO collections or comic books. (Sorry guys...)
Society will always need to label some as nerds, for whatever demented sociological reason there is for it.
When I've played Tetris too much before going to bed, all I could think about, tossing and turning in the sheets, is blocks forever falling and falling, and trying to fit them all in, essentially playing the game in my head. I can easily see that business pushing out other thoughts.
I recommend Java Concurrency in Practice as well. It's an updated, in-depth look at Java threads. Doug Lea, author of Concurrent Programming in Java, is a co-author of the newer book. A great read.
That means not sitting your kid in front of the TV while you go persue your own hobbies or work (imagine that: sacrificing for the sake of your family).
My wife and I have two kids, ages 5 years and 16 months. I work full time, my wife part time with help from the grandparents babysitting. I can guarantee you that we have lots more to do while our kids are watching TV than hobbies or work. Here's a short list:
Cleaning the unending flow of dirty dishes
Handling the unending flow of laundry
Preparing breakfast/lunch/dinner, or cleaning up from it
Making phone calls for needed appointments
Cleaning the kitchen, or bathrooms, or...
Did I mention the laundry?
I could go on. See anything there that a really little kid can help with? See anything that maybe would go a lot smoother if the kids were just still for a little while? Using TV just to stop the whirlwind for even a half-hour can be a godsend for us. We love to spend time with our kids playing with toys, doing art, or romping in the yard, but when we need to do something ourselves — or we just need a break — putting on an educational, age-appropriate TV show can be a useful tool.
Yeah, we're not perfect parents. But we aren't helicopters either, and we have other stuff we've got to take care of.
Ah, I remember seeing that panhandling license! I was attending NC State and just getting into my car in a lot across from the main campus, when I was approached by a panhandler. He took the liberty of showing me his license, which he kept with him to show that he took his vocation seriously and was doing it properly, under the beneficent auspices of the state government. I had no idea if the license was legitimate, but I figured for all that effort, genuine or not, he deserved a couple of bucks.
No doubt XML is very useful. What I'm getting at is XML by itself doesn't do much for you. It's the semantics behind those documents — the schema, DTD, what have you — that can possibly make it useful for specific applications. And getting everyone to settle on those is the real work.
The sense I get though, is that some think you can just sprinkle XML on your system and voila, data flies around seamlessly! XML can get you toward that goal, but you still have to decide what goes inside all those angle brackets.
It certainly could be the beginning of the next bubble. Joel Spolsky doesn't think much of the "Web 2.0" hype, which I think this article may be buying into.
The bit in the article about how XML will solve all our data interchange problems is particularly curious. C'mon, it's just text files with a bunch of angle brackets, when it gets right down to it.
Cars are a good example here. Motor vehicles have to be safe, and there are rules and regulations governing their development and production which, by and large, keep the roads safe from exploding cars.
That's right, the regulations and such are important for cars because otherwise, the cars will end up killing lots and lots of people.
Most software isn't like that. If a web browser crashes every five minutes, I'm still breathing. Even if some crappy software causes all my credit card information to be spread all over the Internet, I'm still breathing.
Of course, there are some critical types of software, running power plants and rockets and such, for which failure means human death. And hey, those have super-robust development processes and regulations and guarantees.
I should have included tags around my Emacs / Ant usage being hardcore.:) Still, it's one step closer to down there (or at least to the VM, which is running in an interpreter, which is written in C (maybe), which was compiled to assembly / machine code, running inside some OS) than when using an IDE. So in a relative sense (only) it is more direct working with those.
I use CVS command line exclusively. I tried some GUI clients for it (jCVS in particular I used for a while) but I like the hands-on feel of the command line more. It's a matter of personal preference, but then again, when something weird happens in a shell around it (be it Emacs or Eclipse), it's extra work to figure out whether that shell is the problem (or your lack of understanding of it) or it's something deeper.
I want to try using Eclipse, nevertheless, but I start it up and see all these windows and little buttons, and stuff about projects and things, and I just want to code... if I spent time on it, I probably would figure it out, but I am just not motivated enough. Plus, I hear the problems my co-workers encounter, and my motivation sinks further.
Your analogy to the jump from machine code to assembly, and from assembly to higher-level languages, is spot on. As I was finishing my original post I thought of that, but kept going anyway.:)
And so I guess the real question is what makes those tools really great? I know I couldn't do without compilers, nor could most others, and develop anything as good as I can with them. Chris Sawyer is one exception... I think he did Roller Coaster Tycoon in straight-up assembly.
Perhaps it is because they completely handle the complexity they are designed to... they are "perfect" that way, where they need no transparency, or those cases where they fail to work are so rare that the cost of dealing with that is far outweighed by the efficiencies gained in using the tools in the first place. Perhaps the great tools are either completely transparent, or completely opaque, and things in the middle lead to the situations I worry about.
I worry about the increasing power and complexity of IDEs in particular. While they do so much more for developers and have all sorts of whiz-bang features, I bet much of the time the developers themselves don't understand what is going on. They become tied to the IDE, and need it to do all these things because they don't know how to do it "themselves", i.e., without hand-holding.
I develop in Java, and my environment consists of Emacs and Ant, mostly (hardcore, right?). I work with people who use NetBeans and Eclipse, and they keep running into weird problems interfacing them with CVS, or with mysterious classloading "features" that they have, or other obscure problems. Invariably, they don't know how to fix the problems, and I can't help because I never run into them.
I would like tools of the future to be as transparent as possible, to prevent this sort of situation. If tools are so magical that their users don't know the real theory and practice behind them, they end up relying on them to do any work. Their flexibility is very limited, and the tools end up compounding or obfuscating the "real" issues facing them.
What makes this movie repellent is that we have all had to deal with someone like Wade in our lives, and are loath to be reminded of it. That and all the farting.
What about those oh-so-cunningly crafted popups and banner ads that look like legitimate dialogs? Clicking No or anything else in them will just suck you in (unless you block the ads altogether.)
First off, I want to say "Amen!" to this story's author. My wife and I feel your pain.
One problem that has continued to vex us over our years of supporting my wife's parents' computers is my wife's sister. She has often popped in for a week or two and sprayed crap all over the hard drive, so to speak, before leaving. This includes supposed optimizers and helpers that do no such thing. Oh, and games a-plenty for her kids. And stupid buddy things. And so on.
There really is no way to prevent this interference, since the parents are never going to say no, much less know that it is happening at all. Maybe I'm just venting, because I have no suggestion for this problem apart from using an OS with some real security and all those other tricks that others in this thread are suggesting. I guess it's just something else to look out for until fratricide (sororicide?) is legalized.
I was a teaching assistant for an undergraduate course in assembly language. (We happened to use the MC68000 as the processor, with those nifty little test boards hooked to dumb terminals for entering and running your code.) This was in the mid 90's. I still vividly remember trying to teach the multitude of indirect addressing modes that the MC68000 offers, like indirect, indirect indexed, etc., etc. By and large, the students, mostly second and third year computer science and EE majors, had a real rough time getting the hang of all of it. I tried to draw analogies with the way C pointer arithmetic works, but they were never taught pointers in their C++ course. I was pretty horrified at that. Like you can do anything in C++ beyond the basics without understanding machine addressing.
Of course, the ones who had some experience with lower-level languages knew what I was talking about and had no problem with the concepts. They also tended to be the best performers and, in my opinion, seemed best cut out for the career they were aspiring to. I guess my point is that hardcode assembly may not be important in the very beginning, but I agree that being exposed to it can really help you understand how processors work, and I think can make you a better overall coder. The things you learn down low can't help but pay off when you get to the higher levels, because you can see why things up there are how they are.
Makes sense to me. The fact that there are more Linux defacements may only be because there are way more Linux servers out there. It could be that a big percentage of the Windows servers were defaced while a small percentage of the Linux servers are; it's just that in absolute numbers you see more Linux defacements.
Another factor could be the popularity of the web sites. If popular sites run Linux, the higher numbers may just be an effect of that correlation. We need a statistician to help us out!
Eventually, on its own, computing may move out of the "nerd" area of interest and into the mainstream. It's already starting with smartphones, music players, and ever more intricate gaming consoles. Once that happens, computing will be cool, and some other area of interest will become nerdy. Or, computing will stay "nerdy", and maybe something else will become cool, like tabletop gaming or massive LEGO collections or comic books. (Sorry guys ...)
Society will always need to label some as nerds, for whatever demented sociological reason there is for it.
I think we've hit on the ultimate addictive game: DDR Tetris.
When I've played Tetris too much before going to bed, all I could think about, tossing and turning in the sheets, is blocks forever falling and falling, and trying to fit them all in, essentially playing the game in my head. I can easily see that business pushing out other thoughts.
I recommend Java Concurrency in Practice as well. It's an updated, in-depth look at Java threads. Doug Lea, author of Concurrent Programming in Java, is a co-author of the newer book. A great read.
My wife and I have two kids, ages 5 years and 16 months. I work full time, my wife part time with help from the grandparents babysitting. I can guarantee you that we have lots more to do while our kids are watching TV than hobbies or work. Here's a short list:
I could go on. See anything there that a really little kid can help with? See anything that maybe would go a lot smoother if the kids were just still for a little while? Using TV just to stop the whirlwind for even a half-hour can be a godsend for us. We love to spend time with our kids playing with toys, doing art, or romping in the yard, but when we need to do something ourselves — or we just need a break — putting on an educational, age-appropriate TV show can be a useful tool.
Yeah, we're not perfect parents. But we aren't helicopters either, and we have other stuff we've got to take care of.
Ah, I remember seeing that panhandling license! I was attending NC State and just getting into my car in a lot across from the main campus, when I was approached by a panhandler. He took the liberty of showing me his license, which he kept with him to show that he took his vocation seriously and was doing it properly, under the beneficent auspices of the state government. I had no idea if the license was legitimate, but I figured for all that effort, genuine or not, he deserved a couple of bucks.
So is rat poison.
the Blue Screen of Death. I tell ya, these jokes just write themselves.
The best thing Earth has after Luna in terms of a moon is probably Cruithne, and that doesn't even count as a satellite anyway.
The sense I get though, is that some think you can just sprinkle XML on your system and voila, data flies around seamlessly! XML can get you toward that goal, but you still have to decide what goes inside all those angle brackets.
The bit in the article about how XML will solve all our data interchange problems is particularly curious. C'mon, it's just text files with a bunch of angle brackets, when it gets right down to it.
I'm with you. It really should have been "exsplogsion".
"Beam Scotty up, me!" and pushes the big red button.
That's right, the regulations and such are important for cars because otherwise, the cars will end up killing lots and lots of people.
Most software isn't like that. If a web browser crashes every five minutes, I'm still breathing. Even if some crappy software causes all my credit card information to be spread all over the Internet, I'm still breathing.
Of course, there are some critical types of software, running power plants and rockets and such, for which failure means human death. And hey, those have super-robust development processes and regulations and guarantees.
I use CVS command line exclusively. I tried some GUI clients for it (jCVS in particular I used for a while) but I like the hands-on feel of the command line more. It's a matter of personal preference, but then again, when something weird happens in a shell around it (be it Emacs or Eclipse), it's extra work to figure out whether that shell is the problem (or your lack of understanding of it) or it's something deeper.
I want to try using Eclipse, nevertheless, but I start it up and see all these windows and little buttons, and stuff about projects and things, and I just want to code ... if I spent time on it, I probably would figure it out, but I am just not motivated enough. Plus, I hear the problems my co-workers encounter, and my motivation sinks further.
And so I guess the real question is what makes those tools really great? I know I couldn't do without compilers, nor could most others, and develop anything as good as I can with them. Chris Sawyer is one exception ... I think he did Roller Coaster Tycoon in straight-up assembly.
Perhaps it is because they completely handle the complexity they are designed to ... they are "perfect" that way, where they need no transparency, or those cases where they fail to work are so rare that the cost of dealing with that is far outweighed by the efficiencies gained in using the tools in the first place. Perhaps the great tools are either completely transparent, or completely opaque, and things in the middle lead to the situations I worry about.
I develop in Java, and my environment consists of Emacs and Ant, mostly (hardcore, right?). I work with people who use NetBeans and Eclipse, and they keep running into weird problems interfacing them with CVS, or with mysterious classloading "features" that they have, or other obscure problems. Invariably, they don't know how to fix the problems, and I can't help because I never run into them.
I would like tools of the future to be as transparent as possible, to prevent this sort of situation. If tools are so magical that their users don't know the real theory and practice behind them, they end up relying on them to do any work. Their flexibility is very limited, and the tools end up compounding or obfuscating the "real" issues facing them.
What makes this movie repellent is that we have all had to deal with someone like Wade in our lives, and are loath to be reminded of it. That and all the farting.
What about those oh-so-cunningly crafted popups and banner ads that look like legitimate dialogs? Clicking No or anything else in them will just suck you in (unless you block the ads altogether.)
One problem that has continued to vex us over our years of supporting my wife's parents' computers is my wife's sister. She has often popped in for a week or two and sprayed crap all over the hard drive, so to speak, before leaving. This includes supposed optimizers and helpers that do no such thing. Oh, and games a-plenty for her kids. And stupid buddy things. And so on.
There really is no way to prevent this interference, since the parents are never going to say no, much less know that it is happening at all. Maybe I'm just venting, because I have no suggestion for this problem apart from using an OS with some real security and all those other tricks that others in this thread are suggesting. I guess it's just something else to look out for until fratricide (sororicide?) is legalized.
"In the language of the Elder Days, 'Arda' signified the World and all that is in it." -- from The Encyclopedia of Arda
I guess it's a suitably ambitious acronym for the project.
I'm thinking an eraser might do it too.
I was a teaching assistant for an undergraduate course in assembly language. (We happened to use the MC68000 as the processor, with those nifty little test boards hooked to dumb terminals for entering and running your code.) This was in the mid 90's. I still vividly remember trying to teach the multitude of indirect addressing modes that the MC68000 offers, like indirect, indirect indexed, etc., etc. By and large, the students, mostly second and third year computer science and EE majors, had a real rough time getting the hang of all of it. I tried to draw analogies with the way C pointer arithmetic works, but they were never taught pointers in their C++ course. I was pretty horrified at that. Like you can do anything in C++ beyond the basics without understanding machine addressing.
Of course, the ones who had some experience with lower-level languages knew what I was talking about and had no problem with the concepts. They also tended to be the best performers and, in my opinion, seemed best cut out for the career they were aspiring to. I guess my point is that hardcode assembly may not be important in the very beginning, but I agree that being exposed to it can really help you understand how processors work, and I think can make you a better overall coder. The things you learn down low can't help but pay off when you get to the higher levels, because you can see why things up there are how they are.
Linux doesn't kill people...
Makes sense to me. The fact that there are more Linux defacements may only be because there are way more Linux servers out there. It could be that a big percentage of the Windows servers were defaced while a small percentage of the Linux servers are; it's just that in absolute numbers you see more Linux defacements.
Another factor could be the popularity of the web sites. If popular sites run Linux, the higher numbers may just be an effect of that correlation. We need a statistician to help us out!