I've spent the last week cursing Windows as I try to get a Solaris (Unix) Java/C program to work properly on Windows NT 4.
The program needs a 300M datafile. I ftp that over, unzip it, and run the program. The computer thrashes. There is no "renice" command to lower the priority of the backgrounded program to, say, something low enough that I could type a letter and have it appear on the screen less than a minute later.
The code was written to work on a Pentium I with around 32M RAM; I have a Pentium II with 256M. I check the system RAM. I have 60M in use, 270M being swapped to disk, and 200M of empty RAM. 24M out of the system kernel's 29M is paged out to disk. I can hear the disk drive churning continuously as it swaps, and I have 200M of free RAM.
The program crashes. I try to figure out how to tell Windows to use my RAM. I know! I reduce the size of my swap file, from 272M to 10M. I reboot Windows. I open up a couple of apps, and it refuses to open any more. I get an error message: I have run out of swap space. I have 220M of unused RAM, but Windows would rather use swap.
Postmortem shows one byte somewhere in my 300M file is garbled. I ftp it over again, unzip, and diff with previous version. Identical. Bug is in ftp or WinZip.
No problem. I can edit by hand. I make a big swap file again and reboot. I try loading the text file, and discover that Notepad and Wordpad can't open a file larger than the physical memory. I try with Word. It opens! I try searching for the bad line. The machine thrashes. I check system memory. Word has devoted 5M of RAM to my 300M file, and is swapping everything beyond that to and from disk as it searches through the file. I have 200M of empty RAM. I download Uuedit. Same problem.
I think of splitting the big file up into pieces, editing, and rejoining. On Unix this would take one command each for splitting and rejoining. Under Windows I need to write my own C programs to do it. I don't.
I go to a more powerful computer that sits empty in a neighboring office with the idea that I will run the program on it. When working with SGI boxes, I would often log in to a more powerful machine, from my desk, and then change directory to my home directory (NFS mounted) and run a CPU-sucking program. But Windows NT does not have remote login. Environment variables are hidden somewhere in the OS and in my project files, which will work only on my machine, so I can't log on to the other machine, run my.login shell script to initialize any environment variables not already on the command line, and run the program. I can't even read my email from another machine on the same network, which I don't understand, since there is filesharing. I briefly study the problem of moving everything over to this computer, changing the Windows environment settings, and decide not to do that either.
Other things I have done today: - Try to find line of source code somewhere in a project using both C and Java. With Linux this would look something like: grep "line of text" *.java *.c *.h With Windows I open the "find" program, and click and click and click and click until I find the right directory (the one I would be IN if I had a command line). There is no way to specify both C files and Java files, so I must search all files under directory, including the 300M text file. Which I know better than to try. Instead must do separate searches for *.c, *.c++, *.h. *.java files. Many many clicks. My wrist hurts.
- Look up documentation on "fopen". Under Unix: man fopen, instantaneous response. Under Windows: Pay Microsoft $1000 or so. Click on MSDev Library. Wait about 20 seconds while Windows swaps things out of RAM to avoid having to touch any of my free 200M. Do a search of fopen. Wait another 20 seconds while it does a search (why is it searching? why doesn't it have a database? I asked it to make one when I installed it!). Finally see docs for fopen.
- Tried organizing my Java files sensibly, which means putting the Java source all under one directory. But the GUI editor I am using, JBuilder, sets the default directory to be that in which the source code for your main function is. I have to move everything back because it is impossible to tell the GUI environment that I want my data in one directory and my Java source in another. This is a JBuilder problem, but it is typical of what you have to do to keep GUI tools happy. I am just lucky that JBuilder stores its project files as text; otherwise I would have had to scrap them.
- Tried to find an important email that I knew I had received within the last week. On Unix, would be: forall ~/Mail grep "ATMSDI" (forall being a shell script I wrote using find to iterate over files below a directory). On Windows: Spend half an hour clicking through my Outlook Express folders looking for it. Click through every single folder, searching by username (nice feature, I admit). Search deleted messages too. Never find it. It has vanished.
- Rebooted Windows several times because the system started acting weird and I wanted a fresh start.
I reread the above and saw it doesn't explain what bugs me most about Windows. It's because there are so many times when I want to 1) specify a simple operation, like grep or ls, and 2) specify a set of files I want to apply that operation to. You can't do either in Windows in a general way.
I've spent the last week cursing Windows as I
.login shell script
try to get a Solaris (Unix) Java/C program to
work properly on Windows NT 4.
The program needs a 300M datafile. I ftp that
over, unzip it, and run the program. The
computer thrashes. There is no "renice" command
to lower the priority of the backgrounded program
to, say, something low enough that I could type a
letter and have it appear on the screen less
than a minute later.
The code was written to work on a Pentium I
with around 32M RAM; I have a Pentium II with
256M. I check the system RAM. I have 60M
in use, 270M being swapped to disk, and 200M
of empty RAM. 24M out of the system kernel's
29M is paged out to disk. I can hear the
disk drive churning continuously as it swaps,
and I have 200M of free RAM.
The program crashes. I try to figure out how
to tell Windows to use my RAM. I know! I reduce
the size of my swap file, from 272M to 10M.
I reboot Windows. I open up a couple of
apps, and it refuses to open any more.
I get an error message: I have run out of
swap space. I have 220M of unused RAM,
but Windows would rather use swap.
Postmortem shows one byte somewhere in my
300M file is garbled. I ftp it over again,
unzip, and diff with previous version. Identical.
Bug is in ftp or WinZip.
No problem. I can edit by hand.
I make a big swap file again and reboot.
I try loading the text file, and discover that
Notepad and Wordpad can't open a file larger
than the physical memory.
I try with Word. It opens! I try searching for
the bad line. The machine thrashes.
I check system memory. Word has devoted 5M
of RAM to my 300M file, and is swapping
everything beyond that to and from disk as it
searches through the file. I have 200M of
empty RAM. I download Uuedit. Same problem.
I think of splitting the big file up into
pieces, editing, and rejoining.
On Unix this would take one command each for
splitting and rejoining.
Under Windows I need to write my own C programs
to do it. I don't.
I go to a more powerful computer that sits empty
in a neighboring office with the idea that I
will run the program on it. When working with
SGI boxes, I would often log in to a more
powerful machine, from my desk, and then
change directory to my home directory (NFS
mounted) and run a CPU-sucking program.
But Windows NT does not have remote login.
Environment variables are hidden somewhere in
the OS and in my project files, which will work
only on my machine, so I can't log on to the
other machine, run my
to initialize any environment variables not
already on the command line, and run the program.
I can't even read my email from another
machine on the same network, which I don't
understand, since there is filesharing.
I briefly study the problem of
moving everything over to this computer,
changing the Windows environment settings,
and decide not to do that either.
Other things I have done today:
- Try to find line of source code somewhere in
a project using both C and Java. With Linux
this would look something like:
grep "line of text" *.java *.c *.h
With Windows I open the "find" program,
and click and click and click and click
until I find the right directory (the one
I would be IN if I had a command line).
There is no way to specify both C files and
Java files, so I must search all files under
directory, including the 300M text file.
Which I know better than to try.
Instead must do separate searches for *.c,
*.c++, *.h. *.java files. Many many clicks.
My wrist hurts.
- Look up documentation on "fopen". Under
Unix: man fopen, instantaneous response.
Under Windows: Pay Microsoft $1000 or so.
Click on MSDev Library. Wait about 20 seconds
while Windows swaps things out of RAM to avoid
having to touch any of my free 200M. Do a
search of fopen. Wait another 20 seconds while
it does a search (why is it searching? why
doesn't it have a database? I asked it to make
one when I installed it!). Finally see docs
for fopen.
- Tried organizing my Java files sensibly,
which means putting the Java source all under
one directory. But the GUI editor I am using,
JBuilder, sets the default directory to be that
in which the source code for your main function
is. I have to move everything back because it
is impossible to tell the GUI environment that
I want my data in one directory and my Java source
in another. This is a JBuilder problem, but it
is typical of what you have to do to keep GUI
tools happy. I am just lucky that JBuilder
stores its project files as text; otherwise I
would have had to scrap them.
- Tried to find an important email that I knew
I had received within the last week. On Unix,
would be: forall ~/Mail grep "ATMSDI" (forall
being a shell script I wrote using find to
iterate over files below a directory).
On Windows: Spend half an hour clicking through
my Outlook Express folders looking for it.
Click through every single folder, searching
by username (nice feature, I admit). Search
deleted messages too. Never find it. It has vanished.
- Rebooted Windows several times
because the system started acting weird and
I wanted a fresh start.
I reread the above and saw it doesn't explain
what bugs me most about Windows. It's
because there are so many times when I want to
1) specify a simple operation, like grep or ls, and
2) specify a set of files I want to apply that
operation to.
You can't do either in Windows in a general way.
Phil