Follow Slashdot blog updates by subscribing to our blog RSS feed

 



Forgot your password?
typodupeerror
User Journal

Journal: Sorry I haven't written...

Journal by mcgrew

I have two new stories nearly finished, but I've decided to see if I can sell first publication rights to a magazine. If everyone rejects them, I'll post them then. If one is accepted, it will likely be quite a while before I can post.

With three books in the works I've been really busy. Hell, I've been working harder since I retired than I did when I worked! I got the index pages to my three published books and the "coming soon" page for Yesterday's Tomorrows "mobile-friendly". I don't know why I'm bothering; almost nobody surfs in on a phone or from Google. But at any rate, I got the book Triplanetary and the first two chapters of Mars, Ho "mobile friendly" as well. The Time Machine is next; the epub versions of my books are better than the HTML versions, on a phone, anyway. Twain, Dickens, and God are going to be mobile-hostile for quite a while because of all the artwork in them.

I couldn't make the main index "mobile friendly" without making it look like crap on a computer screen, so I made a copy "mobile friendly", posted it as mobile.html and added a link from the main index.

Site stats say Google has spidered, so I tried to find Mars, Ho!" by googling on the phone. Nothing but Marsho Medical Group, Andy Weir's The Martian, and a facebook page for someone named Mars Ho. Googling "Mars, Ho! novel" did bring up Amazon's e'book copy halfway through the page.

"Mars, Ho! mcgrew" brought up Amazon's e'book first, followed by the mobile-hostile main index, THEN the actual Mars, Ho! index which IS "mobile friendly" (it passed their test). And I thought "mobile friendly" was supposed to raise your ranks? What's up, Google?

The second copy of Yesterday's Tomorrows came yesterday. I didn't expect until the day after tomorrow. I went through it twice yesterday and it's almost ready; there is still a little work before it's published, but it won't be long.

It's a really nice book, with stories by Isaac Asimov, John W Campbell, Murray Leinster, Frederik Pohl, Neil R Jones, Kurt Vonnegut, A. E. Van Vogt, Theodore Sturgeon, Poul Anderson, Phillip K Dick, Frank Herbert, James Blish, Lester del Rey, and Jerome Bixby. Covers of the magazines they appeared in are shown, with short biographies and photos of the authors. It's also well-illustrated with illustrations from the original magazines.

Random Scribblings: Junk I've littered the internet with for two decades will probably be next year.

Oh, how do you like my new shirt?

Slashback

Journal: I READ THE NEWS TODAY OH BOY 6

Journal by Jeremiah Cornelius

Your friends

User User's... Last Journal (H)elix1 (231155) friends fans Wednesday October 03, 2007 @09:41PM A nonymous Coward (7548) friends fans adpsimpson (956630) friends fans ak3ldama (554026) friends fans Saturday May 28, 2011 @05:01AM AKAImBatman (238306) friends fans Thursday October 02, 2008 @01:12PM alfaiomega (585948) friends fans Alioth (221270) friends fans Saturday October 16, 2010 @08:34AM AndroidCat (229562) friends fans Anonymous Brave Guy (457657) friends fans Artifakt (700173) friends fans artifex2004 (766107) friends fans Friday July 25, 2008 @12:29PM Ashtead (654610) friends fans Thursday February 06, 2014 @09:03PM atomico (162710) friends fans Attaturk (695988) friends fans AYauFu (708368) friends fans Azadre (632442) friends fans Azi Dahaka (625546) friends fans babbage (61057) friends fans Tuesday April 12, 2005 @01:34PM BandwidthHog (257320) friends fans Tuesday February 20, 2007 @05:20AM banky (9941) friends fans Thursday February 08, 2007 @03:52PM bcrowell (177657) friends fans bechthros (714240) friends fans Wednesday August 06, 2008 @12:12AM Behrooz (302401) friends fans benhocking (724439) friends fans Wednesday December 05, 2007 @03:20PM Bertie (87778) friends fans bgfay (5362) friends fans bhima (46039) friends fans Tuesday March 24, 2009 @03:56PM Billosaur (927319) friends fans Wednesday January 23, 2008 @03:33PM Bimo_Dude (178966) friends fans Friday June 20, 2008 @10:14PM Black Parrot (19622) friends fans BlackHat (67036) friends fans Tuesday December 30, 2008 @12:10AM BlackTriangle (581416) friends fans blincoln (592401) friends fans Monday March 22, 2004 @04:14AM blinder (153117) friends fans Saturday January 29, 2011 @03:15AM Bloater (12932) friends fans Sunday March 19, 2006 @01:59AM BlueShirt (919167) friends fans Bluesman (104513) friends fans bonch (38532) friends fans btlzu2 (99039) friends fans Friday March 09, 2007 @05:53PM BWJones (18351) friends fans Monday October 24, 2011 @10:35PM capoccia (312092) friends fans Thursday July 30, 2009 @12:31PM Captain Splendid (673276) friends fans Monday February 02, 2015 @04:26PM CastrTroy (595695) friends fans Catamaran (106796) friends fans ces (119879) friends fans Tuesday June 29, 2010 @04:53PM Chacham (981) friends fans Thursday April 23, 2015 @02:10PM Chris Burke (6130) friends fans circletimessquare (444983) friends fans Thursday January 22, 2015 @10:43PM clem (5683) friends fans Colonel Korn (1258968) friends fans Communist_Supervisor (1062168) friends fans Conspiracy_Of_Doves (236787) friends fans Corporate Troll (537873) friends fans Tuesday November 30, 2010 @12:24PM crotherm (160925) friends fans Friday March 18, 2005 @10:33PM crow_t_robot (528562) friends fans curtisk (191737) friends fans Wednesday December 21, 2011 @05:03PM CyberBill (526285) friends fans cyranoVR (518628) friends fans Saturday January 31, 2009 @03:00AM DaedalusHKX (660194) friends fans Thursday April 24, 2008 @11:24PM damn_registrars (1103043) friends fans Thursday April 23, 2015 @08:03PM Damvan (824570) friends fans Dan Ferguson (691027) friends fans Darby (84953) friends fans darkpixel2k (623900) friends fans Datana (516170) friends fans dave-tx (684169) friends fans DaytonCIM (100144) friends fans Sunday November 11, 2012 @02:30AM dbIII (701233) friends fans dcam (615646) friends fans

User Journal

Journal: Product Review: Seagate Personal Cloud 5

Journal by mcgrew

Around the first of the year all three working computers were just about stuffed full, so I thought of sticking a spare drive in the Linux box, when the Linux box died from a hardware problem. It's too old to spend time and money on, so its drive is going in the XP box (which is, of course, not on the network; except sneakernet). I decided to break down and buy an external hard drive. I found what I was looking for in the "Seagate Personal Cloud". And here I thought the definition of "the cloud" was someone else's server!

I ordered it the beginning of January, not noticing that it was a preorder; it wasn't released until late March. I got it right before April.

I was annoyed with its lack of documentation -- it had a tiny pamphlet full of pictures and icons and very few words. Whoever put that pamphlet together must beleive the old adage "a picture is worth a thousand words". Tell me, if a picture is worth a thousand words, convey that thought in pictures. I don't think it can be done.

I did find a good manual on the internet. For what I wanted, I really didn't need a manual, but since I'm a nerd I wanted to understand everything about the thing. Before looking for a manual I plugged it all up, and Windows 7 had no problem connecting with it. It takes a few minutes to boot; it isn't really simply a drive, it must have an operating system and network software, because it looks to the W7 notebook to be another file server. Its only connections are a jack for the power cord and a network jack.

The model I got has three terrabytes. I moved all the data from the two working computers (using a thumb drive to move data from XP) and the "cloud" was still empty. Streaming audio and video from it is flawless; I'm completely satisfied with it, it's a fine piece of hardware.

However, it WON'T do what is advertised to do, which is to be able to get to your data from anywhere. In order to do that, Seagate has a "software as a service" thing where you can connect to a computer from anywhere, but only the computer and its internal drives, NOT the "personal cloud". And they want ten bucks a month for it.

I downloaded the Android app, and I could see and copy files that were on my notebook to my phone, but I couldn't play music stored there on it. I uninstalled the crap. "Software as a service" is IMO evil in the first place, but to carge a monthly fee to use a piece of crap software like this is an insult. Barnum must have been right.

If you're just looking for an external hard drive, like I was, it's a good solution. If you want what they're advertising, you ain't gettin' it. The Seagate Personal Cloud's name is a lie, as is its advertising.

User Journal

Journal: 7 - Why does Gimp depend on systemd? 2

Journal by phantomfive

This post is flotsam related to some dependencies. If you note any mistakes, please let me know, I'm collecting information.

Gimp doesn't depend on systemd as far as I can tell. Gimp runs on Windows. It does depend on libgtk, whose dependency list is available.

There are reports that Gimp depends on systemd, but that seems to be an artifact of a package dependency tree on one system, not that Gimp actually needs systemd.

What about Gnome? Does Gnome depend on systemd? The answer is yes....., although there are alternatives. Systembsd, systemd-shim, and LoginKit.

LoginKit doesn't seem to be complete, like some files were missing from commit or something. The README is attractive, though. It seems to only be attempting to provide services for logind.

Systembsd provides hostenamed, localed, logind, and timedated.

Systemd-shim provides c-group services, some unit file services, power/sleep/reboot services, and ntpdate services.

Neither code base has been updated in four months, and the code in neither one looks particularly well organized.

I suspect there are other things systemd provides that Gnome relies on, but those aren't immediately apparent. I'm not sure where to look to figure that out.

Before logind, Gnome used ConsoleKit to provide login support. Fascinatingly, the commit to remove support for ConsoleKit was made by Florien Mullner.

A lot of this stuff depends directly on DBus. In my opinion that is a mistake; the communication mechanism should be separate from the API interface.

In the next journal entry I will investigate how deeply libsystemd is tied into the init system, or whether it is truly modular.

User Journal

Journal: We've been spelling it wrong for over a quarter century 8

Journal by mcgrew

I'm surprised that this hasn't been addressed by the academic communities. Someone with a degree in English or linguistics or something like that should have though of this decades ago.

This word (actually more than one word) has various spellings, and I've probably used all of them at one time or another. The word is email, or eMail, or e-mail, or some other variation. They're all wrong.

It's a contraction of "electronic mail" and as such should be spelled e'mail. The same with e'books and other e'words.

So why hasn't someone with a PhD in English pointed this out to me? I have no formal collegiate training in this field. It's a mystery to me.

User Journal

Journal: Are printed books' days numbered? 4

Journal by mcgrew

In his 1951 short story The Fun They Had, Isaac Asimov has a boy who finds something really weird in the attic -- a printed book. In this future, all reading was done on screens.

When e'books* like the Nook and Kindle came out, there were always women sitting outside the building on break on a nice spring day reading their Nooks and Kindles. It looked like the future to me, Asimov's story come true. I prefer printed books, but thought that it was because I'm old, and was thirty before I read anything but TV and movie credits on a screen.

And then I started writing books. My youngest daughter Patty is going to school at Cincinnati University (as a proud dad I have to add that she's Phi Beta Kappa and working full time! I'm not just proud, I'm in awe of her) and when she came home on break and I handed her a hardbound copy of Nobots she said "My dad wrote a book! And it's a REAL book!"

So somehow, even young people like Patty value printed books over e'books.

My audience is mostly nerds, since few non-nerds know of me or my writing, so I figured that the free e'book would far surpass sales of the printed books. Instead, few people are downloading the e'books. More download the PDFs, and more people buy the printed books than PDFs and ebooks combined.

Most people just read the HTML online, maybe that's a testament to my m4d sk1llz at HTML (yeah, right).

Five years ago I was convinced ink was on the way out, but there's a book that was printed long before the first computer was turned on that says "the news of my death has been greatly exaggerated".

* I'll write a short story about the weird spelling shortly.

User Journal

Journal: Where's my damned tablet? 11

Journal by mcgrew

I'd like to know why in the hell nobody is selling a tablet, or maybe an app for existing tablets, that will let me watch over the air TV on it?

All the necessary hardware is there. Wi-fi and bluetooth are radios. Some cell pones can pick up FM music stations, and have been able to do so and have done so for years.

The FM radio band sits between channels six and seven on the VHF television channels. If it can hear radio, it can see TV.

The technology is there, why isn't the commercial device to be found? Offer a tablet I can watch TV without the internet and I'll buy one. Maybe two.

User Journal

Journal: Systemd (or, how to make portable software) 10

Journal by phantomfive

In this post, Lennart explains that he doesn't know how to write portable C code. He says:

[Making systemd portable] would turn every second line of systemd into #ifdefs.

The purpose of my post here is to explain how to write portable code, without #ifdefs on every other line. If that happens, you are doing it the hard way.

An easier way is to create an OS independent layer. Call it OSI (since no one is using that acronym anymore, right?). Create a header file that declares all your functions, then create an implementation file for each platform. Every time you find a piece of functionality that is different on different platforms, throw it into that header file.

For example, if you need to take a screenshot, it will be different on every platform you find. In the header file, create a function OSI_Screenshot(). Then in your OSI_Windows.c file, add an implementation for windows. In your OSI_Linux.c, add a screenshot implementation for Linux. In your OSI_OSX.c, add your implementation for OSX. This technique can also work for extremely incompatible platforms, with OSI_printf(), or OSI_malloc(), etc. If you use your compiler correctly, you can compile it without any extra overhead from the function call.

An example of this technique can be found in Android (look at sysdeps.h and sysdeps_win32.c), demonstrating that this technique works. They don't have #ifdefs scattered throughout their code. The Android example is tougher than it needs to be, because Android added the compatibility layer after the code was written. If they had started at the beginning, the code would have been much simpler.

The lack of knowledge (about how to write portable code) in the systemd team is causing them to make bad decisions, because the alternative seems too hard. For example:

I have no plans porting it to other kernels, and I will not merge any such patches........Quite frankly, I'd like to question [cross-platform compatibility]. In the light of GNOME OS I think we need to ask ourselves the question if we do ourselves any good if we continue to support all kinds of kernels that simply cannot keep up with Linux anymore.

Those who don't understand the failures of the past are destined to repeat them. Plenty of vendors try to focus on a single platform, and their work disappeared, to be replaced by something that was cross-platform compatible, and usually better work. The discipline required to keep things portable results in better code (there's a quote from Mythical Man Month that fits here but I'm too lazy to look it up). The Gnome developers understand the importance of portability but that's a story for another post.

User Journal

Journal: Triplanetary 1

Journal by mcgrew

I've uploaded a new book to mcgrewbooks.com. Edgar E. Smith was a well known science fiction writer known as "the father of space opera", and Doctor Smith was a food engineer in his other life. The novel I've uploaded is Triplanetary, first published in serial form in Amazing Stories in 1934.

Some of the dialogue is a bit juvenile, but it would make a great movie.

User Journal

Journal: An Accidental Book 1

Journal by mcgrew

I've read books accidentally, meaning to read a single chapter and winding up reading it in one setting, but I've never started writing one accidentally.

Until now.

Tired of editing Random Scribblings and Voyage to Earth and Other Stories (Formerly titled "Mars Bars"), I thought I'd look for another science fiction novel in the public domain a little less ancient than The Time Machine to add to my web site.

I didn't find one, so decided to just make a book of public domain short stories by the 20th century greats. I found a LOT, and started assembling a book. Somehow, I wound up adding commentary and thought "Hey! New book!"

Then I discovered that one of the short stories wasn't so short -- in fact, it was a full blown novel. So for the last several days I've been formatting it to put on my web site. E.E. "Doc" Smith's Triplanetary will be posted in a few days.

I'll let you know when it's there. I guess I'm working on three books again. The collection I'm working on is tentatively titled "Yesterday's Tomorrow".

User Journal

Journal: Systemd's solution to large init scripts 1

Journal by phantomfive

(Note: When you write code, you're making a UI for programmers. Learn to do it well.)

Below you can see a traditional unix init script. It's long, but if you're familiar with shell-script you can figure out what is going on. There is a lot of redundancy here, most init scripts have a switch that runs an option based on the first command-line parameter, for example. One solution is to put common code in a function, but Poettering decided to use config files.

Let's examine the general tradeoff between putting code in a function, and using config files (a form of declarative programming). Config files are fine as long as there aren't too many special cases. If there are too many special cases, you end up with so many options and keywords that it would have been easier to just use a scripting language.

The good side is systemd saves a lot of typing. Way down at the bottom, is a unit file for the same init script. It's clearly shorter, and easier to type.

The bad side is it has arcane keywords which are are not discoverable merely by looking at the file. This is a pattern that repeats itself over and over in systemd, things are easier if you know how to do them, but the system itself is inscrutable without arcane knowledge.

Ideal systems fulfill the requirements while making it easy for those who want to dig deeper. The system opens like the petals of a rose.

#!/bin/bash
# Starts the abrt daemon
#
# chkconfig: 35 82 16
# description: Daemon to detect crashing apps
# processname: abrtd
### BEGIN INIT INFO
# Provides: abrt
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Default-Stop: 0 1 2 6
# Default-Start: 3 5
# Short-Description: start and stop abrt daemon
# Description: Listen to and dispatch crash events
### END INIT INFO
 
# Source function library.
. /etc/rc.d/init.d/functions
ABRT_BIN="/usr/sbin/abrtd"
LOCK="/var/lock/subsys/abrtd"
OLD_LOCK="/var/lock/subsys/abrt"
RETVAL=0
 
#
# Set these variables if you are behind proxy
#
#export http_proxy=
#export https_proxy=
 
#
# See how we were called.
#
 
check() {
    # Check that we're a privileged user
    [ "`id -u`" = 0 ] || exit 4
 
    # Check if abrt is executable
    test -x $ABRT_BIN || exit 5
}
 
start() {
 
    check
 
    # Check if it is already running
    if [ ! -f $LOCK ] && [ ! -f $OLD_LOCK ]; then
        echo -n $"Starting abrt daemon: "
        daemon $ABRT_BIN
        RETVAL=$?
        [ $RETVAL -eq 0 ] && touch $LOCK
        echo
    fi
    return $RETVAL
}
 
stop() {
 
    check
 
    echo -n $"Stopping abrt daemon: "
    killproc $ABRT_BIN
    RETVAL=$?
    [ $RETVAL -eq 0 ] && rm -f $LOCK
    [ $RETVAL -eq 0 ] && rm -f $OLD_LOCK
    echo
    return $RETVAL
}
 
restart() {
    stop
    start
}
 
reload() {
    restart
}
 
case "$1" in
start)
    start
;;
stop)
    stop
;;
reload)
    reload
;;
force-reload)
    echo "$0: Unimplemented feature."
    RETVAL=3
;;
restart)
    restart
;;
condrestart)
    if [ -f $LOCK ]; then
        restart
    fi
    # update from older version
    if [ -f $OLD_LOCK ]; then
        restart
    fi
;;
status)
    status abrtd
    RETVAL=$?
;;
*)
    echo $"Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
    RETVAL=2
esac
 
exit $RETVAL

-----------------------------------------------------------------------------------------

[Unit]
Description=Daemon to detect crashing apps
After=syslog.target
 
[Service]
ExecStart=/usr/sbin/abrtd
Type=forking
 
[Install]
WantedBy=multi-user.target

Reference to the examples.

User Journal

Journal: systemd - Why did Debian Adopt it? 8

Journal by phantomfive

There's a Debian debate page, but it's disappointing and everything systemd does is listed with equal value. Thanks to Russ Albery for making a much more balanced assessment, explaining what he likes. The short answer to the question is: SystemD makes things much easier for people writing init scripts. It wasn't about cgroups, or speed, or login managers, it was about writing easy init scripts.

Here are the major complaints he has with the traditional startup system:

* Lack of integration with kernel-level events to properly order startup.
* No mechanism for process monitoring and restarting beyond inittab.
* Heavy reliance on shell scripting rather than declarative syntax.
* A fork and exit with PID file model for daemon startup.

He furthermore points out these problems with startup scripts:

The model of fork and exit without clear synchronization points is inherently racy, the boot model encoded into sysvinit doesn't reflect a modern system boot, and maintaining large and complex init scripts as conffiles has been painful for years. Nearly every init script, including the ones in my own packages, have various edge-case bugs or problems because it's very hard to write robust service startup in shell, even with the excellent helper programs and shell libraries that Debian has available.

Those are the main things that systemd fixes for a distro builder, and probably why so many distros have switched to systemd, because it was built for them.

User Journal

Journal: Is Microsoft Sirius? 1

Journal by mcgrew

I had to laugh when I ran across this article.

"Cortana's UI now expresses 18 different emotions. Siri remains detached and aloof."

Yes, Microsoft is apparently the Sirius Cybernetics Corporation with its " Genuine People Personalities". So when are they going to make that "Marvin" interface?

User Journal

Journal: Amnesia 4

Journal by mcgrew

If slashdot still hasn't fixed the "fine in preview, fucked in submit" bug, there's a readable version here.

Amnesia
        He awoke wondering where he was... on a medic. Why was... oh, hell, why was he being held down? And then the big question hit him â" Who am I?
        And who, besides the medic itself, which was only a robot, had imprisoned him? And why?
        There was a tube leading into his arm... was he in a hospital? It smelled like a hospital.
        The medic beeped, and said âoecondition improved, now stable.â
        He must have had some kind of accident, but he couldnâ(TM)t remember his own name, let alone how he wound up in a hospital.
        âoeComputer!â he said, hoping the hospital computer could shed some light. It was apparently not paying attention, because it ignored him. He lay there strapped to the robotic table for what seemed like forever when the medic again beeped and spoke. âoeCondition improved, now fair.â
        âoeComputer!â
        No answer.
        Damn. âoeMedic!â
        No answer.
        Another eternity passed, and the medic reported âoeCondition good, patient released.â The straps came loose and he sat up on the medic, waiting for a nurse or doctor that never showed up. Didnâ(TM)t someone have paperwork when a patient was released?
        He decided to look around the hospital to find someone and tell them that he shouldnâ(TM)t have been released, that he had no memory. He used the rest room and went searching for help.
        This, he thought, was the strangest thing... this hospital seemed to have no doctors, no nurses, no administrative staff, nobody. Not even any patients. He walked down hall after hall, and found nothing but locked doors and more hallways.
        He started to panic, and muscle memory reached his hand into his pocket for a phone. There was none there.
        That panicked him. Why didnâ(TM)t he think of it before? It could have told him at least who he was, if not where he was and why.
        He started running, down first one hallway then another, until he collapsed in exhaustion and anguish. He sat there in the hallway, head in his hands, sobbing softly.
        Quite a while later he finally came to his senses, sort of. He got up and decided to just walk around, looking for... anything, really, but especially people. Where was everyone? It would be nice if he could find a sandwich, too; he was starting to get a little hungry. That added to his already numerous worries.
        He found no exits, no unlocked doors, no people, no sandwiches. It was hard enough to keep his fear below panic levels, but then what was obviously some sort of alarm went off. Was the building on fire? He stopped, with no idea what to do.
        He looked up â" werenâ(TM)t there skylights showing stars earlier? But his memory was impaired, after all, not able to remember his name or anything before waking up on the medic.
        He heard the first sounds that didnâ(TM)t come from robots that heâ(TM)d heard since awakening, and it scared him even more â" the sound of hail. Perhaps there were skylights, but were now shuttered.
        At this point he was aware that the alarm was almost certainly a tornado warning, and he couldnâ(TM)t find the stairway! Maybe this building didnâ(TM)t even have a basement, but who in their right mind would build a structure in a tornado zone without one? But without a stairwell, it might as well not have a basement. He huddled in a doorway waiting for the tornado to destroy him and the building.
        The sounds of hail stopped, the siren stopped, and yes, there were skylights; the shutters opened then, showing stars once again. Odd that the storm had started and ended so fast. The shutters must have closed before the clouds rolled in.
        He started to continue his fruitless search.
        A robot wheeled past, and he had an idea. The robot would certainly lead him to something.
        It did. Down a hallway heâ(TM)d not yet explored and probably had run past more than once in his earlier panic was a large door that stood wide open, the automatic pocket doors recessed. Inside was a huge room filled with tables and chairs, but still no sign of humanity at all. The robot heâ(TM)d followed dragged another robot away. Puzzling.
        At least he had somewhere to sit besides the floor. He sat down at one of the many tables to rest, thinking heâ(TM)d have to figure out how to find his way back before continuing his search.
        He just couldnâ(TM)t stop wondering what the hell was going on. Was he being studied in some sort of weird experiment? Was he a prisoner by design, or by accident? Was he a criminal? Did he have a family?
        Without even thinking he started praying out loud, âoeOh, Lord, please help me...â
        A mechanical voice chimed in. âoeCan I help you, sir?â
        He looked up at the robot. âoeYes,â he said, âoehow can I get out of this building?â
        âoeIâ(TM)m sorry, sir, but that is not in my database. Can I get you something to drink?â
        âoeYes, cold water, but first, where am I?â
        âoeThis is the commons area, sir. Would you like a menu?â Without waiting for an answer, the video screen displayed a menu.
        âoeYes, Iâ(TM)ll have a cheeseburger, brogs, and a caffeine shike.â
        âoeYes, sir,â it said, and started to roll away.
        âoeWait!â the man said. âoeWhat is this the commons of?â
        âoeThat information is not in my database.â
        âoeCan you tell me what this building is?â
        âoeIâ(TM)m sorry, sir, but that information is not in my database. Is there anything else, sir, or should I fetch your order?â
        âoeNo, go on.â It rolled off. He put his elbow on the table and rested his head in his hand.
        The robot came back shortly with his water and shike and rolled away again.
        âoeWhat the hell is going on?â he wondered aloud, again.
        The robot came back in with his food and wheeled away. He ate, still not able to figure out how to examine his prison and still find his way back to this âoecommonsâ. At least he had food and drink now, which relieved him greatly and made exploration of this building far less, yet still, important.
        Then he thought: A commons. A common area. People should show up here, perhaps he should just wait for someone to show up?
        Several hours later and the skylight still showed stars. Was he in Antarctica? Or was he... Yes, that explained everything. He was on a space ship, but why? Where was it going? Where was the captain?
        Was he the captain? Or... a horrifying thought came to him. Was he a pirate who had killed the captain and thrown the body out the airlock?
        His thoughts were interrupted by the sounds of humanity â" boots walking down the hallway, and cautious whispering voices.
        He looked around the doorway and saw ten heavily armed, armored, and helmeted men.
        âoeOh shit,â he thought. He was captain, but didnâ(TM)t even recognize his own boat, let alone how to run it, and now there were pirates who would surely murder him and steal the ship and whatever cargo it was carrying. He cowered in a corner, wishing for something to defend himself with.
        They came in, weapons drawn, with the men in the back facing the other way and backing in. The man in front lowered his weapon and raised his face shield. âoeJerry? Christ, man, what the hell is going on?â
        âoeMy name is Jerry? Are you sure? I donâ(TM)t know who I am!â
        âoeJesus, Jerry, Iâ(TM)ve known you for years, youâ(TM)re Jerry Smith. I was scared shitless for you, what the hell happened? Did you get attacked by pirates?â
        âoeI... I donâ(TM)t think so. Iâ(TM)d be dead if they had. The first thing I remember is waking up on a medic wondering who I was and where I was and why I was on a medic. I wandered around for hours, I donâ(TM)t think anybody else is here.â
        âoeOkay, Joe, check the pilot room. Rob, would you do an engine inspection?â
        âoeSure thing, boss.â
        âoeJerry, where are your phone and tablet?â
        He shook his head. âoeNo idea, but I was sure wishing I had them.â
        They took Jerry to Earth with them while another man piloted Jerryâ(TM)s ship there.
        He did eventually get his memory back after a lot of therapy. His phone had been in his captainâ(TM)s quarters, and he had been doing inspection in machine storage when a can of something that had been improperly stacked by a malfunctioning robot had fallen, hitting him in the head and knocking him cold. A medic had taken him to sick bay, leaving the tablet laying on the floor, effectively locking him out of everything. Clearly, some policies, at least, would have to be changed.
        Jerry never captained another ship. In fact, he spent the rest of his life on Earth and never entered space again.

If it happens once, it's a bug. If it happens twice, it's a feature. If it happens more than twice, it's a design philosophy.

Working...