How much should I charge for fixed-price software contract?

  • Thread starter Robert Maas, see http://tinyurl.com/uh3t
  • Start date
G

Greg Menke

Patricia Shanahan said:
The key issue for me is the round trip time to make a change in the
debug output, recompile, and run to the point of failure. If that takes
a few minutes, I have no problem using printouts.

On the other hand, I have been faced with problems in unfamiliar
programs that took several hours from starting the run to first symptoms
of the problem. Once I was at a failure point, I wanted to squeeze every
scrap of data I could.

An interactive debugger allows you to ask questions you didn't know you
wanted to ask until you saw the answer to another question. For example,
you can see which variable is incorrect at the failure point, look at
the source code to find the variables that affect it, and immediately
probe their values.

OTOH, a debugger is a kludgy way of getting you something like a REPL
environment when you reach a breakpoint or some kind of error. The fact
that the best the debuggers can do is basic arithmetic with symbols
speaks more to the limitations of the program's runtime situation than
any particular interface virtues. An IDE is helpful in that state
displays can be more complicated and remain useful- just try and set up
& maintain a bunch of watchpoints in tty gdb ha ha ha. OTOH, sometimes
its just faster to trap the segfault & probe around in a tty gdb than to
fool around with getting an IDE tweaked just so.

Its quite entertaining when debuggers start providing "advanced"
features like unwinding execution and access to frames back up the
stack. When you begin seriously learning Common Lisp it feels like you
finally get rid of the debugger training wheels.

Gregm
 
P

Phlip

Hartmann said:
working with an IDE debugger beats analysing a binary (i.e. hex or
octal) core dump

The goal is decreasing the odds you need to do either.

One way to achieve that goal is to learn debugging and add it to your tool
set.
I can't really remember when I last used a debugger. Judicious
printf statements, or the equivalent, have handled everything for
me for years.

You think too much. I don't have that problem.

Patricia Shanahan:
The key issue for me is the round trip time to make a change in the
debug output, recompile, and run to the point of failure. If that takes
a few minutes, I have no problem using printouts.

Hence debuggers that recompile their code on the fly as you change it.

These debuggers support designs that are all coupled together. (For example:
Write an ActiveX control and run it from a server-side ASP.NET page. You
must warm up an entire web server and all its pages just to debug this
control in-situ. MS coupled everything together as part of vendor-lockin.)
On the other hand, I have been faced with problems in unfamiliar
programs that took several hours from starting the run to first symptoms
of the problem. Once I was at a failure point, I wanted to squeeze every
scrap of data I could.

An interactive debugger allows you to ask questions you didn't know you
wanted to ask until you saw the answer to another question. For example,
you can see which variable is incorrect at the failure point, look at
the source code to find the variables that affect it, and immediately
probe their values.

Legacy situations suck. We achieve debugger-free development typically in
new code that's fully decoupled and fully designed for testing.

Like I told Russell Shaw, if you can think of the next line of code to type,
you must perforce be able to think of a test case that will fail if that
line is not there.

Someone invented these legacy code situations by debugging down to the place
where the next lines go, adding the lines, and evaluating them on the fly.
Or the equivalent, to within the limits of their muscle memory. This
technique tends to couple everything together.

If you force all code to come through test cases, the test cases must be
able to access their tested lines without intervening layers of cruft. So
Design By Testing is a powerful way to decouple all the modules apart.

If they have any unintended features, after characterizing them (possibly
via debugging), you can very rapidly create new test cases, re-using similar
test cases, and these can isolate the bug before you kill it.

(How many times in legacy code have we given up debugging and just poked
around, hoping to change something so the bug symptoms go away?!)
 
R

Robert Maas, see http://tinyurl.com/uh3t

From: Tim X said:
in larger organisations, the initial culling of applications is
usually done by some junior staff member from the HR department - they
know nothing about programming, computer or IT. They have a list of key
words or criteria which they look for - those that have it get to the
next stage, those that don't get filed in the round filing cabinet
under the desk!

So would you recommend the keywords be listed in logical sections, such
as programming languages in one list, platforms in another list,
application areas in another list, etc., or should I just mix all the
unrelated keywords together in one huge alphabetical list to make it
easy for the junior staff member to find the keywords he/she is looking
for?

Given my experience, which keywords from my various resumes should I
keep, which should I flush, and which keywords do I not yet have but
based on my experience I should include as synonyms for the non-keyword
descriptions I already have? To save you the trouble of looking through
my dozen resumes, here's the complete list currently:
1620
360/370
6502
68000
8080
acia
algol
altair 8800a
anti-spam
applet
archie
arpanet
assembler
awt
bachelor of science degree
balanced binary trees
bitmapped image of graph to parameterized lineaments
bitnet
blockade puzzles for 3-yr-olds or dan quayle
bnf-driven type-checking
c
c++
cai
calculus
canonical representations
card input
cgi
class-assignment
client/server telecommunications
clustering
cmucl
cobol
college graduate
combinatorics
computer-assisted instruction
console typewriter
consumerism
cross-reference
data compression
ddt
dec pdp-10
destructuring
device interfaces
diablo disks
diet optimization
differential algebra
differential polynomials
dm2500 emulator
docindex
dom
eqd
expert system
file maintenance and indexing
finger
flashcard drill
forth
fortran
four-phase iv/70
fractals
frontpanel
ftp
gcd
generalized computer dating
graph hockey
gui
hashing
heapsort
help-net
hermes
high-level languages
html
hypercard
hypertalk
i/o device interrupt handlers
ibm 1130
ibm 1620
ibm 360/370
image processing
imsss
indexing
info-nets
information retrieval and indexing
intel 8080
interval arithmetic
interval refinement stochastic mapping
inventions
its
j2ee
j2se
java
javadoc
javascript
jdbc
jsax
jsp
jsys
kermit
large prime numbers
lattice manipulation
laying out text
linux
lisp
listserv
maasinfo
machine language
macintosh
macintosh allegro common lisp
macl
maclisp
macsyma
mail
mainsail
mathematical research
mathematical-formula printer
mathematics
mathprinter
mensa
meta-index
microsoft windows
mos 6502
ms-windows
natural language understanding
net-relaxation
netnews
netscout
nmr relaxation
note
nuclear magnetic resonance relaxation
numrel
nutritional diets.
odbc
opacs
os traps
packet-based data communication
packet-based telecommunications
pacs-l
payroll
pcnet
pdp-10
perl
permutations
php
pnews
pocket forth
portable standard lisp
porting
pre-registration
prettyprinter
principal differential ideals
processing and rendering remote-sensing multi-spectral images
programmer/analyst
proofreading
proximity-hashing
pseudo-random numbers
psl
putnam contest
pvm
rdrlist
redhat linux
reduce
rlisp
rmail
rmi
rn
rsa cryptosystem
rscs
s-expressions
sail
save/restore environment
sax
segmat
servlets
sesame c
shortanswertests
single-step debugger
sl
software engineer
sokoban puzzles for 3-yr-olds or dan quayle
sort/merge
space exploration
sprouts
standard lisp
stanford
stipple
sunos
svc202 commands
swing
syntax&semantics checking
syscalls
telecommunications
telnet
tenex
terminal emulation
text compression
toolbox traps
topindex
toplevel meta-index
tops-10
uci-lisp
university payroll
university pre-registration
unix
us citizen
usenet
uuo
vb
versaterm
virus detection and removal
visual basic
visual c/c++
vm/cms
waits
wilbur
word problems
wordprob
writing & public info
www
xml
zmodem
zterm

So which of those are so grossly obsolete that there's no chance anyone
will ever want somebody with such experience, so I should permanently
delete them from my keywords list? Which new keywords did I overlook?
All of that could have been summarised as something like x years
assembler programming.

Which is better keyword for that: assembler or assembly-language?
Or should both be included in case the junior staff member is looking
for the other one and doesn't realize they mean the same thing?

(Splitting my reply here, in case anyone stopped reading at that list
of keywords and wouldn't see the rest of the topics I'm discussing
later in the second part of this reply.)
 
R

Robert Maas, see http://tinyurl.com/uh3t

You don't have any "good stuff"!

Please look in
http://members.tripod.com/~MaasInfo/SeekJob/ResApp.00C-Acc.txt
and tell me briefly why each accomplishment is not good.
I must have missed the part in your resume which outlined your
commercial experience in writing educational software. All I saw was
work at Santa Cruz and Stanford

I have no idea where you came up with Santa Cruz here.
My work at Stanford was developing innonative new software which was
then tested in several low-income high schools in East San Jose to
evaluate it for more general distribution. I don't know whether the
schools had to pay or got it for free, but I'd guess the latter.
Finding programmers with really good solid backgrounds in maths is
actually qite difficult

Anyone unable to find an unemployed math whiz must be pretty stupid.
If anyone really wanted math whizzes, I would never have been
unemployed. John McCarthy was the only person who ever offered me a job
on the basis of my math awards, and after six months of my working for
free to impress him he hired me for only a two-month temporary job, not
anything longterm or even medium-term, so it almost counts for nothing,
i.e. my math was *never* a positive factor in getting any real job.
I know of quite a lot of companies who have had a very difficult time
finding good programmers which are also talented at maths.

If you know of any with offices/branches in this part of California,
please tell me the company names, and if possible names of people in
each such company who might like to hear I'm available.
I'm now skeptical about your ability to program.

Given the very large number of applications and utilities I've written
in the past, and my continued software development (when I'm not
spending all my time responding to newsgroup messages instead), what
makes you be skeptical in that way? Do you need me to write some
software for you to prove I can still do it even now? What evidence
would it take to convince you that even though I'm currently not
employed I still can and do program?
I beleive [sic] the language is, in the main, irrelevant.

I half agree with you. See below.
What is more important is your understanding of the underlying
concepts (data structurers, algorithms, analytical skill and the
ability to apply these skills). etc).

I fully agree.
The language is just syntax and less important.

Now here is where you show your gross ignorance of the variety of
programming languages available. Some such as C are almost nothing
more than assembly language with a user-friendly syntax. Indeed they
don't provide any major facilities different from assembly language.
The only big difference is syntax.

But when you compare Lisp or Java, you see a much richer runtime
environment, which is partly reflected in the syntax, but really it's
the runtime environment that makes the difference. What is a royal pain
to program in C is trivial in Lisp and very easy in Java.

When programming in C, you're spending your time re-inventing the wheel
over and over instead of just getting on with implementing the data
structures you need and writing the algorithms to use those data
structures effectively.

For example, here's a single expression in Lisp which filters a linked
list, building a new linked-list with the successful matches:
(remove-if-not
#'(lambda (iprec) (iprec+lostr+histr-match-or-bigger iprec lostr histr))
g*ip-ranges)
Even with templates and ctors/dtors in C++ this would be a bit of work
to write, and in C it'd be a major hassle just to write the code to do
that, and you'd still have to write code elsewhere to keep track of
references or otherwise arrange when to deallocate the original and/or
filtered-copy at just the right time to avoid memory leak, whereas in
Lisp it's trivial.
Your strengths are (possibly) in your rigor and ability to abstract a
problem down to its fundamental parts (coming from a maths background),
possibly your life experiences, possibly skills you developed in what
little work you have had etc.

So how do I put such skills in my keywords list so my resume won't be
tossed in the trash can before anyone can actually read it to discover
the subtle things that I'm really good at that you cite there?

And you're grossly wrong about where I developed skills! I have 22+
years programming experience, about half paid and half unpaid, and I
develop just as much skill in the unpaid work as in the paid work, it's
just that they are different kinds of skills, which complement each
other nicely to where I have a more well-rounded understanding of
software than somebody who worked for somebody else all their lives
making money but never had any free time to work on more interesting
projects that go outside the commercial straightjacket/box.

But again, if my resume is going to be tossed in the trash unless the
junior staff member sees just the right keywords, then what keywords do
I need to include? Please tell me what to add to the keywords/phrases I
listed in the first part of this two-part reply.

Any of these I just now realized I forgot to include in the earlier
list because they weren't in any of my previous resumes from which I
was gleaning the keywords?

abstract problem
agile programming/development
inline documentation
read-eval-print debugging
rigor
tdd
test-driven development
unit testing
 
G

Greg Menke

Phlip said:
Don't use the debugger to delay the inevitable: Writing an emulator for your
CPU.

Sure... that'll help debug drivers on bizzaro hardware with
incomplete/inaccurate datasheets & interrupt/context switch routines
suffering from various race conditions. Sometimes you just have to bite
the bullet and debug right on the metal because of heisenbugs if nothing
else.

Care to guarantee that the emulator duplicates the bugs & timing
characteristics of the real thing?

Gregm
 
R

Russell Shaw

Phlip said:
The goal is decreasing the odds you need to do either.

One way to achieve that goal is to learn debugging and add it to your tool
set.


You think too much. I don't have that problem.

Patricia Shanahan:


Hence debuggers that recompile their code on the fly as you change it.

These debuggers support designs that are all coupled together. (For example:
Write an ActiveX control and run it from a server-side ASP.NET page. You
must warm up an entire web server and all its pages just to debug this
control in-situ. MS coupled everything together as part of vendor-lockin.)



Legacy situations suck. We achieve debugger-free development typically in
new code that's fully decoupled and fully designed for testing.

Like I told Russell Shaw, if you can think of the next line of code to type,
you must perforce be able to think of a test case that will fail if that
line is not there.

Someone invented these legacy code situations by debugging down to the place
where the next lines go, adding the lines, and evaluating them on the fly.
Or the equivalent, to within the limits of their muscle memory. This
technique tends to couple everything together.

If you force all code to come through test cases, the test cases must be
able to access their tested lines without intervening layers of cruft. So
Design By Testing is a powerful way to decouple all the modules apart.

If they have any unintended features, after characterizing them (possibly
via debugging), you can very rapidly create new test cases, re-using similar
test cases, and these can isolate the bug before you kill it.

(How many times in legacy code have we given up debugging and just poked
around, hoping to change something so the bug symptoms go away?!)

The tedious stuff i've done would never have been started if i'd tried to
know the exact end result so that i could work back to a lower level, and
write tests for what i wanted. It's more a case of poking in the dark, having
a rough overall idea of how the whole thing should work, and writing and
debugging a rough framework that gets more things added to it during a lot
of chopping and changing along the way. It's more like evolutionary code
that grows from a very rough and hard to define shape. That said, i also
design the overall thing in a way that is modular and easy to test. Then
you could write unit tests for the interfaces between modules. I'd never
write intra-module tests, because that would take 3-5x the resources taken
to write the original code for me. For something like a GUI program, i make
the GUI generate commands that the backend then interprets, so that it can
also be script driven and have automated test scripts.
 
R

Robert Maas, see http://tinyurl.com/uh3t

From: Tim X said:
why the mixed case in the domain name

It's easier to visually identify that various sub-words that way.
What about the year you graduated?

Only an idiot would make it that easy for a potential employer to see
that I'm over 40 and toss my resume in the trash without even glancing
at the rest of it. You want me to be an idiot, I presume?
What about the courses you have done since (Java, C, Data structures etc)

My 2005.June resume includes that information. My 1998 resume, and the
early-2003 rearrangement of it by my job coach at Focus for Work, didn't
include those classes because they didn't start until 2003 Summer.
Shorten the first one.
How?

For the published papers, where were they published, when and in what?

That's not important in a resume. I'm just trying to get a programming
job. If they want more info about my published papers, they can ask me
during a telephone interview. In fact I was never told where the NMR
paper was published, and I wasn't given a pre-print as I was promised.
Drop the stuff about the platforms.

Why? Each language is somewhat different on each different platform.
The fact I've used the languages on lots of platforms shows I've used a
wide range of versions in a wide range of environments, hence some of
what I've done is likely to be similar to whatever the employer might
want. Somebody else who has never used any of the languages except on
an Amiga, might not have the foggiest idea how to interface to system
utilities on other systems, and might not even be aware that different
platforms have different system interfaces, and might be totally
stumped when Amiga software doesn't run immediately elsewhere. I'm
trying to show my versatility of experience, showing my ability to
adapt in the past and have a variety of experience possibly useful in
the future.
Why Unix+CGI - there is no specific relationship here - you can do CGI
programming on any platform which has a web server.

Not true. The server needs to have built-in support for CGI, and that
support must be enabled by administration. However I've split the Unix
part and the CGI part, and combined Unix with Linux, in my latest edit
on the master of the 2005.June resume on my Mac.
Skip the brand names (ie. Red Hat).

Done in master 2005.June resume on Mac.
Re-work this to give a better impression

I don't know how. You'll have to help me.
what databases did you use for this

Only databases I created myself in MicroSoft ACCESS on Windows, and
only the default database in CloudScape on Linux. In both I then made
my own tables in that database, no pre-existing tables. For one
application I manually created all the tables and manually entered all
the data by copy&paste in the ACCESS GUI, and the JDBC application used
it as a read-only lookup table. In another application, creation of all
tables and loading them with all start-up data and adding new data
under user command was all done from JDBC.
I would assume anyone working with data retrieval and databases and
java would have all of this.

On the other hand, anyone who had never used databases at all could lie
and write "used databases" on their resume, but only somebody who knew
a little about the techncal details could include all the specific
things that I did, thereby proving I am not lying that I wrote JDBC
software etc.
Based on the above, I would assume you have no work experience at all,

I have more than 22 years experience writing software, including
several large useful projects. How can I best convey that in my resume
without boring the junior staff member whose job it is to screen
resumes, but without making it obvious I'm over 40 hence unemployable?
Huh? What is this? If its published and available via the web, why not
include the url so that they can check it out?

Because although it was the best index on the net from 1991 to about
1995, since then it's been made obsolete first by Yahoo then by Google.
Nobody would want to look at it online now, but still it's impressive
that I created the very first toplevel meta-index to the InterNet
before Yahoo got the idea to start theirs.
I will also challenge your claim to proficiency at rapid prototypeing
and development as there is no evidence you have devleoped anything
other than a few very minor small apps.

Rapid prototypeing and development is a methodology, which can't be
demonstrated by listing projects that allegedly used it.
And trying to describe the methodology would require a major essoy, at
least ten pages, not anything suitable to include in or with a resume.
How would you propose I prove conclusively, by wording on my resume,
that indeed I use that methodology when I write most of my software?
I noticed that they were all based on the same flawed starting point

Yes. I started with my best resume to-date, which you think is crap but
it's the best I have so-far, and cut out the parts totally irrelevant
to the particular job, and added stuff that wasn't in the general
resume starting-point but where my extra experience matched the
requirements of the job ad. Yielding the best customized resume
I could do when I had collected three or four job ads from a single
search of a job-ads site and needed to get out responses to all those
ads before they became stale. It would have been totally stupid to
spend two months writing a custom resume from scratch for each of those
simultaneously going-stale-fast ads.
Funny that if they were taylored for specific jobs how I couldn't
tell what the jobs were.

You couldn't tell that each resume deleted different items and inserted
different new items?
One of the ads, found on CraigsList:
78086540 www.fairisaac.com/Careers/Opportunities. Job Req #383.
Another was: (e-mail address removed)
Another on CraigsList: 76790333 (e-mail address removed)
Another on CraigsList: 75462527 (e-mail address removed)

See if, upon reading the actual job ad, you can match the tailored
resume with the corresponding ad.
 
R

Robert Maas, see http://tinyurl.com/uh3t

From: "David said:
I noticed your resumes don't include an indication of expertise in
the various categories you provide.

Which kinds of categories? Various programming languages? Various
platforms? Various application areas?

What indication would you like in each category? Years experience?
Specific major software I've written?
I went over to your web resume last night and tried to check out your
languages and C++. There was no info or C++ category.

I'm not sure what you mean by the "info" category.

I list C++ on my very latest (2005.June) resume because I took a
beginning C++ class this past Winter. Naturally it wouldn't be listed
on any resume prior to this year, including the most recently uploaded
resume which is the 2003 rearrangement of the 1998 resume and the 2004
MicroSoft Word formattings of that rearrangement.

The only version of the 2005.June resume, other than customized
versions I posted the other day, is the one I'm in the middle of
editing right now. There's no backup for it. Do you want to see it
mid-edit?
When looking for someone's resume I'll start with a few simple
buzzwords like language but I'd really like to see an indication of
the level you are at in them.

You're conflating two concepts here: How much general experience and
expertise I have at programming in general, and what I've done in each
of the many particular langauges I've used. In the case of Java, I have
many years of experience in Lisp that can be converted rather easily to
Java ability, but only a little work I've done specifically in Java. So
would refuse to hire me for Java programming, even though I have all
those years of experience in a pre-Java langauge almost directly
applicable to Java, and I find Java almost natural and easy to program
in that way, just because that pre-Java language wasn't exactly Java?
Obviously you also want to list references to items you would like to
use.

Your English is escaping me there. Could you please re-phrase it so I
might understand it?
Sending any of your large resume references is both overkill and an
excuse for a prospective employer to never have the need to talk to
you.

I'm in a dilemma. If I don't include all the buzzwords the junion staff
member is looking for when screening resumes, nobody who knows the
slightest thing about software will ever get a chance to see my resume.
But the list of buzzwords (posted in alphabetical order earlier this
evening) is very long, and I don't know how to avoid it seeming like
overkill without taking a chance the very word the junior staff member
absolutely needs to see might be missing. How can I guess which
keywords will be needed and which won't, so that I can include only the
former?

Also I don't know what you mean by "resume references".
 
R

Robert Maas, see http://tinyurl.com/uh3t

From: "jonathon said:
If this guy doesn't have the resources and/or ingenuity to put
together or access a decent machine, who would trust him to write
their software??

Do you have any idea how stupid and arrogant that sounds? Basically
you're saying that only people who already have lots of money to buy
the latest equipment out of their own magic funds, should ever be
allowed to work. Nobody, in your view, should ever be allowed to work
to earn the money to buy the stuff you think we should already have.

I don't currently ave financial resources because all the employers in
recent years have been more concerned with the latest buzz words than
with solid ability to design algorithms to solve problems, and
implement those algorithms in working software.

It's not possible to put together a machine without money to buy the
components, and nowadays it's stupid to buy raw components and assemble
your own machine and then write your own operating system when
already-assembled machines with an already-installed operating system
cost less. But regardless of component or pre-built system, without any
money it's impossible to obtain either.

Over the years, I've worked on a wide variety of different computers:
Some in their time were nearly state-of-art (such as a timesharing
computer with five simultaneous local users on keyboard&display devices
plus two on local TTYs and some using TTYs via dialups in 1969,
augmented with a new display system supporting about 30 additional
timesharing terminals starting about 1972. Others were whatever I could
just barely afford on my limited income, such as the homebrew MOS 6502
machine with not one but *two* serial ports which I bought for $600
because I couldn't afford an Apple I which cost $2000 at the time and
cost an extra $200 for each serial port, and a used Macintosh Performa
I bought used for $200 (plus $100 monitor) in 1998 because that's all I
could afford at the time. On all those many computers, I've done really
good programming, innovative, functionning, useful. Only a fool would
decide that because I don't have money for the most expensive system
available today that I can't be trusted to write software.

My ingenuity is in math and software, not in hustling for money.
I expect to be hired to write software, not to hustle money.
 
A

alex.gman

A while ago, I sold my old PC with 20Gb HD, 0.5 Ghz CPU and a monitor
for $30. I would have given it away for free, if asked nicely.
 
A

Andrew Thompson

On Wed, 24 Aug 2005 22:28:55 -0700, Robert Maas, see ..

Robert. Stop whining - seek counselling. Your technical
problems are minor compared to your personality problems.

It is about time you p**sed your personal problems off
this slew of groups to which you are selfishly cross-posting.

[ Follow-ups to this post set to c.l.j.programmer only ]
 
C

CBFalconer

.... snip ...

Given my experience, which keywords from my various resumes should
I keep, which should I flush, and which keywords do I not yet have
but based on my experience I should include as synonyms for the
non-keyword descriptions I already have? To save you the trouble
of looking through my dozen resumes, here's the complete list
currently:

I have deleted all those that should be ignored IMO.
68000
applet
assembler
bachelor of science degree
balanced binary trees
bnf-driven type-checking
c
c++
calculus
canonical representations
cgi
client/server telecommunications
cobol
cross-reference
data compression
device interfaces
expert system
file maintenance and indexing
forth
fortran
fractals
ftp
gui
hashing
heapsort
high-level languages
html
i/o device interrupt handlers
image processing
information retrieval and indexing
java
javadoc
javascript
linux
lisp
machine language
macintosh
mail
mathematics
microsoft windows
ms-windows
nuclear magnetic resonance relaxation
packet-based telecommunications
payroll
perl
php
prettyprinter
programmer/analyst
proofreading
redhat linux
rsa cryptosystem
software engineer
sort/merge
standard lisp
sunos
swing
telecommunications
telnet
text compression
unix
usenet
visual basic
visual c/c++

Some deleted because they are meaningless to me. I probably should
have deleted even more.
 
P

Phlip

Greg said:
Sure... that'll help debug drivers on bizzaro hardware with
incomplete/inaccurate datasheets & interrupt/context switch routines
suffering from various race conditions. Sometimes you just have to bite
the bullet and debug right on the metal because of heisenbugs if nothing
else.

Care to guarantee that the emulator duplicates the bugs & timing
characteristics of the real thing?

My admonition answers the common complaint, "I don't have time to write
tests; I'm too busy debugging".

You have time to write tests. Writing an emulator gives you a framework to
hang all your discoveries about the real things' bugs, and this in turn
frees up your schedule by automating as much low-value labor as possible.

And you find those bugs --> by debugging <--.

You describe a legacy situation - someone else invented this bizarro
hardware, and legacy situations require debugging to learn their
characteristics.

As you learn them, add tests about them to your emulator, to _approach_ a
state where a code failure causes a red flag in the tests _before_ it causes
an error situation near the hardware.

The point is not to never debug. The point is to always seek ways to replace
any necessary debugging with test cases, so the remaining debugging is
manual labor of the highest value.
 
R

Russell Shaw

Robert said:
Do you have any idea how stupid and arrogant that sounds? Basically
you're saying that only people who already have lots of money to buy
the latest equipment out of their own magic funds, should ever be
allowed to work. Nobody, in your view, should ever be allowed to work
to earn the money to buy the stuff you think we should already have.

I don't currently ave financial resources because all the employers in
recent years have been more concerned with the latest buzz words than
with solid ability to design algorithms to solve problems, and
implement those algorithms in working software.

It's not possible to put together a machine without money to buy the
components, and nowadays it's stupid to buy raw components and assemble
your own machine and then write your own operating system when
already-assembled machines with an already-installed operating system
cost less. But regardless of component or pre-built system, without any
money it's impossible to obtain either.
....

Around melbourne, the council has hard garbage pickups where everyone
dumps whitegoods on the nature strip. I've collected enough hardware
to make dozens of fully loaded pentium class PCs that work fine for web
browsing. Debian runs great on them;)
Even if you had to buy 2nd-hand components from a pc market, you can
make a web capable pentium pc for easily less than US$50.
 
P

Pascal Bourguignon

Russell Shaw said:
Around melbourne, the council has hard garbage pickups where everyone
dumps whitegoods on the nature strip. I've collected enough hardware
to make dozens of fully loaded pentium class PCs that work fine for web
browsing. Debian runs great on them;)
Even if you had to buy 2nd-hand components from a pc market, you can
make a web capable pentium pc for easily less than US$50.

And this in a remote place on a remote continent whose habitant live
in trees. So imagine how easy it should be to garbage-collect
top-notch computing hardware in the middle of the Silicon Valley!
 
R

Rob Warnock

+---------------
| Debugging is fun. Programs behave strangely. You get to perform
| experiments, make hypotheses, and gradually track down the problem. It
| is like an Ruth Rendell mystery novel.
|
| Debugging is far more entertaining than cranking out code that works
| first time. I think people are sometimes unconsciously careless just
| to gives themselves that challenge later.
|
| This may also be the root of why programmers are so reluctant to use
| any sort of tools that accelerate, automate or check programming.
+---------------

This is why Tom De Marco suggests that to make any progress on software
quality one needs to change from talking about "bugs" to talking about
"defects". "Bugs" are cute; "defects" are at best... embarrassing.


-Rob
 
T

Tim X

Only an idiot would make it that easy for a potential employer to see
that I'm over 40 and toss my resume in the trash without even glancing
at the rest of it. You want me to be an idiot, I presume?

Over 40! LOL. What year was it you started Uni - 63? Makes you a
little more than over 40! How do you think the interviewer will feel
when you come in weilding your zimmer frame!

OMG - if you cannot work that out, I'd hate to see how specific any
program specifications would need to be before your able to produce anything!

That's not important in a resume. I'm just trying to get a programming
job. If they want more info about my published papers, they can ask me
during a telephone interview. In fact I was never told where the NMR
paper was published, and I wasn't given a pre-print as I was promised.

It is important as it shows your definition of "published" doesn't
just mean stuck up on some bodgy web site. A paper which has been
refereed and published shows you have the ability to clearly
express yourself in writing. It is also a simple way to verify the
honesty of the applicant as its reasonably trivial to verify the facts.

How could you not know where something you wrote was published? All
the papers I've had published required be to do things like sign off
copyright or sign a statement that the work was mine etc etc. Surely
you had to submit the paper to a journal/publisher?

Were you the sole author of these papers - if not, you should be also
indicating you were only a co-author and not give the impression it
was just your work. Its the only explination I can think of why you
wold not know where your paper was published.

If the paper has not been published or was simply a tech report etc,
then don't mention it at all!
Why? Each language is somewhat different on each different platform.
The fact I've used the languages on lots of platforms shows I've used a
wide range of versions in a wide range of environments, hence some of
what I've done is likely to be similar to whatever the employer might
want. Somebody else who has never used any of the languages except on
an Amiga, might not have the foggiest idea how to interface to system
utilities on other systems, and might not even be aware that different
platforms have different system interfaces, and might be totally
stumped when Amiga software doesn't run immediately elsewhere. I'm
trying to show my versatility of experience, showing my ability to
adapt in the past and have a variety of experience possibly useful in
the future.

That may be relevant if you had worked recently on different
plaforms. However, your experience is so outdated its not worth
cluttering up and possibly distracting from points the employer may be
very interested in.

Not true. The server needs to have built-in support for CGI, and that
support must be enabled by administration. However I've split the Unix
part and the CGI part, and combined Unix with Linux, in my latest edit
on the master of the 2005.June resume on my Mac.

What do you mean "Not true" - There is lots of CGI stuff out there run
on nearly every platform you can think of, windows, Mac, Linux - none
of which are Unix.
I don't know how. You'll have to help me.

I don't have to do anything! This is your problem, work it out.
Only databases I created myself in MicroSoft ACCESS on Windows, and
only the default database in CloudScape on Linux. In both I then made
my own tables in that database, no pre-existing tables. For one
application I manually created all the tables and manually entered all
the data by copy&paste in the ACCESS GUI, and the JDBC application used
it as a read-only lookup table. In another application, creation of all
tables and loading them with all start-up data and adding new data
under user command was all done from JDBC.


On the other hand, anyone who had never used databases at all could lie
and write "used databases" on their resume, but only somebody who knew
a little about the techncal details could include all the specific
things that I did, thereby proving I am not lying that I wrote JDBC
software etc.

Actually, they shallow level of description you have made me think you
had next to no database experience at all. From what you have since
put above, I now see you have minimal or next to know experience - so
little, that calling it experience is pushing things a bit. Connecting
to a database using odbc/jdbc or any other bridge is trivial - you can
get the directions out of the manual and have it up and working within
a day. If you are going to sell database experience, you need to show

- Familiarity with SQL, especially the more advanced aspects, such
as nested queries, corelated queries, the transaction model
(commit/rollback), constraints, differences between DDL and DML,
outer join and outer-left join etc.

- Knowledge of the relational database model, a grasp of Cobb's
"Normal Forms" and general database design principles. A good
understanding of the differences between hierarchical, network,
relational and object relational databases is also useful.

- Familiarity with database constraints (i.e. null constraint,
check constraint, foreign key constraint and various different
indexing methods, the impact of functions and indexes etc are
all very useful.

- An understanding of differences in various ANSI SQL
implementations - for example, why might you get different
results for an outer-left join query between two different
databases with the same data which both claim to be ANSI SQL
compliant?

- Optimization. What can you do to optimize ODBC or JDBC (or
whatever) based database connectivity.

- NULLS - how should they be interpreted? When should you specify
"not null" as a constraint and when not to? is null and "" the
same?

These are the sorts of things employers expect someone with experience
working with a database will have. MS Access is barely a database in
the terms of what employers think of when talking about a
database. Database experience is "bread and butter" for most
developers and you need to understand it way beyond the ability to
connect to an access database or a stripped down "wannabe". Get
yourself an instance of postgres to learn with (don't bother with
MySQL). Learn how to use it features, how to administer it, optimize
performance and maintain it. Once you have all of that, you can claim
database experience. Until then, you can only claim minimal experience
with a database connectivity method - which is not much different from
claiming experience with ftp - both are assumed to be something anyone
applying for an entry level positin would have.
I have more than 22 years experience writing software, including
several large useful projects. How can I best convey that in my resume
without boring the junior staff member whose job it is to screen
resumes, but without making it obvious I'm over 40 hence unemployable?

Over 40 again - heee heee haaa.

Bottom line, stop referring to ove 20 years experience. You don't have
over 20 years experience - stop kidding yourself. When it comes to
jobs, the only experience that counts is paid employment
experiences. Unless you have sat programming 7-8 hours a day 5 6 days
a week for the past 20 years, you do not have 20 years experience. It
also makes you seem like a liar because your skills don't match those
of someone who has been doing it full time for 20 years.
Because although it was the best index on the net from 1991 to about
1995, since then it's been made obsolete first by Yahoo then by Google.
Nobody would want to look at it online now, but still it's impressive
that I created the very first toplevel meta-index to the InterNet
before Yahoo got the idea to start theirs.

Gee, maybe you gave them the idea!

If it was "the best" on the net during that period, then some of us
who have been here for a while should remember it - what was it
called? Just for interest, what web server was it being used with back
in 1991? Also, if it was the first, the techniques used to build the
index must have been pretty impressive - how did you do it?
Rapid prototypeing and development is a methodology, which can't be
demonstrated by listing projects that allegedly used it.
And trying to describe the methodology would require a major essoy, at
least ten pages, not anything suitable to include in or with a resume.
How would you propose I prove conclusively, by wording on my resume,
that indeed I use that methodology when I write most of my software?

Of course they are methodologies - but you cannot claim experience or
proficiency with a methodology unless you have used it in real world
situations (as opposed to contrived learning environments). Yo can
claim awareness and knowledge of such methodologies, but not
proficiency unless you have real-world experience applying the
methodology to something other than trivial problems.

Yes. I started with my best resume to-date, which you think is crap but
it's the best I have so-far, and cut out the parts totally irrelevant
to the particular job, and added stuff that wasn't in the general
resume starting-point but where my extra experience matched the
requirements of the job ad. Yielding the best customized resume
I could do when I had collected three or four job ads from a single
search of a job-ads site and needed to get out responses to all those
ads before they became stale. It would have been totally stupid to
spend two months writing a custom resume from scratch for each of those
simultaneously going-stale-fast ads.


You couldn't tell that each resume deleted different items and inserted
different new items?

For someone who keeps pulling up others on their failure to be
prercise, you seem to be able to get vague or inprecise when it suits
you. Read what I wrote again - I didn't say I couldn't tell what was
different from your resumes, I said I could not tell what job
type/class/catagory they were "customized" for. If I couldn't
determine that, its unlikely any employer would see anthing which
would get their attention.
One of the ads, found on CraigsList:
78086540 www.fairisaac.com/Careers/Opportunities. Job Req #383.
Another was: (e-mail address removed)
Another on CraigsList: 76790333 (e-mail address removed)
Another on CraigsList: 75462527 (e-mail address removed)

I don't give a shit about CraigsList and I'm not going to waste my
time holding your hand and spelling everyting out in detail and spoon
feeding you. The key point is that if the type of job was not obvious
to me reading your resumes, it is likely that any prospective employer
is not going to see what it is you have that might interest them.


I'm not going to bother responding to any more of your posts - I
realise now its totally pointless because your more intent on
justifying your current position and being defensive than on honestly
listening and considering either the validity of the criticism or if
you don't feel its valid, why people criticise it. You also seem to
have a real "victim" mentality and I cannot see you ever being able to
deal with it. I will try to put down for one last and final time some
points you may like to consider and possibly change your
perspective/outlook

1. You have been looking for work for over 10 years with no
success. Does this mean your doing something wrong or the whole
rest of the world is wrong?

2. If the whole rest of the world is wrong, why is it other people
find jobs and 10+ years of unemployment is considered excessive -
especially for someone with a University degree?

3. How many other people have you ever heard of who have spent 10+
years failing to get a job in a specific area, but have also failed
to find any other job?

4. Forget about constantly pushing "over 40". You had graduated from
uni before man walked on the moon! If I'm right and you started in
1963, and lets be generous and assume you were a bright school kid
who got through high school by 16 and started Uni at 17, that would
make you 58/59 this year. So, your nearly 60, have not worked for
10+ years, have next to know commercial programming experience with
modern/mainstream/popular languages and trying to get an entry
level position. Its not a position I would envy and I'm not trying
to make light of it, but honestly "Wake up and smell the roses" -
you are totally deluding yourself if you expect to get a
programming job - it just aint gonna happen. Its not fair, but the
world isn't fair.

To put it in a different perspective - I'm in my mid-40's and have
worked as a programmer (commercially) pretty much full time for the
past 19+ years. I was born in 1960 - three years before you entered
Uni. I've probably been a bit fortunate in being able to find jobs,
but I've also been able to find quite a few. The longest job I've
held at one place without a break is 5 years. I have been fortunate
in never having been fired and probably a third of the people I've
worked for have re-employed me at some stage to do additional work
for them. I have lived almost the whole of the last 20 years in a
rural location (a "city" of 20k people) and until about 5 years
ago, nearly all my work was done via telecommuting (apart from some
consulting where they wanted me to work on site).

The point of all of this is that I also have a lot of friends who
had difficulty getting jobs post y2k and the dot com bust. However,
they had similar work experience to me (possibly a bit more
"specialised"). These friends of mine are the ones you have been
competing with over the last 5 years (as well as young energetic
fit recent comp. sci grads). If these commercially experienced
friends of mine have had moderate difficulty in finding jobs and
competing with recent graduates, how well do you think you stack
up?

All of this is not meant to be depressing or cause despair. What I
think you need to do is a really honest and critical re-assessment
of what you want with honest and realistic reference to
reality. You are not going to get a commercial programming
job. However, you may be able to find something related which you
will find tolerable (possibly even rewarding), which will give you
the necessary finances to make life a bit easier and possibly
enable you to indulge in a more satisfying hobby of programming
where you can follow your real programming interests un-restrained
by what may or may not make you more employable as a programmer.

I'm out of this thread (and all related ones now). My apologies to the
rest of the list for this off-topic waste of bandwidth.

Tim
 
A

A.L.

It's not possible to put together a machine without money to buy the
components, and nowadays it's stupid to buy raw components and assemble
your own machine and then write your own operating system when
already-assembled machines with an already-installed operating system
cost less. But regardless of component or pre-built system, without any
money it's impossible to obtain either.

It is possible to get guite a good machine for 50 bucks. Or for
free. I sold mine for 50 bucks (working 500 MHz Gateway with 40 GB
disk and 512M memory + 17 in. Gateway monitor) glad that somebody
took it. Out household garbage collecting company doesn't take
computers and TVs, and I would have problems what to do with this. I
don't think it will be sold for more than 100 bucks... Goodwil
Industries store dodn't want to take it. It was too "low end".

There are used computer stores where you can get stuff for very
little. Run google on "used computer store".

A.L.
 
A

alex.gman

Imagine Robert Maas selling T-shirts near Fisherman's Wharf.

Customer: How much is this one?
Robert: How much what? I can not parse your English.
Customer: How much money does this T-shirt cost?
Robert: As much as you will agree to pay me for it.
Customer: OK, how much do you want for it?
Robert: As much as possible
Customer: Grrrr. What's the least amount of money you would agree to
sell it to me for?
Robert: Only an idiot would reveal this during price negotiations. Do
you think I'm an idiot?
Customer: Yes!
Robert: That's libel! I can sue you now.
 

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,772
Messages
2,569,588
Members
45,100
Latest member
MelodeeFaj
Top