Showing posts with label ONLINE. Show all posts
Showing posts with label ONLINE. Show all posts

Saturday, January 29, 2011

Updated Post: Arbsorption Of Knowledge In The Computer Age

Hello again, --> GENERAL WARNING: If you don't like to read a lot of text online, blow off this post! Also, ZOOM OUT when you're done reading for a nice surprise! It's a tech opinion piece and won't solve any problems that can't be cured by slowing your life down a bit and paying more attention to the moment. That being said, even though this text is meant to be right above the "F" I'm going to put this disclaimer here anyway, just to see how many complaints I get. This post is full of misleading, and often completely incorrect, information and a few typos. For instance, I'm well aware that the square of 25 is not 3. Sometimes, I use the wrong case (we instead of I) on purpose. I don't address some points at all. Depending upon how some folks read
online (based on my own stockpile of comments and responses to posts) you may very
well have either missed what I just wrote or will have forgotten it by the time you
get to the point where I make that false assertion. Hopefully we're below the Adsense block now, so we can begin with the top of the "F."

Today I'm going to follow up on post we did a good long while ago regarding absorption of knowledge in the computer age. And I'm going to get a few things out of the way right off the bat, just in case you're the type of "F" reader they refer to in that previous post (more on that farther down the page ;) I was originally going to post some ridiculously bad code, explain that I was doing it on purpose, and why, with text in the "F pattern" and see how many people still complained about the shoddy quality of the code. Instead, I looked back at some older posts where the code was intentionally bad (in order to illustrate concepts related to the porting of shell to Perl or other programming languages more easily - since if two different languages are more structurally and visually similar, it's generally easier for anyone to process their own translation - my opinion, of course ;) and decided that, since I've already done that, it would be cheap to do it again. Easy for me. Lame for you. Believe it or not, that original series of posts on porting continued to generate complaint mails, even though the follow-up (linked to above) and rationale was spelled out within the top section of the post and is just a small part of a pretty sparse read; especially when compared to the endless lunatic yammering I slap down on the virtual page nowadays ;) If that link generates more complaints about improper or inefficient code we'll be numb with indifference... There's only so much caring one man can do ;) This has been the (possibly slightly goofed up by Adsense) top of the "F."

instead, i'm going to attempt to explain (and have fun with)
one basic concept in the aRticle from our prEvious post on computer reADing habiTs.
tHE writeR begIns the article (quite cleverly, actually, since he's assuming
you'll be the type of reader he describes and packs that information in the
relevant places) exploring the theory that most children (and a lot of teenaGers
and adults) are "f" readers when it comes to reading text on tHe inTernet. the
"f" is Somewhat of a double entendre (I'm going with the strict french translation
of "DoublE understanding" since the term is mOstly used to describe a "phrase"
rather than a single letter ;) in this case, since it's used as both a mnemonic
(the less to remember you by, my dear ;) for "F"ast and as a visual descripTion
of the patH most onlIne reader'S eyes follow when reading books or text on the
comPuter screen. if you've reAd this faR, the remAinder of the post should be
completely uninteresting. we tried to do a few thinGs on purpose to make this
post enteRtAining on more than just a Plain level. wHatever doesn't make sense,
probably will when you see the forest :)

Just for the record, I prefer to read books on paper. Not because reading online
makes me lose control like Patty Duke in the presence of a hot dog (see The Patty Duke Show Theme Song
for the full lyrics to that bizarre reference ;), but I find that reading a computer
screen is generally either uncomfortable (sitting in a chair or trying to balance a
laptop on my knees) or outright painful (bad refresh rates and certain color schemes
make my eyes dry up like juicy oranges and twitch uncontrollably). Bless all of you
who enjoy reading lots of text online. If I can, I go the library and get the book
instead. Unprovoked question: If I can't stand reading lots of text on a computer,
why do I write such long blog posts? Am I sadist, a masochist, both or just oblivious? ;)

Generally, I will read every word on an Internet page if, and only if, I have a
particular reason to. This is parallel to my reading habits offline. If I like
an author's work or I find a book on a subject I find interesting, you can bet I'll
read every single word in that book. Speed reading is fine for some (I guess), but
it seems to contradict any sense of enjoyment. Soaking up lyrical prose at 50 pages
a minute would be, probably, a really wonderful way to have an anxiety attack that
would make Evelynn Wood proud ;)

In much the same way (both online and offline), if I'm just looking for a particular
nugget of information, I'm not sure what letter my eye-scan pattern creates, but I
definitely skim. This is one point where I felt the article fell a bit short of
exploring both sides of the issue. The assumption being that people read "everything"
on the Internet the same way they read their Facebook pages doesn't necessarily hold water.
It's certainly true in some situations.

As a for instance: If, for some strange reason, I was surfing the web (nobody seems to do that any more. They stopped driving down the information superhighway, too. Another example of Howard Johnson's Syndrome, except sometimes under water ;), we didn't know the square root of 25 (that's actually supposed to be the strange part ;) and discovered that the only place it was listed was on an online encyclopedia entry on square roots in general, I'd go there and check it out. One humongous old-school web page that covered everything from origin of the square, the root, why
the square and/or the root may have nothing to do with numbers, the history of the square root, detailed biographies of people involved in the development, application
and sustained nutrition of the Lego-like plant, etc. Now, keeping in mind that I only want to know that the square of 25 is 3, I would, of course, skim that page like crazy; probably looking for a table or list of some sort that listed out common
numbers and their square roots. This activity would be considered "F" type reading. More like "spots on a Dalmatian" reading, but who's counting? ;) I would be reading fast, not because I have the attention span of some dumb animal with a very short attention span (that's another situation of an entirely different colour ;), but because there was only one piece of information on that page that I was actually interested in reading. Taken out of context, this might reflect poorly on me and my reading habits, but, taken within the proper context, it would make me seem reasonably intelligent and somewhat efficient.

Another reason kids (there was a big deal made about how having computers in schools
didn't' help improve a child's education, in and of itself) might read more quickly online (And I am doing my very best to defend all of you complete idiots out there -
I'm just kidding, of course, but I'm ready for the hate mail ;) is that a statistical majority of content available for consumption online is worthless crap.
Phenomena like "Ad blindness" and "F" reading are not convenient fictions designed to make us bookish-folk feel superior. Think about how often you go to the library and just browse a few pages from a couple hundred books. Have you ever done that? Really? And, supposing you did, how many of those books would be plastered with advertising (like the advertisements on this page that, if you read regularly enough, basically cease to exist after a certain amount of time)? Or how many would
spontaneously open other books (in the "Adult" section ;)? Or how many would have titles like "The History and Culture of Ancient Sumeria" and actually be about 500 different ways you can eat Haggis and manage not to vomit?

Also, the 10 to 40 dollars that the average person might pay for
unlimited Internet access per month makes the ability to consume
volumes and volumes of useless information incredibly easy. If you
had to pay 40 dollars for a real book, would you buy the same trash
you spend hours mooning over online? My guess is probably not. In
the offline world, that 40 dollar expenditure on an 800 page book
that promised you (no matter how little marketing experience you had)
that it could teach you a revolutionary new method of selling antique
dildoes to geriatric women (or something else less offensive to geriatric
women ;) would seem like "COST." For your 40 dollar
monthly Internet access fee, that 800 page PDF would seem like
"BENEFIT." No matter how I feel about geriatric women
(for some reason, I just can't stop writing that now - I feel like Norm
McDonald talking about "hookers"
;), the way in which you read that
book in the offline world would, most likely, be much different than you way
you would read it online. Offline you'd probably pay more attention. After
all you just spent your 40 dollars and this is all you have to show for it
(those geriatric women won't be on life-support forever ;). Online, you could
skim the book to find all the relevant information you needed about dildoes and
move along, having, theoretically, spent only a few cents of your 40 dollar
investment. You, and whatever other kinks you're carrying around, would still
have 39 dollars and 98 cents worth of perusing to do ;)

DOG'S IS GOOD FOOD! if you've even scanned down THis far, you
probably rEad that line. why? because it was pRintEd In bold in an article that iS
mostly devoid of bolditude (it's NOt a real word, Look it up in the phonE book ;) did you read that and consider that it didn't make a whole lot of sense. are you wondering, right now, if I having just been jerking you around in a solipsistic pseudo-intellectual diatribe with the sole intention of wasting your time? you're probably right. as a matter of FacT, you are almost definitely parked on the left SIDE-street ;) thIs has beeN an experimenT, after all. tHe thIng that'S really most questionable about this Piece is the question of "why would I go to such lengths just to see whAt happens?" think about it. admitting you've just wRitten An opinion piece that doesn't necessarily Gel on puRpose, provides no reAl value and
may not have even been worth scanning is a risky Proposition for a blog autHor. okay, more directly, it's a risky proposition for a blog author who wants you to continue to read his blog and has a reputation to uphold as a semi-competent working
professional in the field. i'm one of those kind of blog writers. but, now that you've read this post and its half-hearted apology are you more or less likely to trust that the next post you read will contain useful and/or relevant information?

Believe it or not, I'm actually interested in your opinion. Let me know what you think. Was this post as fun for you as it was for me? Did you enjoy finding all the incorrect and goofed-up stuff inside it? Do you think you found it all? And, most importantly, does this little math trick at the end redeem this post in any way
whatsoever? I put it on the bottom of the "F" so it would be easy to find, so here it is:

If you want to multiply any number by 5, divide it by 2 and then move the decimal place one over to the right. If you want to multiply any number by 25, divide it by
4 and move the decimal place to the right two spaces. And, yep, it even works for multiplying any number by 125. To do that divide it by 8 and move the decimal place
over 3 spaces. If you have trouble dividing by any number greater than, but a multiple of 2, just divide by 2 twice (to divide by 4) and divide by 2 three times (to divide by 8). If you can't divide by two, I know a great Elementary school. I can probably get you in on my kid's recommendation ;)

Ex:

133 x 5 = (133/2) = 66.5 = 665
133 x 25 = (133/4) = 33.25 = 3325
133 x 125 = (133/8) = 16.625 = 16625

Cool, yeah? "F" me - It's an "E" ;)

Cheers,

, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Sunday, May 31, 2009

Captain Underpants Name Changer

Hey there,

This has almost zero to do with Linux or Unix, so I'm not going to promote it, but I first ran into "Captain Underpants and the Perilous Plot of Professor Poopypants" sometime around 2000.

Brought to you by Pinky Lizardshorts

Back then, the infamous "name changer" email was going around. It was quite lengthy and included a manual process to find your "poopypants" name. I was surprised to actually find the name changer online. There are actually several versions, but this one adheres to the original rules (Some just have you enter your first and last names, but the original has you enter your first name, the first inital of your last name and the last letter of your last name in order to get your "poopypants" name).

Follow this link to the Professor Poopypants Name Change-O-Chart and enjoy an infantile laugh or two :)

Cheers :)

, Pinky Lizardshorts




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Sunday, May 17, 2009

Online Hacker-Leet Encoder - Still Fun After All These Years!

Hey there,

A good Sunday to you all :)

Today, I stumbled across this Hacker/Leet "translator" that's been online at www.albinoblacksheep.com for several years now. The reason I put "translator" in quotes is that this online script actually only "encodes" (if we're going to be fussy ;) your regular text into Hacker/Leet text. There is no facility for reverse-translating your Hacker/Leet language back into regular text. That would (I imagine) be a nifty trick if you could pull it off ;)

The site, itself, has some other interesting stuff on it, but the decoder/translator is my favorite, by far. It even allows you to choose the degree to which you want to "Hackerize" your text!

We'll use the preceding paragraph as a simple example and feed it to the script at the default 50% translation level. The output becomes this:

7h3 $173, 17$3#, h4$ $0m3 07h3r 1n73r3$71n9 $75 0n 17, b57 7h3 P3(0P3r/7r4n$#470r 1$ m% 4v0r173, b% 4r. 17 3v3n 4##0w$ %05 70 (h00$3 7h3 P39r33 70 wh1(h %05 w4n7 70 "H4(|{3r123" %05r 73x7!

A bit difficult to read. At 100%, you get this!

7|-|3 $173, 17$3#, |-|4$ $0|\/|3 07|-|3. 1|\|73.3$71|\|9 $75 0|\| 17, _57 7|-|3 P3(0P3./7.4|\|$#470. 1$ |\/|% 4\/0.173, _% 4.. 17 3\/3|\| 4##0\/\/$ %05 70 (|-|00$3 7|-|3 P39.33 70 \/\/|-|1(|-| %05 \/\/4|\|7 70 "|-|4(|{3.123" %05. 73)(7!

???

Generally, about 35% is good enough (and still relatively legible ;)

Th3 $1t3, 1t$3#f, h4$ $0m3 0th3r 1nt3r3$t1ng $t5ff 0n 1t, b5t th3 P3(0P3r/tr4n$#4t0r 1$ m% f4v0r1t3, b% f4r. 1t 3v3n 4##0w$ %05 t0 (h00$3 th3 P3gr33 t0 wh1(h %05 w4nt t0 "H4(k3r1z3" %05r t3xt!

At 30% and below, the translation gets reduced to just doing simple letter number replacments, which are no fun at all ;) 30% translation below:

Th3 s1t3, 1ts3lf, h4s s0m3 0th3r 1nt3r3st1ng stuff 0n 1t, but th3 d3c0d3r/tr4nsl4t0r 1s my f4v0r1t3, by f4r. 1t 3v3n 4ll0ws y0u t0 ch00s3 th3 d3gr33 t0 wh1ch y0u w4nt t0 "H4ck3r1z3" y0ur t3xt!

If you have the time, go over there and check it out. It's a lot of fun. Try recursive translation, too. Then let people puzzle over it ;)

Cheers,

, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Friday, February 20, 2009

The Follow-Up: Absorption Of Knowledge In The Computer Age

Hello again, --> GENERAL WARNING: If you don't like to read a lot of text online, blow off this post! It's a tech opinion piece and won't solve any problems that can't be cured by slowing your life down a bit and paying more attention to the moment. That being said, even though this text is meant to be right above the "F" I'm going to put this disclaimer here anyway, just to see how many complaints I get. This post is full of misleading, and often completely incorrect, information and a few typos. For instance, I'm well aware that the square of 25 is not 3. Sometimes, I use the wrong case (we instead of I) on purpose. I don't address some points at all. Depending upon how some folks read
online (based on my own stockpile of comments and responses to posts) you may very
well have either missed what I just wrote or will have forgotten it by the time you
get to the point where I make that false assertion. Hopefully we're below the Adsense block now, so we can begin with the top of the "F."

Today I'm going to follow up on post we did at the beginning of this week regarding absorption of knowledge in the computer age. And I'm going to get a few things out of the way right off the bat, just in case you're the type of "F" reader they refer to in that previous post (more on that farther down the page ;) I was originally going to post some ridiculously bad code, explain that I was doing it on purpose, and why, with text in the "F pattern" and see how many people still complained about the shoddy quality of the code. Instead, I looked back at some older posts where the code was intentionally bad (in order to illustrate concepts related to the porting of shell to Perl or other programming languages more easily - since if two different languages are more structurally and visually similar, it's generally easier for anyone to process their own translation - my opinion, of course ;) and decided that, since I've already done that, it would be cheap to do it again. Easy for me. Lame for you. Believe it or not, that original series of posts on porting continued to generate complaint mails, even though the follow-up (linked to above) and rationale was spelled out within the top section of the post and is just a small part of a pretty sparse read; especially when compared to the endless lunatic yammering I slap down on the virtual page nowadays ;) If that link generates more complaints about improper or inefficient code we'll be numb with indifference... There's only so much caring one man can do ;) This has been the (possibly slightly goofed up by Adsense) top of the "F."

instead, i'm going to attempt to explain (and have fun with)
one basic concept in the aRticle from our prEvious post on computer reADing habiTs.
tHE writeR begIns the article (quite cleverly, actually, since he's assuming
you'll be the type of reader he describes and packs that information in the
relevant places) exploring the theory that most children (and a lot of teenaGers
and adults) are "f" readers when it comes to reading text on tHe inTernet. the
"f" is Somewhat of a double entendre (I'm going with the strict french translation
of "DoublE understanding" since the term is mOstly used to describe a "phrase"
rather than a single letter ;) in this case, since it's used as both a mnemonic
(the less to remember you by, my dear ;) for "F"ast and as a visual descripTion
of the patH most onlIne reader'S eyes follow when reading books or text on the
comPuter screen. if you've reAd this faR, the remAinder of the post should be
completely uninteresting. we tried to do a few thinGs on purpose to make this
post enteRtAining on more than just a Plain level. wHatever doesn't make sense,
probably will when you see the forest :)

Just for the record, I prefer to read books on paper. Not because reading online
makes me lose control like Patty Duke in the presence of a hot dog (see The Patty Duke Show Theme Song
for the full lyrics to that bizarre reference ;), but I find that reading a computer
screen is generally either uncomfortable (sitting in a chair or trying to balance a
laptop on my knees) or outright painful (bad refresh rates and certain color schemes
make my eyes dry up like juicy oranges and twitch uncontrollably). Bless all of you
who enjoy reading lots of text online. If I can, I go the library and get the book
instead. Unprovoked question: If I can't stand reading lots of text on a computer,
why do I write such long blog posts? Am I sadist, a masochist, both or just oblivious? ;)

Generally, I will read every word on an Internet page if, and only if, I have a
particular reason to. This is parallel to my reading habits offline. If I like
an author's work or I find a book on a subject I find interesting, you can bet I'll
read every single word in that book. Speed reading is fine for some (I guess), but
it seems to contradict any sense of enjoyment. Soaking up lyrical prose at 50 pages
a minute would be, probably, a really wonderful way to have an anxiety attack that
would make Evelynn Wood proud ;)

In much the same way (both online and offline), if I'm just looking for a particular
nugget of information, I'm not sure what letter my eye-scan pattern creates, but I
definitely skim. This is one point where I felt the article fell a bit short of
exploring both sides of the issue. The assumption being that people read "everything"
on the Internet the same way they read their Facebook pages doesn't necessarily hold water.
It's certainly true in some situations.

As a for instance: If, for some strange reason, I was surfing the web (nobody seems to do that any more. They stopped driving down the information superhighway, too. Another example of Howard Johnson's Syndrome, except sometimes under water ;), we didn't know the square root of 25 (that's actually supposed to be the strange part ;) and discovered that the only place it was listed was on an online encyclopedia entry on square roots in general, I'd go there and check it out. One humongous old-school web page that covered everything from origin of the square, the root, why
the square and/or the root may have nothing to do with numbers, the history of the square root, detailed biographies of people involved in the development, application
and sustained nutrition of the Lego-like plant, etc. Now, keeping in mind that I only want to know that the square of 25 is 3, I would, of course, skim that page like crazy; probably looking for a table or list of some sort that listed out common
numbers and their square roots. This activity would be considered "F" type reading. More like "spots on a Dalmatian" reading, but who's counting? ;) I would be reading fast, not because I have the attention span of some dumb animal with a very short attention span (that's another situation of an entirely different colour ;), but because there was only one piece of information on that page that I was actually interested in reading. Taken out of context, this might reflect poorly on me and my reading habits, but, taken within the proper context, it would make me seem reasonably intelligent and somewhat efficient.

Another reason kids (there was a big deal made about how having computers in schools
didn't' help improve a child's education, in and of itself) might read more quickly online (And I am doing my very best to defend all of you complete idiots out there -
I'm just kidding, of course, but I'm ready for the hate mail ;) is that a statistical majority of content available for consumption online is worthless crap.
Phenomena like "Ad blindness" and "F" reading are not convenient fictions designed to make us bookish-folk feel superior. Think about how often you go to the library and just browse a few pages from a couple hundred books. Have you ever done that? Really? And, supposing you did, how many of those books would be plastered with advertising (like the advertisements on this page that, if you read regularly enough, basically cease to exist after a certain amount of time)? Or how many would
spontaneously open other books (in the "Adult" section ;)? Or how many would have titles like "The History and Culture of Ancient Sumeria" and actually be about 500 different ways you can eat Haggis and manage not to vomit?

Also, the 10 to 40 dollars that the average person might pay for
unlimited Internet access per month makes the ability to consume
volumes and volumes of useless information incredibly easy. If you
had to pay 40 dollars for a real book, would you buy the same trash
you spend hours mooning over online? My guess is probably not. In
the offline world, that 40 dollar expenditure on an 800 page book
that promised you (no matter how little marketing experience you had)
that it could teach you a revolutionary new method of selling antique
dildoes to geriatric women (or something else less offensive to geriatric
women ;) would seem like "COST." For your 40 dollar
monthly Internet access fee, that 800 page PDF would seem like
"BENEFIT." No matter how I feel about geriatric women
(for some reason, I just can't stop writing that now - I feel like Norm
McDonald talking about "hookers"
;), the way in which you read that
book in the offline world would, most likely, be much different than you way
you would read it online. Offline you'd probably pay more attention. After
all you just spent your 40 dollars and this is all you have to show for it
(those geriatric women won't be on life-support forever ;). Online, you could
skim the book to find all the relevant information you needed about dildoes and
move along, having, theoretically, spent only a few cents of your 40 dollar
investment. You, and whatever other kinks you're carrying around, would still
have 39 dollars and 98 cents worth of perusing to do ;)

DOG'S IS GOOD FOOD! if you've even scanned down THis far, you
probably rEad that line. why? because it was pRintEd In bold in an article that iS
mostly devoid of bolditude (it's NOt a real word, Look it up in the phonE book ;) did you read that and consider that it didn't make a whole lot of sense. are you wondering, right now, if I having just been jerking you around in a solipsistic pseudo-intellectual diatribe with the sole intention of wasting your time? you're probably right. as a matter of FacT, you are almost definitely parked on the left SIDE-street ;) thIs has beeN an experimenT, after all. tHe thIng that'S really most questionable about this Piece is the question of "why would I go to such lengths just to see whAt happens?" think about it. admitting you've just wRitten An opinion piece that doesn't necessarily Gel on puRpose, provides no reAl value and
may not have even been worth scanning is a risky Proposition for a blog autHor. okay, more directly, it's a risky proposition for a blog author who wants you to continue to read his blog and has a reputation to uphold as a semi-competent working
professional in the field. i'm one of those kind of blog writers. but, now that you've read this post and its half-hearted apology are you more or less likely to trust that the next post you read will contain useful and/or relevant information?

Believe it or not, I'm actually interested in your opinion. Let me know what you think. Was this post as fun for you as it was for me? Did you enjoy finding all the incorrect and goofed-up stuff inside it? Do you think you found it all? And, most importantly, does this little math trick at the end redeem this post in any way
whatsoever? I put it on the bottom of the "F" so it would be easy to find, so here it is:

If you want to multiply any number by 5, divide it by 2 and then move the decimal place one over to the right. If you want to multiply any number by 25, divide it by
4 and move the decimal place to the right two spaces. And, yep, it even works for multiplying any number by 125. To do that divide it by 8 and move the decimal place
over 3 spaces. If you have trouble dividing by any number greater than, but a multiple of 2, just divide by 2 twice (to divide by 4) and divide by 2 three times (to divide by 8). If you can't divide by two, I know a great Elementary school. I can probably get you in on my kid's recommendation ;)

Ex:

133 x 5 = (133/2) = 66.5 = 665
133 x 25 = (133/4) = 33.25 = 3325
133 x 125 = (133/8) = 16.625 = 16625

Cool, yeah? "F" me - It's an "E" ;)

Cheers,

, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, February 16, 2009

The Absorption Of Knowledge In the Computer Age: The Setup

Hey There,

Today's post is going to be somewhat of a departure from the material you usually read on this blog, although it will fit perfectly when it gets book-ended in the middle of the week by its follow-up. If you actually read the entire text below, you'll have already disproved the theory it proposes, however, based on an online experiment we want to do on this blog ( which "will" contain useful and relevant information ;) it must be posted before the actual implementation. And, to the detriment of the massive amount of money we make typing this rag every day ( insert appropriate emoticon here ;) we need to post it on a day that's generally among the more heavily read. In fact ( for this post, and its follow-up ) we're going to specifically request that you do not click on any of the ads on this page ( Google, affiliate, etc - which we must point out is in "no way" an effort to direct you to click on any ad on this page. Hopefully that will keep Google from closing our account. It's very important that this not happen, since we need that payday to buy snacks ;)

For a bit of a preview of what we have coming up this week, we somewhat disagree with the opinion put forth in the attached article below. In some respects, though, we think it's dead on. We'll see. And so will you... maybe ;)

We'll revisit this before the week is out. If you want to read more about online reading habits, check out chronicle.com.

Let the experiment begin and enjoy the dry-prose! :)


Online Literacy Is a Lesser Kind



Slow reading counterbalances Web skimming








When Jakob Nielsen, a Web researcher, tested 232 people for how they read pages on screens, a curious disposition emerged. Dubbed by The New York Times "the guru of Web page 'usability,'" Nielsen has gauged user habits and screen experiences for years, charting people's online navigations and aims, using eye-tracking tools to map how vision moves and rests. In this study, he found that people took in hundreds of pages "in a pattern that's very different from what you learned in school." It looks like a capital letter F. At the top, users read all the way across, but as they proceed their descent quickens and horizontal sight contracts, with a slowdown around the middle of the page. Near the bottom, eyes move almost vertically, the lower-right corner of the page largely ignored. It happens quickly, too. "F for fast," Nielsen wrote in a column. "That's how users read your precious content."



The F-pattern isn't the only odd feature of online reading that Nielsen has uncovered in studies conducted through the consulting business Nielsen Norman Group (Donald A. Norman is a cognitive scientist who came from Apple; Nielsen was at Sun Microsystems). A decade ago, he issued an "alert" entitled "How Users Read on the Web." It opened bluntly: "They don't."



In the eye-tracking test, only one in six subjects read Web pages linearly, sentence by sentence. The rest jumped around chasing keywords, bullet points, visuals, and color and typeface variations. In another experiment on how people read e-newsletters, informational e-mail messages, and news feeds, Nielsen exclaimed, "'Reading' is not even the right word." The subjects usually read only the first two words in headlines, and they ignored the introductory sections. They wanted the "nut" and nothing else. A 2003 Nielsen warning asserted that a PDF file strikes users as a "content blob," and they won't read it unless they print it out. A "booklike" page on screen, it seems, turns them off and sends them away. Another Nielsen test found that teenagers skip through the Web even faster than adults do, but with a lower success rate for completing tasks online (55 percent compared to 66 percent). Nielsen writes: "Teens have a short attention span and want to be stimulated. That's also why they leave sites that are difficult to figure out." For them, the Web isn't a place for reading and study and knowledge. It spells the opposite. "Teenagers don't like to read a lot on the Web. They get enough of that at school."



Those and other trials by Nielsen amount to an important research project that helps explain one of the great disappointments of education in our time. I mean the huge investment schools have made in technology, and the meager returns such funds have earned. Ever since the Telecommunications Act of 1996, money has poured into public-school classrooms. At the same time, colleges have raced to out-technologize one another. But while enthusiasm swells, e-bills are passed, smart classrooms multiply, and students cheer — the results keep coming back negative. When the Texas Education Agency evaluated its Technology Immersion Pilot, a $14-million program to install wireless tools in middle schools, the conclusion was unequivocal: "There were no statistically significant effects of immersion in the first year on either reading or mathematics achievement." When University of Chicago economists evaluated California schools before and after federal technology subsidies (the E-Rate program) had granted 30 percent more schools in the state Internet access, they determined that "the additional investments in technology generated by E-Rate had no immediate impact on meas-ured student outcomes." In March 2007, the National Center for Education Evaluation and Regional Assistance evaluated 16 award-winning education technologies and found that "test scores were not significantly higher in classrooms using selected reading and mathematics software products." Last spring a New York State school district decided to drop its laptop program after years of offering it. The school-board president announced why: "After seven years, there was literally no evidence it had any impact on student achievement — none."



Those conclusions apply to middle-school and high-school programs, not to higher education (which has yet to produce any similarly large-scale evaluations). Nevertheless, the results bear consideration by those pushing for more e-learning on campuses.



Backers, providers, and fans of new technology explain the disappointing measures as a matter of circumstance. Teachers didn't get enough training, they say, or schoolwide coordination was spotty, parents not sufficiently involved. Maybe so, to some extent, but Nielsen's studies indicate another source. Digitized classrooms don't come through for an off-campus reason, a factor largely overlooked by educators. When they add laptops to classes and equip kids with on-campus digital tools, they add something else, too: the reading habits kids have developed after thousands of hours with those same tools in leisure time.



To teachers and professors, a row of glistening new laptops in their classroom after a dozen years with nothing but chalk and blackboard, or a podium that has been transformed from a wooden stand into a multimedia console, can appear a stunning conversion. But to the average freshman walking through the door and finding a seat, it's nothing new. Our students have worked and played with computers for years. The Horatio Alger Association found that students in high school use the Internet four and a half hours per week for help with homework (The State of Our Nation's Youth, 2008-2009), while the National School Boards Association measures social networking at nine hours per week, much of it spent on homework help. The gap between viewpoints is huge. Educators envision a whole new pedagogy with the tools, but students see only the chance to extend long-established postures toward the screen. If digitized classrooms did pose strong, novel intellectual challenges to students, we should see some pushback on their part, but few of them complain about having to learn in new ways.



Once again, this is not so much about the content students prefer — Facebook, YouTube, etc. — or whether they use the Web for homework or not. It is about the reading styles they employ. They race across the surface, dicing language and ideas into bullets and graphics, seeking what they already want and shunning the rest. They convert history, philosophy, literature, civics, and fine art into information, material to retrieve and pass along.



That's the drift of screen reading. Yes, it's a kind of literacy, but it breaks down in the face of a dense argument, a Modernist poem, a long political tract, and other texts that require steady focus and linear attention — in a word, slow reading. Fast scanning doesn't foster flexible minds that can adapt to all kinds of texts, and it doesn't translate into academic reading. If it did, then in a 2006 Chronicle survey of college professors, fully 41 percent wouldn't have labeled students "not well prepared" in reading (48 percent rated them "somewhat well prepared"). We would not find that the percentage of college graduates who reached "proficiency" literacy in 1992 was 40 percent, while in 2003 only 31 percent scored "proficient." We would see reading scores inching upward, instead of seeing, for instance, that the percentage of high-school students who reached proficiency dropped from 40 percent to 35 percent from 1992 to 2005.



And we wouldn't see even the better students struggling with "slow reading" tasks. In an "Introduction to Poetry" class awhile back, when I asked students to memorize 20 lines of verse and recite them to the others at the next meeting, a voice blurted, "Why?" The student wasn't being impudent or sullen. She just didn't see any purpose or value in the task. Canny and quick, she judged the plodding process of recording others' words a primitive exercise. Besides, if you can call up the verse any time with a click, why remember it? Last year when I required students in a literature survey course to obtain obituaries of famous writers without using the Internet, they stared in confusion. Checking a reference book, asking a librarian, and finding a microfiche didn't occur to them. So many free deliveries through the screen had sapped that initiative.



This is to say that advocates of e-learning in higher education pursue a risky policy, striving to unite liberal-arts learning with the very devices of acceleration that hinder it. Professors think they can help students adjust to using tools in a more sophisticated way than scattershot e-reading, but it's a lopsided battle. To repeat, college students have spent thousands of hours online acquiring faster and faster eyes and fingers before they even enter college, and they like the pace. It is unrealistic to expect 19-year-olds to perch before a screen and brake the headlong flight, even if it is the Declaration of Independence in hypertext coming through, not a buddy's message.



Some educators spot the momentum and shrug their shoulders, elevating screen scanning to equal status with slow reading. A notable instance occurred last year, when in an essay in The New York Times, Leah Price, a professor of English at Harvard University, criticized a report from the National Endowment for the Arts — "To Read or Not to Read" (to which I contributed) — precisely for downgrading digital scanning. Her article contained some errors of fact, such as that the 2004 NEA report "Reading at Risk" excluded nonfiction, but correctly singled out the NEA distinction between screen reading and print reading. To Price, it's a false one: "Bafflingly, the NEA's time-use charts classify 'e-mailing' and 'surfing Web sites' as competitors to reading, not subsets of it." Indeed, she said, to do so smacks of guile: "It takes some gerrymandering to make a generation logging ever more years in school, and ever more hours on the BlackBerry, look like nonreaders." (In truth, high-school students do no more in-class reading today than they did 20 years ago, according to a 2004 Department of Education report.)



What we are seeing is a strange flattening of the act of reading. It equates handheld screens with Madame Bovary, as if they made the same cognitive demands and inculcated the same habits of attention. It casts peeking at a text message and plowing through Middlemarch as subsets of one general activity. And it treats those quick bursts of words and icons as fully sufficient to sustain the reading culture. The long book may go, Price concluded, but reading will carry on just as it did before: "The file, the list, the label, the memo: These are the genres that will keep reading alive."



The step not taken here is a crucial one, namely to determine the relative effects of reading different "genres." We need an approach that doesn't let teachers and professors so cavalierly violate their charge as stewards of literacy. We must recognize that screen scanning is but one kind of reading, a lesser one, and that it conspires against certain intellectual habits requisite to liberal-arts learning. The inclination to read a huge Victorian novel, the capacity to untangle a metaphor in a line of verse, the desire to study and emulate a distant historical figure, the urge to ponder a concept such as Heidegger's ontic-ontological difference over and over and around and around until it breaks through as a transformative insight — those dispositions melt away with every 100 hours of browsing, blogging, IMing, Twittering, and Facebooking. The shape and tempo of online texts differ so much from academic texts that e-learning initiatives in college classrooms can't bridge them. Screen reading is a mind-set, and we should accept its variance from academic thinking. Nielsen concisely outlines the difference: "I continue to believe in the linear, author-driven narrative for educational purposes. I just don't believe the Web is optimal for delivering this experience. Instead, let's praise old narrative forms like books and sitting around a flickering campfire — or its modern-day counterpart, the PowerPoint projector," he says. "We should accept that the Web is too fast-paced for big-picture learning. No problem; we have other media, and each has its strengths. At the same time, the Web is perfect for narrow, just-in-time learning of information nuggets — so long as the learner already has the conceptual framework in place to make sense of the facts."



So let's restrain the digitizing of all liberal-arts classrooms. More than that, given the tidal wave of technology in young people's lives, let's frame a number of classrooms and courses as slow-reading (and slow-writing) spaces. Digital technology has become an imperial force, and it should meet more antagonists. Educators must keep a portion of the undergraduate experience disconnected, unplugged, and logged off. Pencils, blackboards, and books are no longer the primary instruments of learning, true, but they still play a critical role in the formation of intelligence, as countermeasures to information-age mores. That is a new mission for educators parallel to the mad rush to digitize learning, one that may seem reactionary and retrograde, but in fact strives to keep students' minds open and literacy broad. Students need to decelerate, and they can't do it by themselves, especially if every inch of the campus is on the grid.



Mark Bauerlein is a professor of English at Emory University. His latest book, The Dumbest Generation: How the Digital Age Stupefies Young Americans and Jeopardizes Our Future (Or, Don't Trust Anyone Under 30), was published by Jeremy P. Tarcher/Penguin this year.



, Mike




Discover the Free Ebook that shows you how to make 100% commissions on ClickBank!



Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, December 1, 2008

Bash Script To Find Free Online Fiction and Non-Fiction Books

Hey There,

SPECIAL NOTE: Some of The University of Pennsylvania's Online Books require a special reader, which is totally free - no sign up or even giving your email. Download The Ebrary Reader here


For some reason, it's Monday again and time for another "online reference ripper" script. For this week's Monday Linux/Unix bash shell script we're going to do the (almost) exact opposite of what we've been doing for the past few weeks. Today, we're going to find free books on the Internet and, possibly, read them ;) And we don't just mean man pages and reference materials, etc. We'll be using the Online Book Pages at the University of Pennsylvania. They may not have the variety that Amazon.com does, but everything listed on their site is available for online reading (although it says nowhere - that I could find - that you can't just download the books). Best of all, you don't have to sign up for anything. It's absolutely free. And they actually have a book by Stephen King up there (If you recall his chapter-by-chapter pay-as-you-go online book distribution experiment, you may recognize the title :) It's 100% free now but, to clarify, Stephen King never actually charged for the online book; he made his book available to anyone who wanted to read it and only asked that they donated money if they liked it. So, either everybody hated it or not enough people donated enough money to keep him interested ;) No offense to Mr. King. Writing is his profession and he deserves to get paid for it.

As always, skip the next paragraph if you're a regular reader. It's a listing of all the other "online reference ripper" scripts we've done to date.

Our previous web-based Bash scripts, in backward chronological order, include about 500 posts on getting your dish, cable and local listings from the CLI, accessing Wikipedia, accessing the Farmer's Almanac, accessing the International Dictionary, checking out the world's weather, spewing out famous quotations on pretty much any subject, doing encyclopedia lookups, accessing the online Thesaurus, translating between different languages and, of course, using the online dictionary.

The script for this week is just about as easy to use as any other we've put out. It should work on Linux or Unix, and - if you don't know what arguments to pass to it - you can get the help screen with either the "-h" flag or by just invoking the command with no arguments, like:

host # ./onlinebooks.sh
Usage: ./onlinebooks.sh [-h for help]
Required args - either one or both
[-t title] [-a author]
Quote title and/or author if multi-word!


Below are some screen shots to show the various error conditions and, just for kicks, some successful output :)

Click the pix below and don't get too close to the screen ;)

Online Book Title Listings


Online Book Author Listings

There are some shortcomings that I haven't been able to get around yet. For instance, I've visually verified that really long listings of books don't print out properly. A search on Leo Tolstoy (also known as Tolstoi -- I just learned that today ;), for example, yields only one listing, while there about 40 books available on the actual site. I'll get around to that as soon as I can.

In the meantime, since this script relies on you using a terminal client that hyperlinks web addresses for you (like NuTTY or PuTTY), I have something in the hopper for you that I'm hoping you'll all enjoy. It has to do with this script and will be an interesting way (I think) to get in more reading at work ;)

Until then,

Cheers,


Creative Commons License


This work is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

#!/bin/bash

#
# onlinebooks.sh - Come On In, The Readin's Fine ;)
#
# 2008 - Mike Golvach - eggi@comcast.net
#
# <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License</a>
#

function usage()
{
echo
echo "Usage: $0 [-h for help]"
echo "Required args - either one or both"
echo "[-t title] [-a author]"
echo "Quote title and/or author if multi-word!"
echo
exit 1
}

while getopts t:a:h option
do
case $option in
t)
opt_title="$OPTARG"
;;
a)
opt_author="$OPTARG"
;;
h)
usage
;;
*)
usage
;;
esac
done

wget=`which wget`
book_title=`echo $opt_title|sed 's/ /+/g'`
book_author=`echo $opt_author|sed 's/ /+/g'`
noexactmatch=0
authors=0
titles=0

echo

$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep -i "No items were found" >/dev/null 2>&1

notfound=$?

$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep -i "No exact match" >/dev/null 2>&1

nomatch=$?

$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep -i "Browsing Authors" >/dev/null 2>&1

nomatch=$?

$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep -i "you requested books" >/dev/null 2>&1

btitle=$?

$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep -i "online books by" >/dev/null 2>&1

bauthor=$?

if [ $notfound -eq 0 ]
then
book_title=`echo $opt_title|sed 's/+/ /g'`
book_author=`echo $opt_author|sed 's/+/ /g'`
echo
echo "No items found for $book_author $book_title"
echo
exit 2
elif [ $nomatch -eq 0 ]
then
book_title=`echo $opt_title|sed 's/+/ /g'`
book_author=`echo $opt_author|sed 's/+/ /g'`
echo "No exact match found for $book_author $book_title"
echo
echo "Give these suggestions a go:"
echo
noexactmatch=1
elif [ $btitle -eq 0 ]
then
book_title=`echo $opt_title|sed 's/+/ /g'`
book_author=`echo $opt_author|sed 's/+/ /g'`
echo
echo "Title matches found for $book_author $book_title"
echo
titles=1
elif [ $bauthor -eq 0 ]
then
book_title=`echo $opt_title|sed 's/+/ /g'`
book_author=`echo $opt_author|sed 's/+/ /g'`
echo
echo "Listing online Titles for $book_title $book_author"
echo
authors=1
else
echo "Should not have gotten here. Looks like we need to fix something!"
exit 3
fi

if [ $noexactmatch -eq 1 ]
then
$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|sed -e :a -e 's/<[^>]*>/ /g;/</N;//ba' -e 's/$/\n/'|egrep -v 'exact match|previous'|grep -i title 2>&1|grep -v URL
elif [ $titles -eq 1 ]
then
$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|grep "SEARCH RESULTS"|sed -e 's/[^<ul>]*<ul>//' -e 's/<\/ul>.*$//g' -e s'/<li>/\n/g' -e s'/<\/li>/\n/g' -e 's/<\/ul>.*$/\n/g' -e s'/<ul>//g' -e s'/<\/ul>/\n/g'|sed -e 's/^[^<]*<a href="//g' -e 's/">.*<cite>/ : /' -e 's/<\/cite><\/a>//g' -e 's/<\/cite>//g' -e s'/<\/a>//g' -e s'/">/ /g' -e 's/<a href="//g'|grep -v "SEARCH RESULTS"|awk -F":" '{ if ( NF >= 2 ) print $3 " --- " $1 ":" $2 "\n"}'
elif [ $authors -eq 1 ]
then
$wget -nv -O - "http://onlinebooks.library.upenn.edu/webbin/book/search?author=${book_author}&amode=start&title=${book_title}&tmode=start" 2>&1|sed -e 's/[^<ul>]*<ul>//' -e 's/<\/ul>.*$//g' -e s'/<li>/\n/g' -e s'/<\/li>/\n/g' -e 's/<\/ul>.*$/\n/g' -e s'/<ul>//g' -e s'/<\/ul>/\n/g'|sed -e 's/^[^<]*<a href="//g' -e 's/">.*<cite>/ : /' -e 's/<\/cite><\/a>//g' -e 's/<\/cite>//g' -e s'/<\/a>//g' -e s'/">/ /g' -e 's/<a href="//g'|awk -F":" '{ if ( NF >= 2 ) print $3 " --- " $1 ":" $2 "\n"}'|sed -e '/^\/\//d' -e '/^ ---.*OBP/,$d'
fi

exit 0


, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, October 20, 2008

Bash Script To Access Wikipedia

Hey There,

This week's Monday Linux/Unix bash shell script brings us one step closer to the end of our "web-based-info-site command line program" project (And we'll never again hire anyone to name a project for us that gets paid by the word ;)

Previous entries, in backward chronological order, you may be interested in include our posts onaccessing the Farmer's Almanac, accessing the International Dictionary, checking out the world's weather, spewing out famous quotations on pretty much any subject, doing encyclopedia lookups, accessing the online Thesaurus, translating between different languages and, of course, using the online dictionary.

This script gets its content from Wikipedia.com and accepts a variable number of arguments. The only real caveat, when executing the program, would be to be sure to put any query with "special" characters in double quotes (like apostrophes, etc). Also, you'll note that this script includes a "pager" variable (which we've set to /usr/bin/more) since the output you get back will most definitely be looooooong. You can edit that variable to set it to your favorite pager very simply. Otherwise, it can be run easily, like so (one example command line per general execution mode):

host # ./wikipedia.sh linux
host # ./wikipedia.sh linux kernel
host # ./wikipedia.sh "fermat's last theorem"


Below are two pictures of the output (from the first two examples above - linux and linux kernel). You'll note that the second example is already on the second page of output. This was done intentionally so that you could see a little bit more of the output and, also, because the first page was incredibly boring ;)

Click the pictures below and prepare to be totally amazed ...but only if you're easily impressed ;)





Have fun using this script. I haven't had time to QA it totally (the downside of that work-for-pay part of life ;), but it's fairly solid. One thing I didn't have time to check thoroughly was how it responds to foreign Wikipedia queries.

NOTE: We're currently working on a way to grab television listings based on your zip code and service provider. We were hoping to release it this week, but it's been a bigger PITA than anticipated. Everyone here has got the next week off and, hopefully, that will allow us the time to nail it. Plus, we really need to catch up on our email. We promise to respond to everyone who's written in as soon as humanly possible :)

Cheers,


Creative Commons License


This work is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

#!/bin/bash

#
# wikipedia.sh - Forget the regular encyclopedia
#
# 2008 - Mike Golvach - eggi@comcast.net
#
# Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
#

numargs=$#

if [ $numargs -lt 1 ]
then
echo "Usage: $0 Your Wikipedia Query"
echo "Ex: $0 linux"
echo "Ex: $0 \"linux kernel"
echo "Quotes only necessary if you use apostrophes, etc"
exit 1
fi

if [ $numargs -gt 1 ]
then
args=`echo $args|sed 's/ /_/g'`
fi

echo

args="$@"
wget=/usr/bin/wget
pager=/usr/bin/more

$wget -nv -O - "http://en.wikipedia.org/wiki/${args}" 2>&1|grep -i "Wikipedia does not have an article with this exact name" >/dev/null 2>&1

anygood=$?

if [ $anygood -eq 0 ]
then
args=`echo $args|sed 's/%20/ /g'`
echo "No results found for $args"
exit 2
fi

$wget -nv -O - "http://en.wikipedia.org/wiki/${args}" 2>&1|sed -e :a -e 's/<[^>]*>/ /g;/</N;//ba'|sed -e '1,/Jump to:/d' -e '/^$/N;/\n$/N;//D' -e '/^.*[.*edit.*].*See also.*$/,$d' -e '/This *disambiguation *page/,$d' -e '/^$/N;/\n$/D'|$pager

exit 0

, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Monday, October 13, 2008

Bash Script To Get You Your Daily Farmer's Almanac Information

Hey There,

This week's Monday Linux/Unix bash shell script is another chapter in our book "Never ever leaving the CLI ever" ;) Previous entries you may be interested in include our posts on Accessing the International Dictionary, checking out the world's weather, spewing out famous quotations on pretty much any subject, doing encyclopedia lookups, accessing the online Thesaurus, translating between different languages and, of course, using the online dictionary.

This script gets its content from The Original Farmer's Almanac Site and is actually easier to use because it accepts no arguments. We didn't do this to be cruel, but if you check out the Official Site, you'll see that specific-day access isn't readily available (only "Red Letter Days"). If I'm wrong, just let me know where I forgot to look and I'll be happy to update this script so that you can punch a few keys and get all your advice for any date in history (or the future) the you want. Right now, it brings up the current day's entry and you can execute it very easily, like so:

host # ./almanac.sh

Look just below for the output from my final test run on Sunday, October 12th 2008. You'll note that I included a straight up URL in the "see here for more info" part near the top . Adding the actual HTML tags looked ugly and most terminal programs, like PuTTY understand http:// and will make the line of text a hypertext link for you automatically.

Click the picture below to experience the accelerated Chia-effect ...minus the grassy hair ;)

Almanac Output

Hope you enjoy this script, and can find some use for it.

As a special note to all readers who have taken the time to send in comments over the past 4 or 5 days, I will be getting around to actually reading my mail tomorrow. Complications have kept me from accessing my account, which are now (hopefully) resolved. If you wrote me more than once, I will probably reply to you more than once. No offense, and sorry if it's annoying ;)

Have a great Columbus Day. Hopefully your place of employment considers it worthy of a paid day off :)

Cheers,


Creative Commons License


This work is licensed under a
Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License

#!/bin/bash

#
# almanac.sh - Find out lots of interesting stuff about today :)
#
# 2008 - Mike Golvach - eggi@comcast.net
#
# Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License
#

numargs=$#
date=`date`

if [ $numargs -gt 1 ]
then
echo "Usage: $0"
exit 1
fi

args="$@"
wget=/usr/bin/wget

echo
echo "Your Farmer's Almanac Information For: $date"
echo
echo "Visit http://www.almanac.com for answers to the riddles and more detailed information!"
echo
$wget -nv -O - "http://www.almanac.com/" 2>&1|sed -e 's/<\/p>/\
BOBISALIVE\
BOBISALIVE\
/g' -e :a -e 's/<[^>]*>/ /g;/</N;//ba' -e s'/—/\
-------------\
/g' -e s'/Today in History/\
Today In History\
-------------\
/g'|sed -e '/^[ \t]*$/d' |sed -e 's/BOBISALIVE//g' -e '1,/Customized astronomical/d' -e '/Looking for information you used to find here/,$d'|sed -e 's/ Weather History Search \| More Weather \| More Advice \| Answer \| Archives \| Answer \| Archives \| Answer \| Archives \| More Gardening \| Definition \| Archives \| Archives \| More Advice //g' -e 's/^ *|*/X/' -e 's/^X//g'

exit 0


, Mike




Please note that this blog accepts comments via email only. See our Mission And Policy Statement for further details.

Friday, June 27, 2008

SunCluster Quick Command Reference

Hey There,

Well, sitting back and reflecting today, I realized that we've done our fair share of posts on cheat-sheets and such (Our LVM command reference, for example). However, when it comes to clustering systems, we've probably been unfair in our bias toward Veritas Clustering as opposed to SunCluster, for which we've only put up, I believe, one post with our Simple SunCluster Monitoring Script (Thankfully linked back to from The SunCluster Wiki). What's a poor blog to do? ;)

With that in mind, today we're going to lay down a quick command reference for SunCluster. Hopefully you'll find it useful and enjoy it :) Of course, it assumes that you know, mostly, how to use SunCluster (and are familiar with basic clustering concepts), but it can be used as an attractive wallpaper, if nothing else ;)

All of this information, and much more, can be found at Sun's Online Documentation Center for SunCluster.

Enjoy,

Quorum Commands:

host # clquorum add device
- Add a SCSI Quorum Device
host # clquorum add -t netapp_nas -p filer =nasdevicename,lun_id =IDnumdevice Nasdevice - Add a NAS Quorum Device
host # clquorum add -t quorumserver -p qshost =IPaddress, port =portnumber quorumservername - Add a Quorum Server
host # clquorum remove device - Remove a Quorum Device

Resource Type Commands:

host # clresourcetype register type
- Register a Resource Type
host # clresourcetype unregister type - Remove a Resource Type

Resource Group Commands:

host # clresourcegroup create group
- Create a Failover Resource Group
host # clresourcegroup create -S group - Create a Scalable Resource Group
host # clresourcegroup online + - Bring Online All Resource Groups
host # clresourcegroup delete group - Delete a Resource Group
host # clresourcegroup delete -F group - Delete a Resource Group and All of Its Resources
host # clresourcegroup switch -n nodename group - Switch the Current Primary Node of a Resource Group
host # clresourcegroup unmanage group - Move a Resource Group Into the UNMANAGED State
host # clresourcegroup suspend group - Suspend Automatic Recovery of a Resource Group
host # clresourcegroup resume group - Resume Automatic Recovery of a Resource Group
host # clresourcegroup set -p Failback=true + name=value - Change a Resource Group Property
host # clresourcegroup add-node -n nodename group - Add a Node To a Resource Group
host # clresourcegroup remove-node -n nodename group - Remove a Node From a Resource Group

Resource Administration Commands:

host # clreslogicalhostname create -g group lh-resource
- Create a Logical Hostname Resource
host # clressharedaddress create -g group sa-resource - Create a Shared Address Resource
host # clresource create -g group -t type resource - Create a Resource
host # clresource delete resource - Remove a Resource
host # clresource disable resource - Disable a Resource
host # clresource set -t type -p name=value + - Change a Single-Value Resource Property
host # clresource set -p name+=value resource - Add a Value to a List of Property Values; Existing values in the list are unchanged.
host # clresource create -t HAStoragePlus -g group -p FileSystemMountPoints=mount-point-list -p Affinityon=true rs-hasp - Create an HAStorage Plus Resource
host # clresource clear -f STOP_FAILED resource - Clear the STOP_FAILED Error Flag on a Resource

Device Administration Commands:

host # cldevicegroup create -t vxvm -n node-list -p failback=true vxdevgrp
- Add a VxVM Device Group
host # cldevicegroup delete devgrp - Remove a Device Group
host # cldevicegroup switch -n nodename devgrp - Switch a Device Group to a New Node
host # cldevicegroup offline devgrp - Bring Offline a Device Group
host # cldevice refresh diskname - Update Device IDs for the Cluster

Additional Administration and Monitoring Commands:

To add a Node to Cluster:


From the node to be added, which has access:

host # clnode add -c clustername -n nodename -e endpoint1, endpoint2 - Use this only if the node has access to the cluster

To remove a Node From the Cluster:

From the node to be removed, which is in noncluster
mode and has access:

host # clnode remove - Use this only if the node has access to the cluster

host # clnode evacuate nodename - Switch All Resource Groups and Device Groups Off of a Node
host # clinterconnect disable nodename:endpoint - Manage the Interconnect Interfaces
host # clinterconnect enable nodename:endpoint - To disable a cable so that maintenance can be performed, then enable the same cable afterward.
host # cluster status - Display the Status of All Cluster Components
host # command status - Display the Status of One Type of Cluster Component
host # cluster show - Display the Complete Cluster Configuration
host # command show Component - Display the Configuration of One Type of Cluster
host # command list - List One Type of Cluster Component
host # clnode show-rev -v - Display Sun Cluster Release and Version Information

To list the software versionson the current node.

host # clnode show | grep nodename
- Map Node ID to Node Name
host # cltelemetryattribute enable -t disk rbyte.rate wbyte.rate read.rate write.rate - Enable Disk Attribute Monitoring on All Cluster Disks
host # cltelemetryattribute disable -t disk rbyte.rate wbyte.rate read.rate write.rate - Disable Disk Attribute Monitoring on All Cluster Disks

SHUTTING DOWN AND BOOTING A CLUSTER

To shut Down the Entire Cluster:

host # cluster shutdown

From one node:

host # clnode evacuate
host # shutdown - Shut Down a Single Node


To boot a Single Node from the OBP:

ok> boot

To reboot a Node Into Noncluster Mode from the OBP:

ok> boot -x

, Mike

Wednesday, May 7, 2008

Maintenance And Usage Commands For ZFS On Solaris 10 Unix

Hey again,

Today, we're back with part two of what was going to be a three part series on working with ZFS and storage pools. Actually, this was originally going to be one post, but (luckily ?) it's grown into four gigantic ones ;) This one, and tomorrow's, are going to be the "big daddies" of the bunch.

Yesterday we looked at ZFS storage pool and file system creation and today we're going to move on to commands that we can use to manipulate those storage pools and file systems that we've made.

Please note, again, that for all commands where I specifically name a virtual device or storage pool, you can get a full listing of all available devices by simply not specifying any storage pool at all.

And, without a moment to spare, here come those maintenance/usage commands (please enjoy responsibly ;)

1. If you need to know as much as possible about your storage pools, you can use this command:

host # zpool status -v zvdevs
pool: zvdevs
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
zvdevs ONLINE 0 0 0
/vdev1 ONLINE 0 0 0
/vdev2 ONLINE 0 0 0
/vdev3 ONLINE 0 0 0

errors: No known data errors


2. In Solaris 10 storage pool management, you can also "online" and "offline" virtual devices. You might need to do this from time to time if you need to replace an "actual" device that may be faulty. Here's an example of offlining and then onlining a vdev. Note that, if you use the "-t" flag when offlining, the device will only be temporarily disabled. Normal offlining is persistent and the storage pool will maintain the vdev in an offline state even after a reboot:

host # zpool offline zvdevs /vdev2
Bringing device /vdev2 offline
host # zpool status -v zvdevs
pool: zvdevs
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning in a
degraded state.
action: Online the device using 'zpool online' or replace the device with
'zpool replace'.
scrub: resilver completed with 0 errors on Mon May 5 10:05:33 2008
config:

NAME STATE READ WRITE CKSUM
zvdevs DEGRADED 0 0 0
mirror DEGRADED 0 0 0
/vdev1 ONLINE 0 0 0
/vdev2 OFFLINE 0 0 0

errors: No known data errors
host # zpool online zvdevs /vdev2
Bringing device /vdev2 online
host # zpool status -v zvdevs
pool: zvdevs
state: ONLINE
scrub: resilver completed with 0 errors on Mon May 5 10:18:34 2008
config:

NAME STATE READ WRITE CKSUM
zvdevs ONLINE 0 0 0
mirror ONLINE 0 0 0
/vdev1 ONLINE 0 0 0
/vdev2 ONLINE 0 0 0

errors: No known data errors


3. If you want to attach another disk to your storage pool mirror, it's just as simple. This process will create a simple mirror if you only have one device in your pool (???) or create a triplicate, quadruplicate, etc, mirror if you already have a simple mirror set up:

host # zpool attach zvdevs /vdev1 /vdev3 <--- Note that we're specifically saying we want to mirror /vdev1 and not /vdev2. It doesn't really matter, since they're both mirrors of each other, but you can't just attach a device without naming a device to mirror!
host # zpool status -v zvdevs
pool: zvdevs
state: ONLINE
scrub: resilver completed with 0 errors on Mon May 5 10:05:33 2008
config:

NAME STATE READ WRITE CKSUM
zvdevs ONLINE 0 0 0
mirror ONLINE 0 0 0
/vdev1 ONLINE 0 0 0
/vdev2 ONLINE 0 0 0
/vdev3 ONLINE 0 0 0

errors: No known data errors


5. For a little shell-game, if you ever need to replace a vdev in your storage pool (say, with a hot spare), you can do it easily, like this:

host # zpool add zvdevs spare /vdev3 <--- This may not be necessary, but I removed the spare and am re-adding it.
host # zpool replace zvdevs /vdev1 /vdev3
host # zpool status -v zvdevs
pool: zvdevs
state: ONLINE
scrub: resilver completed with 0 errors on Mon May 5 10:20:58 2008
config:

NAME STATE READ WRITE CKSUM
zvdevs ONLINE 0 0 0
mirror ONLINE 0 0 0
spare ONLINE 0 0 0
/vdev1 ONLINE 0 0 0
/vdev3 ONLINE 0 0 0
/vdev2 ONLINE 0 0 0
spares
/vdev3 INUSE currently in use

errors: No known data errors


6. If you suspect file system damage, you can "scrub" your storage pool. zpool will verify that everything is okay (if it is ;) and will auto-repair any problems on mirror or raid pools :)

host # zpool scrub zvdevs <--- Depending on how much disk you have and how full it is, this can take a while and chew up I/O cycles like nuts.

7. If you want to share storage pools between systems (real or virtual), you can "export" your storage pool like so (Note that this will make the storage pool not show up as being "owned" by your system anymore, although you can reimport it):

host # zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
datadg 33.8G 191M 33.6G 0% ONLINE -
rootdg 9.75G 5.11G 4.64G 52% ONLINE -
zvdevs 1016M 127K 1016M 0% ONLINE -
host # zpool export zvdevs
host # zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
datadg 33.8G 191M 33.6G 0% ONLINE -
rootdg 9.75G 5.11G 4.64G 52% ONLINE -


8. In order to "import" an exported filesystem, you just need to have the system permission to do so (being root in the global zone is the perfect place to be when you try this. Just be careful ;)

host # zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
datadg 33.8G 191M 33.6G 0% ONLINE -
rootdg 9.75G 5.11G 4.64G 52% ONLINE -
host # zpool import -d / zvdevs
host # zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
datadg 33.8G 191M 33.6G 0% ONLINE -
rootdg 9.75G 5.11G 4.64G 52% ONLINE -
zvdevs 1016M 92K 1016M 0% ONLINE -


You can run this command without -d (to specify the base directory of the storage pool) and zpool will search /dev/dsk for a place to import. In our case it won't find it, like this:

host # zpool import zvdevs
cannot import 'zvdevs': no such pool available


9. If you need to know what version of ZFS your system is using, you can use zpool's "upgrade" option. Don't worry. Without the proper flags, it just lets you know what version is running and some other information, like this:

host # zpool upgrade
This system is currently running ZFS version 4.

All pools are formatted using this version.


10. If you want to see what features your version of ZFS has, you can use the "upgrade" option with the -v flag. Everything is retro, so (in our case), since we're running version 4, we have all the capabilities of versions 3, 2 and 1 but not of versions 5 and higher (At the time of this post, ZFS is up to version 10):

host # zpool upgrade -v
This system is currently running ZFS version 4.

The following versions are supported:

VER DESCRIPTION
--- --------------------------------------------------------
1 Initial ZFS version
2 Ditto blocks (replicated metadata)
3 Hot spares and double parity RAID-Z
4 zpool history
...


Now, go and have fun with those commands :)

Until we meet again,

, Mike

Monday, November 19, 2007

Recovering Faulted VCS Resources In An Indefinitely Hung State!

If you've ever found yourself in a situation where a Veritas Cluster Server (VCS) resource/service group is reporting faulted, you may have seen the situation described here. Today we're going to focus on one specific condition where the most common wisdom I've seen on the web is to do an "hastop -local -force" and follow up with an "hastart" to solve the problem. Common sense dictates that this is the last thing you'll want to do, unless you're on a testing environment, as you'll be completely downing the cluster in the process.

The reason the stop/start answer is the most common is because, since the resource/service group's "resource" is waiting to go OFFLINE, while the resource/service "group" is trying to start, or go ONLINE, simply attempting to "online" or "offline" either only results in infinite hang. This is because each entity's successful action depends on the other entity's failure and VCS won't fail if it can wait instead.

You'll know you're looking at this sort of error if you see the following (this generally can be found by running "hasum" or "hastatus -summary"):

A. The resource/service "group" will be showing in a "STARTING|PARTIAL" state
B. An individual "resource" within that resource/service "group" will be showing in the "W_OFFLINE" state.

The following steps to resolution are certainly not the only way to get everything back to an "up" state and, also, assume that there is nothing really "wrong" with the individual resource or resource/service group. That sort of troubleshooting is outside the scope of this blog-sized how-to.

So, again, our assumptions here are:
1. An Oracle database resource/service group, named "oracledb_sg" has faulted on the server "vcsclusterserver1.xyz.com."
2. An individual resource, a member of the resource/service group "oracledb_sg," named "oracledb_oracle_u11192007," is really the only thing that's failed, or shows as failing in "oracledb_sg."
3. There is actually nothing wrong with the resource or the resource/service group. Somehow, while flipping service groups back and forth between machines, somebody made an error in execution or VCS ran into a state problem that it caused by itself ("split brain" or some similar condition).
4. Note that we've reached these assumptions based partially on the fact that the resource is waiting to go OFFLINE, and the resource/service group is waiting to go ONLINE (stuck in STARTING|PARTIAL), on the same server!

And the following are the steps we could take to resolve this issue and get on with our lives:

1. First, get a summary of the resource group that you've been alerted as failed or faulted, like this:

hastatus -summary|grep oracledb_sg|grep vcsclusterserver1 (or some variation thereof, depending on how much information you want to get back)

B oracledb_sg vcsclusterserver1.xyz.com Y N STARTING|PARTIAL
C oracledb_sg Oracle oracledb_oracle_u11192007 vcsclusterserver1.xyz.com W_OFFLINE


2. If you want to be doubly sure, you'll check that you get the same resource id ( oracledb_oracle_u11192007 ) from the "hares" command, and also get the same status:

hares -display|grep oracledb|grep "waiting to" --> to get the resource id a second way.

3. At this point you still can't "online" the resource until you "clear" it (of the W_OFFLINE state flag).

hares -clear oracledb_oracle_u11192007 -sys vcsclusterserver1.xyz.com
hagrp -online oracledb_sg -sys vcsclusterserver1.xyz.com


Now your resource/service group should be back in the straight ONLINE state, and you shouldn't see any messages (In "hasum" or "hastatus -summary" output) regarding the individual resource. Time to relax :)

, Mike