eReader options

Page 4 of 7  
On 01/16/2016 01:41 PM, Don Y wrote:

So are mine, but most of them could be tossed. otoh, you never know when you might need a 1989 National Semiconductor TTL reference book. The manual lasted longer than the company.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
rbowman wrote:

Those reference is on the 'net these days. We don't like lending books we have. Some of them returned with some missing pages. Some of them were never returned.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 7:15 PM, rbowman wrote:

No, I don't keep paper copies of databooks. I've been chasing down PDF versions of anything like that which may be needed for legacy support and archiving them.
But, I *do* keep references like the TeX books, various language manuals, The Unicode Standard, CRC, Graphics algorithms, Knuth, Stevens, Comer, etc. Things that I'll want to pick up and thumb to find a particular reference or take off to a quiet corner to refresh my memory.
There are a select few of my school textbooks (mostly the Math ones). I have the "notes" for most of the other classes stored in a box in the garage (many of the courses didn't have books -- yet. E.g., my freshman AI course was a bunch of photocopied sheets in a paper binder that later became Winston's _Artificial Intelligence_ text).
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 01/16/2016 08:33 PM, Don Y wrote:

Even some of those could use some pruning. I've got a good collection of Perl books but the question is if I'm ever going to use Perl again. Then there is the J++ book, if you want to talk about dead and gone.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 10:32 PM, rbowman wrote:

The only ones I could even *consider* would be the language manuals; many of them are for old/obsolete languages (Mumps, SNOBOL, etc.).
OTOH, they've come in handy, in the past! Especially when consulting papers written years ago.
E.g., there is a widely cloned letter-to-sound algorithm that was originally written in SNOBOL. *EVERY* implementation that I have come across -- typ in C -- adopts the strategies that are typically used *there* instead of as they were originally written.
SNOBOL uses a "reluctant" wildcard matching algorithm -- it tries to match to the smallest string possible and only ATTEMPTS to increases the characters matched if this hesitant approach fails.
Consider how you'd approach "*?" for varying target strings: "" "A" "AA" "AAA" etc.
Now, imagine a more complex grammar where you can define your own wildcards and build up sentences using those: # ::= 'A' | 'E' | 'I' | 'O' | 'U' $ ::= "LY" | "ED" | "ING" | "ENCE" etc.
Then, "productions" that combine those in arbitrary ways to form replacement rules. With a "greedy" match, you get different results than if you adopt a "reluctant" matching strategy -- one wildcard can gobble up a character that should have been handled by the *next* wildcard in the production/grammar.
Should "#+$D" (plus meaning at least one -- but possibly more -- of the preceding symbol) match "IED"? With a greedy matching strategy, the 'I' and 'E' get swallowed by the "#+" leaving nothing for the '$'. In a reluctant strategy, the "#+" only tries to gobble up the 'E' if the pattern can't be matched with *just* the 'I' being matched.
I've also been rummaging through older languages with an eye towards language features that would be suitable for a *user's* scripting language (i.e., something a non-technical person could use to say: "When I come home, at night, turn on the kitchen lights as soon as I open the door.")
Imagine doing that in many of the modern languages -- littered with lots of bizarre punctuation and idioms that make a *programmer's* life easier -- but do nothing for a NON-programmer!
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 01/16/2016 11:40 PM, Don Y wrote:

FORTH. The core language is a bit arcane but you can create words that are suitable for the end user. I did one project to develop a simple interface for QA engineers who were using a robotic arm to pick and place the components under test.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/17/2016 12:09 PM, rbowman wrote:

It isn't appropriate. Recall, you're dealing with "QA Engineers", not housewives, plumbers, accountants, etc.
The two biggest issues with FORTH are: - too hard to enforce/check syntax. I.e., "Is this combination/sequence of words legitimate/valid?" You can make a word do damn near anything so no easy way for the user to *see* what it expects "upstream". And, no way to verify ("at compile time") that the sequence is even legitimate - the RPN nature (stack machine) is incredibly CONSISTENT -- but, counterintuitive. People are more likely to think along the lines of "do SOMETHING to THIS and THAT"; not "THIS and THAT have SOMETHING done to them"
Beyond that, it also doesn't conveniently lend itself to the sorts of services that an "applet" needs to avail itself of (in my world). I.e., I deliberately want the heavy lifting to be done in services that are provided to the user: recognize(&face); speak(prompt); listento(response); etc.
So, there is inherently a high degree of parallelism. IME, people have a hard time dealing with parallelism/concurrency. But, can more readily think about it in a procedural framework: "I expect <something> to have been done at this point..." (so the code can implicitly wait for it, *then*). The applet writeer can think in more linear terms and the "environment" can exploit parallelism for efficiency and abstraction (hiding lots of mechanism from the user/writer)
It's REALLY a hard problem! Complicate it by the fact that you (I) want to address a wide population of potential users -- each with potentially different abilities and HANDICAPS! I.e., something that requires lots of keystrokes to compose would be difficult for a movement impaired individual to write; something with lots of cryptic "vowel-less" abbreviations would be hard to "speak" to a visually impaired writer; etc.
OTOH, only the "hard" problems are worth the time to undertake! :>
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 01/17/2016 01:42 PM, Don Y wrote:

You can sometimes hide the RPN but it takes work. I've got a HP 16C calculator. It was always fun to leave it laying around. For extra credits, set it to hex mode. If they got past the RPN, 45 73 + is WHAT?
Semi apropos, I saw a cartoon recently that asked 'How do you generate a random string?" "Put a web designer in front of Vim and tell him to save and exit."
https://lol.browserling.com/
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/17/2016 3:38 PM, rbowman wrote:

I took a job at a shop that used "split octal". I.e., 0xFFFF would be written as 0377377. Entirely different mindset! (and you actually learned to debug *in* octal -- nothing symbolic! Gee, I wonder why they went belly-up?)

I'm basing much of my scripting language on Limbo. To give you a feel for the (original) syntax, while being HIGHLY cooperative in choosing identifiers (my comments interspersed /* style):
/* declare "link" as a variable of type (communication) channel whose contents will always be tuples of (integer, string) */ link: chan of (int, string);
/* declare "print" to be a shorthand reference for the print MEMBER of a module of type "Sys". This is a typing economy (see below) */ print: import Sys;
/* init() is the equivalent of main(). The first argument, by convention, REFerences a drawing context (think display) and the second argument is a list (not array!) of strings -- like argv. As the dummy variables chosen here for each of these are "nil", we're discarding any means of referencing those by identifiers -- nil is sort of '', '\0', NULL, etc. */ init( nil: ref Draw->Context, nil: list of string ) { /* two variables that reference modules that are dynamically loaded. the first references a module of type "Sys" and the second of type "Bufio". Think of them as DLL's of sorts. Within the DECLARATION of each (not shown, here), there is a pathname that indicates the location of the module in the filesystem. By convention, the PATH member of each of these module type declarations is a string constant indicating that path. E.g., /modules/sys.m */ sys = load Sys Sys->PATH; bufmod = load Bufio Bufio->PATH;
/* declare (AND DEFINE!) a variable to reference the stdin file descriptor. The Sys (uppercase) module type has a member called "fildes" that returns a file descriptor object corresponding to the argument presented. E.g., '0' being stdin, by convention. Note that "sys" (lowercase) is a live variable that references a "Sys" type module. So, sys->fildes(0) invokes the fildes method with argument of '0' to yield the "stdin" filedescriptor */ stdin := sys->fildes(0);
/* use the fopen() member in the Bufio module type (which we can reference through the bufmod variable -- see above) to open the stdin file descriptor. The OREAD constant in the Bufio module declaration is usaed (by convention) to indicate read mode */ buffer = bufmod->fopen(stdin, bufmod->OREAD)
/* previously declared link as a channel type. Now, actually instantiate a channel of that type and let link reference it */ link = chan of (int, string);
/* create a new thread to run "get_data()" while passing the communication channel we just created to it as an argument */ spawn get_data(link);
/* continue by wiring "put_results" to that same communication channel */ put_results(link); }
/* declare 3 manifest constants having values of 0, 1, 2 (iota means ++) */ DONE, WORD, NADA: con iota;
/* get_data takes a communication channel of (integer,string) tuples as its sole argument. It's been spawned to run as an independant thread */ get_data( destination: chan of (int, string) ) { /* declare (the role of the ':' in the assignment) a variable called "aString" as having the same type as the return type of the gets() member of the Bufio module type (see above). Then, DEFINE (the role of the '=' in the assignment) the value of that variable to be the result of that gets() invocation -- which happens to get a string of characters up to a '\n' from whatever filedescriptor is associated with the "buffer" on which it is invoked. Keep doing this until the string returned is empty (nil) */ while ((aString := buffer.gets('\n')) != nil) { /* split the string, above, into words delimited by space, tab, newline. Use the "tokenize" member of the Sys module (referenced through the "sys" variable) to do this, returning a tuple that consists of the number of tokens and a LIST of tokens, each a string in itself. Note the use of ":=" to DECLARE and DEFINE the variables in the tuple on the left side of the assignment */ (words, wordlist) := sys->tokenize(aString, " \t\n"); /* if no words, then the input must have been terminated. Send a tuple down the communication channel indicating that */ if (0 == words) destination <-= (NADA, ""); /* otherwise, pull words off the LIST and send them individually down the communication link */ else for ( ; wordlist != nil; wordlist = tl wordlist) destination <-= (WORD, hd wordlist); } /* send a tuple that indicates we're done */ destination <-= DONE; }
LINELENGTH: con 72;
/* process the incoming data arriving over a channel of (integer, string) */ put_data( source: chan of (int, string) ) { /* declare variables (note lack of '=' means haven't been ASSIGNED yet */ classification: int; token: string;
/* count the number of characters that have been printed on this "line" */ for (position := 0; ; ) { /* wait for a tuple to arrive on the specified communication channel. Assign the arriving tuple members to these two variables, above */ (classification, token) =<- source;
/* "switch" statement */ case classification { NADA => /* print empty line, reset character counter */ print("\n\n"); position = 0; WORD => /* if appending token would exceed line length, inject a newline */ if (position + len token > LINELENGTH) { print("\n"); position = 0; } /* print the token -- "print()" is similar to printf() */ print("%s ", token); /* update character position on the line */ position += len token + 1; DONE => sys->print("\n"); # don't have to use the imported alternative! exit; } } }
Notice all the syntactic sugar? And, the typical nod to programmer laziness ("int" instead of "integer" or "number"; "hd" instead of "head" or "car"; "tl" instead of "tail" or "cdr"; ':' vs. '=' vs. ":="; "nil" instead of "empty" or "unused"; etc.).
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/15/2016 10:15 AM, rbowman wrote:

Nope - PDF only. Thanks for mentioning the Sony. You inspired me to do a bit of browsing - found a nice web site that lists supported formats for e ink ereaders (but not for color ereaders).
<http://www.the-ebook-reader.com/ <http://www.the-ebook-reader.com/ebook-reader-comparison.html <http://www.the-ebook-reader.com/large-ebook-readers.html
Lots of other info too - reviews, recommendations. . .
Susan
--






Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/15/2016 10:47 AM, Susan Bugher wrote:

Thanks, Susan, I'll chase down the links and see if it helps me sort out the "mess". I suspect SWMBO won't be happy with *any* of these options ("Why can't I just have a BOOK??!")
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/15/2016 2:10 PM, Don Y wrote:

Hey, that might be the best and least expensive solution. Order used books online, delivered to your doorstep a few days later. .
for example: <http://www.abebooks.com/servlet/SearchResults?sts=t&tn=snow+crash Snow Crash by Stephenson, Neal - starting at $3.95 total
A lot of recent paperbacks in good condition cost about $3.00 total. example: <http://www.abebooks.com/servlet/SearchResults?an=Suzanne+Collins&sts=t&tn=Hunger+games
Susan
--






Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/15/2016 8:27 PM, Susan Bugher wrote:

The problem is you can't find *new releases* in the used book market.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/15/2016 10:41 PM, Don Y wrote:

I believe they show up pretty fast - but maybe not real cheap at first. Just threw that out as one more option to consider. Good luck with your quest for the best solution.
Susan
--




Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 10:31 AM, Susan Bugher wrote:

And you have to go *looking* for them. The big appeal of the library is you submit a request for an item (even before they have considered buying it) and they inform you when it's arrived.

Thanks! I think we'll try Ed's suggestion of actually putting some devices *in* her hands and see what she thinks. I'm sure the demo units will have *some* sort of "reading material" preinstalled.
A neighbor has an iPad so I can ask her if she has any "reading" software that she could demo for us. (doubtful, not the "reading type"!)
After seeing those, I can show her what *I* use, just so she has a recent reference against which to compare...
And, if she opts for "none of the above", <shrug>
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 2:08 PM, Don Y wrote:

>

Don't recall what you use. You might take a look at these: :
FBReader is a free (and ad-free) multi-platform ebook reader. https://fbreader.org/
Cool Reader A cross-platform XML/CSS based eBook reader http://sourceforge.net/projects/crengine/

Susan
--




Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 12:53 PM, Susan Bugher wrote:

My documents are all being standardized as PDF's. This lets me access them with one reader (software) regardless of from which computer I opt to access them. It also lets me put things other than text/illustration into the file.

You <grin>, I <frown>! :<
(sigh) I can truly sympathize with IT folks given the sort of crap they have to address...
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
Don Y posted for all of us...

Work for a school district. Add teachers, administrators, support & maintenance users the add 20% to start. Don't worry about the kids because the admin doesn't, they help each other, and the older ones that cause problems can't keep their mouths shut on each other and don't like their "stuff" being taken away.
--
Tekkie

Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 01/15/2016 08:41 PM, Don Y wrote:

Patience... I use Netflix and watch some of the cable TV programs on DVD so for current shows I'm a year behind. One has to be careful to avoid spoilers.
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload
On 1/16/2016 1:06 PM, rbowman wrote:

She hears of titles that she will want to read -- from friends, "the media", or referenced in other things she's reading. Then, goes to the library's website to see if they have the title. If so, places a hold and waits her turn -- never having to remember she's done so (they remember *for* her!)
If they don't have it, she will try ILL (again through the website) if it is an "old" title (ILL won't process "new" titles). Again, the onus is again on the library to remember this for her.
If too new for ILL (or, unobtainable), she'll "suggest a title for purchase" which typically places her on the waiting list for that title as a consequence of her suggestion.
So, for *print* material, the library proves to be an excellent resource! Not only do they have (or get!) the materials, but they also keep track of what they *should* be getting for you thereby freeing you from remembering that you were looking/waiting for a particular title.
For technical literature (article/journal reprints, etc.), it provides the same sort of service for me (invariably, they produce a paper document -- even if it had been transmitted via facsimile). It's rare that they *can't* find something but that I *could*; relatively common for them to find things that I *can't* (cuz I don't have borrowing privileges at the Las Vegas Public Library, etc.)
OTOH, when they exhaust their capabilities, I can still dig deeper (e.g., writing directly to authors).
[I have to submit some FOIA requests for some other documents I want/need -- no way the library would undertake that for me!]
Add pictures here
<% if( /^image/.test(type) ){ %>
<% } %>
<%-name%>
Add image file
Upload

Related Threads

    HomeOwnersHub.com is a website for homeowners and building and maintenance pros. It is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.