2,509 reputation
412
bio website
location United States
age
visits member for 2 years, 11 months
seen Sep 12 at 20:27

Developed Project Management software from 1977 to 2002 at a series of companies known most recently as Artemis International Solutions Corporation but over time as K&H Computer Systems, Metier, and Artemis Management Systems (and a few other names). Then wrote a project management system on my own.

Lately, I work mostly in Java. My latest passion is multi-threading. I was fascinated by the idea in the mid-80's, and recently I have had time to look hard at it.

I am currently taking pieces of unsold systems and and placing them for sale (free for personal use) at Binpress. I have a computer war game for LAN's available at ralphchapin.wordpress.com.


Aug
12
answered Sort an array in a specific order - not ascending/descending
Jul
26
answered How do you create documentation when there is none?
Jul
19
comment Object Oriented Design
I think Animal should inherit from Food. If something tries to eat a Lion, just throw an InvalidOperationException.
Jul
19
comment Polymorphism versus authorization
@benoitr: See my addition. I was just going to add a comment, but it didn't quite fit.
Jul
19
revised Polymorphism versus authorization
Added everything after "Extension".
Jul
19
answered Polymorphism versus authorization
Jul
5
answered Question about Java nested classes design decision
Jul
5
comment Synchronization in the given Code
@JNL: Correct. Joachim Sauer says it best. I do wonder if there isn't a misunderstanding somewhere. People sometimes confuse objects and threads. They may have been trying to talk about two threads accessing the same object. (Indeed, without synchronization, as I've explained, the two threads might see completely different objects--or at least different sets of data. Rather hard to say.
Jul
5
comment Synchronization in the given Code
@JNL: No. If thread B changes the value of num and getNum() isn't synchronized, thread A might not see the change when it calls getNum. To put it crudely, leaving a synch block forces changes out of registers and caches and into main memory. Entering a synch block forces the thread to refresh all its caches and registers. Leave out either step and one thread's changes may not be be seen by the other thread. Personal experience suggests there's a rather variable delay (nothing to hours) between B making a change and the change being seen by A.
Jul
5
answered Synchronization in the given Code
Jun
28
answered At what size of data does it become beneficial to move from SQL to NoSQL?
May
17
comment Re-architecting a classic inheritance design
If the child classes don't fall into related groups and subgroups then no, this doesn't work at all. I've found that with most real problems they usually do. When they don't, there's usually something wrong with the basic design--though a programmer often can do nothing about that. So yeah, a lot of times this won't work. But it's far and away the best solution if you can make it work.
May
17
answered Re-architecting a classic inheritance design
Jan
24
comment I've been told that Exceptions should only be used in exceptional cases. How do I know if my case is exceptional?
Here's a related answer.
Jan
9
awarded  Yearling
Jan
3
awarded  Cleanup
Jan
3
revised Why is the use of abstractions (such as LINQ) so taboo?
rolled back to a previous revision
Jan
3
revised Why is the use of abstractions (such as LINQ) so taboo?
rolled back to a previous revision
Nov
30
comment OOD: All classes at bottom of hierarchy contain the same field
@DocBrown: Undoubtedly. That's just where I'd start from if it was my problem. If you can figure out why you wouldn't do that, you're halfway to knowing what you should do.
Nov
30
answered OOD: All classes at bottom of hierarchy contain the same field