Nice bit on "learn something from every job"
on
The Age of the Essay
·
· Score: 1
And the difference in the way fathers and mothers bought ice cream for their kids: the fathers like benevolent kings bestowing largesse, the mothers harried, giving in to pressure. So, yes, there does seem to be some material even in fast food.
Sort of a "let down your bucket where you are" philosphy - try to find something interesting in whatever you're doing. Just because your job title is "CVS administrator" doesn't mean you can't put together an hourly build. Good times.
"still feels like a continuation"...
on
The Age of the Essay
·
· Score: 4, Funny
I've got "politics" selected as one not to put on "my homepage", I'm logged in, and yet here this story is.
Anyone else seeing this?
Re:One of the unfortunate things about Apache...
on
Hardening Apache
·
· Score: 2, Insightful
> boy, would you ever learn it from > the ground up
Right on. And you'd know what all the funky error messages look like, too, which is nice...
Re:One of the unfortunate things about Apache...
on
Hardening Apache
·
· Score: 4, Insightful
> a gimpy, crapped-up config file
Hm. I find smaller configuration files to have both a lower gimp quotient and a reduced crapification level.
> they are self-documenting.
True, although there's a ton of stuff in there most folks won't use - content negotiation and such-like.
> they're the same on all of your servers
Hm. Most of my servers have different config files - different vhost names, different modules, etc. Perhaps if they were all fronting one application that might be different...
Re:One of the unfortunate things about Apache...
on
Hardening Apache
·
· Score: 5, Informative
> In the end it's all about knowing your product,
In "Apache: The Definitive Guide", Ben and Peter Laurie suggest a way to learn how to build an Apache config file - start with a blank file, and start Apache. Oops, it won't start. OK, so what's it missing? Check the log files. It needs a User directive - OK, add that. Try to start. Hm, it started, but where do I put my HTML? Ah, add a DocumentRoot. And so forth.
This really doesn't take as long as it sounds - and after about 10 minutes of adding directives and restarting Apache, you'll have a lean configuration file that has just what you need in it - and you'll know how you got there, where the error logs are, and so on.
FWIW, I think some projects blur the lines a bit - for example, a BitTorrent client is an end-user project, but it can be developed incrementally and it can be handy the help system administrators and developers to reduce bandwidth usage.
Hm. Maybe that super-anal person could fill the missing test cases for all those edge conditions. Then his analness will be preserved for posterity, because everyone can run those test cases to catch possible bugs in future code changes.
Thanks.... it's kind of tricky, because using a wrapper library for complex queries - i.e., a 3 way join - looks more obfuscated than just embedding the SQL in the Java code. I mean, it's either 20 lines of "new WhereClause()" or one line of SQL. I dunno. I'm not sure where the balancing point is.
> Fact 41: Maintenance typically consumes > 40 to 80 percent (average, 60 percent) > of software costs. Therefore, it is probably > the most important life cycle phase of software.
Hm. This is a tricky one. Does maintenance take that big a chunk because of the way we write v1.0? Maybe we can improve our initial code to make subsequent changes easier. And build in a safety net of units tests to make those changes less painful.
A lot of maintenance may be a good sign - it may mean that the program is being evolved and improved and is actually useful to someone. Dead programs and cancelled projects don't get maintained, but that's not a point in their favor.
> Fact 37: Rigorous inspections [code reviews] > can remove up to 90% of errors before the > first test case is run. [But are so mentally > and emotionally exhausting that we > rarely do them.]
I think some of these terms mean different things to different people. When he says "test case", he means (I think) a tester clicking around a UI and adding a new employee or whatever. But "test case" can also mean a unit test, i.e.:
Employee e = new Employee("Fred"); assertEquals(e.getName(), "Fred", "Name not set correctly on instantiation");
The latter meaning of unit test provides a way to do "rigorous inspections" over and over - because a computer is doing the work. Good times.
...this one by Mike Cohn of Mountain Goat Software.
Mike's review is from the "agile software" point of view, so he comments favorably on (among others) Fact 22 - "Eighty percent of software work is intellectual. A fair amount of it is creative. Little of it is clerical".
...BitTorrent is a boon for open source projects with large files. PostgreSQL, for example, publishes torrents of their releases and the the "PG Live" ISOs. On a much smaller scale, we've put up a torrent for the Ruby windows installer on RubyForge - it's only 11 MB, but even a small file like that is worth torrenting.
PLUG: Here's the beginnings of a Ruby BT library. Just parses the metainfo file for now, but it's a start...
...more on that here.
...can't beat that LISP humor!
Thanks, OK, so the "section" is Politics but the "topic" is The Internet. Hm.
Too bad there doesn't seem to be a way to exclude junx in the politics "section". Ah well.
I've got "politics" selected as one not to put on "my homepage", I'm logged in, and yet here this story is.
Anyone else seeing this?
> boy, would you ever learn it from
> the ground up
Right on. And you'd know what all the funky error messages look like, too, which is nice...
> a gimpy, crapped-up config file
Hm. I find smaller configuration files to have both a lower gimp quotient and a reduced crapification level.
> they are self-documenting.
True, although there's a ton of stuff in there most folks won't use - content negotiation and such-like.
> they're the same on all of your servers
Hm. Most of my servers have different config files - different vhost names, different modules, etc. Perhaps if they were all fronting one application that might be different...
> In the end it's all about knowing your product,
In "Apache: The Definitive Guide", Ben and Peter Laurie suggest a way to learn how to build an Apache config file - start with a blank file, and start Apache. Oops, it won't start. OK, so what's it missing? Check the log files. It needs a User directive - OK, add that. Try to start. Hm, it started, but where do I put my HTML? Ah, add a DocumentRoot. And so forth.
This really doesn't take as long as it sounds - and after about 10 minutes of adding directives and restarting Apache, you'll have a lean configuration file that has just what you need in it - and you'll know how you got there, where the error logs are, and so on.
> It makes the least sense for end user projects
Very nicely put.
FWIW, I think some projects blur the lines a bit - for example, a BitTorrent client is an end-user project, but it can be developed incrementally and it can be handy the help system administrators and developers to reduce bandwidth usage.
> eek/#ruby-lang.
Cool, catch ya there!
Yours,
Tom
...is right here.
It uses Java to talk to the serial port... seems like a good application for ruby-serial, too...
...I've integrated it into our hourly build; it's handy info.
> all programming is development
> and all maintenance is clerical.
Well said!
> [Criteria, Torque]
Cool, thanks for the pointer, I'll have to give that a whirl the next time this issue arises....
> a super-anal type who nitpicks over everything
Hm. Maybe that super-anal person could fill the missing test cases for all those edge conditions. Then his analness will be preserved for posterity, because everyone can run those test cases to catch possible bugs in future code changes.
> Click click click click
Carpal tunnel waiting to happen, argh.
> The SQL wrapper
Thanks.... it's kind of tricky, because using a wrapper library for complex queries - i.e., a 3 way join - looks more obfuscated than just embedding the SQL in the Java code. I mean, it's either 20 lines of "new WhereClause()" or one line of SQL. I dunno. I'm not sure where the balancing point is.
> code reviews (especially of the
> latest patches,
I agree, it is handy for all the diffs to come thru a mailing list for a sanity check, at least.
> if (condition = immediate)
Right.... although this is exactly the sort of thing I would hope a unit test would catch.
> The code reviewer has no such preconceptions
> and will (might) see it immediately.
Very true; a fresh pair of eyes and all that sort of thing.
> You CANNOT do unit testing. Think of the
> poor QA's who rely on our incompetence
You're right! I retract my post. Let the clicking continue unabated!
> a senior developer going line by line over
> all of the code, this will both be time
> consuming and anger the senior developer
So true. What a nightmare. That company will be minus one senior developer pretty soon.
> Fact 41: Maintenance typically consumes
> 40 to 80 percent (average, 60 percent)
> of software costs. Therefore, it is probably
> the most important life cycle phase of software.
Hm. This is a tricky one. Does maintenance take that big a chunk because of the way we write v1.0? Maybe we can improve our initial code to make subsequent changes easier. And build in a safety net of units tests to make those changes less painful.
A lot of maintenance may be a good sign - it may mean that the program is being evolved and improved and is actually useful to someone. Dead programs and cancelled projects don't get maintained, but that's not a point in their favor.
> can remove up to 90% of errors before the
> first test case is run. [But are so mentally
> and emotionally exhausting that we
> rarely do them.]
I think some of these terms mean different things to different people. When he says "test case", he means (I think) a tester clicking around a UI and adding a new employee or whatever. But "test case" can also mean a unit test, i.e.:The latter meaning of unit test provides a way to do "rigorous inspections" over and over - because a computer is doing the work. Good times.
...this one by Mike Cohn of Mountain Goat Software.
Mike's review is from the "agile software" point of view, so he comments favorably on (among others) Fact 22 - "Eighty percent of software work is intellectual. A fair amount of it is creative. Little of it is clerical".
...BitTorrent is a boon for open source projects with large files. PostgreSQL, for example, publishes torrents of their releases and the the "PG Live" ISOs. On a much smaller scale, we've put up a torrent for the Ruby windows installer on RubyForge - it's only 11 MB, but even a small file like that is worth torrenting.
PLUG: Here's the beginnings of a Ruby BT library. Just parses the metainfo file for now, but it's a start...
...ever downwards.
...is right here.
> The PGAdmin3 tool
PLUG: Another good tool - PQA, a SQL query analysis tool. Here's a sample report.