Aspect questions?

N

Novice

Just about all I use these days are C and Java plus a few scripting
languages (awk, PHP, bash shell scripting and Perl if you insist). In
another life I wrote much more COBOL than was good for me, so could
probably get up to speed fast with that too. There are a raft of
others I used for single projects (PL/1) or that were specific to
particular hardware (TAL, PL/9, filetab, RPG III and various
assemblers).

I'm not sure its useful to know a lot of languages: idioms often don't
transfer don't at all well and if you're not careful you can end up
writing the nasty sort of code best summarized as "a Real Programmer
can write FORTRAN in any language".

I'm inclined to agree with you, Martin. I feel good about knowing at
least one language that is very widely known and used, Java. And I can
always fall back on COBOL in a pinch ;-) Some of the others, even if I
refreshed myself on them, would be of no use anywhere. I don't imagine
CSP is used anywhere any more. Or whatever 4GL Online Express was part
of. ;-)

I wonder if any employers consider it a mitigating factor if you know
several languages if you are applying to them and Java is not their shop
language (or one of them)? Or do they just drop you from consideration
immediately and not even consider training you in their language? My
impression is that employers all expect you to have a long list of
qualifications and certifications in _exactly_ what they want. And they
don't seem to want to have to spend any money training anyone for
anything.

I was talking to a friend who does volunteer work at a hospital and she
was furious. She said even getting a job as a porter in a hospital -
basically someone who pushes carts around and can apparently be fully
trained in 20 minutes - requires a community college diploma with 8
required credits before they can get that diploma. She spoke of
"credentialism run amuck". What next: a university degree in Chemical
Engineering to be able to make coffee at Starbucks?....
 
L

Lew

I meant where specifically. You didn't show me where. You talked a lot about
how you'd go about finding where, but you didn't actually follow your own advice.
I need to understand what you've said a bit better before I try the pop
quiz ;-)

It makes perfect sense to me to figure out what a program needs to do
before you worry about how it gets done. You've got to design a house - how
many bedrooms, how many bathrooms, what style of house (ranch or bungalow
or apartment building), etc. etc. - before you choose the exact fixtures.

But when you talked about designing interfaces, I assumed you meant NEW interfaces.

No. I wasn't talking about designing interfaces. I was talking about writing a
program.
Your examples seem to be about selecting which of the existing
interfaces - which kind of lists - you wanted. But those kinds already

Yes. There's a reason for that. It's because I was talking about selecting
which existing interfaces you want to use.
exist so you're really just choosing them, not inventing new ones to do new

Right. Precisely. Just so.
things. It would be helpful to me if you also talked about new interfaces
and how those come about at design time.

Give me an example of some unit of functionality you'd like to design, in
broad terms, and I'll do just that.
By the way, I completely see your point in the examples. I have already
benefited from the same by using Collections. I use more Sets than Lists

Why do you use more sets than lists?
and I will often start with a HashSet but if I start using it and find it
doesn't have things in the order I wanted, it's a trivial thing to change
it to another ordering by choosing a TreeSet or LinkedHashSet. That is
REALLY convenient.

Now that I think about it, I suppose I know enough to tackle the pop quiz
after all.

I have the feeling that I'm supposed to answer with something like "the
API" or maybe based on something you said in one of your posts. Well, I'm

"You're supposed to answer"? What _is_ the answer? "The API" or "something you
said" isn't an answer. That's like saying, "Where in the city will I find the
post office" and you say, "There's a map somewhere". I am still left unable to
mail a letter.
going to "over-answer" the question and say this:

Sorry, that's actually under-answering.
I know that the API or the various Java Tutorials (like the one on
Collections) often gives clues about performance and tells you explicitly,

What clues? Where? Show me. I asked a specific question about specific classes.
for example, that a HashSet normally performs best and a TreeSet worst with
a LinkedHashSet typically performing almost as well as a HashSet. So that's
obviously a good place to start.

"normally"? "performs"? "best"?

You described some useful strategies, but let's see what happens when you
apply them to 'ArrayList<E>' and 'LinkedList<E>'.

And since you brought them up, the three 'Set' implementations you mention.

The questions above are to stimulate thought. The questions that follow are
for you to answer here.

Without asking anyone else, but by research (which you should cite):

What are the performance differences (if any! - question every assumption in a
question) between:
- 'ArrayList<E>' and 'LinkedList<E>'?
- 'HashSet<E>', 'TreeSet<E>' and 'LinkedHashSet<E>'?

What are the differences between:
- 'List<E>' and 'Set<E>'?

For your claim that "HashSet normally performs best", define:
- "normally"
- "performs"
- "best"

Since you get to define these terms, there might not be exactly a right
answer. Instead, justify your definitions to whatever extent you feel they
need it. Be careful - justifications like "the standard definition" do require
citation of which standard.

Have fun.
 
L

Lew

I'm sure that it's useful to know several languages.
I'm inclined to agree with you, Martin. I feel good about knowing at
least one language that is very widely known and used, Java. And I can

Not enough.
always fall back on COBOL in a pinch ;-) Some of the others, even if I
refreshed myself on them, would be of no use anywhere. I don't imagine
CSP is used anywhere any more. Or whatever 4GL Online Express was part
of. ;-)

I learned SNOBOL once, at university. No practical use to it whatsoever. I
learned Prolog for the Hell of it. Never made a dime from it. Studied a whole
book on natural language processing with Prolog. Never got f**k-all for that
professionally. Learned enough LISP to know that its fanboys are drug addicts.
No one's ever offered to make that investment pay off, not directly.

Did I waste my time?

Could it be that learning multiple languages, and how the hardware works, and
how to freaking build an application such that it actually runs for someone
for a change, and all those other foundational,
below-the-surface-part-of-the-iceberg skills have indeed made me the
supergenius amazing developer that I am? Could there be some gestalt effect
that polyglot programming skills elicit?

Inquiring minds want to know.
I wonder if any employers consider it a mitigating factor if you know
several languages if you are applying to them and Java is not their shop
language (or one of them)? Or do they just drop you from consideration
immediately and not even consider training you in their language? My

I've been hired again and again and again for languages that I didn't know
until I started the job.

How long does it take to learn a computer language? It took me about a week to
learn Java. Less for Python, assuming you can say that I've learned it just
because I can write effective programs in it. (I haven't, actually.) They gave
me three class sessions in college to learn Pascal; I never showed up for the
third session. Didn't need to. C I just picked up on the job because it looked
interesting.

Basically every language I've used professionally I learned on the job, and
every language I've learned outside of work I have not been paid to use.
impression is that employers all expect you to have a long list of
qualifications and certifications in _exactly_ what they want. And they
don't seem to want to have to spend any money training anyone for
anything.

That's why my resume shows qualifications in every skill.
I was talking to a friend who does volunteer work at a hospital and she
was furious. She said even getting a job as a porter in a hospital -
basically someone who pushes carts around and can apparently be fully
trained in 20 minutes - requires a community college diploma with 8
required credits before they can get that diploma. She spoke of
"credentialism run amuck". What next: a university degree in Chemical
Engineering to be able to make coffee at Starbucks?....

Why would that be bad?

America is a woefully under-educated nation. People who complain about having
to learn are idiots. What's worse, they're idiots on purpose.

Hospitals are places where people put their lives in your hands. I hope to
heck everyone in a hospital is educated. I don't care if you are swabbing
toilets. It minimizes the chances that they will steal drugs, or do something
stupid to hurt the sick people. Your friend is a schmuck. "Credentials run
amuck [sic]" is the excuse of a lazy person. If they don't want to put in the
effort to get qualified for a good job, they can just go back to asking,
"Would you like fries with that?"
 
M

Martin Gregorie

I'm sure that it's useful to know several languages.
Its indirectly useful: keeps your mind flexible and maintains its ability
to learn.

I think its useful to have experience that covers the range from totally
unstructured languages (assembler, BASIC) through the middle ground
(COBOL, Fortran) to block structured ones (Algol, Pascal, C and curly
bracket languages)) and OO, if only because it makes learning a new
language easier.

Knowing a few scripted languages is also useful, though more in the *NIX
world, where you really need to know shell scripting, plus the basics of
awk and/or Perl. Familiarity with PHP and (maybe) Python is also useful.
I admit my prejudices show here: I really don't much like Perl or Python.

OTOH I do like 4GLs and report generators despite their often limiting
and (often) BASIC-like syntax because you can write useful programs so
fast and in so few lines.
Did I waste my time?
No. See above.
Could it be that learning multiple languages, and how the hardware
works, and how to freaking build an application such that it actually
runs for someone for a change, and all those other foundational,
A basic understanding of hardware and, by extension, a non-superficial
knowledge of at least one OS can be very helpful for trouble shooting.

Related to this, if you use databases you need a fairly deep
understanding of SQL - deep enough to understand how the DBMS, the schema
and SQL queries interact and how to use this knowledge to sort out
performance problems for the DBMS(es) you use. All too many relational
database 'designers' and the programmers working for them haven't the
faintest clue about why a particular query has terrible performance with
the DBMS they're using and probably know nothing about using its
performance analysis tools or why a poorly designed schema's performance
can be OK with test data but crash through the floor when faced with
production data volumes.
I've been hired again and again and again for languages that I didn't
know until I started the job.
I've lost count of the projects I've done on that basis and the essential
skills for the project that I've picked up on the job.
 
N

Novice

Lew said:
I'm sure that it's useful to know several languages.


Not enough.

If you're saying that I don't know Java well enough to actually say I
"know" it, you're absolutely right. Which is why I come here and keep
slogging away at it. I only meant that I know Java better than C or C++.
Or SNOBOL, which I've never even seen.

If you mean that I should know more languages, I agree. I'd love to know
lots of languages. And I mean know them well, not just be able to do a
couple of routine things with them. But there's only so much time in the
day so I don't know as much as I'd like to know.
I learned SNOBOL once, at university. No practical use to it
whatsoever. I learned Prolog for the Hell of it. Never made a dime
from it. Studied a whole book on natural language processing with
Prolog. Never got f**k-all for that professionally. Learned enough
LISP to know that its fanboys are drug addicts. No one's ever offered
to make that investment pay off, not directly.

Did I waste my time?
No, I wouldn't say that.
Could it be that learning multiple languages, and how the hardware
works, and how to freaking build an application such that it actually
runs for someone for a change, and all those other foundational,
below-the-surface-part-of-the-iceberg skills have indeed made me the
supergenius amazing developer that I am? Could there be some gestalt
effect that polyglot programming skills elicit?

Inquiring minds want to know.

I'm sure you're right! The languages you've never made money from surely
taught you things that helped you learn other languages and acquire other
skills. I wasn't denigrating other languages or the effort made to learn
them, just musing that putting those languages on a resume probably
doesn't help get jobs. At least it's my suspicion that it doesn't help
get jobs in today's world. But maybe that's just me being pessimistic.
Maybe employers still actually give you huge credit for having known
languages that are odead or virutally dead and see it as proof that you
can and will learn new things. I really hope that such people still
exist.
I've been hired again and again and again for languages that I didn't
know until I started the job.

How long does it take to learn a computer language? It took me about a
week to learn Java. Less for Python, assuming you can say that I've
learned it just because I can write effective programs in it. (I
haven't, actually.) They gave me three class sessions in college to
learn Pascal; I never showed up for the third session. Didn't need to.
C I just picked up on the job because it looked interesting.

Basically every language I've used professionally I learned on the
job, and every language I've learned outside of work I have not been
paid to use.
Wow! I am truly impressed by that. How did you sell employers on that? I
really want to know.

I'm picturing a shop whose main language is, say, C++ (which you haven't
mentioned so I assume you don't know it.) The ad calls for serious C++
skills. You send a resume which doesn't claims no knowledge of C++ at
all. How do you even get an interview let alone persuade them that you
can be productive in that language in short order?
That's why my resume shows qualifications in every skill.
When you say that it shows qualifications, do you mean that it simply
lists technologies that you have used or do you have specific industry-
recognized certifications in each of the technologies? For instance, one
person might list programming skills like so:

Languages Known: COBOL, Fortran, LISP, C++

Another might say:

Languages: Java (Advanced Programmer Certification), C (Intermediate
Programmer Certification), etc. etc.

Why would that be bad?

America is a woefully under-educated nation. People who complain about
having to learn are idiots. What's worse, they're idiots on purpose.
I have nothing whatever against people getting educations and feel like
you do about people who complain that they have to learn things. That's
not the issue. I'm talking about requiring ridiculous qualifications for
something. A child can make coffee without having to graduate the third
grade, let alone get a university degree. A person can push a cart from A
to B without needing a college diploma. Making them get qualifications
that are far in excess of what you need to actually do the job is my
complaint.
Hospitals are places where people put their lives in your hands. I
hope to heck everyone in a hospital is educated.

Sure. But within reason. I don't want my doctor to have walked in off the
street that morning and be trying surgery by lunchtime. But the guy that
pushes the portable X-ray machine into my room doesn't need an
engineering degree.
I don't care if you
are swabbing toilets. It minimizes the chances that they will steal
drugs, or do something stupid to hurt the sick people.

Stealing is something that even educated people do. And even educated
people can do stupid things that hurt people. But those quibbles aside,
sure, we'd all prefer the people who care for us in hospital to be smart
and caring rather than stupid and contemptuous. But that is more of a
character thing than an education thing. Doctors with their advanced
degrees sometimes have horrible bedside manners while the less educated
nurse or orderly can be far more compassionate. Now, I'm still going to
want the doctor doing my surgery, not the orderly, but I'm not going to
demand that even the orderly be fully qualified to do surgery before he
can empty my bedpan or push my gurney.
Your friend is
a schmuck. "Credentials run amuck [sic]" is the excuse of a lazy
person. If they don't want to put in the effort to get qualified for a
good job, they can just go back to asking, "Would you like fries with
that?"
I think you have imagined my friend to be uneducated herself. In fact,
she has a PhD in Philosophy. She's not against education, she's been
getting educated her whole life. We (she and I) are just exasperated by
the idea of qualifications that are far in excess of those needed to do a
job properly.
 
N

Novice

Its indirectly useful: keeps your mind flexible and maintains its
ability to learn.

I think its useful to have experience that covers the range from
totally unstructured languages (assembler, BASIC) through the middle
ground (COBOL, Fortran) to block structured ones (Algol, Pascal, C and
curly bracket languages)) and OO, if only because it makes learning a
new language easier.

Knowing a few scripted languages is also useful, though more in the
*NIX world, where you really need to know shell scripting, plus the
basics of awk and/or Perl. Familiarity with PHP and (maybe) Python is
also useful. I admit my prejudices show here: I really don't much like
Perl or Python.

OTOH I do like 4GLs and report generators despite their often limiting
and (often) BASIC-like syntax because you can write useful programs so
fast and in so few lines.

No. See above.

A basic understanding of hardware and, by extension, a non-superficial
knowledge of at least one OS can be very helpful for trouble shooting.

Related to this, if you use databases you need a fairly deep
understanding of SQL - deep enough to understand how the DBMS, the
schema and SQL queries interact and how to use this knowledge to sort
out performance problems for the DBMS(es) you use. All too many
relational database 'designers' and the programmers working for them
haven't the faintest clue about why a particular query has terrible
performance with the DBMS they're using and probably know nothing
about using its performance analysis tools or why a poorly designed
schema's performance can be OK with test data but crash through the
floor when faced with production data volumes.

I've lost count of the projects I've done on that basis and the
essential skills for the project that I've picked up on the job.
Another guy whose been hired for jobs where he didn't have the core
skill! How did YOU manage that, Martin? I've already asked Lew....
 
N

Novice

[snip]
Since you get to define these terms, there might not be exactly a
right answer. Instead, justify your definitions to whatever extent you
feel they need it. Be careful - justifications like "the standard
definition" do require citation of which standard.

Have fun.


I read this a few hours ago but it will take time to formulate an answer so
I'll try to get back to it tomorrow.

Sorry for the delay.

I've been trying to get a better understanding of error handling today, as
well as doing some non-programming stuff. I see more questions in the near
future ;-)
 
A

Arved Sandstrom

Novice wrote:
[ SNIP ]
I don't recommend trying to learn C++ quickly, nor claiming expertise in
it if you don't know it.

Yep. I know where you guys are coming from when you say that you can get
a job (_have_ gotten jobs) to do something that you haven't ever done
yet. That's actually quite common, and in some situations the "Something
You Have Never Done Yet" happens to be a programming language.

Sometimes (often) you get hired to produce a result, and it's implicit
in the deal that you'll get 'er done however you get 'er done, without
too much nitpicking about exactly what it is that you know and don't
know, at what levels of skill, at that exact moment of time. The
employer gets it that you're a competent, experienced developer, you've
done this before, and you can learn quickly. The employer also gets it
that you know *When You Cannot Do It*.

Part of knowing "when you cannot do it" is, for example, if the job
requires C++, you don't have barely any C++, and the work needs to get
done in 2 months. A responsible developer will disclose that nobody but
nobody can come up to speed with C++ - not safely they can't - in 2
months, and also get a real job done.

AHS
 
N

Novice

Lew said:
I sell the skills I do have and learn new ones after I get there,
mostly. Or I have enough of a basic understanding of the language
without real expertise that I can get through an interview. Or I sell
my ability to pick up the language instantaneously, and give specific
cases where I've done just that.

The weirdest was a pictorial programming language from Macromedia to
create computer-directed learning applications. It was a friend's
project, comprising just him and one programmer. He called me on a
Thursday to help with a Monday deadline. I'd never programmed in
pictures before.

I think it's a matter of having the skill and baldly claiming it, but
to tell the truth I don't really know how I pull it off. I think
people feel the confidence and don't question it too closely. I know
my capabilities and people seem to believe me.


Wow, those assumptions!

Really?

I haven't mentioned violin playing, either. Doesn't mean I don't know
how to play at least a little.

I neglected to bring up that I play chess. Badly, but I play.

I'm a really good horseback rider, though I haven't done it in a
while..
I didn't mean to overlook any skills or make any unflattering
assumptions, Lew. I just used C++ because I wanted my example to be of
something quite substantive that you couldn't learn well in a few days
(or at least that most people couldn't learn well in a few days - you
seemed to have learned Java in a remarkably short time!) I simply chose
C++ because it is complex and you hadn't mentioned it as being one of
your skills. It doesn't remotely surprise me that you know it and
possibly very well. It seems quite likely that you learned Java so
quickly because you had previous exposure to C++ or something like it.
That would give you exposure to much of the syntax and all of the OO
concepts and give you a massive head start with Java.
I don't recommend trying to learn C++ quickly, nor claiming expertise
in it if you don't know it.
Absolutely! I was astounded that you had learned Java that quickly but as
I just said above, that probably happened because you had a similar
language, very likely C++, so that you didn't have all that much to learn
when you got to Java.
No, I mean that as a joke. No one has every skill.
Of course not. Sorry, I misunderstood your intent. I thought you were
talking about how you described the skills you do have.
I don't have any certifications.
I'm even more impressed. So many ads seem to want to see certifications.
You've managed to get jobs without having the main shop language or any
certifications! I wouldn't even apply to jobs like that on the assumption
that my resume would be immediately disqualified....

I would LOVE to find out how you manage to get considered despite what
seem like insurmountable obstacles to me....
 
N

Novice

Novice wrote:
[ SNIP ]
I don't recommend trying to learn C++ quickly, nor claiming expertise in
it if you don't know it.

Yep. I know where you guys are coming from when you say that you can get
a job (_have_ gotten jobs) to do something that you haven't ever done
yet. That's actually quite common, and in some situations the "Something
You Have Never Done Yet" happens to be a programming language.

Sometimes (often) you get hired to produce a result, and it's implicit
in the deal that you'll get 'er done however you get 'er done, without
too much nitpicking about exactly what it is that you know and don't
know, at what levels of skill, at that exact moment of time. The
employer gets it that you're a competent, experienced developer, you've
done this before, and you can learn quickly. The employer also gets it
that you know *When You Cannot Do It*.

Part of knowing "when you cannot do it" is, for example, if the job
requires C++, you don't have barely any C++, and the work needs to get
done in 2 months. A responsible developer will disclose that nobody but
nobody can come up to speed with C++ - not safely they can't - in 2
months, and also get a real job done.
I would certainly hope so! Mind you, it's a bit frightening that it would
even be necessary to tell an employer that. You'd hope they would know
that already!

Some of the time, a skill you already have is "close enough" to the skill
they need that the learning curve is obviously going to be negligible.
For example, if they require that you are fluent in Excel and you've
never seen it but are a very proficient with Lotus 1-2-3, there shouldn't
be any problem. I have yet to see a spreadsheet program that wasn't
roughly 90% the same as every other spreadsheet I've ever used.

But I'd be inclined to be rather dubious if I was hiring for a Java
project and someone came along saying they'd never even looked at Java
but they were fluent in C++ and Smalltalk so they think they can do my
project. If the deadlines were still some time away and the project was
not too demanding, I might be persuaded that the applicant might still be
acceptable, especially if he knew my business. But I might still be
inclined to choose someone with more knowledge of Java and assume he
could learn the business side over someone with no Java and extensive
business knowledge.
 
L

Lew

Novice said:
I didn't mean to overlook any skills or make any unflattering
assumptions, Lew. I just used C++ because I wanted my example to be of
something quite substantive that you couldn't learn well in a few days
(or at least that most people couldn't learn well in a few days - you
seemed to have learned Java in a remarkably short time!) I simply chose

I learned Java in a week because I'd spent time reading about it for a year first.

But I didn't consider that I had learned it because I hadn't used it, couldn't
figure out how packages related to directories, and had some other troubles.

I learned the language itself enough to program with it in about a week in
early 1999. That employer knew of my weakness in the language. I told him I
needed a week and he gave me a chance to prove it.

I wasn't adept in Java until at least 2000, not really until 2001. During that
time I went to Java Users' Group (JUG) meetings, heck, a friend of mine and I
ran a JUG for almost two years, training Java programmers. (I got trained
there, too.) I read constantly, then and now, various Java articles and still
go back and re-read the tutorials from time to time. Then and now, I wrote
sample applications, sometimes relatively complex, to learn new techniques
like JPA and JSF.

Often I'd learn something like JPA using Apache OpenJPA, then shortly
thereafter get a job where they used Hibernate, but pre-JPA. So I didn't have
the specific buzzword ("Hibernate", and not JPA at that). But I had
substantial experience in ORMs (Object-Relational Mapping frameworks), SQL,
and JDBC, with study knowledge of JPA. It was enough; in fact it made me
better at Hibernate than the rest of my team combined, and they had experience
with it.

Beware of claims like "I learned Java in a week". It's taking me a lot of
years to become an overnight success.
C++ because it is complex and you hadn't mentioned it as being one of
your skills. It doesn't remotely surprise me that you know it and
possibly very well. It seems quite likely that you learned Java so
quickly because you had previous exposure to C++ or something like it.
That would give you exposure to much of the syntax and all of the OO
concepts and give you a massive head start with Java.

Absolutely! I was astounded that you had learned Java that quickly but as
I just said above, that probably happened because you had a similar
language, very likely C++, so that you didn't have all that much to learn
when you got to Java.

You know, "learned" is such an imprecise term.
Of course not. Sorry, I misunderstood your intent. I thought you were
talking about how you described the skills you do have.

I describe them with five pages of small-print, densely-formatted resume
comprising very brief synopses that mostly just list the technologies from
each project with a curt overview of what I did with them.

I learned COBOL in college, swearing then not to become known as a programmer
in it. It's actually not a bad language, I now think. I programmed
professionally in FORTRAN (and Fortran) for several years after I graduated,
before teaching myself C. (On the job, with my manager's blessing. But then, I
was already an employee there.) I learned C++ on my own well enough to
convince someone to hire me for it, then got better at it on the job.

I've studied LISP but never used it. I don't claim to know the language.

I used Python on my most recent project. I was successful at programming with
it, but I have yet to learn it. Nevertheless, it's listed as a skill, since I
can program with it, after all.
I'm even more impressed. So many ads seem to want to see certifications.
You've managed to get jobs without having the main shop language or any
certifications! I wouldn't even apply to jobs like that on the assumption
that my resume would be immediately disqualified....

I would LOVE to find out how you manage to get considered despite what
seem like insurmountable obstacles to me....

I sell the strengths I do have, acknowledge the weaknesses openly but not
obsequiously, and lay out a specific strategy and rationale why those
weaknesses don't matter much but the strengths do.

And I totally believe in myself.

Also, I spent a year living on straight commission once.
 
A

Arne Vajhøj

It's not very different from the standard one. I've just tweaked it a
little bit. Here it is with the comments stripped out:

============================================================
handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler

.level=INFO

java.util.logging.FileHandler.pattern = %h/java%u.log
java.util.logging.FileHandler.limit = 50000
java.util.logging.FileHandler.count = 1
java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.ConsoleHandler.level = INFO
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
I'm running Windows XP so I know that %h is C:\Documents and Settings
\Novice. There are five log files there, java0.log through java4.log, but
none of them contain the days of the week or any log record that contain
today's date. So those logs are not getting written to that path.

If you delete those files - do they show up again?

Arne
 
A

Arne Vajhøj

@news.sunsite.dk:

[snip]

I forgot to answer this part of your post in my other reply.
That is general question not specific to logging or AOP.
You're absolutely right. This is a bit of a sidetrack. I think I need to
be sure I've structured my packages correctly in order to do a good job
with this.
You need a good structure of your classes and source code.
Agreed. I'm trying to figure out the best approach.
A key factor in the decision between com.novice.common and
com.novice.common.xxxx must be the number of classes.

Do you have so many classes that it makes sense to split up?
I'm not sure what "so many" means in this case ;-)

I actually split my Common project the other day into two parts. I left
only the code that I consider polished and (more or less) correct in
Common and moved all the stuff that is still crude and needs improving to
a new project called Common Candidate. The latter is far bigger!

But Common itself contains 9 classes in package com.novice.common, 8
classes in package com.novice.common.lookups, 3 classes in
com.novice.common.menus, 2 classes in com.novice.common.prefs, and 18
classes in com.novice.common.utilities.

The resource bundles for each package are in separate packages that have
Resources as the last qualifier, e.g.
com.novice.common.utilities.Resources. I have the impression, perhaps
mistaken, that resource bundles are supposed to be in different packages
than the classes they support.I don't remember where I got that; I think
it was a newsgroup post a few years ago but it could have been in one of
the online magazines....

I have no idea if this is a reasonable approach. Maybe this should all be
simplified so that all of those common classes and enums and resource
bundles are in one package together. Or just two, one for classes and
enums and the other for resource bundles.

Everything in the Common project is something I use regularly in various
projects or that I expect to use regularly.

The Commons Candidate project has quite a bit more code than the Common
project and is organized the same way with the same package names (and
maybe an additional package or two where none of the members are ready
for the Common project.) Some of the members of that project don't belong
there because they are just snippets that I've downloaded for learning
purposes or simple sandbox code where I'm trying something out. It needs
to be moved elsewhere but that's not a priority for me right now. But the
bulk of it has the potential to go to the Common project as something I'd
use regularly.

I'd like to start the process of doing things correctly with my current
project and Common so anything you can tell me about organizing things
would be appreciated.

No alarm bells ringing here.

Arne
 
A

Arved Sandstrom

Novice wrote:
[ SNIP ]
skills. You send a resume which doesn't claims no knowledge of C++ at
all. How do you even get an interview let alone persuade them that you
can be productive in that language in short order?

I don't recommend trying to learn C++ quickly, nor claiming expertise in
it if you don't know it.

Yep. I know where you guys are coming from when you say that you can get
a job (_have_ gotten jobs) to do something that you haven't ever done
yet. That's actually quite common, and in some situations the "Something
You Have Never Done Yet" happens to be a programming language.

Sometimes (often) you get hired to produce a result, and it's implicit
in the deal that you'll get 'er done however you get 'er done, without
too much nitpicking about exactly what it is that you know and don't
know, at what levels of skill, at that exact moment of time. The
employer gets it that you're a competent, experienced developer, you've
done this before, and you can learn quickly. The employer also gets it
that you know *When You Cannot Do It*.

Part of knowing "when you cannot do it" is, for example, if the job
requires C++, you don't have barely any C++, and the work needs to get
done in 2 months. A responsible developer will disclose that nobody but
nobody can come up to speed with C++ - not safely they can't - in 2
months, and also get a real job done.
I would certainly hope so! Mind you, it's a bit frightening that it would
even be necessary to tell an employer that. You'd hope they would know
that already!

Some of the time, a skill you already have is "close enough" to the skill
they need that the learning curve is obviously going to be negligible.
For example, if they require that you are fluent in Excel and you've
never seen it but are a very proficient with Lotus 1-2-3, there shouldn't
be any problem. I have yet to see a spreadsheet program that wasn't
roughly 90% the same as every other spreadsheet I've ever used.

That's actually the key point, for this comparison and for every other:
are you being hired for the 90% or for the 10%? I don't think I can
emphasize this enough. This is really where experience comes into the
picture, when it comes to being able to tease out what the employer
really needs.

Sometimes that 10% is the 10% because it's the inevitable different bits
of a different implementation. If you're talking Java EE, for example,
the 90% might be general Java EE APIs, and the 10% is differences
between various app servers. If you're hiring a guy to be a general Java
EE app programmer, you're hiring him for the 90%: you're not going to
bust his chops because he grew up on Websphere and doesn't know from
Tomcat or WebLogic.

But if you're hiring a guy to deal with a project that involves
technologies that are tied to app server details, the potential employee
had best know that this is so. It's *our* (read professional software
developers) responsibility to know those details. It could well be that
that ostensibly "pure" Java EE project actually requires specific app
server knowledge, in which case the 10% now became important.

You also need to know enough to understand whether the learning curve
actually is negligible or not. To use a Java example, you can't go
around saying that JMS is just another API that you haven't picked up
yet, but because generally you are quite proficient at Java then JMS is
no big deal. In fact the proficient use of JMS is a big deal, it's not
trivial, and you need to understand your prospective employer's needs
well enough to (1) get that he really wants thorough proficiency with
JMS and (2) you either currently have it or you don't.

It boils down to knowing a bit about a lot. No successful developer,
IMO, knows a lot about a little.
But I'd be inclined to be rather dubious if I was hiring for a Java
project and someone came along saying they'd never even looked at Java
but they were fluent in C++ and Smalltalk so they think they can do my
project. If the deadlines were still some time away and the project was
not too demanding, I might be persuaded that the applicant might still be
acceptable, especially if he knew my business. But I might still be
inclined to choose someone with more knowledge of Java and assume he
could learn the business side over someone with no Java and extensive
business knowledge.
Who wouldn't? All other things being equal (general experience, say) I'd
pick the guy who knew C++ template meta-programming over the guy who
knew C++ but only basic template use, for a template meta-programming
project.

Good example about the Java and C++ and Smalltalk. They just ain't the
same. I've used all three. There's just not enough in common to assume
that someone who's great at C++ is going to be good at Java, or someone
who is great at Java is going to cut it with Smalltalk. I'm thinking
more and more that developers don't pick up new languages readily
because they know a similar one, but rather because (1) they are good
developers and (2) they have trained themselves to learn new languages.
There are only a few exceptions to this, and that's at a relatively
superficial level of expertise and when the languages are quite similar
(C# and Java, say).

AHS
 
A

Arne Vajhøj

Then I'm definitely bundling things incorrectly. The classes in my
package are not typically closely related.

For utility style classes the relationship is more that they
share characteristics of being utility style classes.

Arne
 
A

Arne Vajhøj

I'm torn on that. I could certainly resplit them but I really don't see
much relationship between most of them. I do have a small handful that
are really just String manipulation that could go together. But most of
the rest are standalone.

I also have a few classes that are basically used to create panels in
GUIs. For instance, I have several class that will create a small panel
containing a single field (text field, text area, spinner, checkbox or
whatnot) with an optional label, but they're all independent of one
another. It's entirely possible just to use one on a given GUI without
ever having one of the others. Those don't feel related to me beyond the
fact that they are JPanels so I'm not inclined to lump them together.

whatever
whatever.stringutils
whatever.guiutils

may work fine.

Arne
 
A

Arne Vajhøj

Just about all I use these days are C and Java plus a few scripting
languages (awk, PHP, bash shell scripting and Perl if you insist). In
another life I wrote much more COBOL than was good for me, so could
probably get up to speed fast with that too. There are a raft of others I
used for single projects (PL/1) or that were specific to particular
hardware (TAL, PL/9, filetab, RPG III and various assemblers).

I'm not sure its useful to know a lot of languages: idioms often don't
transfer don't at all well and if you're not careful you can end up
writing the nasty sort of code best summarized as "a Real Programmer can
write FORTRAN in any language".

If one has the intellectual integrity to not do that, then
I do think learning many languages broaden ones horizon and
can result in better code.

Arne
 
A

Arne Vajhøj

I learned SNOBOL once, at university. No practical use to it whatsoever.
I learned Prolog for the Hell of it. Never made a dime from it. Studied
a whole book on natural language processing with Prolog. Never got
f**k-all for that professionally. Learned enough LISP to know that its
fanboys are drug addicts. No one's ever offered to make that investment
pay off, not directly.

Did I waste my time?

Could it be that learning multiple languages, and how the hardware
works, and how to freaking build an application such that it actually
runs for someone for a change, and all those other foundational,
below-the-surface-part-of-the-iceberg skills have indeed made me the
supergenius amazing developer that I am? Could there be some gestalt
effect that polyglot programming skills elicit?

Inquiring minds want to know.

Du you know the programming language MODEST?

:)
I've been hired again and again and again for languages that I didn't
know until I started the job.

How long does it take to learn a computer language? It took me about a
week to learn Java. Less for Python, assuming you can say that I've
learned it just because I can write effective programs in it. (I
haven't, actually.) They gave me three class sessions in college to
learn Pascal; I never showed up for the third session. Didn't need to. C
I just picked up on the job because it looked interesting.

http://norvig.com/21-days.html

Arne
 
A

Arne Vajhøj

That's exactly the kind of generalization I was looking for elsewhere in
the thread.

Note that typical varies - it has been pointed out that in
some cases multiple log files per app can make sense.

But starting with one should work for some time.
Now that I've found my own log files and worked with them a bit, this all
makes sense. The log config file is becoming my new best friend. Your
comment is very helpful here because I was still inclined to assume that
I should have a single logging.properties file for my entire system. But
it follows from what you've said that I should have a different
logging.properties for each app.

Correct.

Arne
 
L

Lew

Du you know the programming language MODEST?

:)


http://norvig.com/21-days.html

Excellent article. As I mentioned obliquely elsewhere, my (immodest?) claims
were based on my own personal sense of when I've learned a language. Also on
the understanding that learning doesn't end.

I programmed that project successfully in 1999 where I had a week to actually
learn Java, as opposed to a year of just looking at it. I continued to learn
Java throughout that project, that year, and ever since. I don't count my
knowledge as complete, perfect or really, even sufficient yet. At least, not
sufficient to let up on the learning.

A mentor taught me years ago to devote at least an additional 20% of time
above mandated work to study of the craft. "If you aren't advancing your
skills that aggressively," he told me, "you're falling behind."
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top