Tag Archives: Satire

I’d like to teach the world how to bite a wax tadpole.

“Windows cannot find a critical file.” Current Rage Level: Omicron.

Ubuntu Linux: the Wal-Mart(TM) Frontier. These are the voyages of the Spacecar
Grosvenor. Its continuing mission: to allocate new structs & new classes, unite
all people within its nation, and leak where memory has never leaked before.

Of the numerous Linux installations ("distributions"), I've used Ubuntu Linux (published by Canonical Inc.)
most. It contains the Linux kernel, the GNU core utilities, and several other
items of interest such as an automagically-configured graphical user interface.
It is extraordinarily user-friendly, to the point of feeling constrictive. (The
desktop environment has changed since version 11: users now cannot reconfigure
the taskbar or workspaces. The repository wants to be a dime-store, too, and
although a potentially lucrative storefront I miss the simplicity of Synaptic.)

Its installation procedure is simple: download a Live CD image from Canonical's
Web site, burn it to a CD-R or RW (these days, you might even need a DVD), and
reboot your machine with the disk inserted. (Don't forget to tell the BIOS -- er
whatchamacallit, the Extended Firmware Interface -- to boot from CD.) You'll be
presented with an operable temporary login. Thence you can install the OS. Also
available from this interface was an option to create a USB startup disk, but it
has been removed in recent revisions of Ubuntu: previously, using VirtualBox or
any similar virtual machine, the user could run the LiveCD & make a startup USB
without even rebooting out of their present operating environment, which was
useful on old machines whose optical drives had failed. You can still "Install"
to the USB key, but it boots slowly & you can't install it from there to a box.

The installation wizard is a no brainer: "install alongside Windows." Easy! And
it usually doesn't cause your existing Windows system to go up in smoke, either.
However, to install Ubuntu more than once per box, you must repartition manually
(and may also need to change grub: see /boot/grub and /etc/grub.d). Gparted is
included within the live disc images, but must be retrieved again after install.

If you'd like to make intimate friends with the manual pages, and discover where
primary partitions go when they die, you can install with less assistance. This
lets you specify partitions in which to mount your home & system directories, in
case you'd like to keep them segregated. (That's probably a great idea, but I
never do.) You can also create and specify swap partitions: which are employed
as virtual memory and, I suspect, for hibernation and hybrid suspension.

About file systems: I typically use FAT32, NTFS, ext4, and ext2. (Total newbie.)
FAT32 is elderly and fragile. It's used for boot/EFI partitions, 3DS & 3GPs.
NTFS is Microsoft's modern FS. Withstands some crashes, but has no fsck module.
ext2 & ext4 are Linux's. ext4 journals. ext2 permits file undeletion (PhotoRec).
The extended 4 system is harder to kill than a cockroach on steroids, so I tend
to prefer it anywhere near the heart of my archives. I use ext2 | NTFS for USBs.

Be very careful not to destroy your existing data when repartitioning the drive.
Any such operation carries some risk; back up anything important beforehand. One
way to backup is to prepare an empty HDD (or any medium of equal / greater size)
and dump the complete contents of the populated disk into the empty one:
 dd if=/dev/sda of=/dev/sdb status=progress
 (Where sda is the populated disk, and sdb the empty backup disk.)
Similar can be accomplished by dd'ing one of your partitions (/dev/sda1) into a
disk or a file, then dd'ing the image back onto a partition of equal size. Disk
image flashing is a simple and popular backup method for local machines, sparing
you the time to learn rsync (which is more useful in long term remote backups).
Far from being an annoying elder sister, dd is the Linux troll's best friend.

Beware the dreaded "write a new boot/system partition" prompt. It bricked me.
The problem was because I had set the system to "Legacy Support" boot mode, but
the original (now unrecognized) installation was in Extended Firmware Interface
mode. I was unable to recover until I had re-flashed several partitions.

The usual "new car smell" applies: you'll want to configure whatever settings
haven't yet been forbidden to you by your GUI-toting overlords. In Ubuntu 16,
access them by clicking the gear and wrench icon on the launcher panel. You can
also search for something you're missing by using the Dash (Super, or Windows,
key pulls it up: then type), which functions similarly to the apropos command:
e.g., instead of Ctrl + Alt + T and then "man -k image", Super key then "image".
It will also search your files (and, after plugins, several social media sites).

Although the newfangled Dash is convenient, don't forget your terminal emulator:
you can easily spend the vast majority of your working time using bash by way of
gnome-terminal, without ever clicking your treasured Microsoft IntelliMouse 1.1.
In Ubuntu 16, as it has been since Ubuntu 11, Ctrl + Alt + T opens the terminal.

Under the directory /usr/share/man/, you will find the on line (interactive)
manual. This describes the tools available to you. Begin reading it by opening
a terminal window (using Control + Alt + T, or the Super / Windows key and then
typing "terminal"), keying the command 'man name_of_manual_page', and pressing
the Enter key. In this case, the name of the manual page is the page's archive's
filename before the .[0-9].gz extension.
Of particular interest: telinit, dd, printf, cat, less, sed, tee, gvfs-trash,
mawk, grep, bash (if you're using the Bourne Again Shell, which is default on
Ubuntu 16), cp, rm, mv, make, sudo, chroot, chown, chmod, chgrp, touch, gunzip,
gzip, zip, unzip, python, g++, apt-get (especially `apt-get source ...`), mount,
kpartx, date, diff, charmap (same name on Windows!), basename, zipinfo, md5sum,
pdftotext, gnome-terminal (which is _how_ you're using bash), fortune, ffmpeg,
aview, dblatex, find, cut, uniq, wc, caesar, rot13, curl, wget, sort, vim, man,
tr, du, nautilus, tac, column, head, tail, stat, ls, pwd, pushd, popd, gedit,
source-highlight, libreoffice (a Microsoft Office killer), base64, flex, bison,
regex, perl, firefox, opera, chromium-browser, konqueror, lynx, virtualbox,
apropos, od, hexdump, bless, more, pg, pr, echo, rmdir, mkdir, fsck, fdisk (same
name, but different function, in Windows), ln, gdm, gnome-session, dhelp,
baobab, gparted, kill, locate, ps, photorec, testdisk, update-grub...
(If you haven't some of the above, don't worry. You should already have all you
 need. Keep in mind that the Ubuntu repository's software is divided in sections
 some of which contain potentially harmful or non-free software. When venturing
 beyond the fortified walls of <main>, be cautious: you may be eaten by a grue.)
Beneath /usr/share/doc/ or /usr/share/help/ are sometimes additional manuals.

If you use Linux, you will have to memorize several manuals, and name many more;
especially those of the GNU core utilities, which are a great aid to computing.
There's also a software repository to assist you with various computing tasks:

To acquire additional software: gnome-software (the orange shopping bag to your
left, above the Amazon.com icon), the friendly storefront, will assist you. If
you prefer a compact heads-up-display, try the Synaptic Package Manager instead.
`apt-get install package-name` works well if you know what you're looking for,
as does apt-get source package-name for the ponderously masculine.

And, speaking of ponderous masculinity, if you retrieve source code for any of
Ubuntu's mainline packages, typically all you need to do is 'cd' into the folder
containing the top level of the source tree and then invoke the following:
 1. ./configure.sh
 (You shouldn't need to chmod u+x ./configure.sh to accomplish this.)
 2. make
 (You may need to install additional packages or correct minor errors.)
 3. sudo make install
This can be abbreviated: ./configure.sh && make && sudo make install
Beware that sudo is a potentially dangerous operation. Avoid it if unsure.
The && operator, in bash, will only execute the next command if the past command
exited with a successful status code (i.e., zero).

But I digress.

You'll occasionally want to mount your other partitions on Linux's file system,
so that you can browse the files you've stored there. With external drives this
is as simple as connecting them (watch the output of `tail -f /var/log/*` in a
console window to observe the log messages about the procedure), but partitions
on fixed disks (or others, 'cause reasons) may not be mounted automagically. So:
 mount -t fs_type -o option,option,... /dev/sd?? path/to/mount/point/
where the mount point is a directory somewhere in your file system. BTW, mounts
that occurred automatically will be on points beneath /media/your_username/.

On a dual boot Windows system, I mount -t ntfs -o ro /dev/sda3 ~/Desktop/wintmp
often because the NTFS partition is in an unsafe state and won't mount writable.
In that case, rebooting to Windows and running chkdsk /f C: from Command Prompt
with Administrative privileges will sometimes clear the dirty flag if performed
multiple times. (How many times before ntfs-3g mounts writable, seems to vary.)

When you've attached external media, via USB etc, safely remove them after use:
use the "Safely Remove" menu option in the right-click context menu in Nautilus'
sidebar (be careful not to accidentally format the disk). You can also, from a
shell (gnome-terminal), `sync && umount /dev/sdb*` (if sdb is the medium).

Now that you've got a firm foothold in Ubuntu territory, I hope you can see your
house from here 'cause Windows seems to be dying a miserable death of attrition.
Don't count it out, though: all the Linuxes are terrible at Flight Simulator.
Advertisements

And Now For A Bit Of Fun. (Redux.)

(Title is a line from _Monty Python’s Flying Circus_.)

Frigid northern Idaho winters be the times what try gender-nonexclusive souls:
A nifty Python script & some data recovery have been my only accomplishments
as naughty pictures of Amaterasu hastened the thawing of my heart. Boi~ng!

Today’s the day I will write of myself in the third person.
But first, I will link you to my work and some auxiliaries.
This will take some time.

I must warn you: My portfolio is now sexually explicit, because I have recently
assembled portions of a dossier documenting my life to date.
If you’re too young, why not go play Narbacular Drop instead?

So, the PARENTAL DISCRETION caution is no longer entirely sufficient. Instead
you are advised that the work is ADULTS ONLY: don’t even touch it if a child.
The “Adults Only” category applies to ALL of these links, which are external to
WordPress, and the content hosted there is not necessarily endorsed by either
WordPress or the external host. Which is good for them, because it’s naughty.

I have at last retitled the archives with less confusing file names, and I have
rearranged the directory structure to be more sensible and easier to handle with
the unzip (manual section 1, by Info-ZIP) decompression utility: because each
archive contains similar directory structure, extracting them all into the CWD
will produce a less confusing output. Warning: Windows 10 will fail to extract
some of the files due to long filenames. 7zip (incl.) and unzip don’t do this.

If you download all the archives, you’ll need several hundred MB to decompress.
I’ve done what I could to ensure that all the megabytes are permissible by law,
but censorship laws in my country (USA) are restrictive and becoming more so…
exercise discretion.
If you wish to maintain a strictly lawful archive, then delete the banned books.
Actually, you might like to just delete everything, on the off chance that your
local apparatschik might declare you mentally ill due to unapproved thoughts.

A standalone version of MLPTK (0.7 MB / 0.2 MB), in case you have no time for the larger archives:
http://www.mediafire.com/file/zu0vmah7egko759/TK-Standalones-2017-03-09.zip

 
My complete portfolio is, owing to recent (and, I hope, conclusory) additions from auld lang syne, 22.8 megabytes. Compressed, it is 12 MB:
http://www.mediafire.com/file/3d77cvmujtvg3c7/TK-Portfolio-CompleteWorks-2017-03-09.zip
(New: duplicate file culler in Python, MLPTK’s “roman” module, & naughty chats.)

Syntax-highlighted illustrations in candy-colored HTML format are available (23.8 MB uncompressed / 3.3 MB compressed):
http://www.mediafire.com/file/6pp764w8n7w8vll/TK-SyntaxHighlightsOnly-2017-03-09.zip

My book, “Yawnie’s Whole” fills about 1,100 A4 pages (13.3 MB / 7.1 MB), and I have corrected the typesetter malfunction that caused images not to appear in their respective chapters:
http://www.mediafire.com/file/0c27018vy8nb14h/TK-Book-YawniesWhole-2017-03-10.zip
(These are the Ice Capades.)

Another 5,000 pp document my past (27.2 MB / 14.9 MB), and I have corrected the typesetter malfunction that caused images not to appear in their respective chapters:
http://www.mediafire.com/file/m2989o7e39hiepm/TK-Book-Addendum-YawnieSpots-2017-03-10.zip
(These are the Buttscapades.)

The companion curriculum (“Relevant Works By Others”), now its own archive (64.5 MB / 31.1 MB), contains the indispensable Berkeley Utilities and a diverse assortment of other excellent resources for programmers and Windows users:
http://www.mediafire.com/file/ttrd55i2xd85r35/TK-CompanionCurriculum-2017-03-09.zip

Recently I’ve been exploring elderly volumes.
Here are some other curios I won’t be distributing after this time:

34.4 megabytes of finely crafted TrueType fonts (9.4 megs zipped):
http://www.mediafire.com/file/ucjwc2pvqbu9mrx/TrueTypeFonts.7z

A Windows compilation of the SWFTools suite version 0.7.0. (32.5 MB / 5 MB):
http://www.mediafire.com/file/78o25vg2hhythnn/SWFTools070exe.7z

A selection of episodes of the out-of-print children’s television series, Sonic the Hedgehog (SatAM, not AoSTH; 100.8 MB / 98 MB):
http://www.mediafire.com/file/b9c19a9dut3fx0g/SatAMSelections.7z

A miscellany, including other out-of-print works (58.3 MB / 35.4 MB):
http://www.mediafire.com/file/ohrnagw6q27n3k9/Curios.7z

The combined size of all the downloads is about two hundred Megabytes.

Think not that those ten archives contain the Owl of Thebes; for, gentles all,
the foregoing hyperlinks were created with the courteous assistance of MediaFire
— a file host serving via Hypertext Transport Protocol. You may have observed
their advertisements on the interstitial page: I haven’t yet clicked one, but I
guess they might be OK — if not, then wouldn’t BBB complaints have been filed?

And here is a faux press release I’ve been working on since January…

      ADORING MASSES SWOON AT UMPTEENTH DEBUT OF _TOYS 4 TOTS_ CANDIDATE!
  _Toys for Tots_ not as enthusiastic about introducing children to Falstaff.

Archivist Thor King once again spins a dreidel squarely into the Public Domain
with his much trumpeted posting today of MLPTK's officially final edition.

The composition, titled "MLPTK", contains his portfolio: a simple command line
tool written in JavaScript for use with Web browsers, as well as assorted other
"sideshows" sufficing quotidian archival tasks. In these latter, work continues.

Full to brimming with thousands of lines of invective artfully hidden among tens
of thousands of lines of source code, Thor's publication -- not as much textbook
as periodical, considering his publication schedule -- is both an indispensable
companion to the casual programmer and an ominous reminder of what Wyrd sets in
store for unlucky engineers: namely, the affection of rodents.

A cursory bibliography is included.

Included also: assorted trinkets & curios collected during the Worldwide Web's
toddling days -- late 1990s through about 2010, when Internet access in the USA
had grown ubiquitous but before the only use we ever put to it was gift shopping
-- and items from his unique body of knowledge, the swashbucklers' lore.

Like asking a grown man why he carries his midday meal in a child's lunchbox,
inquiring of Thor why he does not restrict his archive to only those items of
immediate utility (or indeed, even to his own exclusively) is just Not Done(TM).

As a bovine might deposit a patty of brown gold in a happy orchard as it grazes
its way past, the portfolio (as it is typeset for PDF format) also includes the
autobiography of a vagabond, replete with rhapsodical reprisal of recollection:
a fantastic story of intrigue is belied by the writer's apparently (& actually)
mundane personal wont of tedious exactitude in mediocrity, although the tale is
hindered by its cumbersome and banal scrivening.

His reasoning regardless, we note that his book ("Yawnie's Whole: the complete
Yawnie, for Yawnie enthusiasts"), as set for A4 area, numbers aproximadamente
one thousand pages, of which perhaps half is in English and the rest in code.
One way or the other, "Yawnie's Whole" is a gaping chasm of analytical logic fit
to tie Gordian knots around the necks of capitalist pigs: cut them as you will.
The PDF file was created with the technical assistance of LaTeX via TeX Live, &
DocBook via DBLatex, with appearances by an all-star cast of GNU core utilities.

For those not yet initiated into the candy-striper's bespec{k,tac}led part-time
wonderland, and in addition to the PDF, Thor's portfolio is supplemented by yet
another archive containing colorfully syntax-highlighted HTML documents. With
these, Thor's intends to illustrate the so-called "look & feel" (ambience) of
his day-to-day working environment: which is, to paraphrase a line from the film
"Night Flyer" by Stephen King, redder than the Devil's eye on one side, blacker
than a woodchuck's ass on the other. (And it is not known to drink.)

Although Thor once cautioned children to speak to their parents about reading
his portfolio, due to force of law he now advises them to avoid it entirely: his
recent inclusion of several explicit portions renders him uncouth. Because, as
we all know, a child once warned is forever guarded, Thor discharges his further
obligation to the youngsters of the Internets and returns to his lab equipment.



The author lives in scenic Idaho, where he spends his days asleep and his nights
shipping furry slash fiction in thirty two languages.

Thor, 30, has written for two decades, pausing occasionally to pick his nose.

In his copious spare time, he keys source code using only his left pinky toe.

Unless a massive government conspiracy hangs like a thunderhead over your entire
way of life, you may be able to reach him at these additional locations:

         ┌─────────────────────────────────────────┐
         │ Thor King                               │
         │ 1433 Flannigan Creek Road               │
         │ Viola, ID 83872                         │
         │ United States of America                │
         │                                         │
         │ colonel32.dll@gmail.com                 │
         │ https://plus.google.com/+ThorYawnieKing │
         │ https://www.facebook.com/thor.king.524  │
         │ https://www.twitter.com/NotAYawnoceros  │
         └─────────────────────────────────────────┘

Automaton Empyreum: the Key to Pygnition. (Trivial File Transfer Protocol edition.)

(I have implemented the Trivial File Transfer Protocol, revision 2, in this milestone snapshot. If you have dealt with reprogramming your home router, you may have encountered TFTP. Although other clients presently exist on Linux and elsewhere, I have implemented the protocol with a pair of Python scripts. You’ll need a Python interpreter, and possibly Administrator privileges (if the server requires them to open port 69), to run them. They can transfer files of size up to 32 Megabytes between any two computers communicating via UDP/IP. Warning: you may need to pull out your metaphorical monkey wrench and tweak the network timeout, or other parameters, in both the client and server before they work to your specification. You can also use TFTP to copy files on your local machine, if for whatever reason you need some replacement for the cp command. Links, courtesy of MediaFire, follow:

Executable source code (the programs themselves, ready to run on your computer): http://www.mediafire.com/file/rh5fmfq8xcmb54r/mlptk-2017-01-07.zip

Candy-colored source code (the pretty colors help me read, maybe they’ll help you too?): http://www.mediafire.com/file/llfacv6t61z67iz/mlptk-src-hilite-2017-01-07.zip

My life in a book (this is what YOUR book can look like, if you learn to use my automatic typesetter and tweak it to make it your own!): http://www.mediafire.com/file/ju972na22uljbtw/mlptk-book-2017-01-07.zip

)

Title is a tediously long pun on "Pan-Seared Programming" from the last lecture.
Key: mechanism to operate an electric circuit, as in a keyboard.
Emporium: ein handelsplatz; or, perhaps, the brain.
Empyreuma: the smell/taste of organic matter burnt in a close vessel (as, pans).
Lignite: intermediate between peat & bituminous coal. Empyreumatic odor.
Pignite: Pokémon from Black/White. Related to Emboar & Tepig (ember & tepid).
Pygmalion (Greek myth): a king; sculptor of Galatea, who Aphrodite animated.

A few more ideas that pop up often in the study of computer programming: which,
by the way, is not computer science. (Science isn't as much artifice as record-
keeping, and the records themselves are the artifact.)

MODULARITY
As Eric Steven Raymond of Thyrsus Enterprises writes in "The Art of Unix
Programming," "keep it simple, stupid." If you can take your programs apart, and
then put them back together like Lego(TM) blocks, you can craft reusable parts.

CLASSES
A kind of object with methods (functions) attached. These are an idiom that lets
you lump together all your program's logic with all of its data: then you can
take the class out of the program it's in, to put it in another one. _However,_
I have been writing occasionally for nearly twenty years (since I was thirteen)
and here's my advice: don't bother with classes unless you're preparing somewhat
for a team effort (in which case you're a "class" actor: the other programmers
are working on other classes, or methods you aren't), think your code would gain
from the encapsulation (perhaps you find it easier to read?), or figure there's
a burning need for a standardized interface to whatever you've written (unlikely
because you've probably written something to suit one of your immediate needs:
standards rarely evolve on their own from individual effort; they're written to
the specifications of consortia because one alone doesn't see what others need).
Just write your code however works, and save the labels and diagrams for some
time when you have time to doodle pictures in the margins of your notebook, or
when you _absolutely cannot_ comprehend the whole at once.

UNIONS
This is a kind of data structure in C. I bet you're thinking "oh, those fuddy-
duddy old C dinosaurs, they don't know what progress is really about!" Ah, but
you'll see this ancient relic time and again. Even if your language doesn't let
you handle the bytes themselves, you've got some sort of interface to them, and
even if you don't need to convert between an integer and four ASCII characters
with zero processing time, you'll still need to convert various data of course.
Classes then arise which simulate the behavior of unions, storing the same datum
in multiple different formats or converting back and forth between them.
(Cue the scene from _Jurassic Park,_ the film based on Michael Crichton's book,
 where the velociraptor peeks its head through the curtains at a half-scaffolded
 tourist resort. Those damn dinosaurs just don't know when to quit!)

ACTUALLY, VOID POINTERS WERE WHAT I WAS THINKING OF HERE
The most amusing use of void*s I've imagined is to implement the type definition
for parser tokens in a LALR parser. Suppose the parser is from a BNF grammar:
then the productions are functions receiving tokens as arguments and returning a
token. Of course nothing's stopping you from knowing their return types already,
but what if you want to (slow the algorithm down) add a layer of indirection to
wrap the subroutines, perhaps by routing everything via a vector table, and now
for whatever reason you actually _can't_ know the return types ahead of time?
Then of course you cast the return value of the function as whatever type fits.

ATOMICITY, OPERATOR OVERLOADING, TYPEDEF, AND WRAPPERS
Washing brights vs darks, convenience, convenience, & convenience, respectively.
Don't forget: convenience helps you later, _when_ you review your code.

LINKED LISTS
These are a treelike structure, or should I say a grasslike structure.
I covered binary trees at some length in my fourth post, titled "On Loggin'."

RECURSION
The reason why you need recursion is to execute depth-first searches, basically.
You want to get partway through the breadth of whatever you're doing at this
level of recursion, then set that stuff aside until you've dealt with something
immensely more important that you encountered partway through the breadth. Don't
confuse this with realtime operating systems (different than realtime priority)
or with interrupt handling, because depth-first searching is far different than
those other three topics (which each deserve lectures I don't plan to write).

REALTIME OPERATING SYSTEMS, REALTIME PRIORITY, INTERRUPT HANDLING
Jet airplanes, video games versus file indexing, & how not to save your sanity.

GENERATORS
A paradigm appearing in such pleasant languages as Python and Icon.
Generators are functions that yield, instead of return: they act "pause-able,"
and that is plausible because sometimes you really don't want to copy-and-paste
a block of code to compute intermediate values without losing execution context.
Generators are the breadth-first search to recursion's depth-first search, but
of course search algorithms aren't all these idioms are good for.
Suppose you wanted to iterate an N-ary counter over its permutations. (This is
similar to how you configure anagrams of a word, although those are combinations
-- for which, see itertools.combinations in the Python documentation, or any of
the texts on discrete mathematics that deal with combinatorics.) Now, an N-ary
counter looks a lot like this, but you probably don't want a bunch of these...
    var items = new Array(A, B, C, D, ...);       // ... tedious ...
    var L = items.length;                         // ... lines ...
    var nary = new Array(L);                      // ... of code ...
    for (var i = 0; i < L; nary[i++] = 0) ;       // ... cluttering ...
    for (var i = L - 1; i >= 0 && ++nary[i] == L; // ... all ...
        nary[i--] = ((i < 0) ? undefined : 0)     // ... your other ...
    ) ; // end for (incrementation)               // ... computations ...
... in the middle of some other code that's doing somewhat tangentially related.
So, you write a generator: it takes the N-ary counter by reference, then runs an
incrementation loop to update it as desired. The counter is incremented, where-
upon control returns to whatever you were doing in the first place. Voila!
(This might not seem important, but it is when your screen size is 80 by 24.)



NOODLES AND DOODLES, POMS ON YOUR POODLES, OODLES AND OODLES OF KITS & CABOODLES
(Boodle (v.t.): swindle, con, deceive. Boodle (n.): gimmick, device, strategy.)
Because this lecture consumed only about a half of the available ten thousand
characters permissible in a WordPress article, here's a PowerPoint-like summary
that I was doodling in the margins because I couldn't concentrate on real work.
Modularity: perhaps w/ especial ref to The Art of Unix Programming. "K.I.S.S."
Why modularity is important: take programs apart, put them together like legos.
Data structures: unions, classes.
Why structures are important: atomicity, op overloading, typedefs, wrappers.
linked lists: single, double, circular. Trees. Binary trees covered in wp04??
recursion: tree traversal, data aggregation, regular expressions -- "bookmarks"
Generators. Perhaps illustrate by reference to an N-ary counter?

AFTER-CLASS DISCUSSION WITH ONE HELL OF A GROUCHY ETHICS PROFESSOR
Suppose someone is in a coma and their standing directive requests you to play
some music for them at a certain time of day. How can you be sure the music is
not what is keeping them in a coma, or that they even like it at all? Having
experienced death firsthand, when I cut myself & bled with comical inefficiency,
I can tell you that only the dying was worth it. The pain was not, and I assure
you that my entire sensorium was painful for a while there -- even though I had
only a few small lacerations. Death was less unpleasant with less sensory input.
I even got sick of the lightbulb -- imagine that! I dragged myself out of the
lukewarm bathtub to switch the thing off, and then realized that I was probably
not going to die of exsanguination any time soon and went for a snack instead.

AFTER-CLASS DISCUSSION WITH ONE HELL OF A GROUCH
"You need help! You are insane!"
My 1,000 pages of analytical logic versus your plaintive bleat.

Pie Jesu domine, dona eis requiem.

Breaking news: according to Shape magazine (March, 2016; volume 35, no. 6), which incorporates Fitness magazine, forty winks shouldn’t be.

Mirel Ketchiff writes: “enlightening new research is challenging [the notion, suggested by the National Sleep Foundation, that we need eight hours of sleep every night].” This enlightening new research indicates that prehistoric cavemen slept six and a half hours each night (possibly because they couldn’t get to sleep while the stalactites dripped on their heads); how anthropologists learnt the crepuscular habits of people who existed before the advent of recorded history is, evidently, left as an exercise to the reader.

Exactly how much sleep does anyone need, anyway? Someone once told me that children need about ten hours a night. Then the National Sleep Foundation told me that adolescents and adults require about eight. Now Shape magazine says I need six and a half. What’ll it be next; maybe I don’t need any sleep at all! Methamphetamine addicts have been known not to sleep for extended periods of time, and to become fashionably slender no matter how gluttonous their eating habits. Perhaps that is fitness, Fitness?

Soon we can all abandon our outmoded, unfashionable and inefficient nightly nonce of unconsciousness. Ascending from our benighted evolution, we’ll first return to our prehistoric habits (as though we ought ever to have abandoned them in the first place), and then do away with sleep altogether. Employing methamphetamine and a thousand other compounds we’re taught in school are bad for our bodies and minds, we’ll become Übermensch — harder, better, faster, and stronger than those other Nation-Brands.

Now unencumbered by our need to rest our minds each night so that we can demarcate the border line of fantasy and reality (and, vicariously, of right and wrong), and and thoroughly brain-damaged as a result, we’ll spring forward into a new age of crime, misconduct, and rampant procreation.

Promiscuity is a citizen’s duty.

The Orthopterous Prayer

Photo Orthoptertunity.

orthopterous_prayer
The above image is my work, created with art provided by the Open Clipart
library from the Ubuntu Universe/Graphics repository. Transcription:
"OUR FATHER WHO ART IN HEAVEN HALLOWED BE THY NAME THY KINGDOM COME THY WILL
 BE DONE ON EARTH AS IT IS IN HEAVEN AND BY THE WAY WOULD YOU MIND DOING
 SOMETHING ABOUT THIS BIRD IT IS CIRCLING ABOVE ME IN A MOST UNSETTLING MANNER
 THANKS DAD LOVE YOU!"


But this entry is really a remonstrance I should have delivered to the city
of Potlatch a very long time ago. Sorry I'm late. Excerpted from my memoir:

I graduated PHS as Valedictorian, classis 2006; recalling my hatred of a people
who ostracised me, I skipped the ceremony. They weren't missing much, because I
had been instructed to prepare a state-approved recommencement address.

Regarding that address: when I was informed of my valedictory nomination, I was
asked to prepare a short speech; except, in approximately the words of Gordon
Steinbis (principal), "we'll terminate your microphone feed if you say anything
bad about Potlatch High School [...] and don't mention assisted suicide." Well,
after that, there isn't much to say; why speak? So were my thoughts at the time
and they still are. Had I been permitted to speak freely, I would have run along
these lines: "We are predestined; I to failure. You have abused me my whole life
and simultaneously demanded I seek joy in living where none was to be found. I
have advocated since my youth for the humane practice of assisted suicide, and
you have not listened because you are deluded. I cannot say that I plan to kill
myself, because citizens of the United States of America who speak freely in
that regard are imprisoned without trial. Goodbye." Naturally, I'm writing this
at age 29 -- ten years ago, I wouldn't have been so parsimonious of phrase --
but my thoughts (when I am permitted to think by those who wield the weapon) are
certainly of the same nature as they were, only more so.