Scientists already are Natural Philosophers...
on
The Unknown Newton
·
· Score: 3, Insightful
"Scientist" is actually a relatively recent word. It's an awkward fusion of latin and greek (in true latin, it would be ScienTOR). So awkward in fact, that some protested its widespread adoption, preferring the then status quo - "natural philosopher".
A phiolospher is literally one who 'loves wisdom', a 'natural philosopher' is therefore one who craves an understanding of nature and all the stuff whats in it.
So, there's nothing new about calling scientists 'natural philosophers'. It's as much a step forward as calling a car a 'horseless carriage' - we're already there.
Re:First use of the term "Biomorphing"
on
Biomorphic Software
·
· Score: 3, Informative
I think evolutionary biologist Richard Dawkins deserves credit for the term "biomorph" to describe the results of his 'Blind Watchmaker' program around 1986.
The program generated very simple tree-like drawings based on various parameters. A given "computer biomorph" could be selected and the computer would generate a number of 'children', whose shape (parameters) would be based on those of the parent with slight random changes (mutations). Dawkins later wrote variants to simulate spider-webs. These Mac-based apps influenced a lot of what's going on now.
I remember being at university, coming up with something similar to categorize teammates for group projects (of which there were many. It came down to:
Competent vs. Incompetent
Aggressive vs. Passive
Where the Aggressive-Incompetents are to be contained and avoided, Passive-Incompetents are ignored, Passive-Competents are trusted with semi-important tasks, and Agressive-Competents do the planning, key tasks, and keep the agressive-incompetents from ruining everything. I usually found myself in groups of 4 with one of each represented.
I told a historian/economist friend about my little matrix, thinking myself very clever and original, and he shut me right down saying, "Yeah, Otto Von Bismarck came up with pretty much the same thing 80 years ago." Still, the model has served me well, through school and professionally, though I never thought it original.
And now some manage-oids are trying to make a buck with the same old thing with a new name. So what else is new?
Close, but not quite. Microsoft's plan is clever - release a survey that says nobody reads, expecting all sorts of people to complain and say how much they themselves read.
Then they patent the Latin alphabet, ("uh, it's a font, dammit, and thus copyrightable!") and charge everyone who uses it a fee. Nobody can claim they don't 'use' it because of they've just complained about the survey and how damn literate they are.
Next month, it'll be the Cyrillic alphabet ($0.50 to Microsoft anytime any mathmaticial uses a variable, or a fraternity is named, not to mention circles).
It strikes me as odd that there would be people on slashdot who are NOT grammar nazis! Nobody should be more aware of the value of proper syntax and structure, and of the errors that can occur when nonstandard syntax and structure aren used. I mean, come on! We all know better than to reference a variable (especially a pointer) without initializing it, yet people think nothing of starting a conversation with, "He just said it was broken!" without first specifying who 'he' or 'it' are.
Any language, natural or otherwise, is a code, in which meaning is derived from words (spelled properly) arranged meaningfully with other words and punctuation. Unless both sender and receiver decode the message using the same rules and syntax, information will be garbled, if not dangerously corrupted. If the rest of the world thinks '"' means "inch", and Spinal Tap think '"' mean "foot", well...
We all know this. We're all grammar nazis. The ones that aren't write bad code, bad specs, bad documentation, bad support e-mails, bad comments, and bad posts to slashdot.
That said, as an olive branch to those who argue otherwise, I will not bother proofreading this post.
Titan may not survive another 5 billion years. Well, maybe, but the point is, Titan has a retrograde orbit, and is losing energy to tidal forces w/ Neptune. Someday, well, a messy end for Titan.
And to think I thought I was wasting that week spent playing with Celestia!
Actually, the only reason NATO designated it 'Satan' was because they were running out of nouns that start with 's'. Nato designations for Soviet surfact-to-surface missiles started with 's'. (SS-18 Satan, SS-2 Scud, SS-N-2 Styx, SS-N-12 Sandbox and so on). Surface-to-air missles started with 'g' (SA-N-1 Goa, SA-N-7 Gadfly, etc.).
Air-to-Surface missle designations started with 'k'. (AS-4 Kitchen, AS-7 Kerry, AS-10 Karen). Air-to-air missiles start with 'a'. (AA-2 Atoll, AA-7 Apex, AA-10 Alamo, AA-11 Archer).
They're just code-names, back when code names were actually _code_ and didn't give away everything about the named item. I mean, "Operation Market Garden" - classic. What could that be about? No idea, the enemy is oblivious. Now, "Operation Iraqi Freedom" - hmmm, what could the plan be there....
As per your cons, then you should move to Vancouver or parts thereabouts, where you trade cold for rain, curling for cannabis, French-speaking people for fewer French-speaking people, and Celine Dion for Sarah McLachlan.
Although, in all fairness, it's only cold during the winter, the summers are glorious. Curling is just like bowling except (gasp) a team sport and more moving. There are even special shoes! And, like everyone else, most of the French speaking people are wonderful and intelligent people. And a lot of them speak English. Often better than most Anglophones speak French.
You forgot "Insane Taxation" from your cons. Small price to pay, IMHO.
Completely right! Fact is, maybe 5% of professional coding is done in a 'pure' CompSci atmosphere. The other 95% reflects the true nature of computers and software - a tool to get some job done. And there is one metric hell of a lot of jobs.
Coders in banks need to learn about interest and amortization, coders in nuclear facilities need to learn about half-lives and gamma rays, coders for phone companies need to learn about telephony, coders for mom and pop stores need to know about mom's left-hand arthritus (so avoid F1-F8).
Not only is it relevant or valuable for coders to understand the context of the business they are in, it's vital. In fact, code-sense should take backseat to business-sense (although informed by coder-logic). Too often a tech solution will be shoehorned in when a practical solution based on knowing the business will do.
One time I stopped a restaurant manager from uprooting and reconfiguring all of his networked terminals and printers the day before a national holdiay in favour of a solution involving no more than a sideways abacus sitting on the bar. It wasn't a technology problem, it was an information problem. For that day, and that day only, blender drinks were being made at the beer tub, not at the bar. Problem was, orders for blender drinks were printed out at the bar, not the beer tub. The plan was to rejig all the printers and terminals so that the beer tub would have a printer, and then to reconfigure the POS software to route blender drinks to the beer tub. This sounded like a lot of hassle for one day, and knowing the 'stability' of the POS system, it was a recipe for disaster. The beer tub was in clear view of the bar. All the person there needed to know was how many of 3-4 different blender drinks to make. My solution was this: get a colourful child's abacus and mount it horizontally, so the beads slide from left-to-right. Each row represents a different drink (yellow=pina colada, red=strawberry daiquiri, etc). When an order comes up in the bar, the bartender slides the appropriate bead(s) over. The person at the beer tent can see this, and make the drinks. The server collects the drinks and slides the bead back. At any time, the person in the beer tub knows how many of what kind of drinks to make, and nothing had to be rewired or reconfigured or coded. And it worked like a charm.
Of course, over the years I've come up with a lot of elegant solutions to a lot of wrong problems, but never regretted it once. Usually, a good solution to the wrong problem is about 70% of the solution to the right problem, and even if it's not it invariably ends up being the crucual 30% of some yet unforseen problem. Software's cool that way.
One problem that comes of being a competent and experienced coder is that managers assume you know everything and assume that they don't have to know anything, rendering them (more) useless.
The question I always ask myself before starting any coding is: "Is this going to let the user go home early? Or work late?"
Ask the candidate a question you know for a fact that the person does NOT know the answer to. Then, see how they respond. Some people will say, "I don't know" and some people will make something up - either an educated guess or an outright fabrication.
In my experience (which is, certainly bitter) the outright fabricators tend to have issues with, well, truth. Never a straight answer - always in the grey area. Since most of IT is based on literal binary truth (1 or 0, true or false, that's it - fuzzy logic cleverness aside). These are pretty incompatible viewpoints, which make understanding and trust pretty difficuly.
A true example: Me:Yeah, the database is all set up, but we can't really get any good metrics until all the data is in. An Outright Fabricator:Can't we just throw in some fake data? M:Well, not, becase then we'd have no way of telling the good data apart from the made-up stuff, and all the information we get from the system will be completely meaningless! OF:No, no. Something's always better than nothing
This went on for about 10 minutes before we 'agreed to disagree'. Or, he had a nic-fit. Or I stabbed him. Something like that.
The point is, don't work for someone you don't trust. That's the number one thing.
Number two: Make damn sure his/her spouse is uglier than yours - in the long run, you'll understand.
But seriously, number two would probably be communication skills - is this the kind of person whom you 'just don't get', or do you immediately understand what they're talking about? Your professional relationship will mostly consist of this person passing information along to you (and vice versa) - the easier the flow of ideas and information between you, the better.
It also don't hurt to have a friend throw a fake hand grenade through the window of the interview room. I'll work for the person who jumps on it for me.
Which is precicely why this is so valuable - every generation labours under the illusion that their troubles are unique. To have the mistakes of the past so freely available, with such obvious paralells to our current follies, can only help us stop making the same mistakes, and get on with the much more valuable job of making entirely new, more valuable, mistakes. Students can now see things in a much wider perspective, and see history as a living, changing path.
Identifying a pattern is the crucial first step in breaking out of it - ask an addict. This kind of thing, if used properly, could go a long way in giving people the perspective they need to see through all the bullshit.
And if nothing else, the science columns'll be good for a laugh.
I know it's not an option for most, but it's certainly technologically feasable to code from home. I mean, we've got this damn Internet thing, might as well use it to, like, improve life an' stuff
I often find it hard to write code with all the distractions of an office - productivity coding evenings and weekends is, comparatively, astronomical. Not all people are creative or attentive as office hours may require. Sure, with kids, home will be full of distractions too, but the good kind. (Good meaning better to spend time w/ kids than to show your boss how to print for the 2314th time, etc).
VNC, Timbuktu, Large Flash Memory, etc. are all deeply useful for the whole 'pick up and go work somewhere else' for a bit. I've been coding for decades, but am just getting into Linux, and playing with bootable distributions like Knoppix just blows my mind with the potential for making the location of your ass completely meaningless. Chair in the office = armchar = rocking chair next to crib = park bench = beach and so on.
The trick to convincing your employer to let you work from home is quite simple:
1. Wait for a trivial feature request on a Friday. (In the real world, this shouldn't take too long)
2. Upon hearing the request, go white, wobble in your chair, get up, get dizzy and have to sit down again, and then go on a stammering rant about how complicated it is, how it'll break the entire software model, how you'll have to invent something nobody's ever been able to do before, and how many MONTHS it'll take to even get a prototype done. Say, "I'll go home tonight, and have a crack at it, and maybe I'll have something by Tuesday if I take Monday off...."
3. Enjoy your weekend, with a spot of coding during the brief rainy patch or whatever, get the job done.
4. "Work from home Monday" - actually work from home, though, don't skive off. Actually spend time on a frivolous but _shiny_ side-feature, while sitting by the phone so you can take emergency calls, just in case.
5. Show up on Tuesday, with the original "impossible" feature done AND a new shiny thing, raving about how much work you were able to get done working from 6pm Friday to 4am Tuesday at HOME.
6. Repeat as necessary until they get the hint.
7. Have babies.
8. When the ask what you're doing doing, tell them, and when they ask to help, let them. Little innocent eyes make good testers...
9.... and later good debuggers...
10... and later good coders....
11 ???
12 Profit
I know it's not particularly marketable, but I've always thought Pascal was an excellent learning language. Pointers, structures, dynamic memory allocation... and simpler syntax than C.
In my experience, most people learning programming via VB get bogged down in UI tweaking, and the C/C++ learners get bogged down in the &*&! syntax. Java leaners tend to get confused with OO when they haven't yet been exposed to variable scope, and functional decomposition, etc. Again, in my experience.
Pascal is simple enough to get started quickly, but rich enough to let the learner grow into the advanced concepts. It's a gateway language - it makes learning C/++/#,Java, etc. much less intimidating.
Although, for "Holy Crap, I made something!" value, VB's prety good. In no time at all you can make something that looks "just like a real windows application" (with all the inherent reliability ) I guess it all comes down to how much you want to spend on 'fundamentals' and how much you want to spend on, well, let's be honest, 'fun and cool stuff'.
Ultimately, for some, it comes down to not choosing the right language, but the right project - start something simple and then keep pushing and pushing it. Maybe start with some HTML, move onto JavaScript (where you can get into parameter passing, functions, syntax, and control structures) and from there maybe into database or media stuff, depending on what would be fun to do next.
A phiolospher is literally one who 'loves wisdom', a 'natural philosopher' is therefore one who craves an understanding of nature and all the stuff whats in it.
So, there's nothing new about calling scientists 'natural philosophers'. It's as much a step forward as calling a car a 'horseless carriage' - we're already there.
The program generated very simple tree-like drawings based on various parameters. A given "computer biomorph" could be selected and the computer would generate a number of 'children', whose shape (parameters) would be based on those of the parent with slight random changes (mutations). Dawkins later wrote variants to simulate spider-webs. These Mac-based apps influenced a lot of what's going on now.
Competent vs. Incompetent
Aggressive vs. Passive
Where the Aggressive-Incompetents are to be contained and avoided, Passive-Incompetents are ignored, Passive-Competents are trusted with semi-important tasks, and Agressive-Competents do the planning, key tasks, and keep the agressive-incompetents from ruining everything. I usually found myself in groups of 4 with one of each represented.
I told a historian/economist friend about my little matrix, thinking myself very clever and original, and he shut me right down saying, "Yeah, Otto Von Bismarck came up with pretty much the same thing 80 years ago." Still, the model has served me well, through school and professionally, though I never thought it original.
And now some manage-oids are trying to make a buck with the same old thing with a new name. So what else is new?
Then they patent the Latin alphabet, ("uh, it's a font, dammit, and thus copyrightable!") and charge everyone who uses it a fee. Nobody can claim they don't 'use' it because of they've just complained about the survey and how damn literate they are.
Next month, it'll be the Cyrillic alphabet ($0.50 to Microsoft anytime any mathmaticial uses a variable, or a fraternity is named, not to mention circles).
Any language, natural or otherwise, is a code, in which meaning is derived from words (spelled properly) arranged meaningfully with other words and punctuation. Unless both sender and receiver decode the message using the same rules and syntax, information will be garbled, if not dangerously corrupted. If the rest of the world thinks '"' means "inch", and Spinal Tap think '"' mean "foot", well...
We all know this. We're all grammar nazis. The ones that aren't write bad code, bad specs, bad documentation, bad support e-mails, bad comments, and bad posts to slashdot.
That said, as an olive branch to those who argue otherwise, I will not bother proofreading this post.
erm, whoops, shoulda spent that week sober, too. Got Titan mixed up with Triton. Nevermind. I'm such a spaz.
And to think I thought I was wasting that week spent playing with Celestia!
Air-to-Surface missle designations started with 'k'. (AS-4 Kitchen, AS-7 Kerry, AS-10 Karen). Air-to-air missiles start with 'a'. (AA-2 Atoll, AA-7 Apex, AA-10 Alamo, AA-11 Archer).
They're just code-names, back when code names were actually _code_ and didn't give away everything about the named item. I mean, "Operation Market Garden" - classic. What could that be about? No idea, the enemy is oblivious. Now, "Operation Iraqi Freedom" - hmmm, what could the plan be there....
Although, in all fairness, it's only cold during the winter, the summers are glorious. Curling is just like bowling except (gasp) a team sport and more moving. There are even special shoes! And, like everyone else, most of the French speaking people are wonderful and intelligent people. And a lot of them speak English. Often better than most Anglophones speak French.
You forgot "Insane Taxation" from your cons. Small price to pay, IMHO.
Coders in banks need to learn about interest and amortization, coders in nuclear facilities need to learn about half-lives and gamma rays, coders for phone companies need to learn about telephony, coders for mom and pop stores need to know about mom's left-hand arthritus (so avoid F1-F8).
Not only is it relevant or valuable for coders to understand the context of the business they are in, it's vital. In fact, code-sense should take backseat to business-sense (although informed by coder-logic). Too often a tech solution will be shoehorned in when a practical solution based on knowing the business will do.
One time I stopped a restaurant manager from uprooting and reconfiguring all of his networked terminals and printers the day before a national holdiay in favour of a solution involving no more than a sideways abacus sitting on the bar. It wasn't a technology problem, it was an information problem. For that day, and that day only, blender drinks were being made at the beer tub, not at the bar. Problem was, orders for blender drinks were printed out at the bar, not the beer tub. The plan was to rejig all the printers and terminals so that the beer tub would have a printer, and then to reconfigure the POS software to route blender drinks to the beer tub. This sounded like a lot of hassle for one day, and knowing the 'stability' of the POS system, it was a recipe for disaster. The beer tub was in clear view of the bar. All the person there needed to know was how many of 3-4 different blender drinks to make. My solution was this: get a colourful child's abacus and mount it horizontally, so the beads slide from left-to-right. Each row represents a different drink (yellow=pina colada, red=strawberry daiquiri, etc). When an order comes up in the bar, the bartender slides the appropriate bead(s) over. The person at the beer tent can see this, and make the drinks. The server collects the drinks and slides the bead back. At any time, the person in the beer tub knows how many of what kind of drinks to make, and nothing had to be rewired or reconfigured or coded. And it worked like a charm.
Of course, over the years I've come up with a lot of elegant solutions to a lot of wrong problems, but never regretted it once. Usually, a good solution to the wrong problem is about 70% of the solution to the right problem, and even if it's not it invariably ends up being the crucual 30% of some yet unforseen problem. Software's cool that way.
One problem that comes of being a competent and experienced coder is that managers assume you know everything and assume that they don't have to know anything, rendering them (more) useless.
The question I always ask myself before starting any coding is: "Is this going to let the user go home early? Or work late?"
How about a "DOS from scratch" project? That ought to drive Microsoft NUTS!
In my experience (which is, certainly bitter) the outright fabricators tend to have issues with, well, truth. Never a straight answer - always in the grey area. Since most of IT is based on literal binary truth (1 or 0, true or false, that's it - fuzzy logic cleverness aside). These are pretty incompatible viewpoints, which make understanding and trust pretty difficuly.
A true example:
Me:Yeah, the database is all set up, but we can't really get any good metrics until all the data is in.
An Outright Fabricator:Can't we just throw in some fake data?
M:Well, not, becase then we'd have no way of telling the good data apart from the made-up stuff, and all the information we get from the system will be completely meaningless!
OF:No, no. Something's always better than nothing
This went on for about 10 minutes before we 'agreed to disagree'. Or, he had a nic-fit. Or I stabbed him. Something like that.
The point is, don't work for someone you don't trust. That's the number one thing.
Number two: Make damn sure his/her spouse is uglier than yours - in the long run, you'll understand.
But seriously, number two would probably be communication skills - is this the kind of person whom you 'just don't get', or do you immediately understand what they're talking about? Your professional relationship will mostly consist of this person passing information along to you (and vice versa) - the easier the flow of ideas and information between you, the better.
It also don't hurt to have a friend throw a fake hand grenade through the window of the interview room. I'll work for the person who jumps on it for me.
Identifying a pattern is the crucial first step in breaking out of it - ask an addict. This kind of thing, if used properly, could go a long way in giving people the perspective they need to see through all the bullshit.
And if nothing else, the science columns'll be good for a laugh.
Don't forget, buried in the second last page of the City section:
"Bin Laden Determined To Attack United States"
I often find it hard to write code with all the distractions of an office - productivity coding evenings and weekends is, comparatively, astronomical. Not all people are creative or attentive as office hours may require. Sure, with kids, home will be full of distractions too, but the good kind. (Good meaning better to spend time w/ kids than to show your boss how to print for the 2314th time, etc).
VNC, Timbuktu, Large Flash Memory, etc. are all deeply useful for the whole 'pick up and go work somewhere else' for a bit. I've been coding for decades, but am just getting into Linux, and playing with bootable distributions like Knoppix just blows my mind with the potential for making the location of your ass completely meaningless. Chair in the office = armchar = rocking chair next to crib = park bench = beach and so on.
The trick to convincing your employer to let you work from home is quite simple: ... and later good debuggers... ... and later good coders....
1. Wait for a trivial feature request on a Friday. (In the real world, this shouldn't take too long)
2. Upon hearing the request, go white, wobble in your chair, get up, get dizzy and have to sit down again, and then go on a stammering rant about how complicated it is, how it'll break the entire software model, how you'll have to invent something nobody's ever been able to do before, and how many MONTHS it'll take to even get a prototype done. Say, "I'll go home tonight, and have a crack at it, and maybe I'll have something by Tuesday if I take Monday off...."
3. Enjoy your weekend, with a spot of coding during the brief rainy patch or whatever, get the job done.
4. "Work from home Monday" - actually work from home, though, don't skive off. Actually spend time on a frivolous but _shiny_ side-feature, while sitting by the phone so you can take emergency calls, just in case.
5. Show up on Tuesday, with the original "impossible" feature done AND a new shiny thing, raving about how much work you were able to get done working from 6pm Friday to 4am Tuesday at HOME.
6. Repeat as necessary until they get the hint.
7. Have babies.
8. When the ask what you're doing doing, tell them, and when they ask to help, let them. Little innocent eyes make good testers...
9.
10
11 ???
12 Profit
I know it's not particularly marketable, but I've always thought Pascal was an excellent learning language. Pointers, structures, dynamic memory allocation... and simpler syntax than C. In my experience, most people learning programming via VB get bogged down in UI tweaking, and the C/C++ learners get bogged down in the &*&! syntax. Java leaners tend to get confused with OO when they haven't yet been exposed to variable scope, and functional decomposition, etc. Again, in my experience. Pascal is simple enough to get started quickly, but rich enough to let the learner grow into the advanced concepts. It's a gateway language - it makes learning C/++/#,Java, etc. much less intimidating. Although, for "Holy Crap, I made something!" value, VB's prety good. In no time at all you can make something that looks "just like a real windows application" (with all the inherent reliability ) I guess it all comes down to how much you want to spend on 'fundamentals' and how much you want to spend on, well, let's be honest, 'fun and cool stuff'. Ultimately, for some, it comes down to not choosing the right language, but the right project - start something simple and then keep pushing and pushing it. Maybe start with some HTML, move onto JavaScript (where you can get into parameter passing, functions, syntax, and control structures) and from there maybe into database or media stuff, depending on what would be fun to do next.
Does "Undercover Brother" count? A movie, not TV, but based on animated web shorts nonetheless.