HDTenEightyP/NetNews huggingface dataset:
From: gordon@osiris.cso.uiuc.edu (John Gordon)
Subject: Re: bogosort revisited (with source)
Organization: University of Illinois at Urbana
Date: Sat, 5 Sep 1992 14:58:41 GMT

>>> In alt.folklore.computers, there has been a discussion of the worst
>>> possible sorting algorithm, which has been called "bogosort".

>>> My interpretation of the algorithm is this: Exchange two randomly
>>> chosen elements of the array to be sorted.  Check to see if the array
>>> is in order.  Iterate until done.

>>It is possible to do ***much*** worse than that.

>For example, rather than randomly switching only *two* elements before checking
>for sortedness (is that a word?), randomize the *entire array*, O(n) time or
>worse.  This is the equivalent of throwing a deck of cards in the air,
>collecting them, and checking to see if they are in order.  If they
>aren't, throw them in the air again.  I have heard time bounds of O(2^n*n!)
>which is MUCH MUCH worse than O(n!).

	How about this: if the array is not sorted, don't do any processing,
but check it again immediately, in hopes that some passing photon has flipped
the appropriate bits in memory, producing a sorted array.  I have no idea
what the O of this would be. :-)

---
John Gordon                        My incredibly witty saying has been 
gordon@osiris.cso.uiuc.edu         Politically Corrected into oblivion.
From: lowen@lorc.UUCP (Lamar Owen)
Newsgroups: alt.folklore.computers
Subject: Re: Flash illiteracy; was: Re: Deutsches Museum (was: Zuse Computers
Date: 2 Sep 92 14:22:12 GMT
Organization: LORC Enterprises

9125113g@lux.latrobe.edu.au (Mitch Davis) writes:

> In article <1856@adagio.UUCP> grog@adagio.UUCP (Greg Lehey) writes:
> >In article <1992Aug27.040325.14733@athena.cs.uga.edu> mcovingt@athena.cs.uga
> >>I have been asked whether one needs flash to photograph a solar eclipse.
> >
> >Of course. You need to fill in the details in the shadow. Of course,
> >you also need to consider a couple of technical problems:
> >
> >1. You will need a very bright flash
> >2. Flash should be set to fire 2.5 seconds before shutter opens.
> 
> Oh?  I've got very good results with a flash which fires 16 minutes
> before the shutter opens....  Light is not instantaneous you know..

You fell for the same fallacy that I did.  Although it does indeed take light
approximately 16 minutes to round-trip to the sun, since the moon is the dark
body in the equation, and since the sun is already illuminated, you only have
to figure in the 2.5 seconds (approximate) required to round-trip to the moon
instead.  I guess I should have said "...almost did." in my first line. :-)
Of course, you will end up with a very nice picture of the Dark Side Of the
Moon (a Pink Floyd trademark) with a halo.
 
> Mitch.

--

Lamar Owen, Systems Consultant, GE Lighting Systems, Hendersonville, NC
***********************************************************************
 Opinions expressed herein are the author's and do not reflect policy
   or opinions of the General Electric Company or its subsidiaries.
***********************************************************************
Newsgroups: alt.folklore.computers,comp.unix.misc
From: zrepachol@cc.curtin.edu.au (Paul Repacholi)
Subject: Re: The *NEED* for an assembler
Organization: Curtin University of Technology
Date: Wed, 9 Sep 1992 10:52:53 GMT

In article <1992Sep8.093152.15699@news.columbia.edu>, lasner@watsun.cc.columbia.edu (Charles Lasner) writes:
...
> Curiously, the MS-DOS version, 100% written in assembler, has few bugs, and
> quite a bit more features than any other version.  Conditionals are generally
> handled by machine-specific modules for the I/O, which can vary, since the
> MS-DOS version is not merely for PC's, but for all of the sundry other machines
> that run MS-DOS/PC-DOS/DR-DOS such as DECmate II w/XPU, Victor 9000, Rainbow,
> various Toshiba, Grid, HP, Japanese machines, etc., and also supports
> transfers down DECnet, and various LANs as well as serial port connections.
> In actuality, the theoretical combination of systems-specific parameters for
> the MS-DOS version likely meets or even exceeds the C-version's similar
> requirements, but is yards better in implementation.
> 
Interesting, the PDP-11 Kermit for RSTS/E, and the RSX family is written
in macro on RSTS/E. This results in some fun behaviour on 'real' RSX at
times, like blowing the terminal drivers brains out... However, for function-
ality it was a clear leader over all but the TOPS-20 kermit. Except for
the terminal handeling, very different on RSX, it is a solid, reliable job.
I have shifted several GB with it ofer the years.

~Paul

Newsgroups: alt.folklore.computers
From: cdash@moet.cs.colorado.edu (Charles Shub)
Subject: Grace Murray Hopper Incident
Organization: University of Colorado at Colorado Springs
Date: Mon, 14 Sep 1992 22:46:39 GMT

Doug Jones suggested I post the following true story from back in
about 1981.  Commander Hopper had agreed to give an ACM lecture at the
University of Vermont and at SUNY Plattsburgh (across lake Champlain)
and the task of getting her from the hotel in Burlington to
Plattsburgh fell to me.  It was a miserable cold and rainy day.  Her first
comment in the car was a request to smoke.  That was no problem, nor
is it the point of the story.  To get from Burlington to Plattsburgh,
one normally takes the Lake Champlain Ferry from Grand Isle, Vermont to
Plattsburgh, so we drove up to the ferry dock, parked the car, and
proceeded across the lake.  Commander Hopper was in uniform.  One of
the crew members on the ferry (absolutely being a smart aleck) asked
Commander Hopper what she thought of the "boat".  Grace proceeded to
start chewing the young man out about how it was a "ship" and not a
"boat" and was eplaining what the difference was.  She continued the
one sided discussion for the duration of the trip, and even made
certain the young man had the full lecture by continuing it over her
shoulder as we walked off the ferry to meet the department chairman
from Plattsburgh.  
-- 

charlie shub  cdash@cs.Colorado.EDU       -or-         (719) 593-3492     
on leave at the University of Iowa  cdash@cs.uiowa.edu (319) 335-0739
Newsgroups: alt.folklore.computers,comp.unix.misc
From: ntaib@silver.ucs.indiana.edu (Iskandar Taib)
Subject: Re: PROGRAM BLOAT - was Re: Ye Olde Secrete Screene Cheete Sheete  .....
Organization: Indiana University
Date: Tue, 8 Sep 1992 03:29:17 GMT

In article <mcdonald.276@aries.scs.uiuc.edu> mcdonald@aries.scs.uiuc.edu (J. D. McDonald) writes:

>But I **DO** strongly objsct to undocumented things, as, by definition,
>unless you have some spy, they are useless. The credit screen should be 
>documented. Perhaps a "credits" click box inside the about box.


Here's a neat undocumented feature:

If you are running Novell Netware and Windows 3.1 create a file 
called netware.ini and include these two lines:

[Options]

NetWareHotKey=1


Restart Windows (make sure your netware shell is loaded) and press
F6.





-- 
-------------------------------------------------------------------------------
Iskandar Taib                          | The only thing worse than Peach ala
Internet: NTAIB@SILVER.UCS.INDIANA.EDU |    Frog is Frog ala Peach
Bitnet:   NTAIB@IUBACS                 !
From: mark-r@ee.man.ac.uk (Mark Robinson (JO PhD))
Newsgroups: alt.folklore.computers
Subject: Re: GOTOs
Date: 10 Sep 92 17:12:45 GMT
Reply-To: mark-r@spec0.ee.man.ac.uk (Mark Robinson (JO PhD))
Organization: Dept Electrical and Electronic Eng, Manchester University, UK

In article <BEVAN.92Sep10160706@tiger.cs.man.ac.uk> bevan@cs.man.ac.uk (Stephen J Bevan) writes:
>How about the following which is a mixture of C & Pascal (just to be
>perverse :-)
>
>repeat
>  done= init_rs232 && init_modem && dial_number && log_on && do_the_business
>until done
>
>Change the language and formatting to taste.
>
>bevan

Hold on, if I remember rightly, isn't the order that the conditions
are evaluated, and whether they are evaluated at all, entirely at the
whim of the compiler?

So in the above code there's no guarantee that init_rs232() will
be executed first, or even if it is and it turns out to be false,
the program may still attempt to evaluate any or all of the other
conditions before dropping out.

This is a classic C gotcha, not sure about other languages.

Mark
--
_____________________________________________________________________
Multimedia Information Systems Lab | To err is human, to really screw
Dept. Of Electrical Engineering    | it up takes a co
University of Manchester           | Segmentation fault: core dumped
Dover St. Manchester. M13 9PL      |
From: rfd@po.CWRU.Edu (Richard F. Drushel)
Newsgroups: alt.folklore.computers
Subject: Re: what is halt_and_catch_fire?
Date: 10 Sep 1992 01:19:58 GMT
Organization: Case Western Reserve University, Cleveland, OH (USA)
Reply-To: rfd@po.CWRU.Edu (Richard F. Drushel)
NNTP-Posting-Host: slc5.ins.cwru.edu


In a previous article, strobl@gmd.de (Wolfgang Strobl) says:

>In <kdarling.714348896@garfield.catt.ncsu.edu> kdarling@garfield.catt.ncsu.edu (Kevin Darling) writes:
>
>...
>
>>Yep :-)  The 6800's "HCF" instruction (either opcode $9D or $DD) did reads
>>with the address lines always incrementing, according to the first article
>>(that I know of) which mentioned this.  December '77 BYTE, I believe.

>Correct. It was
>  "Undocumented M6800 Instructions", 
>which listed six undocumented M6800 instructions and their definitions. 
>One of these instructions was the the so called "Halt and Catch Fire 
>(HCF)" instruction. These instructions, quoted from the above article
>are
>
>Name                  Mnemonic Op Code
>----                  -------- -- ----
>AND accumulators         NBA     14
>store ACCA, immediate    STAA    87
>store ACCB, immediate    STAB    C7
>store SP, immediate      STS     8F
>store IX, immediate      STX     CF
>Halt and Catch Fire      HCF     9D or DD

	From the Motorola MC6801/MC6803 manual DS9841-R1 (1984), p. 26:

	"The MC6801/03 is upward source and object code compatible with
the MC6800. ... In addition, two new special opcodes, 4E and 5E, are
provided for test purposes.  These opcodes force the program counter to
increment like a 16-bit counter, causing address lines in the expanded
modes to increment until the device is reset.  These opcodes have no
mnemonics."

	For the 6801/03, all the opcodes listed in the table above
except 9D and DD are listed as "unassigned".  9D is JSR DIRect, and
DD is STD DIRect.
-- 
Rich Drushel ** rfd@po.CWRU.edu *** Biology Ph.D. Student ** Cleveland FreeNet
Co-Sysop, Coleco ADAM Forum --- Assistant Sysop, Science Fiction & Fantasy SIG
"Solda pung apfashat ro des-marno, / Marn ladir o armag noth yeni arno. / Hell
miryat it, / Jambo iat it, / Os lasse wei ticip kati baldo." / Old Ennish poem
Newsgroups: alt.folklore.computers
Subject: Re: Is there a PDP-11 (or 8, or...) Emulator?
From: don@zl2tnm.gen.nz (Don Stokes)
Date: 9 Sep 92 07:43:32 GMT
Distribution: world
Organization: The Wolery

dik@cwi.nl (Dik T. Winter) writes:
> Eh?
> 	switch(codeword) {
> 	case 0:
> 	    ...
> 	case 4095:

Ummm -- do you _really_ want 64k case clauses?  Rather horrible to read on
a machine with 81 instructions (plus FP ops).  

Also, the compiler will probably (read "should") compile this into a jump 
table anyway. 

--
Don Stokes, ZL2TNM (DS555)                        don@zl2tnm.gen.nz (home)
Network Manager, Computing Services Centre            don@vuw.ac.nz (work)
Victoria University of Wellington, New Zealand              +64-4-495-5052
Newsgroups: alt.folklore.computers
From: mkkuhner@phylo.genetics.washington.edu (Mary K. Kuhner)
Subject: Re: You know when you're hacking too long when...
Organization: University of Washington, Seattle
Date: Mon, 7 Sep 1992 04:44:14 GMT

'Just a patty' is not that uncommon an order, according to my husband,
an ex-McDonalds' employee.  He speculates that many are fed to dogs,
though not all of them.  One wonders if this can still reasonably be
described as a hamburger....'Just buns' also occurs.  Never had anyone 
ask for 'just mayo' or 'just pickles', though.

Mary Kuhner mkkuhner@genetics.washington.edu
From: grog@adagio.UUCP (Greg Lehey)
Newsgroups: alt.folklore.computers
Subject: Re:  Flash pix
Date: 7 Sep 92 09:29:04 GMT
Organization: LEMIS, Schellnhausen 2, W-6324 Feldatal, Germany

In article <erd.03i6@kumiss.cmhnet.org> erd@kumiss.cmhnet.org (Ethan Dicks) writes:
>I did this, once, with a 4116 DRAM, which was installed in the second bank
>of RAM on an Apple ][.  When I switched the video mode from TEXT to GRAPHICS,
>I also cleared the screen to either black or white (I forget which).
>When I uncovered the DRAM and let light fall upon the exposed die, individual
>pixels changed color on the monitor.

Some years ago, when Byte magazine still had a practical bent, Steve
Ciarcia published an article on how to build a primitive CCD video
camera based on dynamic memory - I think it was either a 4116 or a
4164. Does anybody remember details?
-- 
Greg Lehey                       | Tel: +49-6637-1488              
LEMIS                            | Fax: +49-6637-1489
Schellnhausen 2, W-6324 Feldatal, Germany
*** NOTE ***: Headers get mangled at backbone - reply to grog%lemis@Germany.EU.net
Organization: Carnegie Mellon, Pittsburgh, PA
Newsgroups: alt.folklore.computers
Date: Tue, 15 Sep 1992 23:33:32 -0400 
From: "Joseph M. Newcomer" <jn11+@andrew.cmu.edu>
Subject: Re: Undocumented (mis-)operation codes
Distribution: world

While it was true that most systems software in the 60's was written
in assembler because there was no alternative, the disaster in TSS/360
was that EVERY call in the kernel defined its own interface (well, there
were a small but finite number of these, but it was definitely in the
2-digit range, I think I remember someone claiming close to 40 unique
parameter
passing mechanisms he had found).  Each call therefore defined:
    what registers held input parameters
    what registers values would be returned in
    what registers would act as "return code" registers (it was 15 by
    tradition but in the kernel it could be nearly any register)
    which register would hold the base of the code being branched to
    which registers would be modified by the called procedure
    which register held the return address
This was to avoid the horrible IBM general-purpose linkage.  However,
we wrote a large assembly-language application on top of TSS/360 and
we couldn't afford the linkage overhead either, so we defined a macro that
did it, and established one set of conventions for working/preserved
registers, base registers, return value registers, etc.  What was
unforgivable in the TSS kernel was that not only were there so many
conventions but that in many cases the only way to figure out what they
were was to read the code of the called procedure and all the procedures
/it/ called!
                        joe

Xref: sparky alt.folklore.computers:13912 comp.unix.misc:3651
From: johnb@searchtech.com (John Baldwin)
Newsgroups: alt.folklore.computers
Subject: Re: Mel the Real Programmer (AGAIN!)
Date: 14 Sep 92 14:05:06 GMT
Organization: Search Technology, Inc.


   Sorry to followup to my own post, but that seemed the most efficient
   and effective way to send a positive ACK.


   Many thanks to Craig Steinberger and Brian L. Daniels for their prompt
   replies.  The folks at XYZ Corp. (not their real name :-) are gonna
   love this.



   Thanks!  The rest of you can all stop sending now!  Honest.



-- 
John Baldwin                                        johnb@searchtech.com
Search Technology, Inc.                             uupsi!srchtec!johnb
4725 Peachtree Corners Circle, Suite 200            johnb@srchtec.uucp
Norcross, Georgia  30092   USA
Xref: sparky alt.folklore.computers:13788 comp.unix.misc:3597
Newsgroups: alt.folklore.computers,comp.unix.misc
Subject: Re: The need for an assembler (was: Favorite CPU)
From: alanb@sdl.mdcbbs.com (Alan Braggins)
Date: 09 Sep 92 11:42:27 GMT
 <1992Sep4.042704.21287@news.columbia.edu><AX0JNS5@taronga.com> <1992Sep8.095000.16053@news.columbia.edu>
Organization: Shape Data (Division of EDS), Cambridge UK
In-reply-to: lasner@watsun.cc.columbia.edu's message of Tue, 8 Sep 1992 09:50:00 GMT

>>>>> On Tue, 8 Sep 1992 09:50:00 GMT, lasner@watsun.cc.columbia.edu (Charles Lasner) said:

> In article <AX0JNS5@taronga.com> peter@taronga.com (Peter da Silva) writes:
>>In article <1992Sep4.042704.21287@news.columbia.edu> lasner@watsun.cc.columbia.edu (Charles Lasner) writes:
>>>The non-portability of code to incompatible architectures is well known and
>>>usually an acceptable tradeoff to writers of assembly code.
>>
>>Translation:
>>
>>	People who write applications in assembly code are people who
>>	are willing to trade off a factor of 10 or more in a few years
>>	for a factor of two in a portion of the code today.

> No, not a translation at all, just some self-serving words you dredged up
> to twist my statement.
> The truth is that for any "family" of machines, the "meat and potatoes" of
> the code is the same for all models. 

Yes, but my code runs on architectures that didn't exist 3 years ago, and has
to to be competitive.
--
Alan Braggins, Shape Data (A Division of EDS Ltd), Cambridge, UK +44-223-316673
   "Any technology distinguishable from magic is insufficiently advanced."
 "My employer does not necessarily share my views - but I'm working on it."
Newsgroups: alt.folklore.computers
From: dursi@clavius.stmarys.ca (Jonathan Dursi)
Subject: Re: bogosort revisited (with source)
Organization: NSTN Network Operations Centre, Nova Scotia, Canada
Date: Wed, 9 Sep 1992 10:44:53 GMT

In article <1992Sep9.055843.26498@ee.eng.ohio-state.edu>  
rob@guinness.eng.ohio-state.edu (Rob Carriere) writes:
> In article <23629@alice.att.com> ark@alice.UUCP () writes:
> >In article <1992Sep2.175607.23225@grebyn.com> richk@grebyn.com (Richard
> >Krehbiel) writes: 
> 
> >> In alt.folklore.computers, there has been a discussion of the worst
> >> possible sorting algorithm, which has been called "bogosort".
> 
> >> My interpretation of the algorithm is this: Exchange two randomly
> >> chosen elements of the array to be sorted.  Check to see if the array
> >> is in order.  Iterate until done.
> 
> >It is possible to do ***much*** worse than that.
> 
> I don't understand.  This sort can take forever[1].  Therefore, the worst  
case
> bound is O(\infty).  How much worse can you do than that?  :-)

How about this:
	- do nothing
	- check to see if array is in order
	- iterate until done.

This algorithm is *guaranteed* to take forever...  oh, dear, I've 
missed the case where the array is initially sorted.  Take 2:

	- do nothing
	- if array is in order, switch first two elements
	- iterate until array in order.

A cleaner solution - with source included (subject to GNU copyleft)
- would be

	void bogosort (int n, int *data) {
		while (1) ;
	}


- Jonathan

----------------------------------------------------------------------
Jonathan Dursi               |  "Never attribute to malice 
Programmer, Physics Dept.    |   what can adequately be explained 
dursi@Clavius.StMarys.CA     |   by stupidity."  - Hanlon's Razor
Newsgroups: alt.folklore.computers
From: peter@taronga.com (Peter da Silva)
Subject: Re: Better dead than IBM--SUMMARY (LONG)
Organization: Taronga Park BBS
Date: Thu, 10 Sep 1992 10:29:54 GMT

Invisible Blue Mice

	From an IBM sales or management type who went wacko and shot
	up his condo. Claimed it was full of blue mice.
-- 
                                                                `-_-'
                         Har du kramat din varg idag?            'U`

Peter da Silva, Taronga Park BBS, Houston, TX  +1 713 568 0480/1032
Newsgroups: alt.folklore.computers
From: pollock@milton.u.washington.edu (Joe Pollock)
Subject: Re: Flash illiteracy; was: Re: Deutsches Museum (was: Zuse Computers
Organization: The Evergreen State College
Date: Wed, 9 Sep 1992 17:50:11 GMT

In article <1992Sep7.114029.58687@cc.usu.edu> ivie@cc.usu.edu (CP/M lives!) writes:
>In article <1992Sep1.045612.10928@ultb.isc.rit.edu>, bmb1021@ultb.isc.rit.edu (B.M. Buck ) writes:
>> 
>> Actually, I think that that would make a very striking picture (done
>> differently, of course...).  Anyone up to superimposing a picture of a
>> brightly-lit full-moon over the shadow portion of a solar eclipse?
>
>I'm not sure, but, assuming that you found a large enough flash, you would
>probably make a whole bunch of astronomers very angry.
>
>Roger Ivie
>ivie@cc.usu.edu
>
The flash is the easy part. Take one cold-war surplus thermonuclear
device....  The real trick is the reflector :-)

And if you did this in the back yard, your neighbors (those within
50 miles or so) would also probably be less than wildly enthusiastic
about it.



Newsgroups: alt.folklore.computers,comp.unix.misc
Subject: Re: The need for an assembler (was: Favorite CPU)
From: rmk@rmkhome.UUCP (Rick Kelly)
Organization: The Man With Ten Cats
Date: Sun, 6 Sep 1992 22:27:41 GMT
Reply-To: rmk@rmkhome.UUCP (Rick Kelly)

In article <3X0JKN5@taronga.com> peter@taronga.com (Peter da Silva) writes:
>In article <9209040148.04@rmkhome.UUCP> rmk@rmkhome.UUCP (Rick Kelly) writes:
>>>> Within the world of Kermit, we have frustrating cases of even small programs
>>>> that need worlds of conditionals to satisfy the bizarre variations floating
>>>> around the industry.
>
>>>Within the world of Kermit the latest release I've tried still runs on Xenix-
>>>286 (System III Xenix, not SCO), System V on the 386, System V on the 68000,
>>>and on the Sparc. I would take some convincing that this would be possible
>>>in any other language that's reasonably widely available, except maybe Fortran.
>
>>Kermit runs on everything.
>
>There is an implementation of kermet for just about everything. That's not the
>same thing as "the same source compiles and runs without change".


True, if your talking about C-Kermit, which has a case of feature bloat.

I've seen sources for an earlier version of kermit in c that I could probably
hack onto an Apple IIe or GS using the Hyper C compiler.  But the original
kermits for small computers were written in assembly.

-- 

Rick Kelly	rmk@rmkhome.UUCP	unixland!rmkhome!rmk	rmk@frog.UUCP
From: bob@anagld.analytics.com (Bob Smith)
Newsgroups: alt.folklore.computers
Subject: Re: Is there a PDP-11 (or 8, or...) Emulator?
Date: 12 Sep 92 20:21:17 GMT
Organization: Computer Sciences Corporation - Systems Engineering Division


 I too would welcome a forum for sharing information on the
second generation of the first risc machine (defference to PDP5)
and would be glad to share my knowledge.
From: agc@bmdhh298.bnr.ca (Alan Carter)
Newsgroups: alt.folklore.computers
Subject: Re: GOTOs
Date: 11 Sep 92 09:43:35 GMT
Organization: BNR-Europe-Limited, Maidenhead, England

In article <6065@m1.cs.man.ac.uk>, mark-r@ee.man.ac.uk (Mark Robinson (JO PhD)) writes:
|> In article <BEVAN.92Sep10160706@tiger.cs.man.ac.uk> bevan@cs.man.ac.uk (Stephen J Bevan) writes:
|> >How about the following which is a mixture of C & Pascal (just to be
|> >perverse :-)
|> >
|> >repeat
|> >  done= init_rs232 && init_modem && dial_number && log_on && do_the_business
|> >until done
|> >
|> Hold on, if I remember rightly, isn't the order that the conditions
|> are evaluated, and whether they are evaluated at all, entirely at the
|> whim of the compiler?

Not in C - K&R Appendix A Section 7.11 (page 190)

   ...Unlike &, && guarantees left-to-right evaluation; moreover the second
   operand is not evaluated if the first operand is 0.

There is a similar line in 7.12 about ||, but read non-zero for 0. The
Second Edition is less clear (Section A7.14) omits the specific statement
'not evaluated' but it still works that way. Personally I rather like the 
&& technique Stephen J Bevan suggests.

   Alan

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Maidenhead itself is too snobby to be pleasant. It is the haunt of the
   river swell and his overdressed female companion. It is the town of showy
   hotels, patronized chiefly by dudes and ballet girls. 

   Three Men In A Boat, Jerome K. Jerome, 1889
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~