Elizabeth Wiethoff

"I'm not actually a computer programmer. I'm really a model/actress. I just work here part-time to pay for my organic breathing lessons." -- take-off on a running gag in "At the Rialto," a short story by Connie Willis.

Welcome. Connie Willis is a great author. Haven't gotten around to reading 100% of her stuff yet, though. -- Doug Merritt

A number of her works are very Funny Science Fiction. "At the Rialto" shows up in two anthologies that I'm aware of: the Willis collection Impossible Things (ISBN 0-553-56436-6) and Women of Wonder: The Contemporary Years: Science Fiction by Women from the 1970s to the 1990s edited by Pamela Sargent (ISBN 0-15-600033-4).

My other wiki presence can be found at Book Shelved: bookshelved.org .

I stop by and lurk a bit each day, but I've reduced my participation significantly because I'm becoming a different person. doo doo doo doo, doo doo doo doo :-)


The bio-like object:

Sometimes professional, sometimes hobbyist, often accidental, incidental, and as needed geek.

Learned Basic Language and deciphered punch tapes.

Three weeks of Pascal Language as a teenager, with Hollerith Punch Cards, of course.

Two years of Fortran Language and Numerical Analysis in engineering school, entailing boxes and boxes of punch cards.

xyzzy, y2, plugh, plover

Handy programming for my TI-59, with magnetic strip cards.

Finite element analysis and writing more Fortrash to augment the commercial software.

Sys admin on Data General machines. This included running terminal cables through the walls at the dorky company where I worked and soldering a couple hundred connectors. It's a wonder my fingers didn't fall off.

Bye-bye top-down, hello 1 Infinite Loop. Wrote GUIs and 2-D graphics output for finite difference models in FORTRAN (again!) for 1980s Apple Macintoshes (!!) running a Unix shell (!!!). Hey, that's what 3M wanted from me. Yep, and writing full-blown instruction manuals, too.

Handy Hyper Card stacks.

Sorting and indexing in BASIC on an Amstrad PCW (CP/M machine with rectangular diskettes) for then-husband's genealogy research.

Synthesizers and sequencers for garage bands. (See Programmers And Music and Programming Music Sequencers)

Fly-by-the-seat-of-my-pants-and-figure-it-out-as-I-go-since-I've-never-touched-Access-before-and-everyone-else-around-is-very-sweet-but-utterly-clueless savior of completely broken Microsoft Access database. And I kept rescuing the Quicken accounts a couple times a week because the 75-year-old bookkeeper gent never did look at the screen or touch the mouse as he typed. (Tiny non-profits are populated by nincompoops.)

Handy Apple Scripts.

Poking around in Java Language.

Win32 API bowels (eesh), debugging C++/Views down in the bowels (more eesh), Microsoft Foundation Classes, combination Cee Plus Plus and Fortrash, Install Shield scripts, Open Gl, Perl Language, resident Hyper Text Markup Language, Cascading Style Sheets, Extensible Markup Language, Xslt Language, and Java Script expert, resident Photo Shop expert, writing tutorials, all for meteorology firm.

Then I took Paxil for 7 weeks in 2000, and it chopped my IQ in half, or thereabouts. Truly evil. I couldn't read for 9 months. I could barely function at a computer for 3 years. I still have trouble speaking, especially nouns, and I seldom write coherent English. Can you say, "Inverse Flowers for Algernon?" I knew you could.

Currently a dazed hobbyist dinosaur on my Mac Os 9 lime iMac.

Wrote some little Java Script games last summer 2003.

Taught myself Math Ml in September 2003 and debugged one of its XSLT stylesheets.

Poked around a bit with Mozilla Xul.

Fell in love with Python Language in January 2004. :-) :-)

Came upon interesting reading here at this wiki and decided to become a 'zen.

This wiki looks like a decent place to practice constructive writing with minimal pressure. (Beats filling out Social Security forms!) Where I contribute a semi-interesting yet rather incoherent paragraph, someone else can make it coherent and more interesting. Refactor and have mercy. :-)

Ha! :-) That's funny. What a creative way of looking at wiki.

Enjoy

Xp New York City has me working in Ruby Language.

Designing a Para Dox database (argh) on Windows Xp (double argh) and getting the hang of Sql Language (okay)

Installed Mac Osx. Yikes! What a sucky Finder and Dock! Maybe I'll learn to hack from a Unix Shell and ignore the GUI.

Currently more on a math kick than a programming kick, though Lisp Language strikes me as interesting.

Revisiting Java Script and created Blocks In Java Script page.

Delving deeper in Ruby Language and Apple Script.

Installed Use Mod for my beau. Now I'm learning Perl Language.

Eeks! I'm writing a book: "How To Think Like a Computer Scientist: Learning With Ruby" (mysite.verizon.net )

I slammed into more illness and had to give up computers for about a year and writing the aforementioned Ruby book. I'm just kinda, sorta coming back into the geek world. Perhaps I'll be able to return to writing the Ruby book, perhaps not :-| Thank You for all the kind thoughts this past year or so.

Experimenting with Js Forth and Starting Forth

Coming up with algorithms and figuring out Jay Ruby & Java Swing for xpnyc.org


Now that Google Loves Wiki again, allow me this opportunity to boost the Google Juice of a few friends.

Exceptional Reasonable Math Tutor (msilvermanmathtutoring.com )

LarryBeth Web Services Unlimited (larrybeth.com ) You can ignore these links.


To be moved eventually to Ruby Call Stack:

Eliz Have a look at Ruby Coerce about the right association problem. If I can help solve a problem just ask. See further comments on Ruby Coerce. Surely this community exists to share what we know. -- John Fletcher

Eliz, which version of Ruby Language are you using? I am having some trouble duplicating one or two of your results. If I can sort that out I think I should be able to explain some more of what is happening when using Ruby Coerce. -- John

I'm a dinosaur. I'm running Ruby 1.6.7. I assume you're running something newer. It's disturbing to think that a different version produces different results. -- Eliz

At the moment it looks as though 1.6.7 and 1.8.2 behave the same. The version 1.8.4 which I have on Fedora 4 seems to be different. The difference is what is on the call stack when the expression is 1-x, where x is the user type. For this case with 1.8.4, where the first operand is a number (Ruby Fixnum), the call is as if from the main program, so that the operator does not appear in the call stack string, so cannot be detected. For a-x, where a is some other Ruby class which has operators defined for + and -, then the operator does appear in the call stack string. I have downloaded the source code of 1.8.4 to look in the change log. -- John

Maybe get around the version problem by checking the call stack in coerce, instead of in subtract. However, I don't like the thought of coerce needing to know that subtraction is special; I prefer to have subtraction know that subtraction is special. -- Eliz

The problem is that in that case the call to coerce does not contain information on the stack as to what has made the call, which has come from operator - as defined for Fixnum. The call stack string does not contain this information any more. This is the change from version 1.8.2 to 1.8.4. I have looked in the changelog and not found any obvious cause. -- John

Maybe it's time to file a bug report, or at least a weirdness report, to alert the Ruby community of the new behavior. -- Eliz

It looks so. The code which does the numeric work is in numeric.c and the code which prints out the message is in a function backtrace in eval.c. Neither of those parts of the code seem to have changed. The information about the calling function is contained in a variable ruby_frame->orig_func which is set in only one place, in rb_call0, also in eval.c. It is set to zero in several places, and in that case the print is skipped. It looks as though some change elsewhere is cleaning up the value. There are several references in the ChangeLog to eval.c in 1.8.4. I have been comparing the source codes of versions 1.8.0 and 1.8.4.

I am now playing with a copy of 1.8.4 by modifying and recompiling the source. I have established that the routine rb_num_coerce_bin in numeric.c knows the name of the calling routine before and after the call to the coerce defined for Rectangle. The knowledge must be lost in the complex calling sequence in eval.c.

Found it From the ChangeLog:

Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada <nobu@ruby-lang.org>

eval.c (backtrace):
skip successive frames sharing same node.

This puts an extra line into the code:

if (frame->prev->node == n) continue;

If this is commented out then the previous behaviour is restored. This code is in versions 1.8.3 and 1.8.4.

I have had a look around the various web sites and not found an obvious location for reporting problems. -- John

Great detective work! I wonder why this "feature" was added to Ruby 1.8.3. I guess I'll look around for where to report this. Maybe I'll ask the guys at the local Ruby user group. In the meantime I'm scratching my head wondering how to accomplish the exercise without peeking at the call stack (which struck me as quite a hack). I think Python and C++ beat Ruby when it comes to that exercise. -- Eliz

Thanks. I had thought of Emailing to the contributor of the patch. My guess is there is some other reason that it was put in. If you send me an Email to J.P.Fletcher@aston.ac.uk I will send you a copy. I have some tidier code for some of your things. I had not come across this before, because for me + and - both make sense and also I working with a SWIG interface where I control all the operators, comparable to your situation with Python. -- John

Ruby Language will be patched with the solution with the next release. A one line patch has been added. In the meantime, do not use 1.8.3 or 1.8.4 for this without rebuilding it yourself. -- John

Thanks. Now I'm marveling at the international Open Source community! -- Eliz

I like your solution to the problem (on the Ruby Coerce page). I had been trying from the other end by overloading the operator - of FixNum. Yours is very neat. -- John

Thanks for the compliment. Defining the subtraction operator for Numeric was the first thing I tried, and it didn't work. That's when I decided to carp on Why We Hate Ruby about my inability to define right-associated operators, and that's when you came along and introduced me to Ruby Coerce. I came up with the BogusRectangle idea last night talking to my beau. All he knows about programming is what he did years ago in Basic Language on his Commodore 64, so I have to make sure to use the word "subroutine" a lot when I try to explain my newfangled programming ideas to him. ;-) I wrote up the code today and, on a lark, showed it to him. He said, "I'm really thrilled about your Ruby program. It's very elegant. Elegance is important to me as a mathematician." I rule! I discovered a problem with that solution, though, as I explain on the Ruby Coerce page. After reading my Apple Script book awhile (get my mind off things) and gazing at the online Pick Axe Book, I came up with something that I think is more elegant and more Ruby-ish. Take another look at Ruby Coerce. -- Eliz

Thank you. I like your new version as well. It is indeed elegant. I have learned things I didn't know about Ruby Language. Also, we have, between us and Nobuyoshi Nakada, tracked down and fixed a bug in the core code of Ruby. I can confirm that both your new methods work fine with Ruby 1.8.4 without the patch. -- John

Hooray! Thanks for all your help. Have you also tried some operator chaining tests?

+ Rectangle.new(3, 4) - 1

+ Rectangle.new(3, 4) - Rectangle.new(1, 1)

These should work, not raise an exception.

These both work with your latest version. I am having problems (spurious failure) with the earlier version. The reason is that the result of the operation

+ Rectangle.new(3, 4)

has the class BogusRectangle. It looks like a good reason for preferring the second one where the object under consideration does not change class. -- John

Yep. Those "spurious failures" are why I ended up unhappy with the BogusRectangle version. -- Eliz

I have had to revisit my own implementations for Ruby Coerce. One case was failing in some code I had not looked at for a while. The code is an interface for Cee Plus Plus classes to be accessed from Ruby. The problem turned out to be in the setting up of the vector to pass back to Ruby. If you are interested look at Promotion Traits for a discussion of the problem. It has taken all evening.

I had another problem which turned out to be an incompatibility between the Ruby development interface and one of the Boost Libraries. They both had a macro called ALLOC! To solve that I had to edit my local copy of ruby.h!! -- John

Yep. Macros stomp Name Spaces like Godzilla stomps Tokyo. -- Eliz


Messaging:

It is so nice to hear from you after so long. I have kept on with this wiki working on what interests me and from time to time having good conversations. I have just discovered One Note which works a bit like a wiki in some ways, but not the open communication. It integrates well with Microsoft Outlook which is standard at work now. Have you looked at it? Best wishes -- John Fletcher

Thanks for your nice note. I hadn't looked at One Note until you mentioned it above. I don't imagine I'll ever use it considering I have no M$ products other than Internet Explorer 5.2.1 for my old Mac, but I'm glad you're happy with it. Keep on wikiin'. I was doing Java Swing with Jay Ruby in my absence here, but now I'm (yet again) sick of computers. So now I'm concentrating on something entirely low-tech: singing opera! -- Eliz

Sorry, I had forgotten that you did not use M$ products. I have to be dual use - I do most of my programming on Linux systems, but for most things I am on M$. Best wishes for the singing. -- John

Hi Elizabeth, thanks for thinking of me. I read Kim Stanley Robinson's Mars trilogy a number of years ago and really liked it. I'll look for the climate change books. Hope all is well with you too. -- Ron Jandrasi

For mood & illness issues, if still relevant, maybe look into Vitamin D deficiency (common in indoor programmer types) and also Dr. Joel Fuhrman's Eat To Live approach (heavy on vegetables, fruits, and beans)? Both helped me. -- Paul Fernhout


See original on c2.com