"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. -- DougMerritt'' A number of her works are very FunnyScienceFiction. "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 BookShelved: http://bookshelved.org/cgi-bin/wiki.pl?ElizabethWiethoff. 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 BasicLanguage and deciphered punch tapes. * Three weeks of PascalLanguage as a teenager, with HollerithPunchCard''''''s, of course. * Two years of FortranLanguage and NumericalAnalysis 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 DataGeneral 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 AppleMacintosh''''''es (!!) running a Unix shell (!!!). Hey, that's what 3M wanted from me. Yep, and writing full-blown instruction manuals, too. * Handy HyperCard 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 ProgrammersAndMusic and ProgrammingMusicSequencers) * 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 MicrosoftAccess 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 AppleScript''''''s. * Poking around in JavaLanguage. * Win32 API bowels (eesh), debugging C++/Views down in the bowels (more eesh), MicrosoftFoundationClasses, combination CeePlusPlus and Fortrash, InstallShield scripts, OpenGl, PerlLanguage, resident HyperTextMarkupLanguage, CascadingStyleSheets, ExtensibleMarkupLanguage, XsltLanguage, and JavaScript expert, resident PhotoShop 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 MacOs 9 lime iMac. * Wrote some little JavaScript games last summer 2003. * Taught myself MathMl in September 2003 and debugged one of its XSLT stylesheets. * Poked around a bit with MozillaXul. * Fell in love with PythonLanguage 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 * XpNewYorkCity has me working in RubyLanguage. * Designing a ParaDox database (argh) on WindowsXp (double argh) and getting the hang of SqlLanguage (okay) * Installed MacOsx. Yikes! What a sucky Finder and Dock! Maybe I'll learn to hack from a UnixShell and ignore the GUI. * Currently more on a math kick than a programming kick, though LispLanguage strikes me as interesting. * Revisiting JavaScript and created BlocksInJavaScript page. * Delving deeper in RubyLanguage and AppleScript. * Installed UseMod for my beau. Now I'm learning PerlLanguage. * Eeks! I'm writing a book: "How To Think Like a Computer Scientist: Learning With Ruby" (http://mysite.verizon.net/hpassel/thinkruby/) 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 :-| ThankYou for all the kind thoughts this past year or so. * Enjoying DrScheme and ''HowToDesignPrograms'' * Experimenting with JsForth and ''StartingForth'' * Coming up with algorithms and figuring out JayRuby & JavaSwing for http://xpnyc.org/index.php?title=DupDetector ---- '''GoogleJuice:''' Now that GoogleLovesWiki again, allow me this opportunity to boost the GoogleJuice of a few friends. * Exceptional Reasonable Math Tutor (http://msilvermanmathtutoring.com/) * Larry''''''Beth Web Services Unlimited (http://larrybeth.com/) You can ignore these links. ---- '''To be moved eventually to RubyCallStack:''' Eliz Have a look at RubyCoerce about the right association problem. If I can help solve a problem just ask. See further comments on RubyCoerce. Surely this community exists to share what we know. -- JohnFletcher Eliz, which version of RubyLanguage 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 RubyCoerce. -- 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 Change''''''Log 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 Change''''''Log: Wed Jun 8 08:33:10 2005 Nobuyoshi Nakada * 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 RubyLanguage 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 OpenSource community! -- Eliz I like your solution to the problem (on the RubyCoerce page). I had been trying from the other end by overloading the operator - of Fix''''''Num. 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 WhyWeHateRuby about my inability to define right-associated operators, and that's when you came along and introduced me to RubyCoerce. I came up with the Bogus''''''Rectangle idea last night talking to my beau. All he knows about programming is what he did years ago in BasicLanguage 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 RubyCoerce page. After reading my AppleScript book awhile (get my mind off things) and gazing at the online PickAxeBook, I came up with something that I think is more elegant and more Ruby-ish. Take another look at RubyCoerce. -- Eliz Thank you. I like your new version as well. It is indeed elegant. I have learned things I didn't know about RubyLanguage. 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? 5 + Rectangle.new(3, 4) - 1 5 + 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 5 + Rectangle.new(3, 4) has the class Bogus''''''Rectangle. 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 Bogus''''''Rectangle version. -- Eliz I have had to revisit my own implementations for RubyCoerce. One case was failing in some code I had not looked at for a while. The code is an interface for CeePlusPlus 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 PromotionTraits 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 BoostLibraries. They both had a macro called ALLOC! To solve that I had to edit my local copy of ruby.h!! -- John Yep. Macros stomp NameSpace''''''s 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 OneNote which works a bit like a wiki in some ways, but not the open communication. It integrates well with MicrosoftOutlook which is standard at work now. Have you looked at it? Best wishes -- JohnFletcher Thanks for your nice note. I hadn't looked at OneNote until you mentioned it above. I don't imagine I'll ever use it considering I have no M$ products other than InternetExplorer 5.2.1 for my old Mac, but I'm glad you're happy with it. Keep on wikiin'. I was doing JavaSwing with JayRuby 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 KimStanleyRobinson'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. -- RonJandrasi 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. -- PaulFernhout ---- CategoryHomePage, CategoryHumor