-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.5 (GNU/Linux)
-----END PGP PUBLIC KEY BLOCK-----
The article basically does the usual backhanded compliments and mischaracterizations that make me steamed even when I don't know the people slaving away at the project.
- Did the author download and try the software? From the article it doesn't seem so. That clearly makes the author more of an expert than if he had done so.
- Was the author able to make spurious associations about the product and where it came from? Yes. The only thing he missed was the free Google hit by saying "Los Alamos, birthplace of the nuclear bomb." By quoting various computer security problems that either happened outside of the LANL network (the email breach was done from home computers if I recall correctly) or events that were completely physical in nature, he is assured to get a free blog post to various blogs.
- Could the article be spun also negatively if its main premise was the opposite? Yes. The author could have rewritten the article as "Company tries to leave the slime of its origin behind" if Packet Analytics had not mentioned where the software was started. He makes a big deal about the connection between LANL and the startup when a good portion of the press I read yesterday was about how the software had helped FBI issues.
- Does Net/FSE do what it claims to? Who would know.. fact checking would seem to be outside of knowing what a startup really offers.
Let us propose the following principle: The irresistible beauty of programming consists in the reduction of complex formal processes to a very small set of primitive operations. Java, instead of exposing this beauty, encourages the programmer to approach problem-solving like a plumber in a hardware store: by rummaging through a multitude of drawers (i.e. packages) we will end up finding some gadget (i.e. class) that does roughly what we want. How it does it is not interesting! The result is a student who knows how to put a simple program together, but does not know how to program. A further pitfall of the early use of Java libraries and frameworks is that it is impossible for the student to develop a sense of the run-time cost of what is written because it is extremely hard to know what any method call will eventually execute. A lucid analysis of the problem is presented in .
Well that is one way to look at it, but really isn't this what computer scientists have been wanting for multiple years? I mean a good portion of the Mythical Man Month was about the fact that there wasn't a plumber's tool-kit but every programmer had to make their own. The issue is what should be seen as a time for radical rethought of what Computer Science/Engineering is and means to be in a day when the pocket watch the average student has on them contains more CPU than the IBM 360 that most older Phd's wrote their thesis on.
What is Computer Science? Is it a math heavy course where a person should be able to write a proof of every 'line of code' that is written? How does one prove a hundred million lines of code without a hundred million different people?
What is Computer Engineering? Is it the design of computer circuits? Or is it the process of using the plumbing developed by others to build larger projects than were possible 10 years ago? Is it knowing how to safely do this with a set of known tools that can be trusted to some extent?
Yes machine programming is important.. but with the trend towards virtual machines inside of real hardware.. what is more important to teach? Yes math is important, but so is pair-programming techniques and being able to interact with human beings.. where is that taught?
In many cases, I think that this is where CS/CE is going to break down into many different sub-fields that people will focus on.. and like when this happens in other sciences.. there will be all the turf wars and stupid name calling of saying the other isn't a real field (as in Biological Physics arguments with Astro Physics students... blech).
Anyway.. no idea where this post is going.. so end it now.
[The state of generational programmers has always been the case where some set of people think that everything is a "web-app", "OS", "AI program", etc.] It has been the case for pretty much every language when it gets to a certain size. Everything was Fortran or Snobol in the 1970’s. Everything was a LISP program in the 1980’s. Everything was a C program in the early 1990’s and then C++ in the late 1990’s. Now everything is either C# or Java.
Industry wants to standardize on a small set of languages… mainly because its hard to figure out how to manage people who are writing a project in Haskell, Perl, LISP, C, and Python… how do you count defect rates? which people get paid what wage? Are things being efficient enough for our budgets and deadlines? Will competitors be able to take our code and steal it? etc etc.
Industry then chooses some language for X years, and tells colleges, we want more people who know this. Colleges then gear their programs towards that as that is grant money etc.
The big issue though is how do colleges teach these courses? A good many places I have been.. you have a set of professors who have taught “how to write a Shell Sort” in whatever language is around.. and then they teach students a bunch of stuff that they aren’t going to do as efficiently as provided libraries. Or they will do catchup of how to make Java into Snobol in their heads and use whatever shortcuts (as in its all in the standard library which is what I remember in a C++ course in the 1990’s).
Very few colleges try to teach the budding engineer/scientist how to think, it is sort of expected that you know this already (Just use your common sense… was a reply I heard in the 1980’s to the question of how to solve a problem). The thing that CS courses should teach is the same as other engineering and science courses.. how to think like a computer, how to break a problem down for the computer to access it, what are the first principles of the issue? what are the tools that you can use to solve it? When do you need to try something better and when do you use existing practices? How to QA your or someone elses code? And then the final part, how to interact with the customer (more MBAish, but needed today more than 30 years ago).
These are things that I have seen over and over again lacking in people coming out of colleges with CS or CE degrees. Instead you have to spend 3-4 years breaking in people before they would be the equivalent of graduates from other sciences or engineering courses.
[Bitter old man comments free of charge and under a CC attribution required license]
There are many people you don't know until they leave.. and James P. Anderson, Jr seems to have been one of them. Reading through the memorial that Spaf wrote I came to realize that many of the books I have read through the 1980's on computer security were edited or had been worked on by Mr Anderson. (OK I am silly guy who has read the Orange book as a page turner even if I couldn't understand it all.. ).
Jim had broad interests, deep concerns, great insight and a rare willingness to operate out of the spotlight. His sense of humor and patience with those earnestly seeking knowledge were greatly admired, as were his candid responses to the clueless and self-important.
If I get half as nice a memorial as that.. I would be lucky.
- Update http://www.smoogespace.com. It has been a long time in getting an updated website and I haven't done much with it in 7 years. Time to change the engine to something else that I can pages too faster.
- Rebuild and restart http://www.jitagames.com and http://www.justintimeadventures.com. Both were meant to be RPG companies back in 2000 but never got anything done on them. Too bad for me.. time to do something or quit paying for them.
- Learn Python. Make sure that every exercise in O'Reilly's Python book is done, and convert most of my old sysadmin tools from bash to python.
- Really learn Emacs. Go through the O'Reilly books and learn enough about emacs that I can write my own extensions.
- Write a big Java game for the Google phone. Make it GPL.
- Work on getting my RHCE re-certified by end of 2008.
- Package up items for Fedora Astronomy and into EPEL (GNU radio, AIPS, etc).
- Work on the Generic Roleplaying Of Tomorrow (GROT) RPG system. Have a working SRD by August. Game rules are to be licensed under CC Attribution required and the Game Code under GPL.
- Resume taking CS courses this Summer from either UNM or New Mexico Tech.
- Bring my weight down to 190 pounds. [Hey every new years list has to have a weight goal in it.]
Xmas was ok for the kid. He got lots of goodies from the family, and got to veg out for a while... spent the first couple of days after Xmas trying to give equal time to each gift. Not enough snow though and when there was snow.. Dad wasn't able to take him sledding so I would call it even. He has 5 more days til school so I am not sure where our sanity will be at by then.
On the CS front, I didn't do too well on my project, but it is over and now its time to focus on what I will be working on this Spring. I won't have time for classes.. so I will have to work through 'Head First Design Patterns' and then the Platypus book. Have been reading a bit of Knuth and realizing that a lot of math background in proofs will be needed.
Spent some time over break talking with friends over games. One is of the D&D 3.0 is broken camp, and so it was basically a long set of emails about that. And while D&D 3.0 does have a lot of flaws (what game doesn't).. his arguments had just enough little errors that I had to keep picking at them. In the end, I of course lost because one who argues with rocks will only wear himself down. Oh well, it did give me a bunch of ideas for a new game system... will work on in my copious spare time and will release under a CC license. More on that later.
Did not have the energy to do any Android work.. so I realized I don't have the gumption to try out for the Google prize. However, I think I will still work on a nethack for it just to learn more about programming this spring.
Anyway Happy New Year, and Happy upcoming Russian Xmas.