I don't know if it's my greatest failing or greatest success as a developer, but I tend to be a println debugger all the way.
Recently I remember seeing some justification/defenses of this technique, I think it's sometimes called "logging based debugging".
When something goes wrong I figure out the related assumptions I'm making, and then test 'em by output to STDOUT or STDERR or a file. It avoids some of the "Heizenbug" problems debuggers can bring on (so long as dumping output can be reasonably expected to be reliable w/o bringing on crossproblems) and by thinking of your assumptions, you're tying into principles similar to "write tests first", part of XP practices.
One set of things this doesn't handle well is memory leaks and bottlenecks and looking out for runaway object creation and the like, but garden variety debuggers usually don't cover that too well either, you need special profiling tools anyway.
If you grew up in the 80s, dolls were Barbie-sized--like those wacked-out giant GI Joe dolls we'd sometimes get glimpses of previous generations having played with. "Action Figures" were those tiny little ones.
Yeah, they're still kinda sort dolls, though the much smaller formfactor makes it possible to have a lot more vehicles, which in turn influences the way kids tend to play.
I read an interesting book, can't remember the title, that traced Star Wars from initial concepts to final merchandising. One of the things I hadn't really realized is how out of proportion stuff like the Millennium Falcon is, since one scaled to the figures would be too big for parents to buy, or to store easily.
[geekdom]Of course, they say that the interiors we see for the Falcon couldn't fit inside the exterior shots we see...[/geekdom]
Though some fan built a properly scaled Rebel Blockade Runner that's hauled around on something the size of a autocarrier truck.
Interesting warnings, maybe I should dive more deeply into the fine print.
I get the feeling that while there might be trouble if my bandwidth was constantly huge (it's not) I should be free of any nasty surprises if I had some kind of slashdotting. (And the gamebutton arcade on http://kisrael.com got some spikes in traffic when I was boingboing'd, though probably small potatoes over all.)
I know of at least two shared-host web servers that run $10-20 month and claim to offer unlimited bandwidth, arrowweb.com and ezpublishing.com. I think part of the catch is they have rather small disk quotas in the 50-100meg range for that price. I don't know how they prevent abuse, but I've been pretty happy with them.
You don't have to give me exact details. Very roughly where are these people working at what do they do? This isn't my experience at all. I wouldn't hire a less than good H1B worker because of the money, hassle and the time involved. Most were consultants from India, for high tech dot com and post dot com stuff.
I dunno, there's a chance that they weren't H1B, I don't know what the visa/legal arrangement is in all of those situations.
I work near Silicon Valley and have many friends working in and around SIlicon Valley in high tech jobs. Many have H1B visas. They all seem smart, often much smarter than the Americans around them, and this is reflected in the fact that they often become promoted fast within their companies. Your experience doesn't match mine, then. I'd say about 1/4 to 1/3 of the H1Bs I know (or at least that I recognize as likely to be such) are some of the best and brightest that I know. The others are strikingly inept, with knowledge that comes nowhere near the experience that it seems they should have according to their resume. (There's also a correlation between language skills and level of ability(there's a chance that that lack of strong English skills makes me think they're less skilled than they are, but I have at least tried to compensate for that by giving them the benefit of the doubt.))
If I think I am going to die in a battlefield and I am shitting in my pants, a robot will do nothing to ease my anxiety or fear. What is it going to do, smile at me when I am freaking out and just trying to survive?
Maybe it could inject some really good drugs? Hyperprozac plus adrenalin?
In 6 years in the industry, I've never met a marketing guy who I couldn't finagle out of a thought like that...for starters, if he's smart enough to think of session =~ transaction, he shouldn't have this problem, and if he's not that smart, then it shouldn't be too hard to convince him that 'oh, we haven't closed the transaction yet" even though the person is logged out. And if those fail, put in a javascript popup...but log the damn person out!
Corporate policy...all users must be thanked at the close of a transaction. That's fine...you can still close the session and then bring them to a thanks page. It's a lousy design.
Speaking of American Express...we use their banking and have been pretty happy with it...even when they did an internal revamp but removed the ability to tag your accounts with individual one line comments, so you could tell which was which (shared savings, private checking, etc) But our *favorite* gripe is how the "logout" button doesn't end your session...it takes you to a "thank you for using AmEx banking" screen, and you have to click "Done" or something there to actually log out. If you just close the window on the "reverse splash page", your session still hangs around. Duhhr!
It fills a useless middle ground between animated GIFs and Java applets Why do you put Flash below Java applets? Just because applets are based on a language that's great for many, many (usually server side) things doesn't mean its better; I've seen many more slicker and more usable interfaces with Flash than with Java applets.
"Disruptive Technologies" has a well defined meaning, yeah, but it also has a conventional meaning, and in the non-technical sense, I think these lowend technologies will cause more disruptions to our lives and industries than some cool new cellphone device.
Hate to say it, but I think the disruptive "technology" for the next 5 years (to the telecom industry, and every other) is going to be a suitcase nuke, dirty bomb, or biological agent.
So what do you suggest to make programming more accessible to kids? Replace Windows with a BASIC shell on all new PCs? Nah, of course not. Unfortunately I don't have a cure all solution, it's up to individual families to be aware of the situation and try to encourage this kind of creativity if they can. Mostly, we were just observing the change in home computers...probably akin to the way microchips made it harder for kids to start tinkering with radios and other hardware, relative to the old days.
Yeah, but there is a difference between booting into BASIC and having BASIC somewhere available in the bowels of the system.
The web is a little bit more forward than that, so kids might be aware that javascript is there (though it would be cooler if shockwave or flash was more accessible.)
Sheesh. Thanks to all those people who don't have something better to do than mod me -1, overrated.
PC controllers have gone, roughly, through three stages, with a lot of overlap: 1. those dinky little thin sticks with the bigger square base, like what they had on the Apple II 2. Flightsticks, big things, tend to flare out at top. 3. Gamepads, following what's gained popularity on the console side
What you're describing is a Flightstick, basically (plus rows of 4 buttons are likely to be very difficult to learn to differentiate, terrible physical UI). While flightsticks are terrific for, well, flight games (I always felt kind of weird playing Wing Commander derived games on consoles with those dinky sticks) and other sims, you just don't get the precision and fast reactions you need on the most popular console games.
On the other hand, console controllers aren't as fast and precise as a keyboard and mouse combo for FPS...I think there are a happy medium, actually. (And like someone else said, the Gamecube controller is wonderful, comfortable, good control, with lots of well-differentiated buttons (unlike the dualshocks 4 nearly identical shoulder buttons...though it's stil a good controller))
My bet ? My generation had a lot of kido starting learning programming on PC. The next won't, Console will be widespread, and thus less and less kids will go for the IT industry. What did you learn programming in?
In general, PCs are a lot less programmer friendly than the 8-bits and Amiga/ST type machines that proceeded them. I think the loss of computers that boot into BASIC will lead to far fewer kids picking up programming for fun.
On the other hand, there is the ability to publish on the web, which is a form of contact the children of the 80s never had. These kids are wired as all get out.
Right, and what you just said is pretty close to what I took away from the article...I think he wouldn't have started with "look how cool it is that TCP works over flakey IP" if we wanted everyone to go straight to IP, just to avoid the abstraction.
I think the thing that he's most obviously negative about is the whole "one click 'programming'" mentality. (For myself, I tend to like using well constructed toolkits, but dislike trying to modify other people's "engines", that kind of drive what I'm trying to do.)
I think a fair summary of this would say the article is more of a state of the Union ("The Law of Leaky Abstractions is dragging us down") then a call to action ("Use only low level stuff!"...though a case could be made that he would say "So don't rely on tht crappy WYSIWYG-one click tool stuff")
I don't think he's arguing that everyone should be programming at a lower level, and that abstractions aren't without some huuuge advantages...but they have to be the right abstractions, and more people should have an idea of what's going on behind the curtains than they do now.
You make some convincing and some less convincing points about the examples he uses, but those are just examples. What he said rang so true for J2EE EJBs, which wasn't even an example, that I feel there's definately something to it. Even w/ JSPs; most of the time you can be very happy just editing your HTML-like page, adding some java here and there (not too much, hopefully--hopefully you've abstracted the parts that need straight java by putting them in well designed objects) but when things go really wrong, not very often at all, it's super useful to be able to examine the generated servlet that is the thing that actually gets compiled...
arrowweb.com and ezpublishing.com both offer $7-$15/mo hosting...CGI scripts and UNLIMITED BANDWIDTH--the catch is the total storage space is on the low end, 50-100megs. allmysites run on one of them, and I've been pretty happy. ezpublishing seems slightly more reliable, but has a funkier CGI setup.
I was the editor of my high school's literary magazine back in the day (I was always more of an English person than a math person), and my senior year I submitted a C++ Hello World as a poem to the magazine. Got a lot of strange looks but it got in.
I gotta ask--what brace formatting style did you use?
When pixeltime.com (now sadly defunct, a site about cramming creativity into little 45x45 GIFs) had a "Y2K" theme for one month, I made a tiny plausible perl Y2K bug, the old "slap a '19' in front of the C representation of the year rather than add 1900"...wonder if anyone got the joke?
Also the structure of Windows and for example the filesystems used have a history dating back to the eighties and the 8086.
If they'd think about what they do, create more flexible solutions from the start and stop caring for software developed in 1984 (run it in a virtual machine, VirtualPC on a 1GHz P3 has more power than the computers used back in '84) they'd probably make better software.
Yeahbut...if you run it on a virtual machine, won't you have trouble getting it to interact with the rest of your shiny new OS? A lot of time people need legacy apps, not in isolation, but because of what they can do with the results. If your little VM is writing to its own VFS, you then have to set up little gatekeeps to make sure any files going from the OS proper is munged in a reversible fashion....in fact, you end up with something very similar to the MICROS~1 file system anyway...
In general I'm reasonably impressed with Windows backwards compatibility, it is itermitently useful and the disadvantages of it are relatively hidden from me. (i.e. people would notice and complain iftheir old apps don't work, but retarding the progress of the OS is much more subtle.)
I miss how on Windows = 3.1, when programs were iconized, you could use that as a fun little 32x32 canvas, and make little software toys. The taskbar made that obsolete, alas.
I don't know if it's my greatest failing or greatest success as a developer, but I tend to be a println debugger all the way.
Recently I remember seeing some justification/defenses of this technique, I think it's sometimes called "logging based debugging".
When something goes wrong I figure out the related assumptions I'm making, and then test 'em by output to STDOUT or STDERR or a file. It avoids some of the "Heizenbug" problems debuggers can bring on (so long as dumping output can be reasonably expected to be reliable w/o bringing on crossproblems) and by thinking of your assumptions, you're tying into principles similar to "write tests first", part of XP practices.
One set of things this doesn't handle well is memory leaks and bottlenecks and looking out for runaway object creation and the like, but garden variety debuggers usually don't cover that too well either, you need special profiling tools anyway.
If you grew up in the 80s, dolls were Barbie-sized--like those wacked-out giant GI Joe dolls we'd sometimes get glimpses of previous generations having played with. "Action Figures" were those tiny little ones.
Yeah, they're still kinda sort dolls, though the much smaller formfactor makes it possible to have a lot more vehicles, which in turn influences the way kids tend to play.
I read an interesting book, can't remember the title, that traced Star Wars from initial concepts to final merchandising. One of the things I hadn't really realized is how out of proportion stuff like the Millennium Falcon is, since one scaled to the figures would be too big for parents to buy, or to store easily.
[geekdom]Of course, they say that the interiors we see for the Falcon couldn't fit inside the exterior shots we see...[/geekdom]
Though some fan built a properly scaled Rebel Blockade Runner that's hauled around on something the size of a autocarrier truck.
Interesting warnings, maybe I should dive more deeply into the fine print.
I get the feeling that while there might be trouble if my bandwidth was constantly huge (it's not) I should be free of any nasty surprises if I had some kind of slashdotting. (And the gamebutton arcade on http://kisrael.com got some spikes in traffic when I was boingboing'd, though probably small potatoes over all.)
I know of at least two shared-host web servers that run $10-20 month and claim to offer unlimited bandwidth, arrowweb.com and ezpublishing.com. I think part of the catch is they have rather small disk quotas in the 50-100meg range for that price. I don't know how they prevent abuse, but I've been pretty happy with them.
You don't have to give me exact details. Very roughly where are these people working at what do they do? This isn't my experience at all. I wouldn't hire a less than good H1B worker because of the money, hassle and the time involved.
Most were consultants from India, for high tech dot com and post dot com stuff.
I dunno, there's a chance that they weren't H1B, I don't know what the visa/legal arrangement is in all of those situations.
I work near Silicon Valley and have many friends working in and around SIlicon Valley in high tech jobs. Many have H1B visas. They all seem smart, often much smarter than the Americans around them, and this is reflected in the fact that they often become promoted fast within their companies.
Your experience doesn't match mine, then. I'd say about 1/4 to 1/3 of the H1Bs I know (or at least that I recognize as likely to be such) are some of the best and brightest that I know. The others are strikingly inept, with knowledge that comes nowhere near the experience that it seems they should have according to their resume. (There's also a correlation between language skills and level of ability(there's a chance that that lack of strong English skills makes me think they're less skilled than they are, but I have at least tried to compensate for that by giving them the benefit of the doubt.))
If I think I am going to die in a battlefield and I am shitting in my pants, a robot will do nothing to ease my anxiety or fear. What is it going to do, smile at me when I am freaking out and just trying to survive?
Maybe it could inject some really good drugs? Hyperprozac plus adrenalin?
In 6 years in the industry, I've never met a marketing guy who I couldn't finagle out of a thought like that...for starters, if he's smart enough to think of session =~ transaction, he shouldn't have this problem, and if he's not that smart, then it shouldn't be too hard to convince him that 'oh, we haven't closed the transaction yet" even though the person is logged out. And if those fail, put in a javascript popup...but log the damn person out!
Corporate policy...all users must be thanked at the close of a transaction.
That's fine...you can still close the session and then bring them to a thanks page. It's a lousy design.
Speaking of American Express...we use their banking and have been pretty happy with it...even when they did an internal revamp but removed the ability to tag your accounts with individual one line comments, so you could tell which was which (shared savings, private checking, etc) But our *favorite* gripe is how the "logout" button doesn't end your session...it takes you to a "thank you for using AmEx banking" screen, and you have to click "Done" or something there to actually log out. If you just close the window on the "reverse splash page", your session still hangs around. Duhhr!
It fills a useless middle ground between animated GIFs and Java applets
Why do you put Flash below Java applets? Just because applets are based on a language that's great for many, many (usually server side) things doesn't mean its better; I've seen many more slicker and more usable interfaces with Flash than with Java applets.
Some great games w/ Flash as well.
"Disruptive Technologies" has a well defined meaning, yeah, but it also has a conventional meaning, and in the non-technical sense, I think these lowend technologies will cause more disruptions to our lives and industries than some cool new cellphone device.
Hate to say it, but I think the disruptive "technology" for the next 5 years (to the telecom industry, and every other) is going to be a suitcase nuke, dirty bomb, or biological agent.
So what do you suggest to make programming more accessible to kids? Replace Windows with a BASIC shell on all new PCs?
Nah, of course not. Unfortunately I don't have a cure all solution, it's up to individual families to be aware of the situation and try to encourage this kind of creativity if they can. Mostly, we were just observing the change in home computers...probably akin to the way microchips made it harder for kids to start tinkering with radios and other hardware, relative to the old days.
Yeah, but there is a difference between booting into BASIC and having BASIC somewhere available in the bowels of the system.
The web is a little bit more forward than that, so kids might be aware that javascript is there (though it would be cooler if shockwave or flash was more accessible.)
Sheesh. Thanks to all those people who don't have something better to do than mod me -1, overrated.
Yeah, I know there's been some question about BASIC teaching bad thoughtmodes...but Amiga and I think ST Basic got away from that.
What about computers that boot into a terminal and have perl and gcc available?
Too steep a learning curve, and no obvious way to get to making the cool graphical stuff. (C=64 was no prince for this either.)
There are some other things out there, but none have really caught on.
PC controllers have gone, roughly, through three stages, with a lot of overlap:
1. those dinky little thin sticks with the bigger square base, like what they had on the Apple II
2. Flightsticks, big things, tend to flare out at top.
3. Gamepads, following what's gained popularity on the console side
What you're describing is a Flightstick, basically (plus rows of 4 buttons are likely to be very difficult to learn to differentiate, terrible physical UI). While flightsticks are terrific for, well, flight games (I always felt kind of weird playing Wing Commander derived games on consoles with those dinky sticks) and other sims, you just don't get the precision and fast reactions you need on the most popular console games.
On the other hand, console controllers aren't as fast and precise as a keyboard and mouse combo for FPS...I think there are a happy medium, actually. (And like someone else said, the Gamecube controller is wonderful, comfortable, good control, with lots of well-differentiated buttons (unlike the dualshocks 4 nearly identical shoulder buttons...though it's stil a good controller))
My bet ? My generation had a lot of kido starting learning programming on PC. The next won't, Console will be widespread, and thus less and less kids will go for the IT industry.
What did you learn programming in?
In general, PCs are a lot less programmer friendly than the 8-bits and Amiga/ST type machines that proceeded them. I think the loss of computers that boot into BASIC will lead to far fewer kids picking up programming for fun.
On the other hand, there is the ability to publish on the web, which is a form of contact the children of the 80s never had. These kids are wired as all get out.
Right, and what you just said is pretty close to what I took away from the article...I think he wouldn't have started with "look how cool it is that TCP works over flakey IP" if we wanted everyone to go straight to IP, just to avoid the abstraction.
I think the thing that he's most obviously negative about is the whole "one click 'programming'" mentality. (For myself, I tend to like using well constructed toolkits, but dislike trying to modify other people's "engines", that kind of drive what I'm trying to do.)
I think a fair summary of this would say the article is more of a state of the Union ("The Law of Leaky Abstractions is dragging us down") then a call to action ("Use only low level stuff!"...though a case could be made that he would say "So don't rely on tht crappy WYSIWYG-one click tool stuff")
I don't think he's arguing that everyone should be programming at a lower level, and that abstractions aren't without some huuuge advantages...but they have to be the right abstractions, and more people should have an idea of what's going on behind the curtains than they do now.
You make some convincing and some less convincing points about the examples he uses, but those are just examples. What he said rang so true for J2EE EJBs, which wasn't even an example, that I feel there's definately something to it. Even w/ JSPs; most of the time you can be very happy just editing your HTML-like page, adding some java here and there (not too much, hopefully--hopefully you've abstracted the parts that need straight java by putting them in well designed objects) but when things go really wrong, not very often at all, it's super useful to be able to examine the generated servlet that is the thing that actually gets compiled...
arrowweb.com and ezpublishing.com both offer
$7-$15/mo hosting...CGI scripts and UNLIMITED BANDWIDTH--the catch is the total storage space is on the low end, 50-100megs.
all my sites run on one of them, and I've been pretty happy. ezpublishing seems slightly more reliable, but has a funkier CGI setup.
I was the editor of my high school's literary magazine back in the day (I was always more of an English person than a math person), and my senior year I submitted a C++ Hello World as a poem to the magazine. Got a lot of strange looks but it got in.
I gotta ask--what brace formatting style did you use?
When pixeltime.com (now sadly defunct, a site about cramming creativity into little 45x45 GIFs) had a "Y2K" theme for one month, I made a
tiny plausible perl Y2K bug, the old "slap a '19' in front of the C representation of the year rather than add 1900"...wonder if anyone got the joke?
You can learn more about pixeltime on my tribute site.
Mod Parent Up! The The Law of Leaky Abstractions is a must read.
Also the structure of Windows and for example the filesystems used have a history dating back to the eighties and the 8086.
If they'd think about what they do, create more flexible solutions from the start and stop caring for software developed in 1984 (run it in a virtual machine, VirtualPC on a 1GHz P3 has more power than the computers used back in '84) they'd probably make better software.
Yeahbut...if you run it on a virtual machine, won't you have trouble getting it to interact with the rest of your shiny new OS? A lot of time people need legacy apps, not in isolation, but because of what they can do with the results. If your little VM is writing to its own VFS, you then have to set up little gatekeeps to make sure any files going from the OS proper is munged in a reversible fashion....in fact, you end up with something very similar to the MICROS~1 file system anyway...
In general I'm reasonably impressed with Windows backwards compatibility, it is itermitently useful and the disadvantages of it are relatively hidden from me. (i.e. people would notice and complain iftheir old apps don't work, but retarding the progress of the OS is much more subtle.)
I miss how on Windows = 3.1, when programs were iconized, you could use that as a fun little 32x32 canvas, and make little software toys. The taskbar made that obsolete, alas.
My love of haiku
Was small as a cicada
And then got smaller.
--Mr. Blue (Garrison Keillor, writing on Salon.com