> Removing math from the computer > science curriculum is akin to removing > the seatbelts from one's car. > The car may still appear to work, > but deep down, it's inherently flawed.
Er... how's that again? A car without a seatbelt is inherently flawed?
cougaar.org
origin = alp-5.ul.isotic.org
mail addr = alpine-sysadmin.bbn.com
serial = 2002020441
refresh = 14400 (4H)
retry = 3600 (1H)
expire = 604800 (1W)
minimum ttl = 86400 (1D) cougaar.org nameserver = alp-5.alp.isotic.org cougaar.org nameserver = alp-61.alp.isotic.org cougaar.org preference = 10, mail exchanger = www.cougaar.org cougaar.org internet address = 4.22.165.3 alp-5.alp.isotic.org internet address = 4.22.165.5 alp-61.alp.isotic.org internet address = 4.22.165.3 >
MX records and all, yay!
For a while - about a month ago - our DNS records were out of our control since our ISP had set themselves up as the master and our DNS server as the slave - doh! At least that's been fixed now.
I had a problem last weekend with CougaarForge - for some reason the parent domain got redirected to a placeholder page. After a bunch of phone calls they switched it back, but it was most definitely hosed up for most of the weekend...
Ah, right you are, should have added a link. It's a measure of how complicated a piece of code is - you (more or less) just count the loops and if statements and such.
> I also think that its a good idea > to do a preliminary design
Yup, the XP list is full of threads about that topic.
> Figure out what modules there will be
I hear you... I guess I just have trouble seeing what I'll need. Or I think I need a lot, and so I code it, and then I realize I didn't need it after. And variations on those themes.
> I think it's an exciting time to be in the field.
> But the underlying structure will always > be the definition and manipulation of > objects and relationships in > N-Dimensional topology.
Hmmm.... I feel that statement is almost too abstract. Let's substitute another noun in there: "auto mechanics involves the definition and manipulation of objects and relationships in N-Dimensional topology". Yup, it still works.
I guess I'm just not sure if looking at something at such an abstract level really buys you very much. I mean, I can draw a UML diagram of Linux that has one big box labelled "kernel", but that doesn't convey any information...
> any sufficiently small component of a program, > its purely a fabrication operation. This is the > whole essence of unit testing.
I disagree:-).
I feel that it only appears to be fabricatible (is that a word) after it's done. Then one can look at the code and the tests and say "ah, well, of course, that's how it should work". But when one is actually coding it, one makes decisions that affect the overall program. That sounds like design to me.
> fewer engineers and more implementers.
I think when this happens the engineers rapidly get out of touch, and the implementer flair along helplessly, cranking out tons of lousy code that's bug-ridden and unmaintainable. Those studies about some programmers being 10x more productive than others... I think they're right on.
> I was just chiming in against the > hacker-artist romance.
Fair enough. I think I'm in "no up front design" mode today for some reason:-)
Right, and you want to evolve that design rather than trying to figure it out up front. Don't be afraid to learn more as you get more familiar with a problem.
> proper project which has a 20+ year life span, > has a couple of hundred people involved > and needs coherancy.
> a different group of people than the coding > (fabrication)
Compilation, not coding, is the equivalent fabrication. It's easy, brainless, and repeatable - that's why we let the compiler do it.
But coding is a whole different story. It's not fabrication - it's design/architecting/coding/testing. Forget any one of those components when you're writing code and problems start happening.
> many companies doing their architecture in > UML and then sending it overseas for > actual implementation.
So we put together a heap of sequence diagrams, throw it to some folks overseas, and get 100K lines of code several months later. Hm.
Over on GForge we're starting to "interoperate" a fair bit - we've got a Java SOAP client up and running (screenshot) and it's been quite helpful in cleaning up some of the PHP code. Fun stuff!
Another point on this - as soon as someone changes one line of code, you have to reaudit the whole thing. Because that one line of code may change a global variable that is read by anything else, anywhere.
Software audits are no replacement for a comprehensive suite of unit tests.
> Removing math from the computer
> science curriculum is akin to removing
> the seatbelts from one's car.
> The car may still appear to work,
> but deep down, it's inherently flawed.
Er... how's that again? A car without a seatbelt is inherently flawed?
tom
"I mentioned it once, but I think I got away with it!"
"You started it!"
"We did not!"
"Yes you did, you invaded Poland!"
Classic stuff.
Here's some sample code munged from one of Bruce Eckel's excellent tomes:
No sweat, huh?
Yours,
tom
Right... there are a bunch of ways to circumvent the "private" modifier, one of which is JNI.
Tom
Or you can do the same thing using JNI. You can even change the values of final fields using JNI.
As a previous poster stated, this isn't a security hole - it's an OOP convention.
Yours,
Tom
I got yer PNGs right here.
Oh, er, mainstream. Well... it's the GForge SOAP client.... and GForge is used in some pretty big sites. So that kind of counts.
Anyhow.
Yours,
tom
Hey, that's an awesome post, dude! Thanks much!
Nonetheless... fortunately, the alp-5.ul.isotic.org DNS server seems to have things under control:
> nslookup -type=ANY cougaar.org 4.22.165.5
Server: alp-5.ul.isotic.org
Address: 4.22.165.5
cougaar.org
origin = alp-5.ul.isotic.org
mail addr = alpine-sysadmin.bbn.com
serial = 2002020441
refresh = 14400 (4H)
retry = 3600 (1H)
expire = 604800 (1W)
minimum ttl = 86400 (1D)
cougaar.org nameserver = alp-5.alp.isotic.org
cougaar.org nameserver = alp-61.alp.isotic.org
cougaar.org preference = 10, mail exchanger = www.cougaar.org
cougaar.org internet address = 4.22.165.3
alp-5.alp.isotic.org internet address = 4.22.165.5
alp-61.alp.isotic.org internet address = 4.22.165.3
>
MX records and all, yay!
For a while - about a month ago - our DNS records were out of our control since our ISP had set themselves up as the master and our DNS server as the slave - doh! At least that's been fixed now.
Thanks,
Tom
I had a problem last weekend with CougaarForge - for some reason the parent domain got redirected to a placeholder page. After a bunch of phone calls they switched it back, but it was most definitely hosed up for most of the weekend...
Yours,
Tom
=========
[tom@cougaarforge tom]$ telnet www.itu.int 80
Trying 156.106.192.163...
Connected to www.itu.int.
Escape character is '^]'.
get / http / 1.0
HTTP/1.1 400 Bad Request
Date: Sat, 17 May 2003 20:25:29 GMT
Server: Apache/1.3.26 (Unix) mod_jk/1.2.1 PHP/4.0.6
Connection: close
Content-Type: text/html; charset=iso-8859-1
400 Bad Request
Bad Request
Your browser sent a request that this server could not understand.
The request line contained invalid characters following the protocol string.
Apache/1.3.26 Server at www.itu.int Port 80
Connection closed by foreign host.
[tom@cougaarforge tom]$
=========
They're running Apache and mod_php... can't be too bad
Yours,
tom
PMD - http://pmd.sf.net/ - has a rule to check it.
Yours,
tom
Ah, right you are, should have added a link. It's a measure of how complicated a piece of code is - you (more or less) just count the loops and if statements and such.
Yours,
tom
> I also think that its a good idea
> to do a preliminary design
Yup, the XP list is full of threads about that topic.
> Figure out what modules there will be
I hear you... I guess I just have trouble seeing what I'll need. Or I think I need a lot, and so I code it, and then I realize I didn't need it after. And variations on those themes.
> I think it's an exciting time to be in the field.
Well said indeed, good discussion all around!
Yours,
Tom
> But the underlying structure will always
> be the definition and manipulation of
> objects and relationships in
> N-Dimensional topology.
Hmmm.... I feel that statement is almost too abstract. Let's substitute another noun in there: "auto mechanics involves the definition and manipulation of objects and relationships in N-Dimensional topology". Yup, it still works.
I guess I'm just not sure if looking at something at such an abstract level really buys you very much. I mean, I can draw a UML diagram of Linux that has one big box labelled "kernel", but that doesn't convey any information...
Yours,
Tom
> I disagree.
:-).
:-)
Fair enough.
> any sufficiently small component of a program,
> its purely a fabrication operation. This is the > whole essence of unit testing.
I disagree
I feel that it only appears to be fabricatible (is that a word) after it's done. Then one can look at the code and the tests and say "ah, well, of course, that's how it should work". But when one is actually coding it, one makes decisions that affect the overall program. That sounds like design to me.
> fewer engineers and more implementers.
I think when this happens the engineers rapidly get out of touch, and the implementer flair along helplessly, cranking out tons of lousy code that's bug-ridden and unmaintainable. Those studies about some programmers being 10x more productive than others... I think they're right on.
> I was just chiming in against the
> hacker-artist romance.
Fair enough. I think I'm in "no up front design" mode today for some reason
Yours,
tom
> 1 MLOG+ programs you want a design for
Right, and you want to evolve that design rather than trying to figure it out up front. Don't be afraid to learn more as you get more familiar with a problem.
> proper project which has a 20+ year life span,
> has a couple of hundred people involved
> and needs coherancy.
Like Linux? Or Apache HTTPD?
Yours,
Tom
> A few engineer came up with that argument
> that they were producing art, that a
> software couldn't / shouldn't judge them.
There's nothing artistic about writing code that has a high cyclomatic complexity. That's just bad code.
Yours,
tom
> a different group of people than the coding
> (fabrication)
Compilation, not coding, is the equivalent fabrication. It's easy, brainless, and repeatable - that's why we let the compiler do it.
But coding is a whole different story. It's not fabrication - it's design/architecting/coding/testing. Forget any one of those components when you're writing code and problems start happening.
> many companies doing their architecture in
> UML and then sending it overseas for
> actual implementation.
So we put together a heap of sequence diagrams, throw it to some folks overseas, and get 100K lines of code several months later. Hm.
Yours,
Tom
Yup, thanks to the good folks at OSSI for the heads up on that article...
Tom
PeopleSoft is on its way - a pretty significant addition to the Linux world, I think...
Yours,
tom
Over on GForge we're starting to "interoperate" a fair bit - we've got a Java SOAP client up and running (screenshot) and it's been quite helpful in cleaning up some of the PHP code. Fun stuff!
Yours,
Tom
....using Maven's xdocs, you can generate both HTML and PDF docs from the same XML source file.
We use this on GForge and it works pretty well....
Tom
> move that 50% to testing
Better yet, fire that 50% and then have your programmers write unit tests. Nothing like code to test code.
Tom
Right on.
Another point on this - as soon as someone changes one line of code, you have to reaudit the whole thing. Because that one line of code may change a global variable that is read by anything else, anywhere.
Software audits are no replacement for a comprehensive suite of unit tests.
Yours,
tom
DARPA is funding plenty of open source development - like PMD. Props to DARPA for the help!
Yours,
tom
Well met, indeed!
As a response, I can only offer a choice quote from the INTERCAL manual:
----
Every C-INTERCAL runtime also accepts certain options at runtime. These include [+/-]help, [+/-]traditional, and [+/-]wimpmode.
----
Outstanding!
Tom